summaryrefslogtreecommitdiffstats
path: root/arch/blackfin
diff options
context:
space:
mode:
authorSonic Zhang <sonic.zhang@analog.com>2009-06-15 09:39:19 +0200
committerMike Frysinger <vapier@gentoo.org>2009-06-23 03:15:48 +0200
commit0de4adfb8c9674fa1572b0ff1371acc94b0be901 (patch)
tree24ed2b515b7786b7ea29c0696f6f8fcd9a3d46b4 /arch/blackfin
parentBlackfin: abstract irq14 lowering in do_irq (diff)
downloadlinux-0de4adfb8c9674fa1572b0ff1371acc94b0be901.tar.xz
linux-0de4adfb8c9674fa1572b0ff1371acc94b0be901.zip
Blackfin: fix accidental reset in some boot modes
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>
Diffstat (limited to 'arch/blackfin')
-rw-r--r--arch/blackfin/kernel/setup.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/blackfin/kernel/setup.c b/arch/blackfin/kernel/setup.c
index 6454babdfaff..b2782eae31e1 100644
--- a/arch/blackfin/kernel/setup.c
+++ b/arch/blackfin/kernel/setup.c
@@ -837,7 +837,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