summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mainboard/google/brya/variants/baseboard/brya/devicetree.cb4
-rw-r--r--src/mainboard/intel/adlrvp/variants/adlrvp_rpl/overridetree.cb3
-rw-r--r--src/mainboard/intel/adlrvp/variants/adlrvp_rpl_ext_ec/overridetree.cb3
-rw-r--r--src/mainboard/system76/rpl/devicetree.cb4
-rw-r--r--src/soc/intel/alderlake/fsp_params.c11
5 files changed, 20 insertions, 5 deletions
diff --git a/src/mainboard/google/brya/variants/baseboard/brya/devicetree.cb b/src/mainboard/google/brya/variants/baseboard/brya/devicetree.cb
index d48462ca63..0290181714 100644
--- a/src/mainboard/google/brya/variants/baseboard/brya/devicetree.cb
+++ b/src/mainboard/google/brya/variants/baseboard/brya/devicetree.cb
@@ -14,6 +14,10 @@ chip soc/intel/alderlake
# S0ix enable
register "s0ix_enable" = "1"
+ # Disable package C state demotion on Raptorlake as a W/A for S0ix issues
+ # seen on J0 and Q0 SKUs
+ register "disable_package_c_state_demotion" = "1"
+
# DPTF enable
register "dptf_enable" = "1"
diff --git a/src/mainboard/intel/adlrvp/variants/adlrvp_rpl/overridetree.cb b/src/mainboard/intel/adlrvp/variants/adlrvp_rpl/overridetree.cb
index e58e9fbdce..73012d1032 100644
--- a/src/mainboard/intel/adlrvp/variants/adlrvp_rpl/overridetree.cb
+++ b/src/mainboard/intel/adlrvp/variants/adlrvp_rpl/overridetree.cb
@@ -1,4 +1,7 @@
chip soc/intel/alderlake
+ # Disable package C state demotion on Raptorlake as a W/A for S0ix issues
+ # seen on J0 and Q0 SKUs
+ register "disable_package_c_state_demotion" = "1"
device domain 0 on end
end
diff --git a/src/mainboard/intel/adlrvp/variants/adlrvp_rpl_ext_ec/overridetree.cb b/src/mainboard/intel/adlrvp/variants/adlrvp_rpl_ext_ec/overridetree.cb
index fc4c11c496..8bc35c03f2 100644
--- a/src/mainboard/intel/adlrvp/variants/adlrvp_rpl_ext_ec/overridetree.cb
+++ b/src/mainboard/intel/adlrvp/variants/adlrvp_rpl_ext_ec/overridetree.cb
@@ -1,4 +1,7 @@
chip soc/intel/alderlake
+ # Disable package C state demotion on Raptorlake as a W/A for S0ix issues
+ # seen on J0 and Q0 SKUs
+ register "disable_package_c_state_demotion" = "1"
device domain 0 on
device ref pch_espi on
diff --git a/src/mainboard/system76/rpl/devicetree.cb b/src/mainboard/system76/rpl/devicetree.cb
index 0fed44d889..a016dec962 100644
--- a/src/mainboard/system76/rpl/devicetree.cb
+++ b/src/mainboard/system76/rpl/devicetree.cb
@@ -17,6 +17,10 @@ chip soc/intel/alderlake
# Thermal
register "tcc_offset" = "8"
+ # Disable package C state demotion on Raptorlake as a W/A for S0ix issues
+ # seen on J0 and Q0 SKUs
+ register "disable_package_c_state_demotion" = "1"
+
device cpu_cluster 0 on end
device domain 0 on
diff --git a/src/soc/intel/alderlake/fsp_params.c b/src/soc/intel/alderlake/fsp_params.c
index 67fb55bb7d..d86d62cc9b 100644
--- a/src/soc/intel/alderlake/fsp_params.c
+++ b/src/soc/intel/alderlake/fsp_params.c
@@ -1061,11 +1061,12 @@ static void fill_fsps_misc_power_params(FSP_S_CONFIG *s_cfg,
s_cfg->VrPowerDeliveryDesign = config->vr_power_delivery_design;
- /* FIXME: Disable package C state demotion on Raptorlake as a W/A for S0ix issues */
- if ((cpu_id == CPUID_RAPTORLAKE_J0) || (cpu_id == CPUID_RAPTORLAKE_Q0))
- s_cfg->PkgCStateDemotion = 0;
- else
- s_cfg->PkgCStateDemotion = !config->disable_package_c_state_demotion;
+ /* C state demotion must be disabled for Raptorlake J0 and Q0 SKUs */
+ assert(!(config->s0ix_enable && ((cpu_id == CPUID_RAPTORLAKE_J0) ||
+ (cpu_id == CPUID_RAPTORLAKE_Q0)) &&
+ !config->disable_package_c_state_demotion));
+
+ s_cfg->PkgCStateDemotion = !config->disable_package_c_state_demotion;
if (cpu_id == CPUID_RAPTORLAKE_J0 || cpu_id == CPUID_RAPTORLAKE_Q0)
s_cfg->C1e = 0;