xref: /linux/drivers/cpufreq/Kconfig (revision 9bdcb44e391da5c41b98573bf0305a0e0b1c9569)
1bb0a56ecSDave Jonesmenu "CPU Frequency scaling"
2bb0a56ecSDave Jones
31da177e4SLinus Torvaldsconfig CPU_FREQ
41da177e4SLinus Torvalds	bool "CPU Frequency scaling"
583fe27eaSPranith Kumar	select SRCU
61da177e4SLinus Torvalds	help
71da177e4SLinus Torvalds	  CPU Frequency scaling allows you to change the clock speed of
81da177e4SLinus Torvalds	  CPUs on the fly. This is a nice method to save power, because
91da177e4SLinus Torvalds	  the lower the CPU clock speed, the less power the CPU consumes.
101da177e4SLinus Torvalds
111da177e4SLinus Torvalds	  Note that this driver doesn't automatically change the CPU
121da177e4SLinus Torvalds	  clock speed, you need to either enable a dynamic cpufreq governor
131da177e4SLinus Torvalds	  (see below) after boot, or use a userspace tool.
141da177e4SLinus Torvalds
151da177e4SLinus Torvalds	  For details, take a look at <file:Documentation/cpu-freq>.
161da177e4SLinus Torvalds
171da177e4SLinus Torvalds	  If in doubt, say N.
181da177e4SLinus Torvalds
191da177e4SLinus Torvaldsif CPU_FREQ
201da177e4SLinus Torvalds
212d0c58adSRafael J. Wysockiconfig CPU_FREQ_GOV_ATTR_SET
222d0c58adSRafael J. Wysocki	bool
232d0c58adSRafael J. Wysocki
241e15f295SLarry Fingerconfig CPU_FREQ_GOV_COMMON
252d0c58adSRafael J. Wysocki	select CPU_FREQ_GOV_ATTR_SET
26e6f03657SRafael J. Wysocki	select IRQ_WORK
271e15f295SLarry Finger	bool
281e15f295SLarry Finger
292fb4719bSLukasz Majewskiconfig CPU_FREQ_BOOST_SW
302fb4719bSLukasz Majewski	bool
312fb4719bSLukasz Majewski	depends on THERMAL
322fb4719bSLukasz Majewski
331da177e4SLinus Torvaldsconfig CPU_FREQ_STAT
341da177e4SLinus Torvalds	tristate "CPU frequency translation statistics"
351da177e4SLinus Torvalds	default y
361da177e4SLinus Torvalds	help
371da177e4SLinus Torvalds	  This driver exports CPU frequency statistics information through sysfs
389101be53SMike Frysinger	  file system.
399101be53SMike Frysinger
409101be53SMike Frysinger	  To compile this driver as a module, choose M here: the
419101be53SMike Frysinger	  module will be called cpufreq_stats.
429101be53SMike Frysinger
439101be53SMike Frysinger	  If in doubt, say N.
441da177e4SLinus Torvalds
451da177e4SLinus Torvaldsconfig CPU_FREQ_STAT_DETAILS
461da177e4SLinus Torvalds	bool "CPU frequency translation statistics details"
471da177e4SLinus Torvalds	depends on CPU_FREQ_STAT
481da177e4SLinus Torvalds	help
491da177e4SLinus Torvalds	  This will show detail CPU frequency translation table in sysfs file
509101be53SMike Frysinger	  system.
519101be53SMike Frysinger
529101be53SMike Frysinger	  If in doubt, say N.
531da177e4SLinus Torvalds
541da177e4SLinus Torvaldschoice
551da177e4SLinus Torvalds	prompt "Default CPUFreq governor"
56559f56c7SAlexander Shiyan	default CPU_FREQ_DEFAULT_GOV_USERSPACE if ARM_SA1100_CPUFREQ || ARM_SA1110_CPUFREQ
571da177e4SLinus Torvalds	default CPU_FREQ_DEFAULT_GOV_PERFORMANCE
581da177e4SLinus Torvalds	help
591da177e4SLinus Torvalds	  This option sets which CPUFreq governor shall be loaded at
601da177e4SLinus Torvalds	  startup. If in doubt, select 'performance'.
611da177e4SLinus Torvalds
621da177e4SLinus Torvaldsconfig CPU_FREQ_DEFAULT_GOV_PERFORMANCE
631da177e4SLinus Torvalds	bool "performance"
641da177e4SLinus Torvalds	select CPU_FREQ_GOV_PERFORMANCE
651da177e4SLinus Torvalds	help
661da177e4SLinus Torvalds	  Use the CPUFreq governor 'performance' as default. This sets
671da177e4SLinus Torvalds	  the frequency statically to the highest frequency supported by
681da177e4SLinus Torvalds	  the CPU.
691da177e4SLinus Torvalds
7030d221dbSAlessandro Guidoconfig CPU_FREQ_DEFAULT_GOV_POWERSAVE
7130d221dbSAlessandro Guido	bool "powersave"
7230d221dbSAlessandro Guido	select CPU_FREQ_GOV_POWERSAVE
7330d221dbSAlessandro Guido	help
7430d221dbSAlessandro Guido	  Use the CPUFreq governor 'powersave' as default. This sets
7530d221dbSAlessandro Guido	  the frequency statically to the lowest frequency supported by
7630d221dbSAlessandro Guido	  the CPU.
7730d221dbSAlessandro Guido
781da177e4SLinus Torvaldsconfig CPU_FREQ_DEFAULT_GOV_USERSPACE
791da177e4SLinus Torvalds	bool "userspace"
801da177e4SLinus Torvalds	select CPU_FREQ_GOV_USERSPACE
811da177e4SLinus Torvalds	help
821da177e4SLinus Torvalds	  Use the CPUFreq governor 'userspace' as default. This allows
830211a9c8SFrederik Schwarzer	  you to set the CPU frequency manually or when a userspace
841da177e4SLinus Torvalds	  program shall be able to set the CPU dynamically without having
851da177e4SLinus Torvalds	  to enable the userspace governor manually.
861da177e4SLinus Torvalds
871c256245SThomas Renningerconfig CPU_FREQ_DEFAULT_GOV_ONDEMAND
881c256245SThomas Renninger	bool "ondemand"
891c256245SThomas Renninger	select CPU_FREQ_GOV_ONDEMAND
901c256245SThomas Renninger	select CPU_FREQ_GOV_PERFORMANCE
911c256245SThomas Renninger	help
921c256245SThomas Renninger	  Use the CPUFreq governor 'ondemand' as default. This allows
931c256245SThomas Renninger	  you to get a full dynamic frequency capable system by simply
941c256245SThomas Renninger	  loading your cpufreq low-level hardware driver.
951c256245SThomas Renninger	  Be aware that not all cpufreq drivers support the ondemand
961c256245SThomas Renninger	  governor. If unsure have a look at the help section of the
971c256245SThomas Renninger	  driver. Fallback governor will be the performance governor.
981c256245SThomas Renninger
991c256245SThomas Renningerconfig CPU_FREQ_DEFAULT_GOV_CONSERVATIVE
1001c256245SThomas Renninger	bool "conservative"
1011c256245SThomas Renninger	select CPU_FREQ_GOV_CONSERVATIVE
1021c256245SThomas Renninger	select CPU_FREQ_GOV_PERFORMANCE
1031c256245SThomas Renninger	help
1041c256245SThomas Renninger	  Use the CPUFreq governor 'conservative' as default. This allows
1051c256245SThomas Renninger	  you to get a full dynamic frequency capable system by simply
1061c256245SThomas Renninger	  loading your cpufreq low-level hardware driver.
1071c256245SThomas Renninger	  Be aware that not all cpufreq drivers support the conservative
1081c256245SThomas Renninger	  governor. If unsure have a look at the help section of the
1091c256245SThomas Renninger	  driver. Fallback governor will be the performance governor.
110*9bdcb44eSRafael J. Wysocki
111*9bdcb44eSRafael J. Wysockiconfig CPU_FREQ_DEFAULT_GOV_SCHEDUTIL
112*9bdcb44eSRafael J. Wysocki	bool "schedutil"
113*9bdcb44eSRafael J. Wysocki	select CPU_FREQ_GOV_SCHEDUTIL
114*9bdcb44eSRafael J. Wysocki	select CPU_FREQ_GOV_PERFORMANCE
115*9bdcb44eSRafael J. Wysocki	help
116*9bdcb44eSRafael J. Wysocki	  Use the 'schedutil' CPUFreq governor by default. If unsure,
117*9bdcb44eSRafael J. Wysocki	  have a look at the help section of that governor. The fallback
118*9bdcb44eSRafael J. Wysocki	  governor will be 'performance'.
119*9bdcb44eSRafael J. Wysocki
1201da177e4SLinus Torvaldsendchoice
1211da177e4SLinus Torvalds
1221da177e4SLinus Torvaldsconfig CPU_FREQ_GOV_PERFORMANCE
1231da177e4SLinus Torvalds	tristate "'performance' governor"
1241da177e4SLinus Torvalds	help
1251da177e4SLinus Torvalds	  This cpufreq governor sets the frequency statically to the
1261da177e4SLinus Torvalds	  highest available CPU frequency.
1271da177e4SLinus Torvalds
1289101be53SMike Frysinger	  To compile this driver as a module, choose M here: the
1299101be53SMike Frysinger	  module will be called cpufreq_performance.
1309101be53SMike Frysinger
1311da177e4SLinus Torvalds	  If in doubt, say Y.
1321da177e4SLinus Torvalds
1331da177e4SLinus Torvaldsconfig CPU_FREQ_GOV_POWERSAVE
1341da177e4SLinus Torvalds	tristate "'powersave' governor"
1351da177e4SLinus Torvalds	help
1361da177e4SLinus Torvalds	  This cpufreq governor sets the frequency statically to the
1371da177e4SLinus Torvalds	  lowest available CPU frequency.
1381da177e4SLinus Torvalds
1399101be53SMike Frysinger	  To compile this driver as a module, choose M here: the
1409101be53SMike Frysinger	  module will be called cpufreq_powersave.
1419101be53SMike Frysinger
1421da177e4SLinus Torvalds	  If in doubt, say Y.
1431da177e4SLinus Torvalds
1441da177e4SLinus Torvaldsconfig CPU_FREQ_GOV_USERSPACE
1451da177e4SLinus Torvalds	tristate "'userspace' governor for userspace frequency scaling"
1461da177e4SLinus Torvalds	help
1471da177e4SLinus Torvalds	  Enable this cpufreq governor when you either want to set the
1480211a9c8SFrederik Schwarzer	  CPU frequency manually or when a userspace program shall
1491da177e4SLinus Torvalds	  be able to set the CPU dynamically, like on LART
1504c41251eSErik Mouw	  <http://www.lartmaker.nl/>.
1511da177e4SLinus Torvalds
1529101be53SMike Frysinger	  To compile this driver as a module, choose M here: the
1539101be53SMike Frysinger	  module will be called cpufreq_userspace.
1549101be53SMike Frysinger
1551da177e4SLinus Torvalds	  For details, take a look at <file:Documentation/cpu-freq/>.
1561da177e4SLinus Torvalds
1571da177e4SLinus Torvalds	  If in doubt, say Y.
1581da177e4SLinus Torvalds
1591da177e4SLinus Torvaldsconfig CPU_FREQ_GOV_ONDEMAND
1601da177e4SLinus Torvalds	tristate "'ondemand' cpufreq policy governor"
1611e15f295SLarry Finger	select CPU_FREQ_GOV_COMMON
1621da177e4SLinus Torvalds	help
1631da177e4SLinus Torvalds	  'ondemand' - This driver adds a dynamic cpufreq policy governor.
1641da177e4SLinus Torvalds	  The governor does a periodic polling and
1651da177e4SLinus Torvalds	  changes frequency based on the CPU utilization.
1661da177e4SLinus Torvalds	  The support for this governor depends on CPU capability to
1671da177e4SLinus Torvalds	  do fast frequency switching (i.e, very low latency frequency
1681da177e4SLinus Torvalds	  transitions).
1691da177e4SLinus Torvalds
1709101be53SMike Frysinger	  To compile this driver as a module, choose M here: the
1719101be53SMike Frysinger	  module will be called cpufreq_ondemand.
1729101be53SMike Frysinger
1731da177e4SLinus Torvalds	  For details, take a look at linux/Documentation/cpu-freq.
1741da177e4SLinus Torvalds
1751da177e4SLinus Torvalds	  If in doubt, say N.
1761da177e4SLinus Torvalds
177b9170836SDave Jonesconfig CPU_FREQ_GOV_CONSERVATIVE
178b9170836SDave Jones	tristate "'conservative' cpufreq governor"
179b9170836SDave Jones	depends on CPU_FREQ
1801e15f295SLarry Finger	select CPU_FREQ_GOV_COMMON
181b9170836SDave Jones	help
182b9170836SDave Jones	  'conservative' - this driver is rather similar to the 'ondemand'
183b9170836SDave Jones	  governor both in its source code and its purpose, the difference is
184b9170836SDave Jones	  its optimisation for better suitability in a battery powered
185b9170836SDave Jones	  environment.  The frequency is gracefully increased and decreased
186b9170836SDave Jones	  rather than jumping to 100% when speed is required.
187b9170836SDave Jones
188b9170836SDave Jones	  If you have a desktop machine then you should really be considering
189b9170836SDave Jones	  the 'ondemand' governor instead, however if you are using a laptop,
190b9170836SDave Jones	  PDA or even an AMD64 based computer (due to the unacceptable
191b9170836SDave Jones	  step-by-step latency issues between the minimum and maximum frequency
192b9170836SDave Jones	  transitions in the CPU) you will probably want to use this governor.
193b9170836SDave Jones
1949101be53SMike Frysinger	  To compile this driver as a module, choose M here: the
1959101be53SMike Frysinger	  module will be called cpufreq_conservative.
1969101be53SMike Frysinger
197b9170836SDave Jones	  For details, take a look at linux/Documentation/cpu-freq.
198b9170836SDave Jones
199b9170836SDave Jones	  If in doubt, say N.
200b9170836SDave Jones
201*9bdcb44eSRafael J. Wysockiconfig CPU_FREQ_GOV_SCHEDUTIL
202*9bdcb44eSRafael J. Wysocki	tristate "'schedutil' cpufreq policy governor"
203*9bdcb44eSRafael J. Wysocki	depends on CPU_FREQ
204*9bdcb44eSRafael J. Wysocki	select CPU_FREQ_GOV_ATTR_SET
205*9bdcb44eSRafael J. Wysocki	select IRQ_WORK
206*9bdcb44eSRafael J. Wysocki	help
207*9bdcb44eSRafael J. Wysocki	  This governor makes decisions based on the utilization data provided
208*9bdcb44eSRafael J. Wysocki	  by the scheduler.  It sets the CPU frequency to be proportional to
209*9bdcb44eSRafael J. Wysocki	  the utilization/capacity ratio coming from the scheduler.  If the
210*9bdcb44eSRafael J. Wysocki	  utilization is frequency-invariant, the new frequency is also
211*9bdcb44eSRafael J. Wysocki	  proportional to the maximum available frequency.  If that is not the
212*9bdcb44eSRafael J. Wysocki	  case, it is proportional to the current frequency of the CPU.  The
213*9bdcb44eSRafael J. Wysocki	  frequency tipping point is at utilization/capacity equal to 80% in
214*9bdcb44eSRafael J. Wysocki	  both cases.
215*9bdcb44eSRafael J. Wysocki
216*9bdcb44eSRafael J. Wysocki	  To compile this driver as a module, choose M here: the module will
217*9bdcb44eSRafael J. Wysocki	  be called cpufreq_schedutil.
218*9bdcb44eSRafael J. Wysocki
219*9bdcb44eSRafael J. Wysocki	  If in doubt, say N.
220*9bdcb44eSRafael J. Wysocki
221f41f4815SViresh Kumarcomment "CPU frequency scaling drivers"
222f41f4815SViresh Kumar
223bbcf0719SViresh Kumarconfig CPUFREQ_DT
224bbcf0719SViresh Kumar	tristate "Generic DT based cpufreq driver"
2255fbfbcd3SViresh Kumar	depends on HAVE_CLK && OF
226bbcf0719SViresh Kumar	# if CPU_THERMAL is on and THERMAL=m, CPUFREQ_DT cannot be =y:
227217886d3SArnd Bergmann	depends on !CPU_THERMAL || THERMAL
228109df086SMark Brown	select PM_OPP
22995ceafd4SShawn Guo	help
230bbcf0719SViresh Kumar	  This adds a generic DT based cpufreq driver for frequency management.
23195ceafd4SShawn Guo	  It supports both uniprocessor (UP) and symmetric multiprocessor (SMP)
23295ceafd4SShawn Guo	  systems which share clock and voltage across all CPUs.
23395ceafd4SShawn Guo
23495ceafd4SShawn Guo	  If in doubt, say N.
23595ceafd4SShawn Guo
236f41f4815SViresh Kumarif X86
237bb0a56ecSDave Jonessource "drivers/cpufreq/Kconfig.x86"
238f41f4815SViresh Kumarendif
239bb0a56ecSDave Jones
240f41f4815SViresh Kumarif ARM || ARM64
241f7d77079SKukjin Kimsource "drivers/cpufreq/Kconfig.arm"
242f41f4815SViresh Kumarendif
243f7d77079SKukjin Kim
244f41f4815SViresh Kumarif PPC32 || PPC64
245f41f4815SViresh Kumarsource "drivers/cpufreq/Kconfig.powerpc"
246f41f4815SViresh Kumarendif
24781c720c9SViresh Kumar
248f41f4815SViresh Kumarif AVR32
24981c720c9SViresh Kumarconfig AVR32_AT32AP_CPUFREQ
25081c720c9SViresh Kumar	bool "CPU frequency driver for AT32AP"
25181c720c9SViresh Kumar	depends on PLATFORM_AT32AP
25281c720c9SViresh Kumar	default n
25381c720c9SViresh Kumar	help
25481c720c9SViresh Kumar	  This enables the CPU frequency driver for AT32AP processors.
25581c720c9SViresh Kumar	  If in doubt, say N.
256f41f4815SViresh Kumarendif
25781c720c9SViresh Kumar
258f41f4815SViresh Kumarif IA64
259ab423e43SViresh Kumarconfig IA64_ACPI_CPUFREQ
260ab423e43SViresh Kumar	tristate "ACPI Processor P-States driver"
261ab423e43SViresh Kumar	depends on ACPI_PROCESSOR
262ab423e43SViresh Kumar	help
263ab423e43SViresh Kumar	This driver adds a CPUFreq driver which utilizes the ACPI
264ab423e43SViresh Kumar	Processor Performance States.
265ab423e43SViresh Kumar
266ab423e43SViresh Kumar	For details, take a look at <file:Documentation/cpu-freq/>.
267ab423e43SViresh Kumar
268ab423e43SViresh Kumar	If in doubt, say N.
269f41f4815SViresh Kumarendif
270ab423e43SViresh Kumar
271f41f4815SViresh Kumarif MIPS
2727a998935SViresh Kumarconfig LOONGSON2_CPUFREQ
2737a998935SViresh Kumar	tristate "Loongson2 CPUFreq Driver"
2747a998935SViresh Kumar	help
2757a998935SViresh Kumar	  This option adds a CPUFreq driver for loongson processors which
2767a998935SViresh Kumar	  support software configurable cpu frequency.
2777a998935SViresh Kumar
2787a998935SViresh Kumar	  Loongson2F and it's successors support this feature.
2797a998935SViresh Kumar
2807a998935SViresh Kumar	  For details, take a look at <file:Documentation/cpu-freq/>.
2817a998935SViresh Kumar
2827a998935SViresh Kumar	  If in doubt, say N.
2837a998935SViresh Kumar
284a0a22cf1SKelvin Cheungconfig LOONGSON1_CPUFREQ
285a0a22cf1SKelvin Cheung	tristate "Loongson1 CPUFreq Driver"
286a0a22cf1SKelvin Cheung	help
287a0a22cf1SKelvin Cheung	  This option adds a CPUFreq driver for loongson1 processors which
288a0a22cf1SKelvin Cheung	  support software configurable cpu frequency.
289a0a22cf1SKelvin Cheung
290a0a22cf1SKelvin Cheung	  For details, take a look at <file:Documentation/cpu-freq/>.
291a0a22cf1SKelvin Cheung
292a0a22cf1SKelvin Cheung	  If in doubt, say N.
293f41f4815SViresh Kumarendif
294a0a22cf1SKelvin Cheung
295f41f4815SViresh Kumarif SPARC64
296764295aeSViresh Kumarconfig SPARC_US3_CPUFREQ
297764295aeSViresh Kumar	tristate "UltraSPARC-III CPU Frequency driver"
298764295aeSViresh Kumar	help
299764295aeSViresh Kumar	  This adds the CPUFreq driver for UltraSPARC-III processors.
300764295aeSViresh Kumar
301764295aeSViresh Kumar	  For details, take a look at <file:Documentation/cpu-freq>.
302764295aeSViresh Kumar
303764295aeSViresh Kumar	  If in doubt, say N.
304764295aeSViresh Kumar
305764295aeSViresh Kumarconfig SPARC_US2E_CPUFREQ
306764295aeSViresh Kumar	tristate "UltraSPARC-IIe CPU Frequency driver"
307764295aeSViresh Kumar	help
308764295aeSViresh Kumar	  This adds the CPUFreq driver for UltraSPARC-IIe processors.
309764295aeSViresh Kumar
310764295aeSViresh Kumar	  For details, take a look at <file:Documentation/cpu-freq>.
311764295aeSViresh Kumar
312764295aeSViresh Kumar	  If in doubt, say N.
313f41f4815SViresh Kumarendif
314764295aeSViresh Kumar
315f41f4815SViresh Kumarif SUPERH
3167258267eSViresh Kumarconfig SH_CPU_FREQ
3177258267eSViresh Kumar	tristate "SuperH CPU Frequency driver"
3187258267eSViresh Kumar	help
3197258267eSViresh Kumar	  This adds the cpufreq driver for SuperH. Any CPU that supports
3207258267eSViresh Kumar	  clock rate rounding through the clock framework can use this
3217258267eSViresh Kumar	  driver. While it will make the kernel slightly larger, this is
3227258267eSViresh Kumar	  harmless for CPUs that don't support rate rounding. The driver
3237258267eSViresh Kumar	  will also generate a notice in the boot log before disabling
3247258267eSViresh Kumar	  itself if the CPU in question is not capable of rate rounding.
3257258267eSViresh Kumar
3267258267eSViresh Kumar	  For details, take a look at <file:Documentation/cpu-freq>.
3277258267eSViresh Kumar
3287258267eSViresh Kumar	  If unsure, say N.
329f41f4815SViresh Kumarendif
3307258267eSViresh Kumar
3312f249358STang Yuantianconfig QORIQ_CPUFREQ
3322f249358STang Yuantian	tristate "CPU frequency scaling driver for Freescale QorIQ SoCs"
3332f249358STang Yuantian	depends on OF && COMMON_CLK && (PPC_E500MC || ARM)
334ddd30ef4SArnd Bergmann	depends on !CPU_THERMAL || THERMAL
3352f249358STang Yuantian	select CLK_QORIQ
3362f249358STang Yuantian	help
3372f249358STang Yuantian	  This adds the CPUFreq driver support for Freescale QorIQ SoCs
3382f249358STang Yuantian	  which are capable of changing the CPU's frequency dynamically.
3392f249358STang Yuantian
340bb0a56ecSDave Jonesendif
341bb0a56ecSDave Jonesendmenu
342