blob: 608af20a34940d60a716f78ac263b0f3bfaaa47a [file] [log] [blame]
Dave Jonesbb0a56e2011-05-19 18:51:07 -04001menu "CPU Frequency scaling"
2
Linus Torvalds1da177e2005-04-16 15:20:36 -07003config CPU_FREQ
4 bool "CPU Frequency scaling"
Pranith Kumar83fe27e2014-12-05 11:24:45 -05005 select SRCU
Linus Torvalds1da177e2005-04-16 15:20:36 -07006 help
7 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 CPU
12 clock speed, you need to either enable a dynamic cpufreq governor
13 (see below) after boot, or use a userspace tool.
14
15 For details, take a look at <file:Documentation/cpu-freq>.
16
17 If in doubt, say N.
18
19if CPU_FREQ
20
Rafael J. Wysocki2d0c58a2016-03-22 02:49:15 +010021config CPU_FREQ_GOV_ATTR_SET
22 bool
23
Larry Finger1e15f292012-12-29 01:55:20 +000024config CPU_FREQ_GOV_COMMON
Rafael J. Wysocki2d0c58a2016-03-22 02:49:15 +010025 select CPU_FREQ_GOV_ATTR_SET
Rafael J. Wysockie6f03652016-02-28 02:33:29 +010026 select IRQ_WORK
Larry Finger1e15f292012-12-29 01:55:20 +000027 bool
28
Lukasz Majewski2fb47192013-12-20 15:24:51 +010029config CPU_FREQ_BOOST_SW
30 bool
31 depends on THERMAL
32
Linus Torvalds1da177e2005-04-16 15:20:36 -070033config CPU_FREQ_STAT
Rafael J. Wysocki1aefc752016-05-31 22:14:44 +020034 bool "CPU frequency transition statistics"
Mike Frysinger9101be52007-04-18 16:18:13 -040035 help
Rafael J. Wysocki1aefc752016-05-31 22:14:44 +020036 Export CPU frequency statistics information through sysfs.
Mike Frysinger9101be52007-04-18 16:18:13 -040037
38 If in doubt, say N.
Linus Torvalds1da177e2005-04-16 15:20:36 -070039
Linus Torvalds1da177e2005-04-16 15:20:36 -070040choice
41 prompt "Default CPUFreq governor"
Alexander Shiyan559f56c2013-05-05 12:18:08 +000042 default CPU_FREQ_DEFAULT_GOV_USERSPACE if ARM_SA1100_CPUFREQ || ARM_SA1110_CPUFREQ
Linus Torvalds1da177e2005-04-16 15:20:36 -070043 default CPU_FREQ_DEFAULT_GOV_PERFORMANCE
44 help
45 This option sets which CPUFreq governor shall be loaded at
46 startup. If in doubt, select 'performance'.
47
48config CPU_FREQ_DEFAULT_GOV_PERFORMANCE
49 bool "performance"
50 select CPU_FREQ_GOV_PERFORMANCE
51 help
52 Use the CPUFreq governor 'performance' as default. This sets
53 the frequency statically to the highest frequency supported by
54 the CPU.
55
Alessandro Guido30d221d2008-04-18 13:31:13 -070056config CPU_FREQ_DEFAULT_GOV_POWERSAVE
57 bool "powersave"
Alessandro Guido30d221d2008-04-18 13:31:13 -070058 select CPU_FREQ_GOV_POWERSAVE
59 help
60 Use the CPUFreq governor 'powersave' as default. This sets
61 the frequency statically to the lowest frequency supported by
62 the CPU.
63
Linus Torvalds1da177e2005-04-16 15:20:36 -070064config CPU_FREQ_DEFAULT_GOV_USERSPACE
65 bool "userspace"
66 select CPU_FREQ_GOV_USERSPACE
67 help
68 Use the CPUFreq governor 'userspace' as default. This allows
Frederik Schwarzer0211a9c2008-12-29 22:14:56 +010069 you to set the CPU frequency manually or when a userspace
Linus Torvalds1da177e2005-04-16 15:20:36 -070070 program shall be able to set the CPU dynamically without having
71 to enable the userspace governor manually.
72
Thomas Renninger1c256242007-10-02 13:28:12 -070073config CPU_FREQ_DEFAULT_GOV_ONDEMAND
74 bool "ondemand"
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 select CPU_FREQ_GOV_CONSERVATIVE
88 select CPU_FREQ_GOV_PERFORMANCE
89 help
90 Use the CPUFreq governor 'conservative' as default. This allows
91 you to get a full dynamic frequency capable system by simply
92 loading your cpufreq low-level hardware driver.
93 Be aware that not all cpufreq drivers support the conservative
94 governor. If unsure have a look at the help section of the
95 driver. Fallback governor will be the performance governor.
Rafael J. Wysocki9bdcb442016-04-02 01:09:12 +020096
97config CPU_FREQ_DEFAULT_GOV_SCHEDUTIL
98 bool "schedutil"
Arnd Bergmanncfe94922016-05-11 14:52:01 +020099 depends on SMP
Rafael J. Wysocki9bdcb442016-04-02 01:09:12 +0200100 select CPU_FREQ_GOV_SCHEDUTIL
101 select CPU_FREQ_GOV_PERFORMANCE
102 help
103 Use the 'schedutil' CPUFreq governor by default. If unsure,
104 have a look at the help section of that governor. The fallback
105 governor will be 'performance'.
106
Linus Torvalds1da177e2005-04-16 15:20:36 -0700107endchoice
108
109config CPU_FREQ_GOV_PERFORMANCE
Mike Frysinger9101be52007-04-18 16:18:13 -0400110 tristate "'performance' governor"
111 help
Linus Torvalds1da177e2005-04-16 15:20:36 -0700112 This cpufreq governor sets the frequency statically to the
113 highest available CPU frequency.
114
Mike Frysinger9101be52007-04-18 16:18:13 -0400115 To compile this driver as a module, choose M here: the
116 module will be called cpufreq_performance.
117
Linus Torvalds1da177e2005-04-16 15:20:36 -0700118 If in doubt, say Y.
119
120config CPU_FREQ_GOV_POWERSAVE
Mike Frysinger9101be52007-04-18 16:18:13 -0400121 tristate "'powersave' governor"
122 help
Linus Torvalds1da177e2005-04-16 15:20:36 -0700123 This cpufreq governor sets the frequency statically to the
124 lowest available CPU frequency.
125
Mike Frysinger9101be52007-04-18 16:18:13 -0400126 To compile this driver as a module, choose M here: the
127 module will be called cpufreq_powersave.
128
Linus Torvalds1da177e2005-04-16 15:20:36 -0700129 If in doubt, say Y.
130
131config CPU_FREQ_GOV_USERSPACE
Mike Frysinger9101be52007-04-18 16:18:13 -0400132 tristate "'userspace' governor for userspace frequency scaling"
133 help
Linus Torvalds1da177e2005-04-16 15:20:36 -0700134 Enable this cpufreq governor when you either want to set the
Frederik Schwarzer0211a9c2008-12-29 22:14:56 +0100135 CPU frequency manually or when a userspace program shall
Linus Torvalds1da177e2005-04-16 15:20:36 -0700136 be able to set the CPU dynamically, like on LART
Erik Mouw4c412512006-04-03 14:21:00 +0200137 <http://www.lartmaker.nl/>.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700138
Mike Frysinger9101be52007-04-18 16:18:13 -0400139 To compile this driver as a module, choose M here: the
140 module will be called cpufreq_userspace.
141
Linus Torvalds1da177e2005-04-16 15:20:36 -0700142 For details, take a look at <file:Documentation/cpu-freq/>.
143
144 If in doubt, say Y.
145
146config CPU_FREQ_GOV_ONDEMAND
147 tristate "'ondemand' cpufreq policy governor"
Larry Finger1e15f292012-12-29 01:55:20 +0000148 select CPU_FREQ_GOV_COMMON
Linus Torvalds1da177e2005-04-16 15:20:36 -0700149 help
150 'ondemand' - This driver adds a dynamic cpufreq policy governor.
151 The governor does a periodic polling and
152 changes frequency based on the CPU utilization.
153 The support for this governor depends on CPU capability to
154 do fast frequency switching (i.e, very low latency frequency
155 transitions).
156
Mike Frysinger9101be52007-04-18 16:18:13 -0400157 To compile this driver as a module, choose M here: the
158 module will be called cpufreq_ondemand.
159
Linus Torvalds1da177e2005-04-16 15:20:36 -0700160 For details, take a look at linux/Documentation/cpu-freq.
161
162 If in doubt, say N.
163
Dave Jonesb9170832005-05-31 19:03:47 -0700164config CPU_FREQ_GOV_CONSERVATIVE
165 tristate "'conservative' cpufreq governor"
166 depends on CPU_FREQ
Larry Finger1e15f292012-12-29 01:55:20 +0000167 select CPU_FREQ_GOV_COMMON
Dave Jonesb9170832005-05-31 19:03:47 -0700168 help
169 'conservative' - this driver is rather similar to the 'ondemand'
170 governor both in its source code and its purpose, the difference is
171 its optimisation for better suitability in a battery powered
172 environment. The frequency is gracefully increased and decreased
173 rather than jumping to 100% when speed is required.
174
175 If you have a desktop machine then you should really be considering
176 the 'ondemand' governor instead, however if you are using a laptop,
177 PDA or even an AMD64 based computer (due to the unacceptable
178 step-by-step latency issues between the minimum and maximum frequency
179 transitions in the CPU) you will probably want to use this governor.
180
Mike Frysinger9101be52007-04-18 16:18:13 -0400181 To compile this driver as a module, choose M here: the
182 module will be called cpufreq_conservative.
183
Dave Jonesb9170832005-05-31 19:03:47 -0700184 For details, take a look at linux/Documentation/cpu-freq.
185
186 If in doubt, say N.
187
Rafael J. Wysocki9bdcb442016-04-02 01:09:12 +0200188config CPU_FREQ_GOV_SCHEDUTIL
Rafael J. Wysocki58919e82016-08-16 22:14:55 +0200189 bool "'schedutil' cpufreq policy governor"
Rafael J. Wysockibf7cdff2016-05-06 15:00:38 +0200190 depends on CPU_FREQ && SMP
Rafael J. Wysocki9bdcb442016-04-02 01:09:12 +0200191 select CPU_FREQ_GOV_ATTR_SET
192 select IRQ_WORK
193 help
194 This governor makes decisions based on the utilization data provided
195 by the scheduler. It sets the CPU frequency to be proportional to
196 the utilization/capacity ratio coming from the scheduler. If the
197 utilization is frequency-invariant, the new frequency is also
198 proportional to the maximum available frequency. If that is not the
199 case, it is proportional to the current frequency of the CPU. The
200 frequency tipping point is at utilization/capacity equal to 80% in
201 both cases.
202
Rafael J. Wysocki9bdcb442016-04-02 01:09:12 +0200203 If in doubt, say N.
204
Viresh Kumarf41f4812014-11-15 08:50:44 +0530205comment "CPU frequency scaling drivers"
206
Viresh Kumarbbcf0712014-09-09 19:58:03 +0530207config CPUFREQ_DT
208 tristate "Generic DT based cpufreq driver"
Viresh Kumar5fbfbcd2014-06-10 10:39:46 +0530209 depends on HAVE_CLK && OF
Viresh Kumarbbcf0712014-09-09 19:58:03 +0530210 # if CPU_THERMAL is on and THERMAL=m, CPUFREQ_DT cannot be =y:
Arnd Bergmann217886d2014-06-13 10:40:32 +0200211 depends on !CPU_THERMAL || THERMAL
Viresh Kumarf56aad12016-03-30 13:45:26 +0530212 select CPUFREQ_DT_PLATDEV
Mark Brown109df082013-12-11 22:12:27 +0000213 select PM_OPP
Shawn Guo95ceafd2012-09-06 07:09:11 +0000214 help
Viresh Kumarbbcf0712014-09-09 19:58:03 +0530215 This adds a generic DT based cpufreq driver for frequency management.
Shawn Guo95ceafd2012-09-06 07:09:11 +0000216 It supports both uniprocessor (UP) and symmetric multiprocessor (SMP)
Viresh Kumar33cc4fc2016-09-09 16:48:07 +0530217 systems.
Shawn Guo95ceafd2012-09-06 07:09:11 +0000218
219 If in doubt, say N.
220
Viresh Kumarf56aad12016-03-30 13:45:26 +0530221config CPUFREQ_DT_PLATDEV
222 bool
223 help
224 This adds a generic DT based cpufreq platdev driver for frequency
225 management. This creates a 'cpufreq-dt' platform device, on the
226 supported platforms.
227
228 If in doubt, say N.
229
Viresh Kumarf41f4812014-11-15 08:50:44 +0530230if X86
Dave Jonesbb0a56e2011-05-19 18:51:07 -0400231source "drivers/cpufreq/Kconfig.x86"
Viresh Kumarf41f4812014-11-15 08:50:44 +0530232endif
Dave Jonesbb0a56e2011-05-19 18:51:07 -0400233
Viresh Kumarf41f4812014-11-15 08:50:44 +0530234if ARM || ARM64
Kukjin Kimf7d77072011-06-01 14:18:22 -0700235source "drivers/cpufreq/Kconfig.arm"
Viresh Kumarf41f4812014-11-15 08:50:44 +0530236endif
Kukjin Kimf7d77072011-06-01 14:18:22 -0700237
Viresh Kumarf41f4812014-11-15 08:50:44 +0530238if PPC32 || PPC64
239source "drivers/cpufreq/Kconfig.powerpc"
240endif
Viresh Kumar81c720c2013-04-04 12:54:17 +0000241
Viresh Kumarf41f4812014-11-15 08:50:44 +0530242if IA64
Viresh Kumarab423e42013-04-04 12:54:20 +0000243config IA64_ACPI_CPUFREQ
244 tristate "ACPI Processor P-States driver"
Viresh Kumarab423e42013-04-04 12:54:20 +0000245 depends on ACPI_PROCESSOR
246 help
247 This driver adds a CPUFreq driver which utilizes the ACPI
248 Processor Performance States.
249
250 For details, take a look at <file:Documentation/cpu-freq/>.
251
252 If in doubt, say N.
Viresh Kumarf41f4812014-11-15 08:50:44 +0530253endif
Viresh Kumarab423e42013-04-04 12:54:20 +0000254
Viresh Kumarf41f4812014-11-15 08:50:44 +0530255if MIPS
Markus Mayercdb56cb2017-02-07 13:58:55 -0800256config BMIPS_CPUFREQ
257 tristate "BMIPS CPUfreq Driver"
258 help
259 This option adds a CPUfreq driver for BMIPS processors with
260 support for configurable CPU frequency.
261
262 For now, BMIPS5 chips are supported (such as the Broadcom 7425).
263
264 If in doubt, say N.
265
Viresh Kumar7a998932013-04-04 12:54:21 +0000266config LOONGSON2_CPUFREQ
267 tristate "Loongson2 CPUFreq Driver"
James Hogan0d307932017-11-15 21:17:55 +0000268 depends on LEMOTE_MACH2F
Viresh Kumar7a998932013-04-04 12:54:21 +0000269 help
270 This option adds a CPUFreq driver for loongson processors which
271 support software configurable cpu frequency.
272
273 Loongson2F and it's successors support this feature.
274
275 For details, take a look at <file:Documentation/cpu-freq/>.
276
277 If in doubt, say N.
278
Kelvin Cheunga0a22cf2014-10-17 18:23:31 +0800279config LOONGSON1_CPUFREQ
280 tristate "Loongson1 CPUFreq Driver"
James Hogan0d307932017-11-15 21:17:55 +0000281 depends on LOONGSON1_LS1B
Kelvin Cheunga0a22cf2014-10-17 18:23:31 +0800282 help
283 This option adds a CPUFreq driver for loongson1 processors which
284 support software configurable cpu frequency.
285
286 For details, take a look at <file:Documentation/cpu-freq/>.
287
288 If in doubt, say N.
Viresh Kumarf41f4812014-11-15 08:50:44 +0530289endif
Kelvin Cheunga0a22cf2014-10-17 18:23:31 +0800290
Viresh Kumarf41f4812014-11-15 08:50:44 +0530291if SPARC64
Viresh Kumar764295a2013-04-04 12:54:24 +0000292config SPARC_US3_CPUFREQ
293 tristate "UltraSPARC-III CPU Frequency driver"
Viresh Kumar764295a2013-04-04 12:54:24 +0000294 help
295 This adds the CPUFreq driver for UltraSPARC-III processors.
296
297 For details, take a look at <file:Documentation/cpu-freq>.
298
299 If in doubt, say N.
300
301config SPARC_US2E_CPUFREQ
302 tristate "UltraSPARC-IIe CPU Frequency driver"
Viresh Kumar764295a2013-04-04 12:54:24 +0000303 help
304 This adds the CPUFreq driver for UltraSPARC-IIe processors.
305
306 For details, take a look at <file:Documentation/cpu-freq>.
307
308 If in doubt, say N.
Viresh Kumarf41f4812014-11-15 08:50:44 +0530309endif
Viresh Kumar764295a2013-04-04 12:54:24 +0000310
Viresh Kumarf41f4812014-11-15 08:50:44 +0530311if SUPERH
Viresh Kumar72582672013-04-04 12:54:22 +0000312config SH_CPU_FREQ
313 tristate "SuperH CPU Frequency driver"
Viresh Kumar72582672013-04-04 12:54:22 +0000314 help
315 This adds the cpufreq driver for SuperH. Any CPU that supports
316 clock rate rounding through the clock framework can use this
317 driver. While it will make the kernel slightly larger, this is
318 harmless for CPUs that don't support rate rounding. The driver
319 will also generate a notice in the boot log before disabling
320 itself if the CPU in question is not capable of rate rounding.
321
322 For details, take a look at <file:Documentation/cpu-freq>.
323
324 If unsure, say N.
Viresh Kumarf41f4812014-11-15 08:50:44 +0530325endif
Viresh Kumar72582672013-04-04 12:54:22 +0000326
Tang Yuantian2f249352015-03-13 12:39:02 +0800327config QORIQ_CPUFREQ
328 tristate "CPU frequency scaling driver for Freescale QorIQ SoCs"
Tang Yuantian5026ac22017-02-09 10:33:01 +0800329 depends on OF && COMMON_CLK && (PPC_E500MC || ARM || ARM64)
Arnd Bergmannddd30ef2016-02-29 17:04:20 +0100330 depends on !CPU_THERMAL || THERMAL
Tang Yuantian2f249352015-03-13 12:39:02 +0800331 select CLK_QORIQ
332 help
333 This adds the CPUFreq driver support for Freescale QorIQ SoCs
334 which are capable of changing the CPU's frequency dynamically.
335
Dave Jonesbb0a56e2011-05-19 18:51:07 -0400336endif
337endmenu