aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/platform/blackfin/bfin_capture.c
diff options
context:
space:
mode:
authorLad, Prabhakar <prabhakar.csengg@gmail.com>2015-03-08 11:40:41 -0300
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>2015-04-02 18:11:18 -0300
commitf314002279a4984cca86b5fa3920b6c84171beab (patch)
treed07fce462b139d3b127c69b6eece829dd5eb45d0 /drivers/media/platform/blackfin/bfin_capture.c
parent[media] media: blackfin: bfin_capture: set vb2 buffer field (diff)
downloadlinux-dev-f314002279a4984cca86b5fa3920b6c84171beab.tar.xz
linux-dev-f314002279a4984cca86b5fa3920b6c84171beab.zip
[media] media: blackfin: bfin_capture: improve queue_setup() callback
This patch does the following: a: returns -EINVAL in case format image size is less then current image size. b: assigns nbuffers to two in case the total of vq->num_buffers and nbuffers is less then the number of buffers required by driver. c: sets the sizes[0] of plane according to the fmt passed or which is being set in the device. Signed-off-by: Lad, Prabhakar <prabhakar.csengg@gmail.com> Tested-by: Scott Jiang <scott.jiang.linux@gmail.com> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
Diffstat (limited to 'drivers/media/platform/blackfin/bfin_capture.c')
-rw-r--r--drivers/media/platform/blackfin/bfin_capture.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/media/platform/blackfin/bfin_capture.c b/drivers/media/platform/blackfin/bfin_capture.c
index a5881297c9ea..bf7e9997b794 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;