]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
media: nxp: imx8-isi: Add parallel camera input support for i.MX93
authorAlice Yuan <alice.yuan@nxp.com>
Fri, 5 Sep 2025 06:56:00 +0000 (14:56 +0800)
committerHans Verkuil <hverkuil+cisco@kernel.org>
Mon, 3 Nov 2025 10:40:22 +0000 (11:40 +0100)
The ISI module on i.MX93 implements one camera input which can be
connected to either of MIPI CSI-2 or parallel camera. The source
type can be selected by setting camera mux control register.

Signed-off-by: Alice Yuan <alice.yuan@nxp.com>
Reviewed-by: Frank Li <Frank.Li@nxp.com>
Signed-off-by: Guoniu Zhou <guoniu.zhou@nxp.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Link: https://patch.msgid.link/20250905-isi_imx93-v2-3-37db5f768c57@nxp.com
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
drivers/media/platform/nxp/imx8-isi/imx8-isi-gasket.c

index 085754d361de762b6da0bad1648f0d20ef3052fb..58ec7eddcd3d7f31ccf6105e434fbbf3b25e4ee9 100644 (file)
@@ -61,6 +61,7 @@ const struct mxc_gasket_ops mxc_imx8_gasket_ops = {
 #define DISP_MIX_CAMERA_MUX                    0x30
 #define DISP_MIX_CAMERA_MUX_DATA_TYPE(x)       FIELD_PREP(GENMASK(8, 3), x)
 #define DISP_MIX_CAMERA_MUX_GASKET_ENABLE      BIT(16)
+#define DISP_MIX_CAMERA_MUX_GASKET_SOURCE_TYPE BIT(17)
 
 static void mxc_imx93_gasket_enable(struct mxc_isi_dev *isi,
                                    const struct v4l2_mbus_frame_desc *fd,
@@ -71,6 +72,16 @@ static void mxc_imx93_gasket_enable(struct mxc_isi_dev *isi,
 
        val = DISP_MIX_CAMERA_MUX_DATA_TYPE(fd->entry[0].bus.csi2.dt);
        val |= DISP_MIX_CAMERA_MUX_GASKET_ENABLE;
+
+       /*
+        * CAMERA MUX
+        * - [17]:      Selects source input to gasket
+        *              0: Data from MIPI CSI
+        *              1: Data from parallel camera
+        */
+       if (fd->type == V4L2_MBUS_FRAME_DESC_TYPE_PARALLEL)
+               val |= DISP_MIX_CAMERA_MUX_GASKET_SOURCE_TYPE;
+
        regmap_write(isi->gasket, DISP_MIX_CAMERA_MUX, val);
 }