]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
ENGR00254267 MX6DL/MX6SL max freq: Fix max cpu freq at 1G on MX6DL ARD
authorRobin Gong <b38343@freescale.com>
Thu, 14 Mar 2013 09:19:44 +0000 (17:19 +0800)
committerLothar Waßmann <LW@KARO-electronics.de>
Fri, 24 May 2013 06:35:58 +0000 (08:35 +0200)
For MX6DL,align max cpufreq judge by SPEED_GRADING fuse bit with MX6DQ.
For MX6SL without the fuse bit, we need add condition check, if found
arm_max_freq set by default , change to1G. Else decided by 'arm_freq'
setting by cmdline.

Signed-off-by: Robin Gong <b38343@freescale.com>
arch/arm/mach-mx6/cpu_op-mx6.c

index 541861832543acf2476a3ecd9789e5160da40f91..210fdd536c57d6c14d87c9826d8c727b5b760716 100644 (file)
@@ -342,17 +342,25 @@ void mx6_cpu_op_init(void)
 {
        unsigned int reg;
        void __iomem *base;
-       if (cpu_is_mx6q()) {
+       if (!cpu_is_mx6sl()) {
                /*read fuse bit to know the max cpu freq : offset 0x440
-               * bit[17:16]:SPEED_GRADING[1:0]*/
+               * bit[17:16]:SPEED_GRADING[1:0],for mx6dq/dl*/
                base = IO_ADDRESS(OCOTP_BASE_ADDR);
                reg = __raw_readl(base + 0x440);
                reg &= (0x3 << OCOTP_SPEED_BIT_OFFSET);
                reg >>= OCOTP_SPEED_BIT_OFFSET;
                /*choose the little value to run lower max cpufreq*/
                arm_max_freq = (reg > arm_max_freq) ? arm_max_freq : reg;
-       } else
-               arm_max_freq = CPU_AT_1GHz;/*mx6dl/sl max freq is 1Ghz*/
+       } else {
+               /*
+                * There is no SPEED_GRADING fuse bit on mx6sl,then do:
+                * If arm_max_freq set by default on CPU_AT_1_2GHz which mean
+                * there is no 'arm_freq' setting in cmdline from bootloader,
+                * force arm_max_freq to 1G. Else use 'arm_freq' setting.
+                */
+               if (arm_max_freq == CPU_AT_1_2GHz)
+                       arm_max_freq = CPU_AT_1GHz;/*mx6sl max freq is 1Ghz*/
+       }
        printk(KERN_INFO "arm_max_freq=%s\n", (arm_max_freq == CPU_AT_1_2GHz) ?
                "1.2GHz" : ((arm_max_freq == CPU_AT_1GHz) ? "1GHz" : "800MHz"));
        get_cpu_op = mx6_get_cpu_op;