soc/intel/meteorlake: Support PCIe hardware compliance test mode
The validation process verifies that hardware components comply with
the standard hardware specifications. For instance, PCI express
implementation must comply with the hardware PCIe specification
requirements: Electrical, Configuration, Link Protocol and Transaction
Protocol. To perform these tests the hardware must be configured in a
particular state: some feature related to power management need to be
turned off, hot plug should be enabled...
This patch sets the appropriate FSP Updateable Product Data flags to
get the hardware in the proper configuration:
- Enable PCIe hotplug on all ports
- Set clock sources to run free
- Set the FSP compliance test mode flag
This patch is backported from
commit 096ce1444e
(soc/intel/alderlake:
Support PCIe hardware compliance test mode)
Change-Id: Idd7a1adf0f53b014093ba70fee599dbb7887a0fc
Signed-off-by: Subrata Banik <subratabanik@google.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/70416
Reviewed-by: Kapil Porwal <kapilporwal@google.com>
Reviewed-by: Ivy Jian <ivy.jian@quanta.corp-partner.google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
parent
64dd9d000e
commit
c0f4b1258d
|
@ -28,6 +28,7 @@ config CPU_SPECIFIC_OPTIONS
|
||||||
select GENERIC_GPIO_LIB
|
select GENERIC_GPIO_LIB
|
||||||
select HAVE_DEBUG_RAM_SETUP
|
select HAVE_DEBUG_RAM_SETUP
|
||||||
select HAVE_FSP_GOP
|
select HAVE_FSP_GOP
|
||||||
|
select HAVE_INTEL_COMPLIANCE_TEST_MODE
|
||||||
select HAVE_SMI_HANDLER
|
select HAVE_SMI_HANDLER
|
||||||
select IDT_IN_EVERY_STAGE
|
select IDT_IN_EVERY_STAGE
|
||||||
select INTEL_CAR_NEM
|
select INTEL_CAR_NEM
|
||||||
|
|
|
@ -375,9 +375,11 @@ static void fill_fsps_pcie_params(FSP_S_CONFIG *s_cfg,
|
||||||
get_l1_substate_control(rp_cfg->PcieRpL1Substates);
|
get_l1_substate_control(rp_cfg->PcieRpL1Substates);
|
||||||
s_cfg->PcieRpLtrEnable[i] = !!(rp_cfg->flags & PCIE_RP_LTR);
|
s_cfg->PcieRpLtrEnable[i] = !!(rp_cfg->flags & PCIE_RP_LTR);
|
||||||
s_cfg->PcieRpAdvancedErrorReporting[i] = !!(rp_cfg->flags & PCIE_RP_AER);
|
s_cfg->PcieRpAdvancedErrorReporting[i] = !!(rp_cfg->flags & PCIE_RP_AER);
|
||||||
s_cfg->PcieRpHotPlug[i] = !!(rp_cfg->flags & PCIE_RP_HOTPLUG);
|
s_cfg->PcieRpHotPlug[i] = !!(rp_cfg->flags & PCIE_RP_HOTPLUG)
|
||||||
|
|| CONFIG(SOC_INTEL_COMPLIANCE_TEST_MODE);
|
||||||
s_cfg->PcieRpClkReqDetect[i] = !!(rp_cfg->flags & PCIE_RP_CLK_REQ_DETECT);
|
s_cfg->PcieRpClkReqDetect[i] = !!(rp_cfg->flags & PCIE_RP_CLK_REQ_DETECT);
|
||||||
}
|
}
|
||||||
|
s_cfg->PcieComplianceTestMode = CONFIG(SOC_INTEL_COMPLIANCE_TEST_MODE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void fill_fsps_misc_power_params(FSP_S_CONFIG *s_cfg,
|
static void fill_fsps_misc_power_params(FSP_S_CONFIG *s_cfg,
|
||||||
|
|
|
@ -31,6 +31,10 @@ static void pcie_rp_init(FSP_M_CONFIG *m_cfg, uint32_t en_mask,
|
||||||
static unsigned int clk_req_mapping = 0;
|
static unsigned int clk_req_mapping = 0;
|
||||||
|
|
||||||
for (i = 0; i < cfg_count; i++) {
|
for (i = 0; i < cfg_count; i++) {
|
||||||
|
if (CONFIG(SOC_INTEL_COMPLIANCE_TEST_MODE)) {
|
||||||
|
m_cfg->PcieClkSrcUsage[i] = FSP_CLK_FREE_RUNNING;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
if (!(en_mask & BIT(i)))
|
if (!(en_mask & BIT(i)))
|
||||||
continue;
|
continue;
|
||||||
if (cfg[i].flags & PCIE_RP_CLK_SRC_UNUSED)
|
if (cfg[i].flags & PCIE_RP_CLK_SRC_UNUSED)
|
||||||
|
|
Loading…
Reference in New Issue