soc/intel/elkhartlake: Make PCIe root port speed limit configurable

In cases where there are limitations on the connected device behind the
PCIe root port it can be necessary to limit the speed. The FSP parameter
'PcieRpPcieSpeed' allows to set the speed limit.

This patch provides a chip config so that this FSP parameter can be set
as needed in the devicetree on mainboard level.

Change-Id: I9fc24de1682279e4ae4c090147a6ef7995b441bc
Signed-off-by: Mario Scheithauer <mario.scheithauer@siemens.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/73766
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Lean Sheng Tan <sheng.tan@9elements.com>
Reviewed-by: Maximilian Brune <maximilian.brune@9elements.com>
This commit is contained in:
Mario Scheithauer 2023-03-17 09:58:56 +01:00 committed by Lean Sheng Tan
parent 1af4b289f0
commit fd4f8911c1
2 changed files with 4 additions and 0 deletions

View File

@ -239,6 +239,9 @@ struct soc_intel_elkhartlake_config {
/* PCIe RP L1 substate */ /* PCIe RP L1 substate */
enum L1_substates_control PcieRpL1Substates[CONFIG_MAX_ROOT_PORTS]; enum L1_substates_control PcieRpL1Substates[CONFIG_MAX_ROOT_PORTS];
/* PCIe root port speed. 0: Auto (Default); 1: Gen1; 2: Gen2; 3: Gen3 */
uint8_t PcieRpPcieSpeed[CONFIG_MAX_ROOT_PORTS];
/* eMMC and SD */ /* eMMC and SD */
uint8_t ScsEmmcHs400Enabled; uint8_t ScsEmmcHs400Enabled;
uint8_t ScsEmmcDdr50Enabled; uint8_t ScsEmmcDdr50Enabled;

View File

@ -381,6 +381,7 @@ void platform_fsp_silicon_init_params_cb(FSPS_UPD *supd)
!config->PcieRpAdvancedErrorReportingDisable[i]; !config->PcieRpAdvancedErrorReportingDisable[i];
params->PcieRpHotPlug[i] = config->PcieRpHotPlug[i]; params->PcieRpHotPlug[i] = config->PcieRpHotPlug[i];
params->PciePtm[i] = config->PciePtm[i]; params->PciePtm[i] = config->PciePtm[i];
params->PcieRpPcieSpeed[i] = config->PcieRpPcieSpeed[i];
params->PcieRpLtrMaxNoSnoopLatency[i] = 0x1003; params->PcieRpLtrMaxNoSnoopLatency[i] = 0x1003;
params->PcieRpLtrMaxSnoopLatency[i] = 0x1003; params->PcieRpLtrMaxSnoopLatency[i] = 0x1003;
/* Virtual Channel 1 to Traffic Class mapping */ /* Virtual Channel 1 to Traffic Class mapping */