| # SPDX-License-Identifier: GPL-2.0-only | |
| menuconfig PM_DEVFREQ | |
| bool "Generic Dynamic Voltage and Frequency Scaling (DVFS) support" | |
| select PM_OPP | |
| help | |
| A device may have a list of frequencies and voltages available. | |
| devfreq, a generic DVFS framework can be registered for a device | |
| in order to let the governor provided to devfreq choose an | |
| operating frequency based on the device driver's policy. | |
| Each device may have its own governor and policy. Devfreq can | |
| reevaluate the device state periodically and/or based on the | |
| notification to "nb", a notifier block, of devfreq. | |
| Like some CPUs with CPUfreq, a device may have multiple clocks. | |
| However, because the clock frequencies of a single device are | |
| determined by the single device's state, an instance of devfreq | |
| is attached to a single device and returns a "representative" | |
| clock frequency of the device, which is also attached | |
| to a device by 1-to-1. The device registering devfreq takes the | |
| responsibility to "interpret" the representative frequency and | |
| to set its every clock accordingly with the "target" callback | |
| given to devfreq. | |
| When OPP is used with the devfreq device, it is recommended to | |
| register devfreq's nb to the OPP's notifier head. If OPP is | |
| used with the devfreq device, you may use OPP helper | |
| functions defined in devfreq.h. | |
| if PM_DEVFREQ | |
| comment "DEVFREQ Governors" | |
| config DEVFREQ_GOV_SIMPLE_ONDEMAND | |
| tristate "Simple Ondemand" | |
| help | |
| Chooses frequency based on the recent load on the device. Works | |
| similar as ONDEMAND governor of CPUFREQ does. A device with | |
| Simple-Ondemand should be able to provide busy/total counter | |
| values that imply the usage rate. A device may provide tuned | |
| values to the governor with data field at devfreq_add_device(). | |
| config DEVFREQ_GOV_PERFORMANCE | |
| tristate "Performance" | |
| help | |
| Sets the frequency at the maximum available frequency. | |
| This governor always returns UINT_MAX as frequency so that | |
| the DEVFREQ framework returns the highest frequency available | |
| at any time. | |
| config DEVFREQ_GOV_POWERSAVE | |
| tristate "Powersave" | |
| help | |
| Sets the frequency at the minimum available frequency. | |
| This governor always returns 0 as frequency so that | |
| the DEVFREQ framework returns the lowest frequency available | |
| at any time. | |
| config DEVFREQ_GOV_USERSPACE | |
| tristate "Userspace" | |
| help | |
| Sets the frequency at the user specified one. | |
| This governor returns the user configured frequency if there | |
| has been an input to /sys/devices/.../userspace/set_freq. | |
| Otherwise, the governor does not change the frequency | |
| given at the initialization. | |
| config DEVFREQ_GOV_PASSIVE | |
| tristate "Passive" | |
| help | |
| Sets the frequency based on the frequency of its parent devfreq | |
| device. This governor does not change the frequency by itself | |
| through sysfs entries. The passive governor recommends that | |
| devfreq device uses the OPP table to get the frequency/voltage. | |
| comment "DEVFREQ Drivers" | |
| config ARM_EXYNOS_BUS_DEVFREQ | |
| tristate "ARM Exynos Generic Memory Bus DEVFREQ Driver" | |
| depends on ARCH_EXYNOS || COMPILE_TEST | |
| select DEVFREQ_GOV_SIMPLE_ONDEMAND | |
| select DEVFREQ_GOV_PASSIVE | |
| select DEVFREQ_EVENT_EXYNOS_PPMU | |
| select PM_DEVFREQ_EVENT | |
| help | |
| This adds the common DEVFREQ driver for Exynos Memory bus. Exynos | |
| Memory bus has one more group of memory bus (e.g, MIF and INT block). | |
| Each memory bus group could contain many memoby bus block. It reads | |
| PPMU counters of memory controllers by using DEVFREQ-event device | |
| and adjusts the operating frequencies and voltages with OPP support. | |
| This does not yet operate with optimal voltages. | |
| config ARM_HISI_UNCORE_DEVFREQ | |
| tristate "HiSilicon uncore DEVFREQ Driver" | |
| depends on ACPI && ACPI_PPTT && PCC | |
| select DEVFREQ_GOV_PERFORMANCE | |
| select DEVFREQ_GOV_USERSPACE | |
| help | |
| This adds a DEVFREQ driver that manages uncore frequency scaling for | |
| HiSilicon Kunpeng SoCs. This enables runtime management of uncore | |
| frequency scaling from kernel and userspace. The uncore domain | |
| contains system interconnects and L3 cache. | |
| config ARM_IMX_BUS_DEVFREQ | |
| tristate "i.MX Generic Bus DEVFREQ Driver" | |
| depends on ARCH_MXC || COMPILE_TEST | |
| select DEVFREQ_GOV_USERSPACE | |
| help | |
| This adds the generic DEVFREQ driver for i.MX interconnects. It | |
| allows adjusting NIC/NOC frequency. | |
| config ARM_IMX8M_DDRC_DEVFREQ | |
| tristate "i.MX8M DDRC DEVFREQ Driver" | |
| depends on (ARCH_MXC && HAVE_ARM_SMCCC) || \ | |
| (COMPILE_TEST && HAVE_ARM_SMCCC) | |
| select DEVFREQ_GOV_USERSPACE | |
| help | |
| This adds the DEVFREQ driver for the i.MX8M DDR Controller. It allows | |
| adjusting DRAM frequency. | |
| config ARM_TEGRA_DEVFREQ | |
| tristate "NVIDIA Tegra30/114/124/210 DEVFREQ Driver" | |
| depends on ARCH_TEGRA_3x_SOC || ARCH_TEGRA_114_SOC || \ | |
| ARCH_TEGRA_132_SOC || ARCH_TEGRA_124_SOC || \ | |
| ARCH_TEGRA_210_SOC || \ | |
| COMPILE_TEST | |
| depends on COMMON_CLK | |
| help | |
| This adds the DEVFREQ driver for the Tegra family of SoCs. | |
| It reads ACTMON counters of memory controllers and adjusts the | |
| operating frequencies and voltages with OPP support. | |
| config ARM_MEDIATEK_CCI_DEVFREQ | |
| tristate "MEDIATEK CCI DEVFREQ Driver" | |
| depends on ARM_MEDIATEK_CPUFREQ || COMPILE_TEST | |
| select DEVFREQ_GOV_PASSIVE | |
| help | |
| This adds a devfreq driver for MediaTek Cache Coherent Interconnect | |
| which is shared the same regulators with the cpu cluster. It can track | |
| buck voltages and update a proper CCI frequency. Use the notification | |
| to get the regulator status. | |
| config ARM_RK3399_DMC_DEVFREQ | |
| tristate "ARM RK3399 DMC DEVFREQ Driver" | |
| depends on (ARCH_ROCKCHIP && HAVE_ARM_SMCCC) || \ | |
| (COMPILE_TEST && HAVE_ARM_SMCCC) | |
| select DEVFREQ_EVENT_ROCKCHIP_DFI | |
| select DEVFREQ_GOV_SIMPLE_ONDEMAND | |
| select PM_DEVFREQ_EVENT | |
| help | |
| This adds the DEVFREQ driver for the RK3399 DMC(Dynamic Memory Controller). | |
| It sets the frequency for the memory controller and reads the usage counts | |
| from hardware. | |
| config ARM_SUN8I_A33_MBUS_DEVFREQ | |
| tristate "sun8i/sun50i MBUS DEVFREQ Driver" | |
| depends on ARCH_SUNXI || COMPILE_TEST | |
| depends on COMMON_CLK | |
| select DEVFREQ_GOV_SIMPLE_ONDEMAND | |
| help | |
| This adds the DEVFREQ driver for the MBUS controller in some | |
| Allwinner sun8i (A33 through H3) and sun50i (A64 and H5) SoCs. | |
| source "drivers/devfreq/event/Kconfig" | |
| endif # PM_DEVFREQ |