gpu: ipu-v3: add support for XRGB32 and XBGR32 V4L2 pixel formats
authorPhilipp Zabel <p.zabel@pengutronix.de>
Thu, 2 Aug 2018 08:40:33 +0000 (10:40 +0200)
committerPhilipp Zabel <p.zabel@pengutronix.de>
Thu, 2 Aug 2018 09:32:40 +0000 (11:32 +0200)
These should be used instead of the ill-defined deprecated RGB32 and
BGR32 V4L2 pixel formats.

Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
drivers/gpu/ipu-v3/ipu-common.c
drivers/gpu/ipu-v3/ipu-cpmem.c
drivers/gpu/ipu-v3/ipu-image-convert.c

index 48685cd..66e9405 100644 (file)
@@ -122,6 +122,8 @@ enum ipu_color_space ipu_pixelformat_to_colorspace(u32 pixelformat)
        case V4L2_PIX_FMT_NV16:
        case V4L2_PIX_FMT_NV61:
                return IPUV3_COLORSPACE_YUV;
+       case V4L2_PIX_FMT_XRGB32:
+       case V4L2_PIX_FMT_XBGR32:
        case V4L2_PIX_FMT_RGB32:
        case V4L2_PIX_FMT_BGR32:
        case V4L2_PIX_FMT_RGB24:
@@ -190,6 +192,8 @@ int ipu_stride_to_bytes(u32 pixel_stride, u32 pixelformat)
                return (24 * pixel_stride) >> 3;
        case V4L2_PIX_FMT_BGR32:
        case V4L2_PIX_FMT_RGB32:
+       case V4L2_PIX_FMT_XBGR32:
+       case V4L2_PIX_FMT_XRGB32:
                return (32 * pixel_stride) >> 3;
        default:
                break;
index 125721a..0f1155e 100644 (file)
@@ -188,6 +188,12 @@ static int v4l2_pix_fmt_to_drm_fourcc(u32 pixelformat)
        case V4L2_PIX_FMT_RGB32:
                /* R G B A <=> [32:0] A:B:G:R */
                return DRM_FORMAT_XBGR8888;
+       case V4L2_PIX_FMT_XBGR32:
+               /* B G R X <=> [32:0] X:R:G:B */
+               return DRM_FORMAT_XRGB8888;
+       case V4L2_PIX_FMT_XRGB32:
+               /* X R G B <=> [32:0] B:G:R:X */
+               return DRM_FORMAT_BGRX8888;
        case V4L2_PIX_FMT_UYVY:
                return DRM_FORMAT_UYVY;
        case V4L2_PIX_FMT_YUYV:
@@ -787,6 +793,8 @@ int ipu_cpmem_set_image(struct ipuv3_channel *ch, struct ipu_image *image)
                break;
        case V4L2_PIX_FMT_RGB32:
        case V4L2_PIX_FMT_BGR32:
+       case V4L2_PIX_FMT_XRGB32:
+       case V4L2_PIX_FMT_XBGR32:
                offset = image->rect.left * 4 +
                        image->rect.top * pix->bytesperline;
                break;
index 524a717..f408196 100644 (file)
@@ -227,6 +227,12 @@ static const struct ipu_image_pixfmt image_convert_formats[] = {
                .fourcc = V4L2_PIX_FMT_BGR32,
                .bpp    = 32,
        }, {
+               .fourcc = V4L2_PIX_FMT_XRGB32,
+               .bpp    = 32,
+       }, {
+               .fourcc = V4L2_PIX_FMT_XBGR32,
+               .bpp    = 32,
+       }, {
                .fourcc = V4L2_PIX_FMT_YUYV,
                .bpp    = 16,
                .uv_width_dec = 2,