return -EINVAL;
 }
 
+/* -----------------------------------------------------------------------------
+ * Digital async notifier
+ */
+
 /* The vin lock should be held when calling the subdevice attach and detach */
 static int rvin_digital_subdevice_attach(struct rvin_dev *vin,
                                         struct v4l2_subdev *subdev)
        return 0;
 }
 
+static int rvin_mc_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
  */
                return ret;
 
        platform_set_drvdata(pdev, vin);
-
-       ret = rvin_digital_graph_init(vin);
+       if (vin->info->use_mc)
+               ret = rvin_mc_init(vin);
+       else
+               ret = rvin_digital_graph_init(vin);
        if (ret < 0)
                goto error;
 
 
  * @notifier:          V4L2 asynchronous subdevs notifier
  * @digital:           entity in the DT for local digital subdevice
  *
+ * @pad:               media pad for the video device entity
+ *
  * @lock:              protects @queue
  * @queue:             vb2 buffers queue
  * @scratch:           cpu address for scratch buffer
        struct v4l2_async_notifier notifier;
        struct rvin_graph_entity *digital;
 
+       struct media_pad pad;
+
        struct mutex lock;
        struct vb2_queue queue;
        void *scratch;