imx8m: imx8mq: get chip rev for B1 revision
authorPeng Fan <peng.fan@nxp.com>
Wed, 16 Oct 2019 10:24:17 +0000 (10:24 +0000)
committerStefano Babic <sbabic@denx.de>
Sun, 3 Nov 2019 16:04:16 +0000 (17:04 +0100)
The i.MX8MQ B1 uses OCOTP_HW_OCOTP_READ_FUSE_DATA register for chip id.
It returns a magic number 0xff0055aa. update get_cpu_rev to support it,
and enable ocotp clock to access ocotp.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
arch/arm/mach-imx/imx8m/clock_imx8mq.c
arch/arm/mach-imx/imx8m/soc.c

index feecdb50f6c262c08b0fede904df04eed78ca764..5c3f780127b6ac3abff7d653a208510fc5b8f32d 100644 (file)
@@ -804,6 +804,7 @@ int clock_init(void)
 
        init_wdog_clk();
        clock_enable(CCGR_TSENSOR, 1);
+       clock_enable(CCGR_OCOTP, 1);
 
        return 0;
 }
index aeca82cdbf47d7a5e34a164dbfca90b8b8cf23f3..a924af431c9760880b26895a0ece07b4881bd85a 100644 (file)
@@ -202,14 +202,21 @@ u32 get_cpu_rev(void)
        } else {
                if (reg == CHIP_REV_1_0) {
                        /*
-                        * For B0 chip, the DIGPROG is not updated, still TO1.0.
-                        * we have to check ROM version further
+                        * For B0 chip, the DIGPROG is not updated,
+                        * it is still TO1.0. we have to check ROM
+                        * version or OCOTP_READ_FUSE_DATA.
+                        * 0xff0055aa is magic number for B1.
                         */
-                       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) {
+                               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;
+                               }
                        }
                }
        }