From: Thorsten Schmelzer Date: Tue, 25 Nov 2025 14:29:56 +0000 (+0100) Subject: media: adv7180: implement g_register and s_register X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2473b46c480d53e6b20d29b4d497a88747e3e280;p=thirdparty%2Fkernel%2Flinux.git media: adv7180: implement g_register and s_register 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 Reviewed-by: Niklas Söderlund Signed-off-by: Michael Tretter Signed-off-by: Hans Verkuil --- diff --git a/drivers/media/i2c/adv7180.c b/drivers/media/i2c/adv7180.c index 4152f2049a6d8..d289cbc2eefd5 100644 --- a/drivers/media/i2c/adv7180.c +++ b/drivers/media/i2c/adv7180.c @@ -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 = {