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:
Sakari Ailus 2023-10-14 20:56:00 +03:00 committed by Hans Verkuil
parent 1865913dd5
commit a274f4d1e5
2 changed files with 5 additions and 1 deletions

View File

@ -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)

View File

@ -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;