aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/regulator/s5m8767.c
diff options
context:
space:
mode:
authorKrzysztof Kozlowski <k.kozlowski@samsung.com>2014-04-30 04:40:41 -0400
committerMark Brown <broonie@linaro.org>2014-05-01 13:50:38 -0400
commiteba430c7eac10964e4ffd5df525bf2abc9e76b48 (patch)
tree123540136873dc22708c46e26374d4c056edeccf /drivers/regulator/s5m8767.c
parente80fb721cac4202253939451678c873a222be2fa (diff)
regulator: s5m8767: Allow GPIO 0 to be used as external control
GPIO 0 is a valid GPIO so allow using it as external control for regulator. Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com> Signed-off-by: Mark Brown <broonie@linaro.org>
Diffstat (limited to 'drivers/regulator/s5m8767.c')
-rw-r--r--drivers/regulator/s5m8767.c20
1 files changed, 6 insertions, 14 deletions
diff --git a/drivers/regulator/s5m8767.c b/drivers/regulator/s5m8767.c
index 5daa06626f16..c79af943a5c0 100644
--- a/drivers/regulator/s5m8767.c
+++ b/drivers/regulator/s5m8767.c
@@ -528,16 +528,6 @@ static int s5m8767_pmic_dt_parse_ds_gpio(struct sec_pmic_dev *iodev,
528 return 0; 528 return 0;
529} 529}
530 530
531static void s5m8767_pmic_dt_parse_ext_control_gpio(struct sec_pmic_dev *iodev,
532 struct sec_regulator_data *rdata,
533 struct device_node *reg_np)
534{
535 rdata->ext_control_gpio = of_get_named_gpio(reg_np,
536 "s5m8767,pmic-ext-control-gpios", 0);
537 if (!gpio_is_valid(rdata->ext_control_gpio))
538 rdata->ext_control_gpio = 0;
539}
540
541static int s5m8767_pmic_dt_parse_pdata(struct platform_device *pdev, 531static int s5m8767_pmic_dt_parse_pdata(struct platform_device *pdev,
542 struct sec_platform_data *pdata) 532 struct sec_platform_data *pdata)
543{ 533{
@@ -586,7 +576,8 @@ static int s5m8767_pmic_dt_parse_pdata(struct platform_device *pdev,
586 continue; 576 continue;
587 } 577 }
588 578
589 s5m8767_pmic_dt_parse_ext_control_gpio(iodev, rdata, reg_np); 579 rdata->ext_control_gpio = of_get_named_gpio(reg_np,
580 "s5m8767,pmic-ext-control-gpios", 0);
590 581
591 rdata->id = i; 582 rdata->id = i;
592 rdata->initdata = of_get_regulator_init_data( 583 rdata->initdata = of_get_regulator_init_data(
@@ -959,8 +950,9 @@ static int s5m8767_pmic_probe(struct platform_device *pdev)
959 config.driver_data = s5m8767; 950 config.driver_data = s5m8767;
960 config.regmap = iodev->regmap_pmic; 951 config.regmap = iodev->regmap_pmic;
961 config.of_node = pdata->regulators[i].reg_node; 952 config.of_node = pdata->regulators[i].reg_node;
962 config.ena_gpio = config.ena_gpio_flags = 0; 953 config.ena_gpio = -EINVAL;
963 if (pdata->regulators[i].ext_control_gpio) 954 config.ena_gpio_flags = 0;
955 if (gpio_is_valid(pdata->regulators[i].ext_control_gpio))
964 s5m8767_regulator_config_ext_control(s5m8767, 956 s5m8767_regulator_config_ext_control(s5m8767,
965 &pdata->regulators[i], &config); 957 &pdata->regulators[i], &config);
966 958
@@ -973,7 +965,7 @@ static int s5m8767_pmic_probe(struct platform_device *pdev)
973 return ret; 965 return ret;
974 } 966 }
975 967
976 if (pdata->regulators[i].ext_control_gpio) { 968 if (gpio_is_valid(pdata->regulators[i].ext_control_gpio)) {
977 ret = s5m8767_enable_ext_control(s5m8767, rdev); 969 ret = s5m8767_enable_ext_control(s5m8767, rdev);
978 if (ret < 0) { 970 if (ret < 0) {
979 dev_err(s5m8767->dev, 971 dev_err(s5m8767->dev,