regulator: qcom_smd: Add pmi8994 regulator support
The pmi8994 is commonly found on MSM8996 based devices, such as the Dragonboard 820c, where it supplies power to a number of LDOs on the primary PMIC. Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org> Link: https://lore.kernel.org/r/20200324041424.518160-1-bjorn.andersson@linaro.org Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
bd3ebed930
commit
86332c3434
|
@ -26,6 +26,7 @@ Regulator nodes are identified by their compatible:
|
|||
"qcom,rpm-pm8994-regulators"
|
||||
"qcom,rpm-pm8998-regulators"
|
||||
"qcom,rpm-pma8084-regulators"
|
||||
"qcom,rpm-pmi8994-regulators"
|
||||
"qcom,rpm-pmi8998-regulators"
|
||||
"qcom,rpm-pms405-regulators"
|
||||
|
||||
|
@ -143,6 +144,15 @@ Regulator nodes are identified by their compatible:
|
|||
Definition: reference to regulator supplying the input pin, as
|
||||
described in the data sheet
|
||||
|
||||
- vdd_s1-supply:
|
||||
- vdd_s2-supply:
|
||||
- vdd_s3-supply:
|
||||
- vdd_bst_byp-supply:
|
||||
Usage: optional (pmi8994 only)
|
||||
Value type: <phandle>
|
||||
Definition: reference to regulator supplying the input pin, as
|
||||
described in the data sheet
|
||||
|
||||
- vdd_s1-supply:
|
||||
- vdd_s2-supply:
|
||||
- vdd_s3-supply:
|
||||
|
@ -259,6 +269,9 @@ pma8084:
|
|||
l6, l7, l8, l9, l10, l11, l12, l13, l14, l15, l16, l17, l18, l19, l20,
|
||||
l21, l22, l23, l24, l25, l26, l27, lvs1, lvs2, lvs3, lvs4, 5vs1
|
||||
|
||||
pmi8994:
|
||||
s1, s2, s3, boost-bypass
|
||||
|
||||
pmi8998:
|
||||
bob
|
||||
|
||||
|
|
|
@ -445,6 +445,44 @@ static const struct regulator_desc pm8994_lnldo = {
|
|||
.ops = &rpm_smps_ldo_ops_fixed,
|
||||
};
|
||||
|
||||
static const struct regulator_desc pmi8994_ftsmps = {
|
||||
.linear_ranges = (struct regulator_linear_range[]) {
|
||||
REGULATOR_LINEAR_RANGE(350000, 0, 199, 5000),
|
||||
REGULATOR_LINEAR_RANGE(700000, 200, 349, 10000),
|
||||
},
|
||||
.n_linear_ranges = 2,
|
||||
.n_voltages = 350,
|
||||
.ops = &rpm_smps_ldo_ops,
|
||||
};
|
||||
|
||||
static const struct regulator_desc pmi8994_hfsmps = {
|
||||
.linear_ranges = (struct regulator_linear_range[]) {
|
||||
REGULATOR_LINEAR_RANGE(350000, 0, 80, 12500),
|
||||
REGULATOR_LINEAR_RANGE(700000, 81, 141, 25000),
|
||||
},
|
||||
.n_linear_ranges = 2,
|
||||
.n_voltages = 142,
|
||||
.ops = &rpm_smps_ldo_ops,
|
||||
};
|
||||
|
||||
static const struct regulator_desc pmi8994_bby = {
|
||||
.linear_ranges = (struct regulator_linear_range[]) {
|
||||
REGULATOR_LINEAR_RANGE(3000000, 0, 44, 50000),
|
||||
},
|
||||
.n_linear_ranges = 1,
|
||||
.n_voltages = 45,
|
||||
.ops = &rpm_bob_ops,
|
||||
};
|
||||
|
||||
static const struct regulator_desc pmi8994_boost = {
|
||||
.linear_ranges = (struct regulator_linear_range[]) {
|
||||
REGULATOR_LINEAR_RANGE(4000000, 0, 30, 50000),
|
||||
},
|
||||
.n_linear_ranges = 1,
|
||||
.n_voltages = 31,
|
||||
.ops = &rpm_smps_ldo_ops,
|
||||
};
|
||||
|
||||
static const struct regulator_desc pm8998_ftsmps = {
|
||||
.linear_ranges = (struct regulator_linear_range[]) {
|
||||
REGULATOR_LINEAR_RANGE(320000, 0, 258, 4000),
|
||||
|
@ -780,6 +818,14 @@ static const struct rpm_regulator_data rpm_pm8994_regulators[] = {
|
|||
{}
|
||||
};
|
||||
|
||||
static const struct rpm_regulator_data rpm_pmi8994_regulators[] = {
|
||||
{ "s1", QCOM_SMD_RPM_SMPB, 1, &pmi8994_ftsmps, "vdd_s1" },
|
||||
{ "s2", QCOM_SMD_RPM_SMPB, 2, &pmi8994_hfsmps, "vdd_s2" },
|
||||
{ "s2", QCOM_SMD_RPM_SMPB, 3, &pmi8994_hfsmps, "vdd_s3" },
|
||||
{ "boost-bypass", QCOM_SMD_RPM_BBYB, 1, &pmi8994_bby, "vdd_bst_byp" },
|
||||
{}
|
||||
};
|
||||
|
||||
static const struct rpm_regulator_data rpm_pm8998_regulators[] = {
|
||||
{ "s1", QCOM_SMD_RPM_SMPA, 1, &pm8998_ftsmps, "vdd_s1" },
|
||||
{ "s2", QCOM_SMD_RPM_SMPA, 2, &pm8998_ftsmps, "vdd_s2" },
|
||||
|
@ -862,6 +908,7 @@ static const struct of_device_id rpm_of_match[] = {
|
|||
{ .compatible = "qcom,rpm-pm8994-regulators", .data = &rpm_pm8994_regulators },
|
||||
{ .compatible = "qcom,rpm-pm8998-regulators", .data = &rpm_pm8998_regulators },
|
||||
{ .compatible = "qcom,rpm-pma8084-regulators", .data = &rpm_pma8084_regulators },
|
||||
{ .compatible = "qcom,rpm-pmi8994-regulators", .data = &rpm_pmi8994_regulators },
|
||||
{ .compatible = "qcom,rpm-pmi8998-regulators", .data = &rpm_pmi8998_regulators },
|
||||
{ .compatible = "qcom,rpm-pms405-regulators", .data = &rpm_pms405_regulators },
|
||||
{}
|
||||
|
|
|
@ -10,6 +10,7 @@ struct qcom_smd_rpm;
|
|||
/*
|
||||
* Constants used for addressing resources in the RPM.
|
||||
*/
|
||||
#define QCOM_SMD_RPM_BBYB 0x62796262
|
||||
#define QCOM_SMD_RPM_BOBB 0x62626f62
|
||||
#define QCOM_SMD_RPM_BOOST 0x61747362
|
||||
#define QCOM_SMD_RPM_BUS_CLK 0x316b6c63
|
||||
|
|
Loading…
Reference in a new issue