media: atomisp-ov2680: Save/restore exposure and gain over sensor power-down
Save/restore exposure and gain over sensor power-down and don't write them to the sensor when ov2680_set_exposure() is called while the sensor is off. Link: https://lore.kernel.org/linux-media/20211107171549.267583-7-hdegoede@redhat.com Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
This commit is contained in:
parent
8eed52e182
commit
4ed2caf853
|
@ -359,7 +359,14 @@ static int ov2680_set_exposure(struct v4l2_subdev *sd, int exposure,
|
|||
int ret;
|
||||
|
||||
mutex_lock(&dev->input_lock);
|
||||
ret = __ov2680_set_exposure(sd, exposure, gain, digitgain);
|
||||
|
||||
dev->exposure = exposure;
|
||||
dev->gain = gain;
|
||||
dev->digitgain = digitgain;
|
||||
|
||||
if (dev->power_on)
|
||||
ret = __ov2680_set_exposure(sd, exposure, gain, digitgain);
|
||||
|
||||
mutex_unlock(&dev->input_lock);
|
||||
|
||||
return ret;
|
||||
|
@ -748,6 +755,10 @@ static int power_up(struct v4l2_subdev *sd)
|
|||
if (ret)
|
||||
goto fail_init_registers;
|
||||
|
||||
ret = __ov2680_set_exposure(sd, dev->exposure, dev->gain, dev->digitgain);
|
||||
if (ret)
|
||||
goto fail_init_registers;
|
||||
|
||||
dev->power_on = true;
|
||||
return 0;
|
||||
|
||||
|
@ -1140,6 +1151,8 @@ static int ov2680_probe(struct i2c_client *client)
|
|||
mutex_init(&dev->input_lock);
|
||||
|
||||
dev->res = &ov2680_res_preview[0];
|
||||
dev->exposure = dev->res->lines_per_frame - OV2680_INTEGRATION_TIME_MARGIN;
|
||||
dev->gain = 250; /* 0-2047 */
|
||||
v4l2_i2c_subdev_init(&dev->sd, client, &ov2680_ops);
|
||||
|
||||
pdata = gmin_camera_platform_data(&dev->sd,
|
||||
|
|
|
@ -174,6 +174,9 @@ struct ov2680_device {
|
|||
struct ov2680_resolution *res;
|
||||
struct camera_sensor_platform_data *platform_data;
|
||||
bool power_on;
|
||||
u16 exposure;
|
||||
u16 gain;
|
||||
u16 digitgain;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue