Kconfig 11 KB

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