| 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 |
| 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/.../power/devfreq_set_freq. |
| Otherwise, the governor does not change the frequnecy |
| given at the initialization. |
| |
| 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 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 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 DEVFREQ_GOV_MSM_BW_HWMON |
| tristate "HW monitor based governor for device BW" |
| depends on ARCH_MSM_KRAIT || ARCH_MSM_BIMC_BWMON |
| help |
| HW monitor based governor for device to DDR bandwidth voting. |
| |
| When this governor is used for Krait CPUs, it sets the Krait CPU BW |
| vote by using L2 PM counters to monitor the Krait's use of DDR. |
| Since this uses some of the Krait PM 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 currently supports only Krait L2 PM counters. Sets the |
| cache frequency by using L2 PM counters to monitor the Krait's use |
| of the L2. 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. |
| |
| comment "DEVFREQ Drivers" |
| |
| config ARM_EXYNOS4_BUS_DEVFREQ |
| bool "ARM Exynos4210/4212/4412 Memory Bus DEVFREQ Driver" |
| depends on CPU_EXYNOS4210 || CPU_EXYNOS4212 || CPU_EXYNOS4412 |
| select ARCH_HAS_OPP |
| select DEVFREQ_GOV_SIMPLE_ONDEMAND |
| 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. |
| To operate with optimal voltages, ASV support is required |
| (CONFIG_EXYNOS_ASV). |
| |
| 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. |
| |
| endif # PM_DEVFREQ |