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;