]> www.infradead.org Git - users/hch/misc.git/commitdiff
media: adv7180: Setup controls every time the device is reset
authorNiklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
Thu, 28 Aug 2025 16:06:48 +0000 (18:06 +0200)
committerHans Verkuil <hverkuil+cisco@kernel.org>
Thu, 4 Sep 2025 08:06:13 +0000 (10:06 +0200)
The device initialization code resets the whole device, thus the initial
controls set at probe are lost as adv7180_init_controls() are called
before init_device(). Additionally the controls were never restored
after the device where reset coming back from suspend.

Solve this by separate the setup of the controls from the creation of
them, and always set them up when the device is reset.

Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
drivers/media/i2c/adv7180.c

index 7b0387151c3a62061edbeaa217a13a549b55e7a2..8409ee9acc4f71283d4a9b1c15d2f7d825c23bf6 100644 (file)
@@ -700,7 +700,6 @@ static int adv7180_init_controls(struct adv7180_state *state)
                v4l2_ctrl_handler_free(&state->ctrl_hdl);
                return err;
        }
-       v4l2_ctrl_handler_setup(&state->ctrl_hdl);
 
        return 0;
 }
@@ -898,6 +897,8 @@ static int init_device(struct adv7180_state *state)
 
        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 */