aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorJungseok Lee <jays.lee@samsung.com>2013-05-24 17:33:03 -0400
committerKukjin Kim <kgene.kim@samsung.com>2013-05-24 17:43:00 -0400
commit1ba830c9997214a7fbe4d91cf238793764620e3b (patch)
treebdbf02b288a11213496dfd9afeb0e73e230cbaa9 /arch
parent68a433f18c0574b50c5952978ca95b0db7347174 (diff)
ARM: EXYNOS: fix software reset logic for EXYNOS5440 SOC
This patch fixes software reset logic. Software reset applies only to powered-on domains in SOC because software reset to all domains causes reboot failure. Signed-off-by: Jungseok Lee <jays.lee@samsung.com> Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/mach-exynos/common.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/arch/arm/mach-exynos/common.c b/arch/arm/mach-exynos/common.c
index a2d20120e9fc..027c9e7f0d13 100644
--- a/arch/arm/mach-exynos/common.c
+++ b/arch/arm/mach-exynos/common.c
@@ -326,9 +326,16 @@ void exynos5_restart(char mode, const char *cmd)
326 val = 0x1; 326 val = 0x1;
327 addr = EXYNOS_SWRESET; 327 addr = EXYNOS_SWRESET;
328 } else if (of_machine_is_compatible("samsung,exynos5440")) { 328 } else if (of_machine_is_compatible("samsung,exynos5440")) {
329 u32 status;
329 np = of_find_compatible_node(NULL, NULL, "samsung,exynos5440-clock"); 330 np = of_find_compatible_node(NULL, NULL, "samsung,exynos5440-clock");
331
332 addr = of_iomap(np, 0) + 0xbc;
333 status = __raw_readl(addr);
334
330 addr = of_iomap(np, 0) + 0xcc; 335 addr = of_iomap(np, 0) + 0xcc;
331 val = (0xfff << 20) | (0x1 << 16); 336 val = __raw_readl(addr);
337
338 val = (val & 0xffff0000) | (status & 0xffff);
332 } else { 339 } else {
333 pr_err("%s: cannot support non-DT\n", __func__); 340 pr_err("%s: cannot support non-DT\n", __func__);
334 return; 341 return;