xref: /linux/drivers/cpufreq/Kconfig (revision 71e2f4dd5a65bd8dbca0b77661e75eea471168f8)
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_PERFORMANCE
41	help
42	  This option sets which CPUFreq governor shall be loaded at
43	  startup. If in doubt, select 'performance'.
44
45config 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
53config 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
61config 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
70config 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
82config 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
94config 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
104endchoice
105
106config 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
117config 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
128config 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
143config 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
161config 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
185config 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
202comment "CPU frequency scaling drivers"
203
204config 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
216config 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
225if X86
226source "drivers/cpufreq/Kconfig.x86"
227endif
228
229if ARM || ARM64
230source "drivers/cpufreq/Kconfig.arm"
231endif
232
233if PPC32 || PPC64
234source "drivers/cpufreq/Kconfig.powerpc"
235endif
236
237if IA64
238config 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.
248endif
249
250if MIPS
251config 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
261config 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
274config 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.
284endif
285
286if SPARC64
287config 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
296config 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.
304endif
305
306if SUPERH
307config 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.
320endif
321
322config 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
330endif
331endmenu
332