Hi Prabhakar, Thank you for the patch. On Tue, Sep 10, 2024 at 06:06:00PM +0100, Prabhakar wrote: > From: Lad Prabhakar <prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx> > > The OV5645 sensor exposes controls, so the V4L2_SUBDEV_FL_HAS_EVENTS flag > should be set and implement subscribe_event and unsubscribe_event hooks. > > Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx> Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@xxxxxxxxxxxxxxxx> > --- > drivers/media/i2c/ov5645.c | 9 ++++++++- > 1 file changed, 8 insertions(+), 1 deletion(-) > > diff --git a/drivers/media/i2c/ov5645.c b/drivers/media/i2c/ov5645.c > index 019979f553b1..6eedd0310b02 100644 > --- a/drivers/media/i2c/ov5645.c > +++ b/drivers/media/i2c/ov5645.c > @@ -29,6 +29,7 @@ > #include <linux/slab.h> > #include <linux/types.h> > #include <media/v4l2-ctrls.h> > +#include <media/v4l2-event.h> > #include <media/v4l2-fwnode.h> > #include <media/v4l2-subdev.h> > > @@ -1042,7 +1043,13 @@ static const struct v4l2_subdev_pad_ops ov5645_subdev_pad_ops = { > .get_selection = ov5645_get_selection, > }; > > +static const struct v4l2_subdev_core_ops ov5645_core_ops = { > + .subscribe_event = v4l2_ctrl_subdev_subscribe_event, > + .unsubscribe_event = v4l2_event_subdev_unsubscribe, > +}; > + > static const struct v4l2_subdev_ops ov5645_subdev_ops = { > + .core = &ov5645_core_ops, > .video = &ov5645_video_ops, > .pad = &ov5645_subdev_pad_ops, > }; > @@ -1178,7 +1185,7 @@ static int ov5645_probe(struct i2c_client *client) > > v4l2_i2c_subdev_init(&ov5645->sd, client, &ov5645_subdev_ops); > ov5645->sd.internal_ops = &ov5645_internal_ops; > - ov5645->sd.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE; > + ov5645->sd.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE | V4L2_SUBDEV_FL_HAS_EVENTS; > ov5645->pad.flags = MEDIA_PAD_FL_SOURCE; > ov5645->sd.dev = &client->dev; > ov5645->sd.entity.function = MEDIA_ENT_F_CAM_SENSOR; > -- > 2.34.1 > -- Regards, Laurent Pinchart