xref: /linux/drivers/cpufreq/Kconfig (revision f56aad1d98f1c0c6df513abcd275a4d914adc1ef)
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"
1139bdcb44eSRafael J. Wysocki	select CPU_FREQ_GOV_SCHEDUTIL
1149bdcb44eSRafael J. Wysocki	select CPU_FREQ_GOV_PERFORMANCE
1159bdcb44eSRafael J. Wysocki	help
1169bdcb44eSRafael J. Wysocki	  Use the 'schedutil' CPUFreq governor by default. If unsure,
1179bdcb44eSRafael J. Wysocki	  have a look at the help section of that governor. The fallback
1189bdcb44eSRafael J. Wysocki	  governor will be 'performance'.
1199bdcb44eSRafael 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
2019bdcb44eSRafael J. Wysockiconfig CPU_FREQ_GOV_SCHEDUTIL
2029bdcb44eSRafael J. Wysocki	tristate "'schedutil' cpufreq policy governor"
2039bdcb44eSRafael J. Wysocki	depends on CPU_FREQ
2049bdcb44eSRafael J. Wysocki	select CPU_FREQ_GOV_ATTR_SET
2059bdcb44eSRafael J. Wysocki	select IRQ_WORK
2069bdcb44eSRafael J. Wysocki	help
2079bdcb44eSRafael J. Wysocki	  This governor makes decisions based on the utilization data provided
2089bdcb44eSRafael J. Wysocki	  by the scheduler.  It sets the CPU frequency to be proportional to
2099bdcb44eSRafael J. Wysocki	  the utilization/capacity ratio coming from the scheduler.  If the
2109bdcb44eSRafael J. Wysocki	  utilization is frequency-invariant, the new frequency is also
2119bdcb44eSRafael J. Wysocki	  proportional to the maximum available frequency.  If that is not the
2129bdcb44eSRafael J. Wysocki	  case, it is proportional to the current frequency of the CPU.  The
2139bdcb44eSRafael J. Wysocki	  frequency tipping point is at utilization/capacity equal to 80% in
2149bdcb44eSRafael J. Wysocki	  both cases.
2159bdcb44eSRafael J. Wysocki
2169bdcb44eSRafael J. Wysocki	  To compile this driver as a module, choose M here: the module will
2179bdcb44eSRafael J. Wysocki	  be called cpufreq_schedutil.
2189bdcb44eSRafael J. Wysocki
2199bdcb44eSRafael J. Wysocki	  If in doubt, say N.
2209bdcb44eSRafael 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
228*f56aad1dSViresh Kumar	select CPUFREQ_DT_PLATDEV
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
237*f56aad1dSViresh Kumarconfig CPUFREQ_DT_PLATDEV
238*f56aad1dSViresh Kumar	bool
239*f56aad1dSViresh Kumar	help
240*f56aad1dSViresh Kumar	  This adds a generic DT based cpufreq platdev driver for frequency
241*f56aad1dSViresh Kumar	  management.  This creates a 'cpufreq-dt' platform device, on the
242*f56aad1dSViresh Kumar	  supported platforms.
243*f56aad1dSViresh Kumar
244*f56aad1dSViresh Kumar	  If in doubt, say N.
245*f56aad1dSViresh Kumar
246f41f4815SViresh Kumarif X86
247bb0a56ecSDave Jonessource "drivers/cpufreq/Kconfig.x86"
248f41f4815SViresh Kumarendif
249bb0a56ecSDave Jones
250f41f4815SViresh Kumarif ARM || ARM64
251f7d77079SKukjin Kimsource "drivers/cpufreq/Kconfig.arm"
252f41f4815SViresh Kumarendif
253f7d77079SKukjin Kim
254f41f4815SViresh Kumarif PPC32 || PPC64
255f41f4815SViresh Kumarsource "drivers/cpufreq/Kconfig.powerpc"
256f41f4815SViresh Kumarendif
25781c720c9SViresh Kumar
258f41f4815SViresh Kumarif AVR32
25981c720c9SViresh Kumarconfig AVR32_AT32AP_CPUFREQ
26081c720c9SViresh Kumar	bool "CPU frequency driver for AT32AP"
26181c720c9SViresh Kumar	depends on PLATFORM_AT32AP
26281c720c9SViresh Kumar	default n
26381c720c9SViresh Kumar	help
26481c720c9SViresh Kumar	  This enables the CPU frequency driver for AT32AP processors.
26581c720c9SViresh Kumar	  If in doubt, say N.
266f41f4815SViresh Kumarendif
26781c720c9SViresh Kumar
268f41f4815SViresh Kumarif IA64
269ab423e43SViresh Kumarconfig IA64_ACPI_CPUFREQ
270ab423e43SViresh Kumar	tristate "ACPI Processor P-States driver"
271ab423e43SViresh Kumar	depends on ACPI_PROCESSOR
272ab423e43SViresh Kumar	help
273ab423e43SViresh Kumar	This driver adds a CPUFreq driver which utilizes the ACPI
274ab423e43SViresh Kumar	Processor Performance States.
275ab423e43SViresh Kumar
276ab423e43SViresh Kumar	For details, take a look at <file:Documentation/cpu-freq/>.
277ab423e43SViresh Kumar
278ab423e43SViresh Kumar	If in doubt, say N.
279f41f4815SViresh Kumarendif
280ab423e43SViresh Kumar
281f41f4815SViresh Kumarif MIPS
2827a998935SViresh Kumarconfig LOONGSON2_CPUFREQ
2837a998935SViresh Kumar	tristate "Loongson2 CPUFreq Driver"
2847a998935SViresh Kumar	help
2857a998935SViresh Kumar	  This option adds a CPUFreq driver for loongson processors which
2867a998935SViresh Kumar	  support software configurable cpu frequency.
2877a998935SViresh Kumar
2887a998935SViresh Kumar	  Loongson2F and it's successors support this feature.
2897a998935SViresh Kumar
2907a998935SViresh Kumar	  For details, take a look at <file:Documentation/cpu-freq/>.
2917a998935SViresh Kumar
2927a998935SViresh Kumar	  If in doubt, say N.
2937a998935SViresh Kumar
294a0a22cf1SKelvin Cheungconfig LOONGSON1_CPUFREQ
295a0a22cf1SKelvin Cheung	tristate "Loongson1 CPUFreq Driver"
296a0a22cf1SKelvin Cheung	help
297a0a22cf1SKelvin Cheung	  This option adds a CPUFreq driver for loongson1 processors which
298a0a22cf1SKelvin Cheung	  support software configurable cpu frequency.
299a0a22cf1SKelvin Cheung
300a0a22cf1SKelvin Cheung	  For details, take a look at <file:Documentation/cpu-freq/>.
301a0a22cf1SKelvin Cheung
302a0a22cf1SKelvin Cheung	  If in doubt, say N.
303f41f4815SViresh Kumarendif
304a0a22cf1SKelvin Cheung
305f41f4815SViresh Kumarif SPARC64
306764295aeSViresh Kumarconfig SPARC_US3_CPUFREQ
307764295aeSViresh Kumar	tristate "UltraSPARC-III CPU Frequency driver"
308764295aeSViresh Kumar	help
309764295aeSViresh Kumar	  This adds the CPUFreq driver for UltraSPARC-III processors.
310764295aeSViresh Kumar
311764295aeSViresh Kumar	  For details, take a look at <file:Documentation/cpu-freq>.
312764295aeSViresh Kumar
313764295aeSViresh Kumar	  If in doubt, say N.
314764295aeSViresh Kumar
315764295aeSViresh Kumarconfig SPARC_US2E_CPUFREQ
316764295aeSViresh Kumar	tristate "UltraSPARC-IIe CPU Frequency driver"
317764295aeSViresh Kumar	help
318764295aeSViresh Kumar	  This adds the CPUFreq driver for UltraSPARC-IIe processors.
319764295aeSViresh Kumar
320764295aeSViresh Kumar	  For details, take a look at <file:Documentation/cpu-freq>.
321764295aeSViresh Kumar
322764295aeSViresh Kumar	  If in doubt, say N.
323f41f4815SViresh Kumarendif
324764295aeSViresh Kumar
325f41f4815SViresh Kumarif SUPERH
3267258267eSViresh Kumarconfig SH_CPU_FREQ
3277258267eSViresh Kumar	tristate "SuperH CPU Frequency driver"
3287258267eSViresh Kumar	help
3297258267eSViresh Kumar	  This adds the cpufreq driver for SuperH. Any CPU that supports
3307258267eSViresh Kumar	  clock rate rounding through the clock framework can use this
3317258267eSViresh Kumar	  driver. While it will make the kernel slightly larger, this is
3327258267eSViresh Kumar	  harmless for CPUs that don't support rate rounding. The driver
3337258267eSViresh Kumar	  will also generate a notice in the boot log before disabling
3347258267eSViresh Kumar	  itself if the CPU in question is not capable of rate rounding.
3357258267eSViresh Kumar
3367258267eSViresh Kumar	  For details, take a look at <file:Documentation/cpu-freq>.
3377258267eSViresh Kumar
3387258267eSViresh Kumar	  If unsure, say N.
339f41f4815SViresh Kumarendif
3407258267eSViresh Kumar
3412f249358STang Yuantianconfig QORIQ_CPUFREQ
3422f249358STang Yuantian	tristate "CPU frequency scaling driver for Freescale QorIQ SoCs"
3432f249358STang Yuantian	depends on OF && COMMON_CLK && (PPC_E500MC || ARM)
344ddd30ef4SArnd Bergmann	depends on !CPU_THERMAL || THERMAL
3452f249358STang Yuantian	select CLK_QORIQ
3462f249358STang Yuantian	help
3472f249358STang Yuantian	  This adds the CPUFreq driver support for Freescale QorIQ SoCs
3482f249358STang Yuantian	  which are capable of changing the CPU's frequency dynamically.
3492f249358STang Yuantian
350bb0a56ecSDave Jonesendif
351bb0a56ecSDave Jonesendmenu
352