media: atomisp-ov2680: Push the input_lock taking up into ov2680_s_power()
authorHans de Goede <hdegoede@redhat.com>
Sun, 7 Nov 2021 17:15:41 +0000 (17:15 +0000)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Mon, 15 Nov 2021 08:11:54 +0000 (08:11 +0000)
ov2680_s_power() is the only caller of ov2680_init(), push the input_lock
taking from ov2680_init() up into ov2680_s_power(), this way the new
power_on bool is also protected by it.

Link: https://lore.kernel.org/linux-media/20211107171549.267583-4-hdegoede@redhat.com
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
drivers/staging/media/atomisp/i2c/atomisp-ov2680.c

index 7b7cf7a..2721223 100644 (file)
@@ -655,21 +655,11 @@ static int ov2680_init_registers(struct v4l2_subdev *sd)
 
 static int ov2680_init(struct v4l2_subdev *sd)
 {
-       struct ov2680_device *dev = to_ov2680_sensor(sd);
-
-       int ret;
-
-       mutex_lock(&dev->input_lock);
-
        /* restore settings */
        ov2680_res = ov2680_res_preview;
        N_RES = N_RES_PREVIEW;
 
-       ret = ov2680_init_registers(sd);
-
-       mutex_unlock(&dev->input_lock);
-
-       return ret;
+       return ov2680_init_registers(sd);
 }
 
 static int power_ctrl(struct v4l2_subdev *sd, bool flag)
@@ -817,15 +807,21 @@ static int power_down(struct v4l2_subdev *sd)
 
 static int ov2680_s_power(struct v4l2_subdev *sd, int on)
 {
+       struct ov2680_device *dev = to_ov2680_sensor(sd);
        int ret;
 
+       mutex_lock(&dev->input_lock);
+
        if (on == 0) {
                ret = power_down(sd);
        } else {
                ret = power_up(sd);
                if (!ret)
-                       return ov2680_init(sd);
+                       ret = ov2680_init(sd);
        }
+
+       mutex_unlock(&dev->input_lock);
+
        return ret;
 }