Thread (79 messages) 79 messages, 5 authors, 2016-02-03

Re: [PATCH 09/31] media: v4l2-core add v4l_vb2q_enable_media_tuner() helper

From: Mauro Carvalho Chehab <hidden>
Date: 2016-01-28 17:34:58
Also in: alsa-devel, linux-media, lkml

Em Thu, 28 Jan 2016 10:31:21 -0700
Shuah Khan [off-list ref] escreveu:
On 01/28/2016 08:29 AM, Mauro Carvalho Chehab wrote:
quoted
Em Wed,  6 Jan 2016 13:26:58 -0700
Shuah Khan [off-list ref] escreveu:
  
quoted
Add a new v4l_vb2q_enable_media_tuner() wrapper function
to be called from v4l2-core to enable the media tuner with
videobuf2 queue, when the calling frunction has the videobuf2
queue and doesn't have the struct video_device associated with
the queue handy as in the case of vb2_core_streamon(). This
function simply calls v4l_enable_media_tuner() passing in the
pointer to struct video_device.

Signed-off-by: Shuah Khan <redacted>
---
 drivers/media/v4l2-core/v4l2-dev.c | 21 +++++++++++++++++++++
 include/media/v4l2-dev.h           |  1 +
 2 files changed, 22 insertions(+)
diff --git a/drivers/media/v4l2-core/v4l2-dev.c b/drivers/media/v4l2-core/v4l2-dev.c
index f06da6e..9ef675a 100644
--- a/drivers/media/v4l2-core/v4l2-dev.c
+++ b/drivers/media/v4l2-core/v4l2-dev.c
@@ -30,6 +30,7 @@
 #include <media/v4l2-common.h>
 #include <media/v4l2-device.h>
 #include <media/v4l2-ioctl.h>
+#include <media/videobuf2-core.h>
 
 #define VIDEO_NUM_DEVICES	256
 #define VIDEO_NAME              "video4linux"
@@ -261,6 +262,26 @@ void v4l_disable_media_tuner(struct video_device *vdev)
 }
 EXPORT_SYMBOL_GPL(v4l_disable_media_tuner);
 
+/**
+ * v4l_vb2q_enable_media_tuner - Wrapper for v4l_enable_media_tuner()
+ * @q:         videobuf2 queue
+ *
+ * This function is intended to be called from v4l2-core
+ * to enable the media tuner with videobuf2 queue, when
+ * the calling frunction has the videobuf2 queue and doesn't  
	typo: function  
ok thanks
quoted
  
quoted
+ * have the struct video_device associated with the
+ * queue handy as in the case of vb2_core_streamon(). This
+ * function simply calls v4l_enable_media_tuner() passing
+ * in the pointer to struct video_device.  
The hole description seems confusing. I'm not seeing the light
about why this is needed.  
Sorry if the description isn't clear. During videobuf2
work, owner field in struct vb2_queue is changed from
struct v4l2_fh * to void. Prior to this work, I could
call v4l_enable_media_tuner(). 

+               ret = v4l_enable_media_tuner(q->owner->vdev);
+               if (ret)
+                       return ret;

As you can see with the videobuf2, to be able to call
v4l_enable_media_tuner() from vb2_core_streamon(), I have
had to this wrapper to maintain the abstraction introduced
in videobuf2 work.

Hope this helps the need for this wrapper.

It is clearer now. Please improve the description of the patch
on the next version for us to remember ;)

Regards,
Mauro
thanks,
-- Shuah
quoted
  
quoted
+ */
+int v4l_vb2q_enable_media_tuner(struct vb2_queue *q)
+{
+	struct v4l2_fh *fh = q->owner;
+
+	return v4l_enable_media_tuner(fh->vdev);
+}
+EXPORT_SYMBOL_GPL(v4l_vb2q_enable_media_tuner);
+
 /* Priority handling */
 
 static inline bool prio_is_valid(enum v4l2_priority prio)
diff --git a/include/media/v4l2-dev.h b/include/media/v4l2-dev.h
index 68999a3..1948097 100644
--- a/include/media/v4l2-dev.h
+++ b/include/media/v4l2-dev.h
@@ -179,6 +179,7 @@ struct video_device * __must_check video_device_alloc(void);
 
 int v4l_enable_media_tuner(struct video_device *vdev);
 void v4l_disable_media_tuner(struct video_device *vdev);
+int v4l_vb2q_enable_media_tuner(struct vb2_queue *q);  
Documentation?
  
quoted
 
 /* this release function frees the vdev pointer */
 void video_device_release(struct video_device *vdev);  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help