xref: /linux/drivers/cpufreq/Kconfig (revision e58e871becec2d3b04ed91c0c16fe8deac9c9dfa)
1menu "CPU Frequency scaling"
2
3config CPU_FREQ
4	bool "CPU Frequency scaling"
5	select SRCU
6	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
21config CPU_FREQ_GOV_ATTR_SET
22	bool
23
24config CPU_FREQ_GOV_COMMON
25	select CPU_FREQ_GOV_ATTR_SET
26	select IRQ_WORK
27	bool
28
29config CPU_FREQ_BOOST_SW
30	bool
31	depends on THERMAL
32
33config CPU_FREQ_STAT
34	bool "CPU frequency transition statistics"
35	help
36	  Export CPU frequency statistics information through sysfs.
37
38	  If in doubt, say N.
39
40choice
41	prompt "Default CPUFreq governor"
42	default CPU_FREQ_DEFAULT_GOV_USERSPACE if ARM_SA1100_CPUFREQ || ARM_SA1110_CPUFREQ
43	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
56config CPU_FREQ_DEFAULT_GOV_POWERSAVE
57	bool "powersave"
58	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
64config 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
69	  you to set the CPU frequency manually or when a userspace
70	  program shall be able to set the CPU dynamically without having
71	  to enable the userspace governor manually.
72
73config 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.
96
97config CPU_FREQ_DEFAULT_GOV_SCHEDUTIL
98	bool "schedutil"
99	depends on SMP
100	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
107endchoice
108
109config CPU_FREQ_GOV_PERFORMANCE
110	tristate "'performance' governor"
111	help
112	  This cpufreq governor sets the frequency statically to the
113	  highest available CPU frequency.
114
115	  To compile this driver as a module, choose M here: the
116	  module will be called cpufreq_performance.
117
118	  If in doubt, say Y.
119
120config CPU_FREQ_GOV_POWERSAVE
121	tristate "'powersave' governor"
122	help
123	  This cpufreq governor sets the frequency statically to the
124	  lowest available CPU frequency.
125
126	  To compile this driver as a module, choose M here: the
127	  module will be called cpufreq_powersave.
128
129	  If in doubt, say Y.
130
131config CPU_FREQ_GOV_USERSPACE
132	tristate "'userspace' governor for userspace frequency scaling"
133	help
134	  Enable this cpufreq governor when you either want to set the
135	  CPU frequency manually or when a userspace program shall
136	  be able to set the CPU dynamically, like on LART
137	  <http://www.lartmaker.nl/>.
138
139	  To compile this driver as a module, choose M here: the
140	  module will be called cpufreq_userspace.
141
142	  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"
148	select CPU_FREQ_GOV_COMMON
149	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
157	  To compile this driver as a module, choose M here: the
158	  module will be called cpufreq_ondemand.
159
160	  For details, take a look at linux/Documentation/cpu-freq.
161
162	  If in doubt, say N.
163
164config CPU_FREQ_GOV_CONSERVATIVE
165	tristate "'conservative' cpufreq governor"
166	depends on CPU_FREQ
167	select CPU_FREQ_GOV_COMMON
168	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
181	  To compile this driver as a module, choose M here: the
182	  module will be called cpufreq_conservative.
183
184	  For details, take a look at linux/Documentation/cpu-freq.
185
186	  If in doubt, say N.
187
188config CPU_FREQ_GOV_SCHEDUTIL
189	bool "'schedutil' cpufreq policy governor"
190	depends on CPU_FREQ && SMP
191	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
203	  If in doubt, say N.
204
205comment "CPU frequency scaling drivers"
206
207config CPUFREQ_DT
208	tristate "Generic DT based cpufreq driver"
209	depends on HAVE_CLK && OF
210	# if CPU_THERMAL is on and THERMAL=m, CPUFREQ_DT cannot be =y:
211	depends on !CPU_THERMAL || THERMAL
212	select CPUFREQ_DT_PLATDEV
213	select PM_OPP
214	help
215	  This adds a generic DT based cpufreq driver for frequency management.
216	  It supports both uniprocessor (UP) and symmetric multiprocessor (SMP)
217	  systems.
218
219	  If in doubt, say N.
220
221config 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
230if X86
231source "drivers/cpufreq/Kconfig.x86"
232endif
233
234if ARM || ARM64
235source "drivers/cpufreq/Kconfig.arm"
236endif
237
238if PPC32 || PPC64
239source "drivers/cpufreq/Kconfig.powerpc"
240endif
241
242if AVR32
243config AVR32_AT32AP_CPUFREQ
244	bool "CPU frequency driver for AT32AP"
245	depends on PLATFORM_AT32AP
246	default n
247	help
248	  This enables the CPU frequency driver for AT32AP processors.
249	  If in doubt, say N.
250endif
251
252if IA64
253config IA64_ACPI_CPUFREQ
254	tristate "ACPI Processor P-States driver"
255	depends on ACPI_PROCESSOR
256	help
257	This driver adds a CPUFreq driver which utilizes the ACPI
258	Processor Performance States.
259
260	For details, take a look at <file:Documentation/cpu-freq/>.
261
262	If in doubt, say N.
263endif
264
265if MIPS
266config BMIPS_CPUFREQ
267	tristate "BMIPS CPUfreq Driver"
268	help
269	  This option adds a CPUfreq driver for BMIPS processors with
270	  support for configurable CPU frequency.
271
272	  For now, BMIPS5 chips are supported (such as the Broadcom 7425).
273
274	  If in doubt, say N.
275
276config LOONGSON2_CPUFREQ
277	tristate "Loongson2 CPUFreq Driver"
278	help
279	  This option adds a CPUFreq driver for loongson processors which
280	  support software configurable cpu frequency.
281
282	  Loongson2F and it's successors support this feature.
283
284	  For details, take a look at <file:Documentation/cpu-freq/>.
285
286	  If in doubt, say N.
287
288config LOONGSON1_CPUFREQ
289	tristate "Loongson1 CPUFreq Driver"
290	help
291	  This option adds a CPUFreq driver for loongson1 processors which
292	  support software configurable cpu frequency.
293
294	  For details, take a look at <file:Documentation/cpu-freq/>.
295
296	  If in doubt, say N.
297endif
298
299if SPARC64
300config SPARC_US3_CPUFREQ
301	tristate "UltraSPARC-III CPU Frequency driver"
302	help
303	  This adds the CPUFreq driver for UltraSPARC-III processors.
304
305	  For details, take a look at <file:Documentation/cpu-freq>.
306
307	  If in doubt, say N.
308
309config SPARC_US2E_CPUFREQ
310	tristate "UltraSPARC-IIe CPU Frequency driver"
311	help
312	  This adds the CPUFreq driver for UltraSPARC-IIe processors.
313
314	  For details, take a look at <file:Documentation/cpu-freq>.
315
316	  If in doubt, say N.
317endif
318
319if SUPERH
320config SH_CPU_FREQ
321	tristate "SuperH CPU Frequency driver"
322	help
323	  This adds the cpufreq driver for SuperH. Any CPU that supports
324	  clock rate rounding through the clock framework can use this
325	  driver. While it will make the kernel slightly larger, this is
326	  harmless for CPUs that don't support rate rounding. The driver
327	  will also generate a notice in the boot log before disabling
328	  itself if the CPU in question is not capable of rate rounding.
329
330	  For details, take a look at <file:Documentation/cpu-freq>.
331
332	  If unsure, say N.
333endif
334
335config QORIQ_CPUFREQ
336	tristate "CPU frequency scaling driver for Freescale QorIQ SoCs"
337	depends on OF && COMMON_CLK && (PPC_E500MC || ARM || ARM64)
338	depends on !CPU_THERMAL || THERMAL
339	select CLK_QORIQ
340	help
341	  This adds the CPUFreq driver support for Freescale QorIQ SoCs
342	  which are capable of changing the CPU's frequency dynamically.
343
344endif
345endmenu
346