diff options
Diffstat (limited to 'arch/arm/mach-exynos')
-rw-r--r-- | arch/arm/mach-exynos/common.c | 10 | ||||
-rw-r--r-- | arch/arm/mach-exynos/pm.c | 6 |
2 files changed, 10 insertions, 6 deletions
diff --git a/arch/arm/mach-exynos/common.c b/arch/arm/mach-exynos/common.c index 1a89824a5f78..0c7e3ad7ba93 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) | |||
299 | 299 | ||
300 | void exynos5_restart(char mode, const char *cmd) | 300 | void exynos5_restart(char mode, const char *cmd) |
301 | { | 301 | { |
302 | struct device_node *np; | ||
302 | u32 val; | 303 | u32 val; |
303 | void __iomem *addr; | 304 | void __iomem *addr; |
304 | 305 | ||
@@ -306,8 +307,9 @@ void exynos5_restart(char mode, const char *cmd) | |||
306 | val = 0x1; | 307 | val = 0x1; |
307 | addr = EXYNOS_SWRESET; | 308 | addr = EXYNOS_SWRESET; |
308 | } else if (of_machine_is_compatible("samsung,exynos5440")) { | 309 | } else if (of_machine_is_compatible("samsung,exynos5440")) { |
309 | val = (0x10 << 20) | (0x1 << 16); | 310 | np = of_find_compatible_node(NULL, NULL, "samsung,exynos5440-clock"); |
310 | addr = EXYNOS5440_SWRESET; | 311 | addr = of_iomap(np, 0) + 0xcc; |
312 | val = (0xfff << 20) | (0x1 << 16); | ||
311 | } else { | 313 | } else { |
312 | pr_err("%s: cannot support non-DT\n", __func__); | 314 | pr_err("%s: cannot support non-DT\n", __func__); |
313 | return; | 315 | return; |
@@ -1031,8 +1033,8 @@ static int __init exynos_init_irq_eint(void) | |||
1031 | * interrupt support code here can be completely removed. | 1033 | * interrupt support code here can be completely removed. |
1032 | */ | 1034 | */ |
1033 | static const struct of_device_id exynos_pinctrl_ids[] = { | 1035 | static const struct of_device_id exynos_pinctrl_ids[] = { |
1034 | { .compatible = "samsung,pinctrl-exynos4210", }, | 1036 | { .compatible = "samsung,exynos4210-pinctrl", }, |
1035 | { .compatible = "samsung,pinctrl-exynos4x12", }, | 1037 | { .compatible = "samsung,exynos4x12-pinctrl", }, |
1036 | }; | 1038 | }; |
1037 | struct device_node *pctrl_np, *wkup_np; | 1039 | struct device_node *pctrl_np, *wkup_np; |
1038 | const char *wkup_compat = "samsung,exynos4210-wakeup-eint"; | 1040 | const char *wkup_compat = "samsung,exynos4210-wakeup-eint"; |
diff --git a/arch/arm/mach-exynos/pm.c b/arch/arm/mach-exynos/pm.c index b9b539cac81e..5106ab83e593 100644 --- a/arch/arm/mach-exynos/pm.c +++ b/arch/arm/mach-exynos/pm.c | |||
@@ -91,8 +91,8 @@ static int exynos_cpu_suspend(unsigned long arg) | |||
91 | /* issue the standby signal into the pm unit. */ | 91 | /* issue the standby signal into the pm unit. */ |
92 | cpu_do_idle(); | 92 | cpu_do_idle(); |
93 | 93 | ||
94 | /* we should never get past here */ | 94 | pr_info("Failed to suspend the system\n"); |
95 | panic("sleep resumed to originator?"); | 95 | return 1; /* Aborting suspend */ |
96 | } | 96 | } |
97 | 97 | ||
98 | static void exynos_pm_prepare(void) | 98 | static void exynos_pm_prepare(void) |
@@ -282,6 +282,8 @@ static void exynos_pm_resume(void) | |||
282 | if (!(tmp & S5P_CENTRAL_LOWPWR_CFG)) { | 282 | if (!(tmp & S5P_CENTRAL_LOWPWR_CFG)) { |
283 | tmp |= S5P_CENTRAL_LOWPWR_CFG; | 283 | tmp |= S5P_CENTRAL_LOWPWR_CFG; |
284 | __raw_writel(tmp, S5P_CENTRAL_SEQ_CONFIGURATION); | 284 | __raw_writel(tmp, S5P_CENTRAL_SEQ_CONFIGURATION); |
285 | /* clear the wakeup state register */ | ||
286 | __raw_writel(0x0, S5P_WAKEUP_STAT); | ||
285 | /* No need to perform below restore code */ | 287 | /* No need to perform below restore code */ |
286 | goto early_wakeup; | 288 | goto early_wakeup; |
287 | } | 289 | } |