[PATCH 4/5] media: nxp: imx8-isi: Add i.MX952 ISI support

From: Guoniu Zhou

Date: Wed Aug 26 2026 - 00:54:05 EST


The i.MX952 ISI is reused from the i.MX95 ISI with a minor silicon
revision. It can process up to 8 image sources simultaneously and
obtain image data from up to 4 pixel link sources.

Signed-off-by: Guoniu Zhou <guoniu.zhou@xxxxxxxxxxx>
---
drivers/media/platform/nxp/imx8-isi/imx8-isi-core.c | 14 ++++++++++++++
drivers/media/platform/nxp/imx8-isi/imx8-isi-core.h | 1 +
drivers/media/platform/nxp/imx8-isi/imx8-isi-regs.h | 2 +-
3 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/drivers/media/platform/nxp/imx8-isi/imx8-isi-core.c b/drivers/media/platform/nxp/imx8-isi/imx8-isi-core.c
index c1c16dbc1539..5b19b581b38e 100644
--- a/drivers/media/platform/nxp/imx8-isi/imx8-isi-core.c
+++ b/drivers/media/platform/nxp/imx8-isi/imx8-isi-core.c
@@ -392,6 +392,19 @@ static const struct mxc_isi_plat_data mxc_imx95_data = {
.has_36bit_dma = true,
};

+static const struct mxc_isi_plat_data mxc_imx952_data = {
+ .model = MXC_ISI_IMX952,
+ .num_ports = 4,
+ .num_channels = 8,
+ .num_vc = 8,
+ .reg_offset = 0x10000,
+ .ier_reg = &mxc_imx8_isi_ier_v2,
+ .set_thd = &mxc_imx8_isi_thd_v1,
+ .format_mask = GENMASK(30, 24),
+ .buf_active_reverse = true,
+ .has_36bit_dma = true,
+};
+
/* -----------------------------------------------------------------------------
* Power management
*/
@@ -582,6 +595,7 @@ static const struct of_device_id mxc_isi_of_match[] = {
{ .compatible = "fsl,imx91-isi", .data = &mxc_imx91_data },
{ .compatible = "fsl,imx93-isi", .data = &mxc_imx93_data },
{ .compatible = "fsl,imx95-isi", .data = &mxc_imx95_data },
+ { .compatible = "fsl,imx952-isi", .data = &mxc_imx952_data },
{ /* sentinel */ },
};
MODULE_DEVICE_TABLE(of, mxc_isi_of_match);
diff --git a/drivers/media/platform/nxp/imx8-isi/imx8-isi-core.h b/drivers/media/platform/nxp/imx8-isi/imx8-isi-core.h
index 05c21c448b93..a4b638508522 100644
--- a/drivers/media/platform/nxp/imx8-isi/imx8-isi-core.h
+++ b/drivers/media/platform/nxp/imx8-isi/imx8-isi-core.h
@@ -164,6 +164,7 @@ enum model {
MXC_ISI_IMX91,
MXC_ISI_IMX93,
MXC_ISI_IMX95,
+ MXC_ISI_IMX952,
};

struct mxc_isi_plat_data {
diff --git a/drivers/media/platform/nxp/imx8-isi/imx8-isi-regs.h b/drivers/media/platform/nxp/imx8-isi/imx8-isi-regs.h
index 7c4e736f4651..35dec3a650ac 100644
--- a/drivers/media/platform/nxp/imx8-isi/imx8-isi-regs.h
+++ b/drivers/media/platform/nxp/imx8-isi/imx8-isi-regs.h
@@ -22,7 +22,7 @@
#define CHNL_CTRL_SW_RST BIT(24)
/*
* CHNL_CTRL_BLANK_PXL: i.MX8{QM,QXP} only
- * CHNL_CTRL_VC_ID_1, CHNL_CTRL_VC_ID_1_MASK: i.MX95 only
+ * CHNL_CTRL_VC_ID_1, CHNL_CTRL_VC_ID_1_MASK: i.MX{95,952} only
*/
#define CHNL_CTRL_BLANK_PXL(n) FIELD_PREP(GENMASK(23, 16), (n))
#define CHNL_CTRL_VC_ID_1(n) FIELD_PREP(BIT(16), (n))

--
2.34.1