diff options
author | Hans de Goede <hdegoede@redhat.com> | 2021-11-07 18:15:41 +0100 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab+huawei@kernel.org> | 2021-11-15 09:11:54 +0100 |
commit | e9174a6438adada772abdb16901280289aa4c3b2 (patch) | |
tree | 4cb19fae0ec4b955b34acae943590d61c112379c | |
parent | media: atomisp-ov2680: Turn on power only once (diff) | |
download | linux-e9174a6438adada772abdb16901280289aa4c3b2.tar.xz linux-e9174a6438adada772abdb16901280289aa4c3b2.zip |
media: atomisp-ov2680: Push the input_lock taking up into ov2680_s_power()
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>
-rw-r--r-- | drivers/staging/media/atomisp/i2c/atomisp-ov2680.c | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/drivers/staging/media/atomisp/i2c/atomisp-ov2680.c b/drivers/staging/media/atomisp/i2c/atomisp-ov2680.c index 7b7cf7a68823..2721223ebcde 100644 --- a/drivers/staging/media/atomisp/i2c/atomisp-ov2680.c +++ b/drivers/staging/media/atomisp/i2c/atomisp-ov2680.c @@ -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; } |