Merge branch 'topic/suspend' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie...
[cascardo/linux.git] / drivers / regulator / tps62360-regulator.c
index a167204..a1fd626 100644 (file)
@@ -293,7 +293,8 @@ static const struct regmap_config tps62360_regmap_config = {
 };
 
 static struct tps62360_regulator_platform_data *
-       of_get_tps62360_platform_data(struct device *dev)
+       of_get_tps62360_platform_data(struct device *dev,
+                                     const struct regulator_desc *desc)
 {
        struct tps62360_regulator_platform_data *pdata;
        struct device_node *np = dev->of_node;
@@ -302,7 +303,8 @@ static struct tps62360_regulator_platform_data *
        if (!pdata)
                return NULL;
 
-       pdata->reg_init_data = of_get_regulator_init_data(dev, dev->of_node);
+       pdata->reg_init_data = of_get_regulator_init_data(dev, dev->of_node,
+                                                         desc);
        if (!pdata->reg_init_data) {
                dev_err(dev, "Not able to get OF regulator init data\n");
                return NULL;
@@ -350,6 +352,17 @@ static int tps62360_probe(struct i2c_client *client,
 
        pdata = dev_get_platdata(&client->dev);
 
+       tps = devm_kzalloc(&client->dev, sizeof(*tps), GFP_KERNEL);
+       if (!tps)
+               return -ENOMEM;
+
+       tps->desc.name = client->name;
+       tps->desc.id = 0;
+       tps->desc.ops = &tps62360_dcdc_ops;
+       tps->desc.type = REGULATOR_VOLTAGE;
+       tps->desc.owner = THIS_MODULE;
+       tps->desc.uV_step = 10000;
+
        if (client->dev.of_node) {
                const struct of_device_id *match;
                match = of_match_device(of_match_ptr(tps62360_of_match),
@@ -360,7 +373,8 @@ static int tps62360_probe(struct i2c_client *client,
                }
                chip_id = (int)(long)match->data;
                if (!pdata)
-                       pdata = of_get_tps62360_platform_data(&client->dev);
+                       pdata = of_get_tps62360_platform_data(&client->dev,
+                                                             &tps->desc);
        } else if (id) {
                chip_id = id->driver_data;
        } else {
@@ -374,10 +388,6 @@ static int tps62360_probe(struct i2c_client *client,
                return -EIO;
        }
 
-       tps = devm_kzalloc(&client->dev, sizeof(*tps), GFP_KERNEL);
-       if (!tps)
-               return -ENOMEM;
-
        tps->en_discharge = pdata->en_discharge;
        tps->en_internal_pulldn = pdata->en_internal_pulldn;
        tps->vsel0_gpio = pdata->vsel0_gpio;
@@ -401,13 +411,6 @@ static int tps62360_probe(struct i2c_client *client,
                return -ENODEV;
        }
 
-       tps->desc.name = client->name;
-       tps->desc.id = 0;
-       tps->desc.ops = &tps62360_dcdc_ops;
-       tps->desc.type = REGULATOR_VOLTAGE;
-       tps->desc.owner = THIS_MODULE;
-       tps->desc.uV_step = 10000;
-
        tps->regmap = devm_regmap_init_i2c(client, &tps62360_regmap_config);
        if (IS_ERR(tps->regmap)) {
                ret = PTR_ERR(tps->regmap);