When running in media controller mode a media pad is needed, register one. Also set the media bus format to CSI-2. Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@xxxxxxxxxxxx> --- drivers/media/platform/rcar-vin/rcar-core.c | 23 ++++++++++++++++++++++- drivers/media/platform/rcar-vin/rcar-vin.h | 4 ++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/drivers/media/platform/rcar-vin/rcar-core.c b/drivers/media/platform/rcar-vin/rcar-core.c index fbbb22924cf3a045..dd0525f2ba336bc2 100644 --- a/drivers/media/platform/rcar-vin/rcar-core.c +++ b/drivers/media/platform/rcar-vin/rcar-core.c @@ -45,6 +45,10 @@ static int rvin_find_pad(struct v4l2_subdev *sd, int direction) return -EINVAL; } +/* ----------------------------------------------------------------------------- + * Digital async notifier + */ + static bool rvin_mbus_supported(struct rvin_dev *vin) { struct v4l2_subdev *sd = vin->digital.subdev; @@ -273,6 +277,20 @@ static int rvin_digital_graph_init(struct rvin_dev *vin) return 0; } +/* ----------------------------------------------------------------------------- + * Group async notifier + */ + +static int rvin_group_init(struct rvin_dev *vin) +{ + /* All our sources are CSI-2 */ + vin->mbus_cfg.type = V4L2_MBUS_CSI2; + vin->mbus_cfg.flags = 0; + + vin->pad.flags = MEDIA_PAD_FL_SINK; + return media_entity_pads_init(&vin->vdev.entity, 1, &vin->pad); +} + /* ----------------------------------------------------------------------------- * Platform Device Driver */ @@ -365,7 +383,10 @@ static int rcar_vin_probe(struct platform_device *pdev) if (ret) return ret; - ret = rvin_digital_graph_init(vin); + if (vin->info->use_mc) + ret = rvin_group_init(vin); + else + ret = rvin_digital_graph_init(vin); if (ret < 0) goto error; diff --git a/drivers/media/platform/rcar-vin/rcar-vin.h b/drivers/media/platform/rcar-vin/rcar-vin.h index 12daff804bb6f77f..9c47669669c0469c 100644 --- a/drivers/media/platform/rcar-vin/rcar-vin.h +++ b/drivers/media/platform/rcar-vin/rcar-vin.h @@ -103,6 +103,8 @@ struct rvin_info { * @notifier: V4L2 asynchronous subdevs notifier * @digital: entity in the DT for local digital subdevice * + * @pad: pad for media controller + * * @lock: protects @queue * @queue: vb2 buffers queue * @@ -132,6 +134,8 @@ struct rvin_dev { struct v4l2_async_notifier notifier; struct rvin_graph_entity digital; + struct media_pad pad; + struct mutex lock; struct vb2_queue queue; -- 2.14.0