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