diff options
author | Ben Dooks <ben-linux@fluff.org> | 2009-05-17 23:40:30 +0100 |
---|---|---|
committer | Ben Dooks <ben-linux@fluff.org> | 2009-05-17 23:40:30 +0100 |
commit | 543899f610799426babb5313682fd9c249e34677 (patch) | |
tree | 3b43c6b04941b6e2464413c396020af913ef65e2 /arch | |
parent | 3cba5ef862bc2c2a0cf2841d993bfb99b9a6c476 (diff) | |
download | blackbird-op-linux-543899f610799426babb5313682fd9c249e34677.tar.gz blackbird-op-linux-543899f610799426babb5313682fd9c249e34677.zip |
[ARM] S3C64XX: Use common watchdog reset for system reset.
Use the newly moved <plat/watchdog-reset.h> to perform the
arch_reset() call which has been unimplemented for a while.
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/mach-s3c6400/include/mach/map.h | 1 | ||||
-rw-r--r-- | arch/arm/mach-s3c6400/include/mach/system.h | 8 | ||||
-rw-r--r-- | arch/arm/plat-s3c/include/plat/watchdog-reset.h | 1 | ||||
-rw-r--r-- | arch/arm/plat-s3c64xx/cpu.c | 5 |
4 files changed, 14 insertions, 1 deletions
diff --git a/arch/arm/mach-s3c6400/include/mach/map.h b/arch/arm/mach-s3c6400/include/mach/map.h index 99d5e3b420ad..7a1e5a2455b3 100644 --- a/arch/arm/mach-s3c6400/include/mach/map.h +++ b/arch/arm/mach-s3c6400/include/mach/map.h @@ -40,6 +40,7 @@ #define S3C64XX_PA_FB (0x77100000) #define S3C64XX_PA_USB_HSOTG (0x7C000000) +#define S3C64XX_PA_WATCHDOG (0x7E004000) #define S3C64XX_PA_SYSCON (0x7E00F000) #define S3C64XX_PA_TIMER (0x7F006000) #define S3C64XX_PA_IIC0 (0x7F004000) diff --git a/arch/arm/mach-s3c6400/include/mach/system.h b/arch/arm/mach-s3c6400/include/mach/system.h index 090cfd969bc7..2e58cb7a7147 100644 --- a/arch/arm/mach-s3c6400/include/mach/system.h +++ b/arch/arm/mach-s3c6400/include/mach/system.h @@ -11,6 +11,8 @@ #ifndef __ASM_ARCH_SYSTEM_H #define __ASM_ARCH_SYSTEM_H __FILE__ +#include <plat/watchdog-reset.h> + static void arch_idle(void) { /* nothing here yet */ @@ -18,7 +20,11 @@ static void arch_idle(void) static void arch_reset(char mode, const char *cmd) { - /* nothing here yet */ + if (mode != 's') + arch_wdt_reset(); + + /* if all else fails, or mode was for soft, jump to 0 */ + cpu_reset(0); } #endif /* __ASM_ARCH_IRQ_H */ diff --git a/arch/arm/plat-s3c/include/plat/watchdog-reset.h b/arch/arm/plat-s3c/include/plat/watchdog-reset.h index 277506aa0d51..54b762acb5a0 100644 --- a/arch/arm/plat-s3c/include/plat/watchdog-reset.h +++ b/arch/arm/plat-s3c/include/plat/watchdog-reset.h @@ -11,6 +11,7 @@ */ #include <plat/regs-watchdog.h> +#include <mach/map.h> #include <linux/clk.h> #include <linux/err.h> diff --git a/arch/arm/plat-s3c64xx/cpu.c b/arch/arm/plat-s3c64xx/cpu.c index 19f68b5f0d36..b1fdd83940a6 100644 --- a/arch/arm/plat-s3c64xx/cpu.c +++ b/arch/arm/plat-s3c64xx/cpu.c @@ -102,6 +102,11 @@ static struct map_desc s3c_iodesc[] __initdata = { .pfn = __phys_to_pfn(S3C64XX_PA_MODEM), .length = SZ_4K, .type = MT_DEVICE, + }, { + .virtual = (unsigned long)S3C_VA_WATCHDOG, + .pfn = __phys_to_pfn(S3C64XX_PA_WATCHDOG), + .length = SZ_4K, + .type = MT_DEVICE, }, }; |