This is an automatic generated email to let you know that the following patch 
were queued:

Subject: [media] media: rcar-vin: fix height for TOP and BOTTOM fields
Author:  Niklas Söderlund <niklas.soderlund+rene...@ragnatech.se>
Date:    Fri Sep 2 13:45:00 2016 -0300

The height used for V4L2_FIELD_TOP and V4L2_FIELD_BOTTOM where wrong.
The frames only contain one field so the height should be half of the
frame.

Signed-off-by: Niklas Söderlund <niklas.soderlund+rene...@ragnatech.se>
Signed-off-by: Hans Verkuil <hans.verk...@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mche...@s-opensource.com>

 drivers/media/platform/rcar-vin/rcar-v4l2.c | 29 +++++++++++++++++------------
 1 file changed, 17 insertions(+), 12 deletions(-)

---

diff --git a/drivers/media/platform/rcar-vin/rcar-v4l2.c 
b/drivers/media/platform/rcar-vin/rcar-v4l2.c
index 47d8d9745747..1392514d4072 100644
--- a/drivers/media/platform/rcar-vin/rcar-v4l2.c
+++ b/drivers/media/platform/rcar-vin/rcar-v4l2.c
@@ -125,6 +125,8 @@ static int rvin_reset_format(struct rvin_dev *vin)
        switch (vin->format.field) {
        case V4L2_FIELD_TOP:
        case V4L2_FIELD_BOTTOM:
+               vin->format.height /= 2;
+               break;
        case V4L2_FIELD_NONE:
        case V4L2_FIELD_INTERLACED_TB:
        case V4L2_FIELD_INTERLACED_BT:
@@ -220,21 +222,13 @@ static int __rvin_try_format(struct rvin_dev *vin,
        /* Limit to source capabilities */
        __rvin_try_format_source(vin, which, pix, source);
 
-       /* If source can't match format try if VIN can scale */
-       if (source->width != rwidth || source->height != rheight)
-               rvin_scale_try(vin, pix, rwidth, rheight);
-
-       /* HW limit width to a multiple of 32 (2^5) for NV16 else 2 (2^1) */
-       walign = vin->format.pixelformat == V4L2_PIX_FMT_NV16 ? 5 : 1;
-
-       /* Limit to VIN capabilities */
-       v4l_bound_align_image(&pix->width, 2, RVIN_MAX_WIDTH, walign,
-                             &pix->height, 4, RVIN_MAX_HEIGHT, 2, 0);
-
        switch (pix->field) {
-       case V4L2_FIELD_NONE:
        case V4L2_FIELD_TOP:
        case V4L2_FIELD_BOTTOM:
+               pix->height /= 2;
+               source->height /= 2;
+               break;
+       case V4L2_FIELD_NONE:
        case V4L2_FIELD_INTERLACED_TB:
        case V4L2_FIELD_INTERLACED_BT:
        case V4L2_FIELD_INTERLACED:
@@ -244,6 +238,17 @@ static int __rvin_try_format(struct rvin_dev *vin,
                break;
        }
 
+       /* If source can't match format try if VIN can scale */
+       if (source->width != rwidth || source->height != rheight)
+               rvin_scale_try(vin, pix, rwidth, rheight);
+
+       /* HW limit width to a multiple of 32 (2^5) for NV16 else 2 (2^1) */
+       walign = vin->format.pixelformat == V4L2_PIX_FMT_NV16 ? 5 : 1;
+
+       /* Limit to VIN capabilities */
+       v4l_bound_align_image(&pix->width, 2, RVIN_MAX_WIDTH, walign,
+                             &pix->height, 4, RVIN_MAX_HEIGHT, 2, 0);
+
        pix->bytesperline = max_t(u32, pix->bytesperline,
                                  rvin_format_bytesperline(pix));
        pix->sizeimage = max_t(u32, pix->sizeimage,

_______________________________________________
linuxtv-commits mailing list
linuxtv-commits@linuxtv.org
https://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits

Reply via email to