diff options
Diffstat (limited to 'arch/arm/mach-shmobile/pm-r8a7779.c')
-rw-r--r-- | arch/arm/mach-shmobile/pm-r8a7779.c | 71 |
1 files changed, 36 insertions, 35 deletions
diff --git a/arch/arm/mach-shmobile/pm-r8a7779.c b/arch/arm/mach-shmobile/pm-r8a7779.c index a18a4ae16d2b..d50a8e9b94a4 100644 --- a/arch/arm/mach-shmobile/pm-r8a7779.c +++ b/arch/arm/mach-shmobile/pm-r8a7779.c | |||
@@ -183,7 +183,7 @@ static bool pd_active_wakeup(struct device *dev) | |||
183 | return true; | 183 | return true; |
184 | } | 184 | } |
185 | 185 | ||
186 | void r8a7779_init_pm_domain(struct r8a7779_pm_domain *r8a7779_pd) | 186 | static void r8a7779_init_pm_domain(struct r8a7779_pm_domain *r8a7779_pd) |
187 | { | 187 | { |
188 | struct generic_pm_domain *genpd = &r8a7779_pd->genpd; | 188 | struct generic_pm_domain *genpd = &r8a7779_pd->genpd; |
189 | 189 | ||
@@ -199,43 +199,44 @@ void r8a7779_init_pm_domain(struct r8a7779_pm_domain *r8a7779_pd) | |||
199 | pd_power_up(&r8a7779_pd->genpd); | 199 | pd_power_up(&r8a7779_pd->genpd); |
200 | } | 200 | } |
201 | 201 | ||
202 | void r8a7779_add_device_to_domain(struct r8a7779_pm_domain *r8a7779_pd, | 202 | static struct r8a7779_pm_domain r8a7779_pm_domains[] = { |
203 | struct platform_device *pdev) | 203 | { |
204 | { | 204 | .genpd.name = "SH4A", |
205 | struct device *dev = &pdev->dev; | 205 | .ch = { |
206 | 206 | .chan_offs = 0x80, /* PWRSR1 .. PWRER1 */ | |
207 | pm_genpd_add_device(&r8a7779_pd->genpd, dev); | 207 | .isr_bit = 16, /* SH4A */ |
208 | if (pm_clk_no_clocks(dev)) | 208 | }, |
209 | pm_clk_add(dev, NULL); | 209 | }, |
210 | } | 210 | { |
211 | 211 | .genpd.name = "SGX", | |
212 | struct r8a7779_pm_domain r8a7779_sh4a = { | 212 | .ch = { |
213 | .ch = { | 213 | .chan_offs = 0xc0, /* PWRSR2 .. PWRER2 */ |
214 | .chan_offs = 0x80, /* PWRSR1 .. PWRER1 */ | 214 | .isr_bit = 20, /* SGX */ |
215 | .isr_bit = 16, /* SH4A */ | 215 | }, |
216 | } | 216 | }, |
217 | }; | 217 | { |
218 | 218 | .genpd.name = "VDP1", | |
219 | struct r8a7779_pm_domain r8a7779_sgx = { | 219 | .ch = { |
220 | .ch = { | 220 | .chan_offs = 0x100, /* PWRSR3 .. PWRER3 */ |
221 | .chan_offs = 0xc0, /* PWRSR2 .. PWRER2 */ | 221 | .isr_bit = 21, /* VDP */ |
222 | .isr_bit = 20, /* SGX */ | 222 | }, |
223 | } | 223 | }, |
224 | { | ||
225 | .genpd.name = "IMPX3", | ||
226 | .ch = { | ||
227 | .chan_offs = 0x140, /* PWRSR4 .. PWRER4 */ | ||
228 | .isr_bit = 24, /* IMP */ | ||
229 | }, | ||
230 | }, | ||
224 | }; | 231 | }; |
225 | 232 | ||
226 | struct r8a7779_pm_domain r8a7779_vdp1 = { | 233 | void __init r8a7779_init_pm_domains(void) |
227 | .ch = { | 234 | { |
228 | .chan_offs = 0x100, /* PWRSR3 .. PWRER3 */ | 235 | int j; |
229 | .isr_bit = 21, /* VDP */ | ||
230 | } | ||
231 | }; | ||
232 | 236 | ||
233 | struct r8a7779_pm_domain r8a7779_impx3 = { | 237 | for (j = 0; j < ARRAY_SIZE(r8a7779_pm_domains); j++) |
234 | .ch = { | 238 | r8a7779_init_pm_domain(&r8a7779_pm_domains[j]); |
235 | .chan_offs = 0x140, /* PWRSR4 .. PWRER4 */ | 239 | } |
236 | .isr_bit = 24, /* IMP */ | ||
237 | } | ||
238 | }; | ||
239 | 240 | ||
240 | #endif /* CONFIG_PM */ | 241 | #endif /* CONFIG_PM */ |
241 | 242 | ||