media: staging: media: imx: imx7-media-csi: Fix list of supported formats
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Tue, 10 May 2022 09:47:34 +0000 (10:47 +0100)
committerMauro Carvalho Chehab <mchehab@kernel.org>
Fri, 8 Jul 2022 17:03:06 +0000 (18:03 +0100)
The list of supported formats comes from helpers shared with the i.MX6
IPUv3 and is incorrect in multiple regards:

- 10-, 12- and 14-bit Bayer formats are stored in memory as SBGGR10,
  SBGGR12 and SBGGR14 respectively (plus components permutations), not
  SBGGR16. Same thing for greyscale formats.
- 16-bit RAW formats are not supported by the hardware.

Fix the supported formats table.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Acked-by: Rui Miguel Silva <rmfrfs@gmail.com>
Tested-by: Alexander Stein <alexander.stein@ew.tq-group.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
drivers/staging/media/imx/imx7-media-csi.c

index fd707a49be3fc4c77f61e0e38c4274d0c82cc98c..449a52baffcc0641373d9e3d25093b6866e00a60 100644 (file)
@@ -848,56 +848,64 @@ static const struct imx7_csi_pixfmt pixel_formats[] = {
                .codes  = IMX_BUS_FMTS(MEDIA_BUS_FMT_SRGGB8_1X8),
                .bpp    = 8,
        }, {
-               .fourcc = V4L2_PIX_FMT_SBGGR16,
-               .codes  = IMX_BUS_FMTS(
-                       MEDIA_BUS_FMT_SBGGR10_1X10,
-                       MEDIA_BUS_FMT_SBGGR12_1X12,
-                       MEDIA_BUS_FMT_SBGGR14_1X14,
-                       MEDIA_BUS_FMT_SBGGR16_1X16
-               ),
+               .fourcc = V4L2_PIX_FMT_SBGGR10,
+               .codes  = IMX_BUS_FMTS(MEDIA_BUS_FMT_SBGGR10_1X10),
                .bpp    = 16,
        }, {
-               .fourcc = V4L2_PIX_FMT_SGBRG16,
-               .codes  = IMX_BUS_FMTS(
-                       MEDIA_BUS_FMT_SGBRG10_1X10,
-                       MEDIA_BUS_FMT_SGBRG12_1X12,
-                       MEDIA_BUS_FMT_SGBRG14_1X14,
-                       MEDIA_BUS_FMT_SGBRG16_1X16
-               ),
+               .fourcc = V4L2_PIX_FMT_SGBRG10,
+               .codes  = IMX_BUS_FMTS(MEDIA_BUS_FMT_SGBRG10_1X10),
                .bpp    = 16,
        }, {
-               .fourcc = V4L2_PIX_FMT_SGRBG16,
-               .codes  = IMX_BUS_FMTS(
-                       MEDIA_BUS_FMT_SGRBG10_1X10,
-                       MEDIA_BUS_FMT_SGRBG12_1X12,
-                       MEDIA_BUS_FMT_SGRBG14_1X14,
-                       MEDIA_BUS_FMT_SGRBG16_1X16
-               ),
+               .fourcc = V4L2_PIX_FMT_SGRBG10,
+               .codes  = IMX_BUS_FMTS(MEDIA_BUS_FMT_SGRBG10_1X10),
                .bpp    = 16,
        }, {
-               .fourcc = V4L2_PIX_FMT_SRGGB16,
-               .codes  = IMX_BUS_FMTS(
-                       MEDIA_BUS_FMT_SRGGB10_1X10,
-                       MEDIA_BUS_FMT_SRGGB12_1X12,
-                       MEDIA_BUS_FMT_SRGGB14_1X14,
-                       MEDIA_BUS_FMT_SRGGB16_1X16
-               ),
+               .fourcc = V4L2_PIX_FMT_SRGGB10,
+               .codes  = IMX_BUS_FMTS(MEDIA_BUS_FMT_SRGGB10_1X10),
+               .bpp    = 16,
+       }, {
+               .fourcc = V4L2_PIX_FMT_SBGGR12,
+               .codes  = IMX_BUS_FMTS(MEDIA_BUS_FMT_SBGGR12_1X12),
+               .bpp    = 16,
+       }, {
+               .fourcc = V4L2_PIX_FMT_SGBRG12,
+               .codes  = IMX_BUS_FMTS(MEDIA_BUS_FMT_SGBRG12_1X12),
+               .bpp    = 16,
+       }, {
+               .fourcc = V4L2_PIX_FMT_SGRBG12,
+               .codes  = IMX_BUS_FMTS(MEDIA_BUS_FMT_SGRBG12_1X12),
+               .bpp    = 16,
+       }, {
+               .fourcc = V4L2_PIX_FMT_SRGGB12,
+               .codes  = IMX_BUS_FMTS(MEDIA_BUS_FMT_SRGGB12_1X12),
+               .bpp    = 16,
+       }, {
+               .fourcc = V4L2_PIX_FMT_SBGGR14,
+               .codes  = IMX_BUS_FMTS(MEDIA_BUS_FMT_SBGGR14_1X14),
+               .bpp    = 16,
+       }, {
+               .fourcc = V4L2_PIX_FMT_SGBRG14,
+               .codes  = IMX_BUS_FMTS(MEDIA_BUS_FMT_SGBRG14_1X14),
+               .bpp    = 16,
+       }, {
+               .fourcc = V4L2_PIX_FMT_SGRBG14,
+               .codes  = IMX_BUS_FMTS(MEDIA_BUS_FMT_SGRBG14_1X14),
+               .bpp    = 16,
+       }, {
+               .fourcc = V4L2_PIX_FMT_SRGGB14,
+               .codes  = IMX_BUS_FMTS(MEDIA_BUS_FMT_SRGGB14_1X14),
                .bpp    = 16,
        }, {
                .fourcc = V4L2_PIX_FMT_GREY,
-               .codes = IMX_BUS_FMTS(
-                       MEDIA_BUS_FMT_Y8_1X8,
-                       MEDIA_BUS_FMT_Y10_1X10,
-                       MEDIA_BUS_FMT_Y12_1X12
-               ),
+               .codes  = IMX_BUS_FMTS(MEDIA_BUS_FMT_Y8_1X8),
                .bpp    = 8,
        }, {
                .fourcc = V4L2_PIX_FMT_Y10,
-               .codes = IMX_BUS_FMTS(MEDIA_BUS_FMT_Y10_1X10),
+               .codes  = IMX_BUS_FMTS(MEDIA_BUS_FMT_Y10_1X10),
                .bpp    = 16,
        }, {
                .fourcc = V4L2_PIX_FMT_Y12,
-               .codes = IMX_BUS_FMTS(MEDIA_BUS_FMT_Y12_1X12),
+               .codes  = IMX_BUS_FMTS(MEDIA_BUS_FMT_Y12_1X12),
                .bpp    = 16,
        },
 };
@@ -2017,10 +2025,18 @@ static int imx7_csi_pad_link_validate(struct v4l2_subdev *sd,
        case V4L2_PIX_FMT_SGBRG8:
        case V4L2_PIX_FMT_SGRBG8:
        case V4L2_PIX_FMT_SRGGB8:
-       case V4L2_PIX_FMT_SBGGR16:
-       case V4L2_PIX_FMT_SGBRG16:
-       case V4L2_PIX_FMT_SGRBG16:
-       case V4L2_PIX_FMT_SRGGB16:
+       case V4L2_PIX_FMT_SBGGR10:
+       case V4L2_PIX_FMT_SGBRG10:
+       case V4L2_PIX_FMT_SGRBG10:
+       case V4L2_PIX_FMT_SRGGB10:
+       case V4L2_PIX_FMT_SBGGR12:
+       case V4L2_PIX_FMT_SGBRG12:
+       case V4L2_PIX_FMT_SGRBG12:
+       case V4L2_PIX_FMT_SRGGB12:
+       case V4L2_PIX_FMT_SBGGR14:
+       case V4L2_PIX_FMT_SGBRG14:
+       case V4L2_PIX_FMT_SGRBG14:
+       case V4L2_PIX_FMT_SRGGB14:
                break;
 
        default: