xref: /linux/drivers/cpufreq/Kconfig (revision cfe9492fdf04d1191e7ac3a43e6df5e20c3f4164)
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.
1109bdcb44eSRafael J. Wysocki
1119bdcb44eSRafael J. Wysockiconfig CPU_FREQ_DEFAULT_GOV_SCHEDUTIL
1129bdcb44eSRafael J. Wysocki	bool "schedutil"
113*cfe9492fSArnd Bergmann	depends on SMP
1149bdcb44eSRafael J. Wysocki	select CPU_FREQ_GOV_SCHEDUTIL
1159bdcb44eSRafael J. Wysocki	select CPU_FREQ_GOV_PERFORMANCE
1169bdcb44eSRafael J. Wysocki	help
1179bdcb44eSRafael J. Wysocki	  Use the 'schedutil' CPUFreq governor by default. If unsure,
1189bdcb44eSRafael J. Wysocki	  have a look at the help section of that governor. The fallback
1199bdcb44eSRafael J. Wysocki	  governor will be 'performance'.
1209bdcb44eSRafael J. Wysocki
1211da177e4SLinus Torvaldsendchoice
1221da177e4SLinus Torvalds
1231da177e4SLinus Torvaldsconfig CPU_FREQ_GOV_PERFORMANCE
1241da177e4SLinus Torvalds	tristate "'performance' governor"
1251da177e4SLinus Torvalds	help
1261da177e4SLinus Torvalds	  This cpufreq governor sets the frequency statically to the
1271da177e4SLinus Torvalds	  highest available CPU frequency.
1281da177e4SLinus Torvalds
1299101be53SMike Frysinger	  To compile this driver as a module, choose M here: the
1309101be53SMike Frysinger	  module will be called cpufreq_performance.
1319101be53SMike Frysinger
1321da177e4SLinus Torvalds	  If in doubt, say Y.
1331da177e4SLinus Torvalds
1341da177e4SLinus Torvaldsconfig CPU_FREQ_GOV_POWERSAVE
1351da177e4SLinus Torvalds	tristate "'powersave' governor"
1361da177e4SLinus Torvalds	help
1371da177e4SLinus Torvalds	  This cpufreq governor sets the frequency statically to the
1381da177e4SLinus Torvalds	  lowest available CPU frequency.
1391da177e4SLinus Torvalds
1409101be53SMike Frysinger	  To compile this driver as a module, choose M here: the
1419101be53SMike Frysinger	  module will be called cpufreq_powersave.
1429101be53SMike Frysinger
1431da177e4SLinus Torvalds	  If in doubt, say Y.
1441da177e4SLinus Torvalds
1451da177e4SLinus Torvaldsconfig CPU_FREQ_GOV_USERSPACE
1461da177e4SLinus Torvalds	tristate "'userspace' governor for userspace frequency scaling"
1471da177e4SLinus Torvalds	help
1481da177e4SLinus Torvalds	  Enable this cpufreq governor when you either want to set the
1490211a9c8SFrederik Schwarzer	  CPU frequency manually or when a userspace program shall
1501da177e4SLinus Torvalds	  be able to set the CPU dynamically, like on LART
1514c41251eSErik Mouw	  <http://www.lartmaker.nl/>.
1521da177e4SLinus Torvalds
1539101be53SMike Frysinger	  To compile this driver as a module, choose M here: the
1549101be53SMike Frysinger	  module will be called cpufreq_userspace.
1559101be53SMike Frysinger
1561da177e4SLinus Torvalds	  For details, take a look at <file:Documentation/cpu-freq/>.
1571da177e4SLinus Torvalds
1581da177e4SLinus Torvalds	  If in doubt, say Y.
1591da177e4SLinus Torvalds
1601da177e4SLinus Torvaldsconfig CPU_FREQ_GOV_ONDEMAND
1611da177e4SLinus Torvalds	tristate "'ondemand' cpufreq policy governor"
1621e15f295SLarry Finger	select CPU_FREQ_GOV_COMMON
1631da177e4SLinus Torvalds	help
1641da177e4SLinus Torvalds	  'ondemand' - This driver adds a dynamic cpufreq policy governor.
1651da177e4SLinus Torvalds	  The governor does a periodic polling and
1661da177e4SLinus Torvalds	  changes frequency based on the CPU utilization.
1671da177e4SLinus Torvalds	  The support for this governor depends on CPU capability to
1681da177e4SLinus Torvalds	  do fast frequency switching (i.e, very low latency frequency
1691da177e4SLinus Torvalds	  transitions).
1701da177e4SLinus Torvalds
1719101be53SMike Frysinger	  To compile this driver as a module, choose M here: the
1729101be53SMike Frysinger	  module will be called cpufreq_ondemand.
1739101be53SMike Frysinger
1741da177e4SLinus Torvalds	  For details, take a look at linux/Documentation/cpu-freq.
1751da177e4SLinus Torvalds
1761da177e4SLinus Torvalds	  If in doubt, say N.
1771da177e4SLinus Torvalds
178b9170836SDave Jonesconfig CPU_FREQ_GOV_CONSERVATIVE
179b9170836SDave Jones	tristate "'conservative' cpufreq governor"
180b9170836SDave Jones	depends on CPU_FREQ
1811e15f295SLarry Finger	select CPU_FREQ_GOV_COMMON
182b9170836SDave Jones	help
183b9170836SDave Jones	  'conservative' - this driver is rather similar to the 'ondemand'
184b9170836SDave Jones	  governor both in its source code and its purpose, the difference is
185b9170836SDave Jones	  its optimisation for better suitability in a battery powered
186b9170836SDave Jones	  environment.  The frequency is gracefully increased and decreased
187b9170836SDave Jones	  rather than jumping to 100% when speed is required.
188b9170836SDave Jones
189b9170836SDave Jones	  If you have a desktop machine then you should really be considering
190b9170836SDave Jones	  the 'ondemand' governor instead, however if you are using a laptop,
191b9170836SDave Jones	  PDA or even an AMD64 based computer (due to the unacceptable
192b9170836SDave Jones	  step-by-step latency issues between the minimum and maximum frequency
193b9170836SDave Jones	  transitions in the CPU) you will probably want to use this governor.
194b9170836SDave Jones
1959101be53SMike Frysinger	  To compile this driver as a module, choose M here: the
1969101be53SMike Frysinger	  module will be called cpufreq_conservative.
1979101be53SMike Frysinger
198b9170836SDave Jones	  For details, take a look at linux/Documentation/cpu-freq.
199b9170836SDave Jones
200b9170836SDave Jones	  If in doubt, say N.
201b9170836SDave Jones
2029bdcb44eSRafael J. Wysockiconfig CPU_FREQ_GOV_SCHEDUTIL
2039bdcb44eSRafael J. Wysocki	tristate "'schedutil' cpufreq policy governor"
204bf7cdff1SRafael J. Wysocki	depends on CPU_FREQ && SMP
2059bdcb44eSRafael J. Wysocki	select CPU_FREQ_GOV_ATTR_SET
2069bdcb44eSRafael J. Wysocki	select IRQ_WORK
2079bdcb44eSRafael J. Wysocki	help
2089bdcb44eSRafael J. Wysocki	  This governor makes decisions based on the utilization data provided
2099bdcb44eSRafael J. Wysocki	  by the scheduler.  It sets the CPU frequency to be proportional to
2109bdcb44eSRafael J. Wysocki	  the utilization/capacity ratio coming from the scheduler.  If the
2119bdcb44eSRafael J. Wysocki	  utilization is frequency-invariant, the new frequency is also
2129bdcb44eSRafael J. Wysocki	  proportional to the maximum available frequency.  If that is not the
2139bdcb44eSRafael J. Wysocki	  case, it is proportional to the current frequency of the CPU.  The
2149bdcb44eSRafael J. Wysocki	  frequency tipping point is at utilization/capacity equal to 80% in
2159bdcb44eSRafael J. Wysocki	  both cases.
2169bdcb44eSRafael J. Wysocki
2179bdcb44eSRafael J. Wysocki	  To compile this driver as a module, choose M here: the module will
2189bdcb44eSRafael J. Wysocki	  be called cpufreq_schedutil.
2199bdcb44eSRafael J. Wysocki
2209bdcb44eSRafael J. Wysocki	  If in doubt, say N.
2219bdcb44eSRafael J. Wysocki
222f41f4815SViresh Kumarcomment "CPU frequency scaling drivers"
223f41f4815SViresh Kumar
224bbcf0719SViresh Kumarconfig CPUFREQ_DT
225bbcf0719SViresh Kumar	tristate "Generic DT based cpufreq driver"
2265fbfbcd3SViresh Kumar	depends on HAVE_CLK && OF
227bbcf0719SViresh Kumar	# if CPU_THERMAL is on and THERMAL=m, CPUFREQ_DT cannot be =y:
228217886d3SArnd Bergmann	depends on !CPU_THERMAL || THERMAL
229109df086SMark Brown	select PM_OPP
23095ceafd4SShawn Guo	help
231bbcf0719SViresh Kumar	  This adds a generic DT based cpufreq driver for frequency management.
23295ceafd4SShawn Guo	  It supports both uniprocessor (UP) and symmetric multiprocessor (SMP)
23395ceafd4SShawn Guo	  systems which share clock and voltage across all CPUs.
23495ceafd4SShawn Guo
23595ceafd4SShawn Guo	  If in doubt, say N.
23695ceafd4SShawn Guo
237f41f4815SViresh Kumarif X86
238bb0a56ecSDave Jonessource "drivers/cpufreq/Kconfig.x86"
239f41f4815SViresh Kumarendif
240bb0a56ecSDave Jones
241f41f4815SViresh Kumarif ARM || ARM64
242f7d77079SKukjin Kimsource "drivers/cpufreq/Kconfig.arm"
243f41f4815SViresh Kumarendif
244f7d77079SKukjin Kim
245f41f4815SViresh Kumarif PPC32 || PPC64
246f41f4815SViresh Kumarsource "drivers/cpufreq/Kconfig.powerpc"
247f41f4815SViresh Kumarendif
24881c720c9SViresh Kumar
249f41f4815SViresh Kumarif AVR32
25081c720c9SViresh Kumarconfig AVR32_AT32AP_CPUFREQ
25181c720c9SViresh Kumar	bool "CPU frequency driver for AT32AP"
25281c720c9SViresh Kumar	depends on PLATFORM_AT32AP
25381c720c9SViresh Kumar	default n
25481c720c9SViresh Kumar	help
25581c720c9SViresh Kumar	  This enables the CPU frequency driver for AT32AP processors.
25681c720c9SViresh Kumar	  If in doubt, say N.
257f41f4815SViresh Kumarendif
25881c720c9SViresh Kumar
259f41f4815SViresh Kumarif IA64
260ab423e43SViresh Kumarconfig IA64_ACPI_CPUFREQ
261ab423e43SViresh Kumar	tristate "ACPI Processor P-States driver"
262ab423e43SViresh Kumar	depends on ACPI_PROCESSOR
263ab423e43SViresh Kumar	help
264ab423e43SViresh Kumar	This driver adds a CPUFreq driver which utilizes the ACPI
265ab423e43SViresh Kumar	Processor Performance States.
266ab423e43SViresh Kumar
267ab423e43SViresh Kumar	For details, take a look at <file:Documentation/cpu-freq/>.
268ab423e43SViresh Kumar
269ab423e43SViresh Kumar	If in doubt, say N.
270f41f4815SViresh Kumarendif
271ab423e43SViresh Kumar
272f41f4815SViresh Kumarif MIPS
2737a998935SViresh Kumarconfig LOONGSON2_CPUFREQ
2747a998935SViresh Kumar	tristate "Loongson2 CPUFreq Driver"
2757a998935SViresh Kumar	help
2767a998935SViresh Kumar	  This option adds a CPUFreq driver for loongson processors which
2777a998935SViresh Kumar	  support software configurable cpu frequency.
2787a998935SViresh Kumar
2797a998935SViresh Kumar	  Loongson2F and it's successors support this feature.
2807a998935SViresh Kumar
2817a998935SViresh Kumar	  For details, take a look at <file:Documentation/cpu-freq/>.
2827a998935SViresh Kumar
2837a998935SViresh Kumar	  If in doubt, say N.
2847a998935SViresh Kumar
285a0a22cf1SKelvin Cheungconfig LOONGSON1_CPUFREQ
286a0a22cf1SKelvin Cheung	tristate "Loongson1 CPUFreq Driver"
287a0a22cf1SKelvin Cheung	help
288a0a22cf1SKelvin Cheung	  This option adds a CPUFreq driver for loongson1 processors which
289a0a22cf1SKelvin Cheung	  support software configurable cpu frequency.
290a0a22cf1SKelvin Cheung
291a0a22cf1SKelvin Cheung	  For details, take a look at <file:Documentation/cpu-freq/>.
292a0a22cf1SKelvin Cheung
293a0a22cf1SKelvin Cheung	  If in doubt, say N.
294f41f4815SViresh Kumarendif
295a0a22cf1SKelvin Cheung
296f41f4815SViresh Kumarif SPARC64
297764295aeSViresh Kumarconfig SPARC_US3_CPUFREQ
298764295aeSViresh Kumar	tristate "UltraSPARC-III CPU Frequency driver"
299764295aeSViresh Kumar	help
300764295aeSViresh Kumar	  This adds the CPUFreq driver for UltraSPARC-III processors.
301764295aeSViresh Kumar
302764295aeSViresh Kumar	  For details, take a look at <file:Documentation/cpu-freq>.
303764295aeSViresh Kumar
304764295aeSViresh Kumar	  If in doubt, say N.
305764295aeSViresh Kumar
306764295aeSViresh Kumarconfig SPARC_US2E_CPUFREQ
307764295aeSViresh Kumar	tristate "UltraSPARC-IIe CPU Frequency driver"
308764295aeSViresh Kumar	help
309764295aeSViresh Kumar	  This adds the CPUFreq driver for UltraSPARC-IIe processors.
310764295aeSViresh Kumar
311764295aeSViresh Kumar	  For details, take a look at <file:Documentation/cpu-freq>.
312764295aeSViresh Kumar
313764295aeSViresh Kumar	  If in doubt, say N.
314f41f4815SViresh Kumarendif
315764295aeSViresh Kumar
316f41f4815SViresh Kumarif SUPERH
3177258267eSViresh Kumarconfig SH_CPU_FREQ
3187258267eSViresh Kumar	tristate "SuperH CPU Frequency driver"
3197258267eSViresh Kumar	help
3207258267eSViresh Kumar	  This adds the cpufreq driver for SuperH. Any CPU that supports
3217258267eSViresh Kumar	  clock rate rounding through the clock framework can use this
3227258267eSViresh Kumar	  driver. While it will make the kernel slightly larger, this is
3237258267eSViresh Kumar	  harmless for CPUs that don't support rate rounding. The driver
3247258267eSViresh Kumar	  will also generate a notice in the boot log before disabling
3257258267eSViresh Kumar	  itself if the CPU in question is not capable of rate rounding.
3267258267eSViresh Kumar
3277258267eSViresh Kumar	  For details, take a look at <file:Documentation/cpu-freq>.
3287258267eSViresh Kumar
3297258267eSViresh Kumar	  If unsure, say N.
330f41f4815SViresh Kumarendif
3317258267eSViresh Kumar
3322f249358STang Yuantianconfig QORIQ_CPUFREQ
3332f249358STang Yuantian	tristate "CPU frequency scaling driver for Freescale QorIQ SoCs"
3342f249358STang Yuantian	depends on OF && COMMON_CLK && (PPC_E500MC || ARM)
335ddd30ef4SArnd Bergmann	depends on !CPU_THERMAL || THERMAL
3362f249358STang Yuantian	select CLK_QORIQ
3372f249358STang Yuantian	help
3382f249358STang Yuantian	  This adds the CPUFreq driver support for Freescale QorIQ SoCs
3392f249358STang Yuantian	  which are capable of changing the CPU's frequency dynamically.
3402f249358STang Yuantian
341bb0a56ecSDave Jonesendif
342bb0a56ecSDave Jonesendmenu
343