Merge "regulator: rpm-smd-regulator: Add support for proxy consumers"

This commit is contained in:
qctecmdr 2020-05-05 03:42:19 -07:00 • committed by Gerrit - the friendly Code Review server
commit 25339ae960
4 changed files with 1902 additions and 0 deletions

View file

@ -1181,6 +1181,17 @@ config REGULATOR_RPMH
control allows for voting on regulator state between multiple
processors within the SoC.
config REGULATOR_RPM_SMD
tristate "RPM SMD regulator driver"
depends on OF
depends on MSM_RPM_SMD
help
Compile in support for the RPM SMD regulator driver which is used for
setting voltages and other parameters of the various power rails
supplied by some Qualcomm Technologies Inc. PMICs. The RPM SMD regulator driver should
be used on systems which contain an RPM which communicates with the
application processor over SMD.
config REGULATOR_STUB
tristate "Stub Regulator"
help

View file

@ -87,6 +87,7 @@ obj-$(CONFIG_REGULATOR_QCOM_PM8008) += qcom_pm8008-regulator.o
obj-$(CONFIG_REGULATOR_QCOM_RPM) += qcom_rpm-regulator.o
obj-$(CONFIG_REGULATOR_QCOM_RPMH) += qcom-rpmh-regulator.o
obj-$(CONFIG_REGULATOR_QCOM_SMD_RPM) += qcom_smd-regulator.o
obj-$(CONFIG_REGULATOR_RPM_SMD) += rpm-smd-regulator.o
obj-$(CONFIG_REGULATOR_QCOM_SPMI) += qcom_spmi-regulator.o
obj-$(CONFIG_REGULATOR_QPNP_LCDB) += qpnp-lcdb-regulator.o
obj-$(CONFIG_REGULATOR_QPNP_AMOLED) += qpnp-amoled-regulator.o

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,95 @@
/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Copyright (c) 2012-2013, 2015, 2017, 2019-2020, The Linux Foundation. All rights reserved.
*/
#ifndef _LINUX_REGULATOR_RPM_SMD_H
#define _LINUX_REGULATOR_RPM_SMD_H
#include <linux/device.h>
struct rpm_regulator;
/**
* enum rpm_regulator_voltage_corner - possible voltage corner values
*
* These should be used in regulator_set_voltage() and
* rpm_regulator_set_voltage() calls for corner type regulators as if they had
* units of uV.
*
* Note, the meaning of corner values is set by the RPM. It is possible that
* future platforms will utilize different corner values. The values specified
* in this enum correspond to MSM8974 for PMIC PM8841 SMPS 2 (VDD_Dig).
*/
enum rpm_regulator_voltage_corner {
RPM_REGULATOR_CORNER_NONE = 1,
RPM_REGULATOR_CORNER_RETENTION,
RPM_REGULATOR_CORNER_SVS_KRAIT,
RPM_REGULATOR_CORNER_SVS_SOC,
RPM_REGULATOR_CORNER_NORMAL,
RPM_REGULATOR_CORNER_TURBO,
RPM_REGULATOR_CORNER_SUPER_TURBO,
};
/**
* enum rpm_regulator_voltage_level - possible voltage level values
*
* These should be used in regulator_set_voltage() and
* rpm_regulator_set_voltage() calls for level type regulators as if they had
* units of uV.
*
* Note: the meaning of level values is set by the RPM.
*/
enum rpm_regulator_voltage_level {
RPM_REGULATOR_LEVEL_NONE = 0,
RPM_REGULATOR_LEVEL_RETENTION = 16,
RPM_REGULATOR_LEVEL_RETENTION_PLUS = 32,
RPM_REGULATOR_LEVEL_MIN_SVS = 48,
RPM_REGULATOR_LEVEL_LOW_SVS = 64,
RPM_REGULATOR_LEVEL_SVS = 128,
RPM_REGULATOR_LEVEL_SVS_PLUS = 192,
RPM_REGULATOR_LEVEL_NOM = 256,
RPM_REGULATOR_LEVEL_NOM_PLUS = 320,
RPM_REGULATOR_LEVEL_TURBO = 384,
RPM_REGULATOR_LEVEL_TURBO_NO_CPR = 416,
RPM_REGULATOR_LEVEL_BINNING = 512,
RPM_REGULATOR_LEVEL_MAX = 65535,
};
/**
* enum rpm_regulator_mode - control mode for LDO or SMPS type regulators
* %RPM_REGULATOR_MODE_AUTO: For SMPS type regulators, use SMPS auto mode so
* that the hardware can automatically switch
* between PFM and PWM modes based on realtime
* load.
* LDO type regulators do not support this mode.
* %RPM_REGULATOR_MODE_IPEAK: For SMPS type regulators, use aggregated
* software current requests to determine
* usage of PFM or PWM mode.
* For LDO type regulators, use aggregated
* software current requests to determine
* usage of LPM or HPM mode.
* %RPM_REGULATOR_MODE_HPM: For SMPS type regulators, force the
* usage of PWM mode.
* For LDO type regulators, force the
* usage of HPM mode.
*
* These values should be used in calls to rpm_regulator_set_mode().
*/
enum rpm_regulator_mode {
RPM_REGULATOR_MODE_AUTO,
RPM_REGULATOR_MODE_IPEAK,
RPM_REGULATOR_MODE_HPM,
};
#ifdef CONFIG_DEBUG_FS
static void rpm_vreg_create_debugfs(struct rpm_regulator *reg);
#else
static inline void rpm_vreg_create_debugfs(struct rpm_regulator *reg)
{
}
#endif
#endif