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 BIG_LITTLE 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 select CPU_FREQ_GOV_ONDEMAND 75 select CPU_FREQ_GOV_PERFORMANCE 76 help 77 Use the CPUFreq governor 'ondemand' as default. This allows 78 you to get a full dynamic frequency capable system by simply 79 loading your cpufreq low-level hardware driver. 80 Be aware that not all cpufreq drivers support the ondemand 81 governor. If unsure have a look at the help section of the 82 driver. Fallback governor will be the performance governor. 83 84config CPU_FREQ_DEFAULT_GOV_CONSERVATIVE 85 bool "conservative" 86 select CPU_FREQ_GOV_CONSERVATIVE 87 select CPU_FREQ_GOV_PERFORMANCE 88 help 89 Use the CPUFreq governor 'conservative' as default. This allows 90 you to get a full dynamic frequency capable system by simply 91 loading your cpufreq low-level hardware driver. 92 Be aware that not all cpufreq drivers support the conservative 93 governor. If unsure have a look at the help section of the 94 driver. Fallback governor will be the performance governor. 95 96config CPU_FREQ_DEFAULT_GOV_SCHEDUTIL 97 bool "schedutil" 98 depends on SMP 99 select CPU_FREQ_GOV_SCHEDUTIL 100 select CPU_FREQ_GOV_PERFORMANCE 101 help 102 Use the 'schedutil' CPUFreq governor by default. If unsure, 103 have a look at the help section of that governor. The fallback 104 governor will be 'performance'. 105 106endchoice 107 108config CPU_FREQ_GOV_PERFORMANCE 109 tristate "'performance' governor" 110 help 111 This cpufreq governor sets the frequency statically to the 112 highest available CPU frequency. 113 114 To compile this driver as a module, choose M here: the 115 module will be called cpufreq_performance. 116 117 If in doubt, say Y. 118 119config CPU_FREQ_GOV_POWERSAVE 120 tristate "'powersave' governor" 121 help 122 This cpufreq governor sets the frequency statically to the 123 lowest available CPU frequency. 124 125 To compile this driver as a module, choose M here: the 126 module will be called cpufreq_powersave. 127 128 If in doubt, say Y. 129 130config CPU_FREQ_GOV_USERSPACE 131 tristate "'userspace' governor for userspace frequency scaling" 132 help 133 Enable this cpufreq governor when you either want to set the 134 CPU frequency manually or when a userspace program shall 135 be able to set the CPU dynamically, like on LART 136 <http://www.lartmaker.nl/>. 137 138 To compile this driver as a module, choose M here: the 139 module will be called cpufreq_userspace. 140 141 For details, take a look at <file:Documentation/cpu-freq/>. 142 143 If in doubt, say Y. 144 145config CPU_FREQ_GOV_ONDEMAND 146 tristate "'ondemand' cpufreq policy governor" 147 select CPU_FREQ_GOV_COMMON 148 help 149 '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 to 153 do fast frequency switching (i.e, very low latency frequency 154 transitions). 155 156 To compile this driver as a module, choose M here: the 157 module will be called cpufreq_ondemand. 158 159 For details, take a look at linux/Documentation/cpu-freq. 160 161 If in doubt, say N. 162 163config CPU_FREQ_GOV_CONSERVATIVE 164 tristate "'conservative' cpufreq governor" 165 depends on CPU_FREQ 166 select CPU_FREQ_GOV_COMMON 167 help 168 'conservative' - this driver is rather similar to the 'ondemand' 169 governor both in its source code and its purpose, the difference is 170 its optimisation for better suitability in a battery powered 171 environment. The frequency is gracefully increased and decreased 172 rather than jumping to 100% when speed is required. 173 174 If you have a desktop machine then you should really be considering 175 the 'ondemand' governor instead, however if you are using a laptop, 176 PDA or even an AMD64 based computer (due to the unacceptable 177 step-by-step latency issues between the minimum and maximum frequency 178 transitions in the CPU) you will probably want to use this governor. 179 180 To compile this driver as a module, choose M here: the 181 module will be called cpufreq_conservative. 182 183 For details, take a look at linux/Documentation/cpu-freq. 184 185 If in doubt, say N. 186 187config CPU_FREQ_GOV_SCHEDUTIL 188 bool "'schedutil' cpufreq policy governor" 189 depends on CPU_FREQ && SMP 190 select CPU_FREQ_GOV_ATTR_SET 191 select IRQ_WORK 192 help 193 This governor makes decisions based on the utilization data provided 194 by the scheduler. It sets the CPU frequency to be proportional to 195 the utilization/capacity ratio coming from the scheduler. If the 196 utilization is frequency-invariant, the new frequency is also 197 proportional to the maximum available frequency. If that is not the 198 case, it is proportional to the current frequency of the CPU. The 199 frequency tipping point is at utilization/capacity equal to 80% in 200 both cases. 201 202 If in doubt, say N. 203 204comment "CPU frequency scaling drivers" 205 206config CPUFREQ_DT 207 tristate "Generic DT based cpufreq driver" 208 depends on HAVE_CLK && OF 209 select CPUFREQ_DT_PLATDEV 210 select PM_OPP 211 help 212 This adds a generic DT based cpufreq driver for frequency management. 213 It supports both uniprocessor (UP) and symmetric multiprocessor (SMP) 214 systems. 215 216 If in doubt, say N. 217 218config CPUFREQ_DT_PLATDEV 219 bool 220 help 221 This adds a generic DT based cpufreq platdev driver for frequency 222 management. This creates a 'cpufreq-dt' platform device, on the 223 supported platforms. 224 225 If in doubt, say N. 226 227if X86 228source "drivers/cpufreq/Kconfig.x86" 229endif 230 231if ARM || ARM64 232source "drivers/cpufreq/Kconfig.arm" 233endif 234 235if PPC32 || PPC64 236source "drivers/cpufreq/Kconfig.powerpc" 237endif 238 239if IA64 240config IA64_ACPI_CPUFREQ 241 tristate "ACPI Processor P-States driver" 242 depends on ACPI_PROCESSOR 243 help 244 This driver adds a CPUFreq driver which utilizes the ACPI 245 Processor Performance States. 246 247 For details, take a look at <file:Documentation/cpu-freq/>. 248 249 If in doubt, say N. 250endif 251 252if MIPS 253config BMIPS_CPUFREQ 254 tristate "BMIPS CPUfreq Driver" 255 help 256 This option adds a CPUfreq driver for BMIPS processors with 257 support for configurable CPU frequency. 258 259 For now, BMIPS5 chips are supported (such as the Broadcom 7425). 260 261 If in doubt, say N. 262 263config LOONGSON2_CPUFREQ 264 tristate "Loongson2 CPUFreq Driver" 265 depends on LEMOTE_MACH2F 266 help 267 This option adds a CPUFreq driver for loongson processors which 268 support software configurable cpu frequency. 269 270 Loongson2F and it's successors support this feature. 271 272 For details, take a look at <file:Documentation/cpu-freq/>. 273 274 If in doubt, say N. 275 276config LOONGSON1_CPUFREQ 277 tristate "Loongson1 CPUFreq Driver" 278 depends on LOONGSON1_LS1B 279 help 280 This option adds a CPUFreq driver for loongson1 processors which 281 support software configurable cpu frequency. 282 283 For details, take a look at <file:Documentation/cpu-freq/>. 284 285 If in doubt, say N. 286endif 287 288if SPARC64 289config SPARC_US3_CPUFREQ 290 tristate "UltraSPARC-III CPU Frequency driver" 291 help 292 This adds the CPUFreq driver for UltraSPARC-III processors. 293 294 For details, take a look at <file:Documentation/cpu-freq>. 295 296 If in doubt, say N. 297 298config SPARC_US2E_CPUFREQ 299 tristate "UltraSPARC-IIe CPU Frequency driver" 300 help 301 This adds the CPUFreq driver for UltraSPARC-IIe processors. 302 303 For details, take a look at <file:Documentation/cpu-freq>. 304 305 If in doubt, say N. 306endif 307 308if SUPERH 309config SH_CPU_FREQ 310 tristate "SuperH CPU Frequency driver" 311 help 312 This adds the cpufreq driver for SuperH. Any CPU that supports 313 clock rate rounding through the clock framework can use this 314 driver. While it will make the kernel slightly larger, this is 315 harmless for CPUs that don't support rate rounding. The driver 316 will also generate a notice in the boot log before disabling 317 itself if the CPU in question is not capable of rate rounding. 318 319 For details, take a look at <file:Documentation/cpu-freq>. 320 321 If unsure, say N. 322endif 323 324config QORIQ_CPUFREQ 325 tristate "CPU frequency scaling driver for Freescale QorIQ SoCs" 326 depends on OF && COMMON_CLK && (PPC_E500MC || ARM || ARM64) 327 select CLK_QORIQ 328 help 329 This adds the CPUFreq driver support for Freescale QorIQ SoCs 330 which are capable of changing the CPU's frequency dynamically. 331 332endif 333endmenu 334