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:
@ -129,6 +129,22 @@ enum vr_domain {
|
|||||||
NUM_VR_DOMAINS
|
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 {
|
struct soc_intel_meteorlake_config {
|
||||||
|
|
||||||
/* Common struct containing soc config data required by common code */
|
/* 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. */
|
/* Platform Power Pmax in Watts. Zero means automatic. */
|
||||||
uint16_t psys_pmax_watts;
|
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;
|
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,
|
static void soc_memory_init_params(FSP_M_CONFIG *m_cfg,
|
||||||
const struct soc_intel_meteorlake_config *config)
|
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_trace_params,
|
||||||
fill_fspm_vr_config_params,
|
fill_fspm_vr_config_params,
|
||||||
fill_fspm_ibecc_params,
|
fill_fspm_ibecc_params,
|
||||||
|
fill_fsps_acoustic_params,
|
||||||
};
|
};
|
||||||
|
|
||||||
for (size_t i = 0; i < ARRAY_SIZE(fill_fspm_params); i++)
|
for (size_t i = 0; i < ARRAY_SIZE(fill_fspm_params); i++)
|
||||||
|
Reference in New Issue
Block a user