soc/intel: Add Kconfigs to define scaling factor for cores

The patch adds Kconfigs to define scaling factor for Efficient and
Performance cores instead of using hard coded values in the soc code.
Also, the patches uses the Kconfigs directly to calculate the core's
nominal performance. So, we don't need to implement soc function
soc_get_scaling_factor() to get the scaling factor data for different
core types. Hence, soc_get_scaling_factor() function is removed.

TEST=Build the code for Gimble and Rex. Also, I have verified that
build system logs error when the Kconfigs are undefined.

Signed-off-by: Sridhar Siricilla <sridhar.siricilla@intel.com>
Change-Id: I55e4d815116ef40c5f33be64ab495e942bf35ee8
Reviewed-on: https://review.coreboot.org/c/coreboot/+/71687
Reviewed-by: Subrata Banik <subratabanik@google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
Sridhar Siricilla 2023-01-05 17:08:17 +05:30 committed by Lean Sheng Tan
parent 166c75c778
commit d9c82695f5
6 changed files with 25 additions and 19 deletions

View File

@ -291,6 +291,14 @@ config CPU_BCLK_MHZ
int int
default 100 default 100
config SOC_INTEL_PERFORMANCE_CORE_SCALE_FACTOR
int
default 127
config SOC_INTEL_EFFICIENT_CORE_SCALE_FACTOR
int
default 100
config SOC_INTEL_COMMON_BLOCK_GSPI_CLOCK_MHZ config SOC_INTEL_COMMON_BLOCK_GSPI_CLOCK_MHZ
int int
default 120 default 120

View File

@ -99,12 +99,6 @@ enum core_type get_soc_cpu_type(void)
return CPUID_CORE_TYPE_INTEL_CORE; return CPUID_CORE_TYPE_INTEL_CORE;
} }
void soc_get_scaling_factor(u16 *perf_core_scal_factor, u16 *eff_core_scal_factor)
{
*perf_core_scal_factor = 127;
*eff_core_scal_factor = 100;
}
bool soc_is_nominal_freq_supported(void) bool soc_is_nominal_freq_supported(void)
{ {
return true; return true;

View File

@ -72,14 +72,19 @@ static void run_set_cpu_type(void *unused)
static void acpi_get_cpu_nomi_perf(u16 *eff_core_nom_perf, u16 *perf_core_nom_perf) static void acpi_get_cpu_nomi_perf(u16 *eff_core_nom_perf, u16 *perf_core_nom_perf)
{ {
u16 perf_core_scal_factor, eff_core_scal_factor;
u8 max_non_turbo_ratio = cpu_get_max_non_turbo_ratio(); u8 max_non_turbo_ratio = cpu_get_max_non_turbo_ratio();
soc_get_scaling_factor(&perf_core_scal_factor, &eff_core_scal_factor); _Static_assert(CONFIG_SOC_INTEL_PERFORMANCE_CORE_SCALE_FACTOR != 0,
"CONFIG_SOC_INTEL_PERFORMANCE_CORE_SCALE_FACTOR must not be zero");
*perf_core_nom_perf = (u16)((max_non_turbo_ratio * perf_core_scal_factor) / 100); _Static_assert(CONFIG_SOC_INTEL_EFFICIENT_CORE_SCALE_FACTOR != 0,
"CONFIG_SOC_INTEL_EFFICIENT_CORE_SCALE_FACTOR must not be zero");
*eff_core_nom_perf = (u16)((max_non_turbo_ratio * eff_core_scal_factor) / 100); *perf_core_nom_perf = (u16)((max_non_turbo_ratio *
CONFIG_SOC_INTEL_PERFORMANCE_CORE_SCALE_FACTOR) / 100);
*eff_core_nom_perf = (u16)((max_non_turbo_ratio *
CONFIG_SOC_INTEL_EFFICIENT_CORE_SCALE_FACTOR) / 100);
} }
static u16 acpi_get_cpu_nominal_freq(void) static u16 acpi_get_cpu_nominal_freq(void)

View File

@ -18,9 +18,6 @@ enum core_type {
CPUID_UNKNOWN = 0xff, CPUID_UNKNOWN = 0xff,
}; };
/* Gets the scaling factor for Efficient and Performance core */
void soc_get_scaling_factor(u16 *perf_core_scal_factor, u16 *eff_core_scal_factor);
/* Generates ACPI code to define _CPC control method */ /* Generates ACPI code to define _CPC control method */
void acpigen_write_CPPC_hybrid_method(int core_id); void acpigen_write_CPPC_hybrid_method(int core_id);

View File

@ -211,6 +211,14 @@ config PCR_BASE_ADDRESS
config ECAM_MMCONF_BASE_ADDRESS config ECAM_MMCONF_BASE_ADDRESS
default 0xc0000000 default 0xc0000000
config SOC_INTEL_PERFORMANCE_CORE_SCALE_FACTOR
int
default 125
config SOC_INTEL_EFFICIENT_CORE_SCALE_FACTOR
int
default 100
config CPU_BCLK_MHZ config CPU_BCLK_MHZ
int int
default 100 default 100

View File

@ -87,12 +87,6 @@ enum core_type get_soc_cpu_type(void)
return CPUID_CORE_TYPE_INTEL_CORE; return CPUID_CORE_TYPE_INTEL_CORE;
} }
void soc_get_scaling_factor(u16 *perf_core_scal_factor, u16 *eff_core_scal_factor)
{
*perf_core_scal_factor = 125;
*eff_core_scal_factor = 100;
}
bool soc_is_nominal_freq_supported(void) bool soc_is_nominal_freq_supported(void)
{ {
return true; return true;