[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID:
<AS8PR04MB9080817D9A557B9D96F55066FAB4A@AS8PR04MB9080.eurprd04.prod.outlook.com>
Date: Mon, 22 Dec 2025 03:29:10 +0000
From: "G.N. Zhou" <guoniu.zhou@....com>
To: Frank Li <frank.li@....com>, "G.N. Zhou (OSS)" <guoniu.zhou@....nxp.com>
CC: Mauro Carvalho Chehab <mchehab@...nel.org>, Rob Herring <robh@...nel.org>,
Krzysztof Kozlowski <krzk+dt@...nel.org>, Conor Dooley <conor+dt@...nel.org>,
Shawn Guo <shawnguo@...nel.org>, Sascha Hauer <s.hauer@...gutronix.de>,
Pengutronix Kernel Team <kernel@...gutronix.de>, Fabio Estevam
<festevam@...il.com>, Laurent Pinchart <laurent.pinchart@...asonboard.com>,
"imx@...ts.linux.dev" <imx@...ts.linux.dev>, "linux-media@...r.kernel.org"
<linux-media@...r.kernel.org>, "devicetree@...r.kernel.org"
<devicetree@...r.kernel.org>, "linux-arm-kernel@...ts.infradead.org"
<linux-arm-kernel@...ts.infradead.org>, "linux-kernel@...r.kernel.org"
<linux-kernel@...r.kernel.org>
Subject: RE: [PATCH v3 2/2] media: nxp: Add i.MX9 CSI pixel formatter v4l2
driver
Hi Frank,
Thanks for your review.
> -----Original Message-----
> From: Frank Li <frank.li@....com>
> Sent: Saturday, December 20, 2025 12:08 AM
> To: G.N. Zhou (OSS) <guoniu.zhou@....nxp.com>
> Cc: Mauro Carvalho Chehab <mchehab@...nel.org>; Rob Herring
> <robh@...nel.org>; Krzysztof Kozlowski <krzk+dt@...nel.org>; Conor Dooley
> <conor+dt@...nel.org>; Shawn Guo <shawnguo@...nel.org>; Sascha Hauer
> <s.hauer@...gutronix.de>; Pengutronix Kernel Team
> <kernel@...gutronix.de>; Fabio Estevam <festevam@...il.com>; Laurent
> Pinchart <laurent.pinchart@...asonboard.com>; imx@...ts.linux.dev; linux-
> media@...r.kernel.org; devicetree@...r.kernel.org; linux-arm-
> kernel@...ts.infradead.org; linux-kernel@...r.kernel.org; G.N. Zhou
> <guoniu.zhou@....com>
> Subject: Re: [PATCH v3 2/2] media: nxp: Add i.MX9 CSI pixel formatter v4l2
> driver
>
> On Fri, Dec 19, 2025 at 09:50:58AM +0800, Guoniu Zhou wrote:
> > From: Guoniu Zhou <guoniu.zhou@....com>
> >
> > The CSI pixel formatter is a module found on i.MX95 used to reformat
> > packet info, pixel and non-pixel data from CSI-2 host controller to
> > match Pixel Link(PL) definition.
> >
> > Add data formatting support.
> >
> > Signed-off-by: Guoniu Zhou <guoniu.zhou@....com>
> > ---
> > MAINTAINERS | 8 +
> > drivers/media/platform/nxp/Kconfig | 14 +
> > drivers/media/platform/nxp/Makefile | 1 +
> > drivers/media/platform/nxp/imx9-csi-formatter.c | 880
> > ++++++++++++++++++++++++
> > 4 files changed, 903 insertions(+)
> >
> > diff --git a/MAINTAINERS b/MAINTAINERS index
> >
> 4205ca007e076f869613032b51e8cc5bff06b98e..3878957b81156e5cb41da26
> 99b2f
> > 588e49521724 100644
> > --- a/MAINTAINERS
> > +++ b/MAINTAINERS
> > @@ -18626,6 +18626,14 @@ S: Maintained
> > F: Documentation/devicetree/bindings/media/nxp,imx8-jpeg.yaml
> > F: drivers/media/platform/nxp/imx-jpeg
> >
> > +NXP i.MX 9 CSI PIXEL FORMATTER V4L2 DRIVER
> > +M: Guoniu Zhou <guoniu.zhou@....com>
> > +L: imx@...ts.linux.dev
> > +L: linux-media@...r.kernel.org
> > +S: Maintained
> > +F: Documentation/devicetree/bindings/media/fsl,imx9-csi-formatter.yaml
> > +F: drivers/media/platform/nxp/imx9-csi-formatter.c
> > +
> > NXP i.MX CLOCK DRIVERS
> > M: Abel Vesa <abelvesa@...nel.org>
> > R: Peng Fan <peng.fan@....com>
> > diff --git a/drivers/media/platform/nxp/Kconfig
> > b/drivers/media/platform/nxp/Kconfig
> > index
> >
> 40e3436669e213fdc5da70821dc0b420e1821f4f..a7bb62a2b0249659ffdfeac50
> fa4
> > 88aee9590a87 100644
> > --- a/drivers/media/platform/nxp/Kconfig
> > +++ b/drivers/media/platform/nxp/Kconfig
> > @@ -28,6 +28,20 @@ config VIDEO_IMX8MQ_MIPI_CSI2
> > Video4Linux2 driver for the MIPI CSI-2 receiver found on the i.MX8MQ
> > SoC.
> >
> > +config VIDEO_IMX9_CSI_FORMATTER
> > + tristate "NXP i.MX9 CSI Pixel Formatter driver"
> > + depends on ARCH_MXC || COMPILE_TEST
> > + depends on VIDEO_DEV
> > + select MEDIA_CONTROLLER
> > + select V4L2_FWNODE
> > + select VIDEO_V4L2_SUBDEV_API
> > + help
> > + This driver provides support for the CSI Pixel Formatter found on
> > + i.MX9 series SoC. This module unpacks the pixels received by the
> > + formatter and reformats them to meet the pixel link format
> requirement.
> > +
> > + Say Y here to enable CSI Pixel Formater module for i.MX9 SoC.
> > +
> > config VIDEO_IMX_MIPI_CSIS
> > tristate "NXP MIPI CSI-2 CSIS receiver found on i.MX7 and i.MX8
> models"
> > depends on ARCH_MXC || COMPILE_TEST
> > diff --git a/drivers/media/platform/nxp/Makefile
> > b/drivers/media/platform/nxp/Makefile
> > index
> >
> 4d90eb71365259ebdda84ea58483e1c4131d3ac7..39ba5660ba923141e7637b
> 01b5b3
> > 4a021dad7bb3 100644
> > --- a/drivers/media/platform/nxp/Makefile
> > +++ b/drivers/media/platform/nxp/Makefile
> > @@ -6,6 +6,7 @@ obj-y += imx8-isi/
> >
> > obj-$(CONFIG_VIDEO_IMX7_CSI) += imx7-media-csi.o
> > obj-$(CONFIG_VIDEO_IMX8MQ_MIPI_CSI2) += imx8mq-mipi-csi2.o
> > +obj-$(CONFIG_VIDEO_IMX9_CSI_FORMATTER) += imx9-csi-formatter.o
> > obj-$(CONFIG_VIDEO_IMX_MIPI_CSIS) += imx-mipi-csis.o
> > obj-$(CONFIG_VIDEO_IMX_PXP) += imx-pxp.o
> > obj-$(CONFIG_VIDEO_MX2_EMMAPRP) += mx2_emmaprp.o diff --git
> > a/drivers/media/platform/nxp/imx9-csi-formatter.c
> > b/drivers/media/platform/nxp/imx9-csi-formatter.c
> > new file mode 100644
> > index
> >
> 0000000000000000000000000000000000000000..5786e4690e31ee471caf82
> 01329c
> > 8e02a2cc0ee6
> > --- /dev/null
> > +++ b/drivers/media/platform/nxp/imx9-csi-formatter.c
> > @@ -0,0 +1,880 @@
> > +// SPDX-License-Identifier: GPL-2.0
> > +/*
> > + * Copyright 2025 NXP
> > + */
> > +
> ...
> > +
> > +static const struct dt_index formatter_dt_to_index_map[] = {
> > + { .dtype = MIPI_CSI2_DT_YUV420_8B, .index = 0 },
> > + { .dtype = MIPI_CSI2_DT_YUV420_8B_LEGACY, .index = 2 },
> > + { .dtype = MIPI_CSI2_DT_YUV422_8B, .index = 6 },
> > + { .dtype = MIPI_CSI2_DT_RGB444, .index = 8 },
> > + { .dtype = MIPI_CSI2_DT_RGB555, .index = 9 },
> > + { .dtype = MIPI_CSI2_DT_RGB565, .index = 10 },
> > + { .dtype = MIPI_CSI2_DT_RGB666, .index = 11 },
> > + { .dtype = MIPI_CSI2_DT_RGB888, .index = 12 },
> > + { .dtype = MIPI_CSI2_DT_RAW6, .index = 16 },
> > + { .dtype = MIPI_CSI2_DT_RAW7, .index = 17 },
> > + { .dtype = MIPI_CSI2_DT_RAW8, .index = 18 },
> > + { .dtype = MIPI_CSI2_DT_RAW10, .index = 19 },
> > + { .dtype = MIPI_CSI2_DT_RAW12, .index = 20 },
> > + { .dtype = MIPI_CSI2_DT_RAW14, .index = 21 },
> > + { .dtype = MIPI_CSI2_DT_RAW16, .index = 22 },
>
> what's these index value from? register bit?
Yes, they represent pixel data type for each virtual channel. You could refer to
i.MX95 RM Rev2 section "142.5.1.55 Table 913" for more details.
Best Regards
G.N Zhou
>
> Frank
> > +
> > +static u8 get_index_by_dt(u8 data_type) {
> > + unsigned int i;
> > +
> > + for (i = 0; i < ARRAY_SIZE(formatter_dt_to_index_map); ++i)
> > + if (data_type == formatter_dt_to_index_map[i].dtype)
> > + break;
> > +
> > + if (i == ARRAY_SIZE(formatter_dt_to_index_map))
> > + return formatter_dt_to_index_map[0].index;
> > +
> > + return formatter_dt_to_index_map[i].index;
> > +}
> > +
> ...
> >
> > --
> > 2.34.1
> >
Powered by blists - more mailing lists