]> git.karo-electronics.de Git - linux-beck.git/commitdiff
Merge remote-tracking branch 'regulator/topic/of' into regulator-next
authorMark Brown <broonie@opensource.wolfsonmicro.com>
Tue, 19 Feb 2013 12:42:52 +0000 (12:42 +0000)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Tue, 19 Feb 2013 12:42:52 +0000 (12:42 +0000)
drivers/regulator/88pm8607.c
drivers/regulator/da9052-regulator.c
drivers/regulator/max8907-regulator.c
drivers/regulator/max8925-regulator.c
drivers/regulator/max8997.c
drivers/regulator/mc13xxx-regulator-core.c
drivers/regulator/palmas-regulator.c
drivers/regulator/tps65910-regulator.c

index a957e8c5320532cf4b0417c75914e8623aae7656..c79ab843333ee9d3eea9b46067c1c777050154f4 100644 (file)
@@ -347,7 +347,7 @@ static int pm8607_regulator_dt_init(struct platform_device *pdev,
                                    struct regulator_config *config)
 {
        struct device_node *nproot, *np;
-       nproot = pdev->dev.parent->of_node;
+       nproot = of_node_get(pdev->dev.parent->of_node);
        if (!nproot)
                return -ENODEV;
        nproot = of_find_node_by_name(nproot, "regulators");
@@ -363,6 +363,7 @@ static int pm8607_regulator_dt_init(struct platform_device *pdev,
                        break;
                }
        }
+       of_node_put(nproot);
        return 0;
 }
 #else
index c6d8651fd329e1a2ec900b4fe689e39a37a3d405..96b569abb46cfe055a50cdf35a4c362a15ba0a3a 100644 (file)
@@ -366,9 +366,9 @@ static int da9052_regulator_probe(struct platform_device *pdev)
                config.init_data = pdata->regulators[pdev->id];
        } else {
 #ifdef CONFIG_OF
-               struct device_node *nproot = da9052->dev->of_node;
-               struct device_node *np;
+               struct device_node *nproot, *np;
 
+               nproot = of_node_get(da9052->dev->of_node);
                if (!nproot)
                        return -ENODEV;
 
@@ -385,6 +385,7 @@ static int da9052_regulator_probe(struct platform_device *pdev)
                                break;
                        }
                }
+               of_node_put(nproot);
 #endif
        }
 
index d40cf7fdb546e9ee10b79a9ecfa74b2ae468547f..4568c15fa78dea0eafda170f64f9fc86db251faa 100644 (file)
@@ -224,11 +224,11 @@ static struct of_regulator_match max8907_matches[] = {
 
 static int max8907_regulator_parse_dt(struct platform_device *pdev)
 {
-       struct device_node *np = pdev->dev.parent->of_node;
-       struct device_node *regulators;
+       struct device_node *np, *regulators;
        int ret;
 
-       if (!pdev->dev.parent->of_node)
+       np = of_node_get(pdev->dev.parent->of_node);
+       if (!np)
                return 0;
 
        regulators = of_find_node_by_name(np, "regulators");
@@ -239,6 +239,7 @@ static int max8907_regulator_parse_dt(struct platform_device *pdev)
 
        ret = of_regulator_match(&pdev->dev, regulators, max8907_matches,
                                 ARRAY_SIZE(max8907_matches));
+       of_node_put(regulators);
        if (ret < 0) {
                dev_err(&pdev->dev, "Error parsing regulator init data: %d\n",
                        ret);
index 446a854455535b4603fa2584f09498b0e557cc0e..0d5f64a805a039561390b975dbfb72551cc4f5d1 100644 (file)
@@ -252,7 +252,7 @@ static int max8925_regulator_dt_init(struct platform_device *pdev,
 {
        struct device_node *nproot, *np;
        int rcount;
-       nproot = pdev->dev.parent->of_node;
+       nproot = of_node_get(pdev->dev.parent->of_node);
        if (!nproot)
                return -ENODEV;
        np = of_find_node_by_name(nproot, "regulators");
@@ -263,6 +263,7 @@ static int max8925_regulator_dt_init(struct platform_device *pdev,
 
        rcount = of_regulator_match(&pdev->dev, np,
                                &max8925_regulator_matches[ridx], 1);
+       of_node_put(np);
        if (rcount < 0)
                return -ENODEV;
        config->init_data =     max8925_regulator_matches[ridx].init_data;
index 5556a15743fd7b700684d71cbba0205c044f0d5a..0ac7a87519b46515e3c8b360a95778eea28014fd 100644 (file)
@@ -917,7 +917,7 @@ static int max8997_pmic_dt_parse_pdata(struct platform_device *pdev,
        struct max8997_regulator_data *rdata;
        unsigned int i, dvs_voltage_nr = 1, ret;
 
-       pmic_np = iodev->dev->of_node;
+       pmic_np = of_node_get(iodev->dev->of_node);
        if (!pmic_np) {
                dev_err(&pdev->dev, "could not find pmic sub-node\n");
                return -ENODEV;
@@ -930,13 +930,12 @@ static int max8997_pmic_dt_parse_pdata(struct platform_device *pdev,
        }
 
        /* count the number of regulators to be supported in pmic */
-       pdata->num_regulators = 0;
-       for_each_child_of_node(regulators_np, reg_np)
-               pdata->num_regulators++;
+       pdata->num_regulators = of_get_child_count(regulators_np);
 
        rdata = devm_kzalloc(&pdev->dev, sizeof(*rdata) *
                                pdata->num_regulators, GFP_KERNEL);
        if (!rdata) {
+               of_node_put(regulators_np);
                dev_err(&pdev->dev, "could not allocate memory for regulator data\n");
                return -ENOMEM;
        }
@@ -959,6 +958,7 @@ static int max8997_pmic_dt_parse_pdata(struct platform_device *pdev,
                rdata->reg_node = reg_np;
                rdata++;
        }
+       of_node_put(regulators_np);
 
        if (of_get_property(pmic_np, "max8997,pmic-buck1-uses-gpio-dvs", NULL))
                pdata->buck1_gpiodvs = true;
index 2ecf1d8b6a945e30e3633144c00b4c274bcc9d29..23cf9f9c383b557b7cb7119576c5618356addfc8 100644 (file)
@@ -164,17 +164,16 @@ EXPORT_SYMBOL_GPL(mc13xxx_fixed_regulator_ops);
 #ifdef CONFIG_OF
 int mc13xxx_get_num_regulators_dt(struct platform_device *pdev)
 {
-       struct device_node *parent, *child;
-       int num = 0;
+       struct device_node *parent;
+       int num;
 
        of_node_get(pdev->dev.parent->of_node);
        parent = of_find_node_by_name(pdev->dev.parent->of_node, "regulators");
        if (!parent)
                return -ENODEV;
 
-       for_each_child_of_node(parent, child)
-               num++;
-
+       num = of_get_child_count(parent);
+       of_node_put(parent);
        return num;
 }
 EXPORT_SYMBOL_GPL(mc13xxx_get_num_regulators_dt);
@@ -197,8 +196,11 @@ struct mc13xxx_regulator_init_data *mc13xxx_parse_regulators_dt(
 
        data = devm_kzalloc(&pdev->dev, sizeof(*data) * priv->num_regulators,
                            GFP_KERNEL);
-       if (!data)
+       if (!data) {
+               of_node_put(parent);
                return NULL;
+       }
+
        p = data;
 
        for_each_child_of_node(parent, child) {
@@ -217,6 +219,7 @@ struct mc13xxx_regulator_init_data *mc13xxx_parse_regulators_dt(
                        }
                }
        }
+       of_node_put(parent);
 
        *num_parsed = parsed;
        return data;
index c9e912f583bc57485e09909bff01b58af315d2cb..cbaf22627bd35dbaeaa60bbb1e093cd380b2d63c 100644 (file)
@@ -527,6 +527,7 @@ static void palmas_dt_to_pdata(struct device *dev,
        u32 prop;
        int idx, ret;
 
+       node = of_node_get(node);
        regulators = of_find_node_by_name(node, "regulators");
        if (!regulators) {
                dev_info(dev, "regulator node not found\n");
@@ -535,6 +536,7 @@ static void palmas_dt_to_pdata(struct device *dev,
 
        ret = of_regulator_match(dev, regulators, palmas_matches,
                        PALMAS_NUM_REGS);
+       of_node_put(regulators);
        if (ret < 0) {
                dev_err(dev, "Error parsing regulator init data: %d\n", ret);
                return;
index b0e4c0bc85c319c9265e12ab193a0aec86156a64..6ba6931ac8557c7ee902438cfd4679017c559121 100644 (file)
@@ -964,8 +964,7 @@ static struct tps65910_board *tps65910_parse_dt_reg_data(
 {
        struct tps65910_board *pmic_plat_data;
        struct tps65910 *tps65910 = dev_get_drvdata(pdev->dev.parent);
-       struct device_node *np = pdev->dev.parent->of_node;
-       struct device_node *regulators;
+       struct device_node *np, *regulators;
        struct of_regulator_match *matches;
        unsigned int prop;
        int idx = 0, ret, count;
@@ -978,6 +977,7 @@ static struct tps65910_board *tps65910_parse_dt_reg_data(
                return NULL;
        }
 
+       np = of_node_get(pdev->dev.parent->of_node);
        regulators = of_find_node_by_name(np, "regulators");
        if (!regulators) {
                dev_err(&pdev->dev, "regulator node not found\n");
@@ -994,11 +994,13 @@ static struct tps65910_board *tps65910_parse_dt_reg_data(
                matches = tps65911_matches;
                break;
        default:
+               of_node_put(regulators);
                dev_err(&pdev->dev, "Invalid tps chip version\n");
                return NULL;
        }
 
        ret = of_regulator_match(&pdev->dev, regulators, matches, count);
+       of_node_put(regulators);
        if (ret < 0) {
                dev_err(&pdev->dev, "Error parsing regulator init data: %d\n",
                        ret);