soc/intel/meteorlake: Add Acoustic Noise Mitigation UPDs
This patch allows to override acoustic noise mitigation FSP UPDs: - AcousticNoiseMitigation - FastPkgCRampDisable - SlowSlewRate BUG=b:312405633 TEST=Able to override the acoustic noise UPDs. Change-Id: I5295e6571121c92f363e6fd4bcb3c8335c4fedee Signed-off-by: Subrata Banik <subratabanik@google.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/79302 Reviewed-by: YH Lin <yueherngl@google.com> Reviewed-by: Eric Lai <ericllai@google.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Kapil Porwal <kapilporwal@google.com>
This commit is contained in:
parent
93902072e5
commit
26fdb062a7
|
@ -129,6 +129,22 @@ enum vr_domain {
|
|||
NUM_VR_DOMAINS
|
||||
};
|
||||
|
||||
/*
|
||||
* 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,
|
||||
SLEW_IGNORE = 0xff,
|
||||
};
|
||||
|
||||
struct soc_intel_meteorlake_config {
|
||||
|
||||
/* Common struct containing soc config data required by common code */
|
||||
|
@ -499,6 +515,16 @@ struct soc_intel_meteorlake_config {
|
|||
|
||||
/* Platform Power Pmax in Watts. Zero means automatic. */
|
||||
uint16_t psys_pmax_watts;
|
||||
|
||||
/* Enable or Disable Acoustic Noise Mitigation feature */
|
||||
uint8_t enable_acoustic_noise_mitigation;
|
||||
/* Disable Fast Slew Rate for Deep Package C States for VR domains */
|
||||
uint8_t disable_fast_pkgc_ramp[NUM_VR_DOMAINS];
|
||||
/*
|
||||
* Slew Rate configuration for Deep Package C States for VR domains
|
||||
* as per `enum slew_rate` data type.
|
||||
*/
|
||||
uint8_t slow_slew_rate_config[NUM_VR_DOMAINS];
|
||||
};
|
||||
|
||||
typedef struct soc_intel_meteorlake_config config_t;
|
||||
|
|
|
@ -395,6 +395,20 @@ static void fill_fspm_ibecc_params(FSP_M_CONFIG *m_cfg,
|
|||
}
|
||||
}
|
||||
|
||||
static void fill_fsps_acoustic_params(FSP_M_CONFIG *m_cfg,
|
||||
const struct soc_intel_meteorlake_config *config)
|
||||
{
|
||||
if (!config->enable_acoustic_noise_mitigation)
|
||||
return;
|
||||
|
||||
m_cfg->AcousticNoiseMitigation = config->enable_acoustic_noise_mitigation;
|
||||
|
||||
for (int i = 0; i < NUM_VR_DOMAINS; i++) {
|
||||
m_cfg->FastPkgCRampDisable[i] = config->disable_fast_pkgc_ramp[i];
|
||||
m_cfg->SlowSlewRate[i] = config->slow_slew_rate_config[i];
|
||||
}
|
||||
}
|
||||
|
||||
static void soc_memory_init_params(FSP_M_CONFIG *m_cfg,
|
||||
const struct soc_intel_meteorlake_config *config)
|
||||
{
|
||||
|
@ -418,6 +432,7 @@ static void soc_memory_init_params(FSP_M_CONFIG *m_cfg,
|
|||
fill_fspm_trace_params,
|
||||
fill_fspm_vr_config_params,
|
||||
fill_fspm_ibecc_params,
|
||||
fill_fsps_acoustic_params,
|
||||
};
|
||||
|
||||
for (size_t i = 0; i < ARRAY_SIZE(fill_fspm_params); i++)
|
||||
|
|
Loading…
Reference in New Issue