Re: [PATCH v7 18/28] media: sun6i-csi: Introduce format match structure, list and helper

From: Sakari Ailus
Date: Fri Nov 11 2022 - 05:19:36 EST


Hi Paul,

On Thu, Nov 03, 2022 at 05:31:03PM +0100, Paul Kocialkowski wrote:
> Introduce a list of mbus/pixel format combinations that need an exact
> match between the two sides. This is the case when using raw input
> configuration. The list will be used to replace the
> sun6i_csi_is_format_supported combinatory helper.

This patch introduces an unused function which generates a compiler warning
that is now treated as an error.

I'll squash this to the following patch that uses the function. I think the
commit message will do as-is.

>
> Signed-off-by: Paul Kocialkowski <paul.kocialkowski@xxxxxxxxxxx>
> Acked-by: Jernej Skrabec <jernej.skrabec@xxxxxxxxx>
> ---
> .../sunxi/sun6i-csi/sun6i_csi_capture.c | 117 ++++++++++++++++++
> .../sunxi/sun6i-csi/sun6i_csi_capture.h | 5 +
> 2 files changed, 122 insertions(+)
>
> diff --git a/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi_capture.c b/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi_capture.c
> index 99b821d79357..7958419d3c6e 100644
> --- a/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi_capture.c
> +++ b/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi_capture.c
> @@ -227,6 +227,123 @@ struct sun6i_csi_capture_format *sun6i_csi_capture_format_find(u32 pixelformat)
> return NULL;
> }
>
> +/* RAW formats need an exact match between pixel and mbus formats. */
> +static const
> +struct sun6i_csi_capture_format_match sun6i_csi_capture_format_matches[] = {
> + /* YUV420 */
> + {
> + .pixelformat = V4L2_PIX_FMT_YUYV,
> + .mbus_code = MEDIA_BUS_FMT_YUYV8_2X8,
> + },
> + {
> + .pixelformat = V4L2_PIX_FMT_YUYV,
> + .mbus_code = MEDIA_BUS_FMT_YUYV8_1X16,
> + },
> + {
> + .pixelformat = V4L2_PIX_FMT_YVYU,
> + .mbus_code = MEDIA_BUS_FMT_YVYU8_2X8,
> + },
> + {
> + .pixelformat = V4L2_PIX_FMT_YVYU,
> + .mbus_code = MEDIA_BUS_FMT_YVYU8_1X16,
> + },
> + {
> + .pixelformat = V4L2_PIX_FMT_UYVY,
> + .mbus_code = MEDIA_BUS_FMT_UYVY8_2X8,
> + },
> + {
> + .pixelformat = V4L2_PIX_FMT_UYVY,
> + .mbus_code = MEDIA_BUS_FMT_UYVY8_1X16,
> + },
> + {
> + .pixelformat = V4L2_PIX_FMT_VYUY,
> + .mbus_code = MEDIA_BUS_FMT_VYUY8_2X8,
> + },
> + {
> + .pixelformat = V4L2_PIX_FMT_VYUY,
> + .mbus_code = MEDIA_BUS_FMT_VYUY8_1X16,
> + },
> + /* RGB */
> + {
> + .pixelformat = V4L2_PIX_FMT_RGB565,
> + .mbus_code = MEDIA_BUS_FMT_RGB565_2X8_LE,
> + },
> + {
> + .pixelformat = V4L2_PIX_FMT_RGB565X,
> + .mbus_code = MEDIA_BUS_FMT_RGB565_2X8_BE,
> + },
> + /* Bayer */
> + {
> + .pixelformat = V4L2_PIX_FMT_SBGGR8,
> + .mbus_code = MEDIA_BUS_FMT_SBGGR8_1X8,
> + },
> + {
> + .pixelformat = V4L2_PIX_FMT_SGBRG8,
> + .mbus_code = MEDIA_BUS_FMT_SGBRG8_1X8,
> + },
> + {
> + .pixelformat = V4L2_PIX_FMT_SGRBG8,
> + .mbus_code = MEDIA_BUS_FMT_SGRBG8_1X8,
> + },
> + {
> + .pixelformat = V4L2_PIX_FMT_SRGGB8,
> + .mbus_code = MEDIA_BUS_FMT_SRGGB8_1X8,
> + },
> + {
> + .pixelformat = V4L2_PIX_FMT_SBGGR10,
> + .mbus_code = MEDIA_BUS_FMT_SBGGR10_1X10,
> + },
> + {
> + .pixelformat = V4L2_PIX_FMT_SGBRG10,
> + .mbus_code = MEDIA_BUS_FMT_SGBRG10_1X10,
> + },
> + {
> + .pixelformat = V4L2_PIX_FMT_SGRBG10,
> + .mbus_code = MEDIA_BUS_FMT_SGRBG10_1X10,
> + },
> + {
> + .pixelformat = V4L2_PIX_FMT_SRGGB10,
> + .mbus_code = MEDIA_BUS_FMT_SRGGB10_1X10,
> + },
> + {
> + .pixelformat = V4L2_PIX_FMT_SBGGR12,
> + .mbus_code = MEDIA_BUS_FMT_SBGGR12_1X12,
> + },
> + {
> + .pixelformat = V4L2_PIX_FMT_SGBRG12,
> + .mbus_code = MEDIA_BUS_FMT_SGBRG12_1X12,
> + },
> + {
> + .pixelformat = V4L2_PIX_FMT_SGRBG12,
> + .mbus_code = MEDIA_BUS_FMT_SGRBG12_1X12,
> + },
> + {
> + .pixelformat = V4L2_PIX_FMT_SRGGB12,
> + .mbus_code = MEDIA_BUS_FMT_SRGGB12_1X12,
> + },
> + /* Compressed */
> + {
> + .pixelformat = V4L2_PIX_FMT_JPEG,
> + .mbus_code = MEDIA_BUS_FMT_JPEG_1X8,
> + },
> +};
> +
> +static bool sun6i_csi_capture_format_match(u32 pixelformat, u32 mbus_code)
> +{
> + unsigned int i;
> +
> + for (i = 0; i < ARRAY_SIZE(sun6i_csi_capture_format_matches); i++) {
> + const struct sun6i_csi_capture_format_match *match =
> + &sun6i_csi_capture_format_matches[i];
> +
> + if (match->pixelformat == pixelformat &&
> + match->mbus_code == mbus_code)
> + return true;
> + }
> +
> + return false;
> +}
> +
> /* Capture */
>
> static void sun6i_csi_capture_irq_enable(struct sun6i_csi_device *csi_dev)
> diff --git a/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi_capture.h b/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi_capture.h
> index 4b1ff19edc2f..2605b16f091c 100644
> --- a/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi_capture.h
> +++ b/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi_capture.h
> @@ -27,6 +27,11 @@ struct sun6i_csi_capture_format {
> u32 hsize_len_factor;
> };
>
> +struct sun6i_csi_capture_format_match {
> + u32 pixelformat;
> + u32 mbus_code;
> +};
> +
> #undef current
> struct sun6i_csi_capture_state {
> struct list_head queue;

--
Kind regards,

Sakari Ailus