]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
MLK-9819 ARM: imx6sx: Add WDOG_B reset for i.mx6sx boards.
authorRobin Gong <b38343@freescale.com>
Fri, 31 Oct 2014 01:36:28 +0000 (09:36 +0800)
committerNitin Garg <nitin.garg@freescale.com>
Fri, 16 Jan 2015 03:18:55 +0000 (21:18 -0600)
QSPI-NOR reboot failed in case of larger flash size such as 256M used, because
kernel QSPI-NOR flash use 4-bytes-address mode to visit 16MB+ area but ROM code
use 3-bytes-address mode to access QSPI-NOR. Thus, we have to use WDOG_B to
reset QSPI-NOR flash to workaround this.
Note:
  Please update the u-boot with the below u-boot patch, otherwise system will
reboot endless while kernel boot:
"MLK-9819: ARM: mx6sx: clear WDOG3 Power Down Enable bit for i.mx6sx"

Signed-off-by: Robin Gong <b38343@freescale.com>
(cherry picked from commit 89b88be2a870124d58080970b37f93d868093e9a)
(cherry picked from commit d86a750522b354537f91a4403e349849c5dfcf3d)

arch/arm/boot/dts/imx6sx-17x17-arm2.dts
arch/arm/boot/dts/imx6sx-19x19-arm2.dts
arch/arm/boot/dts/imx6sx-sdb.dts
arch/arm/mach-imx/system.c

index d30d043428fc60630acc1c2f300d9ba96712b4af..74443c3587acce0867ffa4046b2c778bbed7a9cf 100644 (file)
                                MX6SX_PAD_QSPI1B_SS0_B__GPIO4_IO_30     0x17059
                                /* SD2_PWROFF */
                                MX6SX_PAD_KEY_COL1__GPIO2_IO_11         0x17059
+                               /* WDOG_B reset */
+                               MX6SX_PAD_GPIO1_IO13__WDOG1_WDOG_ANY    0x10b0
                        >;
                };
        };
index 0adfc61072e535b7a822808ea388e4fd894dd4f8..45fe70979ca1d60c53e0dbf11434d3a506e98dcf 100644 (file)
                        fsl,pins = <
                                MX6SX_PAD_SD4_DATA4__GPIO6_IO_18     0x1b0b0
                                MX6SX_PAD_KEY_ROW1__GPIO2_IO_16      0x1b0b0
+                               MX6SX_PAD_GPIO1_IO13__WDOG1_WDOG_ANY 0x10b0
                         >;
                };
        };
index 0825d9c3a63b8137fc44358b8a17ca2c913feea7..a7fd6ffe464b9408dd580751615f0fb62bcd75d9 100644 (file)
                                MX6SX_PAD_SD1_DATA0__GPIO6_IO_2 0x17059
                                MX6SX_PAD_SD1_DATA3__GPIO6_IO_5 0xb000
                                MX6SX_PAD_CSI_DATA03__GPIO1_IO_17 0x17059
+                               MX6SX_PAD_GPIO1_IO13__WDOG1_WDOG_ANY 0x30b0
                        >;
                };
 
index b8be9f2906e37461db304f666ad11e046ed996c5..2e3d6a8adac8d395416a30b653d7a9ce3bbbe5ff 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Copyright (C) 1999 ARM Limited
  * Copyright (C) 2000 Deep Blue Solutions Ltd
- * Copyright 2006-2014 Freescale Semiconductor, Inc. All Rights Reserved.
+ * Copyright 2006-2015 Freescale Semiconductor, Inc. All Rights Reserved.
  * Copyright 2008 Juergen Beisert, kernel@pengutronix.de
  * Copyright 2009 Ilya Yanok, Emcraft Systems Ltd, yanok@emcraft.com
  *
@@ -53,9 +53,11 @@ void mxc_restart(enum reboot_mode mode, const char *cmd)
         * so do WDOG2 reset here. Do not set SRS, since we will
         * trigger external POR later. Use WDOG1 to reset in ldo-enable
         * mode. You can set it by "fsl,wdog-reset" in dts.
+        * For i.MX6SX we have to trigger wdog-reset to reset QSPI-NOR flash to
+        * workaround qspi-nor reboot issue whatever ldo-bypass or not.
         */
-       else if (wdog_source == 2 && (cpu_is_imx6q() || cpu_is_imx6dl() ||
-                       cpu_is_imx6sl()))
+       else if ((wdog_source == 2 && (cpu_is_imx6q() || cpu_is_imx6dl() ||
+                       cpu_is_imx6sl())) || cpu_is_imx6sx())
                wcr_enable = 0x14;
        else
                wcr_enable = (1 << 2);