]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
Blackfin: fix accidental reset in some boot modes
authorSonic Zhang <sonic.zhang@analog.com>
Mon, 15 Jun 2009 07:39:19 +0000 (07:39 +0000)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 20 Jul 2009 03:38:48 +0000 (20:38 -0700)
commit 0de4adfb8c9674fa1572b0ff1371acc94b0be901 upstream.

We read the SWRST (Software Reset) register to get at the last reset
state, and then we may configure the DOUBLE_FAULT bit to control behavior
when a double fault occurs.  But if the lower bits of the register is
already set (like UART boot mode on a BF54x), we inadvertently make the
system reset by writing to the SYSTEM_RESET field at the same time.  So
make sure the lower 4 bits are always cleared.

Signed-off-by: Sonic Zhang <sonic.zhang@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
arch/blackfin/kernel/setup.c

index a58687bdee6a6580031d6903526774c3f35e1625..b550bae34e4b5b4a0b712f95ef603f5abeda87c9 100644 (file)
@@ -831,7 +831,8 @@ void __init setup_arch(char **cmdline_p)
     defined(CONFIG_BF538) || defined(CONFIG_BF539)
        _bfin_swrst = bfin_read_SWRST();
 #else
-       _bfin_swrst = bfin_read_SYSCR();
+       /* Clear boot mode field */
+       _bfin_swrst = bfin_read_SYSCR() & ~0xf;
 #endif
 
 #ifdef CONFIG_DEBUG_DOUBLEFAULT_PRINT