]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
arm: imx8mp: Add new variant parts support
authorYe Li <ye.li@nxp.com>
Fri, 22 May 2026 13:50:15 +0000 (21:50 +0800)
committerFabio Estevam <festevam@gmail.com>
Fri, 5 Jun 2026 12:00:00 +0000 (09:00 -0300)
iMX8MP added 4 new variant parts for low cost industrial and HMI.
The parts disabled HIFI DSP and ISP while other functions are enabled.

Part number:
  - MIMX8ML2DVNLZAB and MIMX8ML2CVNKZAB (2-core)
  - MIMX8ML5DVNLZAB and MIMX8ML5CVNKZAB (4-core)

Signed-off-by: Ye Li <ye.li@nxp.com>
arch/arm/include/asm/arch-imx/cpu.h
arch/arm/include/asm/mach-imx/sys_proto.h
arch/arm/mach-imx/cpu.c
arch/arm/mach-imx/imx8m/soc.c
drivers/cpu/imx8_cpu.c

index 25d0f205fde25da4b874c5af1ad9420f8b52f283..bbc4b421a02382397456aa9b0bfc3dbb67dbf535 100644 (file)
@@ -48,6 +48,8 @@
 #define MXC_CPU_IMX8MPL                0x187 /* dummy ID */
 #define MXC_CPU_IMX8MPD                0x188 /* dummy ID */
 #define MXC_CPU_IMX8MPUL       0x189 /* dummy ID */
+#define MXC_CPU_IMX8MPD2       0x18c /* dummy ID */
+#define MXC_CPU_IMX8MP5                0x18d /* dummy ID */
 #define MXC_CPU_IMX8QXP_A0     0x90 /* dummy ID */
 #define MXC_CPU_IMX8QM         0x91 /* dummy ID */
 #define MXC_CPU_IMX8QXP                0x92 /* dummy ID */
index ab573413128d05f7d31d90f3bd3a5c871fe3ea20..d25c08f8fe7a5af7259ef2a93bfa20ffc17ae04a 100644 (file)
@@ -74,9 +74,12 @@ struct bd_info;
 #define is_imx8mnud() (is_cpu_type(MXC_CPU_IMX8MNUD))
 #define is_imx8mnus() (is_cpu_type(MXC_CPU_IMX8MNUS))
 #define is_imx8mp() (is_cpu_type(MXC_CPU_IMX8MP)  || is_cpu_type(MXC_CPU_IMX8MPD) || \
-       is_cpu_type(MXC_CPU_IMX8MPL) || is_cpu_type(MXC_CPU_IMX8MP6) || is_cpu_type(MXC_CPU_IMX8MPUL))
+       is_cpu_type(MXC_CPU_IMX8MPL) || is_cpu_type(MXC_CPU_IMX8MP6) || is_cpu_type(MXC_CPU_IMX8MPUL) || \
+       is_cpu_type(MXC_CPU_IMX8MP5) || is_cpu_type(MXC_CPU_IMX8MPD2))
 #define is_imx8mpd() (is_cpu_type(MXC_CPU_IMX8MPD))
+#define is_imx8mpd2() (is_cpu_type(MXC_CPU_IMX8MPD2))
 #define is_imx8mpl() (is_cpu_type(MXC_CPU_IMX8MPL))
+#define is_imx8mp5() (is_cpu_type(MXC_CPU_IMX8MP5))
 #define is_imx8mp6() (is_cpu_type(MXC_CPU_IMX8MP6))
 #define is_imx8mpul() (is_cpu_type(MXC_CPU_IMX8MPUL))
 
index 8af45e14707d662edb042d1757bee8236655c047..c49ad44ac2daeb30c4ed8ea404529a84ff5a47d8 100644 (file)
@@ -99,10 +99,14 @@ const char *get_imx_type(u32 imxtype)
        switch (imxtype) {
        case MXC_CPU_IMX8MP:
                return "8MP[8]";        /* Quad-core version of the imx8mp */
+       case MXC_CPU_IMX8MPD2:
+               return "8MP Dual[2]";   /* Dual-core version of the imx8mp, low cost industrial & HMI */
        case MXC_CPU_IMX8MPD:
                return "8MP Dual[3]";   /* Dual-core version of the imx8mp */
        case MXC_CPU_IMX8MPL:
                return "8MP Lite[4]";   /* Quad-core Lite version of the imx8mp */
+       case MXC_CPU_IMX8MP5:
+               return "8MP[5]";        /* Quad-core version of the imx8mp, low cost industrial & HMI */
        case MXC_CPU_IMX8MP6:
                return "8MP[6]";        /* Quad-core version of the imx8mp, NPU fused */
        case MXC_CPU_IMX8MPUL:
index 1fe083ae94ff6cd65bf0b49ca266f1cd33b7a72d..498bbe6704fc1a1ee518751986a461d0ff0e0f74 100644 (file)
@@ -442,7 +442,7 @@ static u32 get_cpu_variant_type(u32 type)
                u32 flag = 0;
 
                if ((value0 & 0xc0000) == 0x80000)
-                       return MXC_CPU_IMX8MPD;
+                       flag |= (1 << 10);
 
                        /* vpu disabled */
                if ((value0 & 0x43000000) == 0x43000000)
@@ -475,6 +475,12 @@ static u32 get_cpu_variant_type(u32 type)
                        return MXC_CPU_IMX8MPL;
                case 2:
                        return MXC_CPU_IMX8MP6;
+               case 0x400:
+                       return MXC_CPU_IMX8MPD;
+               case 0x4:
+                       return MXC_CPU_IMX8MP5;
+               case 0x404:
+                       return MXC_CPU_IMX8MPD2;
                default:
                        break;
                }
@@ -1433,13 +1439,15 @@ usb_modify_speed:
        if (is_imx8mpul() || is_imx8mpl() || is_imx8mp6())
                disable_npu_nodes(blob);
 
-       if (is_imx8mpul() || is_imx8mpl())
+       if (is_imx8mpul() || is_imx8mpl() ||
+           is_imx8mpd2() || is_imx8mp5())
                disable_isp_nodes(blob);
 
-       if (is_imx8mpul() || is_imx8mpl() || is_imx8mp6())
+       if (is_imx8mpul() || is_imx8mpl() || is_imx8mp6() ||
+           is_imx8mpd2() || is_imx8mp5())
                disable_dsp_nodes(blob);
 
-       if (is_imx8mpd())
+       if (is_imx8mpd() || is_imx8mpd2())
                disable_cpu_nodes(blob, nodes_path, 2, 4);
 #endif
 
index 785c299eca5584d1246f3b564952bdf0264101ae..c6bb938e398f852123dd9bd457270e23f63115d8 100644 (file)
@@ -63,10 +63,14 @@ static const char *get_imx_type_str(u32 imxtype)
                return "8MNano UltraLite Solo";/* Single-core UltraLite version of the imx8mn */
        case MXC_CPU_IMX8MP:
                return "8MP[8]";        /* Quad-core version of the imx8mp */
+       case MXC_CPU_IMX8MPD2:
+               return "8MP Dual[2]";   /* Dual-core version of the imx8mp, low cost industrial & HMI */
        case MXC_CPU_IMX8MPD:
                return "8MP Dual[3]";   /* Dual-core version of the imx8mp */
        case MXC_CPU_IMX8MPL:
                return "8MP Lite[4]";   /* Quad-core Lite version of the imx8mp */
+       case MXC_CPU_IMX8MP5:
+               return "8MP[5]";        /* Quad-core version of the imx8mp, low cost industrial & HMI */
        case MXC_CPU_IMX8MP6:
                return "8MP[6]";        /* Quad-core version of the imx8mp, NPU fused */
        case MXC_CPU_IMX8MQ: