MLK-19433-2 imx8mq: Get chip rev for B1 revision
authorYe Li <ye.li@nxp.com>
Mon, 3 Sep 2018 07:46:09 +0000 (00:46 -0700)
committerYe Li <ye.li@nxp.com>
Fri, 24 May 2019 09:36:39 +0000 (02:36 -0700)
The mscale B1 uses OCOTP_HW_OCOTP_READ_FUSE_DATA register for chip id.
It returns a magic number 0xff0055aa.
Update get_cpu_rev to support this way, also enable OCOTP clock to allow
access OCOTP register.

Signed-off-by: Ye Li <ye.li@nxp.com>
(cherry picked from commit 866631c2140b9352c6f74ec36d1a51fea40c0445)
(cherry picked from commit 11a44009a6d301df30ecda4209e79906a36a0981)

arch/arm/mach-imx/imx8m/clock_imx8mq.c
arch/arm/mach-imx/imx8m/soc.c

index 3c33890..42118f5 100644 (file)
@@ -838,6 +838,7 @@ int clock_init(void)
 
        init_wdog_clk();
        clock_enable(CCGR_TSENSOR, 1);
+       clock_enable(CCGR_OCOTP, 1);
 
        return 0;
 }
index 7d9db56..f656b3c 100644 (file)
@@ -174,13 +174,19 @@ u32 get_cpu_rev(void)
                if (reg == CHIP_REV_1_0) {
                        /*
                         * For B0 chip, the DIGPROG is not updated, still TO1.0.
-                        * we have to check ROM version further
+                        * we have to check ROM version or OCOTP_READ_FUSE_DATA
                         */
-                       rom_version = readl((void __iomem *)ROM_VERSION_A0);
-                       if (rom_version != CHIP_REV_1_0) {
-                               rom_version = readl((void __iomem *)ROM_VERSION_B0);
-                               if (rom_version >= CHIP_REV_2_0)
-                                       reg = CHIP_REV_2_0;
+                       if (readl((void __iomem *)(OCOTP_BASE_ADDR + 0x40))
+                               == 0xff0055aa) {
+                               /* 0xff0055aa is magic number for B1 */
+                               reg = CHIP_REV_2_1;
+                       } else {
+                               rom_version = readl((void __iomem *)ROM_VERSION_A0);
+                               if (rom_version != CHIP_REV_1_0) {
+                                       rom_version = readl((void __iomem *)ROM_VERSION_B0);
+                                       if (rom_version == CHIP_REV_2_0)
+                                               reg = CHIP_REV_2_0;
+                               }
                        }
                }