diff options
Diffstat (limited to 'arch/arm/mach-exynos/exynos.c')
-rw-r--r-- | arch/arm/mach-exynos/exynos.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/arch/arm/mach-exynos/exynos.c b/arch/arm/mach-exynos/exynos.c index bcde0dd668df..c3bfbba3006d 100644 --- a/arch/arm/mach-exynos/exynos.c +++ b/arch/arm/mach-exynos/exynos.c | |||
@@ -167,6 +167,33 @@ static void __init exynos_init_io(void) | |||
167 | } | 167 | } |
168 | 168 | ||
169 | /* | 169 | /* |
170 | * Set or clear the USE_DELAYED_RESET_ASSERTION option. Used by smp code | ||
171 | * and suspend. | ||
172 | * | ||
173 | * This is necessary only on Exynos4 SoCs. When system is running | ||
174 | * USE_DELAYED_RESET_ASSERTION should be set so the ARM CLK clock down | ||
175 | * feature could properly detect global idle state when secondary CPU is | ||
176 | * powered down. | ||
177 | * | ||
178 | * However this should not be set when such system is going into suspend. | ||
179 | */ | ||
180 | void exynos_set_delayed_reset_assertion(bool enable) | ||
181 | { | ||
182 | if (soc_is_exynos4()) { | ||
183 | unsigned int tmp, core_id; | ||
184 | |||
185 | for (core_id = 0; core_id < num_possible_cpus(); core_id++) { | ||
186 | tmp = pmu_raw_readl(EXYNOS_ARM_CORE_OPTION(core_id)); | ||
187 | if (enable) | ||
188 | tmp |= S5P_USE_DELAYED_RESET_ASSERTION; | ||
189 | else | ||
190 | tmp &= ~(S5P_USE_DELAYED_RESET_ASSERTION); | ||
191 | pmu_raw_writel(tmp, EXYNOS_ARM_CORE_OPTION(core_id)); | ||
192 | } | ||
193 | } | ||
194 | } | ||
195 | |||
196 | /* | ||
170 | * Apparently, these SoCs are not able to wake-up from suspend using | 197 | * Apparently, these SoCs are not able to wake-up from suspend using |
171 | * the PMU. Too bad. Should they suddenly become capable of such a | 198 | * the PMU. Too bad. Should they suddenly become capable of such a |
172 | * feat, the matches below should be moved to suspend.c. | 199 | * feat, the matches below should be moved to suspend.c. |