aboutsummaryrefslogtreecommitdiffstats
path: root/arch/blackfin/kernel/reboot.c
diff options
context:
space:
mode:
authorMike Frysinger <vapier.adi@gmail.com>2008-10-12 23:33:43 -0400
committerBryan Wu <cooloney@kernel.org>2008-10-12 23:33:43 -0400
commitcdbf4c3c5f4909767c21f47f68f2ee57a8b36b3b (patch)
tree4cfd19b106ca90c45ed3daf17fdb9727019ba889 /arch/blackfin/kernel/reboot.c
parent4e8086d65bd0a606434a4b16611653387f8c9698 (diff)
Blackfin arch: use the Blackfin on-chip ROM to do software reset when possible
Signed-off-by: Mike Frysinger <vapier.adi@gmail.com> Signed-off-by: Bryan Wu <cooloney@kernel.org>
Diffstat (limited to 'arch/blackfin/kernel/reboot.c')
-rw-r--r--arch/blackfin/kernel/reboot.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/arch/blackfin/kernel/reboot.c b/arch/blackfin/kernel/reboot.c
index d0ead640d992..ae97ca407b0d 100644
--- a/arch/blackfin/kernel/reboot.c
+++ b/arch/blackfin/kernel/reboot.c
@@ -10,6 +10,7 @@
10#include <asm/bfin-global.h> 10#include <asm/bfin-global.h>
11#include <asm/reboot.h> 11#include <asm/reboot.h>
12#include <asm/system.h> 12#include <asm/system.h>
13#include <asm/bfrom.h>
13 14
14/* A system soft reset makes external memory unusable so force 15/* A system soft reset makes external memory unusable so force
15 * this function into L1. We use the compiler ssync here rather 16 * this function into L1. We use the compiler ssync here rather
@@ -74,7 +75,14 @@ void machine_restart(char *cmd)
74{ 75{
75 native_machine_restart(cmd); 76 native_machine_restart(cmd);
76 local_irq_disable(); 77 local_irq_disable();
77 bfin_reset(); 78 if (ANOMALY_05000353 || ANOMALY_05000386)
79 bfin_reset();
80 else
81 /* the bootrom checks to see how it was reset and will
82 * automatically perform a software reset for us when
83 * it starts executing boot
84 */
85 asm("raise 1;");
78} 86}
79 87
80__attribute__((weak)) 88__attribute__((weak))