diff options
author | Mike Frysinger <vapier.adi@gmail.com> | 2008-10-13 07:33:43 +0400 |
---|---|---|
committer | Bryan Wu <cooloney@kernel.org> | 2008-10-13 07:33:43 +0400 |
commit | cdbf4c3c5f4909767c21f47f68f2ee57a8b36b3b (patch) | |
tree | 4cfd19b106ca90c45ed3daf17fdb9727019ba889 /arch/blackfin/kernel | |
parent | 4e8086d65bd0a606434a4b16611653387f8c9698 (diff) | |
download | linux-cdbf4c3c5f4909767c21f47f68f2ee57a8b36b3b.tar.xz |
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')
-rw-r--r-- | arch/blackfin/kernel/reboot.c | 10 |
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 @@ #include <asm/bfin-global.h> #include <asm/reboot.h> #include <asm/system.h> +#include <asm/bfrom.h> /* A system soft reset makes external memory unusable so force * this function into L1. We use the compiler ssync here rather @@ -74,7 +75,14 @@ void machine_restart(char *cmd) { native_machine_restart(cmd); local_irq_disable(); - bfin_reset(); + if (ANOMALY_05000353 || ANOMALY_05000386) + bfin_reset(); + else + /* the bootrom checks to see how it was reset and will + * automatically perform a software reset for us when + * it starts executing boot + */ + asm("raise 1;"); } __attribute__((weak)) |