358 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			358 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
# SPDX-License-Identifier: GPL-2.0-only
 | 
						|
menu "CPU Frequency scaling"
 | 
						|
 | 
						|
config CPU_FREQ
 | 
						|
	bool "CPU Frequency scaling"
 | 
						|
	select SRCU
 | 
						|
	help
 | 
						|
	  CPU Frequency scaling allows you to change the clock speed of 
 | 
						|
	  CPUs on the fly. This is a nice method to save power, because 
 | 
						|
	  the lower the CPU clock speed, the less power the CPU consumes.
 | 
						|
 | 
						|
	  Note that this driver doesn't automatically change the CPU
 | 
						|
	  clock speed, you need to either enable a dynamic cpufreq governor
 | 
						|
	  (see below) after boot, or use a userspace tool.
 | 
						|
 | 
						|
	  For details, take a look at
 | 
						|
	  <file:Documentation/admin-guide/pm/cpufreq.rst>.
 | 
						|
 | 
						|
	  If in doubt, say N.
 | 
						|
 | 
						|
if CPU_FREQ
 | 
						|
 | 
						|
config CPU_FREQ_GOV_ATTR_SET
 | 
						|
	bool
 | 
						|
 | 
						|
config CPU_FREQ_GOV_COMMON
 | 
						|
	select CPU_FREQ_GOV_ATTR_SET
 | 
						|
	select IRQ_WORK
 | 
						|
	bool
 | 
						|
 | 
						|
config CPU_FREQ_STAT
 | 
						|
	bool "CPU frequency transition statistics"
 | 
						|
	help
 | 
						|
	  Export CPU frequency statistics information through sysfs.
 | 
						|
 | 
						|
	  If in doubt, say N.
 | 
						|
 | 
						|
choice
 | 
						|
	prompt "Default CPUFreq governor"
 | 
						|
	default CPU_FREQ_DEFAULT_GOV_USERSPACE if ARM_SA1100_CPUFREQ || ARM_SA1110_CPUFREQ
 | 
						|
	default CPU_FREQ_DEFAULT_GOV_SCHEDUTIL if ARM64 || ARM
 | 
						|
	default CPU_FREQ_DEFAULT_GOV_SCHEDUTIL if X86_INTEL_PSTATE && SMP
 | 
						|
	default CPU_FREQ_DEFAULT_GOV_PERFORMANCE
 | 
						|
	help
 | 
						|
	  This option sets which CPUFreq governor shall be loaded at
 | 
						|
	  startup. If in doubt, use the default setting.
 | 
						|
 | 
						|
config CPU_FREQ_DEFAULT_GOV_PERFORMANCE
 | 
						|
	bool "performance"
 | 
						|
	select CPU_FREQ_GOV_PERFORMANCE
 | 
						|
	help
 | 
						|
	  Use the CPUFreq governor 'performance' as default. This sets
 | 
						|
	  the frequency statically to the highest frequency supported by
 | 
						|
	  the CPU.
 | 
						|
 | 
						|
config CPU_FREQ_DEFAULT_GOV_POWERSAVE
 | 
						|
	bool "powersave"
 | 
						|
	select CPU_FREQ_GOV_POWERSAVE
 | 
						|
	help
 | 
						|
	  Use the CPUFreq governor 'powersave' as default. This sets
 | 
						|
	  the frequency statically to the lowest frequency supported by
 | 
						|
	  the CPU.
 | 
						|
 | 
						|
config CPU_FREQ_DEFAULT_GOV_USERSPACE
 | 
						|
	bool "userspace"
 | 
						|
	select CPU_FREQ_GOV_USERSPACE
 | 
						|
	help
 | 
						|
	  Use the CPUFreq governor 'userspace' as default. This allows
 | 
						|
	  you to set the CPU frequency manually or when a userspace 
 | 
						|
	  program shall be able to set the CPU dynamically without having
 | 
						|
	  to enable the userspace governor manually.
 | 
						|
 | 
						|
config CPU_FREQ_DEFAULT_GOV_ONDEMAND
 | 
						|
	bool "ondemand"
 | 
						|
	depends on !(X86_INTEL_PSTATE && SMP)
 | 
						|
	select CPU_FREQ_GOV_ONDEMAND
 | 
						|
	select CPU_FREQ_GOV_PERFORMANCE
 | 
						|
	help
 | 
						|
	  Use the CPUFreq governor 'ondemand' as default. This allows
 | 
						|
	  you to get a full dynamic frequency capable system by simply
 | 
						|
	  loading your cpufreq low-level hardware driver.
 | 
						|
	  Be aware that not all cpufreq drivers support the ondemand
 | 
						|
	  governor. If unsure have a look at the help section of the
 | 
						|
	  driver. Fallback governor will be the performance governor.
 | 
						|
 | 
						|
config CPU_FREQ_DEFAULT_GOV_CONSERVATIVE
 | 
						|
	bool "conservative"
 | 
						|
	depends on !(X86_INTEL_PSTATE && SMP)
 | 
						|
	select CPU_FREQ_GOV_CONSERVATIVE
 | 
						|
	select CPU_FREQ_GOV_PERFORMANCE
 | 
						|
	help
 | 
						|
	  Use the CPUFreq governor 'conservative' as default. This allows
 | 
						|
	  you to get a full dynamic frequency capable system by simply
 | 
						|
	  loading your cpufreq low-level hardware driver.
 | 
						|
	  Be aware that not all cpufreq drivers support the conservative
 | 
						|
	  governor. If unsure have a look at the help section of the
 | 
						|
	  driver. Fallback governor will be the performance governor.
 | 
						|
 | 
						|
config CPU_FREQ_DEFAULT_GOV_SCHEDUTIL
 | 
						|
	bool "schedutil"
 | 
						|
	depends on SMP
 | 
						|
	select CPU_FREQ_GOV_SCHEDUTIL
 | 
						|
	select CPU_FREQ_GOV_PERFORMANCE
 | 
						|
	help
 | 
						|
	  Use the 'schedutil' CPUFreq governor by default. If unsure,
 | 
						|
	  have a look at the help section of that governor. The fallback
 | 
						|
	  governor will be 'performance'.
 | 
						|
 | 
						|
config CPU_FREQ_DEFAULT_GOV_INTERACTIVE
 | 
						|
	bool "interactive"
 | 
						|
	depends on NO_GKI
 | 
						|
	select CPU_FREQ_GOV_INTERACTIVE
 | 
						|
	select CPU_FREQ_GOV_PERFORMANCE
 | 
						|
	help
 | 
						|
	  Use the CPUFreq governor 'interactive' as default. This allows
 | 
						|
	  you to get a full dynamic cpu frequency capable system by simply
 | 
						|
	  loading your cpufreq low-level hardware driver, using the
 | 
						|
	  'interactive' governor for latency-sensitive workloads.
 | 
						|
 | 
						|
endchoice
 | 
						|
 | 
						|
config CPU_FREQ_GOV_PERFORMANCE
 | 
						|
	tristate "'performance' governor"
 | 
						|
	help
 | 
						|
	  This cpufreq governor sets the frequency statically to the
 | 
						|
	  highest available CPU frequency.
 | 
						|
 | 
						|
	  To compile this driver as a module, choose M here: the
 | 
						|
	  module will be called cpufreq_performance.
 | 
						|
 | 
						|
	  If in doubt, say Y.
 | 
						|
 | 
						|
config CPU_FREQ_GOV_POWERSAVE
 | 
						|
	tristate "'powersave' governor"
 | 
						|
	help
 | 
						|
	  This cpufreq governor sets the frequency statically to the
 | 
						|
	  lowest available CPU frequency.
 | 
						|
 | 
						|
	  To compile this driver as a module, choose M here: the
 | 
						|
	  module will be called cpufreq_powersave.
 | 
						|
 | 
						|
	  If in doubt, say Y.
 | 
						|
 | 
						|
config CPU_FREQ_GOV_USERSPACE
 | 
						|
	tristate "'userspace' governor for userspace frequency scaling"
 | 
						|
	help
 | 
						|
	  Enable this cpufreq governor when you either want to set the
 | 
						|
	  CPU frequency manually or when a userspace program shall
 | 
						|
	  be able to set the CPU dynamically, like on LART 
 | 
						|
	  <http://www.lartmaker.nl/>.
 | 
						|
 | 
						|
	  To compile this driver as a module, choose M here: the
 | 
						|
	  module will be called cpufreq_userspace.
 | 
						|
 | 
						|
	  If in doubt, say Y.
 | 
						|
 | 
						|
config CPU_FREQ_GOV_ONDEMAND
 | 
						|
	tristate "'ondemand' cpufreq policy governor"
 | 
						|
	select CPU_FREQ_GOV_COMMON
 | 
						|
	help
 | 
						|
	  'ondemand' - This driver adds a dynamic cpufreq policy governor.
 | 
						|
	  The governor does a periodic polling and 
 | 
						|
	  changes frequency based on the CPU utilization.
 | 
						|
	  The support for this governor depends on CPU capability to
 | 
						|
	  do fast frequency switching (i.e, very low latency frequency
 | 
						|
	  transitions). 
 | 
						|
 | 
						|
	  To compile this driver as a module, choose M here: the
 | 
						|
	  module will be called cpufreq_ondemand.
 | 
						|
 | 
						|
	  For details, take a look at
 | 
						|
	  <file:Documentation/admin-guide/pm/cpufreq.rst>.
 | 
						|
 | 
						|
	  If in doubt, say N.
 | 
						|
 | 
						|
config CPU_FREQ_GOV_CONSERVATIVE
 | 
						|
	tristate "'conservative' cpufreq governor"
 | 
						|
	depends on CPU_FREQ
 | 
						|
	select CPU_FREQ_GOV_COMMON
 | 
						|
	help
 | 
						|
	  'conservative' - this driver is rather similar to the 'ondemand'
 | 
						|
	  governor both in its source code and its purpose, the difference is
 | 
						|
	  its optimisation for better suitability in a battery powered
 | 
						|
	  environment.  The frequency is gracefully increased and decreased
 | 
						|
	  rather than jumping to 100% when speed is required.
 | 
						|
 | 
						|
	  If you have a desktop machine then you should really be considering
 | 
						|
	  the 'ondemand' governor instead, however if you are using a laptop,
 | 
						|
	  PDA or even an AMD64 based computer (due to the unacceptable
 | 
						|
	  step-by-step latency issues between the minimum and maximum frequency
 | 
						|
	  transitions in the CPU) you will probably want to use this governor.
 | 
						|
 | 
						|
	  To compile this driver as a module, choose M here: the
 | 
						|
	  module will be called cpufreq_conservative.
 | 
						|
 | 
						|
	  For details, take a look at
 | 
						|
	  <file:Documentation/admin-guide/pm/cpufreq.rst>.
 | 
						|
 | 
						|
	  If in doubt, say N.
 | 
						|
 | 
						|
config CPU_FREQ_GOV_SCHEDUTIL
 | 
						|
	bool "'schedutil' cpufreq policy governor"
 | 
						|
	depends on CPU_FREQ && SMP
 | 
						|
	select CPU_FREQ_GOV_ATTR_SET
 | 
						|
	select IRQ_WORK
 | 
						|
	help
 | 
						|
	  This governor makes decisions based on the utilization data provided
 | 
						|
	  by the scheduler.  It sets the CPU frequency to be proportional to
 | 
						|
	  the utilization/capacity ratio coming from the scheduler.  If the
 | 
						|
	  utilization is frequency-invariant, the new frequency is also
 | 
						|
	  proportional to the maximum available frequency.  If that is not the
 | 
						|
	  case, it is proportional to the current frequency of the CPU.  The
 | 
						|
	  frequency tipping point is at utilization/capacity equal to 80% in
 | 
						|
	  both cases.
 | 
						|
 | 
						|
	  If in doubt, say N.
 | 
						|
 | 
						|
config CPU_FREQ_GOV_INTERACTIVE
 | 
						|
	tristate "'interactive' cpufreq policy governor"
 | 
						|
	depends on NO_GKI
 | 
						|
	depends on CPU_FREQ
 | 
						|
	select CPU_FREQ_GOV_ATTR_SET
 | 
						|
	select IRQ_WORK
 | 
						|
	help
 | 
						|
	  'interactive' - This driver adds a dynamic cpufreq policy governor
 | 
						|
	  designed for latency-sensitive workloads.
 | 
						|
 | 
						|
	  This governor attempts to reduce the latency of clock
 | 
						|
	  increases so that the system is more responsive to
 | 
						|
	  interactive workloads.
 | 
						|
 | 
						|
	  To compile this driver as a module, choose M here: the
 | 
						|
	  module will be called cpufreq_interactive.
 | 
						|
 | 
						|
	  For details, take a look at linux/Documentation/cpu-freq.
 | 
						|
 | 
						|
	  If in doubt, say N.
 | 
						|
 | 
						|
comment "CPU frequency scaling drivers"
 | 
						|
 | 
						|
config CPUFREQ_DT
 | 
						|
	tristate "Generic DT based cpufreq driver"
 | 
						|
	depends on HAVE_CLK && OF
 | 
						|
	select CPUFREQ_DT_PLATDEV if !ARM_ROCKCHIP_CPUFREQ
 | 
						|
	select PM_OPP
 | 
						|
	help
 | 
						|
	  This adds a generic DT based cpufreq driver for frequency management.
 | 
						|
	  It supports both uniprocessor (UP) and symmetric multiprocessor (SMP)
 | 
						|
	  systems.
 | 
						|
 | 
						|
	  If in doubt, say N.
 | 
						|
 | 
						|
config CPUFREQ_DT_PLATDEV
 | 
						|
	bool
 | 
						|
	help
 | 
						|
	  This adds a generic DT based cpufreq platdev driver for frequency
 | 
						|
	  management.  This creates a 'cpufreq-dt' platform device, on the
 | 
						|
	  supported platforms.
 | 
						|
 | 
						|
	  If in doubt, say N.
 | 
						|
 | 
						|
if X86
 | 
						|
source "drivers/cpufreq/Kconfig.x86"
 | 
						|
endif
 | 
						|
 | 
						|
if ARM || ARM64
 | 
						|
source "drivers/cpufreq/Kconfig.arm"
 | 
						|
endif
 | 
						|
 | 
						|
if PPC32 || PPC64
 | 
						|
source "drivers/cpufreq/Kconfig.powerpc"
 | 
						|
endif
 | 
						|
 | 
						|
if IA64
 | 
						|
config IA64_ACPI_CPUFREQ
 | 
						|
	tristate "ACPI Processor P-States driver"
 | 
						|
	depends on ACPI_PROCESSOR
 | 
						|
	help
 | 
						|
	This driver adds a CPUFreq driver which utilizes the ACPI
 | 
						|
	Processor Performance States.
 | 
						|
 | 
						|
	If in doubt, say N.
 | 
						|
endif
 | 
						|
 | 
						|
if MIPS
 | 
						|
config BMIPS_CPUFREQ
 | 
						|
	tristate "BMIPS CPUfreq Driver"
 | 
						|
	help
 | 
						|
	  This option adds a CPUfreq driver for BMIPS processors with
 | 
						|
	  support for configurable CPU frequency.
 | 
						|
 | 
						|
	  For now, BMIPS5 chips are supported (such as the Broadcom 7425).
 | 
						|
 | 
						|
	  If in doubt, say N.
 | 
						|
 | 
						|
config LOONGSON2_CPUFREQ
 | 
						|
	tristate "Loongson2 CPUFreq Driver"
 | 
						|
	depends on LEMOTE_MACH2F
 | 
						|
	help
 | 
						|
	  This option adds a CPUFreq driver for loongson processors which
 | 
						|
	  support software configurable cpu frequency.
 | 
						|
 | 
						|
	  Loongson2F and its successors support this feature.
 | 
						|
 | 
						|
	  If in doubt, say N.
 | 
						|
 | 
						|
config LOONGSON1_CPUFREQ
 | 
						|
	tristate "Loongson1 CPUFreq Driver"
 | 
						|
	depends on LOONGSON1_LS1B
 | 
						|
	help
 | 
						|
	  This option adds a CPUFreq driver for loongson1 processors which
 | 
						|
	  support software configurable cpu frequency.
 | 
						|
 | 
						|
	  If in doubt, say N.
 | 
						|
endif
 | 
						|
 | 
						|
if SPARC64
 | 
						|
config SPARC_US3_CPUFREQ
 | 
						|
	tristate "UltraSPARC-III CPU Frequency driver"
 | 
						|
	help
 | 
						|
	  This adds the CPUFreq driver for UltraSPARC-III processors.
 | 
						|
 | 
						|
	  If in doubt, say N.
 | 
						|
 | 
						|
config SPARC_US2E_CPUFREQ
 | 
						|
	tristate "UltraSPARC-IIe CPU Frequency driver"
 | 
						|
	help
 | 
						|
	  This adds the CPUFreq driver for UltraSPARC-IIe processors.
 | 
						|
 | 
						|
	  If in doubt, say N.
 | 
						|
endif
 | 
						|
 | 
						|
if SUPERH
 | 
						|
config SH_CPU_FREQ
 | 
						|
	tristate "SuperH CPU Frequency driver"
 | 
						|
	help
 | 
						|
	  This adds the cpufreq driver for SuperH. Any CPU that supports
 | 
						|
	  clock rate rounding through the clock framework can use this
 | 
						|
	  driver. While it will make the kernel slightly larger, this is
 | 
						|
	  harmless for CPUs that don't support rate rounding. The driver
 | 
						|
	  will also generate a notice in the boot log before disabling
 | 
						|
	  itself if the CPU in question is not capable of rate rounding.
 | 
						|
 | 
						|
	  If unsure, say N.
 | 
						|
endif
 | 
						|
 | 
						|
config QORIQ_CPUFREQ
 | 
						|
	tristate "CPU frequency scaling driver for Freescale QorIQ SoCs"
 | 
						|
	depends on OF && COMMON_CLK
 | 
						|
	depends on PPC_E500MC || SOC_LS1021A || ARCH_LAYERSCAPE || COMPILE_TEST
 | 
						|
	select CLK_QORIQ
 | 
						|
	help
 | 
						|
	  This adds the CPUFreq driver support for Freescale QorIQ SoCs
 | 
						|
	  which are capable of changing the CPU's frequency dynamically.
 | 
						|
 | 
						|
endif
 | 
						|
endmenu
 |