summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorMichael Hennerich <michael.hennerich@analog.com>2007-12-24 20:19:51 +0800
committerBryan Wu <bryan.wu@analog.com>2007-12-24 20:19:51 +0800
commita546b0ac5988348446e4fd5987df699b4c9b1f2a (patch)
treed209922c32a7ae7c6dc74f1c824bc21a9376b4aa /arch
parent7cc1c4b2c44d7807f55da6a36f5b2e49977c67b7 (diff)
downloadlinux-stable-a546b0ac5988348446e4fd5987df699b4c9b1f2a.tar.gz
linux-stable-a546b0ac5988348446e4fd5987df699b4c9b1f2a.tar.bz2
linux-stable-a546b0ac5988348446e4fd5987df699b4c9b1f2a.zip
[Blackfin] arch: Fix BUG - kernel sometimes would stuck with KEYBOARD_GPIO on
Make sure the SYSTEM reset completes before we issue the CORE reset Signed-off-by: Michael Hennerich <michael.hennerich@analog.com> Signed-off-by: Bryan Wu <bryan.wu@analog.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/blackfin/kernel/reboot.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/blackfin/kernel/reboot.c b/arch/blackfin/kernel/reboot.c
index ae28aac6fec1..06501a594dda 100644
--- a/arch/blackfin/kernel/reboot.c
+++ b/arch/blackfin/kernel/reboot.c
@@ -34,9 +34,11 @@ void bfin_reset(void)
while (1) {
/* initiate system soft reset with magic 0x7 */
bfin_write_SWRST(0x7);
+ bfin_read_SWRST();
asm("ssync;");
/* clear system soft reset */
bfin_write_SWRST(0);
+ bfin_read_SWRST();
asm("ssync;");
/* issue core reset */
asm("raise 1");