ARM: EXYNOS: fix software reset logic for EXYNOS5440 SOC
authorJungseok Lee <jays.lee@samsung.com>
Fri, 24 May 2013 21:33:03 +0000 (06:33 +0900)
committerKukjin Kim <kgene.kim@samsung.com>
Fri, 24 May 2013 21:43:00 +0000 (06:43 +0900)
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>
arch/arm/mach-exynos/common.c

index a2d20120e9fc3cbd6ef896519b8c6d7913a7b875..027c9e7f0d137acf36c0502168137ee32f81e9a7 100644 (file)
@@ -326,9 +326,16 @@ void exynos5_restart(char mode, const char *cmd)
                val = 0x1;
                addr = EXYNOS_SWRESET;
        } else if (of_machine_is_compatible("samsung,exynos5440")) {
+               u32 status;
                np = of_find_compatible_node(NULL, NULL, "samsung,exynos5440-clock");
+
+               addr = of_iomap(np, 0) + 0xbc;
+               status = __raw_readl(addr);
+
                addr = of_iomap(np, 0) + 0xcc;
-               val = (0xfff << 20) | (0x1 << 16);
+               val = __raw_readl(addr);
+
+               val = (val & 0xffff0000) | (status & 0xffff);
        } else {
                pr_err("%s: cannot support non-DT\n", __func__);
                return;