imx: imx8m: add i.MX8MQ Dual and QuadLite support
authorPeng Fan <peng.fan@nxp.com>
Wed, 5 Feb 2020 09:34:54 +0000 (17:34 +0800)
committerStefano Babic <sbabic@denx.de>
Fri, 1 May 2020 11:46:21 +0000 (13:46 +0200)
Add i.MX8MQ Dual and QuadLite variants.

Reviewed-by: Fabio Estevam <festevam@gmail.com>
Signed-off-by: Peng Fan <peng.fan@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

index 5ade63665ab03c43f147cc8662224327b6161403..71f0715dd14c40d31cf1b5e150683e0b869e9e69 100644 (file)
@@ -26,6 +26,8 @@
 #define MXC_CPU_MX7S           0x71 /* dummy ID */
 #define MXC_CPU_MX7D           0x72
 #define MXC_CPU_IMX8MQ         0x82
+#define MXC_CPU_IMX8MD         0x83 /* dummy ID */
+#define MXC_CPU_IMX8MQL     0x84 /* dummy ID */
 #define MXC_CPU_IMX8MM         0x85 /* dummy ID */
 #define MXC_CPU_IMX8MML                0x86 /* dummy ID */
 #define MXC_CPU_IMX8MMD                0x87 /* dummy ID */
index 103dde4d36e5491650bb841d7cb82ebf2a551f61..59b145bab1a61e61e354ea4a024c823de4c559e3 100644 (file)
@@ -43,7 +43,9 @@
 
 #define is_mx7ulp() (is_cpu_type(MXC_CPU_MX7ULP))
 
-#define is_imx8mq() (is_cpu_type(MXC_CPU_IMX8MQ))
+#define is_imx8mq() (is_cpu_type(MXC_CPU_IMX8MQ) || is_cpu_type(MXC_CPU_IMX8MD) || is_cpu_type(MXC_CPU_IMX8MQL))
+#define is_imx8md() (is_cpu_type(MXC_CPU_IMX8MD))
+#define is_imx8mql() (is_cpu_type(MXC_CPU_IMX8MQL))
 #define is_imx8qm() (is_cpu_type(MXC_CPU_IMX8QM))
 #define is_imx8mm() (is_cpu_type(MXC_CPU_IMX8MM) || is_cpu_type(MXC_CPU_IMX8MML) ||\
        is_cpu_type(MXC_CPU_IMX8MMD) || is_cpu_type(MXC_CPU_IMX8MMDL) || \
index 8217913b4a486c0c2b10678ddea38f2e976919e2..e07ca5821adcbb1425c0b3c4ddd16547bfdd25a6 100644 (file)
@@ -109,7 +109,11 @@ const char *get_imx_type(u32 imxtype)
        case MXC_CPU_IMX8MMSL:
                return "8MMSL"; /* Single-core Lite version of the imx8mm */
        case MXC_CPU_IMX8MQ:
-               return "8MQ";   /* Quad-core version of the imx8m */
+               return "8MQ";   /* Quad-core version of the imx8mq */
+       case MXC_CPU_IMX8MQL:
+               return "8MQLite";       /* Quad-core Lite version of the imx8mq */
+       case MXC_CPU_IMX8MD:
+               return "8MD";   /* Dual-core version of the imx8mq */
        case MXC_CPU_MX7S:
                return "7S";    /* Single-core version of the mx7 */
        case MXC_CPU_MX7D:
index 7fcbd53f3020644d422c0bf4b30317f430866b6b..c449b8b1ec487c2d79b4f8e35187c73d79dc6327 100644 (file)
@@ -165,7 +165,13 @@ static u32 get_cpu_variant_type(u32 type)
 
        u32 value = readl(&fuse->tester4);
 
-       if (type == MXC_CPU_IMX8MM) {
+       if (type == MXC_CPU_IMX8MQ) {
+               if ((value & 0x3) == 0x2)
+                       return MXC_CPU_IMX8MD;
+               else if (value & 0x200000)
+                       return MXC_CPU_IMX8MQL;
+
+       } else if (type == MXC_CPU_IMX8MM) {
                switch (value & 0x3) {
                case 2:
                        if (value & 0x1c0000)
@@ -226,6 +232,8 @@ u32 get_cpu_rev(void)
                                }
                        }
                }
+
+               type = get_cpu_variant_type(type);
        }
 
        return (type << 12) | reg;