diff options
Diffstat (limited to 'arch/arm/mach-realview/realview_pbx.c')
| -rw-r--r-- | arch/arm/mach-realview/realview_pbx.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/arch/arm/mach-realview/realview_pbx.c b/arch/arm/mach-realview/realview_pbx.c index ec39488e2b42..a21a4b395f73 100644 --- a/arch/arm/mach-realview/realview_pbx.c +++ b/arch/arm/mach-realview/realview_pbx.c | |||
| @@ -324,6 +324,20 @@ static void realview_pbx_fixup(struct machine_desc *mdesc, struct tag *tags, | |||
| 324 | #endif | 324 | #endif |
| 325 | } | 325 | } |
| 326 | 326 | ||
| 327 | static void realview_pbx_reset(char mode) | ||
| 328 | { | ||
| 329 | void __iomem *reset_ctrl = __io_address(REALVIEW_SYS_RESETCTL); | ||
| 330 | void __iomem *lock_ctrl = __io_address(REALVIEW_SYS_LOCK); | ||
| 331 | |||
| 332 | /* | ||
| 333 | * To reset, we hit the on-board reset register | ||
| 334 | * in the system FPGA | ||
| 335 | */ | ||
| 336 | __raw_writel(REALVIEW_SYS_LOCK_VAL, lock_ctrl); | ||
| 337 | __raw_writel(0x0000, reset_ctrl); | ||
| 338 | __raw_writel(0x0004, reset_ctrl); | ||
| 339 | } | ||
| 340 | |||
| 327 | static void __init realview_pbx_init(void) | 341 | static void __init realview_pbx_init(void) |
| 328 | { | 342 | { |
| 329 | int i; | 343 | int i; |
| @@ -358,6 +372,7 @@ static void __init realview_pbx_init(void) | |||
| 358 | #ifdef CONFIG_LEDS | 372 | #ifdef CONFIG_LEDS |
| 359 | leds_event = realview_leds_event; | 373 | leds_event = realview_leds_event; |
| 360 | #endif | 374 | #endif |
| 375 | realview_reset = realview_pbx_reset; | ||
| 361 | } | 376 | } |
| 362 | 377 | ||
| 363 | MACHINE_START(REALVIEW_PBX, "ARM-RealView PBX") | 378 | MACHINE_START(REALVIEW_PBX, "ARM-RealView PBX") |
