media: ov5640: Add BGR888 format
authorJacopo Mondi <jacopo@jmondi.org>
Fri, 13 May 2022 14:14:12 +0000 (15:14 +0100)
committerMauro Carvalho Chehab <mchehab@kernel.org>
Fri, 8 Jul 2022 14:37:14 +0000 (15:37 +0100)
Add support for BGR888 image format.

No existing media bus codes describe exactly the way data is transferred
on the CSI-2 bus. This is not a new issue, the CSI-2 YUV422 8-bit format
is described by MEDIA_BUS_FMT_UYVY8_1X16 which is an arbitrary
convention and not an exact match. Use the MEDIA_BUS_FMT_BGR888_1X24 to
follow the same convention, based on the order in which bits are
transmitted over the CSI-2 bus when producing images in RGB24 format.

Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
drivers/media/i2c/ov5640.c

index 4a88794..a1c00e7 100644 (file)
@@ -226,6 +226,10 @@ static const struct ov5640_pixfmt {
                .colorspace = V4L2_COLORSPACE_SRGB,
                .bpp = 16,
        }, {
+               .code = MEDIA_BUS_FMT_BGR888_1X24,
+               .colorspace = V4L2_COLORSPACE_SRGB,
+               .bpp = 24,
+       }, {
                .code = MEDIA_BUS_FMT_SBGGR8_1X8,
                .colorspace = V4L2_COLORSPACE_SRGB,
                .bpp = 8,
@@ -2940,6 +2944,11 @@ static int ov5640_set_framefmt(struct ov5640_dev *sensor,
                fmt = 0x61;
                mux = OV5640_FMT_MUX_RGB;
                break;
+       case MEDIA_BUS_FMT_BGR888_1X24:
+               /* BGR888: RGB */
+               fmt = 0x23;
+               mux = OV5640_FMT_MUX_RGB;
+               break;
        case MEDIA_BUS_FMT_JPEG_1X8:
                /* YUV422, YUYV */
                fmt = 0x30;