aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/regulator
diff options
context:
space:
mode:
authorNeil Armstrong <narmstrong@baylibre.com>2016-08-11 09:16:46 -0400
committerLee Jones <lee.jones@linaro.org>2016-08-31 04:33:54 -0400
commitddc085d44dd001e65eecd0a8bf05064bff063668 (patch)
tree662578c963f9e783aaf0b7b7d421616f230ef64f /drivers/regulator
parenteb87a669dd4a79fdbca14c402fdbcdb8695739ff (diff)
regulator: qcom_rpm-regulator: Add support for pm8018 rpm regulator
In order to support the Qualcomm MDM9615 SoC, add support for the PM8018 RPM regulator in the qcom_rpm-regulator driver. Signed-off-by: Neil Armstrong <narmstrong@baylibre.com> Acked-by: Mark Brown <broonie@kernel.org> Signed-off-by: Lee Jones <lee.jones@linaro.org>
Diffstat (limited to 'drivers/regulator')
-rw-r--r--drivers/regulator/qcom_rpm-regulator.c66
1 files changed, 66 insertions, 0 deletions
diff --git a/drivers/regulator/qcom_rpm-regulator.c b/drivers/regulator/qcom_rpm-regulator.c
index e254272585b2..1b2acc43fea1 100644
--- a/drivers/regulator/qcom_rpm-regulator.c
+++ b/drivers/regulator/qcom_rpm-regulator.c
@@ -448,6 +448,44 @@ static struct regulator_ops switch_ops = {
448}; 448};
449 449
450/* 450/*
451 * PM8018 regulators
452 */
453static const struct qcom_rpm_reg pm8018_pldo = {
454 .desc.linear_ranges = pldo_ranges,
455 .desc.n_linear_ranges = ARRAY_SIZE(pldo_ranges),
456 .desc.n_voltages = 161,
457 .desc.ops = &uV_ops,
458 .parts = &rpm8960_ldo_parts,
459 .supports_force_mode_auto = false,
460 .supports_force_mode_bypass = false,
461};
462
463static const struct qcom_rpm_reg pm8018_nldo = {
464 .desc.linear_ranges = nldo_ranges,
465 .desc.n_linear_ranges = ARRAY_SIZE(nldo_ranges),
466 .desc.n_voltages = 64,
467 .desc.ops = &uV_ops,
468 .parts = &rpm8960_ldo_parts,
469 .supports_force_mode_auto = false,
470 .supports_force_mode_bypass = false,
471};
472
473static const struct qcom_rpm_reg pm8018_smps = {
474 .desc.linear_ranges = smps_ranges,
475 .desc.n_linear_ranges = ARRAY_SIZE(smps_ranges),
476 .desc.n_voltages = 154,
477 .desc.ops = &uV_ops,
478 .parts = &rpm8960_smps_parts,
479 .supports_force_mode_auto = false,
480 .supports_force_mode_bypass = false,
481};
482
483static const struct qcom_rpm_reg pm8018_switch = {
484 .desc.ops = &switch_ops,
485 .parts = &rpm8960_switch_parts,
486};
487
488/*
451 * PM8058 regulators 489 * PM8058 regulators
452 */ 490 */
453static const struct qcom_rpm_reg pm8058_pldo = { 491static const struct qcom_rpm_reg pm8058_pldo = {
@@ -755,6 +793,32 @@ struct rpm_regulator_data {
755 const char *supply; 793 const char *supply;
756}; 794};
757 795
796static const struct rpm_regulator_data rpm_pm8018_regulators[] = {
797 { "s1", QCOM_RPM_PM8018_SMPS1, &pm8018_smps, "vdd_s1" },
798 { "s2", QCOM_RPM_PM8018_SMPS2, &pm8018_smps, "vdd_s2" },
799 { "s3", QCOM_RPM_PM8018_SMPS3, &pm8018_smps, "vdd_s3" },
800 { "s4", QCOM_RPM_PM8018_SMPS4, &pm8018_smps, "vdd_s4" },
801 { "s5", QCOM_RPM_PM8018_SMPS5, &pm8018_smps, "vdd_s5" },
802
803 { "l2", QCOM_RPM_PM8018_LDO2, &pm8018_pldo, "vdd_l2" },
804 { "l3", QCOM_RPM_PM8018_LDO3, &pm8018_pldo, "vdd_l3" },
805 { "l4", QCOM_RPM_PM8018_LDO4, &pm8018_pldo, "vdd_l4" },
806 { "l5", QCOM_RPM_PM8018_LDO5, &pm8018_pldo, "vdd_l5" },
807 { "l6", QCOM_RPM_PM8018_LDO6, &pm8018_pldo, "vdd_l7" },
808 { "l7", QCOM_RPM_PM8018_LDO7, &pm8018_pldo, "vdd_l7" },
809 { "l8", QCOM_RPM_PM8018_LDO8, &pm8018_nldo, "vdd_l8" },
810 { "l9", QCOM_RPM_PM8018_LDO9, &pm8921_nldo1200,
811 "vdd_l9_l10_l11_l12" },
812 { "l10", QCOM_RPM_PM8018_LDO10, &pm8018_nldo, "vdd_l9_l10_l11_l12" },
813 { "l11", QCOM_RPM_PM8018_LDO11, &pm8018_nldo, "vdd_l9_l10_l11_l12" },
814 { "l12", QCOM_RPM_PM8018_LDO12, &pm8018_nldo, "vdd_l9_l10_l11_l12" },
815 { "l14", QCOM_RPM_PM8018_LDO14, &pm8018_pldo, "vdd_l14" },
816
817 { "lvs1", QCOM_RPM_PM8018_LVS1, &pm8018_switch, "lvs1_in" },
818
819 { }
820};
821
758static const struct rpm_regulator_data rpm_pm8058_regulators[] = { 822static const struct rpm_regulator_data rpm_pm8058_regulators[] = {
759 { "l0", QCOM_RPM_PM8058_LDO0, &pm8058_nldo, "vdd_l0_l1_lvs" }, 823 { "l0", QCOM_RPM_PM8058_LDO0, &pm8058_nldo, "vdd_l0_l1_lvs" },
760 { "l1", QCOM_RPM_PM8058_LDO1, &pm8058_nldo, "vdd_l0_l1_lvs" }, 824 { "l1", QCOM_RPM_PM8058_LDO1, &pm8058_nldo, "vdd_l0_l1_lvs" },
@@ -870,6 +934,8 @@ static const struct rpm_regulator_data rpm_pm8921_regulators[] = {
870}; 934};
871 935
872static const struct of_device_id rpm_of_match[] = { 936static const struct of_device_id rpm_of_match[] = {
937 { .compatible = "qcom,rpm-pm8018-regulators",
938 .data = &rpm_pm8018_regulators },
873 { .compatible = "qcom,rpm-pm8058-regulators", .data = &rpm_pm8058_regulators }, 939 { .compatible = "qcom,rpm-pm8058-regulators", .data = &rpm_pm8058_regulators },
874 { .compatible = "qcom,rpm-pm8901-regulators", .data = &rpm_pm8901_regulators }, 940 { .compatible = "qcom,rpm-pm8901-regulators", .data = &rpm_pm8901_regulators },
875 { .compatible = "qcom,rpm-pm8921-regulators", .data = &rpm_pm8921_regulators }, 941 { .compatible = "qcom,rpm-pm8921-regulators", .data = &rpm_pm8921_regulators },