linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 00/15] media: blackfin: bfin_capture enhancements
@ 2015-02-21 18:39 Lad Prabhakar
  2015-02-21 18:39 ` [PATCH v3 01/15] media: blackfin: bfin_capture: drop buf_init() callback Lad Prabhakar
                   ` (15 more replies)
  0 siblings, 16 replies; 28+ messages in thread
From: Lad Prabhakar @ 2015-02-21 18:39 UTC (permalink / raw)
  To: Scott Jiang, Hans Verkuil, adi-buildroot-devel
  Cc: Mauro Carvalho Chehab, LMML, LKML, Lad, Prabhakar

From: "Lad, Prabhakar" <prabhakar.csengg@gmail.com>

This patch series, enhances blackfin capture driver with
vb2 helpers.

Changes for v3:
1: patches unchanged except for patch 8/15 fixing starting of ppi only
   after we have the resources.
2: Rebased on media tree.

v2: http://lkml.iu.edu/hypermail/linux/kernel/1501.2/04655.html

v1: https://lkml.org/lkml/2014/12/20/27

Lad, Prabhakar (15):
  media: blackfin: bfin_capture: drop buf_init() callback
  media: blackfin: bfin_capture: release buffers in case
    start_streaming() call back fails
  media: blackfin: bfin_capture: set min_buffers_needed
  media: blackfin: bfin_capture: improve buf_prepare() callback
  media: blackfin: bfin_capture: improve queue_setup() callback
  media: blackfin: bfin_capture: use vb2_fop_mmap/poll
  media: blackfin: bfin_capture: use v4l2_fh_open and vb2_fop_release
  media: blackfin: bfin_capture: use vb2_ioctl_* helpers
  media: blackfin: bfin_capture: make sure all buffers are returned on
    stop_streaming() callback
  media: blackfin: bfin_capture: return -ENODATA for *std calls
  media: blackfin: bfin_capture: return -ENODATA for *dv_timings calls
  media: blackfin: bfin_capture: add support for vidioc_create_bufs
  media: blackfin: bfin_capture: add support for VB2_DMABUF
  media: blackfin: bfin_capture: add support for VIDIOC_EXPBUF
  media: blackfin: bfin_capture: set v4l2 buffer sequence

 drivers/media/platform/blackfin/bfin_capture.c | 306 ++++++++-----------------
 1 file changed, 94 insertions(+), 212 deletions(-)

-- 
2.1.0


^ permalink raw reply	[flat|nested] 28+ messages in thread

* [PATCH v3 01/15] media: blackfin: bfin_capture: drop buf_init() callback
  2015-02-21 18:39 [PATCH v3 00/15] media: blackfin: bfin_capture enhancements Lad Prabhakar
@ 2015-02-21 18:39 ` Lad Prabhakar
  2015-02-21 18:39 ` [PATCH v3 02/15] media: blackfin: bfin_capture: release buffers in case start_streaming() call back fails Lad Prabhakar
                   ` (14 subsequent siblings)
  15 siblings, 0 replies; 28+ messages in thread
From: Lad Prabhakar @ 2015-02-21 18:39 UTC (permalink / raw)
  To: Scott Jiang, Hans Verkuil, adi-buildroot-devel
  Cc: Mauro Carvalho Chehab, LMML, LKML, Lad, Prabhakar

From: "Lad, Prabhakar" <prabhakar.csengg@gmail.com>

this patch drops the buf_init() callback as init
of buf list is not required.

Signed-off-by: Lad, Prabhakar <prabhakar.csengg@gmail.com>
---
 drivers/media/platform/blackfin/bfin_capture.c | 9 ---------
 1 file changed, 9 deletions(-)

diff --git a/drivers/media/platform/blackfin/bfin_capture.c b/drivers/media/platform/blackfin/bfin_capture.c
index 8f66986..c6d8b95 100644
--- a/drivers/media/platform/blackfin/bfin_capture.c
+++ b/drivers/media/platform/blackfin/bfin_capture.c
@@ -302,14 +302,6 @@ static int bcap_queue_setup(struct vb2_queue *vq,
 	return 0;
 }
 
-static int bcap_buffer_init(struct vb2_buffer *vb)
-{
-	struct bcap_buffer *buf = to_bcap_vb(vb);
-
-	INIT_LIST_HEAD(&buf->list);
-	return 0;
-}
-
 static int bcap_buffer_prepare(struct vb2_buffer *vb)
 {
 	struct bcap_device *bcap_dev = vb2_get_drv_priv(vb->vb2_queue);
@@ -441,7 +433,6 @@ static void bcap_stop_streaming(struct vb2_queue *vq)
 
 static struct vb2_ops bcap_video_qops = {
 	.queue_setup            = bcap_queue_setup,
-	.buf_init               = bcap_buffer_init,
 	.buf_prepare            = bcap_buffer_prepare,
 	.buf_cleanup            = bcap_buffer_cleanup,
 	.buf_queue              = bcap_buffer_queue,
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH v3 02/15] media: blackfin: bfin_capture: release buffers in case start_streaming() call back fails
  2015-02-21 18:39 [PATCH v3 00/15] media: blackfin: bfin_capture enhancements Lad Prabhakar
  2015-02-21 18:39 ` [PATCH v3 01/15] media: blackfin: bfin_capture: drop buf_init() callback Lad Prabhakar
@ 2015-02-21 18:39 ` Lad Prabhakar
  2015-02-21 18:39 ` [PATCH v3 03/15] media: blackfin: bfin_capture: set min_buffers_needed Lad Prabhakar
                   ` (13 subsequent siblings)
  15 siblings, 0 replies; 28+ messages in thread
From: Lad Prabhakar @ 2015-02-21 18:39 UTC (permalink / raw)
  To: Scott Jiang, Hans Verkuil, adi-buildroot-devel
  Cc: Mauro Carvalho Chehab, LMML, LKML, Lad, Prabhakar

From: "Lad, Prabhakar" <prabhakar.csengg@gmail.com>

this patch adds support to release the buffer by calling
vb2_buffer_done(), with state marked as VB2_BUF_STATE_QUEUED
if start_streaming() call back fails.

Signed-off-by: Lad, Prabhakar <prabhakar.csengg@gmail.com>
---
 drivers/media/platform/blackfin/bfin_capture.c | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/drivers/media/platform/blackfin/bfin_capture.c b/drivers/media/platform/blackfin/bfin_capture.c
index c6d8b95..2c720bc 100644
--- a/drivers/media/platform/blackfin/bfin_capture.c
+++ b/drivers/media/platform/blackfin/bfin_capture.c
@@ -345,6 +345,7 @@ static int bcap_start_streaming(struct vb2_queue *vq, unsigned int count)
 {
 	struct bcap_device *bcap_dev = vb2_get_drv_priv(vq);
 	struct ppi_if *ppi = bcap_dev->ppi;
+	struct bcap_buffer *buf, *tmp;
 	struct ppi_params params;
 	int ret;
 
@@ -352,7 +353,7 @@ static int bcap_start_streaming(struct vb2_queue *vq, unsigned int count)
 	ret = v4l2_subdev_call(bcap_dev->sd, video, s_stream, 1);
 	if (ret && (ret != -ENOIOCTLCMD)) {
 		v4l2_err(&bcap_dev->v4l2_dev, "stream on failed in subdev\n");
-		return ret;
+		goto err;
 	}
 
 	/* set ppi params */
@@ -391,7 +392,7 @@ static int bcap_start_streaming(struct vb2_queue *vq, unsigned int count)
 	if (ret < 0) {
 		v4l2_err(&bcap_dev->v4l2_dev,
 				"Error in setting ppi params\n");
-		return ret;
+		goto err;
 	}
 
 	/* attach ppi DMA irq handler */
@@ -399,12 +400,21 @@ static int bcap_start_streaming(struct vb2_queue *vq, unsigned int count)
 	if (ret < 0) {
 		v4l2_err(&bcap_dev->v4l2_dev,
 				"Error in attaching interrupt handler\n");
-		return ret;
+		goto err;
 	}
 
 	reinit_completion(&bcap_dev->comp);
 	bcap_dev->stop = false;
+
 	return 0;
+
+err:
+	list_for_each_entry_safe(buf, tmp, &bcap_dev->dma_queue, list) {
+		list_del(&buf->list);
+		vb2_buffer_done(&buf->vb, VB2_BUF_STATE_QUEUED);
+	}
+
+	return ret;
 }
 
 static void bcap_stop_streaming(struct vb2_queue *vq)
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH v3 03/15] media: blackfin: bfin_capture: set min_buffers_needed
  2015-02-21 18:39 [PATCH v3 00/15] media: blackfin: bfin_capture enhancements Lad Prabhakar
  2015-02-21 18:39 ` [PATCH v3 01/15] media: blackfin: bfin_capture: drop buf_init() callback Lad Prabhakar
  2015-02-21 18:39 ` [PATCH v3 02/15] media: blackfin: bfin_capture: release buffers in case start_streaming() call back fails Lad Prabhakar
@ 2015-02-21 18:39 ` Lad Prabhakar
  2015-02-21 18:39 ` [PATCH v3 04/15] media: blackfin: bfin_capture: improve buf_prepare() callback Lad Prabhakar
                   ` (12 subsequent siblings)
  15 siblings, 0 replies; 28+ messages in thread
From: Lad Prabhakar @ 2015-02-21 18:39 UTC (permalink / raw)
  To: Scott Jiang, Hans Verkuil, adi-buildroot-devel
  Cc: Mauro Carvalho Chehab, LMML, LKML, Lad, Prabhakar

From: "Lad, Prabhakar" <prabhakar.csengg@gmail.com>

this patch sets the min_buffers_needed field of the vb2 queue
so that the vb2 core will make sure start_streaming() callback
is called only when we have minimum buffers queued.

Signed-off-by: Lad, Prabhakar <prabhakar.csengg@gmail.com>
---
 drivers/media/platform/blackfin/bfin_capture.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/media/platform/blackfin/bfin_capture.c b/drivers/media/platform/blackfin/bfin_capture.c
index 2c720bc..332f8c9 100644
--- a/drivers/media/platform/blackfin/bfin_capture.c
+++ b/drivers/media/platform/blackfin/bfin_capture.c
@@ -986,6 +986,7 @@ static int bcap_probe(struct platform_device *pdev)
 	q->mem_ops = &vb2_dma_contig_memops;
 	q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
 	q->lock = &bcap_dev->mutex;
+	q->min_buffers_needed = 1;
 
 	ret = vb2_queue_init(q);
 	if (ret)
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH v3 04/15] media: blackfin: bfin_capture: improve buf_prepare() callback
  2015-02-21 18:39 [PATCH v3 00/15] media: blackfin: bfin_capture enhancements Lad Prabhakar
                   ` (2 preceding siblings ...)
  2015-02-21 18:39 ` [PATCH v3 03/15] media: blackfin: bfin_capture: set min_buffers_needed Lad Prabhakar
@ 2015-02-21 18:39 ` Lad Prabhakar
  2015-03-03 15:21   ` Hans Verkuil
  2015-02-21 18:39 ` [PATCH v3 05/15] media: blackfin: bfin_capture: improve queue_setup() callback Lad Prabhakar
                   ` (11 subsequent siblings)
  15 siblings, 1 reply; 28+ messages in thread
From: Lad Prabhakar @ 2015-02-21 18:39 UTC (permalink / raw)
  To: Scott Jiang, Hans Verkuil, adi-buildroot-devel
  Cc: Mauro Carvalho Chehab, LMML, LKML, Lad, Prabhakar

From: "Lad, Prabhakar" <prabhakar.csengg@gmail.com>

this patch improves the buf_prepare() callback.

Signed-off-by: Lad, Prabhakar <prabhakar.csengg@gmail.com>
---
 drivers/media/platform/blackfin/bfin_capture.c | 12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)

diff --git a/drivers/media/platform/blackfin/bfin_capture.c b/drivers/media/platform/blackfin/bfin_capture.c
index 332f8c9..8f62a84 100644
--- a/drivers/media/platform/blackfin/bfin_capture.c
+++ b/drivers/media/platform/blackfin/bfin_capture.c
@@ -305,16 +305,12 @@ static int bcap_queue_setup(struct vb2_queue *vq,
 static int bcap_buffer_prepare(struct vb2_buffer *vb)
 {
 	struct bcap_device *bcap_dev = vb2_get_drv_priv(vb->vb2_queue);
-	struct bcap_buffer *buf = to_bcap_vb(vb);
-	unsigned long size;
 
-	size = bcap_dev->fmt.sizeimage;
-	if (vb2_plane_size(vb, 0) < size) {
-		v4l2_err(&bcap_dev->v4l2_dev, "buffer too small (%lu < %lu)\n",
-				vb2_plane_size(vb, 0), size);
+	vb2_set_plane_payload(vb, 0, bcap_dev->fmt.sizeimage);
+	if (vb2_get_plane_payload(vb, 0) > vb2_plane_size(vb, 0))
 		return -EINVAL;
-	}
-	vb2_set_plane_payload(&buf->vb, 0, size);
+
+	vb->v4l2_buf.field = bcap_dev->fmt.field;
 
 	return 0;
 }
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH v3 05/15] media: blackfin: bfin_capture: improve queue_setup() callback
  2015-02-21 18:39 [PATCH v3 00/15] media: blackfin: bfin_capture enhancements Lad Prabhakar
                   ` (3 preceding siblings ...)
  2015-02-21 18:39 ` [PATCH v3 04/15] media: blackfin: bfin_capture: improve buf_prepare() callback Lad Prabhakar
@ 2015-02-21 18:39 ` Lad Prabhakar
  2015-03-03 14:13   ` Mauro Carvalho Chehab
  2015-02-21 18:39 ` [PATCH v3 06/15] media: blackfin: bfin_capture: use vb2_fop_mmap/poll Lad Prabhakar
                   ` (10 subsequent siblings)
  15 siblings, 1 reply; 28+ messages in thread
From: Lad Prabhakar @ 2015-02-21 18:39 UTC (permalink / raw)
  To: Scott Jiang, Hans Verkuil, adi-buildroot-devel
  Cc: Mauro Carvalho Chehab, LMML, LKML, Lad, Prabhakar

From: "Lad, Prabhakar" <prabhakar.csengg@gmail.com>

this patch improves the queue_setup() callback.

Signed-off-by: Lad, Prabhakar <prabhakar.csengg@gmail.com>
---
 drivers/media/platform/blackfin/bfin_capture.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/drivers/media/platform/blackfin/bfin_capture.c b/drivers/media/platform/blackfin/bfin_capture.c
index 8f62a84..be0d0a2b 100644
--- a/drivers/media/platform/blackfin/bfin_capture.c
+++ b/drivers/media/platform/blackfin/bfin_capture.c
@@ -44,7 +44,6 @@
 #include <media/blackfin/ppi.h>
 
 #define CAPTURE_DRV_NAME        "bfin_capture"
-#define BCAP_MIN_NUM_BUF        2
 
 struct bcap_format {
 	char *desc;
@@ -292,11 +291,14 @@ static int bcap_queue_setup(struct vb2_queue *vq,
 {
 	struct bcap_device *bcap_dev = vb2_get_drv_priv(vq);
 
-	if (*nbuffers < BCAP_MIN_NUM_BUF)
-		*nbuffers = BCAP_MIN_NUM_BUF;
+	if (fmt && fmt->fmt.pix.sizeimage < bcap_dev->fmt.sizeimage)
+		return -EINVAL;
+
+	if (vq->num_buffers + *nbuffers < 2)
+		*nbuffers = 2;
 
 	*nplanes = 1;
-	sizes[0] = bcap_dev->fmt.sizeimage;
+	sizes[0] = fmt ? fmt->fmt.pix.sizeimage : bcap_dev->fmt.sizeimage;
 	alloc_ctxs[0] = bcap_dev->alloc_ctx;
 
 	return 0;
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH v3 06/15] media: blackfin: bfin_capture: use vb2_fop_mmap/poll
  2015-02-21 18:39 [PATCH v3 00/15] media: blackfin: bfin_capture enhancements Lad Prabhakar
                   ` (4 preceding siblings ...)
  2015-02-21 18:39 ` [PATCH v3 05/15] media: blackfin: bfin_capture: improve queue_setup() callback Lad Prabhakar
@ 2015-02-21 18:39 ` Lad Prabhakar
  2015-03-03 10:14   ` Hans Verkuil
  2015-02-21 18:39 ` [PATCH v3 07/15] media: blackfin: bfin_capture: use v4l2_fh_open and vb2_fop_release Lad Prabhakar
                   ` (9 subsequent siblings)
  15 siblings, 1 reply; 28+ messages in thread
From: Lad Prabhakar @ 2015-02-21 18:39 UTC (permalink / raw)
  To: Scott Jiang, Hans Verkuil, adi-buildroot-devel
  Cc: Mauro Carvalho Chehab, LMML, LKML, Lad, Prabhakar

From: "Lad, Prabhakar" <prabhakar.csengg@gmail.com>

No need to reinvent the wheel. Just use the already existing
functions provided by vb2.

Signed-off-by: Lad, Prabhakar <prabhakar.csengg@gmail.com>
---
 drivers/media/platform/blackfin/bfin_capture.c | 28 +++-----------------------
 1 file changed, 3 insertions(+), 25 deletions(-)

diff --git a/drivers/media/platform/blackfin/bfin_capture.c b/drivers/media/platform/blackfin/bfin_capture.c
index be0d0a2b..ee0e848 100644
--- a/drivers/media/platform/blackfin/bfin_capture.c
+++ b/drivers/media/platform/blackfin/bfin_capture.c
@@ -244,18 +244,6 @@ static int bcap_release(struct file *file)
 	return 0;
 }
 
-static int bcap_mmap(struct file *file, struct vm_area_struct *vma)
-{
-	struct bcap_device *bcap_dev = video_drvdata(file);
-	int ret;
-
-	if (mutex_lock_interruptible(&bcap_dev->mutex))
-		return -ERESTARTSYS;
-	ret = vb2_mmap(&bcap_dev->buffer_queue, vma);
-	mutex_unlock(&bcap_dev->mutex);
-	return ret;
-}
-
 #ifndef CONFIG_MMU
 static unsigned long bcap_get_unmapped_area(struct file *file,
 					    unsigned long addr,
@@ -273,17 +261,6 @@ static unsigned long bcap_get_unmapped_area(struct file *file,
 }
 #endif
 
-static unsigned int bcap_poll(struct file *file, poll_table *wait)
-{
-	struct bcap_device *bcap_dev = video_drvdata(file);
-	unsigned int res;
-
-	mutex_lock(&bcap_dev->mutex);
-	res = vb2_poll(&bcap_dev->buffer_queue, file, wait);
-	mutex_unlock(&bcap_dev->mutex);
-	return res;
-}
-
 static int bcap_queue_setup(struct vb2_queue *vq,
 				const struct v4l2_format *fmt,
 				unsigned int *nbuffers, unsigned int *nplanes,
@@ -896,11 +873,11 @@ static struct v4l2_file_operations bcap_fops = {
 	.open = bcap_open,
 	.release = bcap_release,
 	.unlocked_ioctl = video_ioctl2,
-	.mmap = bcap_mmap,
+	.mmap = vb2_fop_mmap,
 #ifndef CONFIG_MMU
 	.get_unmapped_area = bcap_get_unmapped_area,
 #endif
-	.poll = bcap_poll
+	.poll = vb2_fop_poll
 };
 
 static int bcap_probe(struct platform_device *pdev)
@@ -997,6 +974,7 @@ static int bcap_probe(struct platform_device *pdev)
 	INIT_LIST_HEAD(&bcap_dev->dma_queue);
 
 	vfd->lock = &bcap_dev->mutex;
+	vfd->queue = q;
 
 	/* register video device */
 	ret = video_register_device(bcap_dev->video_dev, VFL_TYPE_GRABBER, -1);
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH v3 07/15] media: blackfin: bfin_capture: use v4l2_fh_open and vb2_fop_release
  2015-02-21 18:39 [PATCH v3 00/15] media: blackfin: bfin_capture enhancements Lad Prabhakar
                   ` (5 preceding siblings ...)
  2015-02-21 18:39 ` [PATCH v3 06/15] media: blackfin: bfin_capture: use vb2_fop_mmap/poll Lad Prabhakar
@ 2015-02-21 18:39 ` Lad Prabhakar
  2015-02-21 18:39 ` [PATCH v3 08/15] media: blackfin: bfin_capture: use vb2_ioctl_* helpers Lad Prabhakar
                   ` (8 subsequent siblings)
  15 siblings, 0 replies; 28+ messages in thread
From: Lad Prabhakar @ 2015-02-21 18:39 UTC (permalink / raw)
  To: Scott Jiang, Hans Verkuil, adi-buildroot-devel
  Cc: Mauro Carvalho Chehab, LMML, LKML, Lad, Prabhakar

From: "Lad, Prabhakar" <prabhakar.csengg@gmail.com>

this patch adds support to use v4l2_fh_open() and vb2_fop_release,
which allows to drop driver specific struct bcap_fh, as this is handled
by core.

Signed-off-by: Lad, Prabhakar <prabhakar.csengg@gmail.com>
---
 drivers/media/platform/blackfin/bfin_capture.c | 79 +-------------------------
 1 file changed, 2 insertions(+), 77 deletions(-)

diff --git a/drivers/media/platform/blackfin/bfin_capture.c b/drivers/media/platform/blackfin/bfin_capture.c
index ee0e848..9b8ad06 100644
--- a/drivers/media/platform/blackfin/bfin_capture.c
+++ b/drivers/media/platform/blackfin/bfin_capture.c
@@ -105,12 +105,6 @@ struct bcap_device {
 	bool stop;
 };
 
-struct bcap_fh {
-	struct v4l2_fh fh;
-	/* indicates whether this file handle is doing IO */
-	bool io_allowed;
-};
-
 static const struct bcap_format bcap_formats[] = {
 	{
 		.desc        = "YCbCr 4:2:2 Interleaved UYVY",
@@ -200,50 +194,6 @@ static void bcap_free_sensor_formats(struct bcap_device *bcap_dev)
 	bcap_dev->sensor_formats = NULL;
 }
 
-static int bcap_open(struct file *file)
-{
-	struct bcap_device *bcap_dev = video_drvdata(file);
-	struct video_device *vfd = bcap_dev->video_dev;
-	struct bcap_fh *bcap_fh;
-
-	if (!bcap_dev->sd) {
-		v4l2_err(&bcap_dev->v4l2_dev, "No sub device registered\n");
-		return -ENODEV;
-	}
-
-	bcap_fh = kzalloc(sizeof(*bcap_fh), GFP_KERNEL);
-	if (!bcap_fh) {
-		v4l2_err(&bcap_dev->v4l2_dev,
-			 "unable to allocate memory for file handle object\n");
-		return -ENOMEM;
-	}
-
-	v4l2_fh_init(&bcap_fh->fh, vfd);
-
-	/* store pointer to v4l2_fh in private_data member of file */
-	file->private_data = &bcap_fh->fh;
-	v4l2_fh_add(&bcap_fh->fh);
-	bcap_fh->io_allowed = false;
-	return 0;
-}
-
-static int bcap_release(struct file *file)
-{
-	struct bcap_device *bcap_dev = video_drvdata(file);
-	struct v4l2_fh *fh = file->private_data;
-	struct bcap_fh *bcap_fh = container_of(fh, struct bcap_fh, fh);
-
-	/* if this instance is doing IO */
-	if (bcap_fh->io_allowed)
-		vb2_queue_release(&bcap_dev->buffer_queue);
-
-	file->private_data = NULL;
-	v4l2_fh_del(&bcap_fh->fh);
-	v4l2_fh_exit(&bcap_fh->fh);
-	kfree(bcap_fh);
-	return 0;
-}
-
 #ifndef CONFIG_MMU
 static unsigned long bcap_get_unmapped_area(struct file *file,
 					    unsigned long addr,
@@ -432,13 +382,6 @@ static int bcap_reqbufs(struct file *file, void *priv,
 {
 	struct bcap_device *bcap_dev = video_drvdata(file);
 	struct vb2_queue *vq = &bcap_dev->buffer_queue;
-	struct v4l2_fh *fh = file->private_data;
-	struct bcap_fh *bcap_fh = container_of(fh, struct bcap_fh, fh);
-
-	if (vb2_is_busy(vq))
-		return -EBUSY;
-
-	bcap_fh->io_allowed = true;
 
 	return vb2_reqbufs(vq, req_buf);
 }
@@ -455,11 +398,6 @@ static int bcap_qbuf(struct file *file, void *priv,
 			struct v4l2_buffer *buf)
 {
 	struct bcap_device *bcap_dev = video_drvdata(file);
-	struct v4l2_fh *fh = file->private_data;
-	struct bcap_fh *bcap_fh = container_of(fh, struct bcap_fh, fh);
-
-	if (!bcap_fh->io_allowed)
-		return -EBUSY;
 
 	return vb2_qbuf(&bcap_dev->buffer_queue, buf);
 }
@@ -468,11 +406,6 @@ static int bcap_dqbuf(struct file *file, void *priv,
 			struct v4l2_buffer *buf)
 {
 	struct bcap_device *bcap_dev = video_drvdata(file);
-	struct v4l2_fh *fh = file->private_data;
-	struct bcap_fh *bcap_fh = container_of(fh, struct bcap_fh, fh);
-
-	if (!bcap_fh->io_allowed)
-		return -EBUSY;
 
 	return vb2_dqbuf(&bcap_dev->buffer_queue,
 				buf, file->f_flags & O_NONBLOCK);
@@ -523,14 +456,10 @@ static int bcap_streamon(struct file *file, void *priv,
 				enum v4l2_buf_type buf_type)
 {
 	struct bcap_device *bcap_dev = video_drvdata(file);
-	struct bcap_fh *fh = file->private_data;
 	struct ppi_if *ppi = bcap_dev->ppi;
 	dma_addr_t addr;
 	int ret;
 
-	if (!fh->io_allowed)
-		return -EBUSY;
-
 	/* call streamon to start streaming in videobuf */
 	ret = vb2_streamon(&bcap_dev->buffer_queue, buf_type);
 	if (ret)
@@ -564,10 +493,6 @@ static int bcap_streamoff(struct file *file, void *priv,
 				enum v4l2_buf_type buf_type)
 {
 	struct bcap_device *bcap_dev = video_drvdata(file);
-	struct bcap_fh *fh = file->private_data;
-
-	if (!fh->io_allowed)
-		return -EBUSY;
 
 	return vb2_streamoff(&bcap_dev->buffer_queue, buf_type);
 }
@@ -870,8 +795,8 @@ static const struct v4l2_ioctl_ops bcap_ioctl_ops = {
 
 static struct v4l2_file_operations bcap_fops = {
 	.owner = THIS_MODULE,
-	.open = bcap_open,
-	.release = bcap_release,
+	.open = v4l2_fh_open,
+	.release = vb2_fop_release,
 	.unlocked_ioctl = video_ioctl2,
 	.mmap = vb2_fop_mmap,
 #ifndef CONFIG_MMU
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH v3 08/15] media: blackfin: bfin_capture: use vb2_ioctl_* helpers
  2015-02-21 18:39 [PATCH v3 00/15] media: blackfin: bfin_capture enhancements Lad Prabhakar
                   ` (6 preceding siblings ...)
  2015-02-21 18:39 ` [PATCH v3 07/15] media: blackfin: bfin_capture: use v4l2_fh_open and vb2_fop_release Lad Prabhakar
@ 2015-02-21 18:39 ` Lad Prabhakar
  2015-02-21 18:39 ` [PATCH v3 09/15] media: blackfin: bfin_capture: make sure all buffers are returned on stop_streaming() callback Lad Prabhakar
                   ` (7 subsequent siblings)
  15 siblings, 0 replies; 28+ messages in thread
From: Lad Prabhakar @ 2015-02-21 18:39 UTC (permalink / raw)
  To: Scott Jiang, Hans Verkuil, adi-buildroot-devel
  Cc: Mauro Carvalho Chehab, LMML, LKML, Lad, Prabhakar

From: "Lad, Prabhakar" <prabhakar.csengg@gmail.com>

this patch adds support to vb2_ioctl_* helpers.

Signed-off-by: Lad, Prabhakar <prabhakar.csengg@gmail.com>
---
 drivers/media/platform/blackfin/bfin_capture.c | 103 +++++--------------------
 1 file changed, 18 insertions(+), 85 deletions(-)

diff --git a/drivers/media/platform/blackfin/bfin_capture.c b/drivers/media/platform/blackfin/bfin_capture.c
index 9b8ad06..012c271 100644
--- a/drivers/media/platform/blackfin/bfin_capture.c
+++ b/drivers/media/platform/blackfin/bfin_capture.c
@@ -272,6 +272,7 @@ static int bcap_start_streaming(struct vb2_queue *vq, unsigned int count)
 	struct ppi_if *ppi = bcap_dev->ppi;
 	struct bcap_buffer *buf, *tmp;
 	struct ppi_params params;
+	dma_addr_t addr;
 	int ret;
 
 	/* enable streamon on the sub device */
@@ -331,6 +332,17 @@ static int bcap_start_streaming(struct vb2_queue *vq, unsigned int count)
 	reinit_completion(&bcap_dev->comp);
 	bcap_dev->stop = false;
 
+	/* get the next frame from the dma queue */
+	bcap_dev->cur_frm = list_entry(bcap_dev->dma_queue.next,
+					struct bcap_buffer, list);
+	/* remove buffer from the dma queue */
+	list_del_init(&bcap_dev->cur_frm->list);
+	addr = vb2_dma_contig_plane_dma_addr(&bcap_dev->cur_frm->vb, 0);
+	/* update DMA address */
+	ppi->ops->update_addr(ppi, (unsigned long)addr);
+	/* enable ppi */
+	ppi->ops->start(ppi);
+
 	return 0;
 
 err:
@@ -377,40 +389,6 @@ static struct vb2_ops bcap_video_qops = {
 	.stop_streaming         = bcap_stop_streaming,
 };
 
-static int bcap_reqbufs(struct file *file, void *priv,
-			struct v4l2_requestbuffers *req_buf)
-{
-	struct bcap_device *bcap_dev = video_drvdata(file);
-	struct vb2_queue *vq = &bcap_dev->buffer_queue;
-
-	return vb2_reqbufs(vq, req_buf);
-}
-
-static int bcap_querybuf(struct file *file, void *priv,
-				struct v4l2_buffer *buf)
-{
-	struct bcap_device *bcap_dev = video_drvdata(file);
-
-	return vb2_querybuf(&bcap_dev->buffer_queue, buf);
-}
-
-static int bcap_qbuf(struct file *file, void *priv,
-			struct v4l2_buffer *buf)
-{
-	struct bcap_device *bcap_dev = video_drvdata(file);
-
-	return vb2_qbuf(&bcap_dev->buffer_queue, buf);
-}
-
-static int bcap_dqbuf(struct file *file, void *priv,
-			struct v4l2_buffer *buf)
-{
-	struct bcap_device *bcap_dev = video_drvdata(file);
-
-	return vb2_dqbuf(&bcap_dev->buffer_queue,
-				buf, file->f_flags & O_NONBLOCK);
-}
-
 static irqreturn_t bcap_isr(int irq, void *dev_id)
 {
 	struct ppi_if *ppi = dev_id;
@@ -452,51 +430,6 @@ static irqreturn_t bcap_isr(int irq, void *dev_id)
 	return IRQ_HANDLED;
 }
 
-static int bcap_streamon(struct file *file, void *priv,
-				enum v4l2_buf_type buf_type)
-{
-	struct bcap_device *bcap_dev = video_drvdata(file);
-	struct ppi_if *ppi = bcap_dev->ppi;
-	dma_addr_t addr;
-	int ret;
-
-	/* call streamon to start streaming in videobuf */
-	ret = vb2_streamon(&bcap_dev->buffer_queue, buf_type);
-	if (ret)
-		return ret;
-
-	/* if dma queue is empty, return error */
-	if (list_empty(&bcap_dev->dma_queue)) {
-		v4l2_err(&bcap_dev->v4l2_dev, "dma queue is empty\n");
-		ret = -EINVAL;
-		goto err;
-	}
-
-	/* get the next frame from the dma queue */
-	bcap_dev->cur_frm = list_entry(bcap_dev->dma_queue.next,
-					struct bcap_buffer, list);
-	/* remove buffer from the dma queue */
-	list_del_init(&bcap_dev->cur_frm->list);
-	addr = vb2_dma_contig_plane_dma_addr(&bcap_dev->cur_frm->vb, 0);
-	/* update DMA address */
-	ppi->ops->update_addr(ppi, (unsigned long)addr);
-	/* enable ppi */
-	ppi->ops->start(ppi);
-
-	return 0;
-err:
-	vb2_streamoff(&bcap_dev->buffer_queue, buf_type);
-	return ret;
-}
-
-static int bcap_streamoff(struct file *file, void *priv,
-				enum v4l2_buf_type buf_type)
-{
-	struct bcap_device *bcap_dev = video_drvdata(file);
-
-	return vb2_streamoff(&bcap_dev->buffer_queue, buf_type);
-}
-
 static int bcap_querystd(struct file *file, void *priv, v4l2_std_id *std)
 {
 	struct bcap_device *bcap_dev = video_drvdata(file);
@@ -782,12 +715,12 @@ static const struct v4l2_ioctl_ops bcap_ioctl_ops = {
 	.vidioc_g_dv_timings     = bcap_g_dv_timings,
 	.vidioc_query_dv_timings = bcap_query_dv_timings,
 	.vidioc_enum_dv_timings  = bcap_enum_dv_timings,
-	.vidioc_reqbufs          = bcap_reqbufs,
-	.vidioc_querybuf         = bcap_querybuf,
-	.vidioc_qbuf             = bcap_qbuf,
-	.vidioc_dqbuf            = bcap_dqbuf,
-	.vidioc_streamon         = bcap_streamon,
-	.vidioc_streamoff        = bcap_streamoff,
+	.vidioc_reqbufs          = vb2_ioctl_reqbufs,
+	.vidioc_querybuf         = vb2_ioctl_querybuf,
+	.vidioc_qbuf             = vb2_ioctl_qbuf,
+	.vidioc_dqbuf            = vb2_ioctl_dqbuf,
+	.vidioc_streamon         = vb2_ioctl_streamon,
+	.vidioc_streamoff        = vb2_ioctl_streamoff,
 	.vidioc_g_parm           = bcap_g_parm,
 	.vidioc_s_parm           = bcap_s_parm,
 	.vidioc_log_status       = bcap_log_status,
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH v3 09/15] media: blackfin: bfin_capture: make sure all buffers are returned on stop_streaming() callback
  2015-02-21 18:39 [PATCH v3 00/15] media: blackfin: bfin_capture enhancements Lad Prabhakar
                   ` (7 preceding siblings ...)
  2015-02-21 18:39 ` [PATCH v3 08/15] media: blackfin: bfin_capture: use vb2_ioctl_* helpers Lad Prabhakar
@ 2015-02-21 18:39 ` Lad Prabhakar
  2015-02-21 18:39 ` [PATCH v3 10/15] media: blackfin: bfin_capture: return -ENODATA for *std calls Lad Prabhakar
                   ` (6 subsequent siblings)
  15 siblings, 0 replies; 28+ messages in thread
From: Lad Prabhakar @ 2015-02-21 18:39 UTC (permalink / raw)
  To: Scott Jiang, Hans Verkuil, adi-buildroot-devel
  Cc: Mauro Carvalho Chehab, LMML, LKML, Lad, Prabhakar

From: "Lad, Prabhakar" <prabhakar.csengg@gmail.com>

In start_streaming() callback the buffer is removed from the
dma_queue list and assigned to cur_frm, this patch makes sure
that is returned to vb2 core with VB2_BUF_STATE_ERROR flag.

Signed-off-by: Lad, Prabhakar <prabhakar.csengg@gmail.com>
---
 drivers/media/platform/blackfin/bfin_capture.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/media/platform/blackfin/bfin_capture.c b/drivers/media/platform/blackfin/bfin_capture.c
index 012c271..3311d59 100644
--- a/drivers/media/platform/blackfin/bfin_capture.c
+++ b/drivers/media/platform/blackfin/bfin_capture.c
@@ -370,6 +370,9 @@ static void bcap_stop_streaming(struct vb2_queue *vq)
 				"stream off failed in subdev\n");
 
 	/* release all active buffers */
+	if (bcap_dev->cur_frm)
+		vb2_buffer_done(&bcap_dev->cur_frm->vb, VB2_BUF_STATE_ERROR);
+
 	while (!list_empty(&bcap_dev->dma_queue)) {
 		bcap_dev->cur_frm = list_entry(bcap_dev->dma_queue.next,
 						struct bcap_buffer, list);
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH v3 10/15] media: blackfin: bfin_capture: return -ENODATA for *std calls
  2015-02-21 18:39 [PATCH v3 00/15] media: blackfin: bfin_capture enhancements Lad Prabhakar
                   ` (8 preceding siblings ...)
  2015-02-21 18:39 ` [PATCH v3 09/15] media: blackfin: bfin_capture: make sure all buffers are returned on stop_streaming() callback Lad Prabhakar
@ 2015-02-21 18:39 ` Lad Prabhakar
  2015-02-21 18:39 ` [PATCH v3 11/15] media: blackfin: bfin_capture: return -ENODATA for *dv_timings calls Lad Prabhakar
                   ` (5 subsequent siblings)
  15 siblings, 0 replies; 28+ messages in thread
From: Lad Prabhakar @ 2015-02-21 18:39 UTC (permalink / raw)
  To: Scott Jiang, Hans Verkuil, adi-buildroot-devel
  Cc: Mauro Carvalho Chehab, LMML, LKML, Lad, Prabhakar

From: "Lad, Prabhakar" <prabhakar.csengg@gmail.com>

this patch adds supports to return -ENODATA to *_std calls
if the selected output does not support it.

Signed-off-by: Lad, Prabhakar <prabhakar.csengg@gmail.com>
---
 drivers/media/platform/blackfin/bfin_capture.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/drivers/media/platform/blackfin/bfin_capture.c b/drivers/media/platform/blackfin/bfin_capture.c
index 3311d59..e7afba9 100644
--- a/drivers/media/platform/blackfin/bfin_capture.c
+++ b/drivers/media/platform/blackfin/bfin_capture.c
@@ -436,6 +436,11 @@ static irqreturn_t bcap_isr(int irq, void *dev_id)
 static int bcap_querystd(struct file *file, void *priv, v4l2_std_id *std)
 {
 	struct bcap_device *bcap_dev = video_drvdata(file);
+	struct v4l2_input input;
+
+	input = bcap_dev->cfg->inputs[bcap_dev->cur_input];
+	if (!(input.capabilities & V4L2_IN_CAP_STD))
+		return -ENODATA;
 
 	return v4l2_subdev_call(bcap_dev->sd, video, querystd, std);
 }
@@ -443,6 +448,11 @@ static int bcap_querystd(struct file *file, void *priv, v4l2_std_id *std)
 static int bcap_g_std(struct file *file, void *priv, v4l2_std_id *std)
 {
 	struct bcap_device *bcap_dev = video_drvdata(file);
+	struct v4l2_input input;
+
+	input = bcap_dev->cfg->inputs[bcap_dev->cur_input];
+	if (!(input.capabilities & V4L2_IN_CAP_STD))
+		return -ENODATA;
 
 	*std = bcap_dev->std;
 	return 0;
@@ -451,8 +461,13 @@ static int bcap_g_std(struct file *file, void *priv, v4l2_std_id *std)
 static int bcap_s_std(struct file *file, void *priv, v4l2_std_id std)
 {
 	struct bcap_device *bcap_dev = video_drvdata(file);
+	struct v4l2_input input;
 	int ret;
 
+	input = bcap_dev->cfg->inputs[bcap_dev->cur_input];
+	if (!(input.capabilities & V4L2_IN_CAP_STD))
+		return -ENODATA;
+
 	if (vb2_is_busy(&bcap_dev->buffer_queue))
 		return -EBUSY;
 
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH v3 11/15] media: blackfin: bfin_capture: return -ENODATA for *dv_timings calls
  2015-02-21 18:39 [PATCH v3 00/15] media: blackfin: bfin_capture enhancements Lad Prabhakar
                   ` (9 preceding siblings ...)
  2015-02-21 18:39 ` [PATCH v3 10/15] media: blackfin: bfin_capture: return -ENODATA for *std calls Lad Prabhakar
@ 2015-02-21 18:39 ` Lad Prabhakar
  2015-02-21 18:39 ` [PATCH v3 12/15] media: blackfin: bfin_capture: add support for vidioc_create_bufs Lad Prabhakar
                   ` (4 subsequent siblings)
  15 siblings, 0 replies; 28+ messages in thread
From: Lad Prabhakar @ 2015-02-21 18:39 UTC (permalink / raw)
  To: Scott Jiang, Hans Verkuil, adi-buildroot-devel
  Cc: Mauro Carvalho Chehab, LMML, LKML, Lad, Prabhakar

From: "Lad, Prabhakar" <prabhakar.csengg@gmail.com>

this patch adds support to return -ENODATA for *dv_timings calls
if the current output does not support it.

Signed-off-by: Lad, Prabhakar <prabhakar.csengg@gmail.com>
---
 drivers/media/platform/blackfin/bfin_capture.c | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/drivers/media/platform/blackfin/bfin_capture.c b/drivers/media/platform/blackfin/bfin_capture.c
index e7afba9..fde8942 100644
--- a/drivers/media/platform/blackfin/bfin_capture.c
+++ b/drivers/media/platform/blackfin/bfin_capture.c
@@ -483,6 +483,11 @@ static int bcap_enum_dv_timings(struct file *file, void *priv,
 				struct v4l2_enum_dv_timings *timings)
 {
 	struct bcap_device *bcap_dev = video_drvdata(file);
+	struct v4l2_input input;
+
+	input = bcap_dev->cfg->inputs[bcap_dev->cur_input];
+	if (!(input.capabilities & V4L2_IN_CAP_DV_TIMINGS))
+		return -ENODATA;
 
 	timings->pad = 0;
 
@@ -494,6 +499,11 @@ static int bcap_query_dv_timings(struct file *file, void *priv,
 				struct v4l2_dv_timings *timings)
 {
 	struct bcap_device *bcap_dev = video_drvdata(file);
+	struct v4l2_input input;
+
+	input = bcap_dev->cfg->inputs[bcap_dev->cur_input];
+	if (!(input.capabilities & V4L2_IN_CAP_DV_TIMINGS))
+		return -ENODATA;
 
 	return v4l2_subdev_call(bcap_dev->sd, video,
 				query_dv_timings, timings);
@@ -503,6 +513,11 @@ static int bcap_g_dv_timings(struct file *file, void *priv,
 				struct v4l2_dv_timings *timings)
 {
 	struct bcap_device *bcap_dev = video_drvdata(file);
+	struct v4l2_input input;
+
+	input = bcap_dev->cfg->inputs[bcap_dev->cur_input];
+	if (!(input.capabilities & V4L2_IN_CAP_DV_TIMINGS))
+		return -ENODATA;
 
 	*timings = bcap_dev->dv_timings;
 	return 0;
@@ -512,7 +527,13 @@ static int bcap_s_dv_timings(struct file *file, void *priv,
 				struct v4l2_dv_timings *timings)
 {
 	struct bcap_device *bcap_dev = video_drvdata(file);
+	struct v4l2_input input;
 	int ret;
+
+	input = bcap_dev->cfg->inputs[bcap_dev->cur_input];
+	if (!(input.capabilities & V4L2_IN_CAP_DV_TIMINGS))
+		return -ENODATA;
+
 	if (vb2_is_busy(&bcap_dev->buffer_queue))
 		return -EBUSY;
 
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH v3 12/15] media: blackfin: bfin_capture: add support for vidioc_create_bufs
  2015-02-21 18:39 [PATCH v3 00/15] media: blackfin: bfin_capture enhancements Lad Prabhakar
                   ` (10 preceding siblings ...)
  2015-02-21 18:39 ` [PATCH v3 11/15] media: blackfin: bfin_capture: return -ENODATA for *dv_timings calls Lad Prabhakar
@ 2015-02-21 18:39 ` Lad Prabhakar
  2015-02-21 18:39 ` [PATCH v3 13/15] media: blackfin: bfin_capture: add support for VB2_DMABUF Lad Prabhakar
                   ` (3 subsequent siblings)
  15 siblings, 0 replies; 28+ messages in thread
From: Lad Prabhakar @ 2015-02-21 18:39 UTC (permalink / raw)
  To: Scott Jiang, Hans Verkuil, adi-buildroot-devel
  Cc: Mauro Carvalho Chehab, LMML, LKML, Lad, Prabhakar

From: "Lad, Prabhakar" <prabhakar.csengg@gmail.com>

this patch adds support for vidioc_create_bufs.

Signed-off-by: Lad, Prabhakar <prabhakar.csengg@gmail.com>
---
 drivers/media/platform/blackfin/bfin_capture.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/media/platform/blackfin/bfin_capture.c b/drivers/media/platform/blackfin/bfin_capture.c
index fde8942..b3f5e63 100644
--- a/drivers/media/platform/blackfin/bfin_capture.c
+++ b/drivers/media/platform/blackfin/bfin_capture.c
@@ -755,6 +755,7 @@ static const struct v4l2_ioctl_ops bcap_ioctl_ops = {
 	.vidioc_query_dv_timings = bcap_query_dv_timings,
 	.vidioc_enum_dv_timings  = bcap_enum_dv_timings,
 	.vidioc_reqbufs          = vb2_ioctl_reqbufs,
+	.vidioc_create_bufs      = vb2_ioctl_create_bufs,
 	.vidioc_querybuf         = vb2_ioctl_querybuf,
 	.vidioc_qbuf             = vb2_ioctl_qbuf,
 	.vidioc_dqbuf            = vb2_ioctl_dqbuf,
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH v3 13/15] media: blackfin: bfin_capture: add support for VB2_DMABUF
  2015-02-21 18:39 [PATCH v3 00/15] media: blackfin: bfin_capture enhancements Lad Prabhakar
                   ` (11 preceding siblings ...)
  2015-02-21 18:39 ` [PATCH v3 12/15] media: blackfin: bfin_capture: add support for vidioc_create_bufs Lad Prabhakar
@ 2015-02-21 18:39 ` Lad Prabhakar
  2015-02-21 18:40 ` [PATCH v3 14/15] media: blackfin: bfin_capture: add support for VIDIOC_EXPBUF Lad Prabhakar
                   ` (2 subsequent siblings)
  15 siblings, 0 replies; 28+ messages in thread
From: Lad Prabhakar @ 2015-02-21 18:39 UTC (permalink / raw)
  To: Scott Jiang, Hans Verkuil, adi-buildroot-devel
  Cc: Mauro Carvalho Chehab, LMML, LKML, Lad, Prabhakar

From: "Lad, Prabhakar" <prabhakar.csengg@gmail.com>

this patch adds support for VB2_DMABUF.

Signed-off-by: Lad, Prabhakar <prabhakar.csengg@gmail.com>
---
 drivers/media/platform/blackfin/bfin_capture.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/media/platform/blackfin/bfin_capture.c b/drivers/media/platform/blackfin/bfin_capture.c
index b3f5e63..4ad3c29 100644
--- a/drivers/media/platform/blackfin/bfin_capture.c
+++ b/drivers/media/platform/blackfin/bfin_capture.c
@@ -852,7 +852,7 @@ static int bcap_probe(struct platform_device *pdev)
 	/* initialize queue */
 	q = &bcap_dev->buffer_queue;
 	q->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
-	q->io_modes = VB2_MMAP;
+	q->io_modes = VB2_MMAP | VB2_DMABUF;
 	q->drv_priv = bcap_dev;
 	q->buf_struct_size = sizeof(struct bcap_buffer);
 	q->ops = &bcap_video_qops;
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH v3 14/15] media: blackfin: bfin_capture: add support for VIDIOC_EXPBUF
  2015-02-21 18:39 [PATCH v3 00/15] media: blackfin: bfin_capture enhancements Lad Prabhakar
                   ` (12 preceding siblings ...)
  2015-02-21 18:39 ` [PATCH v3 13/15] media: blackfin: bfin_capture: add support for VB2_DMABUF Lad Prabhakar
@ 2015-02-21 18:40 ` Lad Prabhakar
  2015-02-21 18:40 ` [PATCH v3 15/15] media: blackfin: bfin_capture: set v4l2 buffer sequence Lad Prabhakar
  2015-03-02  7:57 ` [PATCH v3 00/15] media: blackfin: bfin_capture enhancements Scott Jiang
  15 siblings, 0 replies; 28+ messages in thread
From: Lad Prabhakar @ 2015-02-21 18:40 UTC (permalink / raw)
  To: Scott Jiang, Hans Verkuil, adi-buildroot-devel
  Cc: Mauro Carvalho Chehab, LMML, LKML, Lad, Prabhakar

From: "Lad, Prabhakar" <prabhakar.csengg@gmail.com>

this patch adds support for VIDIOC_EXPBUF.

Signed-off-by: Lad, Prabhakar <prabhakar.csengg@gmail.com>
---
 drivers/media/platform/blackfin/bfin_capture.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/media/platform/blackfin/bfin_capture.c b/drivers/media/platform/blackfin/bfin_capture.c
index 4ad3c29..1fc4dbb1 100644
--- a/drivers/media/platform/blackfin/bfin_capture.c
+++ b/drivers/media/platform/blackfin/bfin_capture.c
@@ -759,6 +759,7 @@ static const struct v4l2_ioctl_ops bcap_ioctl_ops = {
 	.vidioc_querybuf         = vb2_ioctl_querybuf,
 	.vidioc_qbuf             = vb2_ioctl_qbuf,
 	.vidioc_dqbuf            = vb2_ioctl_dqbuf,
+	.vidioc_expbuf           = vb2_ioctl_expbuf,
 	.vidioc_streamon         = vb2_ioctl_streamon,
 	.vidioc_streamoff        = vb2_ioctl_streamoff,
 	.vidioc_g_parm           = bcap_g_parm,
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH v3 15/15] media: blackfin: bfin_capture: set v4l2 buffer sequence
  2015-02-21 18:39 [PATCH v3 00/15] media: blackfin: bfin_capture enhancements Lad Prabhakar
                   ` (13 preceding siblings ...)
  2015-02-21 18:40 ` [PATCH v3 14/15] media: blackfin: bfin_capture: add support for VIDIOC_EXPBUF Lad Prabhakar
@ 2015-02-21 18:40 ` Lad Prabhakar
  2015-03-02  7:57 ` [PATCH v3 00/15] media: blackfin: bfin_capture enhancements Scott Jiang
  15 siblings, 0 replies; 28+ messages in thread
From: Lad Prabhakar @ 2015-02-21 18:40 UTC (permalink / raw)
  To: Scott Jiang, Hans Verkuil, adi-buildroot-devel
  Cc: Mauro Carvalho Chehab, LMML, LKML, Lad, Prabhakar

From: "Lad, Prabhakar" <prabhakar.csengg@gmail.com>

this patch adds support to set the v4l2 buffer sequence.

Signed-off-by: Lad, Prabhakar <prabhakar.csengg@gmail.com>
---
 drivers/media/platform/blackfin/bfin_capture.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/media/platform/blackfin/bfin_capture.c b/drivers/media/platform/blackfin/bfin_capture.c
index 1fc4dbb1..46a8cd3 100644
--- a/drivers/media/platform/blackfin/bfin_capture.c
+++ b/drivers/media/platform/blackfin/bfin_capture.c
@@ -103,6 +103,8 @@ struct bcap_device {
 	struct completion comp;
 	/* prepare to stop */
 	bool stop;
+	/* vb2 buffer sequence counter */
+	unsigned sequence;
 };
 
 static const struct bcap_format bcap_formats[] = {
@@ -329,6 +331,8 @@ static int bcap_start_streaming(struct vb2_queue *vq, unsigned int count)
 		goto err;
 	}
 
+	bcap_dev->sequence = 0;
+
 	reinit_completion(&bcap_dev->comp);
 	bcap_dev->stop = false;
 
@@ -407,6 +411,7 @@ static irqreturn_t bcap_isr(int irq, void *dev_id)
 			vb2_buffer_done(vb, VB2_BUF_STATE_ERROR);
 			ppi->err = false;
 		} else {
+			vb->v4l2_buf.sequence = bcap_dev->sequence++;
 			vb2_buffer_done(vb, VB2_BUF_STATE_DONE);
 		}
 		bcap_dev->cur_frm = list_entry(bcap_dev->dma_queue.next,
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 28+ messages in thread

* Re: [PATCH v3 00/15] media: blackfin: bfin_capture enhancements
  2015-02-21 18:39 [PATCH v3 00/15] media: blackfin: bfin_capture enhancements Lad Prabhakar
                   ` (14 preceding siblings ...)
  2015-02-21 18:40 ` [PATCH v3 15/15] media: blackfin: bfin_capture: set v4l2 buffer sequence Lad Prabhakar
@ 2015-03-02  7:57 ` Scott Jiang
  2015-03-03  8:49   ` Hans Verkuil
  15 siblings, 1 reply; 28+ messages in thread
From: Scott Jiang @ 2015-03-02  7:57 UTC (permalink / raw)
  To: Lad Prabhakar
  Cc: Hans Verkuil, adi-buildroot-devel, Mauro Carvalho Chehab, LMML, LKML

Hi Lad and Hans,

2015-02-22 2:39 GMT+08:00 Lad Prabhakar <prabhakar.csengg@gmail.com>:
> From: "Lad, Prabhakar" <prabhakar.csengg@gmail.com>
>
> This patch series, enhances blackfin capture driver with
> vb2 helpers.
>
> Changes for v3:
> 1: patches unchanged except for patch 8/15 fixing starting of ppi only
>    after we have the resources.
> 2: Rebased on media tree.
>
> v2: http://lkml.iu.edu/hypermail/linux/kernel/1501.2/04655.html
>
> v1: https://lkml.org/lkml/2014/12/20/27
>
> Lad, Prabhakar (15):
>   media: blackfin: bfin_capture: drop buf_init() callback
>   media: blackfin: bfin_capture: release buffers in case
>     start_streaming() call back fails
>   media: blackfin: bfin_capture: set min_buffers_needed
>   media: blackfin: bfin_capture: improve buf_prepare() callback
>   media: blackfin: bfin_capture: improve queue_setup() callback
>   media: blackfin: bfin_capture: use vb2_fop_mmap/poll
>   media: blackfin: bfin_capture: use v4l2_fh_open and vb2_fop_release
>   media: blackfin: bfin_capture: use vb2_ioctl_* helpers
>   media: blackfin: bfin_capture: make sure all buffers are returned on
>     stop_streaming() callback
>   media: blackfin: bfin_capture: return -ENODATA for *std calls
>   media: blackfin: bfin_capture: return -ENODATA for *dv_timings calls
>   media: blackfin: bfin_capture: add support for vidioc_create_bufs
>   media: blackfin: bfin_capture: add support for VB2_DMABUF
>   media: blackfin: bfin_capture: add support for VIDIOC_EXPBUF
>   media: blackfin: bfin_capture: set v4l2 buffer sequence
>
>  drivers/media/platform/blackfin/bfin_capture.c | 306 ++++++++-----------------
>  1 file changed, 94 insertions(+), 212 deletions(-)
>
> --

For all these patches,
Acked-by: Scott Jiang <scott.jiang.linux@gmail.com>
Tested-by: Scott Jiang <scott.jiang.linux@gmail.com>

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH v3 00/15] media: blackfin: bfin_capture enhancements
  2015-03-02  7:57 ` [PATCH v3 00/15] media: blackfin: bfin_capture enhancements Scott Jiang
@ 2015-03-03  8:49   ` Hans Verkuil
  2015-03-03  9:30     ` Lad, Prabhakar
  0 siblings, 1 reply; 28+ messages in thread
From: Hans Verkuil @ 2015-03-03  8:49 UTC (permalink / raw)
  To: Scott Jiang, Lad Prabhakar
  Cc: adi-buildroot-devel, Mauro Carvalho Chehab, LMML, LKML

On 03/02/2015 08:57 AM, Scott Jiang wrote:
> Hi Lad and Hans,
> 
> 2015-02-22 2:39 GMT+08:00 Lad Prabhakar <prabhakar.csengg@gmail.com>:
>> From: "Lad, Prabhakar" <prabhakar.csengg@gmail.com>
>>
>> This patch series, enhances blackfin capture driver with
>> vb2 helpers.
>>
>> Changes for v3:
>> 1: patches unchanged except for patch 8/15 fixing starting of ppi only
>>    after we have the resources.
>> 2: Rebased on media tree.
>>
>> v2: http://lkml.iu.edu/hypermail/linux/kernel/1501.2/04655.html
>>
>> v1: https://lkml.org/lkml/2014/12/20/27
>>
>> Lad, Prabhakar (15):
>>   media: blackfin: bfin_capture: drop buf_init() callback
>>   media: blackfin: bfin_capture: release buffers in case
>>     start_streaming() call back fails
>>   media: blackfin: bfin_capture: set min_buffers_needed
>>   media: blackfin: bfin_capture: improve buf_prepare() callback
>>   media: blackfin: bfin_capture: improve queue_setup() callback
>>   media: blackfin: bfin_capture: use vb2_fop_mmap/poll
>>   media: blackfin: bfin_capture: use v4l2_fh_open and vb2_fop_release
>>   media: blackfin: bfin_capture: use vb2_ioctl_* helpers
>>   media: blackfin: bfin_capture: make sure all buffers are returned on
>>     stop_streaming() callback
>>   media: blackfin: bfin_capture: return -ENODATA for *std calls
>>   media: blackfin: bfin_capture: return -ENODATA for *dv_timings calls
>>   media: blackfin: bfin_capture: add support for vidioc_create_bufs
>>   media: blackfin: bfin_capture: add support for VB2_DMABUF
>>   media: blackfin: bfin_capture: add support for VIDIOC_EXPBUF
>>   media: blackfin: bfin_capture: set v4l2 buffer sequence
>>
>>  drivers/media/platform/blackfin/bfin_capture.c | 306 ++++++++-----------------
>>  1 file changed, 94 insertions(+), 212 deletions(-)
>>
>> --
> 
> For all these patches,
> Acked-by: Scott Jiang <scott.jiang.linux@gmail.com>
> Tested-by: Scott Jiang <scott.jiang.linux@gmail.com>

Thanks!

Is it possible for you to run 'v4l2-compliance -s' with this driver and
report the results? I'd be interested in that.

Regards,

	Hans

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH v3 00/15] media: blackfin: bfin_capture enhancements
  2015-03-03  8:49   ` Hans Verkuil
@ 2015-03-03  9:30     ` Lad, Prabhakar
  2015-03-03  9:39       ` Hans Verkuil
  0 siblings, 1 reply; 28+ messages in thread
From: Lad, Prabhakar @ 2015-03-03  9:30 UTC (permalink / raw)
  To: Hans Verkuil
  Cc: Scott Jiang, adi-buildroot-devel, Mauro Carvalho Chehab, LMML, LKML

Hi Hans,

On Tue, Mar 3, 2015 at 8:49 AM, Hans Verkuil <hverkuil@xs4all.nl> wrote:
> On 03/02/2015 08:57 AM, Scott Jiang wrote:
>> Hi Lad and Hans,
>>
>> 2015-02-22 2:39 GMT+08:00 Lad Prabhakar <prabhakar.csengg@gmail.com>:
>>> From: "Lad, Prabhakar" <prabhakar.csengg@gmail.com>
>>>
>>> This patch series, enhances blackfin capture driver with
>>> vb2 helpers.
>>>
>>> Changes for v3:
>>> 1: patches unchanged except for patch 8/15 fixing starting of ppi only
>>>    after we have the resources.
>>> 2: Rebased on media tree.
>>>
>>> v2: http://lkml.iu.edu/hypermail/linux/kernel/1501.2/04655.html
>>>
>>> v1: https://lkml.org/lkml/2014/12/20/27
>>>
>>> Lad, Prabhakar (15):
>>>   media: blackfin: bfin_capture: drop buf_init() callback
>>>   media: blackfin: bfin_capture: release buffers in case
>>>     start_streaming() call back fails
>>>   media: blackfin: bfin_capture: set min_buffers_needed
>>>   media: blackfin: bfin_capture: improve buf_prepare() callback
>>>   media: blackfin: bfin_capture: improve queue_setup() callback
>>>   media: blackfin: bfin_capture: use vb2_fop_mmap/poll
>>>   media: blackfin: bfin_capture: use v4l2_fh_open and vb2_fop_release
>>>   media: blackfin: bfin_capture: use vb2_ioctl_* helpers
>>>   media: blackfin: bfin_capture: make sure all buffers are returned on
>>>     stop_streaming() callback
>>>   media: blackfin: bfin_capture: return -ENODATA for *std calls
>>>   media: blackfin: bfin_capture: return -ENODATA for *dv_timings calls
>>>   media: blackfin: bfin_capture: add support for vidioc_create_bufs
>>>   media: blackfin: bfin_capture: add support for VB2_DMABUF
>>>   media: blackfin: bfin_capture: add support for VIDIOC_EXPBUF
>>>   media: blackfin: bfin_capture: set v4l2 buffer sequence
>>>
>>>  drivers/media/platform/blackfin/bfin_capture.c | 306 ++++++++-----------------
>>>  1 file changed, 94 insertions(+), 212 deletions(-)
>>>
>>> --
>>
>> For all these patches,
>> Acked-by: Scott Jiang <scott.jiang.linux@gmail.com>
>> Tested-by: Scott Jiang <scott.jiang.linux@gmail.com>
>
> Thanks!
>
> Is it possible for you to run 'v4l2-compliance -s' with this driver and
> report the results? I'd be interested in that.
>
Fyi..
v4l2-utils can't be compiled under uClibc.

Regards,
--Prabhakar Lad

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH v3 00/15] media: blackfin: bfin_capture enhancements
  2015-03-03  9:30     ` Lad, Prabhakar
@ 2015-03-03  9:39       ` Hans Verkuil
  2015-03-03  9:43         ` Lad, Prabhakar
  0 siblings, 1 reply; 28+ messages in thread
From: Hans Verkuil @ 2015-03-03  9:39 UTC (permalink / raw)
  To: Lad, Prabhakar
  Cc: Scott Jiang, adi-buildroot-devel, Mauro Carvalho Chehab, LMML, LKML

On 03/03/2015 10:30 AM, Lad, Prabhakar wrote:
> Hi Hans,
> 
> On Tue, Mar 3, 2015 at 8:49 AM, Hans Verkuil <hverkuil@xs4all.nl> wrote:
>> On 03/02/2015 08:57 AM, Scott Jiang wrote:
>>> Hi Lad and Hans,
>>>
>>> 2015-02-22 2:39 GMT+08:00 Lad Prabhakar <prabhakar.csengg@gmail.com>:
>>>> From: "Lad, Prabhakar" <prabhakar.csengg@gmail.com>
>>>>
>>>> This patch series, enhances blackfin capture driver with
>>>> vb2 helpers.
>>>>
>>>> Changes for v3:
>>>> 1: patches unchanged except for patch 8/15 fixing starting of ppi only
>>>>    after we have the resources.
>>>> 2: Rebased on media tree.
>>>>
>>>> v2: http://lkml.iu.edu/hypermail/linux/kernel/1501.2/04655.html
>>>>
>>>> v1: https://lkml.org/lkml/2014/12/20/27
>>>>
>>>> Lad, Prabhakar (15):
>>>>   media: blackfin: bfin_capture: drop buf_init() callback
>>>>   media: blackfin: bfin_capture: release buffers in case
>>>>     start_streaming() call back fails
>>>>   media: blackfin: bfin_capture: set min_buffers_needed
>>>>   media: blackfin: bfin_capture: improve buf_prepare() callback
>>>>   media: blackfin: bfin_capture: improve queue_setup() callback
>>>>   media: blackfin: bfin_capture: use vb2_fop_mmap/poll
>>>>   media: blackfin: bfin_capture: use v4l2_fh_open and vb2_fop_release
>>>>   media: blackfin: bfin_capture: use vb2_ioctl_* helpers
>>>>   media: blackfin: bfin_capture: make sure all buffers are returned on
>>>>     stop_streaming() callback
>>>>   media: blackfin: bfin_capture: return -ENODATA for *std calls
>>>>   media: blackfin: bfin_capture: return -ENODATA for *dv_timings calls
>>>>   media: blackfin: bfin_capture: add support for vidioc_create_bufs
>>>>   media: blackfin: bfin_capture: add support for VB2_DMABUF
>>>>   media: blackfin: bfin_capture: add support for VIDIOC_EXPBUF
>>>>   media: blackfin: bfin_capture: set v4l2 buffer sequence
>>>>
>>>>  drivers/media/platform/blackfin/bfin_capture.c | 306 ++++++++-----------------
>>>>  1 file changed, 94 insertions(+), 212 deletions(-)
>>>>
>>>> --
>>>
>>> For all these patches,
>>> Acked-by: Scott Jiang <scott.jiang.linux@gmail.com>
>>> Tested-by: Scott Jiang <scott.jiang.linux@gmail.com>
>>
>> Thanks!
>>
>> Is it possible for you to run 'v4l2-compliance -s' with this driver and
>> report the results? I'd be interested in that.
>>
> Fyi..
> v4l2-utils can't be compiled under uClibc.

Do you know what exactly fails? Is it possible to manually compile v4l2-compliance?

I.e., try this:

cd utils/v4l2-compliance
cat *.cpp >x.cpp
g++ -o v4l2-compliance x.cpp -I . -I ../../include/ -DNO_LIBV4L2

I've never used uclibc, so I don't know what the limitations are.

Regards,

	Hans

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH v3 00/15] media: blackfin: bfin_capture enhancements
  2015-03-03  9:39       ` Hans Verkuil
@ 2015-03-03  9:43         ` Lad, Prabhakar
  2015-03-05  9:44           ` Scott Jiang
  0 siblings, 1 reply; 28+ messages in thread
From: Lad, Prabhakar @ 2015-03-03  9:43 UTC (permalink / raw)
  To: Hans Verkuil
  Cc: Scott Jiang, adi-buildroot-devel, Mauro Carvalho Chehab, LMML, LKML

Hi Hans,

On Tue, Mar 3, 2015 at 9:39 AM, Hans Verkuil <hverkuil@xs4all.nl> wrote:
> On 03/03/2015 10:30 AM, Lad, Prabhakar wrote:
>> Hi Hans,
>>
>> On Tue, Mar 3, 2015 at 8:49 AM, Hans Verkuil <hverkuil@xs4all.nl> wrote:
>>> On 03/02/2015 08:57 AM, Scott Jiang wrote:
>>>> Hi Lad and Hans,
>>>>
>>>> 2015-02-22 2:39 GMT+08:00 Lad Prabhakar <prabhakar.csengg@gmail.com>:
>>>>> From: "Lad, Prabhakar" <prabhakar.csengg@gmail.com>
>>>>>
>>>>> This patch series, enhances blackfin capture driver with
>>>>> vb2 helpers.
>>>>>
>>>>> Changes for v3:
>>>>> 1: patches unchanged except for patch 8/15 fixing starting of ppi only
>>>>>    after we have the resources.
>>>>> 2: Rebased on media tree.
>>>>>
>>>>> v2: http://lkml.iu.edu/hypermail/linux/kernel/1501.2/04655.html
>>>>>
>>>>> v1: https://lkml.org/lkml/2014/12/20/27
>>>>>
>>>>> Lad, Prabhakar (15):
>>>>>   media: blackfin: bfin_capture: drop buf_init() callback
>>>>>   media: blackfin: bfin_capture: release buffers in case
>>>>>     start_streaming() call back fails
>>>>>   media: blackfin: bfin_capture: set min_buffers_needed
>>>>>   media: blackfin: bfin_capture: improve buf_prepare() callback
>>>>>   media: blackfin: bfin_capture: improve queue_setup() callback
>>>>>   media: blackfin: bfin_capture: use vb2_fop_mmap/poll
>>>>>   media: blackfin: bfin_capture: use v4l2_fh_open and vb2_fop_release
>>>>>   media: blackfin: bfin_capture: use vb2_ioctl_* helpers
>>>>>   media: blackfin: bfin_capture: make sure all buffers are returned on
>>>>>     stop_streaming() callback
>>>>>   media: blackfin: bfin_capture: return -ENODATA for *std calls
>>>>>   media: blackfin: bfin_capture: return -ENODATA for *dv_timings calls
>>>>>   media: blackfin: bfin_capture: add support for vidioc_create_bufs
>>>>>   media: blackfin: bfin_capture: add support for VB2_DMABUF
>>>>>   media: blackfin: bfin_capture: add support for VIDIOC_EXPBUF
>>>>>   media: blackfin: bfin_capture: set v4l2 buffer sequence
>>>>>
>>>>>  drivers/media/platform/blackfin/bfin_capture.c | 306 ++++++++-----------------
>>>>>  1 file changed, 94 insertions(+), 212 deletions(-)
>>>>>
>>>>> --
>>>>
>>>> For all these patches,
>>>> Acked-by: Scott Jiang <scott.jiang.linux@gmail.com>
>>>> Tested-by: Scott Jiang <scott.jiang.linux@gmail.com>
>>>
>>> Thanks!
>>>
>>> Is it possible for you to run 'v4l2-compliance -s' with this driver and
>>> report the results? I'd be interested in that.
>>>
>> Fyi..
>> v4l2-utils can't be compiled under uClibc.
>
> Do you know what exactly fails? Is it possible to manually compile v4l2-compliance?
>
> I.e., try this:
>
> cd utils/v4l2-compliance
> cat *.cpp >x.cpp
> g++ -o v4l2-compliance x.cpp -I . -I ../../include/ -DNO_LIBV4L2
>
> I've never used uclibc, so I don't know what the limitations are.
>
Not sure what exactly fails, I haven’t tried compiling it, that was a
response from Scott for v2 series.

Thanks,
--Prabhakar Lad

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH v3 06/15] media: blackfin: bfin_capture: use vb2_fop_mmap/poll
  2015-02-21 18:39 ` [PATCH v3 06/15] media: blackfin: bfin_capture: use vb2_fop_mmap/poll Lad Prabhakar
@ 2015-03-03 10:14   ` Hans Verkuil
  0 siblings, 0 replies; 28+ messages in thread
From: Hans Verkuil @ 2015-03-03 10:14 UTC (permalink / raw)
  To: Lad Prabhakar, Scott Jiang, adi-buildroot-devel
  Cc: Mauro Carvalho Chehab, LMML, LKML

On 02/21/2015 07:39 PM, Lad Prabhakar wrote:
> From: "Lad, Prabhakar" <prabhakar.csengg@gmail.com>
> 
> No need to reinvent the wheel. Just use the already existing
> functions provided by vb2.
> 
> Signed-off-by: Lad, Prabhakar <prabhakar.csengg@gmail.com>
> ---
>  drivers/media/platform/blackfin/bfin_capture.c | 28 +++-----------------------
>  1 file changed, 3 insertions(+), 25 deletions(-)
> 
> diff --git a/drivers/media/platform/blackfin/bfin_capture.c b/drivers/media/platform/blackfin/bfin_capture.c
> index be0d0a2b..ee0e848 100644
> --- a/drivers/media/platform/blackfin/bfin_capture.c
> +++ b/drivers/media/platform/blackfin/bfin_capture.c
> @@ -244,18 +244,6 @@ static int bcap_release(struct file *file)
>  	return 0;
>  }
>  
> -static int bcap_mmap(struct file *file, struct vm_area_struct *vma)
> -{
> -	struct bcap_device *bcap_dev = video_drvdata(file);
> -	int ret;
> -
> -	if (mutex_lock_interruptible(&bcap_dev->mutex))
> -		return -ERESTARTSYS;
> -	ret = vb2_mmap(&bcap_dev->buffer_queue, vma);
> -	mutex_unlock(&bcap_dev->mutex);
> -	return ret;
> -}
> -
>  #ifndef CONFIG_MMU
>  static unsigned long bcap_get_unmapped_area(struct file *file,
>  					    unsigned long addr,
> @@ -273,17 +261,6 @@ static unsigned long bcap_get_unmapped_area(struct file *file,

This can also be replaced by vb2_fop_get_unmapped_area().

Patch is welcome :-)

Regards,

	Hans

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH v3 05/15] media: blackfin: bfin_capture: improve queue_setup() callback
  2015-02-21 18:39 ` [PATCH v3 05/15] media: blackfin: bfin_capture: improve queue_setup() callback Lad Prabhakar
@ 2015-03-03 14:13   ` Mauro Carvalho Chehab
  0 siblings, 0 replies; 28+ messages in thread
From: Mauro Carvalho Chehab @ 2015-03-03 14:13 UTC (permalink / raw)
  To: Lad Prabhakar; +Cc: Scott Jiang, Hans Verkuil, adi-buildroot-devel, LMML, LKML

Lad,


Em Sat, 21 Feb 2015 18:39:51 +0000
Lad Prabhakar <prabhakar.csengg@gmail.com> escreveu:

> From: "Lad, Prabhakar" <prabhakar.csengg@gmail.com>
> 
> this patch improves the queue_setup() callback.

Please improve your comments. The above description doesn't tell
anything that it wasn't said before at the patch subject.

It "improves" how? Why?

Please fix the comments and resubmit this patch series.

Thanks,
Mauro

> 
> Signed-off-by: Lad, Prabhakar <prabhakar.csengg@gmail.com>
> ---
>  drivers/media/platform/blackfin/bfin_capture.c | 10 ++++++----
>  1 file changed, 6 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/media/platform/blackfin/bfin_capture.c b/drivers/media/platform/blackfin/bfin_capture.c
> index 8f62a84..be0d0a2b 100644
> --- a/drivers/media/platform/blackfin/bfin_capture.c
> +++ b/drivers/media/platform/blackfin/bfin_capture.c
> @@ -44,7 +44,6 @@
>  #include <media/blackfin/ppi.h>
>  
>  #define CAPTURE_DRV_NAME        "bfin_capture"
> -#define BCAP_MIN_NUM_BUF        2
>  
>  struct bcap_format {
>  	char *desc;
> @@ -292,11 +291,14 @@ static int bcap_queue_setup(struct vb2_queue *vq,
>  {
>  	struct bcap_device *bcap_dev = vb2_get_drv_priv(vq);
>  
> -	if (*nbuffers < BCAP_MIN_NUM_BUF)
> -		*nbuffers = BCAP_MIN_NUM_BUF;
> +	if (fmt && fmt->fmt.pix.sizeimage < bcap_dev->fmt.sizeimage)
> +		return -EINVAL;
> +
> +	if (vq->num_buffers + *nbuffers < 2)
> +		*nbuffers = 2;
>  
>  	*nplanes = 1;
> -	sizes[0] = bcap_dev->fmt.sizeimage;
> +	sizes[0] = fmt ? fmt->fmt.pix.sizeimage : bcap_dev->fmt.sizeimage;
>  	alloc_ctxs[0] = bcap_dev->alloc_ctx;
>  
>  	return 0;

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH v3 04/15] media: blackfin: bfin_capture: improve buf_prepare() callback
  2015-02-21 18:39 ` [PATCH v3 04/15] media: blackfin: bfin_capture: improve buf_prepare() callback Lad Prabhakar
@ 2015-03-03 15:21   ` Hans Verkuil
  0 siblings, 0 replies; 28+ messages in thread
From: Hans Verkuil @ 2015-03-03 15:21 UTC (permalink / raw)
  To: Lad Prabhakar, Scott Jiang, adi-buildroot-devel
  Cc: Mauro Carvalho Chehab, LMML, LKML

On 02/21/2015 07:39 PM, Lad Prabhakar wrote:
> From: "Lad, Prabhakar" <prabhakar.csengg@gmail.com>
> 
> this patch improves the buf_prepare() callback.
> 
> Signed-off-by: Lad, Prabhakar <prabhakar.csengg@gmail.com>
> ---
>  drivers/media/platform/blackfin/bfin_capture.c | 12 ++++--------
>  1 file changed, 4 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/media/platform/blackfin/bfin_capture.c b/drivers/media/platform/blackfin/bfin_capture.c
> index 332f8c9..8f62a84 100644
> --- a/drivers/media/platform/blackfin/bfin_capture.c
> +++ b/drivers/media/platform/blackfin/bfin_capture.c
> @@ -305,16 +305,12 @@ static int bcap_queue_setup(struct vb2_queue *vq,
>  static int bcap_buffer_prepare(struct vb2_buffer *vb)
>  {
>  	struct bcap_device *bcap_dev = vb2_get_drv_priv(vb->vb2_queue);
> -	struct bcap_buffer *buf = to_bcap_vb(vb);
> -	unsigned long size;
>  
> -	size = bcap_dev->fmt.sizeimage;
> -	if (vb2_plane_size(vb, 0) < size) {
> -		v4l2_err(&bcap_dev->v4l2_dev, "buffer too small (%lu < %lu)\n",
> -				vb2_plane_size(vb, 0), size);

I would keep this error. Since you need to update patches 4 & 5 anyway to
improve the commit message, it's probably good to reinstate this.

Regards,

	Hans

> +	vb2_set_plane_payload(vb, 0, bcap_dev->fmt.sizeimage);
> +	if (vb2_get_plane_payload(vb, 0) > vb2_plane_size(vb, 0))
>  		return -EINVAL;
> -	}
> -	vb2_set_plane_payload(&buf->vb, 0, size);
> +
> +	vb->v4l2_buf.field = bcap_dev->fmt.field;
>  
>  	return 0;
>  }
> 


^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH v3 00/15] media: blackfin: bfin_capture enhancements
  2015-03-03  9:43         ` Lad, Prabhakar
@ 2015-03-05  9:44           ` Scott Jiang
  2015-03-05 10:26             ` Hans Verkuil
  0 siblings, 1 reply; 28+ messages in thread
From: Scott Jiang @ 2015-03-05  9:44 UTC (permalink / raw)
  To: Lad, Prabhakar
  Cc: Hans Verkuil, adi-buildroot-devel, Mauro Carvalho Chehab, LMML, LKML

Hi Hans,

>
> On Tue, Mar 3, 2015 at 9:39 AM, Hans Verkuil <hverkuil@xs4all.nl> wrote:
>> On 03/03/2015 10:30 AM, Lad, Prabhakar wrote:
>>> Hi Hans,
>>>
>>> On Tue, Mar 3, 2015 at 8:49 AM, Hans Verkuil <hverkuil@xs4all.nl> wrote:
>>>> On 03/02/2015 08:57 AM, Scott Jiang wrote:
>>>>> Hi Lad and Hans,
>>>>>
>>>>> 2015-02-22 2:39 GMT+08:00 Lad Prabhakar <prabhakar.csengg@gmail.com>:
>>>>>> From: "Lad, Prabhakar" <prabhakar.csengg@gmail.com>
>>>>>>
>>>>>> This patch series, enhances blackfin capture driver with
>>>>>> vb2 helpers.
>>>>>>
>>>>>> Changes for v3:
>>>>>> 1: patches unchanged except for patch 8/15 fixing starting of ppi only
>>>>>>    after we have the resources.
>>>>>> 2: Rebased on media tree.
>>>>>>
>>>>>> v2: http://lkml.iu.edu/hypermail/linux/kernel/1501.2/04655.html
>>>>>>
>>>>>> v1: https://lkml.org/lkml/2014/12/20/27
>>>>>>
>>>>>> Lad, Prabhakar (15):
>>>>>>   media: blackfin: bfin_capture: drop buf_init() callback
>>>>>>   media: blackfin: bfin_capture: release buffers in case
>>>>>>     start_streaming() call back fails
>>>>>>   media: blackfin: bfin_capture: set min_buffers_needed
>>>>>>   media: blackfin: bfin_capture: improve buf_prepare() callback
>>>>>>   media: blackfin: bfin_capture: improve queue_setup() callback
>>>>>>   media: blackfin: bfin_capture: use vb2_fop_mmap/poll
>>>>>>   media: blackfin: bfin_capture: use v4l2_fh_open and vb2_fop_release
>>>>>>   media: blackfin: bfin_capture: use vb2_ioctl_* helpers
>>>>>>   media: blackfin: bfin_capture: make sure all buffers are returned on
>>>>>>     stop_streaming() callback
>>>>>>   media: blackfin: bfin_capture: return -ENODATA for *std calls
>>>>>>   media: blackfin: bfin_capture: return -ENODATA for *dv_timings calls
>>>>>>   media: blackfin: bfin_capture: add support for vidioc_create_bufs
>>>>>>   media: blackfin: bfin_capture: add support for VB2_DMABUF
>>>>>>   media: blackfin: bfin_capture: add support for VIDIOC_EXPBUF
>>>>>>   media: blackfin: bfin_capture: set v4l2 buffer sequence
>>>>>>
>>>>>>  drivers/media/platform/blackfin/bfin_capture.c | 306 ++++++++-----------------
>>>>>>  1 file changed, 94 insertions(+), 212 deletions(-)
>>>>>>
>>>>>> --
>>>>>
>>>>> For all these patches,
>>>>> Acked-by: Scott Jiang <scott.jiang.linux@gmail.com>
>>>>> Tested-by: Scott Jiang <scott.jiang.linux@gmail.com>
>>>>
>>>> Thanks!
>>>>
>>>> Is it possible for you to run 'v4l2-compliance -s' with this driver and
>>>> report the results? I'd be interested in that.
>>>>
>>> Fyi..
>>> v4l2-utils can't be compiled under uClibc.
>>
>> Do you know what exactly fails? Is it possible to manually compile v4l2-compliance?
>>
>> I.e., try this:
>>
>> cd utils/v4l2-compliance
>> cat *.cpp >x.cpp
>> g++ -o v4l2-compliance x.cpp -I . -I ../../include/ -DNO_LIBV4L2
>>
>> I've never used uclibc, so I don't know what the limitations are.
>>
> Not sure what exactly fails, I haven’t tried compiling it, that was a
> response from Scott for v2 series.
>

I found if I disabled libjpeg ./configure --without-jpeg, it can pass
compilation.
Would you like me to send the result now or after Lad's v4 patch?

Scott

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH v3 00/15] media: blackfin: bfin_capture enhancements
  2015-03-05  9:44           ` Scott Jiang
@ 2015-03-05 10:26             ` Hans Verkuil
  2015-03-07 16:22               ` Lad, Prabhakar
  0 siblings, 1 reply; 28+ messages in thread
From: Hans Verkuil @ 2015-03-05 10:26 UTC (permalink / raw)
  To: Scott Jiang, Lad, Prabhakar
  Cc: adi-buildroot-devel, Mauro Carvalho Chehab, LMML, LKML

On 03/05/15 10:44, Scott Jiang wrote:
> Hi Hans,
> 
>>
>> On Tue, Mar 3, 2015 at 9:39 AM, Hans Verkuil <hverkuil@xs4all.nl> wrote:
>>> On 03/03/2015 10:30 AM, Lad, Prabhakar wrote:
>>>> Hi Hans,
>>>>
>>>> On Tue, Mar 3, 2015 at 8:49 AM, Hans Verkuil <hverkuil@xs4all.nl> wrote:
>>>>> On 03/02/2015 08:57 AM, Scott Jiang wrote:
>>>>>> Hi Lad and Hans,
>>>>>>
>>>>>> 2015-02-22 2:39 GMT+08:00 Lad Prabhakar <prabhakar.csengg@gmail.com>:
>>>>>>> From: "Lad, Prabhakar" <prabhakar.csengg@gmail.com>
>>>>>>>
>>>>>>> This patch series, enhances blackfin capture driver with
>>>>>>> vb2 helpers.
>>>>>>>
>>>>>>> Changes for v3:
>>>>>>> 1: patches unchanged except for patch 8/15 fixing starting of ppi only
>>>>>>>    after we have the resources.
>>>>>>> 2: Rebased on media tree.
>>>>>>>
>>>>>>> v2: http://lkml.iu.edu/hypermail/linux/kernel/1501.2/04655.html
>>>>>>>
>>>>>>> v1: https://lkml.org/lkml/2014/12/20/27
>>>>>>>
>>>>>>> Lad, Prabhakar (15):
>>>>>>>   media: blackfin: bfin_capture: drop buf_init() callback
>>>>>>>   media: blackfin: bfin_capture: release buffers in case
>>>>>>>     start_streaming() call back fails
>>>>>>>   media: blackfin: bfin_capture: set min_buffers_needed
>>>>>>>   media: blackfin: bfin_capture: improve buf_prepare() callback
>>>>>>>   media: blackfin: bfin_capture: improve queue_setup() callback
>>>>>>>   media: blackfin: bfin_capture: use vb2_fop_mmap/poll
>>>>>>>   media: blackfin: bfin_capture: use v4l2_fh_open and vb2_fop_release
>>>>>>>   media: blackfin: bfin_capture: use vb2_ioctl_* helpers
>>>>>>>   media: blackfin: bfin_capture: make sure all buffers are returned on
>>>>>>>     stop_streaming() callback
>>>>>>>   media: blackfin: bfin_capture: return -ENODATA for *std calls
>>>>>>>   media: blackfin: bfin_capture: return -ENODATA for *dv_timings calls
>>>>>>>   media: blackfin: bfin_capture: add support for vidioc_create_bufs
>>>>>>>   media: blackfin: bfin_capture: add support for VB2_DMABUF
>>>>>>>   media: blackfin: bfin_capture: add support for VIDIOC_EXPBUF
>>>>>>>   media: blackfin: bfin_capture: set v4l2 buffer sequence
>>>>>>>
>>>>>>>  drivers/media/platform/blackfin/bfin_capture.c | 306 ++++++++-----------------
>>>>>>>  1 file changed, 94 insertions(+), 212 deletions(-)
>>>>>>>
>>>>>>> --
>>>>>>
>>>>>> For all these patches,
>>>>>> Acked-by: Scott Jiang <scott.jiang.linux@gmail.com>
>>>>>> Tested-by: Scott Jiang <scott.jiang.linux@gmail.com>
>>>>>
>>>>> Thanks!
>>>>>
>>>>> Is it possible for you to run 'v4l2-compliance -s' with this driver and
>>>>> report the results? I'd be interested in that.
>>>>>
>>>> Fyi..
>>>> v4l2-utils can't be compiled under uClibc.
>>>
>>> Do you know what exactly fails? Is it possible to manually compile v4l2-compliance?
>>>
>>> I.e., try this:
>>>
>>> cd utils/v4l2-compliance
>>> cat *.cpp >x.cpp
>>> g++ -o v4l2-compliance x.cpp -I . -I ../../include/ -DNO_LIBV4L2
>>>
>>> I've never used uclibc, so I don't know what the limitations are.
>>>
>> Not sure what exactly fails, I haven’t tried compiling it, that was a
>> response from Scott for v2 series.
>>
> 
> I found if I disabled libjpeg ./configure --without-jpeg, it can pass
> compilation.

Great!

> Would you like me to send the result now or after Lad's v4 patch?

Send it now as v4 won't have any meaningful code changes.

Thanks!

	Hans

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH v3 00/15] media: blackfin: bfin_capture enhancements
  2015-03-05 10:26             ` Hans Verkuil
@ 2015-03-07 16:22               ` Lad, Prabhakar
  2015-03-07 16:35                 ` Hans Verkuil
  0 siblings, 1 reply; 28+ messages in thread
From: Lad, Prabhakar @ 2015-03-07 16:22 UTC (permalink / raw)
  To: Hans Verkuil
  Cc: Scott Jiang, adi-buildroot-devel, Mauro Carvalho Chehab, LMML, LKML

On Thu, Mar 5, 2015 at 10:26 AM, Hans Verkuil <hverkuil@xs4all.nl> wrote:
> On 03/05/15 10:44, Scott Jiang wrote:
>> Hi Hans,
[snip]
>>>>
>>>> cd utils/v4l2-compliance
>>>> cat *.cpp >x.cpp
>>>> g++ -o v4l2-compliance x.cpp -I . -I ../../include/ -DNO_LIBV4L2
>>>>
>>>> I've never used uclibc, so I don't know what the limitations are.
>>>>
>>> Not sure what exactly fails, I haven’t tried compiling it, that was a
>>> response from Scott for v2 series.
>>>
>>
>> I found if I disabled libjpeg ./configure --without-jpeg, it can pass
>> compilation.
>
> Great!
>
>> Would you like me to send the result now or after Lad's v4 patch?
>
> Send it now as v4 won't have any meaningful code changes.
>
But anyway I cant help here much if there are any compliance issues,
as i don't have the hardware.

Thanks,
--Prabhakar Lad

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH v3 00/15] media: blackfin: bfin_capture enhancements
  2015-03-07 16:22               ` Lad, Prabhakar
@ 2015-03-07 16:35                 ` Hans Verkuil
  0 siblings, 0 replies; 28+ messages in thread
From: Hans Verkuil @ 2015-03-07 16:35 UTC (permalink / raw)
  To: Lad, Prabhakar
  Cc: Scott Jiang, adi-buildroot-devel, Mauro Carvalho Chehab, LMML, LKML

On 03/07/2015 05:22 PM, Lad, Prabhakar wrote:
> On Thu, Mar 5, 2015 at 10:26 AM, Hans Verkuil <hverkuil@xs4all.nl> wrote:
>> On 03/05/15 10:44, Scott Jiang wrote:
>>> Hi Hans,
> [snip]
>>>>>
>>>>> cd utils/v4l2-compliance
>>>>> cat *.cpp >x.cpp
>>>>> g++ -o v4l2-compliance x.cpp -I . -I ../../include/ -DNO_LIBV4L2
>>>>>
>>>>> I've never used uclibc, so I don't know what the limitations are.
>>>>>
>>>> Not sure what exactly fails, I haven’t tried compiling it, that was a
>>>> response from Scott for v2 series.
>>>>
>>>
>>> I found if I disabled libjpeg ./configure --without-jpeg, it can pass
>>> compilation.
>>
>> Great!
>>
>>> Would you like me to send the result now or after Lad's v4 patch?
>>
>> Send it now as v4 won't have any meaningful code changes.
>>
> But anyway I cant help here much if there are any compliance issues,
> as i don't have the hardware.

Often compliance issues are trivially fixed, even without hardware. But step
one is just to run the tool and see what it reports.

Regards,

	Hans


^ permalink raw reply	[flat|nested] 28+ messages in thread

end of thread, other threads:[~2015-03-07 16:36 UTC | newest]

Thread overview: 28+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-02-21 18:39 [PATCH v3 00/15] media: blackfin: bfin_capture enhancements Lad Prabhakar
2015-02-21 18:39 ` [PATCH v3 01/15] media: blackfin: bfin_capture: drop buf_init() callback Lad Prabhakar
2015-02-21 18:39 ` [PATCH v3 02/15] media: blackfin: bfin_capture: release buffers in case start_streaming() call back fails Lad Prabhakar
2015-02-21 18:39 ` [PATCH v3 03/15] media: blackfin: bfin_capture: set min_buffers_needed Lad Prabhakar
2015-02-21 18:39 ` [PATCH v3 04/15] media: blackfin: bfin_capture: improve buf_prepare() callback Lad Prabhakar
2015-03-03 15:21   ` Hans Verkuil
2015-02-21 18:39 ` [PATCH v3 05/15] media: blackfin: bfin_capture: improve queue_setup() callback Lad Prabhakar
2015-03-03 14:13   ` Mauro Carvalho Chehab
2015-02-21 18:39 ` [PATCH v3 06/15] media: blackfin: bfin_capture: use vb2_fop_mmap/poll Lad Prabhakar
2015-03-03 10:14   ` Hans Verkuil
2015-02-21 18:39 ` [PATCH v3 07/15] media: blackfin: bfin_capture: use v4l2_fh_open and vb2_fop_release Lad Prabhakar
2015-02-21 18:39 ` [PATCH v3 08/15] media: blackfin: bfin_capture: use vb2_ioctl_* helpers Lad Prabhakar
2015-02-21 18:39 ` [PATCH v3 09/15] media: blackfin: bfin_capture: make sure all buffers are returned on stop_streaming() callback Lad Prabhakar
2015-02-21 18:39 ` [PATCH v3 10/15] media: blackfin: bfin_capture: return -ENODATA for *std calls Lad Prabhakar
2015-02-21 18:39 ` [PATCH v3 11/15] media: blackfin: bfin_capture: return -ENODATA for *dv_timings calls Lad Prabhakar
2015-02-21 18:39 ` [PATCH v3 12/15] media: blackfin: bfin_capture: add support for vidioc_create_bufs Lad Prabhakar
2015-02-21 18:39 ` [PATCH v3 13/15] media: blackfin: bfin_capture: add support for VB2_DMABUF Lad Prabhakar
2015-02-21 18:40 ` [PATCH v3 14/15] media: blackfin: bfin_capture: add support for VIDIOC_EXPBUF Lad Prabhakar
2015-02-21 18:40 ` [PATCH v3 15/15] media: blackfin: bfin_capture: set v4l2 buffer sequence Lad Prabhakar
2015-03-02  7:57 ` [PATCH v3 00/15] media: blackfin: bfin_capture enhancements Scott Jiang
2015-03-03  8:49   ` Hans Verkuil
2015-03-03  9:30     ` Lad, Prabhakar
2015-03-03  9:39       ` Hans Verkuil
2015-03-03  9:43         ` Lad, Prabhakar
2015-03-05  9:44           ` Scott Jiang
2015-03-05 10:26             ` Hans Verkuil
2015-03-07 16:22               ` Lad, Prabhakar
2015-03-07 16:35                 ` Hans Verkuil

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).