From: Thomas Abraham Date: Thu, 24 Jan 2013 18:09:13 +0000 (-0800) Subject: ARM: EXYNOS: Fix crash on soft reset on EXYNOS5440 X-Git-Tag: v3.8.7~11 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=3d574eb51f512fd6c7883f6b30677ea405851a5a;p=karo-tx-linux.git ARM: EXYNOS: Fix crash on soft reset on EXYNOS5440 commit 60db7e5f9c9a25a7a9b01007e6e3f5a93bc16a3a upstream. The soft-reset control register is located in the XMU controller space. Map this controller space before writing to the soft-reset controller register. Signed-off-by: Thomas Abraham Signed-off-by: Girish K S Signed-off-by: Kukjin Signed-off-by: Jonghwan Choi Signed-off-by: Greg Kroah-Hartman --- diff --git a/arch/arm/mach-exynos/common.c b/arch/arm/mach-exynos/common.c index 1a89824a5f78..3b6de7abcfe8 100644 --- a/arch/arm/mach-exynos/common.c +++ b/arch/arm/mach-exynos/common.c @@ -299,6 +299,7 @@ void exynos4_restart(char mode, const char *cmd) void exynos5_restart(char mode, const char *cmd) { + struct device_node *np; u32 val; void __iomem *addr; @@ -306,8 +307,9 @@ void exynos5_restart(char mode, const char *cmd) val = 0x1; addr = EXYNOS_SWRESET; } else if (of_machine_is_compatible("samsung,exynos5440")) { - val = (0x10 << 20) | (0x1 << 16); - addr = EXYNOS5440_SWRESET; + np = of_find_compatible_node(NULL, NULL, "samsung,exynos5440-clock"); + addr = of_iomap(np, 0) + 0xcc; + val = (0xfff << 20) | (0x1 << 16); } else { pr_err("%s: cannot support non-DT\n", __func__); return;