aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/regulator/da9063-regulator.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/regulator/da9063-regulator.c')
-rw-r--r--drivers/regulator/da9063-regulator.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/drivers/regulator/da9063-regulator.c b/drivers/regulator/da9063-regulator.c
index 56727eb745df..7c9461d13313 100644
--- a/drivers/regulator/da9063-regulator.c
+++ b/drivers/regulator/da9063-regulator.c
@@ -1,3 +1,4 @@
1
1/* 2/*
2 * Regulator driver for DA9063 PMIC series 3 * Regulator driver for DA9063 PMIC series
3 * 4 *
@@ -60,7 +61,8 @@ struct da9063_regulator_info {
60 .desc.ops = &da9063_ldo_ops, \ 61 .desc.ops = &da9063_ldo_ops, \
61 .desc.min_uV = (min_mV) * 1000, \ 62 .desc.min_uV = (min_mV) * 1000, \
62 .desc.uV_step = (step_mV) * 1000, \ 63 .desc.uV_step = (step_mV) * 1000, \
63 .desc.n_voltages = (((max_mV) - (min_mV))/(step_mV) + 1), \ 64 .desc.n_voltages = (((max_mV) - (min_mV))/(step_mV) + 1 \
65 + (DA9063_V##regl_name##_BIAS)), \
64 .desc.enable_reg = DA9063_REG_##regl_name##_CONT, \ 66 .desc.enable_reg = DA9063_REG_##regl_name##_CONT, \
65 .desc.enable_mask = DA9063_LDO_EN, \ 67 .desc.enable_mask = DA9063_LDO_EN, \
66 .desc.vsel_reg = DA9063_REG_V##regl_name##_A, \ 68 .desc.vsel_reg = DA9063_REG_V##regl_name##_A, \
@@ -363,7 +365,7 @@ static int da9063_set_suspend_voltage(struct regulator_dev *rdev, int uV)
363 365
364 sel = regulator_map_voltage_linear(rdev, uV, uV); 366 sel = regulator_map_voltage_linear(rdev, uV, uV);
365 if (sel < 0) 367 if (sel < 0)
366 return -EINVAL; 368 return sel;
367 369
368 sel <<= ffs(rdev->desc->vsel_mask) - 1; 370 sel <<= ffs(rdev->desc->vsel_mask) - 1;
369 371
@@ -664,7 +666,7 @@ static struct da9063_regulators_pdata *da9063_parse_regulators_dt(
664 struct device_node *node; 666 struct device_node *node;
665 int i, n, num; 667 int i, n, num;
666 668
667 node = of_find_node_by_name(pdev->dev.parent->of_node, "regulators"); 669 node = of_get_child_by_name(pdev->dev.parent->of_node, "regulators");
668 if (!node) { 670 if (!node) {
669 dev_err(&pdev->dev, "Regulators device node not found\n"); 671 dev_err(&pdev->dev, "Regulators device node not found\n");
670 return ERR_PTR(-ENODEV); 672 return ERR_PTR(-ENODEV);
@@ -672,6 +674,7 @@ static struct da9063_regulators_pdata *da9063_parse_regulators_dt(
672 674
673 num = of_regulator_match(&pdev->dev, node, da9063_matches, 675 num = of_regulator_match(&pdev->dev, node, da9063_matches,
674 ARRAY_SIZE(da9063_matches)); 676 ARRAY_SIZE(da9063_matches));
677 of_node_put(node);
675 if (num < 0) { 678 if (num < 0) {
676 dev_err(&pdev->dev, "Failed to match regulators\n"); 679 dev_err(&pdev->dev, "Failed to match regulators\n");
677 return ERR_PTR(-EINVAL); 680 return ERR_PTR(-EINVAL);
@@ -708,7 +711,7 @@ static struct da9063_regulators_pdata *da9063_parse_regulators_dt(
708 struct platform_device *pdev, 711 struct platform_device *pdev,
709 struct of_regulator_match **da9063_reg_matches) 712 struct of_regulator_match **da9063_reg_matches)
710{ 713{
711 da9063_reg_matches = NULL; 714 *da9063_reg_matches = NULL;
712 return ERR_PTR(-ENODEV); 715 return ERR_PTR(-ENODEV);
713} 716}
714#endif 717#endif
@@ -754,7 +757,7 @@ static int da9063_regulator_probe(struct platform_device *pdev)
754 if (ret < 0) { 757 if (ret < 0) {
755 dev_err(&pdev->dev, 758 dev_err(&pdev->dev,
756 "Error while reading BUCKs configuration\n"); 759 "Error while reading BUCKs configuration\n");
757 return -EIO; 760 return ret;
758 } 761 }
759 bcores_merged = val & DA9063_BCORE_MERGE; 762 bcores_merged = val & DA9063_BCORE_MERGE;
760 bmem_bio_merged = val & DA9063_BUCK_MERGE; 763 bmem_bio_merged = val & DA9063_BUCK_MERGE;
@@ -773,10 +776,8 @@ static int da9063_regulator_probe(struct platform_device *pdev)
773 size = sizeof(struct da9063_regulators) + 776 size = sizeof(struct da9063_regulators) +
774 n_regulators * sizeof(struct da9063_regulator); 777 n_regulators * sizeof(struct da9063_regulator);
775 regulators = devm_kzalloc(&pdev->dev, size, GFP_KERNEL); 778 regulators = devm_kzalloc(&pdev->dev, size, GFP_KERNEL);
776 if (!regulators) { 779 if (!regulators)
777 dev_err(&pdev->dev, "No memory for regulators\n");
778 return -ENOMEM; 780 return -ENOMEM;
779 }
780 781
781 regulators->n_regulators = n_regulators; 782 regulators->n_regulators = n_regulators;
782 platform_set_drvdata(pdev, regulators); 783 platform_set_drvdata(pdev, regulators);