xref: /linux-6.15/drivers/devfreq/Kconfig (revision 5f104f9f)
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
65*5f104f9fSDong 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_SIMPLE_ONDEMAND
1075af744ebSLeonard Crestez	select DEVFREQ_GOV_USERSPACE
1085af744ebSLeonard Crestez	help
1095af744ebSLeonard Crestez	  This adds the DEVFREQ driver for the i.MX8M DDR Controller. It allows
1105af744ebSLeonard Crestez	  adjusting DRAM frequency.
1115af744ebSLeonard Crestez
1126234f380STomeu Vizosoconfig ARM_TEGRA_DEVFREQ
1131ac34748SDmitry Osipenko	tristate "NVIDIA Tegra30/114/124/210 DEVFREQ Driver"
1141ac34748SDmitry Osipenko	depends on ARCH_TEGRA_3x_SOC || ARCH_TEGRA_114_SOC || \
1151ac34748SDmitry Osipenko		ARCH_TEGRA_132_SOC || ARCH_TEGRA_124_SOC || \
11635f8dbc7SDmitry Osipenko		ARCH_TEGRA_210_SOC || \
11735f8dbc7SDmitry Osipenko		COMPILE_TEST
1185fdb0684SArnd Bergmann	depends on COMMON_CLK
1196234f380STomeu Vizoso	help
1206234f380STomeu Vizoso	  This adds the DEVFREQ driver for the Tegra family of SoCs.
1216234f380STomeu Vizoso	  It reads ACTMON counters of memory controllers and adjusts the
1226234f380STomeu Vizoso	  operating frequencies and voltages with OPP support.
1236234f380STomeu Vizoso
1245a893e31SLin Huangconfig ARM_RK3399_DMC_DEVFREQ
1255a893e31SLin Huang	tristate "ARM RK3399 DMC DEVFREQ Driver"
126eff5d31fSChanwoo Choi	depends on (ARCH_ROCKCHIP && HAVE_ARM_SMCCC) || \
127eff5d31fSChanwoo Choi		(COMPILE_TEST && HAVE_ARM_SMCCC)
1285a893e31SLin Huang	select DEVFREQ_EVENT_ROCKCHIP_DFI
1295a893e31SLin Huang	select DEVFREQ_GOV_SIMPLE_ONDEMAND
13054dec69bSArnd Bergmann	select PM_DEVFREQ_EVENT
1315a893e31SLin Huang	help
1325a893e31SLin Huang	  This adds the DEVFREQ driver for the RK3399 DMC(Dynamic Memory Controller).
1335a893e31SLin Huang	  It sets the frequency for the memory controller and reads the usage counts
1345a893e31SLin Huang	  from hardware.
1355a893e31SLin Huang
136f262f28cSChanwoo Choisource "drivers/devfreq/event/Kconfig"
137f262f28cSChanwoo Choi
138a3c98b8bSMyungJoo Hamendif # PM_DEVFREQ
139