diff options
author | Philby John <pjohn@in.mvista.com> | 2009-10-28 14:09:12 -0400 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2009-11-01 09:19:34 -0500 |
commit | 426fcd2a351e4bf662fee9fa2cf2603a48223164 (patch) | |
tree | 8abcf507bc2d7d4e285073add55729ceeddb5c44 /arch/arm/mach-realview/realview_pb1176.c | |
parent | df71dfd4ca01130f98d9dbfab76c440d72a177c6 (diff) |
ARM: 5774/1: Fix Realview ARM1176PB board reboot
This is the fix for proper reboot of Realview ARM1176PB board
when issuing the reboot command. Setting the eighth bit of
control register SYS_RESETCTL to 1 to force a soft reset.
arch_reset() is modified for realview machines to call machine
specific reset function pointers.
Signed-off-by: Philby John <pjohn@in.mvista.com>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mach-realview/realview_pb1176.c')
-rw-r--r-- | arch/arm/mach-realview/realview_pb1176.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/arch/arm/mach-realview/realview_pb1176.c b/arch/arm/mach-realview/realview_pb1176.c index 2817fe099319..a6ba147692c1 100644 --- a/arch/arm/mach-realview/realview_pb1176.c +++ b/arch/arm/mach-realview/realview_pb1176.c | |||
@@ -290,6 +290,16 @@ static struct sys_timer realview_pb1176_timer = { | |||
290 | .init = realview_pb1176_timer_init, | 290 | .init = realview_pb1176_timer_init, |
291 | }; | 291 | }; |
292 | 292 | ||
293 | static void realview_pb1176_reset(char mode) | ||
294 | { | ||
295 | void __iomem *hdr_ctrl = __io_address(REALVIEW_SYS_BASE) + | ||
296 | REALVIEW_SYS_RESETCTL_OFFSET; | ||
297 | void __iomem *rst_hdr_ctrl = __io_address(REALVIEW_SYS_BASE) + | ||
298 | REALVIEW_SYS_LOCK_OFFSET; | ||
299 | __raw_writel(REALVIEW_SYS_LOCKVAL_MASK, rst_hdr_ctrl); | ||
300 | __raw_writel(REALVIEW_PB1176_SYS_LOCKVAL_RSTCTL, hdr_ctrl); | ||
301 | } | ||
302 | |||
293 | static void __init realview_pb1176_init(void) | 303 | static void __init realview_pb1176_init(void) |
294 | { | 304 | { |
295 | int i; | 305 | int i; |
@@ -313,6 +323,7 @@ static void __init realview_pb1176_init(void) | |||
313 | #ifdef CONFIG_LEDS | 323 | #ifdef CONFIG_LEDS |
314 | leds_event = realview_leds_event; | 324 | leds_event = realview_leds_event; |
315 | #endif | 325 | #endif |
326 | realview_reset = realview_pb1176_reset; | ||
316 | } | 327 | } |
317 | 328 | ||
318 | MACHINE_START(REALVIEW_PB1176, "ARM-RealView PB1176") | 329 | MACHINE_START(REALVIEW_PB1176, "ARM-RealView PB1176") |