Hi Tomi On Tue, Mar 01, 2022 at 06:11:49PM +0200, Tomi Valkeinen wrote: > Add v4l2_subdev_get_fmt() helper function which implements > v4l2_subdev_pad_ops.get_fmt using streams. Subdev drivers that do not > need to do anything special in their get_fmt op can use this helper > directly for v4l2_subdev_pad_ops.get_fmt. > > Signed-off-by: Tomi Valkeinen <tomi.valkeinen@xxxxxxxxxxxxxxxx> > Reviewed-by: Hans Verkuil <hverkuil-cisco@xxxxxxxxx> Reviewed-by: Jacopo Mondi <jacopo@xxxxxxxxxx> Thanks j > --- > drivers/media/v4l2-core/v4l2-subdev.c | 16 ++++++++++++++++ > include/media/v4l2-subdev.h | 17 +++++++++++++++++ > 2 files changed, 33 insertions(+) > > diff --git a/drivers/media/v4l2-core/v4l2-subdev.c b/drivers/media/v4l2-core/v4l2-subdev.c > index e65f802fe2aa..c1cc9b91dba7 100644 > --- a/drivers/media/v4l2-core/v4l2-subdev.c > +++ b/drivers/media/v4l2-core/v4l2-subdev.c > @@ -1507,6 +1507,22 @@ v4l2_subdev_state_get_opposite_stream_format(struct v4l2_subdev_state *state, > } > EXPORT_SYMBOL_GPL(v4l2_subdev_state_get_opposite_stream_format); > > +int v4l2_subdev_get_fmt(struct v4l2_subdev *sd, struct v4l2_subdev_state *state, > + struct v4l2_subdev_format *format) > +{ > + struct v4l2_mbus_framefmt *fmt; > + > + fmt = v4l2_subdev_state_get_stream_format(state, format->pad, > + format->stream); > + if (!fmt) > + return -EINVAL; > + > + format->format = *fmt; > + > + return 0; > +} > +EXPORT_SYMBOL_GPL(v4l2_subdev_get_fmt); > + > #endif /* CONFIG_MEDIA_CONTROLLER */ > > void v4l2_subdev_init(struct v4l2_subdev *sd, const struct v4l2_subdev_ops *ops) > diff --git a/include/media/v4l2-subdev.h b/include/media/v4l2-subdev.h > index ed3fe21637e6..a80830801a7f 100644 > --- a/include/media/v4l2-subdev.h > +++ b/include/media/v4l2-subdev.h > @@ -1481,6 +1481,23 @@ struct v4l2_mbus_framefmt * > v4l2_subdev_state_get_opposite_stream_format(struct v4l2_subdev_state *state, > u32 pad, u32 stream); > > +/** > + * v4l2_subdev_get_fmt() - Fill format based on state > + * @sd: subdevice > + * @state: subdevice state > + * @format: pointer to &struct v4l2_subdev_format > + * > + * Fill @format based on the pad and stream given in the @format struct. > + * > + * This function can be used by the subdev drivers to implement > + * v4l2_subdev_pad_ops.get_fmt if the subdev driver does not need to do > + * anything special in their get_fmt op. > + * > + * Returns 0 on success, error value otherwise. > + */ > +int v4l2_subdev_get_fmt(struct v4l2_subdev *sd, struct v4l2_subdev_state *state, > + struct v4l2_subdev_format *format); > + > #endif /* CONFIG_MEDIA_CONTROLLER */ > > /** > -- > 2.25.1 >