summaryrefslogtreecommitdiff
path: root/src/soc/intel/alderlake/chip.c
diff options
context:
space:
mode:
authorMichał Żygowski <michal.zygowski@3mdeb.com>2022-05-05 13:21:01 +0200
committerStefan Reinauer <stefan.reinauer@coreboot.org>2022-08-24 17:18:24 +0000
commit9b0f169d2503dc044500e2790b987d766928782a (patch)
tree7d38e31cdba9e19389adffc0a7580f040e566ee8 /src/soc/intel/alderlake/chip.c
parentb6c32d7fe4ea98ba8b3a10cb5ce46448801855b8 (diff)
soc/intel/alderlake/hsphy: Add support for HSPHY firmware loading
BIOS must send the IP_LOAD HECI command to fetch the firmware for CPU PCIe Gen5 and upload it via CPU REG BAR prior FSP Silicon Init. Implementation based on public Slimbootloader's "Silicon/AlderlakePkg/Library/CpuPcieHsPhyInitLib". TEST=Boot MSI PRO Z690-A and see the HSPHY FW is loaded. PCIe x16 Gen3 GPU card started working in the PCIE 5.0 slot. [DEBUG] HECI: Sending Get IP firmware command [DEBUG] HECI: Get IP firmware success. Response: [DEBUG] Payload size = 0x6944 [DEBUG] Hash type used for signing payload = 0x3 Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com> Change-Id: I6c6c11581e3d3d9bab0131fae6ef487cafe98080 Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/64074 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Tim Crawford <tcrawford@system76.com> Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
Diffstat (limited to 'src/soc/intel/alderlake/chip.c')
-rw-r--r--src/soc/intel/alderlake/chip.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/soc/intel/alderlake/chip.c b/src/soc/intel/alderlake/chip.c
index 21b59a187f..86d40fd375 100644
--- a/src/soc/intel/alderlake/chip.c
+++ b/src/soc/intel/alderlake/chip.c
@@ -13,6 +13,7 @@
#include <intelblocks/pcie_rp.h>
#include <intelblocks/systemagent.h>
#include <intelblocks/xdci.h>
+#include <soc/hsphy.h>
#include <soc/intel/common/vbt.h>
#include <soc/itss.h>
#include <soc/pci_devs.h>
@@ -176,6 +177,9 @@ static void soc_fill_gpio_pm_configuration(void)
void soc_init_pre_device(void *chip_info)
{
+ /* HSPHY FW needs to be loaded before FSP silicon init */
+ load_and_init_hsphy();
+
/* Perform silicon specific init. */
fsp_silicon_init();