All of lore.kernel.org
 help / color / mirror / Atom feed
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: linux-media@vger.kernel.org
Cc: Rui Miguel Silva <rmfrfs@gmail.com>,
	Steve Longerbeam <slongerbeam@gmail.com>,
	Philipp Zabel <p.zabel@pengutronix.de>,
	Jacopo Mondi <jacopo@jmondi.org>,
	Martin Kepplinger <martin.kepplinger@puri.sm>,
	Alexander Stein <alexander.stein@ew.tq-group.com>,
	Dorota Czaplejewicz <dorota.czaplejewicz@puri.sm>,
	kernel@pengutronix.de
Subject: [PATCH 41/50] staging: media: imx: imx7-media-csi: Drop YUV/RGB/BAYER format selectors
Date: Tue, 10 May 2022 14:58:50 +0300	[thread overview]
Message-ID: <20220510115859.19777-42-laurent.pinchart@ideasonboard.com> (raw)
In-Reply-To: <20220510115859.19777-1-laurent.pinchart@ideasonboard.com>

All the format lookup functions are called with a ANY selector, drop
selector support.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 drivers/staging/media/imx/imx7-media-csi.c | 105 +++++----------------
 1 file changed, 22 insertions(+), 83 deletions(-)

diff --git a/drivers/staging/media/imx/imx7-media-csi.c b/drivers/staging/media/imx/imx7-media-csi.c
index f3b9ce03318f..ab101d82c253 100644
--- a/drivers/staging/media/imx/imx7-media-csi.c
+++ b/drivers/staging/media/imx/imx7-media-csi.c
@@ -809,17 +809,6 @@ static irqreturn_t imx7_csi_irq_handler(int irq, void *data)
 
 #define IMX_BUS_FMTS(fmt...) (const u32[]) {fmt, 0}
 
-enum imx7_csi_pixfmt_sel {
-	IMX7_CSI_PIXFMT_SEL_YUV   = BIT(0), /* select YUV formats */
-	IMX7_CSI_PIXFMT_SEL_RGB   = BIT(1), /* select RGB formats */
-	IMX7_CSI_PIXFMT_SEL_BAYER = BIT(2), /* select BAYER formats */
-	IMX7_CSI_PIXFMT_SEL_YUV_RGB = IMX7_CSI_PIXFMT_SEL_YUV
-				    | IMX7_CSI_PIXFMT_SEL_RGB,
-	IMX7_CSI_PIXFMT_SEL_ANY = IMX7_CSI_PIXFMT_SEL_YUV
-				| IMX7_CSI_PIXFMT_SEL_RGB
-				| IMX7_CSI_PIXFMT_SEL_BAYER,
-};
-
 /*
  * List of supported pixel formats for the subdevs.
  */
@@ -927,25 +916,16 @@ static const struct imx7_csi_pixfmt pixel_formats[] = {
 
 /*
  * Search in the pixel_formats[] array for an entry with the given fourcc
- * that matches the requested selection criteria and return it.
- *
- * @fourcc: Search for an entry with the given fourcc pixel format.
- * @fmt_sel: Allow entries only with the given selection criteria.
+ * return it.
  */
-static const struct imx7_csi_pixfmt *
-imx7_csi_find_pixel_format(u32 fourcc, enum imx7_csi_pixfmt_sel fmt_sel)
+static const struct imx7_csi_pixfmt *imx7_csi_find_pixel_format(u32 fourcc)
 {
 	unsigned int i;
 
 	for (i = 0; i < ARRAY_SIZE(pixel_formats); i++) {
 		const struct imx7_csi_pixfmt *fmt = &pixel_formats[i];
-		enum imx7_csi_pixfmt_sel sel;
 
-		sel = fmt->bayer ? IMX7_CSI_PIXFMT_SEL_BAYER
-		    : (fmt->yuv ? IMX7_CSI_PIXFMT_SEL_YUV :
-		       IMX7_CSI_PIXFMT_SEL_RGB);
-
-		if ((fmt_sel & sel) && fmt->fourcc == fourcc)
+		if (fmt->fourcc == fourcc)
 			return fmt;
 	}
 
@@ -954,26 +934,17 @@ imx7_csi_find_pixel_format(u32 fourcc, enum imx7_csi_pixfmt_sel fmt_sel)
 
 /*
  * Search in the pixel_formats[] array for an entry with the given media
- * bus code that matches the requested selection criteria and return it.
- *
- * @code: Search for an entry with the given media-bus code.
- * @fmt_sel: Allow entries only with the given selection criteria.
+ * bus code and return it.
  */
-static const struct imx7_csi_pixfmt *
-imx7_csi_find_mbus_format(u32 code, enum imx7_csi_pixfmt_sel fmt_sel)
+static const struct imx7_csi_pixfmt *imx7_csi_find_mbus_format(u32 code)
 {
 	unsigned int i;
 
 	for (i = 0; i < ARRAY_SIZE(pixel_formats); i++) {
 		const struct imx7_csi_pixfmt *fmt = &pixel_formats[i];
-		enum imx7_csi_pixfmt_sel sel;
 		unsigned int j;
 
-		sel = fmt->bayer ? IMX7_CSI_PIXFMT_SEL_BAYER
-		    : (fmt->yuv ? IMX7_CSI_PIXFMT_SEL_YUV :
-		       IMX7_CSI_PIXFMT_SEL_RGB);
-
-		if (!(fmt_sel & sel) || !fmt->codes)
+		if (!fmt->codes)
 			continue;
 
 		for (j = 0; fmt->codes[j]; j++) {
@@ -993,27 +964,15 @@ imx7_csi_find_mbus_format(u32 code, enum imx7_csi_pixfmt_sel fmt_sel)
  * @fourcc: The returned fourcc that matches the search criteria at
  *          the requested match index.
  * @index: The requested match index.
- * @fmt_sel: Include in the enumeration entries with the given selection
- *           criteria.
  * @code: If non-zero, only include in the enumeration entries matching this
  *	media bus code.
  */
-static int imx7_csi_enum_pixel_formats(u32 *fourcc, u32 index,
-				       enum imx7_csi_pixfmt_sel fmt_sel,
-				       u32 code)
+static int imx7_csi_enum_pixel_formats(u32 *fourcc, u32 index, u32 code)
 {
 	unsigned int i;
 
 	for (i = 0; i < ARRAY_SIZE(pixel_formats); i++) {
 		const struct imx7_csi_pixfmt *fmt = &pixel_formats[i];
-		enum imx7_csi_pixfmt_sel sel;
-
-		sel = fmt->bayer ? IMX7_CSI_PIXFMT_SEL_BAYER
-		    : (fmt->yuv ? IMX7_CSI_PIXFMT_SEL_YUV :
-		       IMX7_CSI_PIXFMT_SEL_RGB);
-
-		if (!(fmt_sel & sel))
-			continue;
 
 		/*
 		 * If a media bus code is specified, only consider formats that
@@ -1053,24 +1012,16 @@ static int imx7_csi_enum_pixel_formats(u32 *fourcc, u32 index,
  * @code: The returned media-bus code that matches the search criteria at
  *        the requested match index.
  * @index: The requested match index.
- * @fmt_sel: Include in the enumeration entries with the given selection
- *           criteria.
  */
-static int imx7_csi_enum_mbus_formats(u32 *code, u32 index,
-				      enum imx7_csi_pixfmt_sel fmt_sel)
+static int imx7_csi_enum_mbus_formats(u32 *code, u32 index)
 {
 	unsigned int i;
 
 	for (i = 0; i < ARRAY_SIZE(pixel_formats); i++) {
 		const struct imx7_csi_pixfmt *fmt = &pixel_formats[i];
-		enum imx7_csi_pixfmt_sel sel;
 		unsigned int j;
 
-		sel = fmt->bayer ? IMX7_CSI_PIXFMT_SEL_BAYER
-		    : (fmt->yuv ? IMX7_CSI_PIXFMT_SEL_YUV :
-		       IMX7_CSI_PIXFMT_SEL_RGB);
-
-		if (!(fmt_sel & sel) || !fmt->codes)
+		if (!fmt->codes)
 			continue;
 
 		for (j = 0; fmt->codes[j]; j++) {
@@ -1099,7 +1050,7 @@ static int imx7_csi_init_mbus_fmt(struct v4l2_mbus_framefmt *mbus,
 	if (code == 0)
 		code = IMX7_CSI_DEF_MBUS_CODE;
 
-	lcc = imx7_csi_find_mbus_format(code, IMX7_CSI_PIXFMT_SEL_ANY);
+	lcc = imx7_csi_find_mbus_format(code);
 	if (!lcc)
 		return -EINVAL;
 
@@ -1127,8 +1078,7 @@ static int imx7_csi_mbus_fmt_to_pix_fmt(struct v4l2_pix_format *pix,
 	u32 stride;
 
 	if (!cc) {
-		cc = imx7_csi_find_mbus_format(mbus->code,
-					       IMX7_CSI_PIXFMT_SEL_ANY);
+		cc = imx7_csi_find_mbus_format(mbus->code);
 		if (!cc)
 			return -EINVAL;
 	}
@@ -1178,7 +1128,6 @@ static int imx7_csi_video_enum_fmt_vid_cap(struct file *file, void *fh,
 					   struct v4l2_fmtdesc *f)
 {
 	return imx7_csi_enum_pixel_formats(&f->pixelformat, f->index,
-					   IMX7_CSI_PIXFMT_SEL_ANY,
 					   f->mbus_code);
 }
 
@@ -1190,8 +1139,7 @@ static int imx7_csi_video_enum_framesizes(struct file *file, void *fh,
 	if (fsize->index > 0)
 		return -EINVAL;
 
-	cc = imx7_csi_find_pixel_format(fsize->pixel_format,
-					IMX7_CSI_PIXFMT_SEL_ANY);
+	cc = imx7_csi_find_pixel_format(fsize->pixel_format);
 	if (!cc)
 		return -EINVAL;
 
@@ -1232,13 +1180,10 @@ __imx7_csi_video_try_fmt(struct v4l2_pix_format *pixfmt,
 	 * Find the pixel format, default to the first supported format if not
 	 * found.
 	 */
-	cc = imx7_csi_find_pixel_format(pixfmt->pixelformat,
-					IMX7_CSI_PIXFMT_SEL_ANY);
+	cc = imx7_csi_find_pixel_format(pixfmt->pixelformat);
 	if (!cc) {
-		imx7_csi_enum_pixel_formats(&pixfmt->pixelformat, 0,
-					    IMX7_CSI_PIXFMT_SEL_ANY, 0);
-		cc = imx7_csi_find_pixel_format(pixfmt->pixelformat,
-						IMX7_CSI_PIXFMT_SEL_ANY);
+		imx7_csi_enum_pixel_formats(&pixfmt->pixelformat, 0, 0);
+		cc = imx7_csi_find_pixel_format(pixfmt->pixelformat);
 	}
 
 	/* Allow IDMAC interweave but enforce field order from source. */
@@ -1463,8 +1408,7 @@ static int imx7_csi_video_validate_fmt(struct imx7_csi *csi)
 	 * Verify that the media bus code is compatible with the pixel format
 	 * set on the video node.
 	 */
-	cc = imx7_csi_find_mbus_format(fmt_src.format.code,
-				       IMX7_CSI_PIXFMT_SEL_ANY);
+	cc = imx7_csi_find_mbus_format(fmt_src.format.code);
 	if (!cc || csi->vdev_cc->yuv != cc->yuv)
 		return -EPIPE;
 
@@ -1638,8 +1582,7 @@ static int imx7_csi_video_init_format(struct imx7_csi *csi)
 	csi->vdev_compose.width = fmt_src.format.width;
 	csi->vdev_compose.height = fmt_src.format.height;
 
-	csi->vdev_cc = imx7_csi_find_pixel_format(csi->vdev_fmt.pixelformat,
-						  IMX7_CSI_PIXFMT_SEL_ANY);
+	csi->vdev_cc = imx7_csi_find_pixel_format(csi->vdev_fmt.pixelformat);
 
 	return 0;
 }
@@ -1846,8 +1789,7 @@ static int imx7_csi_enum_mbus_code(struct v4l2_subdev *sd,
 
 	switch (code->pad) {
 	case IMX7_CSI_PAD_SINK:
-		ret = imx7_csi_enum_mbus_formats(&code->code, code->index,
-						 IMX7_CSI_PIXFMT_SEL_ANY);
+		ret = imx7_csi_enum_mbus_formats(&code->code, code->index);
 		break;
 	case IMX7_CSI_PAD_SRC:
 		if (code->index != 0) {
@@ -1904,7 +1846,7 @@ static void imx7_csi_try_colorimetry(struct v4l2_mbus_framefmt *tryfmt)
 	const struct imx7_csi_pixfmt *cc;
 	bool is_rgb = false;
 
-	cc = imx7_csi_find_mbus_format(tryfmt->code, IMX7_CSI_PIXFMT_SEL_ANY);
+	cc = imx7_csi_find_mbus_format(tryfmt->code);
 	if (cc && !cc->yuv)
 		is_rgb = true;
 
@@ -1954,8 +1896,7 @@ static int imx7_csi_try_fmt(struct imx7_csi *csi,
 
 	switch (sdformat->pad) {
 	case IMX7_CSI_PAD_SRC:
-		in_cc = imx7_csi_find_mbus_format(in_fmt->code,
-						  IMX7_CSI_PIXFMT_SEL_ANY);
+		in_cc = imx7_csi_find_mbus_format(in_fmt->code);
 
 		sdformat->format.width = in_fmt->width;
 		sdformat->format.height = in_fmt->height;
@@ -1969,12 +1910,10 @@ static int imx7_csi_try_fmt(struct imx7_csi *csi,
 		sdformat->format.ycbcr_enc = in_fmt->ycbcr_enc;
 		break;
 	case IMX7_CSI_PAD_SINK:
-		*cc = imx7_csi_find_mbus_format(sdformat->format.code,
-						IMX7_CSI_PIXFMT_SEL_ANY);
+		*cc = imx7_csi_find_mbus_format(sdformat->format.code);
 		if (!*cc) {
 			code = IMX7_CSI_DEF_MBUS_CODE;
-			*cc = imx7_csi_find_mbus_format(code,
-							IMX7_CSI_PIXFMT_SEL_ANY);
+			*cc = imx7_csi_find_mbus_format(code);
 			sdformat->format.code = code;
 		}
 
-- 
Regards,

Laurent Pinchart


  parent reply	other threads:[~2022-05-10 12:00 UTC|newest]

Thread overview: 69+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-05-10 11:58 [PATCH 00/50] staging: media: imx: Prepare destaging of imx7-media-csi Laurent Pinchart
2022-05-10 11:58 ` [PATCH 01/50] staging: media: imx: imx7-media-csi: Initialize locks early on Laurent Pinchart
2022-05-10 11:58 ` [PATCH 02/50] staging: media: imx: imx7-media-csi: Split imx_media_dev from probe() Laurent Pinchart
2022-05-10 14:09   ` Rui Miguel Silva
2022-05-10 14:42     ` Laurent Pinchart
2022-05-10 15:25   ` [PATCH v1.1 " Laurent Pinchart
2022-05-10 15:49     ` Rui Miguel Silva
2022-05-10 11:58 ` [PATCH 03/50] staging: media: imx: imx7-media-csi: Import notifier helpers Laurent Pinchart
2022-05-10 11:58 ` [PATCH 04/50] staging: media: imx: imx7-media-csi: Drop duplicate link creation Laurent Pinchart
2022-05-10 11:58 ` [PATCH 05/50] staging: media: imx: imx7-media-csi: Drop the imx_media notifier Laurent Pinchart
2022-05-10 11:58 ` [PATCH 06/50] staging: media: imx: imx7-media-csi: Move misc init out of probe() Laurent Pinchart
2022-05-10 15:26   ` [PATCH v1.1 " Laurent Pinchart
2022-05-10 11:58 ` [PATCH 07/50] staging: media: imx: imx7-media-csi: Don't populate vdev lists Laurent Pinchart
2022-05-10 11:58 ` [PATCH 08/50] staging: media: imx: imx7-media-csi: Drop unused frame_interval Laurent Pinchart
2022-05-10 11:58 ` [PATCH 09/50] staging: media: imx: imx7-media-csi: Move format init to probe time Laurent Pinchart
2022-05-10 11:58 ` [PATCH 10/50] staging: media: imx: imx7-media-csi: Remove imx_media_of_add_csi Laurent Pinchart
2022-05-10 11:58 ` [PATCH 11/50] staging: media: imx: imx7-media-csi: Import video device helpers Laurent Pinchart
2022-05-10 11:58 ` [PATCH 12/50] staging: media: imx: imx7-media-csi: Drop legacy video device support Laurent Pinchart
2022-05-10 11:58 ` [PATCH 13/50] staging: media: imx: imx7-media-csi: Drop unused controls support Laurent Pinchart
2022-05-10 11:58 ` [PATCH 14/50] staging: media: imx: imx7-media-csi: Reorganize imx7_csi structure Laurent Pinchart
2022-05-10 11:58 ` [PATCH 15/50] staging: media: imx: imx7-media-csi: Fold capture_priv into imx7_csi Laurent Pinchart
2022-05-10 11:58 ` [PATCH 16/50] staging: media: imx: imx7-media-csi: Ensure consistent function prefix Laurent Pinchart
2022-05-10 11:58 ` [PATCH 17/50] staging: media: imx: imx7-media-csi: Don't set subdev group id Laurent Pinchart
2022-05-10 11:58 ` [PATCH 18/50] staging: media: imx: imx7-media-csi: Import imx_media_dev_init() helper Laurent Pinchart
2022-05-10 11:58 ` [PATCH 19/50] staging: media: imx: imx7-media-csi: Embed imx_media_dev in imx7_csi Laurent Pinchart
2022-05-10 11:58 ` [PATCH 20/50] staging: media: imx: imx7-media-csi: Drop imx_media_add_video_device call Laurent Pinchart
2022-05-10 11:58 ` [PATCH 21/50] staging: media: imx: imx7-media-csi: Don't initialize unused fields Laurent Pinchart
2022-05-10 11:58 ` [PATCH 22/50] staging: media: imx: imx7-media-csi: Inline imx_media_pipeline_pad() Laurent Pinchart
2022-05-10 11:58 ` [PATCH 23/50] staging: media: imx: imx7-media-csi: Import imx_media_pipeline_set_stream() Laurent Pinchart
2022-05-10 11:58 ` [PATCH 24/50] staging: media: imx: imx7-media-csi: Avoid unnecessary casts Laurent Pinchart
2022-05-10 11:58 ` [PATCH 25/50] staging: media: imx: imx7-media-csi: Inline pipeline start/stop Laurent Pinchart
2022-05-10 11:58 ` [PATCH 26/50] staging: media: imx: imx7-media-csi: Fold imx_media_dev into imx7_csi Laurent Pinchart
2022-05-10 11:58 ` [PATCH 27/50] staging: media: imx: imx7-media-csi: Decouple from imx_media_buffer Laurent Pinchart
2022-05-10 11:58 ` [PATCH 28/50] staging: media: imx: imx7-media-csi: Fold imx_media_video_dev into imx7_csi Laurent Pinchart
2022-05-10 11:58 ` [PATCH 29/50] staging: media: imx: imx7-media-csi: Store imx7_csi in drv data Laurent Pinchart
2022-05-10 11:58 ` [PATCH 30/50] staging: media: imx: imx7-media-csi: Decouple from imx_media_dma_buf Laurent Pinchart
2022-05-10 11:58 ` [PATCH 31/50] staging: media: imx: imx7-media-csi: Decouple from shared macros Laurent Pinchart
2022-05-10 11:58 ` [PATCH 32/50] staging: media: imx: imx7-media-csi: Drop error message on alloc failure Laurent Pinchart
2022-05-10 11:58 ` [PATCH 33/50] staging: media: imx: imx7-media-csi: Import format helpers Laurent Pinchart
2022-05-10 11:58 ` [PATCH 34/50] staging: media: imx: imx7-media-csi: Replace ipu_color_space with bool yuv field Laurent Pinchart
2022-05-10 11:58 ` [PATCH 35/50] staging: media: imx: imx7-media-csi: Drop IC support from imx7_csi_try_colorimetry() Laurent Pinchart
2022-05-10 11:58 ` [PATCH 36/50] staging: media: imx: imx7-media-csi: Drop IPU-only formats Laurent Pinchart
2022-05-10 11:58 ` [PATCH 37/50] staging: media: imx: imx7-media-csi: Drop unsupported YUV and RGB formats Laurent Pinchart
2022-05-10 11:58 ` [PATCH 38/50] staging: media: imx: imx7-media-csi: Make default formats consistent Laurent Pinchart
2022-05-10 11:58 ` [PATCH 39/50] staging: media: imx: imx7-media-csi: Define macro for default mbus code Laurent Pinchart
2022-05-11 13:22   ` Alexander Stein
2022-05-11 20:20     ` Laurent Pinchart
2022-07-07  0:19   ` [PATCH v1.1 " Laurent Pinchart
2022-05-10 11:58 ` [PATCH 40/50] staging: media: imx: imx7-media-csi: Simplify default mbus code in try_fmt Laurent Pinchart
2022-05-10 11:58 ` Laurent Pinchart [this message]
2022-05-10 11:58 ` [PATCH 42/50] staging: media: imx: imx7-media-csi: Drop unneeded imx7_csi_pixfmt fields Laurent Pinchart
2022-05-10 11:58 ` [PATCH 43/50] staging: media: imx: imx7-media-csi: Inline imx7_csi_init_mbus_fmt() Laurent Pinchart
2022-05-10 11:58 ` [PATCH 44/50] staging: media: imx: imx7-media-csi: Simplify default format in try_fmt Laurent Pinchart
2022-05-11 13:27   ` Alexander Stein
2022-07-07  0:20   ` [PATCH v1.1 " Laurent Pinchart
2022-05-10 11:58 ` [PATCH 45/50] staging: media: imx: imx7-media-csi: Fix list of supported formats Laurent Pinchart
2022-05-10 11:58 ` [PATCH 46/50] staging: media: imx: imx7-media-csi: Add V4L2_PIX_FMT_Y14 support Laurent Pinchart
2022-05-10 11:58 ` [PATCH 47/50] staging: media: imx: imx7-media-csi: Drop unneeded pixel format validation Laurent Pinchart
2022-05-10 11:58 ` [PATCH 48/50] staging: media: imx: imx7-media-csi: Inline imx7_csi_enum_pixel_formats() Laurent Pinchart
2022-05-10 11:58 ` [PATCH 49/50] staging: media: imx: imx7-media-csi: Drop V4L2 events support Laurent Pinchart
2022-05-10 11:58 ` [PATCH 50/50] staging: media: imx: imx7-media-csi: Drop usage of shared helpers Laurent Pinchart
2022-05-10 14:04 ` [PATCH 00/50] staging: media: imx: Prepare destaging of imx7-media-csi Rui Miguel Silva
2022-05-10 14:18   ` Laurent Pinchart
2022-05-11 13:36 ` (EXT) " Alexander Stein
2022-07-07  0:23   ` Laurent Pinchart
2022-07-07 10:45     ` Alexander Stein
2022-07-07 11:34       ` Laurent Pinchart
2022-07-07 11:52         ` Alexander Stein
2022-05-16  7:59 ` Alexander Stein

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=20220510115859.19777-42-laurent.pinchart@ideasonboard.com \
    --to=laurent.pinchart@ideasonboard.com \
    --cc=alexander.stein@ew.tq-group.com \
    --cc=dorota.czaplejewicz@puri.sm \
    --cc=jacopo@jmondi.org \
    --cc=kernel@pengutronix.de \
    --cc=linux-media@vger.kernel.org \
    --cc=martin.kepplinger@puri.sm \
    --cc=p.zabel@pengutronix.de \
    --cc=rmfrfs@gmail.com \
    --cc=slongerbeam@gmail.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.