diff options
author | Neil Armstrong <narmstrong@baylibre.com> | 2016-08-11 09:16:46 -0400 |
---|---|---|
committer | Lee Jones <lee.jones@linaro.org> | 2016-08-31 04:33:54 -0400 |
commit | ddc085d44dd001e65eecd0a8bf05064bff063668 (patch) | |
tree | 662578c963f9e783aaf0b7b7d421616f230ef64f /drivers/regulator | |
parent | eb87a669dd4a79fdbca14c402fdbcdb8695739ff (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.c | 66 |
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 | */ | ||
453 | static 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 | |||
463 | static 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 | |||
473 | static 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 | |||
483 | static 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 | */ |
453 | static const struct qcom_rpm_reg pm8058_pldo = { | 491 | static 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 | ||
796 | static 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 | |||
758 | static const struct rpm_regulator_data rpm_pm8058_regulators[] = { | 822 | static 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 | ||
872 | static const struct of_device_id rpm_of_match[] = { | 936 | static 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 }, |