media: i2c: st-vgxy61: Fix regulator counter underflow
authorBenjamin Mugnier <benjamin.mugnier@foss.st.com>
Mon, 7 Nov 2022 15:00:00 +0000 (15:00 +0000)
committerMauro Carvalho Chehab <mchehab@kernel.org>
Fri, 25 Nov 2022 08:40:21 +0000 (08:40 +0000)
Previously regulators were enabled on probe and never again.
However, as regulators are disabled on power off. After a second power off
the regulator counter will underflow. Plus regulators are not required
for probing the sensor, but for streaming.
Fix this by enabling regulators on power on to balance regulator counter
properly.

Signed-off-by: Benjamin Mugnier <benjamin.mugnier@foss.st.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
drivers/media/i2c/st-vgxy61.c

index dfbf253381606c8ec2436f13d99085f24a364561..771a495c716d455dc6dc11a64bb2d5a35d0ed766 100644 (file)
@@ -1711,6 +1711,13 @@ static int vgxy61_power_on(struct device *dev)
        struct vgxy61_dev *sensor = to_vgxy61_dev(sd);
        int ret;
 
+       ret = regulator_bulk_enable(ARRAY_SIZE(vgxy61_supply_name),
+                                   sensor->supplies);
+       if (ret) {
+               dev_err(&client->dev, "failed to enable regulators %d\n", ret);
+               return ret;
+       }
+
        ret = clk_prepare_enable(sensor->xclk);
        if (ret) {
                dev_err(&client->dev, "failed to enable clock %d\n", ret);
@@ -1847,13 +1854,6 @@ static int vgxy61_probe(struct i2c_client *client)
                return ret;
        }
 
-       ret = regulator_bulk_enable(ARRAY_SIZE(vgxy61_supply_name),
-                                   sensor->supplies);
-       if (ret) {
-               dev_err(&client->dev, "failed to enable regulators %d\n", ret);
-               return ret;
-       }
-
        ret = vgxy61_power_on(dev);
        if (ret)
                return ret;