On 23/08/17 01:26, Niklas Söderlund wrote: > On Gen3 a media controller API needs to be used to allow userspace to > configure the subdevices in the pipeline instead of directly controlling > a single source subdevice, which is and will continue to be the mode of > operation on Gen2. > > Prepare for these two modes of operation by adding a flag to struct > rvin_graph_entity which will control which mode to use. > > Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@xxxxxxxxxxxx> Reviewed-by: Hans Verkuil <hans.verkuil@xxxxxxxxx> Regards, Hans > --- > drivers/media/platform/rcar-vin/rcar-core.c | 6 +++++- > drivers/media/platform/rcar-vin/rcar-vin.h | 2 ++ > 2 files changed, 7 insertions(+), 1 deletion(-) > > diff --git a/drivers/media/platform/rcar-vin/rcar-core.c b/drivers/media/platform/rcar-vin/rcar-core.c > index 65f01b6781c0aefd..fbbb22924cf3a045 100644 > --- a/drivers/media/platform/rcar-vin/rcar-core.c > +++ b/drivers/media/platform/rcar-vin/rcar-core.c > @@ -279,18 +279,21 @@ static int rvin_digital_graph_init(struct rvin_dev *vin) > > static const struct rvin_info rcar_info_h1 = { > .chip = RCAR_H1, > + .use_mc = false, > .max_width = 2048, > .max_height = 2048, > }; > > static const struct rvin_info rcar_info_m1 = { > .chip = RCAR_M1, > + .use_mc = false, > .max_width = 2048, > .max_height = 2048, > }; > > static const struct rvin_info rcar_info_gen2 = { > .chip = RCAR_GEN2, > + .use_mc = false, > .max_width = 2048, > .max_height = 2048, > }; > @@ -387,7 +390,8 @@ static int rcar_vin_remove(struct platform_device *pdev) > v4l2_async_notifier_unregister(&vin->notifier); > > /* Checks internaly if handlers have been init or not */ > - v4l2_ctrl_handler_free(&vin->ctrl_handler); > + if (!vin->info->use_mc) > + v4l2_ctrl_handler_free(&vin->ctrl_handler); > > rvin_v4l2_remove(vin); > > diff --git a/drivers/media/platform/rcar-vin/rcar-vin.h b/drivers/media/platform/rcar-vin/rcar-vin.h > index 94c606f2b8f2f246..819d9c04ed8ffb36 100644 > --- a/drivers/media/platform/rcar-vin/rcar-vin.h > +++ b/drivers/media/platform/rcar-vin/rcar-vin.h > @@ -77,12 +77,14 @@ struct rvin_graph_entity { > /** > * struct rvin_info - Information about the particular VIN implementation > * @chip: type of VIN chip > + * @use_mc: use media controller instead of controlling subdevice > * > * max_width: max input width the VIN supports > * max_height: max input height the VIN supports > */ > struct rvin_info { > enum chip_id chip; > + bool use_mc; > > unsigned int max_width; > unsigned int max_height; >