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>
This commit is contained in:
Niklas Söderlund 2025-08-28 18:06:50 +02:00 committed by Hans Verkuil
parent f55cd3798a
commit b918cbcb1f

View File

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