diff options
author | Jeremy Compostella <jeremy.compostella@intel.com> | 2022-06-17 15:18:02 -0700 |
---|---|---|
committer | Felix Held <felix-coreboot@felixheld.de> | 2022-07-04 14:13:15 +0000 |
commit | 1b44c81d3dc21abf417578dacdc37c13dce28727 (patch) | |
tree | a10e78d1bf2b23652d4bdc8abcb31a79e72c91a2 /src/soc/intel | |
parent | 7c60068b2345a79ab5c12f1484c50fca6006d59f (diff) | |
download | coreboot-1b44c81d3dc21abf417578dacdc37c13dce28727.tar.gz coreboot-1b44c81d3dc21abf417578dacdc37c13dce28727.tar.bz2 coreboot-1b44c81d3dc21abf417578dacdc37c13dce28727.zip |
soc/intel/alderlake: RPL-P power limits and VR settings
This patch sets the Power Limits and Voltage Regulator settings for
three RaptorLake SKUs (45W, 28W and 15W) following the guidance from
document 686872 (June 7th edition).
BUG=b:237809660
TEST=Power Limit and VR serial logs review + debug instrumentation
SKUs successfully booted
Signed-off-by: Jeremy Compostella <jeremy.compostella@intel.com>
Change-Id: I7e9d4039615e6c33b869c6243efbfeb2259ac219
Reviewed-on: https://review.coreboot.org/c/coreboot/+/65582
Reviewed-by: Zhixing Ma <zhixing.ma@intel.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Cliff Huang <cliff.huang@intel.com>
Reviewed-by: Nick Vaccaro <nvaccaro@google.com>
Diffstat (limited to 'src/soc/intel')
-rw-r--r-- | src/soc/intel/alderlake/chip.h | 6 | ||||
-rw-r--r-- | src/soc/intel/alderlake/chipset.cb | 18 | ||||
-rw-r--r-- | src/soc/intel/alderlake/fsp_params.c | 6 | ||||
-rw-r--r-- | src/soc/intel/alderlake/vr_config.c | 34 |
4 files changed, 63 insertions, 1 deletions
diff --git a/src/soc/intel/alderlake/chip.h b/src/soc/intel/alderlake/chip.h index a5e6056c51d9..d01dc73dea14 100644 --- a/src/soc/intel/alderlake/chip.h +++ b/src/soc/intel/alderlake/chip.h @@ -42,6 +42,9 @@ enum soc_intel_alderlake_power_limits { ADL_S_642_125W_CORE, ADL_S_602_35W_CORE, ADL_S_602_65W_CORE, + RPL_P_682_642_482_45W_CORE, + RPL_P_682_482_282_28W_CORE, + RPL_P_282_242_142_15W_CORE, ADL_POWER_LIMITS_COUNT }; @@ -90,6 +93,9 @@ static const struct { { PCI_DID_INTEL_ADL_S_ID_8, ADL_S_642_125W_CORE, TDP_125W }, { PCI_DID_INTEL_ADL_S_ID_10, ADL_S_602_35W_CORE, TDP_35W }, { PCI_DID_INTEL_ADL_S_ID_10, ADL_S_602_65W_CORE, TDP_65W }, + { PCI_DID_INTEL_RPL_P_ID_1, RPL_P_682_642_482_45W_CORE, TDP_45W }, + { PCI_DID_INTEL_RPL_P_ID_2, RPL_P_682_482_282_28W_CORE, TDP_28W }, + { PCI_DID_INTEL_RPL_P_ID_3, RPL_P_282_242_142_15W_CORE, TDP_15W }, }; /* Types of display ports */ diff --git a/src/soc/intel/alderlake/chipset.cb b/src/soc/intel/alderlake/chipset.cb index 451b3ef5ee6f..6bfa76942a43 100644 --- a/src/soc/intel/alderlake/chipset.cb +++ b/src/soc/intel/alderlake/chipset.cb @@ -66,6 +66,24 @@ chip soc/intel/alderlake .tdp_pl4 = 78, }" + register "power_limits_config[RPL_P_682_642_482_45W_CORE]" = "{ + .tdp_pl1_override = 45, + .tdp_pl2_override = 115, + .tdp_pl4 = 210, + }" + + register "power_limits_config[RPL_P_682_482_282_28W_CORE]" = "{ + .tdp_pl1_override = 28, + .tdp_pl2_override = 64, + .tdp_pl4 = 126, + }" + + register "power_limits_config[RPL_P_282_242_142_15W_CORE]" = "{ + .tdp_pl1_override = 15, + .tdp_pl2_override = 55, + .tdp_pl4 = 114, + }" + # NOTE: if any variant wants to override this value, use the same format # as register "common_soc_config.pch_thermal_trip" = "value", instead of # putting it under register "common_soc_config" in overridetree.cb file. diff --git a/src/soc/intel/alderlake/fsp_params.c b/src/soc/intel/alderlake/fsp_params.c index 37a3cb753563..17d0c763fd60 100644 --- a/src/soc/intel/alderlake/fsp_params.c +++ b/src/soc/intel/alderlake/fsp_params.c @@ -490,7 +490,8 @@ static unsigned int get_aspm_control(enum ASPM_control ctl) return ctl - 1; } -/* This function returns the VccIn Aux Imon IccMax values for ADL-P and ADL-S SKU's */ +/* This function returns the VccIn Aux Imon IccMax values for ADL and RPL + SKU's */ static uint16_t get_vccin_aux_imon_iccmax(void) { struct device *dev = pcidev_path_on_root(SA_DEVFN_ROOT); @@ -507,6 +508,9 @@ static uint16_t get_vccin_aux_imon_iccmax(void) case PCI_DID_INTEL_ADL_P_ID_8: case PCI_DID_INTEL_ADL_P_ID_9: case PCI_DID_INTEL_ADL_P_ID_10: + case PCI_DID_INTEL_RPL_P_ID_1: + case PCI_DID_INTEL_RPL_P_ID_2: + case PCI_DID_INTEL_RPL_P_ID_3: tdp = get_cpu_tdp(); if (tdp == TDP_45W) return ICC_MAX_TDP_45W; diff --git a/src/soc/intel/alderlake/vr_config.c b/src/soc/intel/alderlake/vr_config.c index 1cef07a103e5..da0b4e10c643 100644 --- a/src/soc/intel/alderlake/vr_config.c +++ b/src/soc/intel/alderlake/vr_config.c @@ -68,6 +68,28 @@ * +----------------+-----------+-------+-------+---------+-------------+----------+ */ +/* + * VR Configurations for IA and GT domains for RPL-P SKU's. + * Per doc#686872 RPL UPH PDG - 2022, June 7th edition + * + * +----------------+-----------+-------+-------+---------+-------------+----------+ + * | SKU | Setting | AC LL | DC LL | ICC MAX | TDC Current | TDC Time | + * | | |(mOhms)|(mOhms)| (A) | (A) | (msec) | + * +----------------+-----------+-------+-------+---------+-------------+----------+ + * | RPL-P 682(45W) | IA | 2.3 | 2.3 | 160 | 86 | 28000 | + * + +-----------+-------+-------+---------+-------------+----------+ + * | | GT | 3.2 | 3.2 | 55 | 86 | 28000 | + * +----------------+-----------+-------+-------+---------+-------------+----------+ + * | RPL-P 482(28W) | IA | 2.3 | 2.3 | 102 | 54 | 28000 | + * + +-----------+-------+-------+---------+-------------+----------+ + * | | GT | 3.2 | 3.2 | 55 | 54 | 28000 | + * +----------------+-----------+-------+-------+---------+-------------+----------+ + * | RPL-P 282(15W) | IA | 2.8 | 2.8 | 80 | 41 | 28000 | + * + +-----------+-------+-------+---------+-------------+----------+ + * | | GT | 3.2 | 3.2 | 55 | 41 | 28000 | + * +----------------+-----------+-------+-------+---------+-------------+----------+ + */ + struct vr_lookup { uint16_t mchid; uint8_t tdp; @@ -104,6 +126,9 @@ static const struct vr_lookup vr_config_ll[] = { { PCI_DID_INTEL_ADL_N_ID_2, 6, VR_CFG_ALL_DOMAINS_LOADLINE(5.0, 6.5) }, { PCI_DID_INTEL_ADL_N_ID_3, 6, VR_CFG_ALL_DOMAINS_LOADLINE(5.0, 6.5) }, { PCI_DID_INTEL_ADL_N_ID_4, 6, VR_CFG_ALL_DOMAINS_LOADLINE(5.0, 6.5) }, + { PCI_DID_INTEL_RPL_P_ID_1, 45, VR_CFG_ALL_DOMAINS_LOADLINE(2.3, 3.2) }, + { PCI_DID_INTEL_RPL_P_ID_2, 28, VR_CFG_ALL_DOMAINS_LOADLINE(2.3, 3.2) }, + { PCI_DID_INTEL_RPL_P_ID_3, 15, VR_CFG_ALL_DOMAINS_LOADLINE(2.8, 3.2) }, }; static const struct vr_lookup vr_config_icc[] = { @@ -122,6 +147,9 @@ static const struct vr_lookup vr_config_icc[] = { { PCI_DID_INTEL_ADL_N_ID_2, 6, VR_CFG_ALL_DOMAINS_ICC(37, 29) }, { PCI_DID_INTEL_ADL_N_ID_3, 6, VR_CFG_ALL_DOMAINS_ICC(37, 26) }, { PCI_DID_INTEL_ADL_N_ID_4, 6, VR_CFG_ALL_DOMAINS_ICC(27, 23) }, + { PCI_DID_INTEL_RPL_P_ID_1, 45, VR_CFG_ALL_DOMAINS_ICC(160, 55) }, + { PCI_DID_INTEL_RPL_P_ID_2, 28, VR_CFG_ALL_DOMAINS_ICC(102, 55) }, + { PCI_DID_INTEL_RPL_P_ID_3, 15, VR_CFG_ALL_DOMAINS_ICC(80, 55) }, }; static const struct vr_lookup vr_config_tdc_timewindow[] = { @@ -140,6 +168,9 @@ static const struct vr_lookup vr_config_tdc_timewindow[] = { { PCI_DID_INTEL_ADL_N_ID_2, 6, VR_CFG_ALL_DOMAINS_TDC(28000, 28000) }, { PCI_DID_INTEL_ADL_N_ID_3, 6, VR_CFG_ALL_DOMAINS_TDC(28000, 28000) }, { PCI_DID_INTEL_ADL_N_ID_4, 6, VR_CFG_ALL_DOMAINS_TDC(28000, 28000) }, + { PCI_DID_INTEL_RPL_P_ID_1, 45, VR_CFG_ALL_DOMAINS_TDC(28000, 28000) }, + { PCI_DID_INTEL_RPL_P_ID_2, 28, VR_CFG_ALL_DOMAINS_TDC(28000, 28000) }, + { PCI_DID_INTEL_RPL_P_ID_3, 15, VR_CFG_ALL_DOMAINS_TDC(28000, 28000) }, }; static const struct vr_lookup vr_config_tdc_currentlimit[] = { @@ -158,6 +189,9 @@ static const struct vr_lookup vr_config_tdc_currentlimit[] = { { PCI_DID_INTEL_ADL_N_ID_2, 6, VR_CFG_ALL_DOMAINS_TDC_CURRENT(12, 12) }, { PCI_DID_INTEL_ADL_N_ID_3, 6, VR_CFG_ALL_DOMAINS_TDC_CURRENT(12, 12) }, { PCI_DID_INTEL_ADL_N_ID_4, 6, VR_CFG_ALL_DOMAINS_TDC_CURRENT(10, 10) }, + { PCI_DID_INTEL_RPL_P_ID_1, 45, VR_CFG_ALL_DOMAINS_TDC_CURRENT(86, 86) }, + { PCI_DID_INTEL_RPL_P_ID_2, 28, VR_CFG_ALL_DOMAINS_TDC_CURRENT(54, 54) }, + { PCI_DID_INTEL_RPL_P_ID_3, 15, VR_CFG_ALL_DOMAINS_TDC_CURRENT(41, 41) }, }; void fill_vr_domain_config(FSP_S_CONFIG *s_cfg, |