diff mbox

[05/15] media: blackfin: bfin_capture: improve queue_setup() callback

Message ID 1419072462-3168-6-git-send-email-prabhakar.csengg@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Lad, Prabhakar Dec. 20, 2014, 10:47 a.m. UTC
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(-)

Comments

Scott Jiang Jan. 21, 2015, 10:01 a.m. UTC | #1
2014-12-20 18:47 GMT+08:00 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 8bd94a1..76d42bb 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 < 3)
> +               *nbuffers = 3 - vq->num_buffers;

It seems it changes the minimum buffers from 2 to 3?

>
>         *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;
>
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Lad, Prabhakar Jan. 21, 2015, 11:29 a.m. UTC | #2
On Wed, Jan 21, 2015 at 10:01 AM, Scott Jiang
<scott.jiang.linux@gmail.com> wrote:
> 2014-12-20 18:47 GMT+08:00 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 8bd94a1..76d42bb 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 < 3)
>> +               *nbuffers = 3 - vq->num_buffers;
>
> It seems it changes the minimum buffers from 2 to 3?
>
will replace it with,

if (vq->num_buffers + *nbuffers < 2)
       *nbuffers = 2;

Thanks,
--Prabhakar Lad
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/media/platform/blackfin/bfin_capture.c b/drivers/media/platform/blackfin/bfin_capture.c
index 8bd94a1..76d42bb 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 < 3)
+		*nbuffers = 3 - vq->num_buffers;
 
 	*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;