linux/drivers/cpufreq/Kconfig
<<
>>
Prefs
   1# SPDX-License-Identifier: GPL-2.0-only
   2menu "CPU Frequency scaling"
   3
   4config CPU_FREQ
   5        bool "CPU Frequency scaling"
   6        select SRCU
   7        help
   8          CPU Frequency scaling allows you to change the clock speed of 
   9          CPUs on the fly. This is a nice method to save power, because 
  10          the lower the CPU clock speed, the less power the CPU consumes.
  11
  12          Note that this driver doesn't automatically change the CPU
  13          clock speed, you need to either enable a dynamic cpufreq governor
  14          (see below) after boot, or use a userspace tool.
  15
  16          For details, take a look at <file:Documentation/cpu-freq>.
  17
  18          If in doubt, say N.
  19
  20if CPU_FREQ
  21
  22config CPU_FREQ_GOV_ATTR_SET
  23        bool
  24
  25config CPU_FREQ_GOV_COMMON
  26        select CPU_FREQ_GOV_ATTR_SET
  27        select IRQ_WORK
  28        bool
  29
  30config CPU_FREQ_STAT
  31        bool "CPU frequency transition statistics"
  32        help
  33          Export CPU frequency statistics information through sysfs.
  34
  35          If in doubt, say N.
  36
  37choice
  38        prompt "Default CPUFreq governor"
  39        default CPU_FREQ_DEFAULT_GOV_USERSPACE if ARM_SA1100_CPUFREQ || ARM_SA1110_CPUFREQ
  40        default CPU_FREQ_DEFAULT_GOV_SCHEDUTIL if BIG_LITTLE
  41        default CPU_FREQ_DEFAULT_GOV_SCHEDUTIL if X86_INTEL_PSTATE && SMP
  42        default CPU_FREQ_DEFAULT_GOV_PERFORMANCE
  43        help
  44          This option sets which CPUFreq governor shall be loaded at
  45          startup. If in doubt, use the default setting.
  46
  47config CPU_FREQ_DEFAULT_GOV_PERFORMANCE
  48        bool "performance"
  49        select CPU_FREQ_GOV_PERFORMANCE
  50        help
  51          Use the CPUFreq governor 'performance' as default. This sets
  52          the frequency statically to the highest frequency supported by
  53          the CPU.
  54
  55config CPU_FREQ_DEFAULT_GOV_POWERSAVE
  56        bool "powersave"
  57        select CPU_FREQ_GOV_POWERSAVE
  58        help
  59          Use the CPUFreq governor 'powersave' as default. This sets
  60          the frequency statically to the lowest frequency supported by
  61          the CPU.
  62
  63config CPU_FREQ_DEFAULT_GOV_USERSPACE
  64        bool "userspace"
  65        select CPU_FREQ_GOV_USERSPACE
  66        help
  67          Use the CPUFreq governor 'userspace' as default. This allows
  68          you to set the CPU frequency manually or when a userspace 
  69          program shall be able to set the CPU dynamically without having
  70          to enable the userspace governor manually.
  71
  72config CPU_FREQ_DEFAULT_GOV_ONDEMAND
  73        bool "ondemand"
  74        select CPU_FREQ_GOV_ONDEMAND
  75        select CPU_FREQ_GOV_PERFORMANCE
  76        help
  77          Use the CPUFreq governor 'ondemand' as default. This allows
  78          you to get a full dynamic frequency capable system by simply
  79          loading your cpufreq low-level hardware driver.
  80          Be aware that not all cpufreq drivers support the ondemand
  81          governor. If unsure have a look at the help section of the
  82          driver. Fallback governor will be the performance governor.
  83
  84config CPU_FREQ_DEFAULT_GOV_CONSERVATIVE
  85        bool "conservative"
  86        select CPU_FREQ_GOV_CONSERVATIVE
  87        select CPU_FREQ_GOV_PERFORMANCE
  88        help
  89          Use the CPUFreq governor 'conservative' as default. This allows
  90          you to get a full dynamic frequency capable system by simply
  91          loading your cpufreq low-level hardware driver.
  92          Be aware that not all cpufreq drivers support the conservative
  93          governor. If unsure have a look at the help section of the
  94          driver. Fallback governor will be the performance governor.
  95
  96config CPU_FREQ_DEFAULT_GOV_SCHEDUTIL
  97        bool "schedutil"
  98        depends on SMP
  99        select CPU_FREQ_GOV_SCHEDUTIL
 100        select CPU_FREQ_GOV_PERFORMANCE
 101        help
 102          Use the 'schedutil' CPUFreq governor by default. If unsure,
 103          have a look at the help section of that governor. The fallback
 104          governor will be 'performance'.
 105
 106endchoice
 107
 108config CPU_FREQ_GOV_PERFORMANCE
 109        tristate "'performance' governor"
 110        help
 111          This cpufreq governor sets the frequency statically to the
 112          highest available CPU frequency.
 113
 114          To compile this driver as a module, choose M here: the
 115          module will be called cpufreq_performance.
 116
 117          If in doubt, say Y.
 118
 119config CPU_FREQ_GOV_POWERSAVE
 120        tristate "'powersave' governor"
 121        help
 122          This cpufreq governor sets the frequency statically to the
 123          lowest available CPU frequency.
 124
 125          To compile this driver as a module, choose M here: the
 126          module will be called cpufreq_powersave.
 127
 128          If in doubt, say Y.
 129
 130config CPU_FREQ_GOV_USERSPACE
 131        tristate "'userspace' governor for userspace frequency scaling"
 132        help
 133          Enable this cpufreq governor when you either want to set the
 134          CPU frequency manually or when a userspace program shall
 135          be able to set the CPU dynamically, like on LART 
 136          <http://www.lartmaker.nl/>.
 137
 138          To compile this driver as a module, choose M here: the
 139          module will be called cpufreq_userspace.
 140
 141          For details, take a look at <file:Documentation/cpu-freq/>.
 142
 143          If in doubt, say Y.
 144
 145config CPU_FREQ_GOV_ONDEMAND
 146        tristate "'ondemand' cpufreq policy governor"
 147        select CPU_FREQ_GOV_COMMON
 148        help
 149          'ondemand' - This driver adds a dynamic cpufreq policy governor.
 150          The governor does a periodic polling and 
 151          changes frequency based on the CPU utilization.
 152          The support for this governor depends on CPU capability to
 153          do fast frequency switching (i.e, very low latency frequency
 154          transitions). 
 155
 156          To compile this driver as a module, choose M here: the
 157          module will be called cpufreq_ondemand.
 158
 159          For details, take a look at linux/Documentation/cpu-freq.
 160
 161          If in doubt, say N.
 162
 163config CPU_FREQ_GOV_CONSERVATIVE
 164        tristate "'conservative' cpufreq governor"
 165        depends on CPU_FREQ
 166        select CPU_FREQ_GOV_COMMON
 167        help
 168          'conservative' - this driver is rather similar to the 'ondemand'
 169          governor both in its source code and its purpose, the difference is
 170          its optimisation for better suitability in a battery powered
 171          environment.  The frequency is gracefully increased and decreased
 172          rather than jumping to 100% when speed is required.
 173
 174          If you have a desktop machine then you should really be considering
 175          the 'ondemand' governor instead, however if you are using a laptop,
 176          PDA or even an AMD64 based computer (due to the unacceptable
 177          step-by-step latency issues between the minimum and maximum frequency
 178          transitions in the CPU) you will probably want to use this governor.
 179
 180          To compile this driver as a module, choose M here: the
 181          module will be called cpufreq_conservative.
 182
 183          For details, take a look at linux/Documentation/cpu-freq.
 184
 185          If in doubt, say N.
 186
 187config CPU_FREQ_GOV_SCHEDUTIL
 188        bool "'schedutil' cpufreq policy governor"
 189        depends on CPU_FREQ && SMP
 190        select CPU_FREQ_GOV_ATTR_SET
 191        select IRQ_WORK
 192        help
 193          This governor makes decisions based on the utilization data provided
 194          by the scheduler.  It sets the CPU frequency to be proportional to
 195          the utilization/capacity ratio coming from the scheduler.  If the
 196          utilization is frequency-invariant, the new frequency is also
 197          proportional to the maximum available frequency.  If that is not the
 198          case, it is proportional to the current frequency of the CPU.  The
 199          frequency tipping point is at utilization/capacity equal to 80% in
 200          both cases.
 201
 202          If in doubt, say N.
 203
 204comment "CPU frequency scaling drivers"
 205
 206config CPUFREQ_DT
 207        tristate "Generic DT based cpufreq driver"
 208        depends on HAVE_CLK && OF
 209        select CPUFREQ_DT_PLATDEV
 210        select PM_OPP
 211        help
 212          This adds a generic DT based cpufreq driver for frequency management.
 213          It supports both uniprocessor (UP) and symmetric multiprocessor (SMP)
 214          systems.
 215
 216          If in doubt, say N.
 217
 218config CPUFREQ_DT_PLATDEV
 219        bool
 220        help
 221          This adds a generic DT based cpufreq platdev driver for frequency
 222          management.  This creates a 'cpufreq-dt' platform device, on the
 223          supported platforms.
 224
 225          If in doubt, say N.
 226
 227if X86
 228source "drivers/cpufreq/Kconfig.x86"
 229endif
 230
 231if ARM || ARM64
 232source "drivers/cpufreq/Kconfig.arm"
 233endif
 234
 235if PPC32 || PPC64
 236source "drivers/cpufreq/Kconfig.powerpc"
 237endif
 238
 239if IA64
 240config IA64_ACPI_CPUFREQ
 241        tristate "ACPI Processor P-States driver"
 242        depends on ACPI_PROCESSOR
 243        help
 244        This driver adds a CPUFreq driver which utilizes the ACPI
 245        Processor Performance States.
 246
 247        For details, take a look at <file:Documentation/cpu-freq/>.
 248
 249        If in doubt, say N.
 250endif
 251
 252if MIPS
 253config BMIPS_CPUFREQ
 254        tristate "BMIPS CPUfreq Driver"
 255        help
 256          This option adds a CPUfreq driver for BMIPS processors with
 257          support for configurable CPU frequency.
 258
 259          For now, BMIPS5 chips are supported (such as the Broadcom 7425).
 260
 261          If in doubt, say N.
 262
 263config LOONGSON2_CPUFREQ
 264        tristate "Loongson2 CPUFreq Driver"
 265        depends on LEMOTE_MACH2F
 266        help
 267          This option adds a CPUFreq driver for loongson processors which
 268          support software configurable cpu frequency.
 269
 270          Loongson2F and it's successors support this feature.
 271
 272          For details, take a look at <file:Documentation/cpu-freq/>.
 273
 274          If in doubt, say N.
 275
 276config LOONGSON1_CPUFREQ
 277        tristate "Loongson1 CPUFreq Driver"
 278        depends on LOONGSON1_LS1B
 279        help
 280          This option adds a CPUFreq driver for loongson1 processors which
 281          support software configurable cpu frequency.
 282
 283          For details, take a look at <file:Documentation/cpu-freq/>.
 284
 285          If in doubt, say N.
 286endif
 287
 288if SPARC64
 289config SPARC_US3_CPUFREQ
 290        tristate "UltraSPARC-III CPU Frequency driver"
 291        help
 292          This adds the CPUFreq driver for UltraSPARC-III processors.
 293
 294          For details, take a look at <file:Documentation/cpu-freq>.
 295
 296          If in doubt, say N.
 297
 298config SPARC_US2E_CPUFREQ
 299        tristate "UltraSPARC-IIe CPU Frequency driver"
 300        help
 301          This adds the CPUFreq driver for UltraSPARC-IIe processors.
 302
 303          For details, take a look at <file:Documentation/cpu-freq>.
 304
 305          If in doubt, say N.
 306endif
 307
 308if SUPERH
 309config SH_CPU_FREQ
 310        tristate "SuperH CPU Frequency driver"
 311        help
 312          This adds the cpufreq driver for SuperH. Any CPU that supports
 313          clock rate rounding through the clock framework can use this
 314          driver. While it will make the kernel slightly larger, this is
 315          harmless for CPUs that don't support rate rounding. The driver
 316          will also generate a notice in the boot log before disabling
 317          itself if the CPU in question is not capable of rate rounding.
 318
 319          For details, take a look at <file:Documentation/cpu-freq>.
 320
 321          If unsure, say N.
 322endif
 323
 324config QORIQ_CPUFREQ
 325        tristate "CPU frequency scaling driver for Freescale QorIQ SoCs"
 326        depends on OF && COMMON_CLK && (PPC_E500MC || ARM || ARM64)
 327        select CLK_QORIQ
 328        help
 329          This adds the CPUFreq driver support for Freescale QorIQ SoCs
 330          which are capable of changing the CPU's frequency dynamically.
 331
 332endif
 333endmenu
 334