diff options
author | Sonic Zhang <sonic.zhang@analog.com> | 2009-06-15 07:39:19 +0000 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2009-06-22 21:15:48 -0400 |
commit | 0de4adfb8c9674fa1572b0ff1371acc94b0be901 (patch) | |
tree | 24ed2b515b7786b7ea29c0696f6f8fcd9a3d46b4 /arch/blackfin/kernel/setup.c | |
parent | 81b79c213d0200fdd16951a9fb18748fd511d810 (diff) | |
download | op-kernel-dev-0de4adfb8c9674fa1572b0ff1371acc94b0be901.zip op-kernel-dev-0de4adfb8c9674fa1572b0ff1371acc94b0be901.tar.gz |
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/kernel/setup.c')
-rw-r--r-- | arch/blackfin/kernel/setup.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/blackfin/kernel/setup.c b/arch/blackfin/kernel/setup.c index 6454bab..b2782ea 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 |