]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
media: adv7180: implement g_register and s_register
authorThorsten Schmelzer <tschmelzer@topcon.com>
Tue, 25 Nov 2025 14:29:56 +0000 (15:29 +0100)
committerHans Verkuil <hverkuil+cisco@kernel.org>
Tue, 13 Jan 2026 12:10:07 +0000 (13:10 +0100)
The g_register and s_register callbacks are useful for debugging the
adv7180.

Implement the callbacks to expose the register debugging to userspace.

Signed-off-by: Thorsten Schmelzer <tschmelzer@topcon.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
Signed-off-by: Michael Tretter <m.tretter@pengutronix.de>
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
drivers/media/i2c/adv7180.c

index 4152f2049a6d879d0cd2001936d958e3c04c8049..d289cbc2eefd50631141dd23b5337cdde292e055 100644 (file)
@@ -969,6 +969,32 @@ static int adv7180_subscribe_event(struct v4l2_subdev *sd,
        }
 }
 
+#ifdef CONFIG_VIDEO_ADV_DEBUG
+static int adv7180_g_register(struct v4l2_subdev *sd,
+                             struct v4l2_dbg_register *reg)
+{
+       struct adv7180_state *state = to_state(sd);
+       int ret;
+
+       ret = adv7180_read(state, reg->reg);
+       if (ret < 0)
+               return ret;
+
+       reg->val = ret;
+       reg->size = 1;
+
+       return 0;
+}
+
+static int adv7180_s_register(struct v4l2_subdev *sd,
+                             const struct v4l2_dbg_register *reg)
+{
+       struct adv7180_state *state = to_state(sd);
+
+       return adv7180_write(state, reg->reg, reg->val);
+}
+#endif
+
 static const struct v4l2_subdev_video_ops adv7180_video_ops = {
        .s_std = adv7180_s_std,
        .g_std = adv7180_g_std,
@@ -982,6 +1008,10 @@ static const struct v4l2_subdev_video_ops adv7180_video_ops = {
 static const struct v4l2_subdev_core_ops adv7180_core_ops = {
        .subscribe_event = adv7180_subscribe_event,
        .unsubscribe_event = v4l2_event_subdev_unsubscribe,
+#ifdef CONFIG_VIDEO_ADV_DEBUG
+       .g_register = adv7180_g_register,
+       .s_register = adv7180_s_register,
+#endif
 };
 
 static const struct v4l2_subdev_pad_ops adv7180_pad_ops = {