diff options
author | Kyungmin Park <kyungmin.park@samsung.com> | 2011-08-19 07:25:05 -0400 |
---|---|---|
committer | Kukjin Kim <kgene.kim@samsung.com> | 2011-08-19 08:21:08 -0400 |
commit | d2edddf2b25863ec0893635662b0832f9965b543 (patch) | |
tree | 17b18e4614b22dc4a478b2d64cbd8c977f67b2cd /arch | |
parent | 2b431ff74a850db3d5b804be3ac466b6ed7f516d (diff) |
ARM: EXYNOS4: Add restart hook for proper reboot
This is required to use SWRESET.
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/mach-exynos4/cpu.c | 10 | ||||
-rw-r--r-- | arch/arm/mach-exynos4/include/mach/regs-pmu.h | 2 |
2 files changed, 12 insertions, 0 deletions
diff --git a/arch/arm/mach-exynos4/cpu.c b/arch/arm/mach-exynos4/cpu.c index 84032d3aecd9..746d6fc6d397 100644 --- a/arch/arm/mach-exynos4/cpu.c +++ b/arch/arm/mach-exynos4/cpu.c | |||
@@ -27,8 +27,10 @@ | |||
27 | #include <plat/fb-core.h> | 27 | #include <plat/fb-core.h> |
28 | #include <plat/fimc-core.h> | 28 | #include <plat/fimc-core.h> |
29 | #include <plat/iic-core.h> | 29 | #include <plat/iic-core.h> |
30 | #include <plat/reset.h> | ||
30 | 31 | ||
31 | #include <mach/regs-irq.h> | 32 | #include <mach/regs-irq.h> |
33 | #include <mach/regs-pmu.h> | ||
32 | 34 | ||
33 | extern int combiner_init(unsigned int combiner_nr, void __iomem *base, | 35 | extern int combiner_init(unsigned int combiner_nr, void __iomem *base, |
34 | unsigned int irq_start); | 36 | unsigned int irq_start); |
@@ -127,6 +129,11 @@ static void exynos4_idle(void) | |||
127 | local_irq_enable(); | 129 | local_irq_enable(); |
128 | } | 130 | } |
129 | 131 | ||
132 | static void exynos4_sw_reset(void) | ||
133 | { | ||
134 | __raw_writel(0x1, S5P_SWRESET); | ||
135 | } | ||
136 | |||
130 | /* | 137 | /* |
131 | * exynos4_map_io | 138 | * exynos4_map_io |
132 | * | 139 | * |
@@ -240,5 +247,8 @@ int __init exynos4_init(void) | |||
240 | /* set idle function */ | 247 | /* set idle function */ |
241 | pm_idle = exynos4_idle; | 248 | pm_idle = exynos4_idle; |
242 | 249 | ||
250 | /* set sw_reset function */ | ||
251 | s5p_reset_hook = exynos4_sw_reset; | ||
252 | |||
243 | return sysdev_register(&exynos4_sysdev); | 253 | return sysdev_register(&exynos4_sysdev); |
244 | } | 254 | } |
diff --git a/arch/arm/mach-exynos4/include/mach/regs-pmu.h b/arch/arm/mach-exynos4/include/mach/regs-pmu.h index fa49bbb8e7b0..cdf9b47c303c 100644 --- a/arch/arm/mach-exynos4/include/mach/regs-pmu.h +++ b/arch/arm/mach-exynos4/include/mach/regs-pmu.h | |||
@@ -29,6 +29,8 @@ | |||
29 | #define S5P_USE_STANDBY_WFE1 (1 << 25) | 29 | #define S5P_USE_STANDBY_WFE1 (1 << 25) |
30 | #define S5P_USE_MASK ((0x3 << 16) | (0x3 << 24)) | 30 | #define S5P_USE_MASK ((0x3 << 16) | (0x3 << 24)) |
31 | 31 | ||
32 | #define S5P_SWRESET S5P_PMUREG(0x0400) | ||
33 | |||
32 | #define S5P_WAKEUP_STAT S5P_PMUREG(0x0600) | 34 | #define S5P_WAKEUP_STAT S5P_PMUREG(0x0600) |
33 | #define S5P_EINT_WAKEUP_MASK S5P_PMUREG(0x0604) | 35 | #define S5P_EINT_WAKEUP_MASK S5P_PMUREG(0x0604) |
34 | #define S5P_WAKEUP_MASK S5P_PMUREG(0x0608) | 36 | #define S5P_WAKEUP_MASK S5P_PMUREG(0x0608) |