mirror of
https://github.com/torvalds/linux.git
synced 2024-11-17 09:31:50 +00:00
Merge series "Support for PM660/PM660L SPMI and SMD regulators" from kholk11@gmail.com
AngeloGioacchino Del Regno <kholk11@gmail.com>: From: AngeloGioacchino Del Regno <kholk11@gmail.com> This patch series enables support for the regulators as found in the PM660 and PM660L PMICs. While at it, and to make them work, along with other regulators for other qcom PMICs, enlarge the maximum property name length in the regulator core, so that we're able to correctly parse the supply parents, which have got very long names (details in patch 1/5). This patch series has been tested against the following devices: - Sony Xperia XA2 Ultra (SDM630 Nile Discovery) - Sony Xperia 10 (SDM630 Ganges Kirin) - Sony Xperia 10 Plus (SDM636 Ganges Mermaid) AngeloGioacchino Del Regno (7): regulator: core: Enlarge max OF property name length to 64 chars regulator: qcom_spmi: Add support for new regulator types regulator: qcom_spmi: Add PM660/PM660L regulators regulator: dt-bindings: Document the PM660/660L SPMI PMIC entries regulator: qcom_smd: Add PM660/PM660L regulator support mfd: qcom-spmi-pmic: Add support for PM660/PM660L regulator: dt-bindings: Document the PM660/PM660L PMICs entries .../regulator/qcom,smd-rpm-regulator.yaml | 7 ++ .../regulator/qcom,spmi-regulator.txt | 31 +++++ drivers/mfd/qcom-spmi-pmic.c | 4 + drivers/regulator/core.c | 4 +- drivers/regulator/qcom_smd-regulator.c | 113 ++++++++++++++++++ drivers/regulator/qcom_spmi-regulator.c | 107 +++++++++++++++++ include/linux/soc/qcom/smd-rpm.h | 4 + 7 files changed, 268 insertions(+), 2 deletions(-) -- 2.28.0
This commit is contained in:
commit
0b5a218706
@ -41,6 +41,11 @@ description:
|
|||||||
l3, l4, l5, l6, l7, l8, l9, l10, l11, l12, l13, l14, l15, l16, l17, l18, l19,
|
l3, l4, l5, l6, l7, l8, l9, l10, l11, l12, l13, l14, l15, l16, l17, l18, l19,
|
||||||
l20, l21, l22, l23, l24, l25, l26, l27, l28, lvs1, lvs2
|
l20, l21, l22, l23, l24, l25, l26, l27, l28, lvs1, lvs2
|
||||||
|
|
||||||
|
For pm660, s1, s2, s3, s4, s5, s6, l1, l2, l3, l5, l6, l7, l8, l9, l10, l22,
|
||||||
|
l12, l13, l14, l15, l16, l17, l18, l19
|
||||||
|
|
||||||
|
For pm660l s1, s2, s3, s5, l1, l2, l3, l4, l5, l6, l7, l8, l9, l10, bob
|
||||||
|
|
||||||
For pma8084, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, l1, l2, l3,
|
For pma8084, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, l1, l2, l3,
|
||||||
l4, l5, l6, l7, l8, l9, l10, l11, l12, l13, l14, l15, l16, l17, l18, l19,
|
l4, l5, 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
|
l20, l21, l22, l23, l24, l25, l26, l27, lvs1, lvs2, lvs3, lvs4, 5vs1
|
||||||
@ -65,6 +70,8 @@ properties:
|
|||||||
- qcom,rpm-pm8950-regulators
|
- qcom,rpm-pm8950-regulators
|
||||||
- qcom,rpm-pm8994-regulators
|
- qcom,rpm-pm8994-regulators
|
||||||
- qcom,rpm-pm8998-regulators
|
- qcom,rpm-pm8998-regulators
|
||||||
|
- qcom,rpm-pm660-regulators
|
||||||
|
- qcom,rpm-pm660l-regulators
|
||||||
- qcom,rpm-pma8084-regulators
|
- qcom,rpm-pma8084-regulators
|
||||||
- qcom,rpm-pmi8994-regulators
|
- qcom,rpm-pmi8994-regulators
|
||||||
- qcom,rpm-pmi8998-regulators
|
- qcom,rpm-pmi8998-regulators
|
||||||
|
@ -12,6 +12,8 @@ Qualcomm SPMI Regulators
|
|||||||
"qcom,pm8950-regulators"
|
"qcom,pm8950-regulators"
|
||||||
"qcom,pm8994-regulators"
|
"qcom,pm8994-regulators"
|
||||||
"qcom,pmi8994-regulators"
|
"qcom,pmi8994-regulators"
|
||||||
|
"qcom,pm660-regulators"
|
||||||
|
"qcom,pm660l-regulators"
|
||||||
"qcom,pms405-regulators"
|
"qcom,pms405-regulators"
|
||||||
|
|
||||||
- interrupts:
|
- interrupts:
|
||||||
@ -134,6 +136,35 @@ Qualcomm SPMI Regulators
|
|||||||
Definition: Reference to regulator supplying the input pin, as
|
Definition: Reference to regulator supplying the input pin, as
|
||||||
described in the data sheet.
|
described in the data sheet.
|
||||||
|
|
||||||
|
- vdd_l1_l6_l7-supply:
|
||||||
|
- vdd_l2_l3-supply:
|
||||||
|
- vdd_l5-supply:
|
||||||
|
- vdd_l8_l9_l10_l11_l12_l13_l14-supply:
|
||||||
|
- vdd_l15_l16_l17_l18_l19-supply:
|
||||||
|
- vdd_s1-supply:
|
||||||
|
- vdd_s2-supply:
|
||||||
|
- vdd_s3-supply:
|
||||||
|
- vdd_s5-supply:
|
||||||
|
- vdd_s6-supply:
|
||||||
|
Usage: optional (pm660 only)
|
||||||
|
Value type: <phandle>
|
||||||
|
Definition: Reference to regulator supplying the input pin, as
|
||||||
|
described in the data sheet.
|
||||||
|
|
||||||
|
- vdd_l1_l9_l10-supply:
|
||||||
|
- vdd_l2-supply:
|
||||||
|
- vdd_l3_l5_l7_l8-supply:
|
||||||
|
- vdd_l4_l6-supply:
|
||||||
|
- vdd_s1-supply:
|
||||||
|
- vdd_s2-supply:
|
||||||
|
- vdd_s3-supply:
|
||||||
|
- vdd_s4-supply:
|
||||||
|
- vdd_s5-supply:
|
||||||
|
Usage: optional (pm660l only)
|
||||||
|
Value type: <phandle>
|
||||||
|
Definition: Reference to regulator supplying the input pin, as
|
||||||
|
described in the data sheet.
|
||||||
|
|
||||||
- vdd_l1_l2-supply:
|
- vdd_l1_l2-supply:
|
||||||
- vdd_l3_l8-supply:
|
- vdd_l3_l8-supply:
|
||||||
- vdd_l4-supply:
|
- vdd_l4-supply:
|
||||||
|
@ -404,11 +404,11 @@ err_node_put:
|
|||||||
static struct device_node *of_get_regulator(struct device *dev, const char *supply)
|
static struct device_node *of_get_regulator(struct device *dev, const char *supply)
|
||||||
{
|
{
|
||||||
struct device_node *regnode = NULL;
|
struct device_node *regnode = NULL;
|
||||||
char prop_name[32]; /* 32 is max size of property name */
|
char prop_name[64]; /* 64 is max size of property name */
|
||||||
|
|
||||||
dev_dbg(dev, "Looking up %s-supply from device tree\n", supply);
|
dev_dbg(dev, "Looking up %s-supply from device tree\n", supply);
|
||||||
|
|
||||||
snprintf(prop_name, 32, "%s-supply", supply);
|
snprintf(prop_name, 64, "%s-supply", supply);
|
||||||
regnode = of_parse_phandle(dev->of_node, prop_name, 0);
|
regnode = of_parse_phandle(dev->of_node, prop_name, 0);
|
||||||
|
|
||||||
if (!regnode) {
|
if (!regnode) {
|
||||||
|
@ -541,6 +541,69 @@ static const struct regulator_desc pmi8998_bob = {
|
|||||||
.ops = &rpm_bob_ops,
|
.ops = &rpm_bob_ops,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const struct regulator_desc pm660_ftsmps = {
|
||||||
|
.linear_ranges = (struct linear_range[]) {
|
||||||
|
REGULATOR_LINEAR_RANGE(355000, 0, 199, 5000),
|
||||||
|
},
|
||||||
|
.n_linear_ranges = 1,
|
||||||
|
.n_voltages = 200,
|
||||||
|
.ops = &rpm_smps_ldo_ops,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct regulator_desc pm660_hfsmps = {
|
||||||
|
.linear_ranges = (struct linear_range[]) {
|
||||||
|
REGULATOR_LINEAR_RANGE(320000, 0, 216, 8000),
|
||||||
|
},
|
||||||
|
.n_linear_ranges = 1,
|
||||||
|
.n_voltages = 217,
|
||||||
|
.ops = &rpm_smps_ldo_ops,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct regulator_desc pm660_ht_nldo = {
|
||||||
|
.linear_ranges = (struct linear_range[]) {
|
||||||
|
REGULATOR_LINEAR_RANGE(312000, 0, 124, 8000),
|
||||||
|
},
|
||||||
|
.n_linear_ranges = 1,
|
||||||
|
.n_voltages = 125,
|
||||||
|
.ops = &rpm_smps_ldo_ops,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct regulator_desc pm660_ht_lvpldo = {
|
||||||
|
.linear_ranges = (struct linear_range[]) {
|
||||||
|
REGULATOR_LINEAR_RANGE(1504000, 0, 62, 8000),
|
||||||
|
},
|
||||||
|
.n_linear_ranges = 1,
|
||||||
|
.n_voltages = 63,
|
||||||
|
.ops = &rpm_smps_ldo_ops,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct regulator_desc pm660_nldo660 = {
|
||||||
|
.linear_ranges = (struct linear_range[]) {
|
||||||
|
REGULATOR_LINEAR_RANGE(320000, 0, 123, 8000),
|
||||||
|
},
|
||||||
|
.n_linear_ranges = 1,
|
||||||
|
.n_voltages = 124,
|
||||||
|
.ops = &rpm_smps_ldo_ops,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct regulator_desc pm660_pldo660 = {
|
||||||
|
.linear_ranges = (struct linear_range[]) {
|
||||||
|
REGULATOR_LINEAR_RANGE(1504000, 0, 255, 8000),
|
||||||
|
},
|
||||||
|
.n_linear_ranges = 1,
|
||||||
|
.n_voltages = 256,
|
||||||
|
.ops = &rpm_smps_ldo_ops,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct regulator_desc pm660l_bob = {
|
||||||
|
.linear_ranges = (struct linear_range[]) {
|
||||||
|
REGULATOR_LINEAR_RANGE(1800000, 0, 84, 32000),
|
||||||
|
},
|
||||||
|
.n_linear_ranges = 1,
|
||||||
|
.n_voltages = 85,
|
||||||
|
.ops = &rpm_bob_ops,
|
||||||
|
};
|
||||||
|
|
||||||
static const struct regulator_desc pms405_hfsmps3 = {
|
static const struct regulator_desc pms405_hfsmps3 = {
|
||||||
.linear_ranges = (struct linear_range[]) {
|
.linear_ranges = (struct linear_range[]) {
|
||||||
REGULATOR_LINEAR_RANGE(320000, 0, 215, 8000),
|
REGULATOR_LINEAR_RANGE(320000, 0, 215, 8000),
|
||||||
@ -902,6 +965,54 @@ static const struct rpm_regulator_data rpm_pmi8998_regulators[] = {
|
|||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const struct rpm_regulator_data rpm_pm660_regulators[] = {
|
||||||
|
{ "s1", QCOM_SMD_RPM_SMPA, 1, &pm660_ftsmps, "vdd_s1" },
|
||||||
|
{ "s2", QCOM_SMD_RPM_SMPA, 2, &pm660_ftsmps, "vdd_s2" },
|
||||||
|
{ "s3", QCOM_SMD_RPM_SMPA, 3, &pm660_ftsmps, "vdd_s3" },
|
||||||
|
{ "s4", QCOM_SMD_RPM_SMPA, 4, &pm660_hfsmps, "vdd_s4" },
|
||||||
|
{ "s5", QCOM_SMD_RPM_SMPA, 5, &pm660_hfsmps, "vdd_s5" },
|
||||||
|
{ "s6", QCOM_SMD_RPM_SMPA, 6, &pm660_hfsmps, "vdd_s6" },
|
||||||
|
{ "l1", QCOM_SMD_RPM_LDOA, 1, &pm660_nldo660, "vdd_l1_l6_l7" },
|
||||||
|
{ "l2", QCOM_SMD_RPM_LDOA, 2, &pm660_ht_nldo, "vdd_l2_l3" },
|
||||||
|
{ "l3", QCOM_SMD_RPM_LDOA, 3, &pm660_nldo660, "vdd_l2_l3" },
|
||||||
|
/* l4 is unaccessible on PM660 */
|
||||||
|
{ "l5", QCOM_SMD_RPM_LDOA, 5, &pm660_ht_nldo, "vdd_l5" },
|
||||||
|
{ "l6", QCOM_SMD_RPM_LDOA, 6, &pm660_ht_nldo, "vdd_l1_l6_l7" },
|
||||||
|
{ "l7", QCOM_SMD_RPM_LDOA, 7, &pm660_ht_nldo, "vdd_l1_l6_l7" },
|
||||||
|
{ "l8", QCOM_SMD_RPM_LDOA, 8, &pm660_ht_lvpldo, "vdd_l8_l9_l10_l11_l12_l13_l14" },
|
||||||
|
{ "l9", QCOM_SMD_RPM_LDOA, 9, &pm660_ht_lvpldo, "vdd_l8_l9_l10_l11_l12_l13_l14" },
|
||||||
|
{ "l10", QCOM_SMD_RPM_LDOA, 10, &pm660_ht_lvpldo, "vdd_l8_l9_l10_l11_l12_l13_l14" },
|
||||||
|
{ "l11", QCOM_SMD_RPM_LDOA, 11, &pm660_ht_lvpldo, "vdd_l8_l9_l10_l11_l12_l13_l14" },
|
||||||
|
{ "l12", QCOM_SMD_RPM_LDOA, 12, &pm660_ht_lvpldo, "vdd_l8_l9_l10_l11_l12_l13_l14" },
|
||||||
|
{ "l13", QCOM_SMD_RPM_LDOA, 13, &pm660_ht_lvpldo, "vdd_l8_l9_l10_l11_l12_l13_l14" },
|
||||||
|
{ "l14", QCOM_SMD_RPM_LDOA, 14, &pm660_ht_lvpldo, "vdd_l8_l9_l10_l11_l12_l13_l14" },
|
||||||
|
{ "l15", QCOM_SMD_RPM_LDOA, 15, &pm660_pldo660, "vdd_l15_l16_l17_l18_l19" },
|
||||||
|
{ "l16", QCOM_SMD_RPM_LDOA, 16, &pm660_pldo660, "vdd_l15_l16_l17_l18_l19" },
|
||||||
|
{ "l17", QCOM_SMD_RPM_LDOA, 17, &pm660_pldo660, "vdd_l15_l16_l17_l18_l19" },
|
||||||
|
{ "l18", QCOM_SMD_RPM_LDOA, 18, &pm660_pldo660, "vdd_l15_l16_l17_l18_l19" },
|
||||||
|
{ "l19", QCOM_SMD_RPM_LDOA, 19, &pm660_pldo660, "vdd_l15_l16_l17_l18_l19" },
|
||||||
|
{ }
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct rpm_regulator_data rpm_pm660l_regulators[] = {
|
||||||
|
{ "s1", QCOM_SMD_RPM_SMPB, 1, &pm660_ftsmps, "vdd_s1" },
|
||||||
|
{ "s2", QCOM_SMD_RPM_SMPB, 2, &pm660_ftsmps, "vdd_s2" },
|
||||||
|
{ "s3", QCOM_SMD_RPM_RWCX, 0, &pm660_ftsmps, "vdd_s3_s4" },
|
||||||
|
{ "s5", QCOM_SMD_RPM_RWMX, 0, &pm660_ftsmps, "vdd_s5" },
|
||||||
|
{ "l1", QCOM_SMD_RPM_LDOB, 1, &pm660_nldo660, "vdd_l1_l9_l10" },
|
||||||
|
{ "l2", QCOM_SMD_RPM_LDOB, 2, &pm660_pldo660, "vdd_l2" },
|
||||||
|
{ "l3", QCOM_SMD_RPM_LDOB, 3, &pm660_pldo660, "vdd_l3_l5_l7_l8" },
|
||||||
|
{ "l4", QCOM_SMD_RPM_LDOB, 4, &pm660_pldo660, "vdd_l4_l6" },
|
||||||
|
{ "l5", QCOM_SMD_RPM_LDOB, 5, &pm660_pldo660, "vdd_l3_l5_l7_l8" },
|
||||||
|
{ "l6", QCOM_SMD_RPM_LDOB, 6, &pm660_pldo660, "vdd_l4_l6" },
|
||||||
|
{ "l7", QCOM_SMD_RPM_LDOB, 7, &pm660_pldo660, "vdd_l3_l5_l7_l8" },
|
||||||
|
{ "l8", QCOM_SMD_RPM_LDOB, 8, &pm660_pldo660, "vdd_l3_l5_l7_l8" },
|
||||||
|
{ "l9", QCOM_SMD_RPM_RWLC, 0, &pm660_ht_nldo, "vdd_l1_l9_l10" },
|
||||||
|
{ "l10", QCOM_SMD_RPM_RWLM, 0, &pm660_ht_nldo, "vdd_l1_l9_l10" },
|
||||||
|
{ "bob", QCOM_SMD_RPM_BOBB, 1, &pm660l_bob, "vdd_bob", },
|
||||||
|
{ }
|
||||||
|
};
|
||||||
|
|
||||||
static const struct rpm_regulator_data rpm_pms405_regulators[] = {
|
static const struct rpm_regulator_data rpm_pms405_regulators[] = {
|
||||||
{ "s1", QCOM_SMD_RPM_SMPA, 1, &pms405_hfsmps3, "vdd_s1" },
|
{ "s1", QCOM_SMD_RPM_SMPA, 1, &pms405_hfsmps3, "vdd_s1" },
|
||||||
{ "s2", QCOM_SMD_RPM_SMPA, 2, &pms405_hfsmps3, "vdd_s2" },
|
{ "s2", QCOM_SMD_RPM_SMPA, 2, &pms405_hfsmps3, "vdd_s2" },
|
||||||
@ -932,6 +1043,8 @@ static const struct of_device_id rpm_of_match[] = {
|
|||||||
{ .compatible = "qcom,rpm-pm8950-regulators", .data = &rpm_pm8950_regulators },
|
{ .compatible = "qcom,rpm-pm8950-regulators", .data = &rpm_pm8950_regulators },
|
||||||
{ .compatible = "qcom,rpm-pm8994-regulators", .data = &rpm_pm8994_regulators },
|
{ .compatible = "qcom,rpm-pm8994-regulators", .data = &rpm_pm8994_regulators },
|
||||||
{ .compatible = "qcom,rpm-pm8998-regulators", .data = &rpm_pm8998_regulators },
|
{ .compatible = "qcom,rpm-pm8998-regulators", .data = &rpm_pm8998_regulators },
|
||||||
|
{ .compatible = "qcom,rpm-pm660-regulators", .data = &rpm_pm660_regulators },
|
||||||
|
{ .compatible = "qcom,rpm-pm660l-regulators", .data = &rpm_pm660l_regulators },
|
||||||
{ .compatible = "qcom,rpm-pma8084-regulators", .data = &rpm_pma8084_regulators },
|
{ .compatible = "qcom,rpm-pma8084-regulators", .data = &rpm_pma8084_regulators },
|
||||||
{ .compatible = "qcom,rpm-pmi8994-regulators", .data = &rpm_pmi8994_regulators },
|
{ .compatible = "qcom,rpm-pmi8994-regulators", .data = &rpm_pmi8994_regulators },
|
||||||
{ .compatible = "qcom,rpm-pmi8998-regulators", .data = &rpm_pmi8998_regulators },
|
{ .compatible = "qcom,rpm-pmi8998-regulators", .data = &rpm_pmi8998_regulators },
|
||||||
|
@ -135,6 +135,18 @@ enum spmi_regulator_subtype {
|
|||||||
SPMI_REGULATOR_SUBTYPE_LV_P600 = 0x2b,
|
SPMI_REGULATOR_SUBTYPE_LV_P600 = 0x2b,
|
||||||
SPMI_REGULATOR_SUBTYPE_LV_P1200 = 0x2c,
|
SPMI_REGULATOR_SUBTYPE_LV_P1200 = 0x2c,
|
||||||
SPMI_REGULATOR_SUBTYPE_LV_P450 = 0x2d,
|
SPMI_REGULATOR_SUBTYPE_LV_P450 = 0x2d,
|
||||||
|
SPMI_REGULATOR_SUBTYPE_HT_N300_ST = 0x30,
|
||||||
|
SPMI_REGULATOR_SUBTYPE_HT_N600_ST = 0x31,
|
||||||
|
SPMI_REGULATOR_SUBTYPE_HT_N1200_ST = 0x32,
|
||||||
|
SPMI_REGULATOR_SUBTYPE_HT_LVP150 = 0x3b,
|
||||||
|
SPMI_REGULATOR_SUBTYPE_HT_LVP300 = 0x3c,
|
||||||
|
SPMI_REGULATOR_SUBTYPE_L660_N300_ST = 0x42,
|
||||||
|
SPMI_REGULATOR_SUBTYPE_L660_N600_ST = 0x43,
|
||||||
|
SPMI_REGULATOR_SUBTYPE_L660_P50 = 0x46,
|
||||||
|
SPMI_REGULATOR_SUBTYPE_L660_P150 = 0x47,
|
||||||
|
SPMI_REGULATOR_SUBTYPE_L660_P600 = 0x49,
|
||||||
|
SPMI_REGULATOR_SUBTYPE_L660_LVP150 = 0x4d,
|
||||||
|
SPMI_REGULATOR_SUBTYPE_L660_LVP600 = 0x4f,
|
||||||
SPMI_REGULATOR_SUBTYPE_LV100 = 0x01,
|
SPMI_REGULATOR_SUBTYPE_LV100 = 0x01,
|
||||||
SPMI_REGULATOR_SUBTYPE_LV300 = 0x02,
|
SPMI_REGULATOR_SUBTYPE_LV300 = 0x02,
|
||||||
SPMI_REGULATOR_SUBTYPE_MV300 = 0x08,
|
SPMI_REGULATOR_SUBTYPE_MV300 = 0x08,
|
||||||
@ -511,6 +523,22 @@ static struct spmi_voltage_range ult_pldo_ranges[] = {
|
|||||||
SPMI_VOLTAGE_RANGE(0, 1750000, 1750000, 3337500, 3337500, 12500),
|
SPMI_VOLTAGE_RANGE(0, 1750000, 1750000, 3337500, 3337500, 12500),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static struct spmi_voltage_range pldo660_ranges[] = {
|
||||||
|
SPMI_VOLTAGE_RANGE(0, 1504000, 1504000, 3544000, 3544000, 8000),
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct spmi_voltage_range nldo660_ranges[] = {
|
||||||
|
SPMI_VOLTAGE_RANGE(0, 320000, 320000, 1304000, 1304000, 8000),
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct spmi_voltage_range ht_lvpldo_ranges[] = {
|
||||||
|
SPMI_VOLTAGE_RANGE(0, 1504000, 1504000, 2000000, 2000000, 8000),
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct spmi_voltage_range ht_nldo_ranges[] = {
|
||||||
|
SPMI_VOLTAGE_RANGE(0, 312000, 312000, 1304000, 1304000, 8000),
|
||||||
|
};
|
||||||
|
|
||||||
static struct spmi_voltage_range hfs430_ranges[] = {
|
static struct spmi_voltage_range hfs430_ranges[] = {
|
||||||
SPMI_VOLTAGE_RANGE(0, 320000, 320000, 2040000, 2040000, 8000),
|
SPMI_VOLTAGE_RANGE(0, 320000, 320000, 2040000, 2040000, 8000),
|
||||||
};
|
};
|
||||||
@ -530,6 +558,10 @@ static DEFINE_SPMI_SET_POINTS(ult_lo_smps);
|
|||||||
static DEFINE_SPMI_SET_POINTS(ult_ho_smps);
|
static DEFINE_SPMI_SET_POINTS(ult_ho_smps);
|
||||||
static DEFINE_SPMI_SET_POINTS(ult_nldo);
|
static DEFINE_SPMI_SET_POINTS(ult_nldo);
|
||||||
static DEFINE_SPMI_SET_POINTS(ult_pldo);
|
static DEFINE_SPMI_SET_POINTS(ult_pldo);
|
||||||
|
static DEFINE_SPMI_SET_POINTS(pldo660);
|
||||||
|
static DEFINE_SPMI_SET_POINTS(nldo660);
|
||||||
|
static DEFINE_SPMI_SET_POINTS(ht_lvpldo);
|
||||||
|
static DEFINE_SPMI_SET_POINTS(ht_nldo);
|
||||||
static DEFINE_SPMI_SET_POINTS(hfs430);
|
static DEFINE_SPMI_SET_POINTS(hfs430);
|
||||||
|
|
||||||
static inline int spmi_vreg_read(struct spmi_regulator *vreg, u16 addr, u8 *buf,
|
static inline int spmi_vreg_read(struct spmi_regulator *vreg, u16 addr, u8 *buf,
|
||||||
@ -1443,6 +1475,30 @@ static const struct spmi_regulator_mapping supported_regulators[] = {
|
|||||||
SPMI_VREG(LDO, LV_P300, 0, INF, LDO, ldo, pldo, 10000),
|
SPMI_VREG(LDO, LV_P300, 0, INF, LDO, ldo, pldo, 10000),
|
||||||
SPMI_VREG(LDO, LV_P600, 0, INF, LDO, ldo, pldo, 10000),
|
SPMI_VREG(LDO, LV_P600, 0, INF, LDO, ldo, pldo, 10000),
|
||||||
SPMI_VREG(LDO, LV_P1200, 0, INF, LDO, ldo, pldo, 10000),
|
SPMI_VREG(LDO, LV_P1200, 0, INF, LDO, ldo, pldo, 10000),
|
||||||
|
SPMI_VREG(LDO, HT_N300_ST, 0, INF, FTSMPS426, ftsmps426,
|
||||||
|
ht_nldo, 30000),
|
||||||
|
SPMI_VREG(LDO, HT_N600_ST, 0, INF, FTSMPS426, ftsmps426,
|
||||||
|
ht_nldo, 30000),
|
||||||
|
SPMI_VREG(LDO, HT_N1200_ST, 0, INF, FTSMPS426, ftsmps426,
|
||||||
|
ht_nldo, 30000),
|
||||||
|
SPMI_VREG(LDO, HT_LVP150, 0, INF, FTSMPS426, ftsmps426,
|
||||||
|
ht_lvpldo, 10000),
|
||||||
|
SPMI_VREG(LDO, HT_LVP300, 0, INF, FTSMPS426, ftsmps426,
|
||||||
|
ht_lvpldo, 10000),
|
||||||
|
SPMI_VREG(LDO, L660_N300_ST, 0, INF, FTSMPS426, ftsmps426,
|
||||||
|
nldo660, 10000),
|
||||||
|
SPMI_VREG(LDO, L660_N600_ST, 0, INF, FTSMPS426, ftsmps426,
|
||||||
|
nldo660, 10000),
|
||||||
|
SPMI_VREG(LDO, L660_P50, 0, INF, FTSMPS426, ftsmps426,
|
||||||
|
pldo660, 10000),
|
||||||
|
SPMI_VREG(LDO, L660_P150, 0, INF, FTSMPS426, ftsmps426,
|
||||||
|
pldo660, 10000),
|
||||||
|
SPMI_VREG(LDO, L660_P600, 0, INF, FTSMPS426, ftsmps426,
|
||||||
|
pldo660, 10000),
|
||||||
|
SPMI_VREG(LDO, L660_LVP150, 0, INF, FTSMPS426, ftsmps426,
|
||||||
|
ht_lvpldo, 10000),
|
||||||
|
SPMI_VREG(LDO, L660_LVP600, 0, INF, FTSMPS426, ftsmps426,
|
||||||
|
ht_lvpldo, 10000),
|
||||||
SPMI_VREG_VS(LV100, 0, INF),
|
SPMI_VREG_VS(LV100, 0, INF),
|
||||||
SPMI_VREG_VS(LV300, 0, INF),
|
SPMI_VREG_VS(LV300, 0, INF),
|
||||||
SPMI_VREG_VS(MV300, 0, INF),
|
SPMI_VREG_VS(MV300, 0, INF),
|
||||||
@ -1958,6 +2014,55 @@ static const struct spmi_regulator_data pmi8994_regulators[] = {
|
|||||||
{ }
|
{ }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const struct spmi_regulator_data pm660_regulators[] = {
|
||||||
|
{ "s1", 0x1400, "vdd_s1", },
|
||||||
|
{ "s2", 0x1700, "vdd_s2", },
|
||||||
|
{ "s3", 0x1a00, "vdd_s3", },
|
||||||
|
{ "s4", 0x1d00, "vdd_s3", },
|
||||||
|
{ "s5", 0x2000, "vdd_s5", },
|
||||||
|
{ "s6", 0x2300, "vdd_s6", },
|
||||||
|
{ "l1", 0x4000, "vdd_l1_l6_l7", },
|
||||||
|
{ "l2", 0x4100, "vdd_l2_l3", },
|
||||||
|
{ "l3", 0x4200, "vdd_l2_l3", },
|
||||||
|
/* l4 is unaccessible on PM660 */
|
||||||
|
{ "l5", 0x4400, "vdd_l5", },
|
||||||
|
{ "l6", 0x4500, "vdd_l1_l6_l7", },
|
||||||
|
{ "l7", 0x4600, "vdd_l1_l6_l7", },
|
||||||
|
{ "l8", 0x4700, "vdd_l8_l9_l10_l11_l12_l13_l14", },
|
||||||
|
{ "l9", 0x4800, "vdd_l8_l9_l10_l11_l12_l13_l14", },
|
||||||
|
{ "l10", 0x4900, "vdd_l8_l9_l10_l11_l12_l13_l14", },
|
||||||
|
{ "l11", 0x4a00, "vdd_l8_l9_l10_l11_l12_l13_l14", },
|
||||||
|
{ "l12", 0x4b00, "vdd_l8_l9_l10_l11_l12_l13_l14", },
|
||||||
|
{ "l13", 0x4c00, "vdd_l8_l9_l10_l11_l12_l13_l14", },
|
||||||
|
{ "l14", 0x4d00, "vdd_l8_l9_l10_l11_l12_l13_l14", },
|
||||||
|
{ "l15", 0x4e00, "vdd_l15_l16_l17_l18_l19", },
|
||||||
|
{ "l16", 0x4f00, "vdd_l15_l16_l17_l18_l19", },
|
||||||
|
{ "l17", 0x5000, "vdd_l15_l16_l17_l18_l19", },
|
||||||
|
{ "l18", 0x5100, "vdd_l15_l16_l17_l18_l19", },
|
||||||
|
{ "l19", 0x5200, "vdd_l15_l16_l17_l18_l19", },
|
||||||
|
{ }
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct spmi_regulator_data pm660l_regulators[] = {
|
||||||
|
{ "s1", 0x1400, "vdd_s1", },
|
||||||
|
{ "s2", 0x1700, "vdd_s2", },
|
||||||
|
{ "s3", 0x1a00, "vdd_s3", },
|
||||||
|
{ "s4", 0x1d00, "vdd_s4", },
|
||||||
|
{ "s5", 0x2000, "vdd_s5", },
|
||||||
|
{ "l1", 0x4000, "vdd_l1_l9_l10", },
|
||||||
|
{ "l2", 0x4100, "vdd_l2", },
|
||||||
|
{ "l3", 0x4200, "vdd_l3_l5_l7_l8", },
|
||||||
|
{ "l4", 0x4300, "vdd_l4_l6", },
|
||||||
|
{ "l5", 0x4400, "vdd_l3_l5_l7_l8", },
|
||||||
|
{ "l6", 0x4500, "vdd_l4_l6", },
|
||||||
|
{ "l7", 0x4600, "vdd_l3_l5_l7_l8", },
|
||||||
|
{ "l8", 0x4700, "vdd_l3_l5_l7_l8", },
|
||||||
|
{ "l9", 0x4800, "vdd_l1_l9_l10", },
|
||||||
|
{ "l10", 0x4900, "vdd_l1_l9_l10", },
|
||||||
|
{ }
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
static const struct spmi_regulator_data pm8004_regulators[] = {
|
static const struct spmi_regulator_data pm8004_regulators[] = {
|
||||||
{ "s2", 0x1700, "vdd_s2", },
|
{ "s2", 0x1700, "vdd_s2", },
|
||||||
{ "s5", 0x2000, "vdd_s5", },
|
{ "s5", 0x2000, "vdd_s5", },
|
||||||
@ -1986,6 +2091,8 @@ static const struct of_device_id qcom_spmi_regulator_match[] = {
|
|||||||
{ .compatible = "qcom,pm8950-regulators", .data = &pm8950_regulators },
|
{ .compatible = "qcom,pm8950-regulators", .data = &pm8950_regulators },
|
||||||
{ .compatible = "qcom,pm8994-regulators", .data = &pm8994_regulators },
|
{ .compatible = "qcom,pm8994-regulators", .data = &pm8994_regulators },
|
||||||
{ .compatible = "qcom,pmi8994-regulators", .data = &pmi8994_regulators },
|
{ .compatible = "qcom,pmi8994-regulators", .data = &pmi8994_regulators },
|
||||||
|
{ .compatible = "qcom,pm660-regulators", .data = &pm660_regulators },
|
||||||
|
{ .compatible = "qcom,pm660l-regulators", .data = &pm660l_regulators },
|
||||||
{ .compatible = "qcom,pms405-regulators", .data = &pms405_regulators },
|
{ .compatible = "qcom,pms405-regulators", .data = &pms405_regulators },
|
||||||
{ }
|
{ }
|
||||||
};
|
};
|
||||||
|
@ -19,6 +19,10 @@ struct qcom_smd_rpm;
|
|||||||
#define QCOM_SMD_RPM_CLK_BUF_A 0x616B6C63
|
#define QCOM_SMD_RPM_CLK_BUF_A 0x616B6C63
|
||||||
#define QCOM_SMD_RPM_LDOA 0x616f646c
|
#define QCOM_SMD_RPM_LDOA 0x616f646c
|
||||||
#define QCOM_SMD_RPM_LDOB 0x626F646C
|
#define QCOM_SMD_RPM_LDOB 0x626F646C
|
||||||
|
#define QCOM_SMD_RPM_RWCX 0x78637772
|
||||||
|
#define QCOM_SMD_RPM_RWMX 0x786d7772
|
||||||
|
#define QCOM_SMD_RPM_RWLC 0x636c7772
|
||||||
|
#define QCOM_SMD_RPM_RWLM 0x6d6c7772
|
||||||
#define QCOM_SMD_RPM_MEM_CLK 0x326b6c63
|
#define QCOM_SMD_RPM_MEM_CLK 0x326b6c63
|
||||||
#define QCOM_SMD_RPM_MISC_CLK 0x306b6c63
|
#define QCOM_SMD_RPM_MISC_CLK 0x306b6c63
|
||||||
#define QCOM_SMD_RPM_NCPA 0x6170636E
|
#define QCOM_SMD_RPM_NCPA 0x6170636E
|
||||||
|
Loading…
Reference in New Issue
Block a user