diff options
-rw-r--r-- | src/soc/intel/alderlake/chip.h | 24 | ||||
-rw-r--r-- | src/soc/intel/alderlake/fsp_params.c | 14 |
2 files changed, 38 insertions, 0 deletions
diff --git a/src/soc/intel/alderlake/chip.h b/src/soc/intel/alderlake/chip.h index d2594420c3..78f639cd3b 100644 --- a/src/soc/intel/alderlake/chip.h +++ b/src/soc/intel/alderlake/chip.h @@ -151,6 +151,21 @@ enum fivr_spread_spectrum_ratio { FIVR_SS_6 = 44, }; +/* + * Slew Rate configuration for Deep Package C States for VR domain. + * They are fast time divided by 2. + * 0 - Fast/2 + * 1 - Fast/4 + * 2 - Fast/8 + * 3 - Fast/16 + */ +enum slew_rate { + SLEW_FAST_2, + SLEW_FAST_4, + SLEW_FAST_8, + SLEW_FAST_16 +}; + struct soc_intel_alderlake_config { /* Common struct containing soc config data required by common code */ @@ -528,6 +543,15 @@ struct soc_intel_alderlake_config { * 0.5% = 0, 1% = 3, 1.5% = 8, 2% = 18, 3% = 28, 4% = 34, 5% = 39, 6% = 44. */ uint8_t FivrSpreadSpectrum; + /* Enable or Disable Acoustic Noise Mitigation feature */ + uint8_t AcousticNoiseMitigation; + /* Disable Fast Slew Rate for Deep Package C States for VR domains */ + uint8_t FastPkgCRampDisable[NUM_VR_DOMAINS]; + /* + * Slew Rate configuration for Deep Package C States for VR domains + * 0: Fast/2, 1: Fast/4, 2: Fast/8, 3: Fast/16; see enum slew_rate for values + */ + uint8_t SlowSlewRate[NUM_VR_DOMAINS]; }; typedef struct soc_intel_alderlake_config config_t; diff --git a/src/soc/intel/alderlake/fsp_params.c b/src/soc/intel/alderlake/fsp_params.c index 17edada9ba..e43335e467 100644 --- a/src/soc/intel/alderlake/fsp_params.c +++ b/src/soc/intel/alderlake/fsp_params.c @@ -739,6 +739,19 @@ static void fill_fsps_fivr_rfi_params(FSP_S_CONFIG *s_cfg, s_cfg->FivrSpreadSpectrum = config->FivrSpreadSpectrum; } +static void fill_fsps_acoustic_params(FSP_S_CONFIG *s_cfg, + const struct soc_intel_alderlake_config *config) +{ + s_cfg->AcousticNoiseMitigation = config->AcousticNoiseMitigation; + + if (s_cfg->AcousticNoiseMitigation) { + for (int i = 0; i < NUM_VR_DOMAINS; i++) { + s_cfg->FastPkgCRampDisable[i] = config->FastPkgCRampDisable[i]; + s_cfg->SlowSlewRate[i] = config->SlowSlewRate[i]; + } + } +} + static void soc_silicon_init_params(FSP_S_CONFIG *s_cfg, struct soc_intel_alderlake_config *config) { @@ -770,6 +783,7 @@ static void soc_silicon_init_params(FSP_S_CONFIG *s_cfg, fill_fsps_irq_params, fill_fsps_fivr_params, fill_fsps_fivr_rfi_params, + fill_fsps_acoustic_params, }; for (size_t i = 0; i < ARRAY_SIZE(fill_fsps_params); i++) |