aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorKyungmin Park <kyungmin.park@samsung.com>2011-08-19 07:25:05 -0400
committerKukjin Kim <kgene.kim@samsung.com>2011-08-19 08:21:08 -0400
commitd2edddf2b25863ec0893635662b0832f9965b543 (patch)
tree17b18e4614b22dc4a478b2d64cbd8c977f67b2cd /arch
parent2b431ff74a850db3d5b804be3ac466b6ed7f516d (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.c10
-rw-r--r--arch/arm/mach-exynos4/include/mach/regs-pmu.h2
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
33extern int combiner_init(unsigned int combiner_nr, void __iomem *base, 35extern 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
132static 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)