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