1# SPDX-License-Identifier: GPL-2.0-only 2menu "CPU Frequency scaling" 3 4config CPU_FREQ 5 bool "CPU Frequency scaling" 6 select SRCU 7 help 8 CPU Frequency scaling allows you to change the clock speed of 9 CPUs on the fly. This is a nice method to save power, because 10 the lower the CPU clock speed, the less power the CPU consumes. 11 12 Note that this driver doesn't automatically change the CPU 13 clock speed, you need to either enable a dynamic cpufreq governor 14 (see below) after boot, or use a userspace tool. 15 16 For details, take a look at <file:Documentation/cpu-freq>. 17 18 If in doubt, say N. 19 20if CPU_FREQ 21 22config CPU_FREQ_GOV_ATTR_SET 23 bool 24 25config CPU_FREQ_GOV_COMMON 26 select CPU_FREQ_GOV_ATTR_SET 27 select IRQ_WORK 28 bool 29 30config CPU_FREQ_STAT 31 bool "CPU frequency transition statistics" 32 help 33 Export CPU frequency statistics information through sysfs. 34 35 If in doubt, say N. 36 37choice 38 prompt "Default CPUFreq governor" 39 default CPU_FREQ_DEFAULT_GOV_USERSPACE if ARM_SA1100_CPUFREQ || ARM_SA1110_CPUFREQ 40 default CPU_FREQ_DEFAULT_GOV_SCHEDUTIL if ARM64 || ARM 41 default CPU_FREQ_DEFAULT_GOV_SCHEDUTIL if X86_INTEL_PSTATE && SMP 42 default CPU_FREQ_DEFAULT_GOV_PERFORMANCE 43 help 44 This option sets which CPUFreq governor shall be loaded at 45 startup. If in doubt, use the default setting. 46 47config CPU_FREQ_DEFAULT_GOV_PERFORMANCE 48 bool "performance" 49 select CPU_FREQ_GOV_PERFORMANCE 50 help 51 Use the CPUFreq governor 'performance' as default. This sets 52 the frequency statically to the highest frequency supported by 53 the CPU. 54 55config CPU_FREQ_DEFAULT_GOV_POWERSAVE 56 bool "powersave" 57 select CPU_FREQ_GOV_POWERSAVE 58 help 59 Use the CPUFreq governor 'powersave' as default. This sets 60 the frequency statically to the lowest frequency supported by 61 the CPU. 62 63config CPU_FREQ_DEFAULT_GOV_USERSPACE 64 bool "userspace" 65 select CPU_FREQ_GOV_USERSPACE 66 help 67 Use the CPUFreq governor 'userspace' as default. This allows 68 you to set the CPU frequency manually or when a userspace 69 program shall be able to set the CPU dynamically without having 70 to enable the userspace governor manually. 71 72config CPU_FREQ_DEFAULT_GOV_ONDEMAND 73 bool "ondemand" 74 depends on !(X86_INTEL_PSTATE && SMP) 75 select CPU_FREQ_GOV_ONDEMAND 76 select CPU_FREQ_GOV_PERFORMANCE 77 help 78 Use the CPUFreq governor 'ondemand' as default. This allows 79 you to get a full dynamic frequency capable system by simply 80 loading your cpufreq low-level hardware driver. 81 Be aware that not all cpufreq drivers support the ondemand 82 governor. If unsure have a look at the help section of the 83 driver. Fallback governor will be the performance governor. 84 85config CPU_FREQ_DEFAULT_GOV_CONSERVATIVE 86 bool "conservative" 87 depends on !(X86_INTEL_PSTATE && SMP) 88 select CPU_FREQ_GOV_CONSERVATIVE 89 select CPU_FREQ_GOV_PERFORMANCE 90 help 91 Use the CPUFreq governor 'conservative' as default. This allows 92 you to get a full dynamic frequency capable system by simply 93 loading your cpufreq low-level hardware driver. 94 Be aware that not all cpufreq drivers support the conservative 95 governor. If unsure have a look at the help section of the 96 driver. Fallback governor will be the performance governor. 97 98config CPU_FREQ_DEFAULT_GOV_SCHEDUTIL 99 bool "schedutil" 100 depends on SMP 101 select CPU_FREQ_GOV_SCHEDUTIL 102 select CPU_FREQ_GOV_PERFORMANCE 103 help 104 Use the 'schedutil' CPUFreq governor by default. If unsure, 105 have a look at the help section of that governor. The fallback 106 governor will be 'performance'. 107 108endchoice 109 110config CPU_FREQ_GOV_PERFORMANCE 111 tristate "'performance' governor" 112 help 113 This cpufreq governor sets the frequency statically to the 114 highest available CPU frequency. 115 116 To compile this driver as a module, choose M here: the 117 module will be called cpufreq_performance. 118 119 If in doubt, say Y. 120 121config CPU_FREQ_GOV_POWERSAVE 122 tristate "'powersave' governor" 123 help 124 This cpufreq governor sets the frequency statically to the 125 lowest available CPU frequency. 126 127 To compile this driver as a module, choose M here: the 128 module will be called cpufreq_powersave. 129 130 If in doubt, say Y. 131 132config CPU_FREQ_GOV_USERSPACE 133 tristate "'userspace' governor for userspace frequency scaling" 134 help 135 Enable this cpufreq governor when you either want to set the 136 CPU frequency manually or when a userspace program shall 137 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: the 141 module will be called cpufreq_userspace. 142 143 For details, take a look at <file:Documentation/cpu-freq/>. 144 145 If in doubt, say Y. 146 147config CPU_FREQ_GOV_ONDEMAND 148 tristate "'ondemand' cpufreq policy governor" 149 select CPU_FREQ_GOV_COMMON 150 help 151 'ondemand' - This driver adds a dynamic cpufreq policy governor. 152 The governor does a periodic polling and 153 changes frequency based on the CPU utilization. 154 The support for this governor depends on CPU capability to 155 do fast frequency switching (i.e, very low latency frequency 156 transitions). 157 158 To compile this driver as a module, choose M here: the 159 module will be called cpufreq_ondemand. 160 161 For details, take a look at linux/Documentation/cpu-freq. 162 163 If in doubt, say N. 164 165config CPU_FREQ_GOV_CONSERVATIVE 166 tristate "'conservative' cpufreq governor" 167 depends on CPU_FREQ 168 select CPU_FREQ_GOV_COMMON 169 help 170 'conservative' - this driver is rather similar to the 'ondemand' 171 governor both in its source code and its purpose, the difference is 172 its optimisation for better suitability in a battery powered 173 environment. The frequency is gracefully increased and decreased 174 rather than jumping to 100% when speed is required. 175 176 If you have a desktop machine then you should really be considering 177 the 'ondemand' governor instead, however if you are using a laptop, 178 PDA or even an AMD64 based computer (due to the unacceptable 179 step-by-step latency issues between the minimum and maximum frequency 180 transitions in the CPU) you will probably want to use this governor. 181 182 To compile this driver as a module, choose M here: the 183 module will be called cpufreq_conservative. 184 185 For details, take a look at linux/Documentation/cpu-freq. 186 187 If in doubt, say N. 188 189config CPU_FREQ_GOV_SCHEDUTIL 190 bool "'schedutil' cpufreq policy governor" 191 depends on CPU_FREQ && SMP 192 select CPU_FREQ_GOV_ATTR_SET 193 select IRQ_WORK 194 help 195 This governor makes decisions based on the utilization data provided 196 by the scheduler. It sets the CPU frequency to be proportional to 197 the utilization/capacity ratio coming from the scheduler. If the 198 utilization is frequency-invariant, the new frequency is also 199 proportional to the maximum available frequency. If that is not the 200 case, it is proportional to the current frequency of the CPU. The 201 frequency tipping point is at utilization/capacity equal to 80% in 202 both cases. 203 204 If in doubt, say N. 205 206comment "CPU frequency scaling drivers" 207 208config CPUFREQ_DT 209 tristate "Generic DT based cpufreq driver" 210 depends on HAVE_CLK && OF 211 select CPUFREQ_DT_PLATDEV 212 select PM_OPP 213 help 214 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_PLATDEV 221 bool 222 help 223 This adds a generic DT based cpufreq platdev driver for frequency 224 management. This creates a 'cpufreq-dt' platform device, on the 225 supported platforms. 226 227 If in doubt, say N. 228 229if X86 230source "drivers/cpufreq/Kconfig.x86" 231endif 232 233if ARM || ARM64 234source "drivers/cpufreq/Kconfig.arm" 235endif 236 237if PPC32 || PPC64 238source "drivers/cpufreq/Kconfig.powerpc" 239endif 240 241if IA64 242config IA64_ACPI_CPUFREQ 243 tristate "ACPI Processor P-States driver" 244 depends on ACPI_PROCESSOR 245 help 246 This driver adds a CPUFreq driver which utilizes the ACPI 247 Processor Performance States. 248 249 For details, take a look at <file:Documentation/cpu-freq/>. 250 251 If in doubt, say N. 252endif 253 254if MIPS 255config BMIPS_CPUFREQ 256 tristate "BMIPS CPUfreq Driver" 257 help 258 This option adds a CPUfreq driver for BMIPS processors with 259 support for configurable CPU frequency. 260 261 For now, BMIPS5 chips are supported (such as the Broadcom 7425). 262 263 If in doubt, say N. 264 265config LOONGSON2_CPUFREQ 266 tristate "Loongson2 CPUFreq Driver" 267 depends on LEMOTE_MACH2F 268 help 269 This option adds a CPUFreq driver for loongson processors which 270 support software configurable cpu frequency. 271 272 Loongson2F and it's successors support this feature. 273 274 For details, take a look at <file:Documentation/cpu-freq/>. 275 276 If in doubt, say N. 277 278config LOONGSON1_CPUFREQ 279 tristate "Loongson1 CPUFreq Driver" 280 depends on LOONGSON1_LS1B 281 help 282 This option adds a CPUFreq driver for loongson1 processors which 283 support software configurable cpu frequency. 284 285 For details, take a look at <file:Documentation/cpu-freq/>. 286 287 If in doubt, say N. 288endif 289 290if SPARC64 291config SPARC_US3_CPUFREQ 292 tristate "UltraSPARC-III CPU Frequency driver" 293 help 294 This adds the CPUFreq driver for UltraSPARC-III processors. 295 296 For details, take a look at <file:Documentation/cpu-freq>. 297 298 If in doubt, say N. 299 300config SPARC_US2E_CPUFREQ 301 tristate "UltraSPARC-IIe CPU Frequency driver" 302 help 303 This adds the CPUFreq driver for UltraSPARC-IIe processors. 304 305 For details, take a look at <file:Documentation/cpu-freq>. 306 307 If in doubt, say N. 308endif 309 310if SUPERH 311config SH_CPU_FREQ 312 tristate "SuperH CPU Frequency driver" 313 help 314 This adds the cpufreq driver for SuperH. Any CPU that supports 315 clock rate rounding through the clock framework can use this 316 driver. While it will make the kernel slightly larger, this is 317 harmless for CPUs that don't support rate rounding. The driver 318 will also generate a notice in the boot log before disabling 319 itself if the CPU in question is not capable of rate rounding. 320 321 For details, take a look at <file:Documentation/cpu-freq>. 322 323 If unsure, say N. 324endif 325 326config QORIQ_CPUFREQ 327 tristate "CPU frequency scaling driver for Freescale QorIQ SoCs" 328 depends on OF && COMMON_CLK 329 depends on PPC_E500MC || SOC_LS1021A || ARCH_LAYERSCAPE || COMPILE_TEST 330 select CLK_QORIQ 331 help 332 This adds the CPUFreq driver support for Freescale QorIQ SoCs 333 which are capable of changing the CPU's frequency dynamically. 334 335endif 336endmenu 337