Merge remote-tracking branches 'regulator/topic/bcm590xx', 'regulator/topic/da9052...
[linux-2.6-microblaze.git] / drivers / regulator / da9063-regulator.c
index 91e99a2..7c9461d 100644 (file)
@@ -365,7 +365,7 @@ static int da9063_set_suspend_voltage(struct regulator_dev *rdev, int uV)
 
        sel = regulator_map_voltage_linear(rdev, uV, uV);
        if (sel < 0)
-               return -EINVAL;
+               return sel;
 
        sel <<= ffs(rdev->desc->vsel_mask) - 1;
 
@@ -666,7 +666,7 @@ static struct da9063_regulators_pdata *da9063_parse_regulators_dt(
        struct device_node *node;
        int i, n, num;
 
-       node = of_find_node_by_name(pdev->dev.parent->of_node, "regulators");
+       node = of_get_child_by_name(pdev->dev.parent->of_node, "regulators");
        if (!node) {
                dev_err(&pdev->dev, "Regulators device node not found\n");
                return ERR_PTR(-ENODEV);
@@ -674,6 +674,7 @@ static struct da9063_regulators_pdata *da9063_parse_regulators_dt(
 
        num = of_regulator_match(&pdev->dev, node, da9063_matches,
                                 ARRAY_SIZE(da9063_matches));
+       of_node_put(node);
        if (num < 0) {
                dev_err(&pdev->dev, "Failed to match regulators\n");
                return ERR_PTR(-EINVAL);
@@ -710,7 +711,7 @@ static struct da9063_regulators_pdata *da9063_parse_regulators_dt(
                struct platform_device *pdev,
                struct of_regulator_match **da9063_reg_matches)
 {
-       da9063_reg_matches = NULL;
+       *da9063_reg_matches = NULL;
        return ERR_PTR(-ENODEV);
 }
 #endif
@@ -756,7 +757,7 @@ static int da9063_regulator_probe(struct platform_device *pdev)
        if (ret < 0) {
                dev_err(&pdev->dev,
                        "Error while reading BUCKs configuration\n");
-               return -EIO;
+               return ret;
        }
        bcores_merged = val & DA9063_BCORE_MERGE;
        bmem_bio_merged = val & DA9063_BUCK_MERGE;
@@ -775,10 +776,8 @@ static int da9063_regulator_probe(struct platform_device *pdev)
        size = sizeof(struct da9063_regulators) +
                n_regulators * sizeof(struct da9063_regulator);
        regulators = devm_kzalloc(&pdev->dev, size, GFP_KERNEL);
-       if (!regulators) {
-               dev_err(&pdev->dev, "No memory for regulators\n");
+       if (!regulators)
                return -ENOMEM;
-       }
 
        regulators->n_regulators = n_regulators;
        platform_set_drvdata(pdev, regulators);