From: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
To: linux-kernel@vger.kernel.org, linux-media@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-sunxi@lists.linux.dev
Cc: Yong Deng <yong.deng@magewell.com>,
Paul Kocialkowski <paul.kocialkowski@bootlin.com>,
Mauro Carvalho Chehab <mchehab@kernel.org>,
Chen-Yu Tsai <wens@csie.org>,
Jernej Skrabec <jernej.skrabec@gmail.com>,
Samuel Holland <samuel@sholland.org>,
Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
Maxime Ripard <mripard@kernel.org>,
Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Subject: [PATCH v7 18/28] media: sun6i-csi: Introduce format match structure, list and helper
Date: Thu, 3 Nov 2022 17:31:03 +0100 [thread overview]
Message-ID: <20221103163113.245462-19-paul.kocialkowski@bootlin.com> (raw)
In-Reply-To: <20221103163113.245462-1-paul.kocialkowski@bootlin.com>
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.
Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
Acked-by: Jernej Skrabec <jernej.skrabec@gmail.com>
---
.../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;
--
2.38.1
next prev parent reply other threads:[~2022-11-03 16:32 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-11-03 16:30 [PATCH v7 00/28] Allwinner A31/A83T MIPI CSI-2 and A31 ISP / CSI Rework Paul Kocialkowski
2022-11-03 16:30 ` [PATCH v7 01/28] media: sun6i-csi: Add bridge v4l2 subdev with port management Paul Kocialkowski
2022-11-09 18:23 ` kernel test robot
2022-11-10 6:57 ` Dan Carpenter
2022-11-03 16:30 ` [PATCH v7 02/28] media: sun6i-csi: Rename sun6i_video to sun6i_csi_capture Paul Kocialkowski
2022-11-14 10:06 ` Sakari Ailus
2022-11-03 16:30 ` [PATCH v7 03/28] media: sun6i-csi: Add capture state using vsync for page flip Paul Kocialkowski
2022-11-03 16:30 ` [PATCH v7 04/28] media: sun6i-csi: Rework register definitions, invert misleading fields Paul Kocialkowski
2022-11-03 16:30 ` [PATCH v7 05/28] media: sun6i-csi: Add dimensions and format helpers to capture Paul Kocialkowski
2022-11-03 16:30 ` [PATCH v7 06/28] media: sun6i-csi: Implement address configuration without indirection Paul Kocialkowski
2022-11-03 16:30 ` [PATCH v7 07/28] media: sun6i-csi: Split stream sequences and irq code in capture Paul Kocialkowski
2022-11-03 16:30 ` [PATCH v7 08/28] media: sun6i-csi: Move power management to runtime pm " Paul Kocialkowski
2022-11-03 16:30 ` [PATCH v7 09/28] media: sun6i-csi: Move register configuration to capture Paul Kocialkowski
2022-11-03 16:30 ` [PATCH v7 10/28] media: sun6i-csi: Rework capture format management with helper Paul Kocialkowski
2022-11-03 16:30 ` [PATCH v7 11/28] media: sun6i-csi: Remove custom format helper and rework configure Paul Kocialkowski
2022-11-03 16:30 ` [PATCH v7 12/28] media: sun6i-csi: Add bridge dimensions and format helpers Paul Kocialkowski
2022-11-03 16:30 ` [PATCH v7 13/28] media: sun6i-csi: Get mbus code from bridge instead of storing it Paul Kocialkowski
2022-11-03 16:30 ` [PATCH v7 14/28] media: sun6i-csi: Tidy capture configure code Paul Kocialkowski
2022-11-03 16:31 ` [PATCH v7 15/28] media: sun6i-csi: Introduce bridge format structure, list and helper Paul Kocialkowski
2022-11-03 16:31 ` [PATCH v7 16/28] media: sun6i-csi: Introduce capture " Paul Kocialkowski
2022-11-03 16:31 ` [PATCH v7 17/28] media: sun6i-csi: Configure registers from format tables Paul Kocialkowski
2022-11-03 16:31 ` Paul Kocialkowski [this message]
2022-11-11 10:18 ` [PATCH v7 18/28] media: sun6i-csi: Introduce format match structure, list and helper Sakari Ailus
2022-11-11 10:21 ` Sakari Ailus
2022-11-03 16:31 ` [PATCH v7 19/28] media: sun6i-csi: Implement capture link validation with logic Paul Kocialkowski
2022-11-03 16:31 ` [PATCH v7 20/28] media: sun6i-csi: Get bridge subdev directly in capture stream ops Paul Kocialkowski
2022-11-03 16:31 ` [PATCH v7 21/28] media: sun6i-csi: Move hardware control to the bridge Paul Kocialkowski
2022-11-03 16:31 ` [PATCH v7 22/28] media: sun6i-csi: Rename the capture video device to sun6i-csi-capture Paul Kocialkowski
2022-11-03 16:31 ` [PATCH v7 23/28] media: sun6i-csi: Cleanup headers and includes, update copyright lines Paul Kocialkowski
2022-11-03 16:31 ` [PATCH v7 24/28] media: sun6i-csi: Add support for MIPI CSI-2 to the bridge code Paul Kocialkowski
2022-11-03 16:31 ` [PATCH v7 25/28] media: sun6i-csi: Only configure capture when streaming Paul Kocialkowski
2022-11-03 16:31 ` [PATCH v7 26/28] media: sun6i-csi: Add extra checks to the interrupt routine Paul Kocialkowski
2022-11-03 16:31 ` [PATCH v7 27/28] media: sun6i-csi: Request a shared interrupt Paul Kocialkowski
2022-11-03 16:31 ` [PATCH v7 28/28] MAINTAINERS: Add myself as sun6i-csi maintainer and rename/move entry Paul Kocialkowski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20221103163113.245462-19-paul.kocialkowski@bootlin.com \
--to=paul.kocialkowski@bootlin.com \
--cc=jernej.skrabec@gmail.com \
--cc=laurent.pinchart@ideasonboard.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=linux-sunxi@lists.linux.dev \
--cc=mchehab@kernel.org \
--cc=mripard@kernel.org \
--cc=samuel@sholland.org \
--cc=thomas.petazzoni@bootlin.com \
--cc=wens@csie.org \
--cc=yong.deng@magewell.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox