345 lines · plain
1# SPDX-License-Identifier: GPL-2.0-only2menu "CPU Frequency scaling"3 4config CPU_FREQ5 bool "CPU Frequency scaling"6 help7 CPU Frequency scaling allows you to change the clock speed of 8 CPUs on the fly. This is a nice method to save power, because 9 the lower the CPU clock speed, the less power the CPU consumes.10 11 Note that this driver doesn't automatically change the CPU12 clock speed, you need to either enable a dynamic cpufreq governor13 (see below) after boot, or use a userspace tool.14 15 For details, take a look at16 <file:Documentation/admin-guide/pm/cpufreq.rst>.17 18 If in doubt, say N.19 20if CPU_FREQ21 22config CPU_FREQ_GOV_ATTR_SET23 bool24 25config CPU_FREQ_GOV_COMMON26 select CPU_FREQ_GOV_ATTR_SET27 select IRQ_WORK28 bool29 30config CPU_FREQ_STAT31 bool "CPU frequency transition statistics"32 help33 Export CPU frequency statistics information through sysfs.34 35 If in doubt, say N.36 37choice38 prompt "Default CPUFreq governor"39 default CPU_FREQ_DEFAULT_GOV_USERSPACE if ARM_SA1110_CPUFREQ40 default CPU_FREQ_DEFAULT_GOV_SCHEDUTIL if ARM64 || ARM41 default CPU_FREQ_DEFAULT_GOV_SCHEDUTIL if (X86_INTEL_PSTATE || X86_AMD_PSTATE) && SMP42 default CPU_FREQ_DEFAULT_GOV_PERFORMANCE43 help44 This option sets which CPUFreq governor shall be loaded at45 startup. If in doubt, use the default setting.46 47config CPU_FREQ_DEFAULT_GOV_PERFORMANCE48 bool "performance"49 select CPU_FREQ_GOV_PERFORMANCE50 help51 Use the CPUFreq governor 'performance' as default. This sets52 the frequency statically to the highest frequency supported by53 the CPU.54 55config CPU_FREQ_DEFAULT_GOV_POWERSAVE56 bool "powersave"57 select CPU_FREQ_GOV_POWERSAVE58 help59 Use the CPUFreq governor 'powersave' as default. This sets60 the frequency statically to the lowest frequency supported by61 the CPU.62 63config CPU_FREQ_DEFAULT_GOV_USERSPACE64 bool "userspace"65 select CPU_FREQ_GOV_USERSPACE66 help67 Use the CPUFreq governor 'userspace' as default. This allows68 you to set the CPU frequency manually or when a userspace 69 program shall be able to set the CPU dynamically without having70 to enable the userspace governor manually.71 72config CPU_FREQ_DEFAULT_GOV_ONDEMAND73 bool "ondemand"74 depends on !(X86_INTEL_PSTATE && SMP)75 select CPU_FREQ_GOV_ONDEMAND76 select CPU_FREQ_GOV_PERFORMANCE77 help78 Use the CPUFreq governor 'ondemand' as default. This allows79 you to get a full dynamic frequency capable system by simply80 loading your cpufreq low-level hardware driver.81 Be aware that not all cpufreq drivers support the ondemand82 governor. If unsure have a look at the help section of the83 driver. Fallback governor will be the performance governor.84 85config CPU_FREQ_DEFAULT_GOV_CONSERVATIVE86 bool "conservative"87 depends on !(X86_INTEL_PSTATE && SMP)88 select CPU_FREQ_GOV_CONSERVATIVE89 select CPU_FREQ_GOV_PERFORMANCE90 help91 Use the CPUFreq governor 'conservative' as default. This allows92 you to get a full dynamic frequency capable system by simply93 loading your cpufreq low-level hardware driver.94 Be aware that not all cpufreq drivers support the conservative95 governor. If unsure have a look at the help section of the96 driver. Fallback governor will be the performance governor.97 98config CPU_FREQ_DEFAULT_GOV_SCHEDUTIL99 bool "schedutil"100 depends on SMP101 select CPU_FREQ_GOV_SCHEDUTIL102 select CPU_FREQ_GOV_PERFORMANCE103 help104 Use the 'schedutil' CPUFreq governor by default. If unsure,105 have a look at the help section of that governor. The fallback106 governor will be 'performance'.107 108endchoice109 110config CPU_FREQ_GOV_PERFORMANCE111 tristate "'performance' governor"112 help113 This cpufreq governor sets the frequency statically to the114 highest available CPU frequency.115 116 To compile this driver as a module, choose M here: the117 module will be called cpufreq_performance.118 119 If in doubt, say Y.120 121config CPU_FREQ_GOV_POWERSAVE122 tristate "'powersave' governor"123 help124 This cpufreq governor sets the frequency statically to the125 lowest available CPU frequency.126 127 To compile this driver as a module, choose M here: the128 module will be called cpufreq_powersave.129 130 If in doubt, say Y.131 132config CPU_FREQ_GOV_USERSPACE133 tristate "'userspace' governor for userspace frequency scaling"134 help135 Enable this cpufreq governor when you either want to set the136 CPU frequency manually or when a userspace program shall137 be able to set the CPU dynamically, like on LART 138 <http://www.lartmaker.nl/>.139 140 To compile this driver as a module, choose M here: the141 module will be called cpufreq_userspace.142 143 If in doubt, say Y.144 145config CPU_FREQ_GOV_ONDEMAND146 tristate "'ondemand' cpufreq policy governor"147 select CPU_FREQ_GOV_COMMON148 help149 'ondemand' - This driver adds a dynamic cpufreq policy governor.150 The governor does a periodic polling and 151 changes frequency based on the CPU utilization.152 The support for this governor depends on CPU capability to153 do fast frequency switching (i.e, very low latency frequency154 transitions). 155 156 To compile this driver as a module, choose M here: the157 module will be called cpufreq_ondemand.158 159 For details, take a look at160 <file:Documentation/admin-guide/pm/cpufreq.rst>.161 162 If in doubt, say N.163 164config CPU_FREQ_GOV_CONSERVATIVE165 tristate "'conservative' cpufreq governor"166 depends on CPU_FREQ167 select CPU_FREQ_GOV_COMMON168 help169 'conservative' - this driver is rather similar to the 'ondemand'170 governor both in its source code and its purpose, the difference is171 its optimisation for better suitability in a battery powered172 environment. The frequency is gracefully increased and decreased173 rather than jumping to 100% when speed is required.174 175 If you have a desktop machine then you should really be considering176 the 'ondemand' governor instead, however if you are using a laptop,177 PDA or even an AMD64 based computer (due to the unacceptable178 step-by-step latency issues between the minimum and maximum frequency179 transitions in the CPU) you will probably want to use this governor.180 181 To compile this driver as a module, choose M here: the182 module will be called cpufreq_conservative.183 184 For details, take a look at185 <file:Documentation/admin-guide/pm/cpufreq.rst>.186 187 If in doubt, say N.188 189config CPU_FREQ_GOV_SCHEDUTIL190 bool "'schedutil' cpufreq policy governor"191 depends on CPU_FREQ && SMP192 select CPU_FREQ_GOV_ATTR_SET193 select IRQ_WORK194 help195 This governor makes decisions based on the utilization data provided196 by the scheduler. It sets the CPU frequency to be proportional to197 the utilization/capacity ratio coming from the scheduler. If the198 utilization is frequency-invariant, the new frequency is also199 proportional to the maximum available frequency. If that is not the200 case, it is proportional to the current frequency of the CPU. The201 frequency tipping point is at utilization/capacity equal to 80% in202 both cases.203 204 If in doubt, say N.205 206comment "CPU frequency scaling drivers"207 208config CPUFREQ_DT209 tristate "Generic DT based cpufreq driver"210 depends on HAVE_CLK && OF211 select CPUFREQ_DT_PLATDEV212 select PM_OPP213 help214 This adds a generic DT based cpufreq driver for frequency management.215 It supports both uniprocessor (UP) and symmetric multiprocessor (SMP)216 systems.217 218 If in doubt, say N.219 220config CPUFREQ_DT_PLATDEV221 tristate "Generic DT based cpufreq platdev driver"222 depends on OF223 help224 This adds a generic DT based cpufreq platdev driver for frequency225 management. This creates a 'cpufreq-dt' platform device, on the226 supported platforms.227 228 If in doubt, say N.229 230if X86231source "drivers/cpufreq/Kconfig.x86"232endif233 234source "drivers/cpufreq/Kconfig.arm"235 236if PPC32 || PPC64237source "drivers/cpufreq/Kconfig.powerpc"238endif239 240if MIPS241config BMIPS_CPUFREQ242 tristate "BMIPS CPUfreq Driver"243 help244 This option adds a CPUfreq driver for BMIPS processors with245 support for configurable CPU frequency.246 247 For now, BMIPS5 chips are supported (such as the Broadcom 7425).248 249 If in doubt, say N.250 251config LOONGSON2_CPUFREQ252 tristate "Loongson2 CPUFreq Driver"253 depends on LEMOTE_MACH2F254 help255 This option adds a CPUFreq driver for loongson processors which256 support software configurable cpu frequency.257 258 Loongson2F and its successors support this feature.259 260 If in doubt, say N.261endif262 263if LOONGARCH264config LOONGSON3_CPUFREQ265 tristate "Loongson3 CPUFreq Driver"266 help267 This option adds a CPUFreq driver for Loongson processors which268 support software configurable cpu frequency.269 270 Loongson-3 family processors support this feature.271 272 If in doubt, say N.273endif274 275if SPARC64276config SPARC_US3_CPUFREQ277 tristate "UltraSPARC-III CPU Frequency driver"278 help279 This adds the CPUFreq driver for UltraSPARC-III processors.280 281 If in doubt, say N.282 283config SPARC_US2E_CPUFREQ284 tristate "UltraSPARC-IIe CPU Frequency driver"285 help286 This adds the CPUFreq driver for UltraSPARC-IIe processors.287 288 If in doubt, say N.289endif290 291if SUPERH292config SH_CPU_FREQ293 tristate "SuperH CPU Frequency driver"294 help295 This adds the cpufreq driver for SuperH. Any CPU that supports296 clock rate rounding through the clock framework can use this297 driver. While it will make the kernel slightly larger, this is298 harmless for CPUs that don't support rate rounding. The driver299 will also generate a notice in the boot log before disabling300 itself if the CPU in question is not capable of rate rounding.301 302 If unsure, say N.303endif304 305config QORIQ_CPUFREQ306 tristate "CPU frequency scaling driver for Freescale QorIQ SoCs"307 depends on OF && COMMON_CLK308 depends on PPC_E500MC || SOC_LS1021A || ARCH_LAYERSCAPE || COMPILE_TEST309 select CLK_QORIQ310 help311 This adds the CPUFreq driver support for Freescale QorIQ SoCs312 which are capable of changing the CPU's frequency dynamically.313 314endif315 316config ACPI_CPPC_CPUFREQ317 tristate "CPUFreq driver based on the ACPI CPPC spec"318 depends on ACPI_PROCESSOR319 depends on ARM || ARM64 || RISCV320 select ACPI_CPPC_LIB321 help322 This adds a CPUFreq driver which uses CPPC methods323 as described in the ACPIv5.1 spec. CPPC stands for324 Collaborative Processor Performance Controls. It325 is based on an abstract continuous scale of CPU326 performance values which allows the remote power327 processor to flexibly optimize for power and328 performance. CPPC relies on power management firmware329 support for its operation.330 331 If in doubt, say N.332 333config ACPI_CPPC_CPUFREQ_FIE334 bool "Frequency Invariance support for CPPC cpufreq driver"335 depends on ACPI_CPPC_CPUFREQ && GENERIC_ARCH_TOPOLOGY336 depends on ARM || ARM64 || RISCV337 default y338 help339 This extends frequency invariance support in the CPPC cpufreq driver,340 by using CPPC delivered and reference performance counters.341 342 If in doubt, say N.343 344endmenu345