intel/skylake: Fix bug in VR configuration with FSP 2.0
With the move to FSP 2.0 the number of VR types supported was reduced to 4, and the VR_RING type is no longer present. This means all existing boards using FSP 2.0 are incorrectly passing VR configuration into FSP as the values corresponding to "GT Sliced" and "GT Unsliced" have changed. Fix this by updating the skylake SOC VR handling to account for changes in the FSP configuration and no longer provide VR_RING type when using FSP 2.0. BUG=b:36228330 BRANCH=none TEST=manual: build and boot on Eve Change-Id: I59eea9fba006a4c235d7b42d07fdc6e4f44f7351 Signed-off-by: Duncan Laurie <dlaurie@chromium.org> Reviewed-on: https://review.coreboot.org/18818 Reviewed-by: Aaron Durbin <adurbin@chromium.org> Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net> Reviewed-by: Furquan Shaikh <furquan@google.com> Tested-by: build bot (Jenkins)
This commit is contained in:
parent
2661a9f517
commit
4fa8a6f4fe
|
@ -61,20 +61,20 @@ chip soc/intel/skylake
|
|||
register "pirqg_routing" = "PCH_IRQ11"
|
||||
register "pirqh_routing" = "PCH_IRQ11"
|
||||
|
||||
# VR Settings Configuration for 5 Domains
|
||||
#+----------------+-------+-------+-------------+-------------+-------+
|
||||
#| Domain/Setting | SA | IA | Ring Sliced | GT Unsliced | GT |
|
||||
#+----------------+-------+-------+-------------+-------------+-------+
|
||||
#| Psi1Threshold | 20A | 20A | 20A | 20A | 20A |
|
||||
#| Psi2Threshold | 4A | 5A | 5A | 5A | 5A |
|
||||
#| Psi3Threshold | 1A | 1A | 1A | 1A | 1A |
|
||||
#| Psi3Enable | 1 | 1 | 1 | 1 | 1 |
|
||||
#| Psi4Enable | 1 | 1 | 1 | 1 | 1 |
|
||||
#| ImonSlope | 0 | 0 | 0 | 0 | 0 |
|
||||
#| ImonOffset | 0 | 0 | 0 | 0 | 0 |
|
||||
#| IccMax | 4A | 24A | 24A | 24A | 24A |
|
||||
#| VrVoltageLimit | 1.52V | 1.52V | 1.52V | 1.52V | 1.52V |
|
||||
#+----------------+-------+-------+-------------+-------------+-------+
|
||||
# VR Settings Configuration for 4 Domains
|
||||
#+----------------+-------+-------+-------+-------+
|
||||
#| Domain/Setting | SA | IA | GTUS | GTS |
|
||||
#+----------------+-------+-------+-------+-------+
|
||||
#| Psi1Threshold | 20A | 20A | 20A | 20A |
|
||||
#| Psi2Threshold | 4A | 5A | 5A | 5A |
|
||||
#| Psi3Threshold | 1A | 1A | 1A | 1A |
|
||||
#| Psi3Enable | 1 | 1 | 1 | 1 |
|
||||
#| Psi4Enable | 1 | 1 | 1 | 1 |
|
||||
#| ImonSlope | 0 | 0 | 0 | 0 |
|
||||
#| ImonOffset | 0 | 0 | 0 | 0 |
|
||||
#| IccMax | 4A | 24A | 24A | 24A |
|
||||
#| VrVoltageLimit | 1.52V | 1.52V | 1.52V | 1.52V |
|
||||
#+----------------+-------+-------+-------+-------+
|
||||
register "domain_vr_config[VR_SYSTEM_AGENT]" = "{
|
||||
.vr_config_enable = 1,
|
||||
.psi1threshold = VR_CFG_AMP(20),
|
||||
|
@ -101,19 +101,6 @@ chip soc/intel/skylake
|
|||
.voltage_limit = 1520,
|
||||
}"
|
||||
|
||||
register "domain_vr_config[VR_RING]" = "{
|
||||
.vr_config_enable = 1,
|
||||
.psi1threshold = VR_CFG_AMP(20),
|
||||
.psi2threshold = VR_CFG_AMP(5),
|
||||
.psi3threshold = VR_CFG_AMP(1),
|
||||
.psi3enable = 1,
|
||||
.psi4enable = 1,
|
||||
.imon_slope = 0x0,
|
||||
.imon_offset = 0x0,
|
||||
.icc_max = VR_CFG_AMP(24),
|
||||
.voltage_limit = 1520,
|
||||
}"
|
||||
|
||||
register "domain_vr_config[VR_GT_UNSLICED]" = "{
|
||||
.vr_config_enable = 1,
|
||||
.psi1threshold = VR_CFG_AMP(20),
|
||||
|
|
|
@ -65,20 +65,20 @@ chip soc/intel/skylake
|
|||
register "pirqg_routing" = "PCH_IRQ11"
|
||||
register "pirqh_routing" = "PCH_IRQ11"
|
||||
|
||||
# VR Settings Configuration for 5 Domains
|
||||
#+----------------+-------+-------+-------------+-------------+-------+
|
||||
#| Domain/Setting | SA | IA | Ring Sliced | GT Unsliced | GT |
|
||||
#+----------------+-------+-------+-------------+-------------+-------+
|
||||
#| Psi1Threshold | 20A | 20A | 20A | 20A | 20A |
|
||||
#| Psi2Threshold | 4A | 5A | 5A | 5A | 5A |
|
||||
#| Psi3Threshold | 1A | 1A | 1A | 1A | 1A |
|
||||
#| Psi3Enable | 1 | 1 | 1 | 1 | 1 |
|
||||
#| Psi4Enable | 1 | 1 | 1 | 1 | 1 |
|
||||
#| ImonSlope | 0 | 0 | 0 | 0 | 0 |
|
||||
#| ImonOffset | 0 | 0 | 0 | 0 | 0 |
|
||||
#| IccMax | 7A | 34A | 34A | 35A | 35A |
|
||||
#| VrVoltageLimit | 1.52V | 1.52V | 1.52V | 1.52V | 1.52V |
|
||||
#+----------------+-------+-------+-------------+-------------+-------+
|
||||
# VR Settings Configuration for 4 Domains
|
||||
#+----------------+-------+-------+-------+-------+
|
||||
#| Domain/Setting | SA | IA | GTUS | GTS |
|
||||
#+----------------+-------+-------+-------+-------+
|
||||
#| Psi1Threshold | 20A | 20A | 20A | 20A |
|
||||
#| Psi2Threshold | 4A | 5A | 5A | 5A |
|
||||
#| Psi3Threshold | 1A | 1A | 1A | 1A |
|
||||
#| Psi3Enable | 1 | 1 | 1 | 1 |
|
||||
#| Psi4Enable | 1 | 1 | 1 | 1 |
|
||||
#| ImonSlope | 0 | 0 | 0 | 0 |
|
||||
#| ImonOffset | 0 | 0 | 0 | 0 |
|
||||
#| IccMax | 7A | 34A | 35A | 35A |
|
||||
#| VrVoltageLimit | 1.52V | 1.52V | 1.52V | 1.52V |
|
||||
#+----------------+-------+-------+-------+-------+
|
||||
register "domain_vr_config[VR_SYSTEM_AGENT]" = "{
|
||||
.vr_config_enable = 1,
|
||||
.psi1threshold = VR_CFG_AMP(20),
|
||||
|
@ -105,19 +105,6 @@ chip soc/intel/skylake
|
|||
.voltage_limit = 1520,
|
||||
}"
|
||||
|
||||
register "domain_vr_config[VR_RING]" = "{
|
||||
.vr_config_enable = 1,
|
||||
.psi1threshold = VR_CFG_AMP(20),
|
||||
.psi2threshold = VR_CFG_AMP(5),
|
||||
.psi3threshold = VR_CFG_AMP(1),
|
||||
.psi3enable = 1,
|
||||
.psi4enable = 1,
|
||||
.imon_slope = 0x0,
|
||||
.imon_offset = 0x0,
|
||||
.icc_max = VR_CFG_AMP(34),
|
||||
.voltage_limit = 1520,
|
||||
}"
|
||||
|
||||
register "domain_vr_config[VR_GT_UNSLICED]" = "{
|
||||
.vr_config_enable = 1,
|
||||
.psi1threshold = VR_CFG_AMP(20),
|
||||
|
|
|
@ -59,20 +59,20 @@ chip soc/intel/skylake
|
|||
# Determines if enable Serial IRQ. Values 0: Disabled, 1: Enabled
|
||||
register "SerialIrqConfigSirqEnable" = "0x01"
|
||||
|
||||
# VR Settings Configuration for 5 Domains
|
||||
#+----------------+-------+-------+-------------+-------------+-------+
|
||||
#| Domain/Setting | SA | IA | Ring Sliced | GT Unsliced | GT |
|
||||
#+----------------+-------+-------+-------------+-------------+-------+
|
||||
#| Psi1Threshold | 20A | 20A | 20A | 20A | 20A |
|
||||
#| Psi2Threshold | 5A | 5A | 5A | 5A | 5A |
|
||||
#| Psi3Threshold | 1A | 1A | 1A | 1A | 1A |
|
||||
#| Psi3Enable | 1 | 1 | 1 | 1 | 1 |
|
||||
#| Psi4Enable | 1 | 1 | 1 | 1 | 1 |
|
||||
#| ImonSlope | 0 | 0 | 0 | 0 | 0 |
|
||||
#| ImonOffset | 0 | 0 | 0 | 0 | 0 |
|
||||
#| IccMax | 7A | 34A | 34A | 35A | 35A |
|
||||
#| VrVoltageLimit | 1.52V | 1.52V | 1.52V | 1.52V | 1.52V |
|
||||
#+----------------+-------+-------+-------------+-------------+-------+
|
||||
# VR Settings Configuration for 4 Domains
|
||||
#+----------------+-------+-------+-------+-------+
|
||||
#| Domain/Setting | SA | IA | GTUS | GTS |
|
||||
#+----------------+-------+-------+-------+-------+
|
||||
#| Psi1Threshold | 20A | 20A | 20A | 20A |
|
||||
#| Psi2Threshold | 5A | 5A | 5A | 5A |
|
||||
#| Psi3Threshold | 1A | 1A | 1A | 1A |
|
||||
#| Psi3Enable | 1 | 1 | 1 | 1 |
|
||||
#| Psi4Enable | 1 | 1 | 1 | 1 |
|
||||
#| ImonSlope | 0 | 0 | 0 | 0 |
|
||||
#| ImonOffset | 0 | 0 | 0 | 0 |
|
||||
#| IccMax | 7A | 34A | 35A | 35A |
|
||||
#| VrVoltageLimit | 1.52V | 1.52V | 1.52V | 1.52V |
|
||||
#+----------------+-------+-------+-------+-------+
|
||||
register "domain_vr_config[VR_SYSTEM_AGENT]" = "{
|
||||
.vr_config_enable = 1, \
|
||||
.psi1threshold = 0x50, \
|
||||
|
@ -98,18 +98,6 @@ chip soc/intel/skylake
|
|||
.icc_max = 0x88, \
|
||||
.voltage_limit = 0x5F0 \
|
||||
}"
|
||||
register "domain_vr_config[VR_RING]" = "{
|
||||
.vr_config_enable = 1, \
|
||||
.psi1threshold = 0x50, \
|
||||
.psi2threshold = 0x14, \
|
||||
.psi3threshold = 0x4, \
|
||||
.psi3enable = 1, \
|
||||
.psi4enable = 1, \
|
||||
.imon_slope = 0x0, \
|
||||
.imon_offset = 0x0, \
|
||||
.icc_max = 0x88, \
|
||||
.voltage_limit = 0x5F0, \
|
||||
}"
|
||||
|
||||
register "domain_vr_config[VR_GT_UNSLICED]" = "{
|
||||
.vr_config_enable = 1, \
|
||||
|
|
|
@ -65,20 +65,20 @@ chip soc/intel/skylake
|
|||
# Determines if enable Serial IRQ. Values 0: Disabled, 1: Enabled
|
||||
register "SerialIrqConfigSirqEnable" = "0x01"
|
||||
|
||||
# VR Settings Configuration for 5 Domains
|
||||
#+----------------+-------+-------+-------------+-------------+-------+
|
||||
#| Domain/Setting | SA | IA | Ring Sliced | GT Unsliced | GT |
|
||||
#+----------------+-------+-------+-------------+-------------+-------+
|
||||
#| Psi1Threshold | 20A | 20A | 20A | 20A | 20A |
|
||||
#| Psi2Threshold | 4A | 5A | 5A | 5A | 5A |
|
||||
#| Psi3Threshold | 1A | 1A | 1A | 1A | 1A |
|
||||
#| Psi3Enable | 1 | 1 | 1 | 1 | 1 |
|
||||
#| Psi4Enable | 1 | 1 | 1 | 1 | 1 |
|
||||
#| ImonSlope | 0 | 0 | 0 | 0 | 0 |
|
||||
#| ImonOffset | 0 | 0 | 0 | 0 | 0 |
|
||||
#| IccMax | 7A | 34A | 34A | 35A | 35A |
|
||||
#| VrVoltageLimit | 1.52V | 1.52V | 1.52V | 1.52V | 1.52V |
|
||||
#+----------------+-------+-------+-------------+-------------+-------+
|
||||
# VR Settings Configuration for 4 Domains
|
||||
#+----------------+-------+-------+-------+-------+
|
||||
#| Domain/Setting | SA | IA | GTUS | GTS |
|
||||
#+----------------+-------+-------+-------+-------+
|
||||
#| Psi1Threshold | 20A | 20A | 20A | 20A |
|
||||
#| Psi2Threshold | 4A | 5A | 5A | 5A |
|
||||
#| Psi3Threshold | 1A | 1A | 1A | 1A |
|
||||
#| Psi3Enable | 1 | 1 | 1 | 1 |
|
||||
#| Psi4Enable | 1 | 1 | 1 | 1 |
|
||||
#| ImonSlope | 0 | 0 | 0 | 0 |
|
||||
#| ImonOffset | 0 | 0 | 0 | 0 |
|
||||
#| IccMax | 7A | 34A | 35A | 35A |
|
||||
#| VrVoltageLimit | 1.52V | 1.52V | 1.52V | 1.52V |
|
||||
#+----------------+-------+-------+-------+-------+
|
||||
register "domain_vr_config[VR_SYSTEM_AGENT]" = "{
|
||||
.vr_config_enable = 1, \
|
||||
.psi1threshold = 0x50, \
|
||||
|
@ -104,18 +104,6 @@ chip soc/intel/skylake
|
|||
.icc_max = 0x0, \
|
||||
.voltage_limit = 0x0 \
|
||||
}"
|
||||
register "domain_vr_config[VR_RING]" = "{
|
||||
.vr_config_enable = 1, \
|
||||
.psi1threshold = 0x50, \
|
||||
.psi2threshold = 0x14, \
|
||||
.psi3threshold = 0x4, \
|
||||
.psi3enable = 1, \
|
||||
.psi4enable = 1, \
|
||||
.imon_slope = 0x0, \
|
||||
.imon_offset = 0x0, \
|
||||
.icc_max = 0x0, \
|
||||
.voltage_limit = 0x0, \
|
||||
}"
|
||||
|
||||
register "domain_vr_config[VR_GT_UNSLICED]" = "{
|
||||
.vr_config_enable = 1, \
|
||||
|
|
|
@ -65,11 +65,12 @@ struct vr_config {
|
|||
|
||||
#define VR_CFG_AMP(i) ((i) * 4)
|
||||
|
||||
#if IS_ENABLED(CONFIG_PLATFORM_USES_FSP1_1)
|
||||
/* VrConfig Settings for 5 domains
|
||||
* 0 = System Agent, 1 = IA Core, 2 = Ring,
|
||||
* 3 = GT unsliced, 4 = GT sliced
|
||||
*/
|
||||
enum vr_domain{
|
||||
enum vr_domain {
|
||||
VR_SYSTEM_AGENT,
|
||||
VR_IA_CORE,
|
||||
VR_RING,
|
||||
|
@ -77,6 +78,19 @@ enum vr_domain{
|
|||
VR_GT_SLICED,
|
||||
NUM_VR_DOMAINS
|
||||
};
|
||||
#else
|
||||
/* VrConfig Settings for 4 domains
|
||||
* 0 = System Agent, 1 = IA Core,
|
||||
* 2 = GT unsliced, 3 = GT sliced
|
||||
*/
|
||||
enum vr_domain {
|
||||
VR_SYSTEM_AGENT,
|
||||
VR_IA_CORE,
|
||||
VR_GT_UNSLICED,
|
||||
VR_GT_SLICED,
|
||||
NUM_VR_DOMAINS
|
||||
};
|
||||
#endif
|
||||
|
||||
void fill_vr_domain_config(void *params,
|
||||
int domain, const struct vr_config *cfg);
|
||||
|
|
|
@ -44,6 +44,7 @@ static const struct vr_config default_configs[NUM_VR_DOMAINS] = {
|
|||
.icc_max = VR_CFG_AMP(34),
|
||||
.voltage_limit = 1520,
|
||||
},
|
||||
#if IS_ENABLED(CONFIG_PLATFORM_USES_FSP1_1)
|
||||
[VR_RING] = {
|
||||
.vr_config_enable = 1,
|
||||
.psi1threshold = VR_CFG_AMP(20),
|
||||
|
@ -56,6 +57,7 @@ static const struct vr_config default_configs[NUM_VR_DOMAINS] = {
|
|||
.icc_max = VR_CFG_AMP(34),
|
||||
.voltage_limit = 1520,
|
||||
},
|
||||
#endif
|
||||
[VR_GT_UNSLICED] = {
|
||||
.vr_config_enable = 1,
|
||||
.psi1threshold = VR_CFG_AMP(20),
|
||||
|
|
Loading…
Reference in New Issue