media: ccs: Ensure control handlers have been set up after probe
If the sensor remains powered on after probe when it is needed again and the runtime PM usage_count is incremented, the control handler setup for neither control handler is run. As this is, in most cases, a needless operation in probe, track the status of sensor power handling after probe and set up control handlers even if the device was already active right after probe. Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
This commit is contained in:
parent
1865913dd5
commit
a274f4d1e5
@ -1878,9 +1878,11 @@ static int ccs_pm_get_init(struct ccs_sensor *sensor)
|
||||
goto error;
|
||||
|
||||
/* Device was already active, so don't set controls */
|
||||
if (rval == 1)
|
||||
if (rval == 1 && !sensor->handler_setup_needed)
|
||||
return 0;
|
||||
|
||||
sensor->handler_setup_needed = false;
|
||||
|
||||
/* Restore V4L2 controls to the previously suspended device */
|
||||
rval = v4l2_ctrl_handler_setup(&sensor->pixel_array->ctrl_handler);
|
||||
if (rval)
|
||||
@ -3532,6 +3534,7 @@ static int ccs_probe(struct i2c_client *client)
|
||||
|
||||
sensor->streaming = false;
|
||||
sensor->dev_init_done = true;
|
||||
sensor->handler_setup_needed = true;
|
||||
|
||||
rval = ccs_write_msr_regs(sensor);
|
||||
if (rval)
|
||||
|
@ -236,6 +236,7 @@ struct ccs_sensor {
|
||||
|
||||
bool streaming;
|
||||
bool dev_init_done;
|
||||
bool handler_setup_needed;
|
||||
u8 compressed_min_bpp;
|
||||
|
||||
struct ccs_module_info minfo;
|
||||
|
Loading…
x
Reference in New Issue
Block a user