1ec8f24b7SThomas Gleixner# SPDX-License-Identifier: GPL-2.0-only 2a3c98b8bSMyungJoo Hammenuconfig PM_DEVFREQ 3a3c98b8bSMyungJoo Ham bool "Generic Dynamic Voltage and Frequency Scaling (DVFS) support" 4b9c69e04SChanwoo Choi select PM_OPP 5a3c98b8bSMyungJoo Ham help 66c81f905SMyungJoo Ham A device may have a list of frequencies and voltages available. 76c81f905SMyungJoo Ham devfreq, a generic DVFS framework can be registered for a device 86c81f905SMyungJoo Ham in order to let the governor provided to devfreq choose an 96c81f905SMyungJoo Ham operating frequency based on the device driver's policy. 10a3c98b8bSMyungJoo Ham 116c81f905SMyungJoo Ham Each device may have its own governor and policy. Devfreq can 12a3c98b8bSMyungJoo Ham reevaluate the device state periodically and/or based on the 136c81f905SMyungJoo Ham notification to "nb", a notifier block, of devfreq. 14a3c98b8bSMyungJoo Ham 156c81f905SMyungJoo Ham Like some CPUs with CPUfreq, a device may have multiple clocks. 16a3c98b8bSMyungJoo Ham However, because the clock frequencies of a single device are 176c81f905SMyungJoo Ham determined by the single device's state, an instance of devfreq 18a3c98b8bSMyungJoo Ham is attached to a single device and returns a "representative" 196c81f905SMyungJoo Ham clock frequency of the device, which is also attached 206c81f905SMyungJoo Ham to a device by 1-to-1. The device registering devfreq takes the 216b2aac42SMasanari Iida responsibility to "interpret" the representative frequency and 22a3c98b8bSMyungJoo Ham to set its every clock accordingly with the "target" callback 236c81f905SMyungJoo Ham given to devfreq. 246c81f905SMyungJoo Ham 256c81f905SMyungJoo Ham When OPP is used with the devfreq device, it is recommended to 266c81f905SMyungJoo Ham register devfreq's nb to the OPP's notifier head. If OPP is 276c81f905SMyungJoo Ham used with the devfreq device, you may use OPP helper 286c81f905SMyungJoo Ham functions defined in devfreq.h. 29a3c98b8bSMyungJoo Ham 30a3c98b8bSMyungJoo Hamif PM_DEVFREQ 31a3c98b8bSMyungJoo Ham 32ce26c5bbSMyungJoo Hamcomment "DEVFREQ Governors" 33ce26c5bbSMyungJoo Ham 34ce26c5bbSMyungJoo Hamconfig DEVFREQ_GOV_SIMPLE_ONDEMAND 35eff607fdSNishanth Menon tristate "Simple Ondemand" 36ce26c5bbSMyungJoo Ham help 37ce26c5bbSMyungJoo Ham Chooses frequency based on the recent load on the device. Works 38ce26c5bbSMyungJoo Ham similar as ONDEMAND governor of CPUFREQ does. A device with 39ce26c5bbSMyungJoo Ham Simple-Ondemand should be able to provide busy/total counter 40ce26c5bbSMyungJoo Ham values that imply the usage rate. A device may provide tuned 41ce26c5bbSMyungJoo Ham values to the governor with data field at devfreq_add_device(). 42ce26c5bbSMyungJoo Ham 43ce26c5bbSMyungJoo Hamconfig DEVFREQ_GOV_PERFORMANCE 44eff607fdSNishanth Menon tristate "Performance" 45ce26c5bbSMyungJoo Ham help 46ce26c5bbSMyungJoo Ham Sets the frequency at the maximum available frequency. 47ce26c5bbSMyungJoo Ham This governor always returns UINT_MAX as frequency so that 48ce26c5bbSMyungJoo Ham the DEVFREQ framework returns the highest frequency available 49ce26c5bbSMyungJoo Ham at any time. 50ce26c5bbSMyungJoo Ham 51ce26c5bbSMyungJoo Hamconfig DEVFREQ_GOV_POWERSAVE 52eff607fdSNishanth Menon tristate "Powersave" 53ce26c5bbSMyungJoo Ham help 54ce26c5bbSMyungJoo Ham Sets the frequency at the minimum available frequency. 55ce26c5bbSMyungJoo Ham This governor always returns 0 as frequency so that 56ce26c5bbSMyungJoo Ham the DEVFREQ framework returns the lowest frequency available 57ce26c5bbSMyungJoo Ham at any time. 58ce26c5bbSMyungJoo Ham 59ce26c5bbSMyungJoo Hamconfig DEVFREQ_GOV_USERSPACE 60eff607fdSNishanth Menon tristate "Userspace" 61ce26c5bbSMyungJoo Ham help 62ce26c5bbSMyungJoo Ham Sets the frequency at the user specified one. 63ce26c5bbSMyungJoo Ham This governor returns the user configured frequency if there 645f104f9fSDong Aisheng has been an input to /sys/devices/.../userspace/set_freq. 65027b6934SGeert Uytterhoeven Otherwise, the governor does not change the frequency 66ce26c5bbSMyungJoo Ham given at the initialization. 67ce26c5bbSMyungJoo Ham 6899613311SChanwoo Choiconfig DEVFREQ_GOV_PASSIVE 6999613311SChanwoo Choi tristate "Passive" 7099613311SChanwoo Choi help 7199613311SChanwoo Choi Sets the frequency based on the frequency of its parent devfreq 7299613311SChanwoo Choi device. This governor does not change the frequency by itself 7399613311SChanwoo Choi through sysfs entries. The passive governor recommends that 7499613311SChanwoo Choi devfreq device uses the OPP table to get the frequency/voltage. 7599613311SChanwoo Choi 76a3c98b8bSMyungJoo Hamcomment "DEVFREQ Drivers" 77a3c98b8bSMyungJoo Ham 780722249aSChanwoo Choiconfig ARM_EXYNOS_BUS_DEVFREQ 7991d7f3f8SKrzysztof Kozlowski tristate "ARM Exynos Generic Memory Bus DEVFREQ Driver" 80797da559SKrzysztof Kozlowski depends on ARCH_EXYNOS || COMPILE_TEST 810722249aSChanwoo Choi select DEVFREQ_GOV_SIMPLE_ONDEMAND 82403e0689SChanwoo Choi select DEVFREQ_GOV_PASSIVE 830722249aSChanwoo Choi select DEVFREQ_EVENT_EXYNOS_PPMU 840722249aSChanwoo Choi select PM_DEVFREQ_EVENT 850722249aSChanwoo Choi help 860722249aSChanwoo Choi This adds the common DEVFREQ driver for Exynos Memory bus. Exynos 870722249aSChanwoo Choi Memory bus has one more group of memory bus (e.g, MIF and INT block). 880722249aSChanwoo Choi Each memory bus group could contain many memoby bus block. It reads 890722249aSChanwoo Choi PPMU counters of memory controllers by using DEVFREQ-event device 900722249aSChanwoo Choi and adjusts the operating frequencies and voltages with OPP support. 910722249aSChanwoo Choi This does not yet operate with optimal voltages. 920722249aSChanwoo Choi 935173a975SLeonard Crestezconfig ARM_IMX_BUS_DEVFREQ 945173a975SLeonard Crestez tristate "i.MX Generic Bus DEVFREQ Driver" 955173a975SLeonard Crestez depends on ARCH_MXC || COMPILE_TEST 965173a975SLeonard Crestez select DEVFREQ_GOV_USERSPACE 975173a975SLeonard Crestez help 985173a975SLeonard Crestez This adds the generic DEVFREQ driver for i.MX interconnects. It 995173a975SLeonard Crestez allows adjusting NIC/NOC frequency. 1005173a975SLeonard Crestez 1015af744ebSLeonard Crestezconfig ARM_IMX8M_DDRC_DEVFREQ 1025af744ebSLeonard Crestez tristate "i.MX8M DDRC DEVFREQ Driver" 1035af744ebSLeonard Crestez depends on (ARCH_MXC && HAVE_ARM_SMCCC) || \ 1045af744ebSLeonard Crestez (COMPILE_TEST && HAVE_ARM_SMCCC) 1055af744ebSLeonard Crestez select DEVFREQ_GOV_USERSPACE 1065af744ebSLeonard Crestez help 1075af744ebSLeonard Crestez This adds the DEVFREQ driver for the i.MX8M DDR Controller. It allows 1085af744ebSLeonard Crestez adjusting DRAM frequency. 1095af744ebSLeonard Crestez 1106234f380STomeu Vizosoconfig ARM_TEGRA_DEVFREQ 1111ac34748SDmitry Osipenko tristate "NVIDIA Tegra30/114/124/210 DEVFREQ Driver" 1121ac34748SDmitry Osipenko depends on ARCH_TEGRA_3x_SOC || ARCH_TEGRA_114_SOC || \ 1131ac34748SDmitry Osipenko ARCH_TEGRA_132_SOC || ARCH_TEGRA_124_SOC || \ 11435f8dbc7SDmitry Osipenko ARCH_TEGRA_210_SOC || \ 11535f8dbc7SDmitry Osipenko COMPILE_TEST 1165fdb0684SArnd Bergmann depends on COMMON_CLK 1176234f380STomeu Vizoso help 1186234f380STomeu Vizoso This adds the DEVFREQ driver for the Tegra family of SoCs. 1196234f380STomeu Vizoso It reads ACTMON counters of memory controllers and adjusts the 1206234f380STomeu Vizoso operating frequencies and voltages with OPP support. 1216234f380STomeu Vizoso 122*86d231b1SJohnson Wangconfig ARM_MEDIATEK_CCI_DEVFREQ 123*86d231b1SJohnson Wang tristate "MEDIATEK CCI DEVFREQ Driver" 124*86d231b1SJohnson Wang depends on ARM_MEDIATEK_CPUFREQ || COMPILE_TEST 125*86d231b1SJohnson Wang select DEVFREQ_GOV_PASSIVE 126*86d231b1SJohnson Wang help 127*86d231b1SJohnson Wang This adds a devfreq driver for MediaTek Cache Coherent Interconnect 128*86d231b1SJohnson Wang which is shared the same regulators with the cpu cluster. It can track 129*86d231b1SJohnson Wang buck voltages and update a proper CCI frequency. Use the notification 130*86d231b1SJohnson Wang to get the regulator status. 131*86d231b1SJohnson Wang 1325a893e31SLin Huangconfig ARM_RK3399_DMC_DEVFREQ 1335a893e31SLin Huang tristate "ARM RK3399 DMC DEVFREQ Driver" 134eff5d31fSChanwoo Choi depends on (ARCH_ROCKCHIP && HAVE_ARM_SMCCC) || \ 135eff5d31fSChanwoo Choi (COMPILE_TEST && HAVE_ARM_SMCCC) 1365a893e31SLin Huang select DEVFREQ_EVENT_ROCKCHIP_DFI 1375a893e31SLin Huang select DEVFREQ_GOV_SIMPLE_ONDEMAND 13854dec69bSArnd Bergmann select PM_DEVFREQ_EVENT 1395a893e31SLin Huang help 1405a893e31SLin Huang This adds the DEVFREQ driver for the RK3399 DMC(Dynamic Memory Controller). 1415a893e31SLin Huang It sets the frequency for the memory controller and reads the usage counts 1425a893e31SLin Huang from hardware. 1435a893e31SLin Huang 1448bfd4858SSamuel Hollandconfig ARM_SUN8I_A33_MBUS_DEVFREQ 1458bfd4858SSamuel Holland tristate "sun8i/sun50i MBUS DEVFREQ Driver" 1468bfd4858SSamuel Holland depends on ARCH_SUNXI || COMPILE_TEST 147a4b3c62fSArnd Bergmann depends on COMMON_CLK 1488bfd4858SSamuel Holland select DEVFREQ_GOV_SIMPLE_ONDEMAND 1498bfd4858SSamuel Holland help 1508bfd4858SSamuel Holland This adds the DEVFREQ driver for the MBUS controller in some 1518bfd4858SSamuel Holland Allwinner sun8i (A33 through H3) and sun50i (A64 and H5) SoCs. 1528bfd4858SSamuel Holland 153f262f28cSChanwoo Choisource "drivers/devfreq/event/Kconfig" 154f262f28cSChanwoo Choi 155a3c98b8bSMyungJoo Hamendif # PM_DEVFREQ 156