1ec8f24b7SThomas Gleixner# SPDX-License-Identifier: GPL-2.0-only 2a3c98b8bSMyungJoo Hammenuconfig PM_DEVFREQ 3a3c98b8bSMyungJoo Ham bool "Generic Dynamic Voltage and Frequency Scaling (DVFS) support" 483fe27eaSPranith Kumar select SRCU 5b9c69e04SChanwoo Choi select PM_OPP 6a3c98b8bSMyungJoo Ham help 76c81f905SMyungJoo Ham A device may have a list of frequencies and voltages available. 86c81f905SMyungJoo Ham devfreq, a generic DVFS framework can be registered for a device 96c81f905SMyungJoo Ham in order to let the governor provided to devfreq choose an 106c81f905SMyungJoo Ham operating frequency based on the device driver's policy. 11a3c98b8bSMyungJoo Ham 126c81f905SMyungJoo Ham Each device may have its own governor and policy. Devfreq can 13a3c98b8bSMyungJoo Ham reevaluate the device state periodically and/or based on the 146c81f905SMyungJoo Ham notification to "nb", a notifier block, of devfreq. 15a3c98b8bSMyungJoo Ham 166c81f905SMyungJoo Ham Like some CPUs with CPUfreq, a device may have multiple clocks. 17a3c98b8bSMyungJoo Ham However, because the clock frequencies of a single device are 186c81f905SMyungJoo Ham determined by the single device's state, an instance of devfreq 19a3c98b8bSMyungJoo Ham is attached to a single device and returns a "representative" 206c81f905SMyungJoo Ham clock frequency of the device, which is also attached 216c81f905SMyungJoo Ham to a device by 1-to-1. The device registering devfreq takes the 226b2aac42SMasanari Iida responsibility to "interpret" the representative frequency and 23a3c98b8bSMyungJoo Ham to set its every clock accordingly with the "target" callback 246c81f905SMyungJoo Ham given to devfreq. 256c81f905SMyungJoo Ham 266c81f905SMyungJoo Ham When OPP is used with the devfreq device, it is recommended to 276c81f905SMyungJoo Ham register devfreq's nb to the OPP's notifier head. If OPP is 286c81f905SMyungJoo Ham used with the devfreq device, you may use OPP helper 296c81f905SMyungJoo Ham functions defined in devfreq.h. 30a3c98b8bSMyungJoo Ham 31a3c98b8bSMyungJoo Hamif PM_DEVFREQ 32a3c98b8bSMyungJoo Ham 33ce26c5bbSMyungJoo Hamcomment "DEVFREQ Governors" 34ce26c5bbSMyungJoo Ham 35ce26c5bbSMyungJoo Hamconfig DEVFREQ_GOV_SIMPLE_ONDEMAND 36eff607fdSNishanth Menon tristate "Simple Ondemand" 37ce26c5bbSMyungJoo Ham help 38ce26c5bbSMyungJoo Ham Chooses frequency based on the recent load on the device. Works 39ce26c5bbSMyungJoo Ham similar as ONDEMAND governor of CPUFREQ does. A device with 40ce26c5bbSMyungJoo Ham Simple-Ondemand should be able to provide busy/total counter 41ce26c5bbSMyungJoo Ham values that imply the usage rate. A device may provide tuned 42ce26c5bbSMyungJoo Ham values to the governor with data field at devfreq_add_device(). 43ce26c5bbSMyungJoo Ham 44ce26c5bbSMyungJoo Hamconfig DEVFREQ_GOV_PERFORMANCE 45eff607fdSNishanth Menon tristate "Performance" 46ce26c5bbSMyungJoo Ham help 47ce26c5bbSMyungJoo Ham Sets the frequency at the maximum available frequency. 48ce26c5bbSMyungJoo Ham This governor always returns UINT_MAX as frequency so that 49ce26c5bbSMyungJoo Ham the DEVFREQ framework returns the highest frequency available 50ce26c5bbSMyungJoo Ham at any time. 51ce26c5bbSMyungJoo Ham 52ce26c5bbSMyungJoo Hamconfig DEVFREQ_GOV_POWERSAVE 53eff607fdSNishanth Menon tristate "Powersave" 54ce26c5bbSMyungJoo Ham help 55ce26c5bbSMyungJoo Ham Sets the frequency at the minimum available frequency. 56ce26c5bbSMyungJoo Ham This governor always returns 0 as frequency so that 57ce26c5bbSMyungJoo Ham the DEVFREQ framework returns the lowest frequency available 58ce26c5bbSMyungJoo Ham at any time. 59ce26c5bbSMyungJoo Ham 60ce26c5bbSMyungJoo Hamconfig DEVFREQ_GOV_USERSPACE 61eff607fdSNishanth Menon tristate "Userspace" 62ce26c5bbSMyungJoo Ham help 63ce26c5bbSMyungJoo Ham Sets the frequency at the user specified one. 64ce26c5bbSMyungJoo Ham This governor returns the user configured frequency if there 65ce26c5bbSMyungJoo Ham has been an input to /sys/devices/.../power/devfreq_set_freq. 66027b6934SGeert Uytterhoeven Otherwise, the governor does not change the frequency 67ce26c5bbSMyungJoo Ham given at the initialization. 68ce26c5bbSMyungJoo Ham 6999613311SChanwoo Choiconfig DEVFREQ_GOV_PASSIVE 7099613311SChanwoo Choi tristate "Passive" 7199613311SChanwoo Choi help 7299613311SChanwoo Choi Sets the frequency based on the frequency of its parent devfreq 7399613311SChanwoo Choi device. This governor does not change the frequency by itself 7499613311SChanwoo Choi through sysfs entries. The passive governor recommends that 7599613311SChanwoo Choi devfreq device uses the OPP table to get the frequency/voltage. 7699613311SChanwoo Choi 77a3c98b8bSMyungJoo Hamcomment "DEVFREQ Drivers" 78a3c98b8bSMyungJoo Ham 790722249aSChanwoo Choiconfig ARM_EXYNOS_BUS_DEVFREQ 805b3c316cSPaul Gortmaker tristate "ARM EXYNOS Generic Memory Bus DEVFREQ Driver" 81797da559SKrzysztof Kozlowski depends on ARCH_EXYNOS || COMPILE_TEST 820722249aSChanwoo Choi select DEVFREQ_GOV_SIMPLE_ONDEMAND 83403e0689SChanwoo Choi select DEVFREQ_GOV_PASSIVE 840722249aSChanwoo Choi select DEVFREQ_EVENT_EXYNOS_PPMU 850722249aSChanwoo Choi select PM_DEVFREQ_EVENT 860722249aSChanwoo Choi select PM_OPP 870722249aSChanwoo Choi help 880722249aSChanwoo Choi This adds the common DEVFREQ driver for Exynos Memory bus. Exynos 890722249aSChanwoo Choi Memory bus has one more group of memory bus (e.g, MIF and INT block). 900722249aSChanwoo Choi Each memory bus group could contain many memoby bus block. It reads 910722249aSChanwoo Choi PPMU counters of memory controllers by using DEVFREQ-event device 920722249aSChanwoo Choi and adjusts the operating frequencies and voltages with OPP support. 930722249aSChanwoo Choi This does not yet operate with optimal voltages. 940722249aSChanwoo Choi 956234f380STomeu Vizosoconfig ARM_TEGRA_DEVFREQ 961ac34748SDmitry Osipenko tristate "NVIDIA Tegra30/114/124/210 DEVFREQ Driver" 971ac34748SDmitry Osipenko depends on ARCH_TEGRA_3x_SOC || ARCH_TEGRA_114_SOC || \ 981ac34748SDmitry Osipenko ARCH_TEGRA_132_SOC || ARCH_TEGRA_124_SOC || \ 9935f8dbc7SDmitry Osipenko ARCH_TEGRA_210_SOC || \ 10035f8dbc7SDmitry Osipenko COMPILE_TEST 1016234f380STomeu Vizoso select PM_OPP 1026234f380STomeu Vizoso help 1036234f380STomeu Vizoso This adds the DEVFREQ driver for the Tegra family of SoCs. 1046234f380STomeu Vizoso It reads ACTMON counters of memory controllers and adjusts the 1056234f380STomeu Vizoso operating frequencies and voltages with OPP support. 1066234f380STomeu Vizoso 107d196175eSDmitry Osipenkoconfig ARM_TEGRA20_DEVFREQ 108d196175eSDmitry Osipenko tristate "NVIDIA Tegra20 DEVFREQ Driver" 109d196175eSDmitry Osipenko depends on (TEGRA_MC && TEGRA20_EMC) || COMPILE_TEST 110*23ca7d25SArnd Bergmann depends on COMMON_CLK 111d196175eSDmitry Osipenko select DEVFREQ_GOV_SIMPLE_ONDEMAND 112d196175eSDmitry Osipenko select PM_OPP 113d196175eSDmitry Osipenko help 114d196175eSDmitry Osipenko This adds the DEVFREQ driver for the Tegra20 family of SoCs. 115d196175eSDmitry Osipenko It reads Memory Controller counters and adjusts the operating 116d196175eSDmitry Osipenko frequencies and voltages with OPP support. 117d196175eSDmitry Osipenko 1185a893e31SLin Huangconfig ARM_RK3399_DMC_DEVFREQ 1195a893e31SLin Huang tristate "ARM RK3399 DMC DEVFREQ Driver" 1205a893e31SLin Huang depends on ARCH_ROCKCHIP 1215a893e31SLin Huang select DEVFREQ_EVENT_ROCKCHIP_DFI 1225a893e31SLin Huang select DEVFREQ_GOV_SIMPLE_ONDEMAND 12354dec69bSArnd Bergmann select PM_DEVFREQ_EVENT 1245a893e31SLin Huang select PM_OPP 1255a893e31SLin Huang help 1265a893e31SLin Huang This adds the DEVFREQ driver for the RK3399 DMC(Dynamic Memory Controller). 1275a893e31SLin Huang It sets the frequency for the memory controller and reads the usage counts 1285a893e31SLin Huang from hardware. 1295a893e31SLin Huang 130f262f28cSChanwoo Choisource "drivers/devfreq/event/Kconfig" 131f262f28cSChanwoo Choi 132a3c98b8bSMyungJoo Hamendif # PM_DEVFREQ 133