xref: /linux/drivers/cpufreq/Kconfig (revision 349619f064f9f75cfb6b698e7268cf5971ffe145)
1ec8f24b7SThomas Gleixner# SPDX-License-Identifier: GPL-2.0-only
2bb0a56ecSDave Jonesmenu "CPU Frequency scaling"
3bb0a56ecSDave Jones
41da177e4SLinus Torvaldsconfig CPU_FREQ
51da177e4SLinus Torvalds	bool "CPU Frequency scaling"
683fe27eaSPranith Kumar	select SRCU
71da177e4SLinus Torvalds	help
81da177e4SLinus Torvalds	  CPU Frequency scaling allows you to change the clock speed of
91da177e4SLinus Torvalds	  CPUs on the fly. This is a nice method to save power, because
101da177e4SLinus Torvalds	  the lower the CPU clock speed, the less power the CPU consumes.
111da177e4SLinus Torvalds
121da177e4SLinus Torvalds	  Note that this driver doesn't automatically change the CPU
131da177e4SLinus Torvalds	  clock speed, you need to either enable a dynamic cpufreq governor
141da177e4SLinus Torvalds	  (see below) after boot, or use a userspace tool.
151da177e4SLinus Torvalds
16733dda9cSAlexander Monakov	  For details, take a look at
17733dda9cSAlexander Monakov	  <file:Documentation/admin-guide/pm/cpufreq.rst>.
181da177e4SLinus Torvalds
191da177e4SLinus Torvalds	  If in doubt, say N.
201da177e4SLinus Torvalds
211da177e4SLinus Torvaldsif CPU_FREQ
221da177e4SLinus Torvalds
232d0c58adSRafael J. Wysockiconfig CPU_FREQ_GOV_ATTR_SET
242d0c58adSRafael J. Wysocki	bool
252d0c58adSRafael J. Wysocki
261e15f295SLarry Fingerconfig CPU_FREQ_GOV_COMMON
272d0c58adSRafael J. Wysocki	select CPU_FREQ_GOV_ATTR_SET
28e6f03657SRafael J. Wysocki	select IRQ_WORK
291e15f295SLarry Finger	bool
301e15f295SLarry Finger
311da177e4SLinus Torvaldsconfig CPU_FREQ_STAT
321aefc75bSRafael J. Wysocki	bool "CPU frequency transition statistics"
331da177e4SLinus Torvalds	help
341aefc75bSRafael J. Wysocki	  Export CPU frequency statistics information through sysfs.
359101be53SMike Frysinger
369101be53SMike Frysinger	  If in doubt, say N.
371da177e4SLinus Torvalds
381da177e4SLinus Torvaldschoice
391da177e4SLinus Torvalds	prompt "Default CPUFreq governor"
40*349619f0SArnd Bergmann	default CPU_FREQ_DEFAULT_GOV_USERSPACE if ARM_SA1110_CPUFREQ
41f259eab3SValentin Schneider	default CPU_FREQ_DEFAULT_GOV_SCHEDUTIL if ARM64 || ARM
42a00ec387SRafael J. Wysocki	default CPU_FREQ_DEFAULT_GOV_SCHEDUTIL if X86_INTEL_PSTATE && SMP
431da177e4SLinus Torvalds	default CPU_FREQ_DEFAULT_GOV_PERFORMANCE
441da177e4SLinus Torvalds	help
451da177e4SLinus Torvalds	  This option sets which CPUFreq governor shall be loaded at
46a00ec387SRafael J. Wysocki	  startup. If in doubt, use the default setting.
471da177e4SLinus Torvalds
481da177e4SLinus Torvaldsconfig CPU_FREQ_DEFAULT_GOV_PERFORMANCE
491da177e4SLinus Torvalds	bool "performance"
501da177e4SLinus Torvalds	select CPU_FREQ_GOV_PERFORMANCE
511da177e4SLinus Torvalds	help
521da177e4SLinus Torvalds	  Use the CPUFreq governor 'performance' as default. This sets
531da177e4SLinus Torvalds	  the frequency statically to the highest frequency supported by
541da177e4SLinus Torvalds	  the CPU.
551da177e4SLinus Torvalds
5630d221dbSAlessandro Guidoconfig CPU_FREQ_DEFAULT_GOV_POWERSAVE
5730d221dbSAlessandro Guido	bool "powersave"
5830d221dbSAlessandro Guido	select CPU_FREQ_GOV_POWERSAVE
5930d221dbSAlessandro Guido	help
6030d221dbSAlessandro Guido	  Use the CPUFreq governor 'powersave' as default. This sets
6130d221dbSAlessandro Guido	  the frequency statically to the lowest frequency supported by
6230d221dbSAlessandro Guido	  the CPU.
6330d221dbSAlessandro Guido
641da177e4SLinus Torvaldsconfig CPU_FREQ_DEFAULT_GOV_USERSPACE
651da177e4SLinus Torvalds	bool "userspace"
661da177e4SLinus Torvalds	select CPU_FREQ_GOV_USERSPACE
671da177e4SLinus Torvalds	help
681da177e4SLinus Torvalds	  Use the CPUFreq governor 'userspace' as default. This allows
690211a9c8SFrederik Schwarzer	  you to set the CPU frequency manually or when a userspace
701da177e4SLinus Torvalds	  program shall be able to set the CPU dynamically without having
711da177e4SLinus Torvalds	  to enable the userspace governor manually.
721da177e4SLinus Torvalds
731c256245SThomas Renningerconfig CPU_FREQ_DEFAULT_GOV_ONDEMAND
741c256245SThomas Renninger	bool "ondemand"
75db865272SRafael J. Wysocki	depends on !(X86_INTEL_PSTATE && SMP)
761c256245SThomas Renninger	select CPU_FREQ_GOV_ONDEMAND
771c256245SThomas Renninger	select CPU_FREQ_GOV_PERFORMANCE
781c256245SThomas Renninger	help
791c256245SThomas Renninger	  Use the CPUFreq governor 'ondemand' as default. This allows
801c256245SThomas Renninger	  you to get a full dynamic frequency capable system by simply
811c256245SThomas Renninger	  loading your cpufreq low-level hardware driver.
821c256245SThomas Renninger	  Be aware that not all cpufreq drivers support the ondemand
831c256245SThomas Renninger	  governor. If unsure have a look at the help section of the
841c256245SThomas Renninger	  driver. Fallback governor will be the performance governor.
851c256245SThomas Renninger
861c256245SThomas Renningerconfig CPU_FREQ_DEFAULT_GOV_CONSERVATIVE
871c256245SThomas Renninger	bool "conservative"
88db865272SRafael J. Wysocki	depends on !(X86_INTEL_PSTATE && SMP)
891c256245SThomas Renninger	select CPU_FREQ_GOV_CONSERVATIVE
901c256245SThomas Renninger	select CPU_FREQ_GOV_PERFORMANCE
911c256245SThomas Renninger	help
921c256245SThomas Renninger	  Use the CPUFreq governor 'conservative' 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 conservative
961c256245SThomas Renninger	  governor. If unsure have a look at the help section of the
971c256245SThomas Renninger	  driver. Fallback governor will be the performance governor.
989bdcb44eSRafael J. Wysocki
999bdcb44eSRafael J. Wysockiconfig CPU_FREQ_DEFAULT_GOV_SCHEDUTIL
1009bdcb44eSRafael J. Wysocki	bool "schedutil"
101cfe9492fSArnd Bergmann	depends on SMP
1029bdcb44eSRafael J. Wysocki	select CPU_FREQ_GOV_SCHEDUTIL
1039bdcb44eSRafael J. Wysocki	select CPU_FREQ_GOV_PERFORMANCE
1049bdcb44eSRafael J. Wysocki	help
1059bdcb44eSRafael J. Wysocki	  Use the 'schedutil' CPUFreq governor by default. If unsure,
1069bdcb44eSRafael J. Wysocki	  have a look at the help section of that governor. The fallback
1079bdcb44eSRafael J. Wysocki	  governor will be 'performance'.
1089bdcb44eSRafael J. Wysocki
1091da177e4SLinus Torvaldsendchoice
1101da177e4SLinus Torvalds
1111da177e4SLinus Torvaldsconfig CPU_FREQ_GOV_PERFORMANCE
1121da177e4SLinus Torvalds	tristate "'performance' governor"
1131da177e4SLinus Torvalds	help
1141da177e4SLinus Torvalds	  This cpufreq governor sets the frequency statically to the
1151da177e4SLinus Torvalds	  highest available CPU frequency.
1161da177e4SLinus Torvalds
1179101be53SMike Frysinger	  To compile this driver as a module, choose M here: the
1189101be53SMike Frysinger	  module will be called cpufreq_performance.
1199101be53SMike Frysinger
1201da177e4SLinus Torvalds	  If in doubt, say Y.
1211da177e4SLinus Torvalds
1221da177e4SLinus Torvaldsconfig CPU_FREQ_GOV_POWERSAVE
1231da177e4SLinus Torvalds	tristate "'powersave' governor"
1241da177e4SLinus Torvalds	help
1251da177e4SLinus Torvalds	  This cpufreq governor sets the frequency statically to the
1261da177e4SLinus Torvalds	  lowest 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_powersave.
1309101be53SMike Frysinger
1311da177e4SLinus Torvalds	  If in doubt, say Y.
1321da177e4SLinus Torvalds
1331da177e4SLinus Torvaldsconfig CPU_FREQ_GOV_USERSPACE
1341da177e4SLinus Torvalds	tristate "'userspace' governor for userspace frequency scaling"
1351da177e4SLinus Torvalds	help
1361da177e4SLinus Torvalds	  Enable this cpufreq governor when you either want to set the
1370211a9c8SFrederik Schwarzer	  CPU frequency manually or when a userspace program shall
1381da177e4SLinus Torvalds	  be able to set the CPU dynamically, like on LART
1394c41251eSErik Mouw	  <http://www.lartmaker.nl/>.
1401da177e4SLinus Torvalds
1419101be53SMike Frysinger	  To compile this driver as a module, choose M here: the
1429101be53SMike Frysinger	  module will be called cpufreq_userspace.
1439101be53SMike Frysinger
1441da177e4SLinus Torvalds	  If in doubt, say Y.
1451da177e4SLinus Torvalds
1461da177e4SLinus Torvaldsconfig CPU_FREQ_GOV_ONDEMAND
1471da177e4SLinus Torvalds	tristate "'ondemand' cpufreq policy governor"
1481e15f295SLarry Finger	select CPU_FREQ_GOV_COMMON
1491da177e4SLinus Torvalds	help
1501da177e4SLinus Torvalds	  'ondemand' - This driver adds a dynamic cpufreq policy governor.
1511da177e4SLinus Torvalds	  The governor does a periodic polling and
1521da177e4SLinus Torvalds	  changes frequency based on the CPU utilization.
1531da177e4SLinus Torvalds	  The support for this governor depends on CPU capability to
1541da177e4SLinus Torvalds	  do fast frequency switching (i.e, very low latency frequency
1551da177e4SLinus Torvalds	  transitions).
1561da177e4SLinus Torvalds
1579101be53SMike Frysinger	  To compile this driver as a module, choose M here: the
1589101be53SMike Frysinger	  module will be called cpufreq_ondemand.
1599101be53SMike Frysinger
160733dda9cSAlexander Monakov	  For details, take a look at
161733dda9cSAlexander Monakov	  <file:Documentation/admin-guide/pm/cpufreq.rst>.
1621da177e4SLinus Torvalds
1631da177e4SLinus Torvalds	  If in doubt, say N.
1641da177e4SLinus Torvalds
165b9170836SDave Jonesconfig CPU_FREQ_GOV_CONSERVATIVE
166b9170836SDave Jones	tristate "'conservative' cpufreq governor"
167b9170836SDave Jones	depends on CPU_FREQ
1681e15f295SLarry Finger	select CPU_FREQ_GOV_COMMON
169b9170836SDave Jones	help
170b9170836SDave Jones	  'conservative' - this driver is rather similar to the 'ondemand'
171b9170836SDave Jones	  governor both in its source code and its purpose, the difference is
172b9170836SDave Jones	  its optimisation for better suitability in a battery powered
173b9170836SDave Jones	  environment.  The frequency is gracefully increased and decreased
174b9170836SDave Jones	  rather than jumping to 100% when speed is required.
175b9170836SDave Jones
176b9170836SDave Jones	  If you have a desktop machine then you should really be considering
177b9170836SDave Jones	  the 'ondemand' governor instead, however if you are using a laptop,
178b9170836SDave Jones	  PDA or even an AMD64 based computer (due to the unacceptable
179b9170836SDave Jones	  step-by-step latency issues between the minimum and maximum frequency
180b9170836SDave Jones	  transitions in the CPU) you will probably want to use this governor.
181b9170836SDave Jones
1829101be53SMike Frysinger	  To compile this driver as a module, choose M here: the
1839101be53SMike Frysinger	  module will be called cpufreq_conservative.
1849101be53SMike Frysinger
185733dda9cSAlexander Monakov	  For details, take a look at
186733dda9cSAlexander Monakov	  <file:Documentation/admin-guide/pm/cpufreq.rst>.
187b9170836SDave Jones
188b9170836SDave Jones	  If in doubt, say N.
189b9170836SDave Jones
1909bdcb44eSRafael J. Wysockiconfig CPU_FREQ_GOV_SCHEDUTIL
19158919e83SRafael J. Wysocki	bool "'schedutil' cpufreq policy governor"
192bf7cdff1SRafael J. Wysocki	depends on CPU_FREQ && SMP
1939bdcb44eSRafael J. Wysocki	select CPU_FREQ_GOV_ATTR_SET
1949bdcb44eSRafael J. Wysocki	select IRQ_WORK
1959bdcb44eSRafael J. Wysocki	help
1969bdcb44eSRafael J. Wysocki	  This governor makes decisions based on the utilization data provided
1979bdcb44eSRafael J. Wysocki	  by the scheduler.  It sets the CPU frequency to be proportional to
1989bdcb44eSRafael J. Wysocki	  the utilization/capacity ratio coming from the scheduler.  If the
1999bdcb44eSRafael J. Wysocki	  utilization is frequency-invariant, the new frequency is also
2009bdcb44eSRafael J. Wysocki	  proportional to the maximum available frequency.  If that is not the
2019bdcb44eSRafael J. Wysocki	  case, it is proportional to the current frequency of the CPU.  The
2029bdcb44eSRafael J. Wysocki	  frequency tipping point is at utilization/capacity equal to 80% in
2039bdcb44eSRafael J. Wysocki	  both cases.
2049bdcb44eSRafael J. Wysocki
2059bdcb44eSRafael J. Wysocki	  If in doubt, say N.
2069bdcb44eSRafael J. Wysocki
207f41f4815SViresh Kumarcomment "CPU frequency scaling drivers"
208f41f4815SViresh Kumar
209bbcf0719SViresh Kumarconfig CPUFREQ_DT
210bbcf0719SViresh Kumar	tristate "Generic DT based cpufreq driver"
2115fbfbcd3SViresh Kumar	depends on HAVE_CLK && OF
212f56aad1dSViresh Kumar	select CPUFREQ_DT_PLATDEV
213109df086SMark Brown	select PM_OPP
21495ceafd4SShawn Guo	help
215bbcf0719SViresh Kumar	  This adds a generic DT based cpufreq driver for frequency management.
21695ceafd4SShawn Guo	  It supports both uniprocessor (UP) and symmetric multiprocessor (SMP)
21733cc4fc1SViresh Kumar	  systems.
21895ceafd4SShawn Guo
21995ceafd4SShawn Guo	  If in doubt, say N.
22095ceafd4SShawn Guo
221f56aad1dSViresh Kumarconfig CPUFREQ_DT_PLATDEV
222f56aad1dSViresh Kumar	bool
223f56aad1dSViresh Kumar	help
224f56aad1dSViresh Kumar	  This adds a generic DT based cpufreq platdev driver for frequency
225f56aad1dSViresh Kumar	  management.  This creates a 'cpufreq-dt' platform device, on the
226f56aad1dSViresh Kumar	  supported platforms.
227f56aad1dSViresh Kumar
228f56aad1dSViresh Kumar	  If in doubt, say N.
229f56aad1dSViresh Kumar
230f41f4815SViresh Kumarif X86
231bb0a56ecSDave Jonessource "drivers/cpufreq/Kconfig.x86"
232f41f4815SViresh Kumarendif
233bb0a56ecSDave Jones
234f41f4815SViresh Kumarif ARM || ARM64
235f7d77079SKukjin Kimsource "drivers/cpufreq/Kconfig.arm"
236f41f4815SViresh Kumarendif
237f7d77079SKukjin Kim
238f41f4815SViresh Kumarif PPC32 || PPC64
239f41f4815SViresh Kumarsource "drivers/cpufreq/Kconfig.powerpc"
240f41f4815SViresh Kumarendif
24181c720c9SViresh Kumar
242f41f4815SViresh Kumarif IA64
243ab423e43SViresh Kumarconfig IA64_ACPI_CPUFREQ
244ab423e43SViresh Kumar	tristate "ACPI Processor P-States driver"
245ab423e43SViresh Kumar	depends on ACPI_PROCESSOR
246ab423e43SViresh Kumar	help
247ab423e43SViresh Kumar	This driver adds a CPUFreq driver which utilizes the ACPI
248ab423e43SViresh Kumar	Processor Performance States.
249ab423e43SViresh Kumar
250ab423e43SViresh Kumar	If in doubt, say N.
251f41f4815SViresh Kumarendif
252ab423e43SViresh Kumar
253f41f4815SViresh Kumarif MIPS
254cdb56cbfSMarkus Mayerconfig BMIPS_CPUFREQ
255cdb56cbfSMarkus Mayer	tristate "BMIPS CPUfreq Driver"
256cdb56cbfSMarkus Mayer	help
257cdb56cbfSMarkus Mayer	  This option adds a CPUfreq driver for BMIPS processors with
258cdb56cbfSMarkus Mayer	  support for configurable CPU frequency.
259cdb56cbfSMarkus Mayer
260cdb56cbfSMarkus Mayer	  For now, BMIPS5 chips are supported (such as the Broadcom 7425).
261cdb56cbfSMarkus Mayer
262cdb56cbfSMarkus Mayer	  If in doubt, say N.
263cdb56cbfSMarkus Mayer
2647a998935SViresh Kumarconfig LOONGSON2_CPUFREQ
2657a998935SViresh Kumar	tristate "Loongson2 CPUFreq Driver"
2660d307935SJames Hogan	depends on LEMOTE_MACH2F
2677a998935SViresh Kumar	help
2687a998935SViresh Kumar	  This option adds a CPUFreq driver for loongson processors which
2697a998935SViresh Kumar	  support software configurable cpu frequency.
2707a998935SViresh Kumar
2719d822ccfSRandy Dunlap	  Loongson2F and its successors support this feature.
2727a998935SViresh Kumar
2737a998935SViresh Kumar	  If in doubt, say N.
2747a998935SViresh Kumar
275a0a22cf1SKelvin Cheungconfig LOONGSON1_CPUFREQ
276a0a22cf1SKelvin Cheung	tristate "Loongson1 CPUFreq Driver"
2770d307935SJames Hogan	depends on LOONGSON1_LS1B
278a0a22cf1SKelvin Cheung	help
279a0a22cf1SKelvin Cheung	  This option adds a CPUFreq driver for loongson1 processors which
280a0a22cf1SKelvin Cheung	  support software configurable cpu frequency.
281a0a22cf1SKelvin Cheung
282a0a22cf1SKelvin Cheung	  If in doubt, say N.
283f41f4815SViresh Kumarendif
284a0a22cf1SKelvin Cheung
285f41f4815SViresh Kumarif SPARC64
286764295aeSViresh Kumarconfig SPARC_US3_CPUFREQ
287764295aeSViresh Kumar	tristate "UltraSPARC-III CPU Frequency driver"
288764295aeSViresh Kumar	help
289764295aeSViresh Kumar	  This adds the CPUFreq driver for UltraSPARC-III processors.
290764295aeSViresh Kumar
291764295aeSViresh Kumar	  If in doubt, say N.
292764295aeSViresh Kumar
293764295aeSViresh Kumarconfig SPARC_US2E_CPUFREQ
294764295aeSViresh Kumar	tristate "UltraSPARC-IIe CPU Frequency driver"
295764295aeSViresh Kumar	help
296764295aeSViresh Kumar	  This adds the CPUFreq driver for UltraSPARC-IIe processors.
297764295aeSViresh Kumar
298764295aeSViresh Kumar	  If in doubt, say N.
299f41f4815SViresh Kumarendif
300764295aeSViresh Kumar
301f41f4815SViresh Kumarif SUPERH
3027258267eSViresh Kumarconfig SH_CPU_FREQ
3037258267eSViresh Kumar	tristate "SuperH CPU Frequency driver"
3047258267eSViresh Kumar	help
3057258267eSViresh Kumar	  This adds the cpufreq driver for SuperH. Any CPU that supports
3067258267eSViresh Kumar	  clock rate rounding through the clock framework can use this
3077258267eSViresh Kumar	  driver. While it will make the kernel slightly larger, this is
3087258267eSViresh Kumar	  harmless for CPUs that don't support rate rounding. The driver
3097258267eSViresh Kumar	  will also generate a notice in the boot log before disabling
3107258267eSViresh Kumar	  itself if the CPU in question is not capable of rate rounding.
3117258267eSViresh Kumar
3127258267eSViresh Kumar	  If unsure, say N.
313f41f4815SViresh Kumarendif
3147258267eSViresh Kumar
3152f249358STang Yuantianconfig QORIQ_CPUFREQ
3162f249358STang Yuantian	tristate "CPU frequency scaling driver for Freescale QorIQ SoCs"
3171f1755afSGeert Uytterhoeven	depends on OF && COMMON_CLK
3181f1755afSGeert Uytterhoeven	depends on PPC_E500MC || SOC_LS1021A || ARCH_LAYERSCAPE || COMPILE_TEST
3192f249358STang Yuantian	select CLK_QORIQ
3202f249358STang Yuantian	help
3212f249358STang Yuantian	  This adds the CPUFreq driver support for Freescale QorIQ SoCs
3222f249358STang Yuantian	  which are capable of changing the CPU's frequency dynamically.
3232f249358STang Yuantian
324bb0a56ecSDave Jonesendif
325bb0a56ecSDave Jonesendmenu
326