Commit bf6910ab authored by Niklas Cassel's avatar Niklas Cassel Committed by Rafael J. Wysocki
Browse files

power: avs: Add support for CPR (Core Power Reduction)

CPR (Core Power Reduction) is a technology that reduces core power on a
CPU or other device. It reads voltage settings in efuse from product
test process as initial settings.
Each OPP corresponds to a "corner" that has a range of valid voltages
for a particular frequency. While the device is running at a particular
frequency, CPR monitors dynamic factors such as temperature, etc. and
adjusts the voltage for that frequency accordingly to save power
and meet silicon characteristic requirements.

This driver is based on an RFC by Stephen Boyd[1], which in turn is
based on work by others on codeaurora.org[2].

[1] https://lkml.org/lkml/2015/9/18/833
[2] https://source.codeaurora.org/quic/la/kernel/msm-4.14/tree/drivers/regulator/cpr-regulator.c?h=msm-4.14



Co-developed-by: default avatarJorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
Signed-off-by: default avatarJorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
Signed-off-by: default avatarNiklas Cassel <niklas.cassel@linaro.org>
Reviewed-by: default avatarBjorn Andersson <bjorn.andersson@linaro.org>
Reviewed-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent 3185fe1d
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -13667,6 +13667,14 @@ S: Maintained
F:	Documentation/devicetree/bindings/opp/qcom-nvmem-cpufreq.txt
F:	drivers/cpufreq/qcom-cpufreq-nvmem.c
QUALCOMM CORE POWER REDUCTION (CPR) AVS DRIVER
M:	Niklas Cassel <nks@flawful.org>
L:	linux-pm@vger.kernel.org
L:	linux-arm-msm@vger.kernel.org
S:	Maintained
F:	Documentation/devicetree/bindings/power/avs/qcom,cpr.txt
F:	drivers/power/avs/qcom-cpr.c
QUALCOMM EMAC GIGABIT ETHERNET DRIVER
M:	Timur Tabi <timur@kernel.org>
L:	netdev@vger.kernel.org
+15 −0
Original line number Diff line number Diff line
@@ -12,6 +12,21 @@ menuconfig POWER_AVS

	  Say Y here to enable Adaptive Voltage Scaling class support.

config QCOM_CPR
	tristate "QCOM Core Power Reduction (CPR) support"
	depends on POWER_AVS
	select PM_OPP
	help
	  Say Y here to enable support for the CPR hardware found on Qualcomm
	  SoCs like QCS404.

	  This driver populates CPU OPPs tables and makes adjustments to the
	  tables based on feedback from the CPR hardware. If you want to do
	  CPUfrequency scaling say Y here.

	  To compile this driver as a module, choose M here: the module will
	  be called qcom-cpr

config ROCKCHIP_IODOMAIN
	tristate "Rockchip IO domain support"
	depends on POWER_AVS && ARCH_ROCKCHIP && OF
+1 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0-only
obj-$(CONFIG_POWER_AVS_OMAP)		+= smartreflex.o
obj-$(CONFIG_QCOM_CPR)			+= qcom-cpr.o
obj-$(CONFIG_ROCKCHIP_IODOMAIN)		+= rockchip-io-domain.o
+1792 −0

File added.

Preview size limit exceeded, changes collapsed.