aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFabio Baltieri <fabio.baltieri@linaro.org>2013-06-14 09:22:40 -0400
committerLinus Walleij <linus.walleij@linaro.org>2013-08-19 16:49:24 -0400
commitbd93ec505312f05fbc2c6f426c74fef920a597fa (patch)
tree58be13a7d35cad465d8fffa02593cce42749280b
parentd4e4ab86bcba5a72779c43dc1459f71fea3d89c8 (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.c5
-rw-r--r--arch/arm/mach-ux500/cpu-db8500.c2
-rw-r--r--arch/arm/mach-ux500/cpu.c8
-rw-r--r--arch/arm/mach-ux500/setup.h3
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,
689MACHINE_END 689MACHINE_END
690 690
691MACHINE_START(U8520, "ST-Ericsson U8520 Platform HREFP520") 691MACHINE_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,
698MACHINE_END 699MACHINE_END
699 700
700MACHINE_START(HREFV60, "ST-Ericsson U8500 Platform HREFv60+") 701MACHINE_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,
708MACHINE_END 710MACHINE_END
709 711
710MACHINE_START(SNOWBALL, "Calao Systems Snowball platform") 712MACHINE_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,
719MACHINE_END 722MACHINE_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,
328MACHINE_END 328MACHINE_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
34void 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
19void ux500_restart(enum reboot_mode mode, const char *cmd);
20
18void __init ux500_map_io(void); 21void __init ux500_map_io(void);
19extern void __init u8500_map_io(void); 22extern void __init u8500_map_io(void);
20 23