MLK-20228 mx7ulp: Read chip ID from SIM register
authorYe Li <ye.li@nxp.com>
Wed, 7 Nov 2018 05:12:39 +0000 (21:12 -0800)
committerYe Li <ye.li@nxp.com>
Thu, 29 Apr 2021 07:56:05 +0000 (00:56 -0700)
Since from B0 TO, there is a Mirror of JTAG ID register added in
SIM. We can read the part revision from this register.
Update codes to use this register.

Signed-off-by: Ye Li <ye.li@nxp.com>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
(cherry picked from commit de14e88698b9ae9b0a9ac674f16d65b3ceb4ccc2)
(cherry picked from commit 0d0d9acc04972792890776e3c066f05a349bb623)
(cherry picked from commit 00dfa82643b4e06c4c5e3830d35a82801e74ad81)
(cherry picked from commit 6617b9a8770b3df01df75dc6aaf6f5e75d1f5d72)
(cherry picked from commit 496020f0f0947e2762d8fb921baf3120b8520bec)

arch/arm/mach-imx/mx7ulp/soc.c

index dd31965..0ca34fe 100644 (file)
@@ -51,7 +51,22 @@ u32 get_cpu_rev(void)
        /* Check the ROM version for cpu revision */
        u32 rom_version = readl((void __iomem *)ROM_VERSION_ADDR);
 
-       return (MXC_CPU_MX7ULP << 12) | (rom_version & 0xFF);
+       rom_version &= 0xFF;
+       if (rom_version == CHIP_REV_1_0) {
+               return (MXC_CPU_MX7ULP << 12) | (rom_version);
+       } else {
+               /* Check the "Mirror of JTAG ID" SIM register since RevB */
+               uint32_t id;
+               id = readl(SIM0_RBASE + 0x8c);
+               id = (id >> 28) & 0xFF;
+
+               /* Revision Number ULP1 Version
+                * 0000                         A0
+                * 0001                         B0
+                * 0010                         B1
+                */
+               return (MXC_CPU_MX7ULP << 12) | (CHIP_REV_2_0 + (id - 1));
+       }
 }
 
 #ifdef CONFIG_REVISION_TAG