1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18#include <linux/platform_data/i2c-omap.h>
19#include <linux/power/smartreflex.h>
20#include <linux/platform_data/hsmmc-omap.h>
21
22#include <linux/omap-dma.h>
23#include "l3_3xxx.h"
24#include "l4_3xxx.h"
25
26#include "soc.h"
27#include "omap_hwmod.h"
28#include "omap_hwmod_common_data.h"
29#include "prm-regbits-34xx.h"
30#include "cm-regbits-34xx.h"
31
32#include "i2c.h"
33#include "wd_timer.h"
34#include "serial.h"
35
36
37
38
39
40
41
42
43
44
45#define AM35XX_IPSS_USBOTGSS_BASE 0x5C040000
46
47
48
49
50
51
52
53static struct omap_hwmod omap3xxx_l3_main_hwmod = {
54 .name = "l3_main",
55 .class = &l3_hwmod_class,
56 .flags = HWMOD_NO_IDLEST,
57};
58
59
60static struct omap_hwmod omap3xxx_l4_core_hwmod = {
61 .name = "l4_core",
62 .class = &l4_hwmod_class,
63 .flags = HWMOD_NO_IDLEST,
64};
65
66
67static struct omap_hwmod omap3xxx_l4_per_hwmod = {
68 .name = "l4_per",
69 .class = &l4_hwmod_class,
70 .flags = HWMOD_NO_IDLEST,
71};
72
73
74static struct omap_hwmod omap3xxx_l4_wkup_hwmod = {
75 .name = "l4_wkup",
76 .class = &l4_hwmod_class,
77 .flags = HWMOD_NO_IDLEST,
78};
79
80
81static struct omap_hwmod omap3xxx_l4_sec_hwmod = {
82 .name = "l4_sec",
83 .class = &l4_hwmod_class,
84 .flags = HWMOD_NO_IDLEST,
85};
86
87
88
89static struct omap_hwmod omap3xxx_mpu_hwmod = {
90 .name = "mpu",
91 .class = &mpu_hwmod_class,
92 .main_clk = "arm_fck",
93};
94
95
96static struct omap_hwmod_rst_info omap3xxx_iva_resets[] = {
97 { .name = "logic", .rst_shift = 0, .st_shift = 8 },
98 { .name = "seq0", .rst_shift = 1, .st_shift = 9 },
99 { .name = "seq1", .rst_shift = 2, .st_shift = 10 },
100};
101
102static struct omap_hwmod omap3xxx_iva_hwmod = {
103 .name = "iva",
104 .class = &iva_hwmod_class,
105 .clkdm_name = "iva2_clkdm",
106 .rst_lines = omap3xxx_iva_resets,
107 .rst_lines_cnt = ARRAY_SIZE(omap3xxx_iva_resets),
108 .main_clk = "iva2_ck",
109 .prcm = {
110 .omap2 = {
111 .module_offs = OMAP3430_IVA2_MOD,
112 .idlest_reg_id = 1,
113 .idlest_idle_bit = OMAP3430_ST_IVA2_SHIFT,
114 },
115 },
116};
117
118
119
120
121
122
123static struct omap_hwmod_class omap3xxx_debugss_hwmod_class = {
124 .name = "debugss",
125};
126
127
128static struct omap_hwmod omap3xxx_debugss_hwmod = {
129 .name = "debugss",
130 .class = &omap3xxx_debugss_hwmod_class,
131 .clkdm_name = "emu_clkdm",
132 .main_clk = "emu_src_ck",
133 .flags = HWMOD_NO_IDLEST,
134};
135
136
137static struct omap_hwmod_class_sysconfig omap3xxx_timer_sysc = {
138 .rev_offs = 0x0000,
139 .sysc_offs = 0x0010,
140 .syss_offs = 0x0014,
141 .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_CLOCKACTIVITY |
142 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
143 SYSC_HAS_EMUFREE | SYSC_HAS_AUTOIDLE |
144 SYSS_HAS_RESET_STATUS),
145 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
146 .sysc_fields = &omap_hwmod_sysc_type1,
147};
148
149static struct omap_hwmod_class omap3xxx_timer_hwmod_class = {
150 .name = "timer",
151 .sysc = &omap3xxx_timer_sysc,
152};
153
154
155static struct omap_hwmod omap3xxx_timer1_hwmod = {
156 .name = "timer1",
157 .main_clk = "gpt1_fck",
158 .prcm = {
159 .omap2 = {
160 .module_offs = WKUP_MOD,
161 .idlest_reg_id = 1,
162 .idlest_idle_bit = OMAP3430_ST_GPT1_SHIFT,
163 },
164 },
165 .class = &omap3xxx_timer_hwmod_class,
166 .flags = HWMOD_SET_DEFAULT_CLOCKACT,
167};
168
169
170static struct omap_hwmod omap3xxx_timer2_hwmod = {
171 .name = "timer2",
172 .main_clk = "gpt2_fck",
173 .prcm = {
174 .omap2 = {
175 .module_offs = OMAP3430_PER_MOD,
176 .idlest_reg_id = 1,
177 .idlest_idle_bit = OMAP3430_ST_GPT2_SHIFT,
178 },
179 },
180 .class = &omap3xxx_timer_hwmod_class,
181 .flags = HWMOD_SET_DEFAULT_CLOCKACT,
182};
183
184
185static struct omap_hwmod omap3xxx_timer3_hwmod = {
186 .name = "timer3",
187 .main_clk = "gpt3_fck",
188 .prcm = {
189 .omap2 = {
190 .module_offs = OMAP3430_PER_MOD,
191 .idlest_reg_id = 1,
192 .idlest_idle_bit = OMAP3430_ST_GPT3_SHIFT,
193 },
194 },
195 .class = &omap3xxx_timer_hwmod_class,
196 .flags = HWMOD_SET_DEFAULT_CLOCKACT,
197};
198
199
200static struct omap_hwmod omap3xxx_timer4_hwmod = {
201 .name = "timer4",
202 .main_clk = "gpt4_fck",
203 .prcm = {
204 .omap2 = {
205 .module_offs = OMAP3430_PER_MOD,
206 .idlest_reg_id = 1,
207 .idlest_idle_bit = OMAP3430_ST_GPT4_SHIFT,
208 },
209 },
210 .class = &omap3xxx_timer_hwmod_class,
211 .flags = HWMOD_SET_DEFAULT_CLOCKACT,
212};
213
214
215static struct omap_hwmod omap3xxx_timer5_hwmod = {
216 .name = "timer5",
217 .main_clk = "gpt5_fck",
218 .prcm = {
219 .omap2 = {
220 .module_offs = OMAP3430_PER_MOD,
221 .idlest_reg_id = 1,
222 .idlest_idle_bit = OMAP3430_ST_GPT5_SHIFT,
223 },
224 },
225 .class = &omap3xxx_timer_hwmod_class,
226 .flags = HWMOD_SET_DEFAULT_CLOCKACT,
227};
228
229
230static struct omap_hwmod omap3xxx_timer6_hwmod = {
231 .name = "timer6",
232 .main_clk = "gpt6_fck",
233 .prcm = {
234 .omap2 = {
235 .module_offs = OMAP3430_PER_MOD,
236 .idlest_reg_id = 1,
237 .idlest_idle_bit = OMAP3430_ST_GPT6_SHIFT,
238 },
239 },
240 .class = &omap3xxx_timer_hwmod_class,
241 .flags = HWMOD_SET_DEFAULT_CLOCKACT,
242};
243
244
245static struct omap_hwmod omap3xxx_timer7_hwmod = {
246 .name = "timer7",
247 .main_clk = "gpt7_fck",
248 .prcm = {
249 .omap2 = {
250 .module_offs = OMAP3430_PER_MOD,
251 .idlest_reg_id = 1,
252 .idlest_idle_bit = OMAP3430_ST_GPT7_SHIFT,
253 },
254 },
255 .class = &omap3xxx_timer_hwmod_class,
256 .flags = HWMOD_SET_DEFAULT_CLOCKACT,
257};
258
259
260static struct omap_hwmod omap3xxx_timer8_hwmod = {
261 .name = "timer8",
262 .main_clk = "gpt8_fck",
263 .prcm = {
264 .omap2 = {
265 .module_offs = OMAP3430_PER_MOD,
266 .idlest_reg_id = 1,
267 .idlest_idle_bit = OMAP3430_ST_GPT8_SHIFT,
268 },
269 },
270 .class = &omap3xxx_timer_hwmod_class,
271 .flags = HWMOD_SET_DEFAULT_CLOCKACT,
272};
273
274
275static struct omap_hwmod omap3xxx_timer9_hwmod = {
276 .name = "timer9",
277 .main_clk = "gpt9_fck",
278 .prcm = {
279 .omap2 = {
280 .module_offs = OMAP3430_PER_MOD,
281 .idlest_reg_id = 1,
282 .idlest_idle_bit = OMAP3430_ST_GPT9_SHIFT,
283 },
284 },
285 .class = &omap3xxx_timer_hwmod_class,
286 .flags = HWMOD_SET_DEFAULT_CLOCKACT,
287};
288
289
290static struct omap_hwmod omap3xxx_timer10_hwmod = {
291 .name = "timer10",
292 .main_clk = "gpt10_fck",
293 .prcm = {
294 .omap2 = {
295 .module_offs = CORE_MOD,
296 .idlest_reg_id = 1,
297 .idlest_idle_bit = OMAP3430_ST_GPT10_SHIFT,
298 },
299 },
300 .class = &omap3xxx_timer_hwmod_class,
301 .flags = HWMOD_SET_DEFAULT_CLOCKACT,
302};
303
304
305static struct omap_hwmod omap3xxx_timer11_hwmod = {
306 .name = "timer11",
307 .main_clk = "gpt11_fck",
308 .prcm = {
309 .omap2 = {
310 .module_offs = CORE_MOD,
311 .idlest_reg_id = 1,
312 .idlest_idle_bit = OMAP3430_ST_GPT11_SHIFT,
313 },
314 },
315 .class = &omap3xxx_timer_hwmod_class,
316 .flags = HWMOD_SET_DEFAULT_CLOCKACT,
317};
318
319
320static struct omap_hwmod omap3xxx_timer12_hwmod = {
321 .name = "timer12",
322 .main_clk = "gpt12_fck",
323 .prcm = {
324 .omap2 = {
325 .module_offs = WKUP_MOD,
326 .idlest_reg_id = 1,
327 .idlest_idle_bit = OMAP3430_ST_GPT12_SHIFT,
328 },
329 },
330 .class = &omap3xxx_timer_hwmod_class,
331 .flags = HWMOD_SET_DEFAULT_CLOCKACT,
332};
333
334
335
336
337
338
339
340static struct omap_hwmod_class_sysconfig omap3xxx_wd_timer_sysc = {
341 .rev_offs = 0x0000,
342 .sysc_offs = 0x0010,
343 .syss_offs = 0x0014,
344 .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_EMUFREE |
345 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
346 SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
347 SYSS_HAS_RESET_STATUS),
348 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
349 .sysc_fields = &omap_hwmod_sysc_type1,
350};
351
352
353static struct omap_hwmod_class_sysconfig i2c_sysc = {
354 .rev_offs = 0x00,
355 .sysc_offs = 0x20,
356 .syss_offs = 0x10,
357 .sysc_flags = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
358 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
359 SYSC_HAS_AUTOIDLE | SYSS_HAS_RESET_STATUS),
360 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
361 .sysc_fields = &omap_hwmod_sysc_type1,
362};
363
364static struct omap_hwmod_class omap3xxx_wd_timer_hwmod_class = {
365 .name = "wd_timer",
366 .sysc = &omap3xxx_wd_timer_sysc,
367 .pre_shutdown = &omap2_wd_timer_disable,
368 .reset = &omap2_wd_timer_reset,
369};
370
371static struct omap_hwmod omap3xxx_wd_timer2_hwmod = {
372 .name = "wd_timer2",
373 .class = &omap3xxx_wd_timer_hwmod_class,
374 .main_clk = "wdt2_fck",
375 .prcm = {
376 .omap2 = {
377 .module_offs = WKUP_MOD,
378 .idlest_reg_id = 1,
379 .idlest_idle_bit = OMAP3430_ST_WDT2_SHIFT,
380 },
381 },
382
383
384
385
386 .flags = HWMOD_SWSUP_SIDLE,
387};
388
389
390static struct omap_hwmod omap3xxx_uart1_hwmod = {
391 .name = "uart1",
392 .main_clk = "uart1_fck",
393 .flags = DEBUG_TI81XXUART1_FLAGS | HWMOD_SWSUP_SIDLE,
394 .prcm = {
395 .omap2 = {
396 .module_offs = CORE_MOD,
397 .idlest_reg_id = 1,
398 .idlest_idle_bit = OMAP3430_EN_UART1_SHIFT,
399 },
400 },
401 .class = &omap2_uart_class,
402};
403
404
405static struct omap_hwmod omap3xxx_uart2_hwmod = {
406 .name = "uart2",
407 .main_clk = "uart2_fck",
408 .flags = DEBUG_TI81XXUART2_FLAGS | HWMOD_SWSUP_SIDLE,
409 .prcm = {
410 .omap2 = {
411 .module_offs = CORE_MOD,
412 .idlest_reg_id = 1,
413 .idlest_idle_bit = OMAP3430_EN_UART2_SHIFT,
414 },
415 },
416 .class = &omap2_uart_class,
417};
418
419
420static struct omap_hwmod omap3xxx_uart3_hwmod = {
421 .name = "uart3",
422 .main_clk = "uart3_fck",
423 .flags = DEBUG_OMAP3UART3_FLAGS | DEBUG_TI81XXUART3_FLAGS |
424 HWMOD_SWSUP_SIDLE,
425 .prcm = {
426 .omap2 = {
427 .module_offs = OMAP3430_PER_MOD,
428 .idlest_reg_id = 1,
429 .idlest_idle_bit = OMAP3430_EN_UART3_SHIFT,
430 },
431 },
432 .class = &omap2_uart_class,
433};
434
435
436
437
438static struct omap_hwmod omap36xx_uart4_hwmod = {
439 .name = "uart4",
440 .main_clk = "uart4_fck",
441 .flags = DEBUG_OMAP3UART4_FLAGS | HWMOD_SWSUP_SIDLE,
442 .prcm = {
443 .omap2 = {
444 .module_offs = OMAP3430_PER_MOD,
445 .idlest_reg_id = 1,
446 .idlest_idle_bit = OMAP3630_EN_UART4_SHIFT,
447 },
448 },
449 .class = &omap2_uart_class,
450};
451
452
453
454
455
456
457
458
459
460
461
462
463
464static struct omap_hwmod_opt_clk am35xx_uart4_opt_clks[] = {
465 { .role = "softreset_uart1_fck", .clk = "uart1_fck" },
466};
467
468static struct omap_hwmod am35xx_uart4_hwmod = {
469 .name = "uart4",
470 .main_clk = "uart4_fck",
471 .prcm = {
472 .omap2 = {
473 .module_offs = CORE_MOD,
474 .idlest_reg_id = 1,
475 .idlest_idle_bit = AM35XX_ST_UART4_SHIFT,
476 },
477 },
478 .opt_clks = am35xx_uart4_opt_clks,
479 .opt_clks_cnt = ARRAY_SIZE(am35xx_uart4_opt_clks),
480 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
481 .class = &omap2_uart_class,
482};
483
484static struct omap_hwmod_class i2c_class = {
485 .name = "i2c",
486 .sysc = &i2c_sysc,
487 .rev = OMAP_I2C_IP_VERSION_1,
488 .reset = &omap_i2c_reset,
489};
490
491
492static struct omap_hwmod_opt_clk dss_opt_clks[] = {
493
494
495
496
497 { .role = "sys_clk", .clk = "dss2_alwon_fck" },
498 { .role = "tv_clk", .clk = "dss_tv_fck" },
499
500 { .role = "tv_dac_clk", .clk = "dss_96m_fck" },
501};
502
503static struct omap_hwmod omap3430es1_dss_core_hwmod = {
504 .name = "dss_core",
505 .class = &omap2_dss_hwmod_class,
506 .main_clk = "dss1_alwon_fck",
507 .prcm = {
508 .omap2 = {
509 .module_offs = OMAP3430_DSS_MOD,
510 .idlest_reg_id = 1,
511 },
512 },
513 .opt_clks = dss_opt_clks,
514 .opt_clks_cnt = ARRAY_SIZE(dss_opt_clks),
515 .flags = HWMOD_NO_IDLEST | HWMOD_CONTROL_OPT_CLKS_IN_RESET,
516};
517
518static struct omap_hwmod omap3xxx_dss_core_hwmod = {
519 .name = "dss_core",
520 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
521 .class = &omap2_dss_hwmod_class,
522 .main_clk = "dss1_alwon_fck",
523 .prcm = {
524 .omap2 = {
525 .module_offs = OMAP3430_DSS_MOD,
526 .idlest_reg_id = 1,
527 .idlest_idle_bit = OMAP3430ES2_ST_DSS_IDLE_SHIFT,
528 },
529 },
530 .opt_clks = dss_opt_clks,
531 .opt_clks_cnt = ARRAY_SIZE(dss_opt_clks),
532};
533
534
535
536
537
538
539static struct omap_hwmod_class_sysconfig omap3_dispc_sysc = {
540 .rev_offs = 0x0000,
541 .sysc_offs = 0x0010,
542 .syss_offs = 0x0014,
543 .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE |
544 SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE |
545 SYSC_HAS_ENAWAKEUP),
546 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
547 MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
548 .sysc_fields = &omap_hwmod_sysc_type1,
549};
550
551static struct omap_hwmod_class omap3_dispc_hwmod_class = {
552 .name = "dispc",
553 .sysc = &omap3_dispc_sysc,
554};
555
556static struct omap_hwmod omap3xxx_dss_dispc_hwmod = {
557 .name = "dss_dispc",
558 .class = &omap3_dispc_hwmod_class,
559 .main_clk = "dss1_alwon_fck",
560 .prcm = {
561 .omap2 = {
562 .module_offs = OMAP3430_DSS_MOD,
563 },
564 },
565 .flags = HWMOD_NO_IDLEST,
566 .dev_attr = &omap2_3_dss_dispc_dev_attr,
567};
568
569
570
571
572
573
574static struct omap_hwmod_class_sysconfig omap3xxx_dsi_sysc = {
575 .rev_offs = 0x0000,
576 .sysc_offs = 0x0010,
577 .syss_offs = 0x0014,
578 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
579 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE |
580 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
581 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
582 .sysc_fields = &omap_hwmod_sysc_type1,
583};
584
585static struct omap_hwmod_class omap3xxx_dsi_hwmod_class = {
586 .name = "dsi",
587 .sysc = &omap3xxx_dsi_sysc,
588};
589
590
591static struct omap_hwmod_opt_clk dss_dsi1_opt_clks[] = {
592 { .role = "sys_clk", .clk = "dss2_alwon_fck" },
593};
594
595static struct omap_hwmod omap3xxx_dss_dsi1_hwmod = {
596 .name = "dss_dsi1",
597 .class = &omap3xxx_dsi_hwmod_class,
598 .main_clk = "dss1_alwon_fck",
599 .prcm = {
600 .omap2 = {
601 .module_offs = OMAP3430_DSS_MOD,
602 },
603 },
604 .opt_clks = dss_dsi1_opt_clks,
605 .opt_clks_cnt = ARRAY_SIZE(dss_dsi1_opt_clks),
606 .flags = HWMOD_NO_IDLEST,
607};
608
609static struct omap_hwmod_opt_clk dss_rfbi_opt_clks[] = {
610 { .role = "ick", .clk = "dss_ick" },
611};
612
613static struct omap_hwmod omap3xxx_dss_rfbi_hwmod = {
614 .name = "dss_rfbi",
615 .class = &omap2_rfbi_hwmod_class,
616 .main_clk = "dss1_alwon_fck",
617 .prcm = {
618 .omap2 = {
619 .module_offs = OMAP3430_DSS_MOD,
620 },
621 },
622 .opt_clks = dss_rfbi_opt_clks,
623 .opt_clks_cnt = ARRAY_SIZE(dss_rfbi_opt_clks),
624 .flags = HWMOD_NO_IDLEST,
625};
626
627static struct omap_hwmod_opt_clk dss_venc_opt_clks[] = {
628
629 { .role = "tv_dac_clk", .clk = "dss_96m_fck" },
630};
631
632static struct omap_hwmod omap3xxx_dss_venc_hwmod = {
633 .name = "dss_venc",
634 .class = &omap2_venc_hwmod_class,
635 .main_clk = "dss_tv_fck",
636 .prcm = {
637 .omap2 = {
638 .module_offs = OMAP3430_DSS_MOD,
639 },
640 },
641 .opt_clks = dss_venc_opt_clks,
642 .opt_clks_cnt = ARRAY_SIZE(dss_venc_opt_clks),
643 .flags = HWMOD_NO_IDLEST,
644};
645
646
647static struct omap_hwmod omap3xxx_i2c1_hwmod = {
648 .name = "i2c1",
649 .flags = HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT,
650 .main_clk = "i2c1_fck",
651 .prcm = {
652 .omap2 = {
653 .module_offs = CORE_MOD,
654 .idlest_reg_id = 1,
655 .idlest_idle_bit = OMAP3430_ST_I2C1_SHIFT,
656 },
657 },
658 .class = &i2c_class,
659};
660
661
662static struct omap_hwmod omap3xxx_i2c2_hwmod = {
663 .name = "i2c2",
664 .flags = HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT,
665 .main_clk = "i2c2_fck",
666 .prcm = {
667 .omap2 = {
668 .module_offs = CORE_MOD,
669 .idlest_reg_id = 1,
670 .idlest_idle_bit = OMAP3430_ST_I2C2_SHIFT,
671 },
672 },
673 .class = &i2c_class,
674};
675
676
677static struct omap_hwmod omap3xxx_i2c3_hwmod = {
678 .name = "i2c3",
679 .flags = HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT,
680 .main_clk = "i2c3_fck",
681 .prcm = {
682 .omap2 = {
683 .module_offs = CORE_MOD,
684 .idlest_reg_id = 1,
685 .idlest_idle_bit = OMAP3430_ST_I2C3_SHIFT,
686 },
687 },
688 .class = &i2c_class,
689};
690
691
692
693
694
695
696static struct omap_hwmod_class_sysconfig omap3xxx_gpio_sysc = {
697 .rev_offs = 0x0000,
698 .sysc_offs = 0x0010,
699 .syss_offs = 0x0014,
700 .sysc_flags = (SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE |
701 SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE |
702 SYSS_HAS_RESET_STATUS),
703 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
704 .sysc_fields = &omap_hwmod_sysc_type1,
705};
706
707static struct omap_hwmod_class omap3xxx_gpio_hwmod_class = {
708 .name = "gpio",
709 .sysc = &omap3xxx_gpio_sysc,
710 .rev = 1,
711};
712
713
714static struct omap_hwmod_opt_clk gpio1_opt_clks[] = {
715 { .role = "dbclk", .clk = "gpio1_dbck", },
716};
717
718static struct omap_hwmod omap3xxx_gpio1_hwmod = {
719 .name = "gpio1",
720 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
721 .main_clk = "gpio1_ick",
722 .opt_clks = gpio1_opt_clks,
723 .opt_clks_cnt = ARRAY_SIZE(gpio1_opt_clks),
724 .prcm = {
725 .omap2 = {
726 .module_offs = WKUP_MOD,
727 .idlest_reg_id = 1,
728 .idlest_idle_bit = OMAP3430_ST_GPIO1_SHIFT,
729 },
730 },
731 .class = &omap3xxx_gpio_hwmod_class,
732};
733
734
735static struct omap_hwmod_opt_clk gpio2_opt_clks[] = {
736 { .role = "dbclk", .clk = "gpio2_dbck", },
737};
738
739static struct omap_hwmod omap3xxx_gpio2_hwmod = {
740 .name = "gpio2",
741 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
742 .main_clk = "gpio2_ick",
743 .opt_clks = gpio2_opt_clks,
744 .opt_clks_cnt = ARRAY_SIZE(gpio2_opt_clks),
745 .prcm = {
746 .omap2 = {
747 .module_offs = OMAP3430_PER_MOD,
748 .idlest_reg_id = 1,
749 .idlest_idle_bit = OMAP3430_ST_GPIO2_SHIFT,
750 },
751 },
752 .class = &omap3xxx_gpio_hwmod_class,
753};
754
755
756static struct omap_hwmod_opt_clk gpio3_opt_clks[] = {
757 { .role = "dbclk", .clk = "gpio3_dbck", },
758};
759
760static struct omap_hwmod omap3xxx_gpio3_hwmod = {
761 .name = "gpio3",
762 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
763 .main_clk = "gpio3_ick",
764 .opt_clks = gpio3_opt_clks,
765 .opt_clks_cnt = ARRAY_SIZE(gpio3_opt_clks),
766 .prcm = {
767 .omap2 = {
768 .module_offs = OMAP3430_PER_MOD,
769 .idlest_reg_id = 1,
770 .idlest_idle_bit = OMAP3430_ST_GPIO3_SHIFT,
771 },
772 },
773 .class = &omap3xxx_gpio_hwmod_class,
774};
775
776
777static struct omap_hwmod_opt_clk gpio4_opt_clks[] = {
778 { .role = "dbclk", .clk = "gpio4_dbck", },
779};
780
781static struct omap_hwmod omap3xxx_gpio4_hwmod = {
782 .name = "gpio4",
783 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
784 .main_clk = "gpio4_ick",
785 .opt_clks = gpio4_opt_clks,
786 .opt_clks_cnt = ARRAY_SIZE(gpio4_opt_clks),
787 .prcm = {
788 .omap2 = {
789 .module_offs = OMAP3430_PER_MOD,
790 .idlest_reg_id = 1,
791 .idlest_idle_bit = OMAP3430_ST_GPIO4_SHIFT,
792 },
793 },
794 .class = &omap3xxx_gpio_hwmod_class,
795};
796
797
798
799static struct omap_hwmod_opt_clk gpio5_opt_clks[] = {
800 { .role = "dbclk", .clk = "gpio5_dbck", },
801};
802
803static struct omap_hwmod omap3xxx_gpio5_hwmod = {
804 .name = "gpio5",
805 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
806 .main_clk = "gpio5_ick",
807 .opt_clks = gpio5_opt_clks,
808 .opt_clks_cnt = ARRAY_SIZE(gpio5_opt_clks),
809 .prcm = {
810 .omap2 = {
811 .module_offs = OMAP3430_PER_MOD,
812 .idlest_reg_id = 1,
813 .idlest_idle_bit = OMAP3430_ST_GPIO5_SHIFT,
814 },
815 },
816 .class = &omap3xxx_gpio_hwmod_class,
817};
818
819
820
821static struct omap_hwmod_opt_clk gpio6_opt_clks[] = {
822 { .role = "dbclk", .clk = "gpio6_dbck", },
823};
824
825static struct omap_hwmod omap3xxx_gpio6_hwmod = {
826 .name = "gpio6",
827 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
828 .main_clk = "gpio6_ick",
829 .opt_clks = gpio6_opt_clks,
830 .opt_clks_cnt = ARRAY_SIZE(gpio6_opt_clks),
831 .prcm = {
832 .omap2 = {
833 .module_offs = OMAP3430_PER_MOD,
834 .idlest_reg_id = 1,
835 .idlest_idle_bit = OMAP3430_ST_GPIO6_SHIFT,
836 },
837 },
838 .class = &omap3xxx_gpio_hwmod_class,
839};
840
841
842static struct omap_dma_dev_attr dma_dev_attr = {
843 .dev_caps = RESERVE_CHANNEL | DMA_LINKED_LCH | GLOBAL_PRIORITY |
844 IS_CSSA_32 | IS_CDSA_32 | IS_RW_PRIORITY,
845 .lch_count = 32,
846};
847
848static struct omap_hwmod_class_sysconfig omap3xxx_dma_sysc = {
849 .rev_offs = 0x0000,
850 .sysc_offs = 0x002c,
851 .syss_offs = 0x0028,
852 .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
853 SYSC_HAS_MIDLEMODE | SYSC_HAS_CLOCKACTIVITY |
854 SYSC_HAS_EMUFREE | SYSC_HAS_AUTOIDLE |
855 SYSS_HAS_RESET_STATUS),
856 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
857 MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
858 .sysc_fields = &omap_hwmod_sysc_type1,
859};
860
861static struct omap_hwmod_class omap3xxx_dma_hwmod_class = {
862 .name = "dma",
863 .sysc = &omap3xxx_dma_sysc,
864};
865
866
867static struct omap_hwmod omap3xxx_dma_system_hwmod = {
868 .name = "dma",
869 .class = &omap3xxx_dma_hwmod_class,
870 .main_clk = "core_l3_ick",
871 .prcm = {
872 .omap2 = {
873 .module_offs = CORE_MOD,
874 .idlest_reg_id = 1,
875 .idlest_idle_bit = OMAP3430_ST_SDMA_SHIFT,
876 },
877 },
878 .dev_attr = &dma_dev_attr,
879 .flags = HWMOD_NO_IDLEST,
880};
881
882
883
884
885
886
887static struct omap_hwmod_class_sysconfig omap3xxx_mcbsp_sysc = {
888 .rev_offs = -ENODEV,
889 .sysc_offs = 0x008c,
890 .sysc_flags = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_ENAWAKEUP |
891 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
892 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
893 .sysc_fields = &omap_hwmod_sysc_type1,
894};
895
896static struct omap_hwmod_class omap3xxx_mcbsp_hwmod_class = {
897 .name = "mcbsp",
898 .sysc = &omap3xxx_mcbsp_sysc,
899};
900
901
902static struct omap_hwmod_opt_clk mcbsp15_opt_clks[] = {
903 { .role = "pad_fck", .clk = "mcbsp_clks" },
904 { .role = "prcm_fck", .clk = "core_96m_fck" },
905};
906
907static struct omap_hwmod_opt_clk mcbsp234_opt_clks[] = {
908 { .role = "pad_fck", .clk = "mcbsp_clks" },
909 { .role = "prcm_fck", .clk = "per_96m_fck" },
910};
911
912
913static struct omap_hwmod omap3xxx_mcbsp1_hwmod = {
914 .name = "mcbsp1",
915 .class = &omap3xxx_mcbsp_hwmod_class,
916 .main_clk = "mcbsp1_fck",
917 .prcm = {
918 .omap2 = {
919 .module_offs = CORE_MOD,
920 .idlest_reg_id = 1,
921 .idlest_idle_bit = OMAP3430_ST_MCBSP1_SHIFT,
922 },
923 },
924 .opt_clks = mcbsp15_opt_clks,
925 .opt_clks_cnt = ARRAY_SIZE(mcbsp15_opt_clks),
926};
927
928
929static struct omap_hwmod omap3xxx_mcbsp2_hwmod = {
930 .name = "mcbsp2",
931 .class = &omap3xxx_mcbsp_hwmod_class,
932 .main_clk = "mcbsp2_fck",
933 .prcm = {
934 .omap2 = {
935 .module_offs = OMAP3430_PER_MOD,
936 .idlest_reg_id = 1,
937 .idlest_idle_bit = OMAP3430_ST_MCBSP2_SHIFT,
938 },
939 },
940 .opt_clks = mcbsp234_opt_clks,
941 .opt_clks_cnt = ARRAY_SIZE(mcbsp234_opt_clks),
942};
943
944
945static struct omap_hwmod omap3xxx_mcbsp3_hwmod = {
946 .name = "mcbsp3",
947 .class = &omap3xxx_mcbsp_hwmod_class,
948 .main_clk = "mcbsp3_fck",
949 .prcm = {
950 .omap2 = {
951 .module_offs = OMAP3430_PER_MOD,
952 .idlest_reg_id = 1,
953 .idlest_idle_bit = OMAP3430_ST_MCBSP3_SHIFT,
954 },
955 },
956 .opt_clks = mcbsp234_opt_clks,
957 .opt_clks_cnt = ARRAY_SIZE(mcbsp234_opt_clks),
958};
959
960
961static struct omap_hwmod omap3xxx_mcbsp4_hwmod = {
962 .name = "mcbsp4",
963 .class = &omap3xxx_mcbsp_hwmod_class,
964 .main_clk = "mcbsp4_fck",
965 .prcm = {
966 .omap2 = {
967 .module_offs = OMAP3430_PER_MOD,
968 .idlest_reg_id = 1,
969 .idlest_idle_bit = OMAP3430_ST_MCBSP4_SHIFT,
970 },
971 },
972 .opt_clks = mcbsp234_opt_clks,
973 .opt_clks_cnt = ARRAY_SIZE(mcbsp234_opt_clks),
974};
975
976
977static struct omap_hwmod omap3xxx_mcbsp5_hwmod = {
978 .name = "mcbsp5",
979 .class = &omap3xxx_mcbsp_hwmod_class,
980 .main_clk = "mcbsp5_fck",
981 .prcm = {
982 .omap2 = {
983 .module_offs = CORE_MOD,
984 .idlest_reg_id = 1,
985 .idlest_idle_bit = OMAP3430_ST_MCBSP5_SHIFT,
986 },
987 },
988 .opt_clks = mcbsp15_opt_clks,
989 .opt_clks_cnt = ARRAY_SIZE(mcbsp15_opt_clks),
990};
991
992
993static struct omap_hwmod_class_sysconfig omap3xxx_mcbsp_sidetone_sysc = {
994 .rev_offs = -ENODEV,
995 .sysc_offs = 0x0010,
996 .sysc_flags = SYSC_HAS_AUTOIDLE,
997 .sysc_fields = &omap_hwmod_sysc_type1,
998};
999
1000static struct omap_hwmod_class omap3xxx_mcbsp_sidetone_hwmod_class = {
1001 .name = "mcbsp_sidetone",
1002 .sysc = &omap3xxx_mcbsp_sidetone_sysc,
1003};
1004
1005
1006static struct omap_hwmod omap3xxx_mcbsp2_sidetone_hwmod = {
1007 .name = "mcbsp2_sidetone",
1008 .class = &omap3xxx_mcbsp_sidetone_hwmod_class,
1009 .main_clk = "mcbsp2_ick",
1010 .flags = HWMOD_NO_IDLEST,
1011};
1012
1013
1014static struct omap_hwmod omap3xxx_mcbsp3_sidetone_hwmod = {
1015 .name = "mcbsp3_sidetone",
1016 .class = &omap3xxx_mcbsp_sidetone_hwmod_class,
1017 .main_clk = "mcbsp3_ick",
1018 .flags = HWMOD_NO_IDLEST,
1019};
1020
1021
1022static struct omap_hwmod_class_sysconfig omap34xx_sr_sysc = {
1023 .rev_offs = -ENODEV,
1024 .sysc_offs = 0x24,
1025 .sysc_flags = (SYSC_HAS_CLOCKACTIVITY | SYSC_NO_CACHE),
1026 .sysc_fields = &omap34xx_sr_sysc_fields,
1027};
1028
1029static struct omap_hwmod_class omap34xx_smartreflex_hwmod_class = {
1030 .name = "smartreflex",
1031 .sysc = &omap34xx_sr_sysc,
1032 .rev = 1,
1033};
1034
1035static struct omap_hwmod_class_sysconfig omap36xx_sr_sysc = {
1036 .rev_offs = -ENODEV,
1037 .sysc_offs = 0x38,
1038 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
1039 .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_ENAWAKEUP |
1040 SYSC_NO_CACHE),
1041 .sysc_fields = &omap36xx_sr_sysc_fields,
1042};
1043
1044static struct omap_hwmod_class omap36xx_smartreflex_hwmod_class = {
1045 .name = "smartreflex",
1046 .sysc = &omap36xx_sr_sysc,
1047 .rev = 2,
1048};
1049
1050
1051static struct omap_smartreflex_dev_attr sr1_dev_attr = {
1052 .sensor_voltdm_name = "mpu_iva",
1053};
1054
1055
1056static struct omap_hwmod omap34xx_sr1_hwmod = {
1057 .name = "smartreflex_mpu_iva",
1058 .class = &omap34xx_smartreflex_hwmod_class,
1059 .main_clk = "sr1_fck",
1060 .prcm = {
1061 .omap2 = {
1062 .module_offs = WKUP_MOD,
1063 .idlest_reg_id = 1,
1064 .idlest_idle_bit = OMAP3430_EN_SR1_SHIFT,
1065 },
1066 },
1067 .dev_attr = &sr1_dev_attr,
1068 .flags = HWMOD_SET_DEFAULT_CLOCKACT,
1069};
1070
1071static struct omap_hwmod omap36xx_sr1_hwmod = {
1072 .name = "smartreflex_mpu_iva",
1073 .class = &omap36xx_smartreflex_hwmod_class,
1074 .main_clk = "sr1_fck",
1075 .prcm = {
1076 .omap2 = {
1077 .module_offs = WKUP_MOD,
1078 .idlest_reg_id = 1,
1079 .idlest_idle_bit = OMAP3430_EN_SR1_SHIFT,
1080 },
1081 },
1082 .dev_attr = &sr1_dev_attr,
1083};
1084
1085
1086static struct omap_smartreflex_dev_attr sr2_dev_attr = {
1087 .sensor_voltdm_name = "core",
1088};
1089
1090
1091static struct omap_hwmod omap34xx_sr2_hwmod = {
1092 .name = "smartreflex_core",
1093 .class = &omap34xx_smartreflex_hwmod_class,
1094 .main_clk = "sr2_fck",
1095 .prcm = {
1096 .omap2 = {
1097 .module_offs = WKUP_MOD,
1098 .idlest_reg_id = 1,
1099 .idlest_idle_bit = OMAP3430_EN_SR2_SHIFT,
1100 },
1101 },
1102 .dev_attr = &sr2_dev_attr,
1103 .flags = HWMOD_SET_DEFAULT_CLOCKACT,
1104};
1105
1106static struct omap_hwmod omap36xx_sr2_hwmod = {
1107 .name = "smartreflex_core",
1108 .class = &omap36xx_smartreflex_hwmod_class,
1109 .main_clk = "sr2_fck",
1110 .prcm = {
1111 .omap2 = {
1112 .module_offs = WKUP_MOD,
1113 .idlest_reg_id = 1,
1114 .idlest_idle_bit = OMAP3430_EN_SR2_SHIFT,
1115 },
1116 },
1117 .dev_attr = &sr2_dev_attr,
1118};
1119
1120
1121
1122
1123
1124
1125
1126static struct omap_hwmod_class_sysconfig omap3xxx_mailbox_sysc = {
1127 .rev_offs = 0x000,
1128 .sysc_offs = 0x010,
1129 .syss_offs = 0x014,
1130 .sysc_flags = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
1131 SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE),
1132 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
1133 .sysc_fields = &omap_hwmod_sysc_type1,
1134};
1135
1136static struct omap_hwmod_class omap3xxx_mailbox_hwmod_class = {
1137 .name = "mailbox",
1138 .sysc = &omap3xxx_mailbox_sysc,
1139};
1140
1141static struct omap_hwmod omap3xxx_mailbox_hwmod = {
1142 .name = "mailbox",
1143 .class = &omap3xxx_mailbox_hwmod_class,
1144 .main_clk = "mailboxes_ick",
1145 .prcm = {
1146 .omap2 = {
1147 .module_offs = CORE_MOD,
1148 .idlest_reg_id = 1,
1149 .idlest_idle_bit = OMAP3430_ST_MAILBOXES_SHIFT,
1150 },
1151 },
1152};
1153
1154
1155
1156
1157
1158
1159
1160static struct omap_hwmod_class_sysconfig omap34xx_mcspi_sysc = {
1161 .rev_offs = 0x0000,
1162 .sysc_offs = 0x0010,
1163 .syss_offs = 0x0014,
1164 .sysc_flags = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
1165 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
1166 SYSC_HAS_AUTOIDLE | SYSS_HAS_RESET_STATUS),
1167 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
1168 .sysc_fields = &omap_hwmod_sysc_type1,
1169};
1170
1171static struct omap_hwmod_class omap34xx_mcspi_class = {
1172 .name = "mcspi",
1173 .sysc = &omap34xx_mcspi_sysc,
1174};
1175
1176
1177static struct omap_hwmod omap34xx_mcspi1 = {
1178 .name = "mcspi1",
1179 .main_clk = "mcspi1_fck",
1180 .prcm = {
1181 .omap2 = {
1182 .module_offs = CORE_MOD,
1183 .idlest_reg_id = 1,
1184 .idlest_idle_bit = OMAP3430_ST_MCSPI1_SHIFT,
1185 },
1186 },
1187 .class = &omap34xx_mcspi_class,
1188};
1189
1190
1191static struct omap_hwmod omap34xx_mcspi2 = {
1192 .name = "mcspi2",
1193 .main_clk = "mcspi2_fck",
1194 .prcm = {
1195 .omap2 = {
1196 .module_offs = CORE_MOD,
1197 .idlest_reg_id = 1,
1198 .idlest_idle_bit = OMAP3430_ST_MCSPI2_SHIFT,
1199 },
1200 },
1201 .class = &omap34xx_mcspi_class,
1202};
1203
1204
1205static struct omap_hwmod omap34xx_mcspi3 = {
1206 .name = "mcspi3",
1207 .main_clk = "mcspi3_fck",
1208 .prcm = {
1209 .omap2 = {
1210 .module_offs = CORE_MOD,
1211 .idlest_reg_id = 1,
1212 .idlest_idle_bit = OMAP3430_ST_MCSPI3_SHIFT,
1213 },
1214 },
1215 .class = &omap34xx_mcspi_class,
1216};
1217
1218
1219static struct omap_hwmod omap34xx_mcspi4 = {
1220 .name = "mcspi4",
1221 .main_clk = "mcspi4_fck",
1222 .prcm = {
1223 .omap2 = {
1224 .module_offs = CORE_MOD,
1225 .idlest_reg_id = 1,
1226 .idlest_idle_bit = OMAP3430_ST_MCSPI4_SHIFT,
1227 },
1228 },
1229 .class = &omap34xx_mcspi_class,
1230};
1231
1232
1233static struct omap_hwmod_class_sysconfig omap3xxx_usbhsotg_sysc = {
1234 .rev_offs = 0x0400,
1235 .sysc_offs = 0x0404,
1236 .syss_offs = 0x0408,
1237 .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE|
1238 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
1239 SYSC_HAS_AUTOIDLE),
1240 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1241 MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
1242 .sysc_fields = &omap_hwmod_sysc_type1,
1243};
1244
1245static struct omap_hwmod_class usbotg_class = {
1246 .name = "usbotg",
1247 .sysc = &omap3xxx_usbhsotg_sysc,
1248};
1249
1250
1251
1252static struct omap_hwmod omap3xxx_usbhsotg_hwmod = {
1253 .name = "usb_otg_hs",
1254 .main_clk = "hsotgusb_ick",
1255 .prcm = {
1256 .omap2 = {
1257 .module_offs = CORE_MOD,
1258 .idlest_reg_id = 1,
1259 .idlest_idle_bit = OMAP3430ES2_ST_HSOTGUSB_IDLE_SHIFT,
1260 },
1261 },
1262 .class = &usbotg_class,
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274 .flags = HWMOD_NO_OCP_AUTOIDLE | HWMOD_SWSUP_SIDLE |
1275 HWMOD_FORCE_MSTANDBY | HWMOD_RECONFIG_IO_CHAIN,
1276};
1277
1278
1279
1280static struct omap_hwmod_class am35xx_usbotg_class = {
1281 .name = "am35xx_usbotg",
1282};
1283
1284static struct omap_hwmod am35xx_usbhsotg_hwmod = {
1285 .name = "am35x_otg_hs",
1286 .main_clk = "hsotgusb_fck",
1287 .class = &am35xx_usbotg_class,
1288 .flags = HWMOD_NO_IDLEST,
1289};
1290
1291
1292static struct omap_hwmod_class_sysconfig omap34xx_mmc_sysc = {
1293 .rev_offs = 0x1fc,
1294 .sysc_offs = 0x10,
1295 .syss_offs = 0x14,
1296 .sysc_flags = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
1297 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
1298 SYSC_HAS_AUTOIDLE | SYSS_HAS_RESET_STATUS),
1299 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
1300 .sysc_fields = &omap_hwmod_sysc_type1,
1301};
1302
1303static struct omap_hwmod_class omap34xx_mmc_class = {
1304 .name = "mmc",
1305 .sysc = &omap34xx_mmc_sysc,
1306};
1307
1308
1309
1310
1311
1312static struct omap_hwmod_opt_clk omap34xx_mmc1_opt_clks[] = {
1313 { .role = "dbck", .clk = "omap_32k_fck", },
1314};
1315
1316static struct omap_hsmmc_dev_attr mmc1_dev_attr = {
1317 .flags = OMAP_HSMMC_SUPPORTS_DUAL_VOLT,
1318};
1319
1320
1321static struct omap_hsmmc_dev_attr mmc1_pre_es3_dev_attr = {
1322 .flags = (OMAP_HSMMC_SUPPORTS_DUAL_VOLT |
1323 OMAP_HSMMC_BROKEN_MULTIBLOCK_READ),
1324};
1325
1326static struct omap_hwmod omap3xxx_pre_es3_mmc1_hwmod = {
1327 .name = "mmc1",
1328 .opt_clks = omap34xx_mmc1_opt_clks,
1329 .opt_clks_cnt = ARRAY_SIZE(omap34xx_mmc1_opt_clks),
1330 .main_clk = "mmchs1_fck",
1331 .prcm = {
1332 .omap2 = {
1333 .module_offs = CORE_MOD,
1334 .idlest_reg_id = 1,
1335 .idlest_idle_bit = OMAP3430_ST_MMC1_SHIFT,
1336 },
1337 },
1338 .dev_attr = &mmc1_pre_es3_dev_attr,
1339 .class = &omap34xx_mmc_class,
1340};
1341
1342static struct omap_hwmod omap3xxx_es3plus_mmc1_hwmod = {
1343 .name = "mmc1",
1344 .opt_clks = omap34xx_mmc1_opt_clks,
1345 .opt_clks_cnt = ARRAY_SIZE(omap34xx_mmc1_opt_clks),
1346 .main_clk = "mmchs1_fck",
1347 .prcm = {
1348 .omap2 = {
1349 .module_offs = CORE_MOD,
1350 .idlest_reg_id = 1,
1351 .idlest_idle_bit = OMAP3430_ST_MMC1_SHIFT,
1352 },
1353 },
1354 .dev_attr = &mmc1_dev_attr,
1355 .class = &omap34xx_mmc_class,
1356};
1357
1358
1359
1360
1361
1362static struct omap_hwmod_opt_clk omap34xx_mmc2_opt_clks[] = {
1363 { .role = "dbck", .clk = "omap_32k_fck", },
1364};
1365
1366
1367static struct omap_hsmmc_dev_attr mmc2_pre_es3_dev_attr = {
1368 .flags = OMAP_HSMMC_BROKEN_MULTIBLOCK_READ,
1369};
1370
1371static struct omap_hwmod omap3xxx_pre_es3_mmc2_hwmod = {
1372 .name = "mmc2",
1373 .opt_clks = omap34xx_mmc2_opt_clks,
1374 .opt_clks_cnt = ARRAY_SIZE(omap34xx_mmc2_opt_clks),
1375 .main_clk = "mmchs2_fck",
1376 .prcm = {
1377 .omap2 = {
1378 .module_offs = CORE_MOD,
1379 .idlest_reg_id = 1,
1380 .idlest_idle_bit = OMAP3430_ST_MMC2_SHIFT,
1381 },
1382 },
1383 .dev_attr = &mmc2_pre_es3_dev_attr,
1384 .class = &omap34xx_mmc_class,
1385};
1386
1387static struct omap_hwmod omap3xxx_es3plus_mmc2_hwmod = {
1388 .name = "mmc2",
1389 .opt_clks = omap34xx_mmc2_opt_clks,
1390 .opt_clks_cnt = ARRAY_SIZE(omap34xx_mmc2_opt_clks),
1391 .main_clk = "mmchs2_fck",
1392 .prcm = {
1393 .omap2 = {
1394 .module_offs = CORE_MOD,
1395 .idlest_reg_id = 1,
1396 .idlest_idle_bit = OMAP3430_ST_MMC2_SHIFT,
1397 },
1398 },
1399 .class = &omap34xx_mmc_class,
1400};
1401
1402
1403
1404
1405
1406static struct omap_hwmod_opt_clk omap34xx_mmc3_opt_clks[] = {
1407 { .role = "dbck", .clk = "omap_32k_fck", },
1408};
1409
1410static struct omap_hwmod omap3xxx_mmc3_hwmod = {
1411 .name = "mmc3",
1412 .opt_clks = omap34xx_mmc3_opt_clks,
1413 .opt_clks_cnt = ARRAY_SIZE(omap34xx_mmc3_opt_clks),
1414 .main_clk = "mmchs3_fck",
1415 .prcm = {
1416 .omap2 = {
1417 .module_offs = CORE_MOD,
1418 .idlest_reg_id = 1,
1419 .idlest_idle_bit = OMAP3430_ST_MMC3_SHIFT,
1420 },
1421 },
1422 .class = &omap34xx_mmc_class,
1423};
1424
1425
1426
1427
1428
1429
1430static struct omap_hwmod_class_sysconfig omap3xxx_usb_host_hs_sysc = {
1431 .rev_offs = 0x0000,
1432 .sysc_offs = 0x0010,
1433 .syss_offs = 0x0014,
1434 .sysc_flags = (SYSC_HAS_MIDLEMODE | SYSC_HAS_CLOCKACTIVITY |
1435 SYSC_HAS_SIDLEMODE | SYSC_HAS_ENAWAKEUP |
1436 SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE |
1437 SYSS_HAS_RESET_STATUS),
1438 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1439 MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
1440 .sysc_fields = &omap_hwmod_sysc_type1,
1441};
1442
1443static struct omap_hwmod_class omap3xxx_usb_host_hs_hwmod_class = {
1444 .name = "usb_host_hs",
1445 .sysc = &omap3xxx_usb_host_hs_sysc,
1446};
1447
1448
1449static struct omap_hwmod omap3xxx_usb_host_hs_hwmod = {
1450 .name = "usb_host_hs",
1451 .class = &omap3xxx_usb_host_hs_hwmod_class,
1452 .clkdm_name = "usbhost_clkdm",
1453 .main_clk = "usbhost_48m_fck",
1454 .prcm = {
1455 .omap2 = {
1456 .module_offs = OMAP3430ES2_USBHOST_MOD,
1457 .idlest_reg_id = 1,
1458 .idlest_idle_bit = OMAP3430ES2_ST_USBHOST_IDLE_SHIFT,
1459 },
1460 },
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500 .flags = HWMOD_SWSUP_SIDLE | HWMOD_SWSUP_MSTANDBY,
1501};
1502
1503
1504
1505
1506
1507static struct omap_hwmod_class_sysconfig omap3xxx_usb_tll_hs_sysc = {
1508 .rev_offs = 0x0000,
1509 .sysc_offs = 0x0010,
1510 .syss_offs = 0x0014,
1511 .sysc_flags = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
1512 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
1513 SYSC_HAS_AUTOIDLE),
1514 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
1515 .sysc_fields = &omap_hwmod_sysc_type1,
1516};
1517
1518static struct omap_hwmod_class omap3xxx_usb_tll_hs_hwmod_class = {
1519 .name = "usb_tll_hs",
1520 .sysc = &omap3xxx_usb_tll_hs_sysc,
1521};
1522
1523
1524static struct omap_hwmod omap3xxx_usb_tll_hs_hwmod = {
1525 .name = "usb_tll_hs",
1526 .class = &omap3xxx_usb_tll_hs_hwmod_class,
1527 .clkdm_name = "core_l4_clkdm",
1528 .main_clk = "usbtll_fck",
1529 .prcm = {
1530 .omap2 = {
1531 .module_offs = CORE_MOD,
1532 .idlest_reg_id = 3,
1533 .idlest_idle_bit = OMAP3430ES2_ST_USBTLL_SHIFT,
1534 },
1535 },
1536};
1537
1538static struct omap_hwmod omap3xxx_hdq1w_hwmod = {
1539 .name = "hdq1w",
1540 .main_clk = "hdq_fck",
1541 .prcm = {
1542 .omap2 = {
1543 .module_offs = CORE_MOD,
1544 .idlest_reg_id = 1,
1545 .idlest_idle_bit = OMAP3430_ST_HDQ_SHIFT,
1546 },
1547 },
1548 .class = &omap2_hdq1w_class,
1549};
1550
1551
1552static struct omap_hwmod_rst_info omap3xxx_sad2d_resets[] = {
1553 { .name = "rst_modem_pwron_sw", .rst_shift = 0 },
1554 { .name = "rst_modem_sw", .rst_shift = 1 },
1555};
1556
1557static struct omap_hwmod_class omap3xxx_sad2d_class = {
1558 .name = "sad2d",
1559};
1560
1561static struct omap_hwmod omap3xxx_sad2d_hwmod = {
1562 .name = "sad2d",
1563 .rst_lines = omap3xxx_sad2d_resets,
1564 .rst_lines_cnt = ARRAY_SIZE(omap3xxx_sad2d_resets),
1565 .main_clk = "sad2d_ick",
1566 .prcm = {
1567 .omap2 = {
1568 .module_offs = CORE_MOD,
1569 .idlest_reg_id = 1,
1570 .idlest_idle_bit = OMAP3430_ST_SAD2D_SHIFT,
1571 },
1572 },
1573 .class = &omap3xxx_sad2d_class,
1574};
1575
1576
1577
1578
1579
1580static struct omap_hwmod_class_sysconfig omap3xxx_counter_sysc = {
1581 .rev_offs = 0x0000,
1582 .sysc_offs = 0x0004,
1583 .sysc_flags = SYSC_HAS_SIDLEMODE,
1584 .idlemodes = (SIDLE_FORCE | SIDLE_NO),
1585 .sysc_fields = &omap_hwmod_sysc_type1,
1586};
1587
1588static struct omap_hwmod_class omap3xxx_counter_hwmod_class = {
1589 .name = "counter",
1590 .sysc = &omap3xxx_counter_sysc,
1591};
1592
1593static struct omap_hwmod omap3xxx_counter_32k_hwmod = {
1594 .name = "counter_32k",
1595 .class = &omap3xxx_counter_hwmod_class,
1596 .clkdm_name = "wkup_clkdm",
1597 .flags = HWMOD_SWSUP_SIDLE,
1598 .main_clk = "wkup_32k_fck",
1599 .prcm = {
1600 .omap2 = {
1601 .module_offs = WKUP_MOD,
1602 .idlest_reg_id = 1,
1603 .idlest_idle_bit = OMAP3430_ST_32KSYNC_SHIFT,
1604 },
1605 },
1606};
1607
1608
1609
1610
1611
1612
1613static struct omap_hwmod_class_sysconfig omap3xxx_gpmc_sysc = {
1614 .rev_offs = 0x0000,
1615 .sysc_offs = 0x0010,
1616 .syss_offs = 0x0014,
1617 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_SIDLEMODE |
1618 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
1619 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
1620 .sysc_fields = &omap_hwmod_sysc_type1,
1621};
1622
1623static struct omap_hwmod_class omap3xxx_gpmc_hwmod_class = {
1624 .name = "gpmc",
1625 .sysc = &omap3xxx_gpmc_sysc,
1626};
1627
1628static struct omap_hwmod omap3xxx_gpmc_hwmod = {
1629 .name = "gpmc",
1630 .class = &omap3xxx_gpmc_hwmod_class,
1631 .clkdm_name = "core_l3_clkdm",
1632 .main_clk = "gpmc_fck",
1633
1634 .flags = HWMOD_NO_IDLEST | DEBUG_OMAP_GPMC_HWMOD_FLAGS,
1635};
1636
1637
1638
1639
1640
1641
1642static struct omap_hwmod_ocp_if omap3xxx_l3_main__l4_core = {
1643 .master = &omap3xxx_l3_main_hwmod,
1644 .slave = &omap3xxx_l4_core_hwmod,
1645 .user = OCP_USER_MPU | OCP_USER_SDMA,
1646};
1647
1648
1649static struct omap_hwmod_ocp_if omap3xxx_l3_main__l4_per = {
1650 .master = &omap3xxx_l3_main_hwmod,
1651 .slave = &omap3xxx_l4_per_hwmod,
1652 .user = OCP_USER_MPU | OCP_USER_SDMA,
1653};
1654
1655
1656
1657static struct omap_hwmod_ocp_if omap3xxx_mpu__l3_main = {
1658 .master = &omap3xxx_mpu_hwmod,
1659 .slave = &omap3xxx_l3_main_hwmod,
1660 .user = OCP_USER_MPU,
1661};
1662
1663
1664
1665static struct omap_hwmod_ocp_if omap3xxx_l3_main__l4_debugss = {
1666 .master = &omap3xxx_l3_main_hwmod,
1667 .slave = &omap3xxx_debugss_hwmod,
1668 .user = OCP_USER_MPU,
1669};
1670
1671
1672static struct omap_hwmod_ocp_if omap3430es1_dss__l3 = {
1673 .master = &omap3430es1_dss_core_hwmod,
1674 .slave = &omap3xxx_l3_main_hwmod,
1675 .user = OCP_USER_MPU | OCP_USER_SDMA,
1676};
1677
1678static struct omap_hwmod_ocp_if omap3xxx_dss__l3 = {
1679 .master = &omap3xxx_dss_core_hwmod,
1680 .slave = &omap3xxx_l3_main_hwmod,
1681 .fw = {
1682 .omap2 = {
1683 .l3_perm_bit = OMAP3_L3_CORE_FW_INIT_ID_DSS,
1684 .flags = OMAP_FIREWALL_L3,
1685 },
1686 },
1687 .user = OCP_USER_MPU | OCP_USER_SDMA,
1688};
1689
1690
1691static struct omap_hwmod_ocp_if omap3xxx_usbhsotg__l3 = {
1692 .master = &omap3xxx_usbhsotg_hwmod,
1693 .slave = &omap3xxx_l3_main_hwmod,
1694 .clk = "core_l3_ick",
1695 .user = OCP_USER_MPU,
1696};
1697
1698
1699static struct omap_hwmod_ocp_if am35xx_usbhsotg__l3 = {
1700 .master = &am35xx_usbhsotg_hwmod,
1701 .slave = &omap3xxx_l3_main_hwmod,
1702 .clk = "hsotgusb_ick",
1703 .user = OCP_USER_MPU,
1704};
1705
1706
1707static struct omap_hwmod_ocp_if omap3xxx_sad2d__l3 = {
1708 .master = &omap3xxx_sad2d_hwmod,
1709 .slave = &omap3xxx_l3_main_hwmod,
1710 .clk = "core_l3_ick",
1711 .user = OCP_USER_MPU,
1712};
1713
1714
1715static struct omap_hwmod_ocp_if omap3xxx_l4_core__l4_wkup = {
1716 .master = &omap3xxx_l4_core_hwmod,
1717 .slave = &omap3xxx_l4_wkup_hwmod,
1718 .user = OCP_USER_MPU | OCP_USER_SDMA,
1719};
1720
1721
1722static struct omap_hwmod_ocp_if omap3xxx_l4_core__pre_es3_mmc1 = {
1723 .master = &omap3xxx_l4_core_hwmod,
1724 .slave = &omap3xxx_pre_es3_mmc1_hwmod,
1725 .clk = "mmchs1_ick",
1726 .user = OCP_USER_MPU | OCP_USER_SDMA,
1727 .flags = OMAP_FIREWALL_L4,
1728};
1729
1730static struct omap_hwmod_ocp_if omap3xxx_l4_core__es3plus_mmc1 = {
1731 .master = &omap3xxx_l4_core_hwmod,
1732 .slave = &omap3xxx_es3plus_mmc1_hwmod,
1733 .clk = "mmchs1_ick",
1734 .user = OCP_USER_MPU | OCP_USER_SDMA,
1735 .flags = OMAP_FIREWALL_L4,
1736};
1737
1738
1739static struct omap_hwmod_ocp_if omap3xxx_l4_core__pre_es3_mmc2 = {
1740 .master = &omap3xxx_l4_core_hwmod,
1741 .slave = &omap3xxx_pre_es3_mmc2_hwmod,
1742 .clk = "mmchs2_ick",
1743 .user = OCP_USER_MPU | OCP_USER_SDMA,
1744 .flags = OMAP_FIREWALL_L4,
1745};
1746
1747static struct omap_hwmod_ocp_if omap3xxx_l4_core__es3plus_mmc2 = {
1748 .master = &omap3xxx_l4_core_hwmod,
1749 .slave = &omap3xxx_es3plus_mmc2_hwmod,
1750 .clk = "mmchs2_ick",
1751 .user = OCP_USER_MPU | OCP_USER_SDMA,
1752 .flags = OMAP_FIREWALL_L4,
1753};
1754
1755
1756
1757static struct omap_hwmod_ocp_if omap3xxx_l4_core__mmc3 = {
1758 .master = &omap3xxx_l4_core_hwmod,
1759 .slave = &omap3xxx_mmc3_hwmod,
1760 .clk = "mmchs3_ick",
1761 .user = OCP_USER_MPU | OCP_USER_SDMA,
1762 .flags = OMAP_FIREWALL_L4,
1763};
1764
1765
1766
1767static struct omap_hwmod_ocp_if omap3_l4_core__uart1 = {
1768 .master = &omap3xxx_l4_core_hwmod,
1769 .slave = &omap3xxx_uart1_hwmod,
1770 .clk = "uart1_ick",
1771 .user = OCP_USER_MPU | OCP_USER_SDMA,
1772};
1773
1774
1775
1776static struct omap_hwmod_ocp_if omap3_l4_core__uart2 = {
1777 .master = &omap3xxx_l4_core_hwmod,
1778 .slave = &omap3xxx_uart2_hwmod,
1779 .clk = "uart2_ick",
1780 .user = OCP_USER_MPU | OCP_USER_SDMA,
1781};
1782
1783
1784
1785static struct omap_hwmod_ocp_if omap3_l4_per__uart3 = {
1786 .master = &omap3xxx_l4_per_hwmod,
1787 .slave = &omap3xxx_uart3_hwmod,
1788 .clk = "uart3_ick",
1789 .user = OCP_USER_MPU | OCP_USER_SDMA,
1790};
1791
1792
1793
1794static struct omap_hwmod_ocp_if omap36xx_l4_per__uart4 = {
1795 .master = &omap3xxx_l4_per_hwmod,
1796 .slave = &omap36xx_uart4_hwmod,
1797 .clk = "uart4_ick",
1798 .user = OCP_USER_MPU | OCP_USER_SDMA,
1799};
1800
1801
1802
1803static struct omap_hwmod_ocp_if am35xx_l4_core__uart4 = {
1804 .master = &omap3xxx_l4_core_hwmod,
1805 .slave = &am35xx_uart4_hwmod,
1806 .clk = "uart4_ick",
1807 .user = OCP_USER_MPU | OCP_USER_SDMA,
1808};
1809
1810
1811static struct omap_hwmod_ocp_if omap3_l4_core__i2c1 = {
1812 .master = &omap3xxx_l4_core_hwmod,
1813 .slave = &omap3xxx_i2c1_hwmod,
1814 .clk = "i2c1_ick",
1815 .fw = {
1816 .omap2 = {
1817 .l4_fw_region = OMAP3_L4_CORE_FW_I2C1_REGION,
1818 .l4_prot_group = 7,
1819 .flags = OMAP_FIREWALL_L4,
1820 },
1821 },
1822 .user = OCP_USER_MPU | OCP_USER_SDMA,
1823};
1824
1825
1826static struct omap_hwmod_ocp_if omap3_l4_core__i2c2 = {
1827 .master = &omap3xxx_l4_core_hwmod,
1828 .slave = &omap3xxx_i2c2_hwmod,
1829 .clk = "i2c2_ick",
1830 .fw = {
1831 .omap2 = {
1832 .l4_fw_region = OMAP3_L4_CORE_FW_I2C2_REGION,
1833 .l4_prot_group = 7,
1834 .flags = OMAP_FIREWALL_L4,
1835 },
1836 },
1837 .user = OCP_USER_MPU | OCP_USER_SDMA,
1838};
1839
1840
1841
1842static struct omap_hwmod_ocp_if omap3_l4_core__i2c3 = {
1843 .master = &omap3xxx_l4_core_hwmod,
1844 .slave = &omap3xxx_i2c3_hwmod,
1845 .clk = "i2c3_ick",
1846 .fw = {
1847 .omap2 = {
1848 .l4_fw_region = OMAP3_L4_CORE_FW_I2C3_REGION,
1849 .l4_prot_group = 7,
1850 .flags = OMAP_FIREWALL_L4,
1851 },
1852 },
1853 .user = OCP_USER_MPU | OCP_USER_SDMA,
1854};
1855
1856
1857static struct omap_hwmod_ocp_if omap34xx_l4_core__sr1 = {
1858 .master = &omap3xxx_l4_core_hwmod,
1859 .slave = &omap34xx_sr1_hwmod,
1860 .clk = "sr_l4_ick",
1861 .user = OCP_USER_MPU,
1862};
1863
1864static struct omap_hwmod_ocp_if omap36xx_l4_core__sr1 = {
1865 .master = &omap3xxx_l4_core_hwmod,
1866 .slave = &omap36xx_sr1_hwmod,
1867 .clk = "sr_l4_ick",
1868 .user = OCP_USER_MPU,
1869};
1870
1871
1872
1873static struct omap_hwmod_ocp_if omap34xx_l4_core__sr2 = {
1874 .master = &omap3xxx_l4_core_hwmod,
1875 .slave = &omap34xx_sr2_hwmod,
1876 .clk = "sr_l4_ick",
1877 .user = OCP_USER_MPU,
1878};
1879
1880static struct omap_hwmod_ocp_if omap36xx_l4_core__sr2 = {
1881 .master = &omap3xxx_l4_core_hwmod,
1882 .slave = &omap36xx_sr2_hwmod,
1883 .clk = "sr_l4_ick",
1884 .user = OCP_USER_MPU,
1885};
1886
1887
1888
1889static struct omap_hwmod_ocp_if omap3xxx_l4_core__usbhsotg = {
1890 .master = &omap3xxx_l4_core_hwmod,
1891 .slave = &omap3xxx_usbhsotg_hwmod,
1892 .clk = "l4_ick",
1893 .user = OCP_USER_MPU,
1894};
1895
1896
1897
1898static struct omap_hwmod_ocp_if am35xx_l4_core__usbhsotg = {
1899 .master = &omap3xxx_l4_core_hwmod,
1900 .slave = &am35xx_usbhsotg_hwmod,
1901 .clk = "hsotgusb_ick",
1902 .user = OCP_USER_MPU,
1903};
1904
1905
1906static struct omap_hwmod_ocp_if omap3xxx_l4_wkup__l4_sec = {
1907 .master = &omap3xxx_l4_wkup_hwmod,
1908 .slave = &omap3xxx_l4_sec_hwmod,
1909 .user = OCP_USER_MPU | OCP_USER_SDMA,
1910};
1911
1912
1913static struct omap_hwmod_ocp_if omap3xxx_l3__iva = {
1914 .master = &omap3xxx_l3_main_hwmod,
1915 .slave = &omap3xxx_iva_hwmod,
1916 .clk = "core_l3_ick",
1917 .user = OCP_USER_MPU | OCP_USER_SDMA,
1918};
1919
1920
1921
1922static struct omap_hwmod_ocp_if omap3xxx_l4_wkup__timer1 = {
1923 .master = &omap3xxx_l4_wkup_hwmod,
1924 .slave = &omap3xxx_timer1_hwmod,
1925 .clk = "gpt1_ick",
1926 .user = OCP_USER_MPU | OCP_USER_SDMA,
1927};
1928
1929
1930
1931static struct omap_hwmod_ocp_if omap3xxx_l4_per__timer2 = {
1932 .master = &omap3xxx_l4_per_hwmod,
1933 .slave = &omap3xxx_timer2_hwmod,
1934 .clk = "gpt2_ick",
1935 .user = OCP_USER_MPU | OCP_USER_SDMA,
1936};
1937
1938
1939
1940static struct omap_hwmod_ocp_if omap3xxx_l4_per__timer3 = {
1941 .master = &omap3xxx_l4_per_hwmod,
1942 .slave = &omap3xxx_timer3_hwmod,
1943 .clk = "gpt3_ick",
1944 .user = OCP_USER_MPU | OCP_USER_SDMA,
1945};
1946
1947
1948
1949static struct omap_hwmod_ocp_if omap3xxx_l4_per__timer4 = {
1950 .master = &omap3xxx_l4_per_hwmod,
1951 .slave = &omap3xxx_timer4_hwmod,
1952 .clk = "gpt4_ick",
1953 .user = OCP_USER_MPU | OCP_USER_SDMA,
1954};
1955
1956
1957
1958static struct omap_hwmod_ocp_if omap3xxx_l4_per__timer5 = {
1959 .master = &omap3xxx_l4_per_hwmod,
1960 .slave = &omap3xxx_timer5_hwmod,
1961 .clk = "gpt5_ick",
1962 .user = OCP_USER_MPU | OCP_USER_SDMA,
1963};
1964
1965
1966
1967static struct omap_hwmod_ocp_if omap3xxx_l4_per__timer6 = {
1968 .master = &omap3xxx_l4_per_hwmod,
1969 .slave = &omap3xxx_timer6_hwmod,
1970 .clk = "gpt6_ick",
1971 .user = OCP_USER_MPU | OCP_USER_SDMA,
1972};
1973
1974
1975
1976static struct omap_hwmod_ocp_if omap3xxx_l4_per__timer7 = {
1977 .master = &omap3xxx_l4_per_hwmod,
1978 .slave = &omap3xxx_timer7_hwmod,
1979 .clk = "gpt7_ick",
1980 .user = OCP_USER_MPU | OCP_USER_SDMA,
1981};
1982
1983
1984
1985static struct omap_hwmod_ocp_if omap3xxx_l4_per__timer8 = {
1986 .master = &omap3xxx_l4_per_hwmod,
1987 .slave = &omap3xxx_timer8_hwmod,
1988 .clk = "gpt8_ick",
1989 .user = OCP_USER_MPU | OCP_USER_SDMA,
1990};
1991
1992
1993
1994static struct omap_hwmod_ocp_if omap3xxx_l4_per__timer9 = {
1995 .master = &omap3xxx_l4_per_hwmod,
1996 .slave = &omap3xxx_timer9_hwmod,
1997 .clk = "gpt9_ick",
1998 .user = OCP_USER_MPU | OCP_USER_SDMA,
1999};
2000
2001
2002static struct omap_hwmod_ocp_if omap3xxx_l4_core__timer10 = {
2003 .master = &omap3xxx_l4_core_hwmod,
2004 .slave = &omap3xxx_timer10_hwmod,
2005 .clk = "gpt10_ick",
2006 .user = OCP_USER_MPU | OCP_USER_SDMA,
2007};
2008
2009
2010static struct omap_hwmod_ocp_if omap3xxx_l4_core__timer11 = {
2011 .master = &omap3xxx_l4_core_hwmod,
2012 .slave = &omap3xxx_timer11_hwmod,
2013 .clk = "gpt11_ick",
2014 .user = OCP_USER_MPU | OCP_USER_SDMA,
2015};
2016
2017
2018
2019static struct omap_hwmod_ocp_if omap3xxx_l4_sec__timer12 = {
2020 .master = &omap3xxx_l4_sec_hwmod,
2021 .slave = &omap3xxx_timer12_hwmod,
2022 .clk = "gpt12_ick",
2023 .user = OCP_USER_MPU | OCP_USER_SDMA,
2024};
2025
2026
2027
2028static struct omap_hwmod_ocp_if omap3xxx_l4_wkup__wd_timer2 = {
2029 .master = &omap3xxx_l4_wkup_hwmod,
2030 .slave = &omap3xxx_wd_timer2_hwmod,
2031 .clk = "wdt2_ick",
2032 .user = OCP_USER_MPU | OCP_USER_SDMA,
2033};
2034
2035
2036static struct omap_hwmod_ocp_if omap3430es1_l4_core__dss = {
2037 .master = &omap3xxx_l4_core_hwmod,
2038 .slave = &omap3430es1_dss_core_hwmod,
2039 .clk = "dss_ick",
2040 .fw = {
2041 .omap2 = {
2042 .l4_fw_region = OMAP3ES1_L4_CORE_FW_DSS_CORE_REGION,
2043 .l4_prot_group = OMAP3_L4_CORE_FW_DSS_PROT_GROUP,
2044 .flags = OMAP_FIREWALL_L4,
2045 },
2046 },
2047 .user = OCP_USER_MPU | OCP_USER_SDMA,
2048};
2049
2050static struct omap_hwmod_ocp_if omap3xxx_l4_core__dss = {
2051 .master = &omap3xxx_l4_core_hwmod,
2052 .slave = &omap3xxx_dss_core_hwmod,
2053 .clk = "dss_ick",
2054 .fw = {
2055 .omap2 = {
2056 .l4_fw_region = OMAP3_L4_CORE_FW_DSS_CORE_REGION,
2057 .l4_prot_group = OMAP3_L4_CORE_FW_DSS_PROT_GROUP,
2058 .flags = OMAP_FIREWALL_L4,
2059 },
2060 },
2061 .user = OCP_USER_MPU | OCP_USER_SDMA,
2062};
2063
2064
2065static struct omap_hwmod_ocp_if omap3xxx_l4_core__dss_dispc = {
2066 .master = &omap3xxx_l4_core_hwmod,
2067 .slave = &omap3xxx_dss_dispc_hwmod,
2068 .clk = "dss_ick",
2069 .fw = {
2070 .omap2 = {
2071 .l4_fw_region = OMAP3_L4_CORE_FW_DSS_DISPC_REGION,
2072 .l4_prot_group = OMAP3_L4_CORE_FW_DSS_PROT_GROUP,
2073 .flags = OMAP_FIREWALL_L4,
2074 },
2075 },
2076 .user = OCP_USER_MPU | OCP_USER_SDMA,
2077};
2078
2079
2080static struct omap_hwmod_ocp_if omap3xxx_l4_core__dss_dsi1 = {
2081 .master = &omap3xxx_l4_core_hwmod,
2082 .slave = &omap3xxx_dss_dsi1_hwmod,
2083 .clk = "dss_ick",
2084 .fw = {
2085 .omap2 = {
2086 .l4_fw_region = OMAP3_L4_CORE_FW_DSS_DSI_REGION,
2087 .l4_prot_group = OMAP3_L4_CORE_FW_DSS_PROT_GROUP,
2088 .flags = OMAP_FIREWALL_L4,
2089 },
2090 },
2091 .user = OCP_USER_MPU | OCP_USER_SDMA,
2092};
2093
2094
2095static struct omap_hwmod_ocp_if omap3xxx_l4_core__dss_rfbi = {
2096 .master = &omap3xxx_l4_core_hwmod,
2097 .slave = &omap3xxx_dss_rfbi_hwmod,
2098 .clk = "dss_ick",
2099 .fw = {
2100 .omap2 = {
2101 .l4_fw_region = OMAP3_L4_CORE_FW_DSS_RFBI_REGION,
2102 .l4_prot_group = OMAP3_L4_CORE_FW_DSS_PROT_GROUP ,
2103 .flags = OMAP_FIREWALL_L4,
2104 },
2105 },
2106 .user = OCP_USER_MPU | OCP_USER_SDMA,
2107};
2108
2109
2110static struct omap_hwmod_ocp_if omap3xxx_l4_core__dss_venc = {
2111 .master = &omap3xxx_l4_core_hwmod,
2112 .slave = &omap3xxx_dss_venc_hwmod,
2113 .clk = "dss_ick",
2114 .fw = {
2115 .omap2 = {
2116 .l4_fw_region = OMAP3_L4_CORE_FW_DSS_VENC_REGION,
2117 .l4_prot_group = OMAP3_L4_CORE_FW_DSS_PROT_GROUP,
2118 .flags = OMAP_FIREWALL_L4,
2119 },
2120 },
2121 .flags = OCPIF_SWSUP_IDLE,
2122 .user = OCP_USER_MPU | OCP_USER_SDMA,
2123};
2124
2125
2126
2127static struct omap_hwmod_ocp_if omap3xxx_l4_wkup__gpio1 = {
2128 .master = &omap3xxx_l4_wkup_hwmod,
2129 .slave = &omap3xxx_gpio1_hwmod,
2130 .user = OCP_USER_MPU | OCP_USER_SDMA,
2131};
2132
2133
2134
2135static struct omap_hwmod_ocp_if omap3xxx_l4_per__gpio2 = {
2136 .master = &omap3xxx_l4_per_hwmod,
2137 .slave = &omap3xxx_gpio2_hwmod,
2138 .user = OCP_USER_MPU | OCP_USER_SDMA,
2139};
2140
2141
2142
2143static struct omap_hwmod_ocp_if omap3xxx_l4_per__gpio3 = {
2144 .master = &omap3xxx_l4_per_hwmod,
2145 .slave = &omap3xxx_gpio3_hwmod,
2146 .user = OCP_USER_MPU | OCP_USER_SDMA,
2147};
2148
2149
2150
2151
2152
2153
2154
2155static struct omap_hwmod_class_sysconfig mmu_sysc = {
2156 .rev_offs = 0x000,
2157 .sysc_offs = 0x010,
2158 .syss_offs = 0x014,
2159 .sysc_flags = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
2160 SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE),
2161 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
2162 .sysc_fields = &omap_hwmod_sysc_type1,
2163};
2164
2165static struct omap_hwmod_class omap3xxx_mmu_hwmod_class = {
2166 .name = "mmu",
2167 .sysc = &mmu_sysc,
2168};
2169
2170
2171static struct omap_hwmod omap3xxx_mmu_isp_hwmod;
2172
2173
2174static struct omap_hwmod_ocp_if omap3xxx_l4_core__mmu_isp = {
2175 .master = &omap3xxx_l4_core_hwmod,
2176 .slave = &omap3xxx_mmu_isp_hwmod,
2177 .user = OCP_USER_MPU | OCP_USER_SDMA,
2178};
2179
2180static struct omap_hwmod omap3xxx_mmu_isp_hwmod = {
2181 .name = "mmu_isp",
2182 .class = &omap3xxx_mmu_hwmod_class,
2183 .main_clk = "cam_ick",
2184 .flags = HWMOD_NO_IDLEST,
2185};
2186
2187
2188
2189static struct omap_hwmod omap3xxx_mmu_iva_hwmod;
2190
2191static struct omap_hwmod_rst_info omap3xxx_mmu_iva_resets[] = {
2192 { .name = "mmu", .rst_shift = 1, .st_shift = 9 },
2193};
2194
2195
2196static struct omap_hwmod_ocp_if omap3xxx_l3_main__mmu_iva = {
2197 .master = &omap3xxx_l3_main_hwmod,
2198 .slave = &omap3xxx_mmu_iva_hwmod,
2199 .user = OCP_USER_MPU | OCP_USER_SDMA,
2200};
2201
2202static struct omap_hwmod omap3xxx_mmu_iva_hwmod = {
2203 .name = "mmu_iva",
2204 .class = &omap3xxx_mmu_hwmod_class,
2205 .clkdm_name = "iva2_clkdm",
2206 .rst_lines = omap3xxx_mmu_iva_resets,
2207 .rst_lines_cnt = ARRAY_SIZE(omap3xxx_mmu_iva_resets),
2208 .main_clk = "iva2_ck",
2209 .prcm = {
2210 .omap2 = {
2211 .module_offs = OMAP3430_IVA2_MOD,
2212 .idlest_reg_id = 1,
2213 .idlest_idle_bit = OMAP3430_ST_IVA2_SHIFT,
2214 },
2215 },
2216 .flags = HWMOD_NO_IDLEST,
2217};
2218
2219
2220
2221static struct omap_hwmod_ocp_if omap3xxx_l4_per__gpio4 = {
2222 .master = &omap3xxx_l4_per_hwmod,
2223 .slave = &omap3xxx_gpio4_hwmod,
2224 .user = OCP_USER_MPU | OCP_USER_SDMA,
2225};
2226
2227
2228
2229static struct omap_hwmod_ocp_if omap3xxx_l4_per__gpio5 = {
2230 .master = &omap3xxx_l4_per_hwmod,
2231 .slave = &omap3xxx_gpio5_hwmod,
2232 .user = OCP_USER_MPU | OCP_USER_SDMA,
2233};
2234
2235
2236
2237static struct omap_hwmod_ocp_if omap3xxx_l4_per__gpio6 = {
2238 .master = &omap3xxx_l4_per_hwmod,
2239 .slave = &omap3xxx_gpio6_hwmod,
2240 .user = OCP_USER_MPU | OCP_USER_SDMA,
2241};
2242
2243
2244static struct omap_hwmod_ocp_if omap3xxx_dma_system__l3 = {
2245 .master = &omap3xxx_dma_system_hwmod,
2246 .slave = &omap3xxx_l3_main_hwmod,
2247 .clk = "core_l3_ick",
2248 .user = OCP_USER_MPU | OCP_USER_SDMA,
2249};
2250
2251
2252static struct omap_hwmod_ocp_if omap3xxx_l4_core__dma_system = {
2253 .master = &omap3xxx_l4_core_hwmod,
2254 .slave = &omap3xxx_dma_system_hwmod,
2255 .clk = "core_l4_ick",
2256 .user = OCP_USER_MPU | OCP_USER_SDMA,
2257};
2258
2259
2260
2261static struct omap_hwmod_ocp_if omap3xxx_l4_core__mcbsp1 = {
2262 .master = &omap3xxx_l4_core_hwmod,
2263 .slave = &omap3xxx_mcbsp1_hwmod,
2264 .clk = "mcbsp1_ick",
2265 .user = OCP_USER_MPU | OCP_USER_SDMA,
2266};
2267
2268
2269
2270static struct omap_hwmod_ocp_if omap3xxx_l4_per__mcbsp2 = {
2271 .master = &omap3xxx_l4_per_hwmod,
2272 .slave = &omap3xxx_mcbsp2_hwmod,
2273 .clk = "mcbsp2_ick",
2274 .user = OCP_USER_MPU | OCP_USER_SDMA,
2275};
2276
2277
2278
2279static struct omap_hwmod_ocp_if omap3xxx_l4_per__mcbsp3 = {
2280 .master = &omap3xxx_l4_per_hwmod,
2281 .slave = &omap3xxx_mcbsp3_hwmod,
2282 .clk = "mcbsp3_ick",
2283 .user = OCP_USER_MPU | OCP_USER_SDMA,
2284};
2285
2286
2287
2288static struct omap_hwmod_ocp_if omap3xxx_l4_per__mcbsp4 = {
2289 .master = &omap3xxx_l4_per_hwmod,
2290 .slave = &omap3xxx_mcbsp4_hwmod,
2291 .clk = "mcbsp4_ick",
2292 .user = OCP_USER_MPU | OCP_USER_SDMA,
2293};
2294
2295
2296
2297static struct omap_hwmod_ocp_if omap3xxx_l4_core__mcbsp5 = {
2298 .master = &omap3xxx_l4_core_hwmod,
2299 .slave = &omap3xxx_mcbsp5_hwmod,
2300 .clk = "mcbsp5_ick",
2301 .user = OCP_USER_MPU | OCP_USER_SDMA,
2302};
2303
2304
2305
2306static struct omap_hwmod_ocp_if omap3xxx_l4_per__mcbsp2_sidetone = {
2307 .master = &omap3xxx_l4_per_hwmod,
2308 .slave = &omap3xxx_mcbsp2_sidetone_hwmod,
2309 .clk = "mcbsp2_ick",
2310 .user = OCP_USER_MPU,
2311};
2312
2313
2314
2315static struct omap_hwmod_ocp_if omap3xxx_l4_per__mcbsp3_sidetone = {
2316 .master = &omap3xxx_l4_per_hwmod,
2317 .slave = &omap3xxx_mcbsp3_sidetone_hwmod,
2318 .clk = "mcbsp3_ick",
2319 .user = OCP_USER_MPU,
2320};
2321
2322
2323static struct omap_hwmod_ocp_if omap3xxx_l4_core__mailbox = {
2324 .master = &omap3xxx_l4_core_hwmod,
2325 .slave = &omap3xxx_mailbox_hwmod,
2326 .user = OCP_USER_MPU | OCP_USER_SDMA,
2327};
2328
2329
2330static struct omap_hwmod_ocp_if omap34xx_l4_core__mcspi1 = {
2331 .master = &omap3xxx_l4_core_hwmod,
2332 .slave = &omap34xx_mcspi1,
2333 .clk = "mcspi1_ick",
2334 .user = OCP_USER_MPU | OCP_USER_SDMA,
2335};
2336
2337
2338static struct omap_hwmod_ocp_if omap34xx_l4_core__mcspi2 = {
2339 .master = &omap3xxx_l4_core_hwmod,
2340 .slave = &omap34xx_mcspi2,
2341 .clk = "mcspi2_ick",
2342 .user = OCP_USER_MPU | OCP_USER_SDMA,
2343};
2344
2345
2346static struct omap_hwmod_ocp_if omap34xx_l4_core__mcspi3 = {
2347 .master = &omap3xxx_l4_core_hwmod,
2348 .slave = &omap34xx_mcspi3,
2349 .clk = "mcspi3_ick",
2350 .user = OCP_USER_MPU | OCP_USER_SDMA,
2351};
2352
2353
2354
2355static struct omap_hwmod_ocp_if omap34xx_l4_core__mcspi4 = {
2356 .master = &omap3xxx_l4_core_hwmod,
2357 .slave = &omap34xx_mcspi4,
2358 .clk = "mcspi4_ick",
2359 .user = OCP_USER_MPU | OCP_USER_SDMA,
2360};
2361
2362static struct omap_hwmod_ocp_if omap3xxx_usb_host_hs__l3_main_2 = {
2363 .master = &omap3xxx_usb_host_hs_hwmod,
2364 .slave = &omap3xxx_l3_main_hwmod,
2365 .clk = "core_l3_ick",
2366 .user = OCP_USER_MPU,
2367};
2368
2369
2370static struct omap_hwmod_ocp_if omap3xxx_l4_core__usb_host_hs = {
2371 .master = &omap3xxx_l4_core_hwmod,
2372 .slave = &omap3xxx_usb_host_hs_hwmod,
2373 .clk = "usbhost_ick",
2374 .user = OCP_USER_MPU | OCP_USER_SDMA,
2375};
2376
2377
2378static struct omap_hwmod_ocp_if omap3xxx_l4_core__usb_tll_hs = {
2379 .master = &omap3xxx_l4_core_hwmod,
2380 .slave = &omap3xxx_usb_tll_hs_hwmod,
2381 .clk = "usbtll_ick",
2382 .user = OCP_USER_MPU | OCP_USER_SDMA,
2383};
2384
2385
2386static struct omap_hwmod_ocp_if omap3xxx_l4_core__hdq1w = {
2387 .master = &omap3xxx_l4_core_hwmod,
2388 .slave = &omap3xxx_hdq1w_hwmod,
2389 .clk = "hdq_ick",
2390 .user = OCP_USER_MPU | OCP_USER_SDMA,
2391 .flags = OMAP_FIREWALL_L4 | OCPIF_SWSUP_IDLE,
2392};
2393
2394
2395
2396
2397static struct omap_hwmod_ocp_if omap3xxx_l4_wkup__counter_32k = {
2398 .master = &omap3xxx_l4_wkup_hwmod,
2399 .slave = &omap3xxx_counter_32k_hwmod,
2400 .clk = "omap_32ksync_ick",
2401 .user = OCP_USER_MPU | OCP_USER_SDMA,
2402};
2403
2404
2405static struct omap_hwmod_class am35xx_mdio_class = {
2406 .name = "davinci_mdio",
2407};
2408
2409static struct omap_hwmod am35xx_mdio_hwmod = {
2410 .name = "davinci_mdio",
2411 .class = &am35xx_mdio_class,
2412 .flags = HWMOD_NO_IDLEST,
2413};
2414
2415
2416
2417
2418
2419
2420static struct omap_hwmod_ocp_if am35xx_mdio__l3 = {
2421 .master = &am35xx_mdio_hwmod,
2422 .slave = &omap3xxx_l3_main_hwmod,
2423 .clk = "emac_fck",
2424 .user = OCP_USER_MPU,
2425};
2426
2427
2428
2429
2430
2431
2432
2433static struct omap_hwmod_ocp_if am35xx_l4_core__mdio = {
2434 .master = &omap3xxx_l4_core_hwmod,
2435 .slave = &am35xx_mdio_hwmod,
2436 .clk = "emac_fck",
2437 .user = OCP_USER_MPU,
2438};
2439
2440static struct omap_hwmod_class am35xx_emac_class = {
2441 .name = "davinci_emac",
2442};
2443
2444static struct omap_hwmod am35xx_emac_hwmod = {
2445 .name = "davinci_emac",
2446 .class = &am35xx_emac_class,
2447
2448
2449
2450
2451
2452 .flags = (HWMOD_NO_IDLEST | HWMOD_BLOCK_WFI),
2453};
2454
2455
2456
2457
2458
2459
2460
2461static struct omap_hwmod_ocp_if am35xx_emac__l3 = {
2462 .master = &am35xx_emac_hwmod,
2463 .slave = &omap3xxx_l3_main_hwmod,
2464 .clk = "emac_ick",
2465 .user = OCP_USER_MPU,
2466};
2467
2468
2469
2470
2471
2472
2473
2474static struct omap_hwmod_ocp_if am35xx_l4_core__emac = {
2475 .master = &omap3xxx_l4_core_hwmod,
2476 .slave = &am35xx_emac_hwmod,
2477 .clk = "emac_ick",
2478 .user = OCP_USER_MPU,
2479};
2480
2481static struct omap_hwmod_ocp_if omap3xxx_l3_main__gpmc = {
2482 .master = &omap3xxx_l3_main_hwmod,
2483 .slave = &omap3xxx_gpmc_hwmod,
2484 .clk = "core_l3_ick",
2485 .user = OCP_USER_MPU | OCP_USER_SDMA,
2486};
2487
2488
2489static struct omap_hwmod_class_sysconfig omap3_sham_sysc = {
2490 .rev_offs = 0x5c,
2491 .sysc_offs = 0x60,
2492 .syss_offs = 0x64,
2493 .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
2494 SYSC_HAS_AUTOIDLE | SYSS_HAS_RESET_STATUS),
2495 .sysc_fields = &omap3_sham_sysc_fields,
2496};
2497
2498static struct omap_hwmod_class omap3xxx_sham_class = {
2499 .name = "sham",
2500 .sysc = &omap3_sham_sysc,
2501};
2502
2503
2504
2505static struct omap_hwmod omap3xxx_sham_hwmod = {
2506 .name = "sham",
2507 .main_clk = "sha12_ick",
2508 .prcm = {
2509 .omap2 = {
2510 .module_offs = CORE_MOD,
2511 .idlest_reg_id = 1,
2512 .idlest_idle_bit = OMAP3430_ST_SHA12_SHIFT,
2513 },
2514 },
2515 .class = &omap3xxx_sham_class,
2516};
2517
2518
2519static struct omap_hwmod_ocp_if omap3xxx_l4_core__sham = {
2520 .master = &omap3xxx_l4_core_hwmod,
2521 .slave = &omap3xxx_sham_hwmod,
2522 .clk = "sha12_ick",
2523 .user = OCP_USER_MPU | OCP_USER_SDMA,
2524};
2525
2526
2527static struct omap_hwmod_class_sysconfig omap3_aes_sysc = {
2528 .rev_offs = 0x44,
2529 .sysc_offs = 0x48,
2530 .syss_offs = 0x4c,
2531 .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
2532 SYSC_HAS_AUTOIDLE | SYSS_HAS_RESET_STATUS),
2533 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
2534 .sysc_fields = &omap3xxx_aes_sysc_fields,
2535};
2536
2537static struct omap_hwmod_class omap3xxx_aes_class = {
2538 .name = "aes",
2539 .sysc = &omap3_aes_sysc,
2540};
2541
2542
2543static struct omap_hwmod omap3xxx_aes_hwmod = {
2544 .name = "aes",
2545 .main_clk = "aes2_ick",
2546 .prcm = {
2547 .omap2 = {
2548 .module_offs = CORE_MOD,
2549 .idlest_reg_id = 1,
2550 .idlest_idle_bit = OMAP3430_ST_AES2_SHIFT,
2551 },
2552 },
2553 .class = &omap3xxx_aes_class,
2554};
2555
2556
2557static struct omap_hwmod_ocp_if omap3xxx_l4_core__aes = {
2558 .master = &omap3xxx_l4_core_hwmod,
2559 .slave = &omap3xxx_aes_hwmod,
2560 .clk = "aes2_ick",
2561 .user = OCP_USER_MPU | OCP_USER_SDMA,
2562};
2563
2564
2565
2566
2567
2568
2569static struct omap_hwmod_class_sysconfig omap34xx_ssi_sysc = {
2570 .rev_offs = 0x0000,
2571 .sysc_offs = 0x0010,
2572 .syss_offs = 0x0014,
2573 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_MIDLEMODE |
2574 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
2575 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
2576 .sysc_fields = &omap_hwmod_sysc_type1,
2577};
2578
2579static struct omap_hwmod_class omap3xxx_ssi_hwmod_class = {
2580 .name = "ssi",
2581 .sysc = &omap34xx_ssi_sysc,
2582};
2583
2584static struct omap_hwmod omap3xxx_ssi_hwmod = {
2585 .name = "ssi",
2586 .class = &omap3xxx_ssi_hwmod_class,
2587 .clkdm_name = "core_l4_clkdm",
2588 .main_clk = "ssi_ssr_fck",
2589 .prcm = {
2590 .omap2 = {
2591 .module_offs = CORE_MOD,
2592 .idlest_reg_id = 1,
2593 .idlest_idle_bit = OMAP3430ES2_ST_SSI_IDLE_SHIFT,
2594 },
2595 },
2596};
2597
2598
2599static struct omap_hwmod_ocp_if omap3xxx_l4_core__ssi = {
2600 .master = &omap3xxx_l4_core_hwmod,
2601 .slave = &omap3xxx_ssi_hwmod,
2602 .clk = "ssi_ick",
2603 .user = OCP_USER_MPU | OCP_USER_SDMA,
2604};
2605
2606static struct omap_hwmod_ocp_if *omap3xxx_hwmod_ocp_ifs[] __initdata = {
2607 &omap3xxx_l3_main__l4_core,
2608 &omap3xxx_l3_main__l4_per,
2609 &omap3xxx_mpu__l3_main,
2610 &omap3xxx_l3_main__l4_debugss,
2611 &omap3xxx_l4_core__l4_wkup,
2612 &omap3xxx_l4_core__mmc3,
2613 &omap3_l4_core__uart1,
2614 &omap3_l4_core__uart2,
2615 &omap3_l4_per__uart3,
2616 &omap3_l4_core__i2c1,
2617 &omap3_l4_core__i2c2,
2618 &omap3_l4_core__i2c3,
2619 &omap3xxx_l4_wkup__l4_sec,
2620 &omap3xxx_l4_wkup__timer1,
2621 &omap3xxx_l4_per__timer2,
2622 &omap3xxx_l4_per__timer3,
2623 &omap3xxx_l4_per__timer4,
2624 &omap3xxx_l4_per__timer5,
2625 &omap3xxx_l4_per__timer6,
2626 &omap3xxx_l4_per__timer7,
2627 &omap3xxx_l4_per__timer8,
2628 &omap3xxx_l4_per__timer9,
2629 &omap3xxx_l4_core__timer10,
2630 &omap3xxx_l4_core__timer11,
2631 &omap3xxx_l4_wkup__wd_timer2,
2632 &omap3xxx_l4_wkup__gpio1,
2633 &omap3xxx_l4_per__gpio2,
2634 &omap3xxx_l4_per__gpio3,
2635 &omap3xxx_l4_per__gpio4,
2636 &omap3xxx_l4_per__gpio5,
2637 &omap3xxx_l4_per__gpio6,
2638 &omap3xxx_dma_system__l3,
2639 &omap3xxx_l4_core__dma_system,
2640 &omap3xxx_l4_core__mcbsp1,
2641 &omap3xxx_l4_per__mcbsp2,
2642 &omap3xxx_l4_per__mcbsp3,
2643 &omap3xxx_l4_per__mcbsp4,
2644 &omap3xxx_l4_core__mcbsp5,
2645 &omap3xxx_l4_per__mcbsp2_sidetone,
2646 &omap3xxx_l4_per__mcbsp3_sidetone,
2647 &omap34xx_l4_core__mcspi1,
2648 &omap34xx_l4_core__mcspi2,
2649 &omap34xx_l4_core__mcspi3,
2650 &omap34xx_l4_core__mcspi4,
2651 &omap3xxx_l4_wkup__counter_32k,
2652 &omap3xxx_l3_main__gpmc,
2653 NULL,
2654};
2655
2656
2657static struct omap_hwmod_ocp_if *omap34xx_gp_hwmod_ocp_ifs[] __initdata = {
2658 &omap3xxx_l4_sec__timer12,
2659 NULL,
2660};
2661
2662static struct omap_hwmod_ocp_if *omap36xx_gp_hwmod_ocp_ifs[] __initdata = {
2663 &omap3xxx_l4_sec__timer12,
2664 NULL,
2665};
2666
2667static struct omap_hwmod_ocp_if *am35xx_gp_hwmod_ocp_ifs[] __initdata = {
2668 &omap3xxx_l4_sec__timer12,
2669 NULL,
2670};
2671
2672
2673static struct omap_hwmod_ocp_if *omap34xx_sham_hwmod_ocp_ifs[] __initdata = {
2674 &omap3xxx_l4_core__sham,
2675 NULL,
2676};
2677
2678static struct omap_hwmod_ocp_if *omap34xx_aes_hwmod_ocp_ifs[] __initdata = {
2679 &omap3xxx_l4_core__aes,
2680 NULL,
2681};
2682
2683static struct omap_hwmod_ocp_if *omap36xx_sham_hwmod_ocp_ifs[] __initdata = {
2684 &omap3xxx_l4_core__sham,
2685 NULL
2686};
2687
2688static struct omap_hwmod_ocp_if *omap36xx_aes_hwmod_ocp_ifs[] __initdata = {
2689 &omap3xxx_l4_core__aes,
2690 NULL
2691};
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701static struct omap_hwmod_ocp_if *am35xx_sham_hwmod_ocp_ifs[] __initdata = {
2702
2703 NULL
2704};
2705
2706static struct omap_hwmod_ocp_if *am35xx_aes_hwmod_ocp_ifs[] __initdata = {
2707
2708 NULL,
2709};
2710
2711
2712static struct omap_hwmod_ocp_if *omap3430es1_hwmod_ocp_ifs[] __initdata = {
2713 &omap3430es1_dss__l3,
2714 &omap3430es1_l4_core__dss,
2715 NULL,
2716};
2717
2718
2719static struct omap_hwmod_ocp_if *omap3430es2plus_hwmod_ocp_ifs[] __initdata = {
2720 &omap3xxx_dss__l3,
2721 &omap3xxx_l4_core__dss,
2722 &omap3xxx_usbhsotg__l3,
2723 &omap3xxx_l4_core__usbhsotg,
2724 &omap3xxx_usb_host_hs__l3_main_2,
2725 &omap3xxx_l4_core__usb_host_hs,
2726 &omap3xxx_l4_core__usb_tll_hs,
2727 NULL,
2728};
2729
2730
2731static struct omap_hwmod_ocp_if *omap3430_pre_es3_hwmod_ocp_ifs[] __initdata = {
2732 &omap3xxx_l4_core__pre_es3_mmc1,
2733 &omap3xxx_l4_core__pre_es3_mmc2,
2734 NULL,
2735};
2736
2737
2738static struct omap_hwmod_ocp_if *omap3430_es3plus_hwmod_ocp_ifs[] __initdata = {
2739 &omap3xxx_l4_core__es3plus_mmc1,
2740 &omap3xxx_l4_core__es3plus_mmc2,
2741 NULL,
2742};
2743
2744
2745static struct omap_hwmod_ocp_if *omap34xx_hwmod_ocp_ifs[] __initdata = {
2746 &omap3xxx_l3__iva,
2747 &omap34xx_l4_core__sr1,
2748 &omap34xx_l4_core__sr2,
2749 &omap3xxx_l4_core__mailbox,
2750 &omap3xxx_l4_core__hdq1w,
2751 &omap3xxx_sad2d__l3,
2752 &omap3xxx_l4_core__mmu_isp,
2753 &omap3xxx_l3_main__mmu_iva,
2754 &omap3xxx_l4_core__ssi,
2755 NULL,
2756};
2757
2758
2759static struct omap_hwmod_ocp_if *omap36xx_hwmod_ocp_ifs[] __initdata = {
2760 &omap3xxx_l3__iva,
2761 &omap36xx_l4_per__uart4,
2762 &omap3xxx_dss__l3,
2763 &omap3xxx_l4_core__dss,
2764 &omap36xx_l4_core__sr1,
2765 &omap36xx_l4_core__sr2,
2766 &omap3xxx_usbhsotg__l3,
2767 &omap3xxx_l4_core__usbhsotg,
2768 &omap3xxx_l4_core__mailbox,
2769 &omap3xxx_usb_host_hs__l3_main_2,
2770 &omap3xxx_l4_core__usb_host_hs,
2771 &omap3xxx_l4_core__usb_tll_hs,
2772 &omap3xxx_l4_core__es3plus_mmc1,
2773 &omap3xxx_l4_core__es3plus_mmc2,
2774 &omap3xxx_l4_core__hdq1w,
2775 &omap3xxx_sad2d__l3,
2776 &omap3xxx_l4_core__mmu_isp,
2777 &omap3xxx_l3_main__mmu_iva,
2778 &omap3xxx_l4_core__ssi,
2779 NULL,
2780};
2781
2782static struct omap_hwmod_ocp_if *am35xx_hwmod_ocp_ifs[] __initdata = {
2783 &omap3xxx_dss__l3,
2784 &omap3xxx_l4_core__dss,
2785 &am35xx_usbhsotg__l3,
2786 &am35xx_l4_core__usbhsotg,
2787 &am35xx_l4_core__uart4,
2788 &omap3xxx_usb_host_hs__l3_main_2,
2789 &omap3xxx_l4_core__usb_host_hs,
2790 &omap3xxx_l4_core__usb_tll_hs,
2791 &omap3xxx_l4_core__es3plus_mmc1,
2792 &omap3xxx_l4_core__es3plus_mmc2,
2793 &omap3xxx_l4_core__hdq1w,
2794 &am35xx_mdio__l3,
2795 &am35xx_l4_core__mdio,
2796 &am35xx_emac__l3,
2797 &am35xx_l4_core__emac,
2798 NULL,
2799};
2800
2801static struct omap_hwmod_ocp_if *omap3xxx_dss_hwmod_ocp_ifs[] __initdata = {
2802 &omap3xxx_l4_core__dss_dispc,
2803 &omap3xxx_l4_core__dss_dsi1,
2804 &omap3xxx_l4_core__dss_rfbi,
2805 &omap3xxx_l4_core__dss_venc,
2806 NULL,
2807};
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826static bool __init omap3xxx_hwmod_is_hs_ip_block_usable(struct device_node *bus,
2827 const char *dev_name)
2828{
2829 struct device_node *node;
2830 bool available;
2831
2832 if (!bus)
2833 return omap_type() == OMAP2_DEVICE_TYPE_GP;
2834
2835 node = of_get_child_by_name(bus, dev_name);
2836 available = of_device_is_available(node);
2837 of_node_put(node);
2838
2839 return available;
2840}
2841
2842int __init omap3xxx_hwmod_init(void)
2843{
2844 int r;
2845 struct omap_hwmod_ocp_if **h = NULL, **h_gp = NULL, **h_sham = NULL;
2846 struct omap_hwmod_ocp_if **h_aes = NULL;
2847 struct device_node *bus;
2848 unsigned int rev;
2849
2850 omap_hwmod_init();
2851
2852
2853 r = omap_hwmod_register_links(omap3xxx_hwmod_ocp_ifs);
2854 if (r < 0)
2855 return r;
2856
2857 rev = omap_rev();
2858
2859
2860
2861
2862
2863
2864 if (rev == OMAP3430_REV_ES1_0 || rev == OMAP3430_REV_ES2_0 ||
2865 rev == OMAP3430_REV_ES2_1 || rev == OMAP3430_REV_ES3_0 ||
2866 rev == OMAP3430_REV_ES3_1 || rev == OMAP3430_REV_ES3_1_2) {
2867 h = omap34xx_hwmod_ocp_ifs;
2868 h_gp = omap34xx_gp_hwmod_ocp_ifs;
2869 h_sham = omap34xx_sham_hwmod_ocp_ifs;
2870 h_aes = omap34xx_aes_hwmod_ocp_ifs;
2871 } else if (rev == AM35XX_REV_ES1_0 || rev == AM35XX_REV_ES1_1) {
2872 h = am35xx_hwmod_ocp_ifs;
2873 h_gp = am35xx_gp_hwmod_ocp_ifs;
2874 h_sham = am35xx_sham_hwmod_ocp_ifs;
2875 h_aes = am35xx_aes_hwmod_ocp_ifs;
2876 } else if (rev == OMAP3630_REV_ES1_0 || rev == OMAP3630_REV_ES1_1 ||
2877 rev == OMAP3630_REV_ES1_2) {
2878 h = omap36xx_hwmod_ocp_ifs;
2879 h_gp = omap36xx_gp_hwmod_ocp_ifs;
2880 h_sham = omap36xx_sham_hwmod_ocp_ifs;
2881 h_aes = omap36xx_aes_hwmod_ocp_ifs;
2882 } else {
2883 WARN(1, "OMAP3 hwmod family init: unknown chip type\n");
2884 return -EINVAL;
2885 }
2886
2887 r = omap_hwmod_register_links(h);
2888 if (r < 0)
2889 return r;
2890
2891
2892 if (h_gp && omap_type() == OMAP2_DEVICE_TYPE_GP) {
2893 r = omap_hwmod_register_links(h_gp);
2894 if (r < 0)
2895 return r;
2896 }
2897
2898
2899
2900
2901
2902
2903 bus = of_find_node_by_name(NULL, "ocp");
2904
2905 if (h_sham && omap3xxx_hwmod_is_hs_ip_block_usable(bus, "sham")) {
2906 r = omap_hwmod_register_links(h_sham);
2907 if (r < 0)
2908 goto put_node;
2909 }
2910
2911 if (h_aes && omap3xxx_hwmod_is_hs_ip_block_usable(bus, "aes")) {
2912 r = omap_hwmod_register_links(h_aes);
2913 if (r < 0)
2914 goto put_node;
2915 }
2916 of_node_put(bus);
2917
2918
2919
2920
2921
2922 h = NULL;
2923 if (rev == OMAP3430_REV_ES1_0) {
2924 h = omap3430es1_hwmod_ocp_ifs;
2925 } else if (rev == OMAP3430_REV_ES2_0 || rev == OMAP3430_REV_ES2_1 ||
2926 rev == OMAP3430_REV_ES3_0 || rev == OMAP3430_REV_ES3_1 ||
2927 rev == OMAP3430_REV_ES3_1_2) {
2928 h = omap3430es2plus_hwmod_ocp_ifs;
2929 }
2930
2931 if (h) {
2932 r = omap_hwmod_register_links(h);
2933 if (r < 0)
2934 return r;
2935 }
2936
2937 h = NULL;
2938 if (rev == OMAP3430_REV_ES1_0 || rev == OMAP3430_REV_ES2_0 ||
2939 rev == OMAP3430_REV_ES2_1) {
2940 h = omap3430_pre_es3_hwmod_ocp_ifs;
2941 } else if (rev == OMAP3430_REV_ES3_0 || rev == OMAP3430_REV_ES3_1 ||
2942 rev == OMAP3430_REV_ES3_1_2) {
2943 h = omap3430_es3plus_hwmod_ocp_ifs;
2944 }
2945
2946 if (h)
2947 r = omap_hwmod_register_links(h);
2948 if (r < 0)
2949 return r;
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962 r = omap_hwmod_register_links(omap3xxx_dss_hwmod_ocp_ifs);
2963
2964 return r;
2965
2966put_node:
2967 of_node_put(bus);
2968 return r;
2969}
2970