diff options
author | Mark Brown <broonie@linaro.org> | 2013-09-01 08:50:17 -0400 |
---|---|---|
committer | Mark Brown <broonie@linaro.org> | 2013-09-01 08:50:17 -0400 |
commit | 39fe3b45d3951c3633ddb7aafb29ceef3f012761 (patch) | |
tree | 5f5c10873cef3dde53d3bbd172151c020b4b8469 /drivers/regulator | |
parent | f27a5fb424d4897edd3c7735ecf054ee57a5dbd0 (diff) | |
parent | 0416ea1359b3f0a8755947f46f336608793a9649 (diff) |
Merge remote-tracking branch 'regulator/topic/palmas' into regulator-next
Diffstat (limited to 'drivers/regulator')
-rw-r--r-- | drivers/regulator/palmas-regulator.c | 30 |
1 files changed, 24 insertions, 6 deletions
diff --git a/drivers/regulator/palmas-regulator.c b/drivers/regulator/palmas-regulator.c index e8877e4e5a5a..488dfe7ce9a6 100644 --- a/drivers/regulator/palmas-regulator.c +++ b/drivers/regulator/palmas-regulator.c | |||
@@ -97,11 +97,16 @@ static const struct regs_info palmas_regs_info[] = { | |||
97 | .ctrl_addr = PALMAS_SMPS9_CTRL, | 97 | .ctrl_addr = PALMAS_SMPS9_CTRL, |
98 | }, | 98 | }, |
99 | { | 99 | { |
100 | .name = "SMPS10", | 100 | .name = "SMPS10_OUT2", |
101 | .sname = "smps10-in", | 101 | .sname = "smps10-in", |
102 | .ctrl_addr = PALMAS_SMPS10_CTRL, | 102 | .ctrl_addr = PALMAS_SMPS10_CTRL, |
103 | }, | 103 | }, |
104 | { | 104 | { |
105 | .name = "SMPS10_OUT1", | ||
106 | .sname = "smps10-out2", | ||
107 | .ctrl_addr = PALMAS_SMPS10_CTRL, | ||
108 | }, | ||
109 | { | ||
105 | .name = "LDO1", | 110 | .name = "LDO1", |
106 | .sname = "ldo1-in", | 111 | .sname = "ldo1-in", |
107 | .vsel_addr = PALMAS_LDO1_VOLTAGE, | 112 | .vsel_addr = PALMAS_LDO1_VOLTAGE, |
@@ -487,6 +492,8 @@ static struct regulator_ops palmas_ops_smps10 = { | |||
487 | .set_voltage_sel = regulator_set_voltage_sel_regmap, | 492 | .set_voltage_sel = regulator_set_voltage_sel_regmap, |
488 | .list_voltage = regulator_list_voltage_linear, | 493 | .list_voltage = regulator_list_voltage_linear, |
489 | .map_voltage = regulator_map_voltage_linear, | 494 | .map_voltage = regulator_map_voltage_linear, |
495 | .set_bypass = regulator_set_bypass_regmap, | ||
496 | .get_bypass = regulator_get_bypass_regmap, | ||
490 | }; | 497 | }; |
491 | 498 | ||
492 | static int palmas_is_enabled_ldo(struct regulator_dev *dev) | 499 | static int palmas_is_enabled_ldo(struct regulator_dev *dev) |
@@ -538,7 +545,8 @@ static int palmas_smps_init(struct palmas *palmas, int id, | |||
538 | return ret; | 545 | return ret; |
539 | 546 | ||
540 | switch (id) { | 547 | switch (id) { |
541 | case PALMAS_REG_SMPS10: | 548 | case PALMAS_REG_SMPS10_OUT1: |
549 | case PALMAS_REG_SMPS10_OUT2: | ||
542 | reg &= ~PALMAS_SMPS10_CTRL_MODE_SLEEP_MASK; | 550 | reg &= ~PALMAS_SMPS10_CTRL_MODE_SLEEP_MASK; |
543 | if (reg_init->mode_sleep) | 551 | if (reg_init->mode_sleep) |
544 | reg |= reg_init->mode_sleep << | 552 | reg |= reg_init->mode_sleep << |
@@ -681,7 +689,8 @@ static struct of_regulator_match palmas_matches[] = { | |||
681 | { .name = "smps7", }, | 689 | { .name = "smps7", }, |
682 | { .name = "smps8", }, | 690 | { .name = "smps8", }, |
683 | { .name = "smps9", }, | 691 | { .name = "smps9", }, |
684 | { .name = "smps10", }, | 692 | { .name = "smps10_out2", }, |
693 | { .name = "smps10_out1", }, | ||
685 | { .name = "ldo1", }, | 694 | { .name = "ldo1", }, |
686 | { .name = "ldo2", }, | 695 | { .name = "ldo2", }, |
687 | { .name = "ldo3", }, | 696 | { .name = "ldo3", }, |
@@ -838,7 +847,8 @@ static int palmas_regulators_probe(struct platform_device *pdev) | |||
838 | continue; | 847 | continue; |
839 | ramp_delay_support = true; | 848 | ramp_delay_support = true; |
840 | break; | 849 | break; |
841 | case PALMAS_REG_SMPS10: | 850 | case PALMAS_REG_SMPS10_OUT1: |
851 | case PALMAS_REG_SMPS10_OUT2: | ||
842 | if (!PALMAS_PMIC_HAS(palmas, SMPS10_BOOST)) | 852 | if (!PALMAS_PMIC_HAS(palmas, SMPS10_BOOST)) |
843 | continue; | 853 | continue; |
844 | } | 854 | } |
@@ -872,7 +882,8 @@ static int palmas_regulators_probe(struct platform_device *pdev) | |||
872 | pmic->desc[id].id = id; | 882 | pmic->desc[id].id = id; |
873 | 883 | ||
874 | switch (id) { | 884 | switch (id) { |
875 | case PALMAS_REG_SMPS10: | 885 | case PALMAS_REG_SMPS10_OUT1: |
886 | case PALMAS_REG_SMPS10_OUT2: | ||
876 | pmic->desc[id].n_voltages = PALMAS_SMPS10_NUM_VOLTAGES; | 887 | pmic->desc[id].n_voltages = PALMAS_SMPS10_NUM_VOLTAGES; |
877 | pmic->desc[id].ops = &palmas_ops_smps10; | 888 | pmic->desc[id].ops = &palmas_ops_smps10; |
878 | pmic->desc[id].vsel_reg = | 889 | pmic->desc[id].vsel_reg = |
@@ -882,7 +893,14 @@ static int palmas_regulators_probe(struct platform_device *pdev) | |||
882 | pmic->desc[id].enable_reg = | 893 | pmic->desc[id].enable_reg = |
883 | PALMAS_BASE_TO_REG(PALMAS_SMPS_BASE, | 894 | PALMAS_BASE_TO_REG(PALMAS_SMPS_BASE, |
884 | PALMAS_SMPS10_CTRL); | 895 | PALMAS_SMPS10_CTRL); |
885 | pmic->desc[id].enable_mask = SMPS10_BOOST_EN; | 896 | if (id == PALMAS_REG_SMPS10_OUT1) |
897 | pmic->desc[id].enable_mask = SMPS10_SWITCH_EN; | ||
898 | else | ||
899 | pmic->desc[id].enable_mask = SMPS10_BOOST_EN; | ||
900 | pmic->desc[id].bypass_reg = | ||
901 | PALMAS_BASE_TO_REG(PALMAS_SMPS_BASE, | ||
902 | PALMAS_SMPS10_CTRL); | ||
903 | pmic->desc[id].bypass_mask = SMPS10_BYPASS_EN; | ||
886 | pmic->desc[id].min_uV = 3750000; | 904 | pmic->desc[id].min_uV = 3750000; |
887 | pmic->desc[id].uV_step = 1250000; | 905 | pmic->desc[id].uV_step = 1250000; |
888 | break; | 906 | break; |