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