@@ -230,6 +230,23 @@ struct video_device *video_devdata(struct file *file)
}
EXPORT_SYMBOL(video_devdata);
+int v4l_enable_media_tuner(struct video_device *vdev)
+{
+#ifdef CONFIG_MEDIA_CONTROLLER
+ struct media_device *mdev = vdev->decoder->parent;
+ int ret;
+
+ /* decoder */
+ if (!mdev || !mdev->enable_source)
+ return 0;
+ ret = mdev->enable_source(vdev->decoder);
+ if (ret)
+ return -EBUSY;
+ return 0;
+#endif /* CONFIG_MEDIA_CONTROLLER */
+ return 0;
+}
+EXPORT_SYMBOL_GPL(v4l_enable_media_tuner);
/* Priority handling */
@@ -86,6 +86,7 @@ struct video_device
{
#if defined(CONFIG_MEDIA_CONTROLLER)
struct media_entity entity;
+ struct media_entity *decoder;
#endif
/* device ops */
const struct v4l2_file_operations *fops;
@@ -178,6 +179,8 @@ struct video_device * __must_check video_device_alloc(void);
/* this release function frees the vdev pointer */
void video_device_release(struct video_device *vdev);
+int v4l_enable_media_tuner(struct video_device *vdev);
+
/* this release function does nothing, use when the video_device is a
static global struct. Note that having a static video_device is
a dubious construction at best. */
Add a new interface to be used by v4l-core to invoke enable_source handler in the media_device to find tuner entity connected to the decoder and check is it is available. enable_source handler will activate the link if tuner is available. Signed-off-by: Shuah Khan <shuahkh@osg.samsung.com> --- drivers/media/v4l2-core/v4l2-dev.c | 17 +++++++++++++++++ include/media/v4l2-dev.h | 3 +++ 2 files changed, 20 insertions(+)