2024-09-09 08:52:07 +00:00
|
|
|
menuconfig PM_DEVFREQ
|
|
|
|
bool "Generic Dynamic Voltage and Frequency Scaling (DVFS) support"
|
|
|
|
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
|
2024-09-09 08:57:42 +00:00
|
|
|
responsibility to "interpret" the representative frequency and
|
2024-09-09 08:52:07 +00:00
|
|
|
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/.../power/devfreq_set_freq.
|
|
|
|
Otherwise, the governor does not change the frequnecy
|
|
|
|
given at the initialization.
|
|
|
|
|
2024-09-09 08:57:42 +00:00
|
|
|
config DEVFREQ_GOV_CPUFREQ
|
|
|
|
tristate "CPUfreq"
|
|
|
|
depends on CPU_FREQ
|
|
|
|
help
|
|
|
|
Chooses frequency based on the online CPUs' current frequency and a
|
|
|
|
CPU frequency to device frequency mapping table(s). This governor
|
|
|
|
can be useful for controlling devices such as DDR, cache, CCI, etc.
|
|
|
|
|
|
|
|
config DEVFREQ_GOV_MSM_ADRENO_TZ
|
|
|
|
tristate "MSM Adreno Trustzone"
|
|
|
|
depends on MSM_KGSL && MSM_SCM
|
|
|
|
help
|
|
|
|
Trustzone based governor for the Adreno GPU.
|
|
|
|
Sets the frequency using a "on-demand" algorithm.
|
|
|
|
This governor is unlikely to be useful for other devices.
|
|
|
|
|
|
|
|
config MSM_BIMC_BWMON
|
|
|
|
tristate "MSM BIMC Bandwidth monitor hardware"
|
|
|
|
depends on ARCH_MSM
|
|
|
|
help
|
|
|
|
The BIMC Bandwidth monitor hardware allows for monitoring the
|
|
|
|
traffic coming from each master port connected to the BIMC. It also
|
|
|
|
has the capability to raise an IRQ when the count exceeds a
|
|
|
|
programmable limit.
|
|
|
|
|
|
|
|
config DEVFREQ_GOV_MSM_GPUBW_MON
|
|
|
|
tristate "GPU BW voting governor"
|
|
|
|
depends on DEVFREQ_GOV_MSM_ADRENO_TZ
|
|
|
|
help
|
|
|
|
MSM GPU governor for GPU bus bandwidth voting.
|
|
|
|
This governor works together with MSM Adreno Trustzone governor,
|
|
|
|
and select bus frequency votes using an "on-demand" alorithm..
|
|
|
|
This governor is unlikely to be useful for non-MSM devices.
|
|
|
|
|
|
|
|
config ARMBW_HWMON
|
|
|
|
tristate "ARM PMU Bandwidth monitor hardware"
|
|
|
|
depends on ARCH_MSM8916 || ARCH_MSM8226 || ARCH_MSM8610
|
|
|
|
help
|
|
|
|
The PMU present on these ARM cores allow for the use of counters to
|
|
|
|
monitor the traffic coming from each core to the bus. It also has the
|
|
|
|
capability to raise an IRQ when the counter overflows, which can be
|
|
|
|
used to get an IRQ when the count exceeds a certain value
|
|
|
|
|
|
|
|
config ARM_MEMLAT_MON
|
|
|
|
tristate "ARM CPU Memory Latency monitor hardware"
|
|
|
|
depends on ARCH_MSM
|
|
|
|
help
|
|
|
|
The PMU present on these ARM cores allow for the use of counters to
|
|
|
|
monitor the memory latency characteristics of an ARM CPU workload.
|
|
|
|
This driver uses these counters to implement the APIs needed by
|
|
|
|
the mem_latency devfreq governor.
|
|
|
|
|
|
|
|
config MSMCCI_HWMON
|
|
|
|
tristate "MSM CCI Cache monitor hardware"
|
|
|
|
depends on ARCH_MSM
|
|
|
|
help
|
|
|
|
MSM CCI has additional PMU counters that can be used to monitor
|
|
|
|
cache requests. MSM CCI hardware monitor device configures these
|
|
|
|
registers to monitor cache and inform governor. It can also set an
|
|
|
|
IRQ when count exceeds a programmable limit.
|
|
|
|
|
|
|
|
config MSM_M4M_HWMON
|
|
|
|
tristate "MSM M4M cache monitor hardware"
|
|
|
|
depends on ARCH_MSM
|
|
|
|
help
|
|
|
|
MSM M4M has counters that can be used to monitor requests coming to
|
|
|
|
M4M. MSM M4M hardware monitor device programs corresponding registers
|
|
|
|
to monitor cache and inform governor. It can also set an IRQ when
|
|
|
|
count exceeds a programmable limit.
|
|
|
|
|
|
|
|
config DEVFREQ_GOV_MSM_BW_HWMON
|
|
|
|
tristate "HW monitor based governor for device BW"
|
|
|
|
depends on MSM_BIMC_BWMON
|
|
|
|
help
|
|
|
|
HW monitor based governor for device to DDR bandwidth voting.
|
|
|
|
This governor sets the CPU BW vote by using BIMC counters to monitor
|
|
|
|
the CPU's use of DDR. Since this uses target specific counters it
|
|
|
|
can conflict with existing profiling tools. This governor is unlikely
|
|
|
|
to be useful for non-MSM devices.
|
|
|
|
|
|
|
|
config DEVFREQ_GOV_MSM_CACHE_HWMON
|
|
|
|
tristate "HW monitor based governor for cache frequency"
|
|
|
|
help
|
|
|
|
HW monitor based governor for cache frequency scaling. This
|
|
|
|
governor sets the cache frequency by using PM counters to monitor the
|
|
|
|
CPU's use of cache. Since this governor uses some of the PM counters
|
|
|
|
it can conflict with existing profiling tools. This governor is
|
|
|
|
unlikely to be useful for other devices.
|
|
|
|
|
|
|
|
config DEVFREQ_GOV_SPDM_HYP
|
|
|
|
bool "MSM SPDM Hypervisor Governor"
|
|
|
|
depends on ARCH_MSM
|
|
|
|
help
|
|
|
|
Hypervisor based governor for CPU bandwidth voting
|
|
|
|
for MSM chipsets.
|
|
|
|
Sets the frequency using a "on-demand" algorithm.
|
|
|
|
This governor is unlikely to be useful for other devices.
|
|
|
|
|
|
|
|
config DEVFREQ_GOV_MEMLAT
|
|
|
|
tristate "HW monitor based governor for device BW"
|
|
|
|
depends on ARM_MEMLAT_MON
|
|
|
|
help
|
|
|
|
HW monitor based governor for device to DDR bandwidth voting.
|
|
|
|
This governor sets the CPU BW vote based on stats obtained from memalat
|
|
|
|
monitor if it determines that a workload is memory latency bound. Since
|
|
|
|
this uses target specific counters it can conflict with existing profiling
|
|
|
|
tools.
|
|
|
|
|
2024-09-09 08:52:07 +00:00
|
|
|
comment "DEVFREQ Drivers"
|
|
|
|
|
|
|
|
config ARM_EXYNOS4_BUS_DEVFREQ
|
|
|
|
bool "ARM Exynos4210/4212/4412 Memory Bus DEVFREQ Driver"
|
2024-09-09 08:57:42 +00:00
|
|
|
depends on (CPU_EXYNOS4210 || SOC_EXYNOS4212 || SOC_EXYNOS4412) && !ARCH_MULTIPLATFORM
|
2024-09-09 08:52:07 +00:00
|
|
|
select DEVFREQ_GOV_SIMPLE_ONDEMAND
|
2024-09-09 08:57:42 +00:00
|
|
|
select PM_OPP
|
2024-09-09 08:52:07 +00:00
|
|
|
help
|
|
|
|
This adds the DEVFREQ driver for Exynos4210 memory bus (vdd_int)
|
|
|
|
and Exynos4212/4412 memory interface and bus (vdd_mif + vdd_int).
|
|
|
|
It reads PPMU counters of memory controllers and adjusts
|
|
|
|
the operating frequencies and voltages with OPP support.
|
2024-09-09 08:57:42 +00:00
|
|
|
This does not yet operate with optimal voltages.
|
|
|
|
|
|
|
|
config ARM_EXYNOS5_BUS_DEVFREQ
|
|
|
|
tristate "ARM Exynos5250 Bus DEVFREQ Driver"
|
|
|
|
depends on SOC_EXYNOS5250
|
|
|
|
select DEVFREQ_GOV_SIMPLE_ONDEMAND
|
|
|
|
select PM_OPP
|
|
|
|
help
|
|
|
|
This adds the DEVFREQ driver for Exynos5250 bus interface (vdd_int).
|
|
|
|
It reads PPMU counters of memory controllers and adjusts the
|
|
|
|
operating frequencies and voltages with OPP support.
|
|
|
|
|
|
|
|
config DEVFREQ_SIMPLE_DEV
|
|
|
|
tristate "Device driver for simple clock device with no status info"
|
|
|
|
select DEVFREQ_GOV_PERFORMANCE
|
|
|
|
select DEVFREQ_GOV_POWERSAVE
|
|
|
|
select DEVFREQ_GOV_USERSPACE
|
|
|
|
select DEVFREQ_GOV_CPUFREQ
|
|
|
|
help
|
|
|
|
Device driver for simple devices that control their frequency using
|
|
|
|
clock APIs and don't have any form of status reporting.
|
|
|
|
|
|
|
|
config MSM_DEVFREQ_DEVBW
|
|
|
|
bool "MSM DEVFREQ device for device master <-> slave IB/AB BW voting"
|
|
|
|
depends on ARCH_MSM
|
|
|
|
select DEVFREQ_GOV_PERFORMANCE
|
|
|
|
select DEVFREQ_GOV_POWERSAVE
|
|
|
|
select DEVFREQ_GOV_USERSPACE
|
|
|
|
select DEVFREQ_GOV_CPUFREQ
|
|
|
|
default n
|
|
|
|
help
|
|
|
|
Different devfreq governors use this devfreq device to make CPU to
|
|
|
|
DDR IB/AB bandwidth votes. This driver provides a SoC topology
|
|
|
|
agnostic interface to so that some of the devfreq governors can be
|
|
|
|
shared across SoCs.
|
|
|
|
|
|
|
|
config SPDM_SCM
|
|
|
|
bool "MSM SPDM SCM based call support"
|
|
|
|
depends on DEVFREQ_SPDM
|
|
|
|
help
|
|
|
|
SPDM driver support the dcvs algorithm logic being accessed via
|
|
|
|
scm or hvc calls. This adds the support for SPDM interaction to
|
|
|
|
tz via SCM based call. If not selected then Hypervior interaction
|
|
|
|
will be activated.
|
|
|
|
|
|
|
|
config DEVFREQ_SPDM
|
|
|
|
bool "MSM SPDM based bandwidth voting"
|
|
|
|
depends on ARCH_MSM
|
|
|
|
select DEVFREQ_GOV_SPDM_HYP
|
|
|
|
help
|
|
|
|
This adds the support for SPDM based bandwidth voting on MSM chipsets.
|
|
|
|
This driver allows any SPDM based client to vote for bandwidth.
|
|
|
|
Used with the MSM SPDM Hypervisor Governor.
|
2024-09-09 08:52:07 +00:00
|
|
|
|
|
|
|
endif # PM_DEVFREQ
|