aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-versatile/core.c
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@arm.linux.org.uk>2012-01-05 08:25:15 -0500
committerRussell King <rmk+kernel@arm.linux.org.uk>2012-01-05 08:25:27 -0500
commit7b9dd47136c07ffd883aff6926c7b281e4c1eea4 (patch)
treeb835312e76fe323de3e1cbbb0d15fca5a3f7ef9c /arch/arm/mach-versatile/core.c
parent2e0e943436912ffe0848ece58167edfe754edb96 (diff)
parent0575fb754dbfc32a01f297e778533340a533ec68 (diff)
Merge branch 'restart' into for-linus
Conflicts: arch/arm/mach-exynos/cpu.c The changes to arch/arm/mach-exynos/cpu.c were moved to mach-exynos/common.c.
Diffstat (limited to 'arch/arm/mach-versatile/core.c')
-rw-r--r--arch/arm/mach-versatile/core.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/arch/arm/mach-versatile/core.c b/arch/arm/mach-versatile/core.c
index 4d8dfc15f3e6..cbcda61162d3 100644
--- a/arch/arm/mach-versatile/core.c
+++ b/arch/arm/mach-versatile/core.c
@@ -740,6 +740,19 @@ static void versatile_leds_event(led_event_t ledevt)
740} 740}
741#endif /* CONFIG_LEDS */ 741#endif /* CONFIG_LEDS */
742 742
743void versatile_restart(char mode, const char *cmd)
744{
745 void __iomem *sys = __io_address(VERSATILE_SYS_BASE);
746 u32 val;
747
748 val = __raw_readl(sys + VERSATILE_SYS_RESETCTL_OFFSET);
749 val |= 0x105;
750
751 __raw_writel(0xa05f, sys + VERSATILE_SYS_LOCK_OFFSET);
752 __raw_writel(val, sys + VERSATILE_SYS_RESETCTL_OFFSET);
753 __raw_writel(0, sys + VERSATILE_SYS_LOCK_OFFSET);
754}
755
743/* Early initializations */ 756/* Early initializations */
744void __init versatile_init_early(void) 757void __init versatile_init_early(void)
745{ 758{