[media] davinci: vpif_capture: fix default pixel format for BT.656/BT.1120 video
authorNori, Sekhar <nsekhar@ti.com>
Fri, 26 May 2017 10:55:27 +0000 (07:55 -0300)
committerMauro Carvalho Chehab <mchehab@s-opensource.com>
Tue, 6 Jun 2017 19:49:23 +0000 (16:49 -0300)
For both BT.656 and BT.1120 video, the pixel format
used by VPIF is Y/CbCr 4:2:2 in semi-planar format
(Luma in one plane and Chroma in another). This
corresponds to NV16 pixel format.

This is documented in section 36.2.3 of OMAP-L138
Technical Reference Manual, SPRUH77A.

The VPIF driver incorrectly sets the default format
to V4L2_PIX_FMT_YUV422P. Fix it.

Reported-by: Alejandro Hernandez <ajhernandez@ti.com>
Signed-off-by: Sekhar Nori <nsekhar@ti.com>
Acked-by: Kevin Hilman <khilman@baylibre.com>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
drivers/media/platform/davinci/vpif_capture.c

index 44f702752d3aae4add9bf85339607c0f6d317de3..128e92d1dd5a751c0d3bda0e4a0c16eccd41941a 100644 (file)
@@ -513,7 +513,7 @@ static int vpif_update_std_info(struct channel_obj *ch)
        if (ch->vpifparams.iface.if_type == VPIF_IF_RAW_BAYER)
                common->fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_SBGGR8;
        else
-               common->fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_YUV422P;
+               common->fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_NV16;
 
        common->fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
 
@@ -917,8 +917,8 @@ static int vpif_enum_fmt_vid_cap(struct file *file, void  *priv,
                fmt->pixelformat = V4L2_PIX_FMT_SBGGR8;
        } else {
                fmt->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
-               strcpy(fmt->description, "YCbCr4:2:2 YC Planar");
-               fmt->pixelformat = V4L2_PIX_FMT_YUV422P;
+               strcpy(fmt->description, "YCbCr4:2:2 Semi-Planar");
+               fmt->pixelformat = V4L2_PIX_FMT_NV16;
        }
        return 0;
 }
@@ -946,8 +946,8 @@ static int vpif_try_fmt_vid_cap(struct file *file, void *priv,
                if (pixfmt->pixelformat != V4L2_PIX_FMT_SBGGR8)
                        pixfmt->pixelformat = V4L2_PIX_FMT_SBGGR8;
        } else {
-               if (pixfmt->pixelformat != V4L2_PIX_FMT_YUV422P)
-                       pixfmt->pixelformat = V4L2_PIX_FMT_YUV422P;
+               if (pixfmt->pixelformat != V4L2_PIX_FMT_NV16)
+                       pixfmt->pixelformat = V4L2_PIX_FMT_NV16;
        }
 
        common->fmt.fmt.pix.pixelformat = pixfmt->pixelformat;