From: Sakari Ailus <sakari.ailus@linux.intel.com>
To: Linus Walleij <linusw@kernel.org>
Cc: linux-media@vger.kernel.org, laurent.pinchart@ideasonboard.com,
Dave Stevenson <dave.stevenson@raspberrypi.com>,
Jacopo Mondi <jacopo.mondi@ideasonboard.com>,
Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>,
Jai Luthra <jai.luthra@ideasonboard.com>,
Mehdi Djait <mehdi.djait@linux.intel.com>,
Mattijs Korpershoek <mkorpershoek@kernel.org>
Subject: Re: [PATCH v3 01/29] media: v4l2-common: Add helper function media_bus_fmt_to_csi2_(bpp|dt)()
Date: Wed, 23 Sep 2026 14:27:41 +0300 [thread overview]
Message-ID: <arO3rTf4vRD4OfxC@kekkonen.localdomain> (raw)
In-Reply-To: <CAD++jL=kHg-rMyQJ5_Rb0RKMq8dM4yt4HRkMG5qZ5A2J=wAQLw@mail.gmail.com>
Hej Linus,
On Fri, Aug 28, 2026 at 12:29:36AM +0200, Linus Walleij wrote:
> Hi Sakari/Frank,
>
> one more thing which might be a rookie mistake on my side though:
>
> On Mon, Aug 24, 2026 at 2:14 PM Sakari Ailus
> <sakari.ailus@linux.intel.com> wrote:
>
> In this example:
>
> > CSI2 data type is defined by MIPI Camera Serial Interface 2 Spec Ver4.1.
> > See section 9.4.
> >
> > Add helper function media_bus_fmt_to_csi2_dt() to convert media bus fmt to
> > MIPI defined data type and avoid below duplicated static array in each CSI2
> > drivers.
> >
> > {
> > .code = MEDIA_BUS_FMT_UYVY8_1X16,
> > .data_type = MIPI_CSI2_DT_YUV422_8B,
> > }
>
> The way I read the CSI-2 spec YUV422 8bit has this byte order: U Y V Y
> (this is in section 11.2.4 in my copy of the spec, figure and all)
> so this looks correct if you just look at that string: UYVY no problem.
>
> I tried to understand the MEDIA_BUS_FMT_* conventions...
> I looked here:
> https://docs.kernel.org/next/userspace-api/media/v4l/subdev-formats.html
>
> And in the table in the docs:
>
> Word 1: bit 15..8 is U, bits 7..0 is Y
> Word 2: bit 15..8 is V, bits 7..0 is Y
>
> I *think* 1X16 should be understood as 2x16bit words (samples?) where
> each 16bit word is in LSB, MSB ("little endian") order, i.. bits 7..0 (Y)
> are transmitted *first* then bits 15..8 (U) correct me
> if I misunderstood!
>
> Then UYVY8_1X16 becomes the *byte* order Y U Y V.
>
> But YUYV on the other hand becomes U Y V Y !
>
> Isn't this then MEDIA_BUS_FMT_YUYV8_1X16 ?
>
> I'm reading the spec and Linux format codes until my eyes fall out...
Good question. The practice has been to use mbus codes ending _xXy, where y
is the pixel depth, to denote MIPI CSI-2 data types. Presumably, if a
driver uses these formats with CSI-2, then this is the MIPI CSI-2 data type
employed, even if the pixel order is different.
The entries are used to convert the mbus codes to MIPI CSI-2 data types, so
I expect no issues even if we have a data type for an mbus code that
doesn't have an exact match with the MIPI spec pixel order-wise.
>
> It's there in the code though:
>
> > + { .code = MEDIA_BUS_FMT_UYVY8_1X16, .dt = MIPI_CSI2_DT_YUV422_8B, .bpp = 16 },
> > + { .code = MEDIA_BUS_FMT_VYUY8_1X16, .dt = MIPI_CSI2_DT_YUV422_8B, .bpp = 16 },
> > + { .code = MEDIA_BUS_FMT_YUYV8_1X16, .dt = MIPI_CSI2_DT_YUV422_8B, .bpp = 16 },
> > + { .code = MEDIA_BUS_FMT_YVYU8_1X16, .dt = MIPI_CSI2_DT_YUV422_8B, .bpp = 16 },
>
> all four of the related encodings, I don't know if this works in practice
> but it seems off. Three of them must be wrong since MIPI_CSI2_DT_YUV422_8B
> is very determined?
>
> Obviously I didn't check the entire table like this, but if there is something
> to what I'm saying then we have to...
--
Med trevliga hälsningar,
Sakari Ailus
next prev parent reply other threads:[~2026-09-23 11:27 UTC|newest]
Thread overview: 119+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-24 12:14 [PATCH v3 00/29] Rework frame descriptors Sakari Ailus
2026-08-24 12:14 ` [PATCH v3 01/29] media: v4l2-common: Add helper function media_bus_fmt_to_csi2_(bpp|dt)() Sakari Ailus
2026-08-26 13:18 ` Linus Walleij
2026-08-27 7:45 ` Linus Walleij
2026-08-27 8:50 ` Sakari Ailus
2026-08-27 9:34 ` Sakari Ailus
2026-08-27 22:29 ` Linus Walleij
2026-09-23 11:27 ` Sakari Ailus [this message]
2026-08-24 12:14 ` [PATCH v3 02/29] media: v4l2-subdev: Align frame descriptor error codes with routing Sakari Ailus
2026-08-27 7:46 ` Linus Walleij
2026-08-24 12:14 ` [PATCH v3 03/29] media: v4l2-subdev: Prepare for changes in getting frame descriptors Sakari Ailus
2026-08-31 12:43 ` Linus Walleij
2026-09-02 11:55 ` Sakari Ailus
2026-08-31 12:44 ` Linus Walleij
2026-09-02 12:00 ` Sakari Ailus
2026-08-24 12:14 ` [PATCH v3 04/29] media: v4l2-subdev: Allow releasing frame descriptors on return Sakari Ailus
2026-08-24 20:34 ` Frank Li
2026-08-31 12:54 ` Linus Walleij
2026-09-02 11:23 ` Sakari Ailus
2026-08-24 12:14 ` [PATCH v3 05/29] media: v4l2-subdev: Allow allocating frame descriptors based on the need Sakari Ailus
2026-08-31 13:18 ` Linus Walleij
2026-09-01 12:30 ` Linus Walleij
2026-09-23 12:11 ` Sakari Ailus
2026-08-24 12:14 ` [PATCH v3 06/29] media: v4l2-subdev: Change the maximum number of routes Sakari Ailus
2026-09-01 12:31 ` Linus Walleij
2026-08-24 12:14 ` [PATCH v3 07/29] media: v4l2-subdev: Add frame descriptor passthrough for CSI-2 and DVP Sakari Ailus
2026-08-24 20:43 ` Frank Li
2026-09-01 13:01 ` Linus Walleij
2026-09-02 12:02 ` Sakari Ailus
2026-09-02 13:04 ` Linus Walleij
2026-08-24 12:14 ` [PATCH v3 08/29] media: ds90ub913: Use v4l2_subdev_get_frame_desc_passthrough_csi2() Sakari Ailus
2026-08-24 20:44 ` Frank Li
2026-09-01 13:12 ` Linus Walleij
2026-09-02 12:05 ` Sakari Ailus
2026-08-24 12:14 ` [PATCH v3 09/29] media: ds90ub953: " Sakari Ailus
2026-08-24 20:44 ` Frank Li
2026-09-01 13:17 ` Linus Walleij
2026-08-24 12:14 ` [PATCH v3 10/29] media: nxp: imx8-isi: " Sakari Ailus
2026-08-24 20:44 ` Frank Li
2026-09-01 13:30 ` Linus Walleij
2026-08-24 12:14 ` [PATCH v3 11/29] media: rzg2l-cru: " Sakari Ailus
2026-08-24 20:45 ` Frank Li
2026-09-01 21:18 ` Linus Walleij
2026-09-02 12:22 ` Sakari Ailus
2026-08-24 12:14 ` [PATCH v3 12/29] media: dw-mipi-csi2rx: " Sakari Ailus
2026-08-24 20:46 ` Frank Li
2026-09-01 21:22 ` Linus Walleij
2026-08-24 12:14 ` [PATCH v3 13/29] media: cdn-csi2rc: media: " Sakari Ailus
2026-08-24 20:47 ` Frank Li
2026-08-26 6:41 ` Jai Luthra
2026-09-01 21:43 ` Linus Walleij
2026-09-09 8:39 ` Sakari Ailus
2026-08-24 12:14 ` [PATCH v3 14/29] media: v4l2-subdev: Make v4l2_subdev_get_frame_desc_passthrough() static Sakari Ailus
2026-08-24 20:48 ` Frank Li
2026-09-01 22:16 ` Linus Walleij
2026-08-24 12:14 ` [PATCH v3 15/29] media: v4l2-subdev: Return dynamically allocated pass-through routes Sakari Ailus
2026-08-24 21:00 ` Frank Li
2026-08-25 7:36 ` Sakari Ailus
2026-09-02 5:44 ` Linus Walleij
2026-09-02 9:34 ` Linus Walleij
2026-09-09 9:12 ` Sakari Ailus
2026-09-09 9:10 ` Sakari Ailus
2026-08-24 12:14 ` [PATCH v3 16/29] media: v4l2-subdev: Always return at least one frame descriptor Sakari Ailus
2026-09-04 10:27 ` Linus Walleij
2026-08-24 12:14 ` [PATCH v3 17/29] media: bcm2835-unicam: Use v4l2_subdev_get_frame_desc() Sakari Ailus
2026-08-24 21:07 ` Frank Li
2026-08-25 7:40 ` Sakari Ailus
2026-09-04 10:32 ` Linus Walleij
2026-08-24 12:14 ` [PATCH v3 18/29] media: bcm2835-unicam: Remove frame descriptor workaround Sakari Ailus
2026-08-24 21:10 ` Frank Li
2026-08-26 12:09 ` Sakari Ailus
2026-09-04 10:43 ` Linus Walleij
2026-09-09 9:26 ` Sakari Ailus
2026-08-24 12:14 ` [PATCH v3 19/29] media: nxp: imx8-isi: Use v4l2_subdev_get_frame_desc() Sakari Ailus
2026-09-04 12:44 ` Linus Walleij
2026-08-24 12:14 ` [PATCH v3 20/29] media: raspberrypi: cfe: " Sakari Ailus
2026-08-24 21:11 ` Frank Li
2026-09-04 12:51 ` Linus Walleij
2026-08-24 12:14 ` [PATCH v3 21/29] media: rzg2l-cru: " Sakari Ailus
2026-08-24 21:13 ` Frank Li
2026-09-04 12:57 ` Linus Walleij
2026-08-24 12:14 ` [PATCH v3 22/29] media: rkisp1: " Sakari Ailus
2026-08-24 21:13 ` Frank Li
2026-09-04 13:12 ` Linus Walleij
2026-09-09 10:06 ` Sakari Ailus
2026-08-24 12:14 ` [PATCH v3 23/29] media: exynos4-is: " Sakari Ailus
2026-08-24 21:22 ` Frank Li
2026-09-04 13:35 ` Linus Walleij
2026-08-24 12:14 ` [PATCH v3 24/29] media: ti: cal: " Sakari Ailus
2026-08-24 21:26 ` Frank Li
2026-08-25 8:05 ` Sakari Ailus
2026-09-04 13:38 ` Linus Walleij
2026-08-24 12:14 ` [PATCH v3 25/29] media: ipu6: " Sakari Ailus
2026-08-24 21:26 ` Frank Li
2026-09-04 20:21 ` Linus Walleij
2026-09-16 8:09 ` Sakari Ailus
2026-08-24 12:14 ` [PATCH v3 26/29] staging: media: ipu7: " Sakari Ailus
2026-08-24 21:27 ` Frank Li
2026-09-04 20:25 ` Linus Walleij
2026-08-24 12:14 ` [PATCH v3 27/29] media: cdns-csi2rc: " Sakari Ailus
2026-08-24 21:29 ` Frank Li
2026-08-26 6:39 ` Jai Luthra
2026-09-04 20:27 ` Linus Walleij
2026-09-16 8:12 ` Sakari Ailus
2026-08-24 12:14 ` [PATCH v3 28/29] media: v4l2-subdev: Use v4l2_subdev_get_frame_desc() for passthrough Sakari Ailus
2026-08-24 21:37 ` Frank Li
2026-08-25 7:34 ` Sakari Ailus
2026-09-04 20:38 ` Linus Walleij
2026-09-16 8:22 ` Sakari Ailus
2026-09-04 20:45 ` Linus Walleij
2026-08-24 12:14 ` [PATCH v3 29/29] media: j721e-csi2rx: Use v4l2_subdev_get_frame_desc() Sakari Ailus
2026-08-24 21:38 ` Frank Li
2026-08-26 6:36 ` Jai Luthra
2026-09-04 20:54 ` Linus Walleij
2026-09-16 8:32 ` Sakari Ailus
2026-09-16 12:48 ` Jai Luthra
2026-08-26 9:58 ` [PATCH v3 00/29] Rework frame descriptors Mattijs Korpershoek
2026-09-17 8:04 ` Tomi Valkeinen
2026-09-21 8:22 ` Mattijs Korpershoek
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=arO3rTf4vRD4OfxC@kekkonen.localdomain \
--to=sakari.ailus@linux.intel.com \
--cc=dave.stevenson@raspberrypi.com \
--cc=jacopo.mondi@ideasonboard.com \
--cc=jai.luthra@ideasonboard.com \
--cc=laurent.pinchart@ideasonboard.com \
--cc=linusw@kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=mehdi.djait@linux.intel.com \
--cc=mkorpershoek@kernel.org \
--cc=tomi.valkeinen@ideasonboard.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