diff options
Diffstat (limited to 'arch/arm/mach-exynos/pm.c')
-rw-r--r-- | arch/arm/mach-exynos/pm.c | 55 |
1 files changed, 20 insertions, 35 deletions
diff --git a/arch/arm/mach-exynos/pm.c b/arch/arm/mach-exynos/pm.c index e19013051772..428cfeb57724 100644 --- a/arch/arm/mach-exynos/pm.c +++ b/arch/arm/mach-exynos/pm.c | |||
@@ -38,29 +38,29 @@ | |||
38 | #include <mach/pmu.h> | 38 | #include <mach/pmu.h> |
39 | 39 | ||
40 | static struct sleep_save exynos4_set_clksrc[] = { | 40 | static struct sleep_save exynos4_set_clksrc[] = { |
41 | { .reg = S5P_CLKSRC_MASK_TOP , .val = 0x00000001, }, | 41 | { .reg = EXYNOS4_CLKSRC_MASK_TOP , .val = 0x00000001, }, |
42 | { .reg = S5P_CLKSRC_MASK_CAM , .val = 0x11111111, }, | 42 | { .reg = EXYNOS4_CLKSRC_MASK_CAM , .val = 0x11111111, }, |
43 | { .reg = S5P_CLKSRC_MASK_TV , .val = 0x00000111, }, | 43 | { .reg = EXYNOS4_CLKSRC_MASK_TV , .val = 0x00000111, }, |
44 | { .reg = S5P_CLKSRC_MASK_LCD0 , .val = 0x00001111, }, | 44 | { .reg = EXYNOS4_CLKSRC_MASK_LCD0 , .val = 0x00001111, }, |
45 | { .reg = S5P_CLKSRC_MASK_MAUDIO , .val = 0x00000001, }, | 45 | { .reg = EXYNOS4_CLKSRC_MASK_MAUDIO , .val = 0x00000001, }, |
46 | { .reg = S5P_CLKSRC_MASK_FSYS , .val = 0x01011111, }, | 46 | { .reg = EXYNOS4_CLKSRC_MASK_FSYS , .val = 0x01011111, }, |
47 | { .reg = S5P_CLKSRC_MASK_PERIL0 , .val = 0x01111111, }, | 47 | { .reg = EXYNOS4_CLKSRC_MASK_PERIL0 , .val = 0x01111111, }, |
48 | { .reg = S5P_CLKSRC_MASK_PERIL1 , .val = 0x01110111, }, | 48 | { .reg = EXYNOS4_CLKSRC_MASK_PERIL1 , .val = 0x01110111, }, |
49 | { .reg = S5P_CLKSRC_MASK_DMC , .val = 0x00010000, }, | 49 | { .reg = EXYNOS4_CLKSRC_MASK_DMC , .val = 0x00010000, }, |
50 | }; | 50 | }; |
51 | 51 | ||
52 | static struct sleep_save exynos4210_set_clksrc[] = { | 52 | static struct sleep_save exynos4210_set_clksrc[] = { |
53 | { .reg = S5P_CLKSRC_MASK_LCD1 , .val = 0x00001111, }, | 53 | { .reg = EXYNOS4210_CLKSRC_MASK_LCD1 , .val = 0x00001111, }, |
54 | }; | 54 | }; |
55 | 55 | ||
56 | static struct sleep_save exynos4_epll_save[] = { | 56 | static struct sleep_save exynos4_epll_save[] = { |
57 | SAVE_ITEM(S5P_EPLL_CON0), | 57 | SAVE_ITEM(EXYNOS4_EPLL_CON0), |
58 | SAVE_ITEM(S5P_EPLL_CON1), | 58 | SAVE_ITEM(EXYNOS4_EPLL_CON1), |
59 | }; | 59 | }; |
60 | 60 | ||
61 | static struct sleep_save exynos4_vpll_save[] = { | 61 | static struct sleep_save exynos4_vpll_save[] = { |
62 | SAVE_ITEM(S5P_VPLL_CON0), | 62 | SAVE_ITEM(EXYNOS4_VPLL_CON0), |
63 | SAVE_ITEM(S5P_VPLL_CON1), | 63 | SAVE_ITEM(EXYNOS4_VPLL_CON1), |
64 | }; | 64 | }; |
65 | 65 | ||
66 | static struct sleep_save exynos4_core_save[] = { | 66 | static struct sleep_save exynos4_core_save[] = { |
@@ -155,13 +155,6 @@ static struct sleep_save exynos4_core_save[] = { | |||
155 | SAVE_ITEM(S5P_SROM_BC3), | 155 | SAVE_ITEM(S5P_SROM_BC3), |
156 | }; | 156 | }; |
157 | 157 | ||
158 | static struct sleep_save exynos4_l2cc_save[] = { | ||
159 | SAVE_ITEM(S5P_VA_L2CC + L2X0_TAG_LATENCY_CTRL), | ||
160 | SAVE_ITEM(S5P_VA_L2CC + L2X0_DATA_LATENCY_CTRL), | ||
161 | SAVE_ITEM(S5P_VA_L2CC + L2X0_PREFETCH_CTRL), | ||
162 | SAVE_ITEM(S5P_VA_L2CC + L2X0_POWER_CTRL), | ||
163 | SAVE_ITEM(S5P_VA_L2CC + L2X0_AUX_CTRL), | ||
164 | }; | ||
165 | 158 | ||
166 | /* For Cortex-A9 Diagnostic and Power control register */ | 159 | /* For Cortex-A9 Diagnostic and Power control register */ |
167 | static unsigned int save_arm_register[2]; | 160 | static unsigned int save_arm_register[2]; |
@@ -182,7 +175,6 @@ static void exynos4_pm_prepare(void) | |||
182 | u32 tmp; | 175 | u32 tmp; |
183 | 176 | ||
184 | s3c_pm_do_save(exynos4_core_save, ARRAY_SIZE(exynos4_core_save)); | 177 | s3c_pm_do_save(exynos4_core_save, ARRAY_SIZE(exynos4_core_save)); |
185 | s3c_pm_do_save(exynos4_l2cc_save, ARRAY_SIZE(exynos4_l2cc_save)); | ||
186 | s3c_pm_do_save(exynos4_epll_save, ARRAY_SIZE(exynos4_epll_save)); | 178 | s3c_pm_do_save(exynos4_epll_save, ARRAY_SIZE(exynos4_epll_save)); |
187 | s3c_pm_do_save(exynos4_vpll_save, ARRAY_SIZE(exynos4_vpll_save)); | 179 | s3c_pm_do_save(exynos4_vpll_save, ARRAY_SIZE(exynos4_vpll_save)); |
188 | 180 | ||
@@ -239,7 +231,7 @@ static void exynos4_restore_pll(void) | |||
239 | locktime = (3000 / pll_in_rate) * p_div; | 231 | locktime = (3000 / pll_in_rate) * p_div; |
240 | lockcnt = locktime * 10000 / (10000 / pll_in_rate); | 232 | lockcnt = locktime * 10000 / (10000 / pll_in_rate); |
241 | 233 | ||
242 | __raw_writel(lockcnt, S5P_EPLL_LOCK); | 234 | __raw_writel(lockcnt, EXYNOS4_EPLL_LOCK); |
243 | 235 | ||
244 | s3c_pm_do_restore_core(exynos4_epll_save, | 236 | s3c_pm_do_restore_core(exynos4_epll_save, |
245 | ARRAY_SIZE(exynos4_epll_save)); | 237 | ARRAY_SIZE(exynos4_epll_save)); |
@@ -257,7 +249,7 @@ static void exynos4_restore_pll(void) | |||
257 | locktime = 750; | 249 | locktime = 750; |
258 | lockcnt = locktime * 10000 / (10000 / pll_in_rate); | 250 | lockcnt = locktime * 10000 / (10000 / pll_in_rate); |
259 | 251 | ||
260 | __raw_writel(lockcnt, S5P_VPLL_LOCK); | 252 | __raw_writel(lockcnt, EXYNOS4_VPLL_LOCK); |
261 | 253 | ||
262 | s3c_pm_do_restore_core(exynos4_vpll_save, | 254 | s3c_pm_do_restore_core(exynos4_vpll_save, |
263 | ARRAY_SIZE(exynos4_vpll_save)); | 255 | ARRAY_SIZE(exynos4_vpll_save)); |
@@ -268,14 +260,14 @@ static void exynos4_restore_pll(void) | |||
268 | 260 | ||
269 | do { | 261 | do { |
270 | if (epll_wait) { | 262 | if (epll_wait) { |
271 | pll_con = __raw_readl(S5P_EPLL_CON0); | 263 | pll_con = __raw_readl(EXYNOS4_EPLL_CON0); |
272 | if (pll_con & (1 << S5P_EPLLCON0_LOCKED_SHIFT)) | 264 | if (pll_con & (1 << EXYNOS4_EPLLCON0_LOCKED_SHIFT)) |
273 | epll_wait = 0; | 265 | epll_wait = 0; |
274 | } | 266 | } |
275 | 267 | ||
276 | if (vpll_wait) { | 268 | if (vpll_wait) { |
277 | pll_con = __raw_readl(S5P_VPLL_CON0); | 269 | pll_con = __raw_readl(EXYNOS4_VPLL_CON0); |
278 | if (pll_con & (1 << S5P_VPLLCON0_LOCKED_SHIFT)) | 270 | if (pll_con & (1 << EXYNOS4_VPLLCON0_LOCKED_SHIFT)) |
279 | vpll_wait = 0; | 271 | vpll_wait = 0; |
280 | } | 272 | } |
281 | } while (epll_wait || vpll_wait); | 273 | } while (epll_wait || vpll_wait); |
@@ -388,13 +380,6 @@ static void exynos4_pm_resume(void) | |||
388 | scu_enable(S5P_VA_SCU); | 380 | scu_enable(S5P_VA_SCU); |
389 | #endif | 381 | #endif |
390 | 382 | ||
391 | #ifdef CONFIG_CACHE_L2X0 | ||
392 | s3c_pm_do_restore_core(exynos4_l2cc_save, ARRAY_SIZE(exynos4_l2cc_save)); | ||
393 | outer_inv_all(); | ||
394 | /* enable L2X0*/ | ||
395 | writel_relaxed(1, S5P_VA_L2CC + L2X0_CTRL); | ||
396 | #endif | ||
397 | |||
398 | early_wakeup: | 383 | early_wakeup: |
399 | return; | 384 | return; |
400 | } | 385 | } |