138 lines
5.0 KiB
Plaintext
138 lines
5.0 KiB
Plaintext
|
# SPDX-License-Identifier: GPL-2.0-only
|
||
|
menuconfig PM_DEVFREQ
|
||
|
bool "Generic Dynamic Voltage and Frequency Scaling (DVFS) support"
|
||
|
select SRCU
|
||
|
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_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_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.
|
||
|
|
||
|
source "drivers/devfreq/event/Kconfig"
|
||
|
|
||
|
endif # PM_DEVFREQ
|