Merge tag 'iommu-updates-v4.3' of git://git.kernel.org/pub/scm/linux/kernel/git/joro...
[firefly-linux-kernel-4.4.55.git] / drivers / video / backlight / lp855x_bl.c
index 88116b493f3ba9d3177c22866df061d7fd449ef7..f88df9ec08d044091d7c1b531499a46309012904 100644 (file)
@@ -73,6 +73,7 @@ struct lp855x {
        struct device *dev;
        struct lp855x_platform_data *pdata;
        struct pwm_device *pwm;
+       struct regulator *supply;       /* regulator for VDD input */
 };
 
 static int lp855x_write_byte(struct lp855x *lp, u8 reg, u8 data)
@@ -378,13 +379,6 @@ static int lp855x_parse_dt(struct lp855x *lp)
                pdata->rom_data = &rom[0];
        }
 
-       pdata->supply = devm_regulator_get(dev, "power");
-       if (IS_ERR(pdata->supply)) {
-               if (PTR_ERR(pdata->supply) == -EPROBE_DEFER)
-                       return -EPROBE_DEFER;
-               pdata->supply = NULL;
-       }
-
        lp->pdata = pdata;
 
        return 0;
@@ -425,8 +419,15 @@ static int lp855x_probe(struct i2c_client *cl, const struct i2c_device_id *id)
        else
                lp->mode = REGISTER_BASED;
 
-       if (lp->pdata->supply) {
-               ret = regulator_enable(lp->pdata->supply);
+       lp->supply = devm_regulator_get(lp->dev, "power");
+       if (IS_ERR(lp->supply)) {
+               if (PTR_ERR(lp->supply) == -EPROBE_DEFER)
+                       return -EPROBE_DEFER;
+               lp->supply = NULL;
+       }
+
+       if (lp->supply) {
+               ret = regulator_enable(lp->supply);
                if (ret < 0) {
                        dev_err(&cl->dev, "failed to enable supply: %d\n", ret);
                        return ret;
@@ -464,8 +465,8 @@ static int lp855x_remove(struct i2c_client *cl)
 
        lp->bl->props.brightness = 0;
        backlight_update_status(lp->bl);
-       if (lp->pdata->supply)
-               regulator_disable(lp->pdata->supply);
+       if (lp->supply)
+               regulator_disable(lp->supply);
        sysfs_remove_group(&lp->dev->kobj, &lp855x_attr_group);
 
        return 0;