[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>
This commit is contained in:
parent
cd3c38effc
commit
f314002279
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue