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