]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
ARM: ep93xx: Disable TS-72xx watchdog before uncompressing
authorFlorian Fainelli <f.fainelli@gmail.com>
Thu, 2 Feb 2017 20:12:26 +0000 (12:12 -0800)
committerArnd Bergmann <arnd@arndb.de>
Tue, 7 Feb 2017 15:02:34 +0000 (16:02 +0100)
The TS-72xx/73xx boards have a CPLD watchdog which is configured to
reset the board after 8 seconds, if the kernel is large enough that this
takes about this time to decompress the kernel, we will encounter a
spurious reboot.

Do not pull ts72xx.h, but instead locally define what we need to disable
the watchdog.

Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Reviewed-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
arch/arm/mach-ep93xx/include/mach/uncompress.h

index 03c42e5400d2e70e75b7986b04d4a2eb8f387cab..b0cf2de77f81f7a2107c747b0c3288529ea476f1 100644 (file)
@@ -10,6 +10,7 @@
  */
 
 #include <mach/ep93xx-regs.h>
+#include <asm/mach-types.h>
 
 static unsigned char __raw_readb(unsigned int ptr)
 {
@@ -75,8 +76,19 @@ static void ethernet_reset(void)
                ;
 }
 
+#define TS72XX_WDT_CONTROL_PHYS_BASE   0x23800000
+#define TS72XX_WDT_FEED_PHYS_BASE      0x23c00000
+#define TS72XX_WDT_FEED_VAL            0x05
+
+static void __maybe_unused ts72xx_watchdog_disable(void)
+{
+       __raw_writeb(TS72XX_WDT_FEED_VAL, TS72XX_WDT_FEED_PHYS_BASE);
+       __raw_writeb(0, TS72XX_WDT_CONTROL_PHYS_BASE);
+}
 
 static void arch_decomp_setup(void)
 {
+       if (machine_is_ts72xx())
+               ts72xx_watchdog_disable();
        ethernet_reset();
 }