diff options
| author | Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se> | 2025-08-28 18:06:50 +0200 |
|---|---|---|
| committer | Hans Verkuil <hverkuil+cisco@kernel.org> | 2025-09-04 10:06:13 +0200 |
| commit | b918cbcb1f430f345ddcd83b014bfb3ba7a55811 (patch) | |
| tree | c238fb2cfc4d6b55bbbef84b56b021a8887f3f07 | |
| parent | f55cd3798af82e6a07424c84f797938c18216463 (diff) | |
media: adv7180: Split device initialization and reset
The two different tasks of resetting and initializing the devices, and
configured the video formats are grouped lumped together in a single
function. These two tasks are then only performed at probe time, or when
resuming from suspend. Configuration of formats are then done directly
by the IOCTL callbacks, such as .set_fmt.
Prepare for reworking the driver to only reset the device at probe and
resume, and configuring all video formats in .s_stream instead of in
each IOCTL callback by splitting the two tasks in two different
functions.
At this point there is no functional change.
Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
| -rw-r--r-- | drivers/media/i2c/adv7180.c | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/drivers/media/i2c/adv7180.c b/drivers/media/i2c/adv7180.c index bb94b9a7b3c7..998cc56217b3 100644 --- a/drivers/media/i2c/adv7180.c +++ b/drivers/media/i2c/adv7180.c @@ -878,6 +878,23 @@ static int init_device(struct adv7180_state *state) lockdep_assert_held(&state->mutex); + ret = adv7180_program_std(state); + if (ret) + return ret; + + adv7180_set_field_mode(state); + + __v4l2_ctrl_handler_setup(&state->ctrl_hdl); + + return ret; +} + +static int adv7180_reset_device(struct adv7180_state *state) +{ + int ret; + + lockdep_assert_held(&state->mutex); + adv7180_set_power_pin(state, true); adv7180_set_reset_pin(state, false); @@ -895,14 +912,10 @@ static int init_device(struct adv7180_state *state) if (ret) return ret; - ret = adv7180_program_std(state); + ret = init_device(state); if (ret) return ret; - adv7180_set_field_mode(state); - - __v4l2_ctrl_handler_setup(&state->ctrl_hdl); - /* register for interrupts */ if (state->irq > 0) { /* config the Interrupt pin to be active low */ @@ -1487,7 +1500,7 @@ static int adv7180_probe(struct i2c_client *client) goto err_free_ctrl; mutex_lock(&state->mutex); - ret = init_device(state); + ret = adv7180_reset_device(state); mutex_unlock(&state->mutex); if (ret) goto err_media_entity_cleanup; @@ -1573,7 +1586,7 @@ static int adv7180_resume(struct device *dev) guard(mutex)(&state->mutex); - ret = init_device(state); + ret = adv7180_reset_device(state); if (ret < 0) return ret; |
