]> git.openfabrics.org - ~emulex/infiniband.git/commitdiff
regulator: lp872x: remove regulator platform data dependency
authorKim, Milo <Milo.Kim@ti.com>
Wed, 5 Sep 2012 04:39:11 +0000 (04:39 +0000)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Wed, 5 Sep 2012 23:53:02 +0000 (07:53 +0800)
 This patch enables registering the regulator driver even though
 the regulator_init_data is not defined in the platform side.

Signed-off-by: Milo(Woogyom) Kim <milo.kim@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
drivers/regulator/lp872x.c

index 6199d0f6cca1309434488f2bcdac68501a4317c8..ddd60c6b27ead876aeaac0b77562e8757e89a788 100644 (file)
@@ -796,11 +796,15 @@ static int lp872x_config(struct lp872x *lp)
 static struct regulator_init_data
 *lp872x_find_regulator_init_data(int id, struct lp872x *lp)
 {
+       struct lp872x_platform_data *pdata = lp->pdata;
        int i;
 
+       if (!pdata)
+               return NULL;
+
        for (i = 0; i < lp->num_regulators; i++) {
-               if (lp->pdata->regulator_data[i].id == id)
-                       return lp->pdata->regulator_data[i].init_data;
+               if (pdata->regulator_data[i].id == id)
+                       return pdata->regulator_data[i].init_data;
        }
 
        return NULL;
@@ -861,18 +865,12 @@ static const struct regmap_config lp872x_regmap_config = {
 static int lp872x_probe(struct i2c_client *cl, const struct i2c_device_id *id)
 {
        struct lp872x *lp;
-       struct lp872x_platform_data *pdata = cl->dev.platform_data;
        int ret, size, num_regulators;
        const int lp872x_num_regulators[] = {
                [LP8720] = LP8720_NUM_REGULATORS,
                [LP8725] = LP8725_NUM_REGULATORS,
        };
 
-       if (!pdata) {
-               dev_err(&cl->dev, "no platform data\n");
-               return -EINVAL;
-       }
-
        lp = devm_kzalloc(&cl->dev, sizeof(struct lp872x), GFP_KERNEL);
        if (!lp)
                goto err_mem;
@@ -892,7 +890,7 @@ static int lp872x_probe(struct i2c_client *cl, const struct i2c_device_id *id)
        }
 
        lp->dev = &cl->dev;
-       lp->pdata = pdata;
+       lp->pdata = cl->dev.platform_data;
        lp->chipid = id->driver_data;
        lp->num_regulators = num_regulators;
        i2c_set_clientdata(cl, lp);