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;
|
int ret;
|
||||||
|
|
||||||
mutex_lock(&dev->input_lock);
|
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);
|
mutex_unlock(&dev->input_lock);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -748,6 +755,10 @@ static int power_up(struct v4l2_subdev *sd)
|
||||||
if (ret)
|
if (ret)
|
||||||
goto fail_init_registers;
|
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;
|
dev->power_on = true;
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
@ -1140,6 +1151,8 @@ static int ov2680_probe(struct i2c_client *client)
|
||||||
mutex_init(&dev->input_lock);
|
mutex_init(&dev->input_lock);
|
||||||
|
|
||||||
dev->res = &ov2680_res_preview[0];
|
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);
|
v4l2_i2c_subdev_init(&dev->sd, client, &ov2680_ops);
|
||||||
|
|
||||||
pdata = gmin_camera_platform_data(&dev->sd,
|
pdata = gmin_camera_platform_data(&dev->sd,
|
||||||
|
|
|
@ -174,6 +174,9 @@ struct ov2680_device {
|
||||||
struct ov2680_resolution *res;
|
struct ov2680_resolution *res;
|
||||||
struct camera_sensor_platform_data *platform_data;
|
struct camera_sensor_platform_data *platform_data;
|
||||||
bool power_on;
|
bool power_on;
|
||||||
|
u16 exposure;
|
||||||
|
u16 gain;
|
||||||
|
u16 digitgain;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue