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