diff options
author | Jungseok Lee <jays.lee@samsung.com> | 2013-05-24 17:33:03 -0400 |
---|---|---|
committer | Kukjin Kim <kgene.kim@samsung.com> | 2013-05-24 17:43:00 -0400 |
commit | 1ba830c9997214a7fbe4d91cf238793764620e3b (patch) | |
tree | bdbf02b288a11213496dfd9afeb0e73e230cbaa9 /arch/arm/mach-exynos | |
parent | 68a433f18c0574b50c5952978ca95b0db7347174 (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/arm/mach-exynos')
-rw-r--r-- | arch/arm/mach-exynos/common.c | 9 |
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; |