media: st-mipid02: expose 1X16 serial pixel format
authorHugues Fruchet <hugues.fruchet@foss.st.com>
Mon, 16 May 2022 09:19:34 +0000 (10:19 +0100)
committerMauro Carvalho Chehab <mchehab@kernel.org>
Fri, 8 Jul 2022 14:14:04 +0000 (15:14 +0100)
Expose RGB & YUV 1X16 serial pixel format variants to comply
with CSI-2 camera sensor pixel formats.

Signed-off-by: Hugues Fruchet <hugues.fruchet@foss.st.com>
Reviewed-by: Benjamin Mugnier <benjamin.mugnier@foss.st.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
drivers/media/i2c/st-mipid02.c

index fe884d81b08b2ffcd5bf732a7f0e76972720b1fc..16cc547976dd5f6bcd294a13a8b8054b3ed10c99 100644 (file)
@@ -62,7 +62,9 @@ static const u32 mipid02_supported_fmt_codes[] = {
        MEDIA_BUS_FMT_SGRBG10_1X10, MEDIA_BUS_FMT_SRGGB10_1X10,
        MEDIA_BUS_FMT_SBGGR12_1X12, MEDIA_BUS_FMT_SGBRG12_1X12,
        MEDIA_BUS_FMT_SGRBG12_1X12, MEDIA_BUS_FMT_SRGGB12_1X12,
-       MEDIA_BUS_FMT_UYVY8_1X16, MEDIA_BUS_FMT_BGR888_1X24,
+       MEDIA_BUS_FMT_YUYV8_1X16, MEDIA_BUS_FMT_YVYU8_1X16,
+       MEDIA_BUS_FMT_UYVY8_1X16, MEDIA_BUS_FMT_VYUY8_1X16,
+       MEDIA_BUS_FMT_RGB565_1X16, MEDIA_BUS_FMT_BGR888_1X24,
        MEDIA_BUS_FMT_RGB565_2X8_LE, MEDIA_BUS_FMT_RGB565_2X8_BE,
        MEDIA_BUS_FMT_YUYV8_2X8, MEDIA_BUS_FMT_YVYU8_2X8,
        MEDIA_BUS_FMT_UYVY8_2X8, MEDIA_BUS_FMT_VYUY8_2X8,
@@ -132,7 +134,11 @@ static int bpp_from_code(__u32 code)
        case MEDIA_BUS_FMT_SGRBG12_1X12:
        case MEDIA_BUS_FMT_SRGGB12_1X12:
                return 12;
+       case MEDIA_BUS_FMT_YUYV8_1X16:
+       case MEDIA_BUS_FMT_YVYU8_1X16:
        case MEDIA_BUS_FMT_UYVY8_1X16:
+       case MEDIA_BUS_FMT_VYUY8_1X16:
+       case MEDIA_BUS_FMT_RGB565_1X16:
        case MEDIA_BUS_FMT_YUYV8_2X8:
        case MEDIA_BUS_FMT_YVYU8_2X8:
        case MEDIA_BUS_FMT_UYVY8_2X8:
@@ -165,7 +171,10 @@ static u8 data_type_from_code(__u32 code)
        case MEDIA_BUS_FMT_SGRBG12_1X12:
        case MEDIA_BUS_FMT_SRGGB12_1X12:
                return 0x2c;
+       case MEDIA_BUS_FMT_YUYV8_1X16:
+       case MEDIA_BUS_FMT_YVYU8_1X16:
        case MEDIA_BUS_FMT_UYVY8_1X16:
+       case MEDIA_BUS_FMT_VYUY8_1X16:
        case MEDIA_BUS_FMT_YUYV8_2X8:
        case MEDIA_BUS_FMT_YVYU8_2X8:
        case MEDIA_BUS_FMT_UYVY8_2X8:
@@ -173,6 +182,7 @@ static u8 data_type_from_code(__u32 code)
                return 0x1e;
        case MEDIA_BUS_FMT_BGR888_1X24:
                return 0x24;
+       case MEDIA_BUS_FMT_RGB565_1X16:
        case MEDIA_BUS_FMT_RGB565_2X8_LE:
        case MEDIA_BUS_FMT_RGB565_2X8_BE:
                return 0x22;
@@ -207,8 +217,16 @@ static __u32 get_fmt_code(__u32 code)
 
 static __u32 serial_to_parallel_code(__u32 serial)
 {
+       if (serial == MEDIA_BUS_FMT_RGB565_1X16)
+               return MEDIA_BUS_FMT_RGB565_2X8_LE;
+       if (serial == MEDIA_BUS_FMT_YUYV8_1X16)
+               return MEDIA_BUS_FMT_YUYV8_2X8;
+       if (serial == MEDIA_BUS_FMT_YVYU8_1X16)
+               return MEDIA_BUS_FMT_YVYU8_2X8;
        if (serial == MEDIA_BUS_FMT_UYVY8_1X16)
                return MEDIA_BUS_FMT_UYVY8_2X8;
+       if (serial == MEDIA_BUS_FMT_VYUY8_1X16)
+               return MEDIA_BUS_FMT_VYUY8_2X8;
        if (serial == MEDIA_BUS_FMT_BGR888_1X24)
                return MEDIA_BUS_FMT_BGR888_3X8;