From 26361862bdff9bc12c31e4f153e83422e21179b6 Mon Sep 17 00:00:00 2001 From: Werner Zeh Date: Wed, 21 Nov 2018 12:36:21 +0100 Subject: soc/intel/apollolake: Add Kconfig switch to enable minimum clock ratio Add a Kconfig switch to be able to set the CPU clock to the lowest possible ratio. If enabled the CPU will consume as little power as possible while providing the lowest performance. This setting can be overruled by the OS if it has an p-state driver which can adjust the clock to its need. Change-Id: I4a59586da72d1915749110a36f565fe2aa69e073 Signed-off-by: Werner Zeh Reviewed-on: https://review.coreboot.org/c/29772 Tested-by: build bot (Jenkins) Reviewed-by: Nico Huber --- src/soc/intel/apollolake/Kconfig | 12 ++++++++++++ src/soc/intel/apollolake/cpu.c | 3 +++ 2 files changed, 15 insertions(+) (limited to 'src') diff --git a/src/soc/intel/apollolake/Kconfig b/src/soc/intel/apollolake/Kconfig index 0c0fca9475..c9b17b047d 100644 --- a/src/soc/intel/apollolake/Kconfig +++ b/src/soc/intel/apollolake/Kconfig @@ -370,12 +370,24 @@ config CPU_BCLK_MHZ config APL_SKIP_SET_POWER_LIMITS bool + depends on !APL_SET_MIN_CLOCK_RATIO default n help Some Apollo Lake mainboards do not need the Running Average Power Limits (RAPL) algorithm for a constant power management. Set this config option to skip the RAPL configuration. +config APL_SET_MIN_CLOCK_RATIO + bool + depends on !APL_SKIP_SET_POWER_LIMITS + default n + help + If the power budget of the mainboard is limited, it can be useful to + limit the CPU power dissipation at the cost of performance by setting + the lowest possible CPU clock. Enable this option if you need smallest + possible CPU clock. This setting can be overruled by the OS if it has an + p-state driver which can adjust the clock to its need. + # M and N divisor values for clock frequency configuration. # These values get us a 1.836 MHz clock (ideally we want 1.843 MHz) config SOC_INTEL_COMMON_LPSS_UART_CLK_M_VAL diff --git a/src/soc/intel/apollolake/cpu.c b/src/soc/intel/apollolake/cpu.c index bf5beacbb1..bcec28e514 100644 --- a/src/soc/intel/apollolake/cpu.c +++ b/src/soc/intel/apollolake/cpu.c @@ -92,6 +92,9 @@ void soc_core_init(struct device *cpu) if (IS_ENABLED(CONFIG_APL_SKIP_SET_POWER_LIMITS)) { cpu_set_p_state_to_max_non_turbo_ratio(); cpu_disable_eist(); + } else if (IS_ENABLED(CONFIG_APL_SET_MIN_CLOCK_RATIO)) { + cpu_set_p_state_to_min_clock_ratio(); + cpu_disable_eist(); } } -- cgit v1.2.3