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 <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>
This commit is contained in:
Thorsten Schmelzer 2025-11-25 15:29:56 +01:00 committed by Hans Verkuil
parent 57b96d4a23
commit 2473b46c48

View 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 = {