imx: mx6 correct get_cpu_rev
authorPeng Fan <Peng.Fan@freescale.com>
Thu, 11 Jun 2015 10:30:36 +0000 (18:30 +0800)
committerStefano Babic <sbabic@denx.de>
Sat, 27 Jun 2015 16:18:40 +0000 (18:18 +0200)
The DIGPROG register map:
23 ------- 16 | 15 ------ 8 | 7 --- 0 |
 Major upper  | Major Lower |  Minor  |

We also need to account for Major Lower.

Signed-off-by: Ye.Li <B37916@freescale.com>
Signed-off-by: Peng Fan <Peng.Fan@freescale.com>
arch/arm/cpu/armv7/mx6/soc.c

index b21bd03a8aac99a50bbdf9b2be6f3b2fda4b9d60..29de6243dc98fb05eeddc7fde4772e08a94fa6a2 100644 (file)
@@ -62,6 +62,7 @@ u32 get_cpu_rev(void)
        struct anatop_regs *anatop = (struct anatop_regs *)ANATOP_BASE_ADDR;
        u32 reg = readl(&anatop->digprog_sololite);
        u32 type = ((reg >> 16) & 0xff);
+       u32 major;
 
        if (type != MXC_CPU_MX6SL) {
                reg = readl(&anatop->digprog);
@@ -79,8 +80,9 @@ u32 get_cpu_rev(void)
                }
 
        }
+       major = ((reg >> 8) & 0xff);
        reg &= 0xff;            /* mx6 silicon revision */
-       return (type << 12) | (reg + 0x10);
+       return (type << 12) | (reg + (0x10 * (major + 1)));
 }
 
 /*