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