diff options
Diffstat (limited to 'arch/arm/mach-realview/realview_eb.c')
| -rw-r--r-- | arch/arm/mach-realview/realview_eb.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/arch/arm/mach-realview/realview_eb.c b/arch/arm/mach-realview/realview_eb.c index 917f8ca3abff..7d857d300558 100644 --- a/arch/arm/mach-realview/realview_eb.c +++ b/arch/arm/mach-realview/realview_eb.c | |||
| @@ -381,6 +381,20 @@ static struct sys_timer realview_eb_timer = { | |||
| 381 | .init = realview_eb_timer_init, | 381 | .init = realview_eb_timer_init, |
| 382 | }; | 382 | }; |
| 383 | 383 | ||
| 384 | static void realview_eb_reset(char mode) | ||
| 385 | { | ||
| 386 | void __iomem *reset_ctrl = __io_address(REALVIEW_SYS_RESETCTL); | ||
| 387 | void __iomem *lock_ctrl = __io_address(REALVIEW_SYS_LOCK); | ||
| 388 | |||
| 389 | /* | ||
| 390 | * To reset, we hit the on-board reset register | ||
| 391 | * in the system FPGA | ||
| 392 | */ | ||
| 393 | __raw_writel(REALVIEW_SYS_LOCK_VAL, lock_ctrl); | ||
| 394 | if (core_tile_eb11mp()) | ||
| 395 | __raw_writel(0x0008, reset_ctrl); | ||
| 396 | } | ||
| 397 | |||
| 384 | static void __init realview_eb_init(void) | 398 | static void __init realview_eb_init(void) |
| 385 | { | 399 | { |
| 386 | int i; | 400 | int i; |
| @@ -408,6 +422,7 @@ static void __init realview_eb_init(void) | |||
| 408 | #ifdef CONFIG_LEDS | 422 | #ifdef CONFIG_LEDS |
| 409 | leds_event = realview_leds_event; | 423 | leds_event = realview_leds_event; |
| 410 | #endif | 424 | #endif |
| 425 | realview_reset = realview_eb_reset; | ||
| 411 | } | 426 | } |
| 412 | 427 | ||
| 413 | MACHINE_START(REALVIEW_EB, "ARM-RealView EB") | 428 | MACHINE_START(REALVIEW_EB, "ARM-RealView EB") |
