diff options
-rw-r--r-- | arch/arm/mach-exynos4/clock-exynos4210.c | 38 | ||||
-rw-r--r-- | arch/arm/mach-exynos4/clock-exynos4212.c | 34 | ||||
-rw-r--r-- | arch/arm/mach-exynos4/clock.c | 89 | ||||
-rw-r--r-- | arch/arm/mach-exynos4/include/mach/regs-clock.h | 4 | ||||
-rw-r--r-- | arch/arm/mach-exynos4/pm.c | 79 |
5 files changed, 172 insertions, 72 deletions
diff --git a/arch/arm/mach-exynos4/clock-exynos4210.c b/arch/arm/mach-exynos4/clock-exynos4210.c index fe74b9179fec..b9d5ef670eb4 100644 --- a/arch/arm/mach-exynos4/clock-exynos4210.c +++ b/arch/arm/mach-exynos4/clock-exynos4210.c | |||
@@ -15,6 +15,7 @@ | |||
15 | #include <linux/err.h> | 15 | #include <linux/err.h> |
16 | #include <linux/clk.h> | 16 | #include <linux/clk.h> |
17 | #include <linux/io.h> | 17 | #include <linux/io.h> |
18 | #include <linux/syscore_ops.h> | ||
18 | 19 | ||
19 | #include <plat/cpu-freq.h> | 20 | #include <plat/cpu-freq.h> |
20 | #include <plat/clock.h> | 21 | #include <plat/clock.h> |
@@ -23,12 +24,24 @@ | |||
23 | #include <plat/s5p-clock.h> | 24 | #include <plat/s5p-clock.h> |
24 | #include <plat/clock-clksrc.h> | 25 | #include <plat/clock-clksrc.h> |
25 | #include <plat/exynos4.h> | 26 | #include <plat/exynos4.h> |
27 | #include <plat/pm.h> | ||
26 | 28 | ||
27 | #include <mach/hardware.h> | 29 | #include <mach/hardware.h> |
28 | #include <mach/map.h> | 30 | #include <mach/map.h> |
29 | #include <mach/regs-clock.h> | 31 | #include <mach/regs-clock.h> |
30 | #include <mach/exynos4-clock.h> | 32 | #include <mach/exynos4-clock.h> |
31 | 33 | ||
34 | static struct sleep_save exynos4210_clock_save[] = { | ||
35 | SAVE_ITEM(S5P_CLKSRC_IMAGE), | ||
36 | SAVE_ITEM(S5P_CLKSRC_LCD1), | ||
37 | SAVE_ITEM(S5P_CLKDIV_IMAGE), | ||
38 | SAVE_ITEM(S5P_CLKDIV_LCD1), | ||
39 | SAVE_ITEM(S5P_CLKSRC_MASK_LCD1), | ||
40 | SAVE_ITEM(S5P_CLKGATE_IP_IMAGE_4210), | ||
41 | SAVE_ITEM(S5P_CLKGATE_IP_LCD1), | ||
42 | SAVE_ITEM(S5P_CLKGATE_IP_PERIR_4210), | ||
43 | }; | ||
44 | |||
32 | static struct clksrc_clk *sysclks[] = { | 45 | static struct clksrc_clk *sysclks[] = { |
33 | /* nothing here yet */ | 46 | /* nothing here yet */ |
34 | }; | 47 | }; |
@@ -83,6 +96,29 @@ static struct clk init_clocks_off[] = { | |||
83 | }, | 96 | }, |
84 | }; | 97 | }; |
85 | 98 | ||
99 | #ifdef CONFIG_PM_SLEEP | ||
100 | static int exynos4210_clock_suspend(void) | ||
101 | { | ||
102 | s3c_pm_do_save(exynos4210_clock_save, ARRAY_SIZE(exynos4210_clock_save)); | ||
103 | |||
104 | return 0; | ||
105 | } | ||
106 | |||
107 | static void exynos4210_clock_resume(void) | ||
108 | { | ||
109 | s3c_pm_do_restore_core(exynos4210_clock_save, ARRAY_SIZE(exynos4210_clock_save)); | ||
110 | } | ||
111 | |||
112 | #else | ||
113 | #define exynos4210_clock_suspend NULL | ||
114 | #define exynos4210_clock_resume NULL | ||
115 | #endif | ||
116 | |||
117 | struct syscore_ops exynos4210_clock_syscore_ops = { | ||
118 | .suspend = exynos4210_clock_suspend, | ||
119 | .resume = exynos4210_clock_resume, | ||
120 | }; | ||
121 | |||
86 | void __init exynos4210_register_clocks(void) | 122 | void __init exynos4210_register_clocks(void) |
87 | { | 123 | { |
88 | int ptr; | 124 | int ptr; |
@@ -98,4 +134,6 @@ void __init exynos4210_register_clocks(void) | |||
98 | 134 | ||
99 | s3c_register_clocks(init_clocks_off, ARRAY_SIZE(init_clocks_off)); | 135 | s3c_register_clocks(init_clocks_off, ARRAY_SIZE(init_clocks_off)); |
100 | s3c_disable_clocks(init_clocks_off, ARRAY_SIZE(init_clocks_off)); | 136 | s3c_disable_clocks(init_clocks_off, ARRAY_SIZE(init_clocks_off)); |
137 | |||
138 | register_syscore_ops(&exynos4210_clock_syscore_ops); | ||
101 | } | 139 | } |
diff --git a/arch/arm/mach-exynos4/clock-exynos4212.c b/arch/arm/mach-exynos4/clock-exynos4212.c index 5a47a3f0dfe4..77d5decb34fd 100644 --- a/arch/arm/mach-exynos4/clock-exynos4212.c +++ b/arch/arm/mach-exynos4/clock-exynos4212.c | |||
@@ -15,6 +15,7 @@ | |||
15 | #include <linux/err.h> | 15 | #include <linux/err.h> |
16 | #include <linux/clk.h> | 16 | #include <linux/clk.h> |
17 | #include <linux/io.h> | 17 | #include <linux/io.h> |
18 | #include <linux/syscore_ops.h> | ||
18 | 19 | ||
19 | #include <plat/cpu-freq.h> | 20 | #include <plat/cpu-freq.h> |
20 | #include <plat/clock.h> | 21 | #include <plat/clock.h> |
@@ -23,12 +24,20 @@ | |||
23 | #include <plat/s5p-clock.h> | 24 | #include <plat/s5p-clock.h> |
24 | #include <plat/clock-clksrc.h> | 25 | #include <plat/clock-clksrc.h> |
25 | #include <plat/exynos4.h> | 26 | #include <plat/exynos4.h> |
27 | #include <plat/pm.h> | ||
26 | 28 | ||
27 | #include <mach/hardware.h> | 29 | #include <mach/hardware.h> |
28 | #include <mach/map.h> | 30 | #include <mach/map.h> |
29 | #include <mach/regs-clock.h> | 31 | #include <mach/regs-clock.h> |
30 | #include <mach/exynos4-clock.h> | 32 | #include <mach/exynos4-clock.h> |
31 | 33 | ||
34 | static struct sleep_save exynos4212_clock_save[] = { | ||
35 | SAVE_ITEM(S5P_CLKSRC_IMAGE), | ||
36 | SAVE_ITEM(S5P_CLKDIV_IMAGE), | ||
37 | SAVE_ITEM(S5P_CLKGATE_IP_IMAGE_4212), | ||
38 | SAVE_ITEM(S5P_CLKGATE_IP_PERIR_4212), | ||
39 | }; | ||
40 | |||
32 | static struct clk *clk_src_mpll_user_list[] = { | 41 | static struct clk *clk_src_mpll_user_list[] = { |
33 | [0] = &clk_fin_mpll, | 42 | [0] = &clk_fin_mpll, |
34 | [1] = &clk_mout_mpll.clk, | 43 | [1] = &clk_mout_mpll.clk, |
@@ -59,6 +68,29 @@ static struct clk init_clocks_off[] = { | |||
59 | /* nothing here yet */ | 68 | /* nothing here yet */ |
60 | }; | 69 | }; |
61 | 70 | ||
71 | #ifdef CONFIG_PM_SLEEP | ||
72 | static int exynos4212_clock_suspend(void) | ||
73 | { | ||
74 | s3c_pm_do_save(exynos4212_clock_save, ARRAY_SIZE(exynos4212_clock_save)); | ||
75 | |||
76 | return 0; | ||
77 | } | ||
78 | |||
79 | static void exynos4212_clock_resume(void) | ||
80 | { | ||
81 | s3c_pm_do_restore_core(exynos4212_clock_save, ARRAY_SIZE(exynos4212_clock_save)); | ||
82 | } | ||
83 | |||
84 | #else | ||
85 | #define exynos4212_clock_suspend NULL | ||
86 | #define exynos4212_clock_resume NULL | ||
87 | #endif | ||
88 | |||
89 | struct syscore_ops exynos4212_clock_syscore_ops = { | ||
90 | .suspend = exynos4212_clock_suspend, | ||
91 | .resume = exynos4212_clock_resume, | ||
92 | }; | ||
93 | |||
62 | void __init exynos4212_register_clocks(void) | 94 | void __init exynos4212_register_clocks(void) |
63 | { | 95 | { |
64 | int ptr; | 96 | int ptr; |
@@ -81,4 +113,6 @@ void __init exynos4212_register_clocks(void) | |||
81 | 113 | ||
82 | s3c_register_clocks(init_clocks_off, ARRAY_SIZE(init_clocks_off)); | 114 | s3c_register_clocks(init_clocks_off, ARRAY_SIZE(init_clocks_off)); |
83 | s3c_disable_clocks(init_clocks_off, ARRAY_SIZE(init_clocks_off)); | 115 | s3c_disable_clocks(init_clocks_off, ARRAY_SIZE(init_clocks_off)); |
116 | |||
117 | register_syscore_ops(&exynos4212_clock_syscore_ops); | ||
84 | } | 118 | } |
diff --git a/arch/arm/mach-exynos4/clock.c b/arch/arm/mach-exynos4/clock.c index eb99467d6762..f26aea3e1bbf 100644 --- a/arch/arm/mach-exynos4/clock.c +++ b/arch/arm/mach-exynos4/clock.c | |||
@@ -13,6 +13,7 @@ | |||
13 | #include <linux/kernel.h> | 13 | #include <linux/kernel.h> |
14 | #include <linux/err.h> | 14 | #include <linux/err.h> |
15 | #include <linux/io.h> | 15 | #include <linux/io.h> |
16 | #include <linux/syscore_ops.h> | ||
16 | 17 | ||
17 | #include <plat/cpu-freq.h> | 18 | #include <plat/cpu-freq.h> |
18 | #include <plat/clock.h> | 19 | #include <plat/clock.h> |
@@ -21,12 +22,77 @@ | |||
21 | #include <plat/s5p-clock.h> | 22 | #include <plat/s5p-clock.h> |
22 | #include <plat/clock-clksrc.h> | 23 | #include <plat/clock-clksrc.h> |
23 | #include <plat/exynos4.h> | 24 | #include <plat/exynos4.h> |
25 | #include <plat/pm.h> | ||
24 | 26 | ||
25 | #include <mach/map.h> | 27 | #include <mach/map.h> |
26 | #include <mach/regs-clock.h> | 28 | #include <mach/regs-clock.h> |
27 | #include <mach/sysmmu.h> | 29 | #include <mach/sysmmu.h> |
28 | #include <mach/exynos4-clock.h> | 30 | #include <mach/exynos4-clock.h> |
29 | 31 | ||
32 | static struct sleep_save exynos4_clock_save[] = { | ||
33 | SAVE_ITEM(S5P_CLKDIV_LEFTBUS), | ||
34 | SAVE_ITEM(S5P_CLKGATE_IP_LEFTBUS), | ||
35 | SAVE_ITEM(S5P_CLKDIV_RIGHTBUS), | ||
36 | SAVE_ITEM(S5P_CLKGATE_IP_RIGHTBUS), | ||
37 | SAVE_ITEM(S5P_CLKSRC_TOP0), | ||
38 | SAVE_ITEM(S5P_CLKSRC_TOP1), | ||
39 | SAVE_ITEM(S5P_CLKSRC_CAM), | ||
40 | SAVE_ITEM(S5P_CLKSRC_TV), | ||
41 | SAVE_ITEM(S5P_CLKSRC_MFC), | ||
42 | SAVE_ITEM(S5P_CLKSRC_G3D), | ||
43 | SAVE_ITEM(S5P_CLKSRC_LCD0), | ||
44 | SAVE_ITEM(S5P_CLKSRC_MAUDIO), | ||
45 | SAVE_ITEM(S5P_CLKSRC_FSYS), | ||
46 | SAVE_ITEM(S5P_CLKSRC_PERIL0), | ||
47 | SAVE_ITEM(S5P_CLKSRC_PERIL1), | ||
48 | SAVE_ITEM(S5P_CLKDIV_CAM), | ||
49 | SAVE_ITEM(S5P_CLKDIV_TV), | ||
50 | SAVE_ITEM(S5P_CLKDIV_MFC), | ||
51 | SAVE_ITEM(S5P_CLKDIV_G3D), | ||
52 | SAVE_ITEM(S5P_CLKDIV_LCD0), | ||
53 | SAVE_ITEM(S5P_CLKDIV_MAUDIO), | ||
54 | SAVE_ITEM(S5P_CLKDIV_FSYS0), | ||
55 | SAVE_ITEM(S5P_CLKDIV_FSYS1), | ||
56 | SAVE_ITEM(S5P_CLKDIV_FSYS2), | ||
57 | SAVE_ITEM(S5P_CLKDIV_FSYS3), | ||
58 | SAVE_ITEM(S5P_CLKDIV_PERIL0), | ||
59 | SAVE_ITEM(S5P_CLKDIV_PERIL1), | ||
60 | SAVE_ITEM(S5P_CLKDIV_PERIL2), | ||
61 | SAVE_ITEM(S5P_CLKDIV_PERIL3), | ||
62 | SAVE_ITEM(S5P_CLKDIV_PERIL4), | ||
63 | SAVE_ITEM(S5P_CLKDIV_PERIL5), | ||
64 | SAVE_ITEM(S5P_CLKDIV_TOP), | ||
65 | SAVE_ITEM(S5P_CLKSRC_MASK_TOP), | ||
66 | SAVE_ITEM(S5P_CLKSRC_MASK_CAM), | ||
67 | SAVE_ITEM(S5P_CLKSRC_MASK_TV), | ||
68 | SAVE_ITEM(S5P_CLKSRC_MASK_LCD0), | ||
69 | SAVE_ITEM(S5P_CLKSRC_MASK_MAUDIO), | ||
70 | SAVE_ITEM(S5P_CLKSRC_MASK_FSYS), | ||
71 | SAVE_ITEM(S5P_CLKSRC_MASK_PERIL0), | ||
72 | SAVE_ITEM(S5P_CLKSRC_MASK_PERIL1), | ||
73 | SAVE_ITEM(S5P_CLKDIV2_RATIO), | ||
74 | SAVE_ITEM(S5P_CLKGATE_SCLKCAM), | ||
75 | SAVE_ITEM(S5P_CLKGATE_IP_CAM), | ||
76 | SAVE_ITEM(S5P_CLKGATE_IP_TV), | ||
77 | SAVE_ITEM(S5P_CLKGATE_IP_MFC), | ||
78 | SAVE_ITEM(S5P_CLKGATE_IP_G3D), | ||
79 | SAVE_ITEM(S5P_CLKGATE_IP_LCD0), | ||
80 | SAVE_ITEM(S5P_CLKGATE_IP_FSYS), | ||
81 | SAVE_ITEM(S5P_CLKGATE_IP_GPS), | ||
82 | SAVE_ITEM(S5P_CLKGATE_IP_PERIL), | ||
83 | SAVE_ITEM(S5P_CLKGATE_BLOCK), | ||
84 | SAVE_ITEM(S5P_CLKSRC_MASK_DMC), | ||
85 | SAVE_ITEM(S5P_CLKSRC_DMC), | ||
86 | SAVE_ITEM(S5P_CLKDIV_DMC0), | ||
87 | SAVE_ITEM(S5P_CLKDIV_DMC1), | ||
88 | SAVE_ITEM(S5P_CLKGATE_IP_DMC), | ||
89 | SAVE_ITEM(S5P_CLKSRC_CPU), | ||
90 | SAVE_ITEM(S5P_CLKDIV_CPU), | ||
91 | SAVE_ITEM(S5P_CLKDIV_CPU + 0x4), | ||
92 | SAVE_ITEM(S5P_CLKGATE_SCLKCPU), | ||
93 | SAVE_ITEM(S5P_CLKGATE_IP_CPU), | ||
94 | }; | ||
95 | |||
30 | struct clk clk_sclk_hdmi27m = { | 96 | struct clk clk_sclk_hdmi27m = { |
31 | .name = "sclk_hdmi27m", | 97 | .name = "sclk_hdmi27m", |
32 | .rate = 27000000, | 98 | .rate = 27000000, |
@@ -1180,6 +1246,28 @@ static struct clk *clks[] __initdata = { | |||
1180 | /* Nothing here yet */ | 1246 | /* Nothing here yet */ |
1181 | }; | 1247 | }; |
1182 | 1248 | ||
1249 | #ifdef CONFIG_PM_SLEEP | ||
1250 | static int exynos4_clock_suspend(void) | ||
1251 | { | ||
1252 | s3c_pm_do_save(exynos4_clock_save, ARRAY_SIZE(exynos4_clock_save)); | ||
1253 | return 0; | ||
1254 | } | ||
1255 | |||
1256 | static void exynos4_clock_resume(void) | ||
1257 | { | ||
1258 | s3c_pm_do_restore_core(exynos4_clock_save, ARRAY_SIZE(exynos4_clock_save)); | ||
1259 | } | ||
1260 | |||
1261 | #else | ||
1262 | #define exynos4_clock_suspend NULL | ||
1263 | #define exynos4_clock_resume NULL | ||
1264 | #endif | ||
1265 | |||
1266 | struct syscore_ops exynos4_clock_syscore_ops = { | ||
1267 | .suspend = exynos4_clock_suspend, | ||
1268 | .resume = exynos4_clock_resume, | ||
1269 | }; | ||
1270 | |||
1183 | void __init exynos4_register_clocks(void) | 1271 | void __init exynos4_register_clocks(void) |
1184 | { | 1272 | { |
1185 | int ptr; | 1273 | int ptr; |
@@ -1195,5 +1283,6 @@ void __init exynos4_register_clocks(void) | |||
1195 | s3c_register_clocks(init_clocks_off, ARRAY_SIZE(init_clocks_off)); | 1283 | s3c_register_clocks(init_clocks_off, ARRAY_SIZE(init_clocks_off)); |
1196 | s3c_disable_clocks(init_clocks_off, ARRAY_SIZE(init_clocks_off)); | 1284 | s3c_disable_clocks(init_clocks_off, ARRAY_SIZE(init_clocks_off)); |
1197 | 1285 | ||
1286 | register_syscore_ops(&exynos4_clock_syscore_ops); | ||
1198 | s3c_pwmclk_init(); | 1287 | s3c_pwmclk_init(); |
1199 | } | 1288 | } |
diff --git a/arch/arm/mach-exynos4/include/mach/regs-clock.h b/arch/arm/mach-exynos4/include/mach/regs-clock.h index e75d0f838645..6c37ebe94829 100644 --- a/arch/arm/mach-exynos4/include/mach/regs-clock.h +++ b/arch/arm/mach-exynos4/include/mach/regs-clock.h | |||
@@ -86,6 +86,8 @@ | |||
86 | #define S5P_CLKGATE_IP_IMAGE (soc_is_exynos4210() ? \ | 86 | #define S5P_CLKGATE_IP_IMAGE (soc_is_exynos4210() ? \ |
87 | S5P_CLKREG(0x0C930) : \ | 87 | S5P_CLKREG(0x0C930) : \ |
88 | S5P_CLKREG(0x04930)) | 88 | S5P_CLKREG(0x04930)) |
89 | #define S5P_CLKGATE_IP_IMAGE_4210 S5P_CLKREG(0x0C930) | ||
90 | #define S5P_CLKGATE_IP_IMAGE_4212 S5P_CLKREG(0x04930) | ||
89 | #define S5P_CLKGATE_IP_LCD0 S5P_CLKREG(0x0C934) | 91 | #define S5P_CLKGATE_IP_LCD0 S5P_CLKREG(0x0C934) |
90 | #define S5P_CLKGATE_IP_FSYS S5P_CLKREG(0x0C940) | 92 | #define S5P_CLKGATE_IP_FSYS S5P_CLKREG(0x0C940) |
91 | #define S5P_CLKGATE_IP_GPS S5P_CLKREG(0x0C94C) | 93 | #define S5P_CLKGATE_IP_GPS S5P_CLKREG(0x0C94C) |
@@ -93,6 +95,8 @@ | |||
93 | #define S5P_CLKGATE_IP_PERIR (soc_is_exynos4210() ? \ | 95 | #define S5P_CLKGATE_IP_PERIR (soc_is_exynos4210() ? \ |
94 | S5P_CLKREG(0x0C960) : \ | 96 | S5P_CLKREG(0x0C960) : \ |
95 | S5P_CLKREG(0x08960)) | 97 | S5P_CLKREG(0x08960)) |
98 | #define S5P_CLKGATE_IP_PERIR_4210 S5P_CLKREG(0x0C960) | ||
99 | #define S5P_CLKGATE_IP_PERIR_4212 S5P_CLKREG(0x08960) | ||
96 | #define S5P_CLKGATE_BLOCK S5P_CLKREG(0x0C970) | 100 | #define S5P_CLKGATE_BLOCK S5P_CLKREG(0x0C970) |
97 | 101 | ||
98 | #define S5P_CLKSRC_MASK_DMC S5P_CLKREG(0x10300) | 102 | #define S5P_CLKSRC_MASK_DMC S5P_CLKREG(0x10300) |
diff --git a/arch/arm/mach-exynos4/pm.c b/arch/arm/mach-exynos4/pm.c index bc6ca9482de1..62e4f4363006 100644 --- a/arch/arm/mach-exynos4/pm.c +++ b/arch/arm/mach-exynos4/pm.c | |||
@@ -41,7 +41,6 @@ static struct sleep_save exynos4_set_clksrc[] = { | |||
41 | { .reg = S5P_CLKSRC_MASK_CAM , .val = 0x11111111, }, | 41 | { .reg = S5P_CLKSRC_MASK_CAM , .val = 0x11111111, }, |
42 | { .reg = S5P_CLKSRC_MASK_TV , .val = 0x00000111, }, | 42 | { .reg = S5P_CLKSRC_MASK_TV , .val = 0x00000111, }, |
43 | { .reg = S5P_CLKSRC_MASK_LCD0 , .val = 0x00001111, }, | 43 | { .reg = S5P_CLKSRC_MASK_LCD0 , .val = 0x00001111, }, |
44 | { .reg = S5P_CLKSRC_MASK_LCD1 , .val = 0x00001111, }, | ||
45 | { .reg = S5P_CLKSRC_MASK_MAUDIO , .val = 0x00000001, }, | 44 | { .reg = S5P_CLKSRC_MASK_MAUDIO , .val = 0x00000001, }, |
46 | { .reg = S5P_CLKSRC_MASK_FSYS , .val = 0x01011111, }, | 45 | { .reg = S5P_CLKSRC_MASK_FSYS , .val = 0x01011111, }, |
47 | { .reg = S5P_CLKSRC_MASK_PERIL0 , .val = 0x01111111, }, | 46 | { .reg = S5P_CLKSRC_MASK_PERIL0 , .val = 0x01111111, }, |
@@ -49,6 +48,10 @@ static struct sleep_save exynos4_set_clksrc[] = { | |||
49 | { .reg = S5P_CLKSRC_MASK_DMC , .val = 0x00010000, }, | 48 | { .reg = S5P_CLKSRC_MASK_DMC , .val = 0x00010000, }, |
50 | }; | 49 | }; |
51 | 50 | ||
51 | static struct sleep_save exynos4210_set_clksrc[] = { | ||
52 | { .reg = S5P_CLKSRC_MASK_LCD1 , .val = 0x00001111, }, | ||
53 | }; | ||
54 | |||
52 | static struct sleep_save exynos4_epll_save[] = { | 55 | static struct sleep_save exynos4_epll_save[] = { |
53 | SAVE_ITEM(S5P_EPLL_CON0), | 56 | SAVE_ITEM(S5P_EPLL_CON0), |
54 | SAVE_ITEM(S5P_EPLL_CON1), | 57 | SAVE_ITEM(S5P_EPLL_CON1), |
@@ -60,77 +63,6 @@ static struct sleep_save exynos4_vpll_save[] = { | |||
60 | }; | 63 | }; |
61 | 64 | ||
62 | static struct sleep_save exynos4_core_save[] = { | 65 | static struct sleep_save exynos4_core_save[] = { |
63 | /* CMU side */ | ||
64 | SAVE_ITEM(S5P_CLKDIV_LEFTBUS), | ||
65 | SAVE_ITEM(S5P_CLKGATE_IP_LEFTBUS), | ||
66 | SAVE_ITEM(S5P_CLKDIV_RIGHTBUS), | ||
67 | SAVE_ITEM(S5P_CLKGATE_IP_RIGHTBUS), | ||
68 | SAVE_ITEM(S5P_CLKSRC_TOP0), | ||
69 | SAVE_ITEM(S5P_CLKSRC_TOP1), | ||
70 | SAVE_ITEM(S5P_CLKSRC_CAM), | ||
71 | SAVE_ITEM(S5P_CLKSRC_TV), | ||
72 | SAVE_ITEM(S5P_CLKSRC_MFC), | ||
73 | SAVE_ITEM(S5P_CLKSRC_G3D), | ||
74 | SAVE_ITEM(S5P_CLKSRC_IMAGE), | ||
75 | SAVE_ITEM(S5P_CLKSRC_LCD0), | ||
76 | SAVE_ITEM(S5P_CLKSRC_LCD1), | ||
77 | SAVE_ITEM(S5P_CLKSRC_MAUDIO), | ||
78 | SAVE_ITEM(S5P_CLKSRC_FSYS), | ||
79 | SAVE_ITEM(S5P_CLKSRC_PERIL0), | ||
80 | SAVE_ITEM(S5P_CLKSRC_PERIL1), | ||
81 | SAVE_ITEM(S5P_CLKDIV_CAM), | ||
82 | SAVE_ITEM(S5P_CLKDIV_TV), | ||
83 | SAVE_ITEM(S5P_CLKDIV_MFC), | ||
84 | SAVE_ITEM(S5P_CLKDIV_G3D), | ||
85 | SAVE_ITEM(S5P_CLKDIV_IMAGE), | ||
86 | SAVE_ITEM(S5P_CLKDIV_LCD0), | ||
87 | SAVE_ITEM(S5P_CLKDIV_LCD1), | ||
88 | SAVE_ITEM(S5P_CLKDIV_MAUDIO), | ||
89 | SAVE_ITEM(S5P_CLKDIV_FSYS0), | ||
90 | SAVE_ITEM(S5P_CLKDIV_FSYS1), | ||
91 | SAVE_ITEM(S5P_CLKDIV_FSYS2), | ||
92 | SAVE_ITEM(S5P_CLKDIV_FSYS3), | ||
93 | SAVE_ITEM(S5P_CLKDIV_PERIL0), | ||
94 | SAVE_ITEM(S5P_CLKDIV_PERIL1), | ||
95 | SAVE_ITEM(S5P_CLKDIV_PERIL2), | ||
96 | SAVE_ITEM(S5P_CLKDIV_PERIL3), | ||
97 | SAVE_ITEM(S5P_CLKDIV_PERIL4), | ||
98 | SAVE_ITEM(S5P_CLKDIV_PERIL5), | ||
99 | SAVE_ITEM(S5P_CLKDIV_TOP), | ||
100 | SAVE_ITEM(S5P_CLKSRC_MASK_TOP), | ||
101 | SAVE_ITEM(S5P_CLKSRC_MASK_CAM), | ||
102 | SAVE_ITEM(S5P_CLKSRC_MASK_TV), | ||
103 | SAVE_ITEM(S5P_CLKSRC_MASK_LCD0), | ||
104 | SAVE_ITEM(S5P_CLKSRC_MASK_LCD1), | ||
105 | SAVE_ITEM(S5P_CLKSRC_MASK_MAUDIO), | ||
106 | SAVE_ITEM(S5P_CLKSRC_MASK_FSYS), | ||
107 | SAVE_ITEM(S5P_CLKSRC_MASK_PERIL0), | ||
108 | SAVE_ITEM(S5P_CLKSRC_MASK_PERIL1), | ||
109 | SAVE_ITEM(S5P_CLKDIV2_RATIO), | ||
110 | SAVE_ITEM(S5P_CLKGATE_SCLKCAM), | ||
111 | SAVE_ITEM(S5P_CLKGATE_IP_CAM), | ||
112 | SAVE_ITEM(S5P_CLKGATE_IP_TV), | ||
113 | SAVE_ITEM(S5P_CLKGATE_IP_MFC), | ||
114 | SAVE_ITEM(S5P_CLKGATE_IP_G3D), | ||
115 | SAVE_ITEM(S5P_CLKGATE_IP_IMAGE), | ||
116 | SAVE_ITEM(S5P_CLKGATE_IP_LCD0), | ||
117 | SAVE_ITEM(S5P_CLKGATE_IP_LCD1), | ||
118 | SAVE_ITEM(S5P_CLKGATE_IP_FSYS), | ||
119 | SAVE_ITEM(S5P_CLKGATE_IP_GPS), | ||
120 | SAVE_ITEM(S5P_CLKGATE_IP_PERIL), | ||
121 | SAVE_ITEM(S5P_CLKGATE_IP_PERIR), | ||
122 | SAVE_ITEM(S5P_CLKGATE_BLOCK), | ||
123 | SAVE_ITEM(S5P_CLKSRC_MASK_DMC), | ||
124 | SAVE_ITEM(S5P_CLKSRC_DMC), | ||
125 | SAVE_ITEM(S5P_CLKDIV_DMC0), | ||
126 | SAVE_ITEM(S5P_CLKDIV_DMC1), | ||
127 | SAVE_ITEM(S5P_CLKGATE_IP_DMC), | ||
128 | SAVE_ITEM(S5P_CLKSRC_CPU), | ||
129 | SAVE_ITEM(S5P_CLKDIV_CPU), | ||
130 | SAVE_ITEM(S5P_CLKDIV_CPU + 0x4), | ||
131 | SAVE_ITEM(S5P_CLKGATE_SCLKCPU), | ||
132 | SAVE_ITEM(S5P_CLKGATE_IP_CPU), | ||
133 | |||
134 | /* GIC side */ | 66 | /* GIC side */ |
135 | SAVE_ITEM(S5P_VA_GIC_CPU + 0x000), | 67 | SAVE_ITEM(S5P_VA_GIC_CPU + 0x000), |
136 | SAVE_ITEM(S5P_VA_GIC_CPU + 0x004), | 68 | SAVE_ITEM(S5P_VA_GIC_CPU + 0x004), |
@@ -268,6 +200,9 @@ static void exynos4_pm_prepare(void) | |||
268 | 200 | ||
269 | s3c_pm_do_restore_core(exynos4_set_clksrc, ARRAY_SIZE(exynos4_set_clksrc)); | 201 | s3c_pm_do_restore_core(exynos4_set_clksrc, ARRAY_SIZE(exynos4_set_clksrc)); |
270 | 202 | ||
203 | if (soc_is_exynos4210()) | ||
204 | s3c_pm_do_restore_core(exynos4210_set_clksrc, ARRAY_SIZE(exynos4210_set_clksrc)); | ||
205 | |||
271 | } | 206 | } |
272 | 207 | ||
273 | static int exynos4_pm_add(struct sys_device *sysdev) | 208 | static int exynos4_pm_add(struct sys_device *sysdev) |