diff options
author | Fabio Baltieri <fabio.baltieri@linaro.org> | 2013-06-14 09:22:40 -0400 |
---|---|---|
committer | Linus Walleij <linus.walleij@linaro.org> | 2013-08-19 16:49:24 -0400 |
commit | bd93ec505312f05fbc2c6f426c74fef920a597fa (patch) | |
tree | 58be13a7d35cad465d8fffa02593cce42749280b | |
parent | d4e4ab86bcba5a72779c43dc1459f71fea3d89c8 (diff) |
ARM: ux500: add restart support via prcmu
Add necessary code to restart ux500 based machines using
prcmu_system_reset().
Signed-off-by: Fabio Baltieri <fabio.baltieri@linaro.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
-rw-r--r-- | arch/arm/mach-ux500/board-mop500.c | 5 | ||||
-rw-r--r-- | arch/arm/mach-ux500/cpu-db8500.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-ux500/cpu.c | 8 | ||||
-rw-r--r-- | arch/arm/mach-ux500/setup.h | 3 |
4 files changed, 16 insertions, 2 deletions
diff --git a/arch/arm/mach-ux500/board-mop500.c b/arch/arm/mach-ux500/board-mop500.c index df5d27a532e9..4e7ab3a0dd60 100644 --- a/arch/arm/mach-ux500/board-mop500.c +++ b/arch/arm/mach-ux500/board-mop500.c | |||
@@ -42,7 +42,6 @@ | |||
42 | #include <linux/platform_data/dma-ste-dma40.h> | 42 | #include <linux/platform_data/dma-ste-dma40.h> |
43 | 43 | ||
44 | #include <asm/mach-types.h> | 44 | #include <asm/mach-types.h> |
45 | #include <asm/mach/arch.h> | ||
46 | 45 | ||
47 | #include "setup.h" | 46 | #include "setup.h" |
48 | #include "devices.h" | 47 | #include "devices.h" |
@@ -686,6 +685,7 @@ MACHINE_START(U8500, "ST-Ericsson MOP500 platform") | |||
686 | .init_time = ux500_timer_init, | 685 | .init_time = ux500_timer_init, |
687 | .init_machine = mop500_init_machine, | 686 | .init_machine = mop500_init_machine, |
688 | .init_late = ux500_init_late, | 687 | .init_late = ux500_init_late, |
688 | .restart = ux500_restart, | ||
689 | MACHINE_END | 689 | MACHINE_END |
690 | 690 | ||
691 | MACHINE_START(U8520, "ST-Ericsson U8520 Platform HREFP520") | 691 | MACHINE_START(U8520, "ST-Ericsson U8520 Platform HREFP520") |
@@ -695,6 +695,7 @@ MACHINE_START(U8520, "ST-Ericsson U8520 Platform HREFP520") | |||
695 | .init_time = ux500_timer_init, | 695 | .init_time = ux500_timer_init, |
696 | .init_machine = mop500_init_machine, | 696 | .init_machine = mop500_init_machine, |
697 | .init_late = ux500_init_late, | 697 | .init_late = ux500_init_late, |
698 | .restart = ux500_restart, | ||
698 | MACHINE_END | 699 | MACHINE_END |
699 | 700 | ||
700 | MACHINE_START(HREFV60, "ST-Ericsson U8500 Platform HREFv60+") | 701 | MACHINE_START(HREFV60, "ST-Ericsson U8500 Platform HREFv60+") |
@@ -705,6 +706,7 @@ MACHINE_START(HREFV60, "ST-Ericsson U8500 Platform HREFv60+") | |||
705 | .init_time = ux500_timer_init, | 706 | .init_time = ux500_timer_init, |
706 | .init_machine = hrefv60_init_machine, | 707 | .init_machine = hrefv60_init_machine, |
707 | .init_late = ux500_init_late, | 708 | .init_late = ux500_init_late, |
709 | .restart = ux500_restart, | ||
708 | MACHINE_END | 710 | MACHINE_END |
709 | 711 | ||
710 | MACHINE_START(SNOWBALL, "Calao Systems Snowball platform") | 712 | MACHINE_START(SNOWBALL, "Calao Systems Snowball platform") |
@@ -716,4 +718,5 @@ MACHINE_START(SNOWBALL, "Calao Systems Snowball platform") | |||
716 | .init_time = ux500_timer_init, | 718 | .init_time = ux500_timer_init, |
717 | .init_machine = snowball_init_machine, | 719 | .init_machine = snowball_init_machine, |
718 | .init_late = NULL, | 720 | .init_late = NULL, |
721 | .restart = ux500_restart, | ||
719 | MACHINE_END | 722 | MACHINE_END |
diff --git a/arch/arm/mach-ux500/cpu-db8500.c b/arch/arm/mach-ux500/cpu-db8500.c index 12eee8167525..03ec8a265b90 100644 --- a/arch/arm/mach-ux500/cpu-db8500.c +++ b/arch/arm/mach-ux500/cpu-db8500.c | |||
@@ -26,7 +26,6 @@ | |||
26 | 26 | ||
27 | #include <asm/pmu.h> | 27 | #include <asm/pmu.h> |
28 | #include <asm/mach/map.h> | 28 | #include <asm/mach/map.h> |
29 | #include <asm/mach/arch.h> | ||
30 | 29 | ||
31 | #include "setup.h" | 30 | #include "setup.h" |
32 | #include "devices.h" | 31 | #include "devices.h" |
@@ -325,6 +324,7 @@ DT_MACHINE_START(U8500_DT, "ST-Ericsson Ux5x0 platform (Device Tree Support)") | |||
325 | .init_machine = u8500_init_machine, | 324 | .init_machine = u8500_init_machine, |
326 | .init_late = NULL, | 325 | .init_late = NULL, |
327 | .dt_compat = stericsson_dt_platform_compat, | 326 | .dt_compat = stericsson_dt_platform_compat, |
327 | .restart = ux500_restart, | ||
328 | MACHINE_END | 328 | MACHINE_END |
329 | 329 | ||
330 | #endif | 330 | #endif |
diff --git a/arch/arm/mach-ux500/cpu.c b/arch/arm/mach-ux500/cpu.c index e6fb0239151b..5d7eebcabc63 100644 --- a/arch/arm/mach-ux500/cpu.c +++ b/arch/arm/mach-ux500/cpu.c | |||
@@ -31,6 +31,14 @@ | |||
31 | #include "db8500-regs.h" | 31 | #include "db8500-regs.h" |
32 | #include "id.h" | 32 | #include "id.h" |
33 | 33 | ||
34 | void ux500_restart(enum reboot_mode mode, const char *cmd) | ||
35 | { | ||
36 | local_irq_disable(); | ||
37 | local_fiq_disable(); | ||
38 | |||
39 | prcmu_system_reset(0); | ||
40 | } | ||
41 | |||
34 | /* | 42 | /* |
35 | * FIXME: Should we set up the GPIO domain here? | 43 | * FIXME: Should we set up the GPIO domain here? |
36 | * | 44 | * |
diff --git a/arch/arm/mach-ux500/setup.h b/arch/arm/mach-ux500/setup.h index cad3ca86c540..656324aad18e 100644 --- a/arch/arm/mach-ux500/setup.h +++ b/arch/arm/mach-ux500/setup.h | |||
@@ -11,10 +11,13 @@ | |||
11 | #ifndef __ASM_ARCH_SETUP_H | 11 | #ifndef __ASM_ARCH_SETUP_H |
12 | #define __ASM_ARCH_SETUP_H | 12 | #define __ASM_ARCH_SETUP_H |
13 | 13 | ||
14 | #include <asm/mach/arch.h> | ||
14 | #include <asm/mach/time.h> | 15 | #include <asm/mach/time.h> |
15 | #include <linux/init.h> | 16 | #include <linux/init.h> |
16 | #include <linux/mfd/abx500/ab8500.h> | 17 | #include <linux/mfd/abx500/ab8500.h> |
17 | 18 | ||
19 | void ux500_restart(enum reboot_mode mode, const char *cmd); | ||
20 | |||
18 | void __init ux500_map_io(void); | 21 | void __init ux500_map_io(void); |
19 | extern void __init u8500_map_io(void); | 22 | extern void __init u8500_map_io(void); |
20 | 23 | ||