This source file includes following definitions.
- omap44xx_powerdomains_init
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 #include <linux/kernel.h>
20 #include <linux/init.h>
21
22 #include "powerdomain.h"
23
24 #include "prcm-common.h"
25 #include "prcm44xx.h"
26 #include "prm-regbits-44xx.h"
27 #include "prm44xx.h"
28 #include "prcm_mpu44xx.h"
29
30
31 static struct powerdomain core_44xx_pwrdm = {
32 .name = "core_pwrdm",
33 .voltdm = { .name = "core" },
34 .prcm_offs = OMAP4430_PRM_CORE_INST,
35 .prcm_partition = OMAP4430_PRM_PARTITION,
36 .pwrsts = PWRSTS_RET_ON,
37 .pwrsts_logic_ret = PWRSTS_OFF_RET,
38 .banks = 5,
39 .pwrsts_mem_ret = {
40 [0] = PWRSTS_OFF,
41 [1] = PWRSTS_RET,
42 [2] = PWRSTS_RET,
43 [3] = PWRSTS_OFF_RET,
44 [4] = PWRSTS_OFF_RET,
45 },
46 .pwrsts_mem_on = {
47 [0] = PWRSTS_ON,
48 [1] = PWRSTS_ON,
49 [2] = PWRSTS_ON,
50 [3] = PWRSTS_ON,
51 [4] = PWRSTS_ON,
52 },
53 .flags = PWRDM_HAS_LOWPOWERSTATECHANGE,
54 };
55
56
57 static struct powerdomain gfx_44xx_pwrdm = {
58 .name = "gfx_pwrdm",
59 .voltdm = { .name = "core" },
60 .prcm_offs = OMAP4430_PRM_GFX_INST,
61 .prcm_partition = OMAP4430_PRM_PARTITION,
62 .pwrsts = PWRSTS_OFF_ON,
63 .banks = 1,
64 .pwrsts_mem_ret = {
65 [0] = PWRSTS_OFF,
66 },
67 .pwrsts_mem_on = {
68 [0] = PWRSTS_ON,
69 },
70 .flags = PWRDM_HAS_LOWPOWERSTATECHANGE,
71 };
72
73
74 static struct powerdomain abe_44xx_pwrdm = {
75 .name = "abe_pwrdm",
76 .voltdm = { .name = "iva" },
77 .prcm_offs = OMAP4430_PRM_ABE_INST,
78 .prcm_partition = OMAP4430_PRM_PARTITION,
79 .pwrsts = PWRSTS_OFF_RET_ON,
80 .pwrsts_logic_ret = PWRSTS_OFF,
81 .banks = 2,
82 .pwrsts_mem_ret = {
83 [0] = PWRSTS_RET,
84 [1] = PWRSTS_OFF,
85 },
86 .pwrsts_mem_on = {
87 [0] = PWRSTS_ON,
88 [1] = PWRSTS_ON,
89 },
90 .flags = PWRDM_HAS_LOWPOWERSTATECHANGE,
91 };
92
93
94 static struct powerdomain dss_44xx_pwrdm = {
95 .name = "dss_pwrdm",
96 .voltdm = { .name = "core" },
97 .prcm_offs = OMAP4430_PRM_DSS_INST,
98 .prcm_partition = OMAP4430_PRM_PARTITION,
99 .pwrsts = PWRSTS_OFF_RET_ON,
100 .pwrsts_logic_ret = PWRSTS_OFF,
101 .banks = 1,
102 .pwrsts_mem_ret = {
103 [0] = PWRSTS_OFF,
104 },
105 .pwrsts_mem_on = {
106 [0] = PWRSTS_ON,
107 },
108 .flags = PWRDM_HAS_LOWPOWERSTATECHANGE,
109 };
110
111
112 static struct powerdomain tesla_44xx_pwrdm = {
113 .name = "tesla_pwrdm",
114 .voltdm = { .name = "iva" },
115 .prcm_offs = OMAP4430_PRM_TESLA_INST,
116 .prcm_partition = OMAP4430_PRM_PARTITION,
117 .pwrsts = PWRSTS_OFF_RET_ON,
118 .pwrsts_logic_ret = PWRSTS_OFF_RET,
119 .banks = 3,
120 .pwrsts_mem_ret = {
121 [0] = PWRSTS_RET,
122 [1] = PWRSTS_OFF_RET,
123 [2] = PWRSTS_OFF_RET,
124 },
125 .pwrsts_mem_on = {
126 [0] = PWRSTS_ON,
127 [1] = PWRSTS_ON,
128 [2] = PWRSTS_ON,
129 },
130 .flags = PWRDM_HAS_LOWPOWERSTATECHANGE,
131 };
132
133
134 static struct powerdomain wkup_44xx_pwrdm = {
135 .name = "wkup_pwrdm",
136 .voltdm = { .name = "wakeup" },
137 .prcm_offs = OMAP4430_PRM_WKUP_INST,
138 .prcm_partition = OMAP4430_PRM_PARTITION,
139 .pwrsts = PWRSTS_ON,
140 .banks = 1,
141 .pwrsts_mem_ret = {
142 [0] = PWRSTS_OFF,
143 },
144 .pwrsts_mem_on = {
145 [0] = PWRSTS_ON,
146 },
147 };
148
149
150 static struct powerdomain cpu0_44xx_pwrdm = {
151 .name = "cpu0_pwrdm",
152 .voltdm = { .name = "mpu" },
153 .prcm_offs = OMAP4430_PRCM_MPU_CPU0_INST,
154 .prcm_partition = OMAP4430_PRCM_MPU_PARTITION,
155 .pwrsts = PWRSTS_OFF_RET_ON,
156 .pwrsts_logic_ret = PWRSTS_OFF_RET,
157 .banks = 1,
158 .pwrsts_mem_ret = {
159 [0] = PWRSTS_OFF_RET,
160 },
161 .pwrsts_mem_on = {
162 [0] = PWRSTS_ON,
163 },
164 };
165
166
167 static struct powerdomain cpu1_44xx_pwrdm = {
168 .name = "cpu1_pwrdm",
169 .voltdm = { .name = "mpu" },
170 .prcm_offs = OMAP4430_PRCM_MPU_CPU1_INST,
171 .prcm_partition = OMAP4430_PRCM_MPU_PARTITION,
172 .pwrsts = PWRSTS_OFF_RET_ON,
173 .pwrsts_logic_ret = PWRSTS_OFF_RET,
174 .banks = 1,
175 .pwrsts_mem_ret = {
176 [0] = PWRSTS_OFF_RET,
177 },
178 .pwrsts_mem_on = {
179 [0] = PWRSTS_ON,
180 },
181 };
182
183
184 static struct powerdomain emu_44xx_pwrdm = {
185 .name = "emu_pwrdm",
186 .voltdm = { .name = "wakeup" },
187 .prcm_offs = OMAP4430_PRM_EMU_INST,
188 .prcm_partition = OMAP4430_PRM_PARTITION,
189 .pwrsts = PWRSTS_OFF_ON,
190 .banks = 1,
191 .pwrsts_mem_ret = {
192 [0] = PWRSTS_OFF,
193 },
194 .pwrsts_mem_on = {
195 [0] = PWRSTS_ON,
196 },
197 };
198
199
200 static struct powerdomain mpu_44xx_pwrdm = {
201 .name = "mpu_pwrdm",
202 .voltdm = { .name = "mpu" },
203 .prcm_offs = OMAP4430_PRM_MPU_INST,
204 .prcm_partition = OMAP4430_PRM_PARTITION,
205 .pwrsts = PWRSTS_RET_ON,
206 .pwrsts_logic_ret = PWRSTS_OFF_RET,
207 .banks = 3,
208 .pwrsts_mem_ret = {
209 [0] = PWRSTS_OFF_RET,
210 [1] = PWRSTS_OFF_RET,
211 [2] = PWRSTS_RET,
212 },
213 .pwrsts_mem_on = {
214 [0] = PWRSTS_ON,
215 [1] = PWRSTS_ON,
216 [2] = PWRSTS_ON,
217 },
218 };
219
220
221 static struct powerdomain ivahd_44xx_pwrdm = {
222 .name = "ivahd_pwrdm",
223 .voltdm = { .name = "iva" },
224 .prcm_offs = OMAP4430_PRM_IVAHD_INST,
225 .prcm_partition = OMAP4430_PRM_PARTITION,
226 .pwrsts = PWRSTS_OFF_RET_ON,
227 .pwrsts_logic_ret = PWRSTS_OFF,
228 .banks = 4,
229 .pwrsts_mem_ret = {
230 [0] = PWRSTS_OFF,
231 [1] = PWRSTS_OFF_RET,
232 [2] = PWRSTS_OFF_RET,
233 [3] = PWRSTS_OFF_RET,
234 },
235 .pwrsts_mem_on = {
236 [0] = PWRSTS_ON,
237 [1] = PWRSTS_ON,
238 [2] = PWRSTS_ON,
239 [3] = PWRSTS_ON,
240 },
241 .flags = PWRDM_HAS_LOWPOWERSTATECHANGE,
242 };
243
244
245 static struct powerdomain cam_44xx_pwrdm = {
246 .name = "cam_pwrdm",
247 .voltdm = { .name = "core" },
248 .prcm_offs = OMAP4430_PRM_CAM_INST,
249 .prcm_partition = OMAP4430_PRM_PARTITION,
250 .pwrsts = PWRSTS_OFF_ON,
251 .banks = 1,
252 .pwrsts_mem_ret = {
253 [0] = PWRSTS_OFF,
254 },
255 .pwrsts_mem_on = {
256 [0] = PWRSTS_ON,
257 },
258 .flags = PWRDM_HAS_LOWPOWERSTATECHANGE,
259 };
260
261
262 static struct powerdomain l3init_44xx_pwrdm = {
263 .name = "l3init_pwrdm",
264 .voltdm = { .name = "core" },
265 .prcm_offs = OMAP4430_PRM_L3INIT_INST,
266 .prcm_partition = OMAP4430_PRM_PARTITION,
267 .pwrsts = PWRSTS_RET_ON,
268 .pwrsts_logic_ret = PWRSTS_OFF_RET,
269 .banks = 1,
270 .pwrsts_mem_ret = {
271 [0] = PWRSTS_OFF,
272 },
273 .pwrsts_mem_on = {
274 [0] = PWRSTS_ON,
275 },
276 .flags = PWRDM_HAS_LOWPOWERSTATECHANGE,
277 };
278
279
280 static struct powerdomain l4per_44xx_pwrdm = {
281 .name = "l4per_pwrdm",
282 .voltdm = { .name = "core" },
283 .prcm_offs = OMAP4430_PRM_L4PER_INST,
284 .prcm_partition = OMAP4430_PRM_PARTITION,
285 .pwrsts = PWRSTS_RET_ON,
286 .pwrsts_logic_ret = PWRSTS_OFF_RET,
287 .banks = 2,
288 .pwrsts_mem_ret = {
289 [0] = PWRSTS_OFF,
290 [1] = PWRSTS_RET,
291 },
292 .pwrsts_mem_on = {
293 [0] = PWRSTS_ON,
294 [1] = PWRSTS_ON,
295 },
296 .flags = PWRDM_HAS_LOWPOWERSTATECHANGE,
297 };
298
299
300
301
302
303 static struct powerdomain always_on_core_44xx_pwrdm = {
304 .name = "always_on_core_pwrdm",
305 .voltdm = { .name = "core" },
306 .prcm_offs = OMAP4430_PRM_ALWAYS_ON_INST,
307 .prcm_partition = OMAP4430_PRM_PARTITION,
308 .pwrsts = PWRSTS_ON,
309 };
310
311
312 static struct powerdomain cefuse_44xx_pwrdm = {
313 .name = "cefuse_pwrdm",
314 .voltdm = { .name = "core" },
315 .prcm_offs = OMAP4430_PRM_CEFUSE_INST,
316 .prcm_partition = OMAP4430_PRM_PARTITION,
317 .pwrsts = PWRSTS_OFF_ON,
318 .flags = PWRDM_HAS_LOWPOWERSTATECHANGE,
319 };
320
321
322
323
324
325
326
327
328
329
330 static struct powerdomain *powerdomains_omap44xx[] __initdata = {
331 &core_44xx_pwrdm,
332 &gfx_44xx_pwrdm,
333 &abe_44xx_pwrdm,
334 &dss_44xx_pwrdm,
335 &tesla_44xx_pwrdm,
336 &wkup_44xx_pwrdm,
337 &cpu0_44xx_pwrdm,
338 &cpu1_44xx_pwrdm,
339 &emu_44xx_pwrdm,
340 &mpu_44xx_pwrdm,
341 &ivahd_44xx_pwrdm,
342 &cam_44xx_pwrdm,
343 &l3init_44xx_pwrdm,
344 &l4per_44xx_pwrdm,
345 &always_on_core_44xx_pwrdm,
346 &cefuse_44xx_pwrdm,
347 NULL
348 };
349
350 void __init omap44xx_powerdomains_init(void)
351 {
352 pwrdm_register_platform_funcs(&omap4_pwrdm_operations);
353 pwrdm_register_pwrdms(powerdomains_omap44xx);
354 pwrdm_complete_init();
355 }