summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCliff Huang <cliff.huang@intel.corp-partner.google.com>2022-04-28 18:06:54 -0700
committerFelix Held <felix-coreboot@felixheld.de>2022-06-09 13:39:38 +0000
commit61a442ec01b1a7d9a2d83604956f8355ea391b3e (patch)
treefca3920033f33bc512af9772fb2a746e255744e1
parent76ef18d8ffa97844a09268c7459c7fcf0a5f10af (diff)
soc/intel/alderlake: Add support for PCIe slot & device detect timeout
1. add timeout for root port detection and pass to FSP. 2. add 'slot implemented' flag and pass to FSP. 3. PcieRpSlotImplemented needs to be set when the root port is set to hotplug. There is an assertion in FSP checking this. 4. PcieRpSlotImplemented is updated only when it is built-in as it is default to slot implemented in FSP. BRANCH=firmware-brya-14505.B Signed-off-by: Cliff Huang <cliff.huang@intel.com> Change-Id: I13feb1d2d67eaba634a3e700685132fba39e1525 Reviewed-on: https://review.coreboot.org/c/coreboot/+/63942 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Tim Wawrzynczak <twawrzynczak@chromium.org> Reviewed-by: Anil Kumar K <anil.kumar.k@intel.com> Reviewed-by: Eric Lai <eric_lai@quanta.corp-partner.google.com>
-rw-r--r--src/soc/intel/alderlake/fsp_params.c4
-rw-r--r--src/soc/intel/common/block/include/intelblocks/pcie_rp.h4
2 files changed, 8 insertions, 0 deletions
diff --git a/src/soc/intel/alderlake/fsp_params.c b/src/soc/intel/alderlake/fsp_params.c
index e3222be02e..f14adbdc83 100644
--- a/src/soc/intel/alderlake/fsp_params.c
+++ b/src/soc/intel/alderlake/fsp_params.c
@@ -673,6 +673,10 @@ static void fill_fsps_pcie_params(FSP_S_CONFIG *s_cfg,
s_cfg->PcieRpClkReqDetect[i] = !!(rp_cfg->flags & PCIE_RP_CLK_REQ_DETECT);
if (rp_cfg->pcie_rp_aspm)
s_cfg->PcieRpAspm[i] = get_aspm_control(rp_cfg->pcie_rp_aspm);
+ /* PcieRpSlotImplemented default to 1 (slot implemented) in FSP; 0: built-in */
+ if (!!(rp_cfg->flags & PCIE_RP_BUILT_IN))
+ s_cfg->PcieRpSlotImplemented[i] = 0;
+ s_cfg->PcieRpDetectTimeoutMs[i] = rp_cfg->pcie_rp_detect_timeout_ms;
}
}
diff --git a/src/soc/intel/common/block/include/intelblocks/pcie_rp.h b/src/soc/intel/common/block/include/intelblocks/pcie_rp.h
index 66ced7ee46..9832feb83f 100644
--- a/src/soc/intel/common/block/include/intelblocks/pcie_rp.h
+++ b/src/soc/intel/common/block/include/intelblocks/pcie_rp.h
@@ -27,6 +27,8 @@ enum pcie_rp_flags {
PCIE_RP_CLK_REQ_DETECT = (1 << 4),
/* Clock request signal is not used by the root port. */
PCIE_RP_CLK_REQ_UNUSED = (1 << 5),
+ /* indicates that this root port is built-in. */
+ PCIE_RP_BUILT_IN = (1 << 6),
};
enum pcie_clk_src_flags {
@@ -63,6 +65,8 @@ struct pcie_rp_config {
enum L1_substates_control PcieRpL1Substates;
/* PCIe RP ASPM */
enum ASPM_control pcie_rp_aspm;
+ /* timeout for device detect */
+ uint32_t pcie_rp_detect_timeout_ms;
};
/*