Hi Tomi, Thank you for the patch. On Mon, May 24, 2021 at 01:44:06PM +0300, Tomi Valkeinen wrote: > Add routing and stream_configs to struct v4l2_subdev_state. This lets > the drivers to implement V4L2_SUBDEV_FORMAT_TRY support for routing and > the stream configurations. > > Signed-off-by: Tomi Valkeinen <tomi.valkeinen@xxxxxxxxxxxxxxxx> > --- > drivers/media/v4l2-core/v4l2-subdev.c | 3 +++ > include/media/v4l2-subdev.h | 4 ++++ > 2 files changed, 7 insertions(+) > > diff --git a/drivers/media/v4l2-core/v4l2-subdev.c b/drivers/media/v4l2-core/v4l2-subdev.c > index b30b456d8d99..13cffe9d9b89 100644 > --- a/drivers/media/v4l2-core/v4l2-subdev.c > +++ b/drivers/media/v4l2-core/v4l2-subdev.c > @@ -1227,6 +1227,9 @@ EXPORT_SYMBOL_GPL(v4l2_subdev_alloc_state); > > void v4l2_subdev_free_state(struct v4l2_subdev_state *state) > { > + v4l2_subdev_free_routing(&state->routing); > + v4l2_uninit_stream_configs(&state->stream_configs); > + > kvfree(state->pads); > kvfree(state); > } > diff --git a/include/media/v4l2-subdev.h b/include/media/v4l2-subdev.h > index 39c6b811463a..973db58c2d9b 100644 > --- a/include/media/v4l2-subdev.h > +++ b/include/media/v4l2-subdev.h > @@ -712,6 +712,8 @@ struct v4l2_subdev_krouting { > * struct v4l2_subdev_state - Used for storing subdev information. > * > * @pads: &struct v4l2_subdev_pad_config array > + * @routing: routing table for the subdev > + * @stream_configs: stream configurations (only for V4L2_SUBDEV_FL_MULTIPLEXED) > * > * This structure only needs to be passed to the pad op if the 'which' field > * of the main argument is set to %V4L2_SUBDEV_FORMAT_TRY. For > @@ -719,6 +721,8 @@ struct v4l2_subdev_krouting { > */ > struct v4l2_subdev_state { > struct v4l2_subdev_pad_config *pads; > + struct v4l2_subdev_krouting routing; > + struct v4l2_subdev_stream_configs stream_configs; stream_configs duplicates the information contained in pads. This is possibly acceptable for the time being, but needs to be abstracted from drivers completely. > }; > > /** -- Regards, Laurent Pinchart