xref: /linux-6.15/drivers/devfreq/Kconfig (revision a4b3c62f)
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
655f104f9fSDong Aisheng	  has been an input to /sys/devices/.../userspace/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
8091d7f3f8SKrzysztof Kozlowski	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	help
870722249aSChanwoo Choi	  This adds the common DEVFREQ driver for Exynos Memory bus. Exynos
880722249aSChanwoo Choi	  Memory bus has one more group of memory bus (e.g, MIF and INT block).
890722249aSChanwoo Choi	  Each memory bus group could contain many memoby bus block. It reads
900722249aSChanwoo Choi	  PPMU counters of memory controllers by using DEVFREQ-event device
910722249aSChanwoo Choi	  and adjusts the operating frequencies and voltages with OPP support.
920722249aSChanwoo Choi	  This does not yet operate with optimal voltages.
930722249aSChanwoo Choi
945173a975SLeonard Crestezconfig ARM_IMX_BUS_DEVFREQ
955173a975SLeonard Crestez	tristate "i.MX Generic Bus DEVFREQ Driver"
965173a975SLeonard Crestez	depends on ARCH_MXC || COMPILE_TEST
975173a975SLeonard Crestez	select DEVFREQ_GOV_USERSPACE
985173a975SLeonard Crestez	help
995173a975SLeonard Crestez	  This adds the generic DEVFREQ driver for i.MX interconnects. It
1005173a975SLeonard Crestez	  allows adjusting NIC/NOC frequency.
1015173a975SLeonard Crestez
1025af744ebSLeonard Crestezconfig ARM_IMX8M_DDRC_DEVFREQ
1035af744ebSLeonard Crestez	tristate "i.MX8M DDRC DEVFREQ Driver"
1045af744ebSLeonard Crestez	depends on (ARCH_MXC && HAVE_ARM_SMCCC) || \
1055af744ebSLeonard Crestez		(COMPILE_TEST && HAVE_ARM_SMCCC)
1065af744ebSLeonard Crestez	select DEVFREQ_GOV_USERSPACE
1075af744ebSLeonard Crestez	help
1085af744ebSLeonard Crestez	  This adds the DEVFREQ driver for the i.MX8M DDR Controller. It allows
1095af744ebSLeonard Crestez	  adjusting DRAM frequency.
1105af744ebSLeonard Crestez
1116234f380STomeu Vizosoconfig ARM_TEGRA_DEVFREQ
1121ac34748SDmitry Osipenko	tristate "NVIDIA Tegra30/114/124/210 DEVFREQ Driver"
1131ac34748SDmitry Osipenko	depends on ARCH_TEGRA_3x_SOC || ARCH_TEGRA_114_SOC || \
1141ac34748SDmitry Osipenko		ARCH_TEGRA_132_SOC || ARCH_TEGRA_124_SOC || \
11535f8dbc7SDmitry Osipenko		ARCH_TEGRA_210_SOC || \
11635f8dbc7SDmitry Osipenko		COMPILE_TEST
1175fdb0684SArnd Bergmann	depends on COMMON_CLK
1186234f380STomeu Vizoso	help
1196234f380STomeu Vizoso	  This adds the DEVFREQ driver for the Tegra family of SoCs.
1206234f380STomeu Vizoso	  It reads ACTMON counters of memory controllers and adjusts the
1216234f380STomeu Vizoso	  operating frequencies and voltages with OPP support.
1226234f380STomeu Vizoso
1235a893e31SLin Huangconfig ARM_RK3399_DMC_DEVFREQ
1245a893e31SLin Huang	tristate "ARM RK3399 DMC DEVFREQ Driver"
125eff5d31fSChanwoo Choi	depends on (ARCH_ROCKCHIP && HAVE_ARM_SMCCC) || \
126eff5d31fSChanwoo Choi		(COMPILE_TEST && HAVE_ARM_SMCCC)
1275a893e31SLin Huang	select DEVFREQ_EVENT_ROCKCHIP_DFI
1285a893e31SLin Huang	select DEVFREQ_GOV_SIMPLE_ONDEMAND
12954dec69bSArnd Bergmann	select PM_DEVFREQ_EVENT
1305a893e31SLin Huang	help
1315a893e31SLin Huang	  This adds the DEVFREQ driver for the RK3399 DMC(Dynamic Memory Controller).
1325a893e31SLin Huang	  It sets the frequency for the memory controller and reads the usage counts
1335a893e31SLin Huang	  from hardware.
1345a893e31SLin Huang
1358bfd4858SSamuel Hollandconfig ARM_SUN8I_A33_MBUS_DEVFREQ
1368bfd4858SSamuel Holland	tristate "sun8i/sun50i MBUS DEVFREQ Driver"
1378bfd4858SSamuel Holland	depends on ARCH_SUNXI || COMPILE_TEST
138*a4b3c62fSArnd Bergmann	depends on COMMON_CLK
1398bfd4858SSamuel Holland	select DEVFREQ_GOV_SIMPLE_ONDEMAND
1408bfd4858SSamuel Holland	help
1418bfd4858SSamuel Holland	  This adds the DEVFREQ driver for the MBUS controller in some
1428bfd4858SSamuel Holland	  Allwinner sun8i (A33 through H3) and sun50i (A64 and H5) SoCs.
1438bfd4858SSamuel Holland
144f262f28cSChanwoo Choisource "drivers/devfreq/event/Kconfig"
145f262f28cSChanwoo Choi
146a3c98b8bSMyungJoo Hamendif # PM_DEVFREQ
147