soc/intel/cannonlake: Add chip config to override CPU flex ratio
This patch provides options to override descriptor default CPU flex ratio from coreboot code. cpu_ratio_override to provide the required CPU ratio. Note: Don't override the flex ratio if cpu_ratio is 0. BUG=b:142264107 TEST=Without override flex_ratio is 0 and verified booting to OS after overriding with flex_ratio value 5. Change-Id: Ib01650f52f3d402f669e7e7f5b28a648b86f08ec Signed-off-by: Subrata Banik <subrata.banik@intel.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/36864 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Tim Wawrzynczak <twawrzynczak@chromium.org>
This commit is contained in:
parent
433acc2d3d
commit
e1470ea6a3
|
@ -424,6 +424,19 @@ struct soc_intel_cannonlake_config {
|
||||||
* Bit 0: MISCCFG_GPDLCGEN
|
* Bit 0: MISCCFG_GPDLCGEN
|
||||||
*/
|
*/
|
||||||
uint8_t gpio_pm[TOTAL_GPIO_COMM];
|
uint8_t gpio_pm[TOTAL_GPIO_COMM];
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Override CPU flex ratio value:
|
||||||
|
* CPU ratio value controls the maximum processor non-turbo ratio.
|
||||||
|
* Valid Range 0 to 63.
|
||||||
|
*
|
||||||
|
* In general descriptor provides option to set default cpu flex ratio.
|
||||||
|
* Default cpu flex ratio is 0 ensures booting with non-turbo max frequency.
|
||||||
|
* Thats the reason FSP skips cpu_ratio override if cpu_ratio is 0.
|
||||||
|
*
|
||||||
|
* Only override CPU flex ratio if don't want to boot with non-turbo max.
|
||||||
|
*/
|
||||||
|
uint8_t cpu_ratio_override;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct soc_intel_cannonlake_config config_t;
|
typedef struct soc_intel_cannonlake_config config_t;
|
||||||
|
|
|
@ -74,10 +74,14 @@ static void soc_memory_init_params(FSP_M_CONFIG *m_cfg, const config_t *config)
|
||||||
m_cfg->SkipMpInit = !CONFIG_USE_INTEL_FSP_MP_INIT;
|
m_cfg->SkipMpInit = !CONFIG_USE_INTEL_FSP_MP_INIT;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Set CpuRatio to match existing MSR value */
|
if (config->cpu_ratio_override) {
|
||||||
msr_t flex_ratio;
|
m_cfg->CpuRatio = config->cpu_ratio_override;
|
||||||
flex_ratio = rdmsr(MSR_FLEX_RATIO);
|
} else {
|
||||||
m_cfg->CpuRatio = (flex_ratio.lo >> 8) & 0xff;
|
/* Set CpuRatio to match existing MSR value */
|
||||||
|
msr_t flex_ratio;
|
||||||
|
flex_ratio = rdmsr(MSR_FLEX_RATIO);
|
||||||
|
m_cfg->CpuRatio = (flex_ratio.lo >> 8) & 0xff;
|
||||||
|
}
|
||||||
|
|
||||||
/* If ISH is enabled, enable ISH elements */
|
/* If ISH is enabled, enable ISH elements */
|
||||||
if (!dev)
|
if (!dev)
|
||||||
|
|
Loading…
Reference in New Issue