xref: /linux-6.15/drivers/devfreq/Kconfig (revision 23ca7d25)
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