xref: /linux-6.15/drivers/devfreq/Kconfig (revision 0722249a)
1a3c98b8bSMyungJoo Hammenuconfig PM_DEVFREQ
2a3c98b8bSMyungJoo Ham	bool "Generic Dynamic Voltage and Frequency Scaling (DVFS) support"
383fe27eaSPranith Kumar	select SRCU
4a3c98b8bSMyungJoo Ham	help
56c81f905SMyungJoo Ham	  A device may have a list of frequencies and voltages available.
66c81f905SMyungJoo Ham	  devfreq, a generic DVFS framework can be registered for a device
76c81f905SMyungJoo Ham	  in order to let the governor provided to devfreq choose an
86c81f905SMyungJoo Ham	  operating frequency based on the device driver's policy.
9a3c98b8bSMyungJoo Ham
106c81f905SMyungJoo Ham	  Each device may have its own governor and policy. Devfreq can
11a3c98b8bSMyungJoo Ham	  reevaluate the device state periodically and/or based on the
126c81f905SMyungJoo Ham	  notification to "nb", a notifier block, of devfreq.
13a3c98b8bSMyungJoo Ham
146c81f905SMyungJoo Ham	  Like some CPUs with CPUfreq, a device may have multiple clocks.
15a3c98b8bSMyungJoo Ham	  However, because the clock frequencies of a single device are
166c81f905SMyungJoo Ham	  determined by the single device's state, an instance of devfreq
17a3c98b8bSMyungJoo Ham	  is attached to a single device and returns a "representative"
186c81f905SMyungJoo Ham	  clock frequency of the device, which is also attached
196c81f905SMyungJoo Ham	  to a device by 1-to-1. The device registering devfreq takes the
206b2aac42SMasanari Iida	  responsibility to "interpret" the representative frequency and
21a3c98b8bSMyungJoo Ham	  to set its every clock accordingly with the "target" callback
226c81f905SMyungJoo Ham	  given to devfreq.
236c81f905SMyungJoo Ham
246c81f905SMyungJoo Ham	  When OPP is used with the devfreq device, it is recommended to
256c81f905SMyungJoo Ham	  register devfreq's nb to the OPP's notifier head.  If OPP is
266c81f905SMyungJoo Ham	  used with the devfreq device, you may use OPP helper
276c81f905SMyungJoo Ham	  functions defined in devfreq.h.
28a3c98b8bSMyungJoo Ham
29a3c98b8bSMyungJoo Hamif PM_DEVFREQ
30a3c98b8bSMyungJoo Ham
31ce26c5bbSMyungJoo Hamcomment "DEVFREQ Governors"
32ce26c5bbSMyungJoo Ham
33ce26c5bbSMyungJoo Hamconfig DEVFREQ_GOV_SIMPLE_ONDEMAND
34eff607fdSNishanth Menon	tristate "Simple Ondemand"
35ce26c5bbSMyungJoo Ham	help
36ce26c5bbSMyungJoo Ham	  Chooses frequency based on the recent load on the device. Works
37ce26c5bbSMyungJoo Ham	  similar as ONDEMAND governor of CPUFREQ does. A device with
38ce26c5bbSMyungJoo Ham	  Simple-Ondemand should be able to provide busy/total counter
39ce26c5bbSMyungJoo Ham	  values that imply the usage rate. A device may provide tuned
40ce26c5bbSMyungJoo Ham	  values to the governor with data field at devfreq_add_device().
41ce26c5bbSMyungJoo Ham
42ce26c5bbSMyungJoo Hamconfig DEVFREQ_GOV_PERFORMANCE
43eff607fdSNishanth Menon	tristate "Performance"
44ce26c5bbSMyungJoo Ham	help
45ce26c5bbSMyungJoo Ham	  Sets the frequency at the maximum available frequency.
46ce26c5bbSMyungJoo Ham	  This governor always returns UINT_MAX as frequency so that
47ce26c5bbSMyungJoo Ham	  the DEVFREQ framework returns the highest frequency available
48ce26c5bbSMyungJoo Ham	  at any time.
49ce26c5bbSMyungJoo Ham
50ce26c5bbSMyungJoo Hamconfig DEVFREQ_GOV_POWERSAVE
51eff607fdSNishanth Menon	tristate "Powersave"
52ce26c5bbSMyungJoo Ham	help
53ce26c5bbSMyungJoo Ham	  Sets the frequency at the minimum available frequency.
54ce26c5bbSMyungJoo Ham	  This governor always returns 0 as frequency so that
55ce26c5bbSMyungJoo Ham	  the DEVFREQ framework returns the lowest frequency available
56ce26c5bbSMyungJoo Ham	  at any time.
57ce26c5bbSMyungJoo Ham
58ce26c5bbSMyungJoo Hamconfig DEVFREQ_GOV_USERSPACE
59eff607fdSNishanth Menon	tristate "Userspace"
60ce26c5bbSMyungJoo Ham	help
61ce26c5bbSMyungJoo Ham	  Sets the frequency at the user specified one.
62ce26c5bbSMyungJoo Ham	  This governor returns the user configured frequency if there
63ce26c5bbSMyungJoo Ham	  has been an input to /sys/devices/.../power/devfreq_set_freq.
64027b6934SGeert Uytterhoeven	  Otherwise, the governor does not change the frequency
65ce26c5bbSMyungJoo Ham	  given at the initialization.
66ce26c5bbSMyungJoo Ham
67a3c98b8bSMyungJoo Hamcomment "DEVFREQ Drivers"
68a3c98b8bSMyungJoo Ham
69*0722249aSChanwoo Choiconfig ARM_EXYNOS_BUS_DEVFREQ
70*0722249aSChanwoo Choi	bool "ARM EXYNOS Generic Memory Bus DEVFREQ Driver"
71*0722249aSChanwoo Choi	depends on ARCH_EXYNOS
72*0722249aSChanwoo Choi	select DEVFREQ_GOV_SIMPLE_ONDEMAND
73*0722249aSChanwoo Choi	select DEVFREQ_EVENT_EXYNOS_PPMU
74*0722249aSChanwoo Choi	select PM_DEVFREQ_EVENT
75*0722249aSChanwoo Choi	select PM_OPP
76*0722249aSChanwoo Choi	help
77*0722249aSChanwoo Choi	  This adds the common DEVFREQ driver for Exynos Memory bus. Exynos
78*0722249aSChanwoo Choi	  Memory bus has one more group of memory bus (e.g, MIF and INT block).
79*0722249aSChanwoo Choi	  Each memory bus group could contain many memoby bus block. It reads
80*0722249aSChanwoo Choi	  PPMU counters of memory controllers by using DEVFREQ-event device
81*0722249aSChanwoo Choi	  and adjusts the operating frequencies and voltages with OPP support.
82*0722249aSChanwoo Choi	  This does not yet operate with optimal voltages.
83*0722249aSChanwoo Choi
847b405038SMyungJoo Hamconfig ARM_EXYNOS4_BUS_DEVFREQ
857b405038SMyungJoo Ham	bool "ARM Exynos4210/4212/4412 Memory Bus DEVFREQ Driver"
86ba7abeb1SSachin Kamat	depends on (CPU_EXYNOS4210 || SOC_EXYNOS4212 || SOC_EXYNOS4412) && !ARCH_MULTIPLATFORM
877b405038SMyungJoo Ham	select DEVFREQ_GOV_SIMPLE_ONDEMAND
88b0d5068aSChanwoo Choi	select PM_OPP
897b405038SMyungJoo Ham	help
907b405038SMyungJoo Ham	  This adds the DEVFREQ driver for Exynos4210 memory bus (vdd_int)
917b405038SMyungJoo Ham	  and Exynos4212/4412 memory interface and bus (vdd_mif + vdd_int).
927b405038SMyungJoo Ham	  It reads PPMU counters of memory controllers and adjusts
937b405038SMyungJoo Ham	  the operating frequencies and voltages with OPP support.
94cb7063f4SPaul Bolle	  This does not yet operate with optimal voltages.
957b405038SMyungJoo Ham
966ccce699SAbhilash Kesavanconfig ARM_EXYNOS5_BUS_DEVFREQ
9781da57e6SPunit Agrawal	tristate "ARM Exynos5250 Bus DEVFREQ Driver"
986ccce699SAbhilash Kesavan	depends on SOC_EXYNOS5250
996ccce699SAbhilash Kesavan	select DEVFREQ_GOV_SIMPLE_ONDEMAND
100ae29fa1dSChanwoo Choi	select PM_OPP
1016ccce699SAbhilash Kesavan	help
1026ccce699SAbhilash Kesavan	  This adds the DEVFREQ driver for Exynos5250 bus interface (vdd_int).
1036ccce699SAbhilash Kesavan	  It reads PPMU counters of memory controllers and adjusts the
1046ccce699SAbhilash Kesavan	  operating frequencies and voltages with OPP support.
1056ccce699SAbhilash Kesavan
1066234f380STomeu Vizosoconfig ARM_TEGRA_DEVFREQ
1076234f380STomeu Vizoso       tristate "Tegra DEVFREQ Driver"
1086234f380STomeu Vizoso       depends on ARCH_TEGRA_124_SOC
1096234f380STomeu Vizoso       select DEVFREQ_GOV_SIMPLE_ONDEMAND
1106234f380STomeu Vizoso       select PM_OPP
1116234f380STomeu Vizoso       help
1126234f380STomeu Vizoso         This adds the DEVFREQ driver for the Tegra family of SoCs.
1136234f380STomeu Vizoso         It reads ACTMON counters of memory controllers and adjusts the
1146234f380STomeu Vizoso         operating frequencies and voltages with OPP support.
1156234f380STomeu Vizoso
116f262f28cSChanwoo Choisource "drivers/devfreq/event/Kconfig"
117f262f28cSChanwoo Choi
118a3c98b8bSMyungJoo Hamendif # PM_DEVFREQ
119