2 * omap_hwmod_2420_data.c - hardware modules present on the OMAP2420 chips
4 * Copyright (C) 2009-2011 Nokia Corporation
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 as
9 * published by the Free Software Foundation.
11 * XXX handle crossbar/shared link difference for L3?
12 * XXX these should be marked initdata for multi-OMAP kernels
14 #include <plat/omap_hwmod.h>
15 #include <mach/irqs.h>
18 #include <plat/serial.h>
20 #include <plat/gpio.h>
21 #include <plat/mcspi.h>
22 #include <plat/dmtimer.h>
23 #include <plat/l3_2xxx.h>
24 #include <plat/l4_2xxx.h>
26 #include "omap_hwmod_common_data.h"
28 #include "cm-regbits-24xx.h"
29 #include "prm-regbits-24xx.h"
33 * OMAP2420 hardware module integration data
35 * ALl of the data in this section should be autogeneratable from the
36 * TI hardware database or other technical documentation. Data that
37 * is driver-specific or driver-kernel integration-specific belongs
41 static struct omap_hwmod omap2420_mpu_hwmod
;
42 static struct omap_hwmod omap2420_iva_hwmod
;
43 static struct omap_hwmod omap2420_l3_main_hwmod
;
44 static struct omap_hwmod omap2420_l4_core_hwmod
;
45 static struct omap_hwmod omap2420_dss_core_hwmod
;
46 static struct omap_hwmod omap2420_dss_dispc_hwmod
;
47 static struct omap_hwmod omap2420_dss_rfbi_hwmod
;
48 static struct omap_hwmod omap2420_dss_venc_hwmod
;
49 static struct omap_hwmod omap2420_wd_timer2_hwmod
;
50 static struct omap_hwmod omap2420_gpio1_hwmod
;
51 static struct omap_hwmod omap2420_gpio2_hwmod
;
52 static struct omap_hwmod omap2420_gpio3_hwmod
;
53 static struct omap_hwmod omap2420_gpio4_hwmod
;
54 static struct omap_hwmod omap2420_dma_system_hwmod
;
55 static struct omap_hwmod omap2420_mcspi1_hwmod
;
56 static struct omap_hwmod omap2420_mcspi2_hwmod
;
58 /* L3 -> L4_CORE interface */
59 static struct omap_hwmod_ocp_if omap2420_l3_main__l4_core
= {
60 .master
= &omap2420_l3_main_hwmod
,
61 .slave
= &omap2420_l4_core_hwmod
,
62 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
65 /* MPU -> L3 interface */
66 static struct omap_hwmod_ocp_if omap2420_mpu__l3_main
= {
67 .master
= &omap2420_mpu_hwmod
,
68 .slave
= &omap2420_l3_main_hwmod
,
72 /* Slave interfaces on the L3 interconnect */
73 static struct omap_hwmod_ocp_if
*omap2420_l3_main_slaves
[] = {
74 &omap2420_mpu__l3_main
,
78 static struct omap_hwmod_ocp_if omap2420_dss__l3
= {
79 .master
= &omap2420_dss_core_hwmod
,
80 .slave
= &omap2420_l3_main_hwmod
,
83 .l3_perm_bit
= OMAP2_L3_CORE_FW_CONNID_DSS
,
84 .flags
= OMAP_FIREWALL_L3
,
87 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
90 /* Master interfaces on the L3 interconnect */
91 static struct omap_hwmod_ocp_if
*omap2420_l3_main_masters
[] = {
92 &omap2420_l3_main__l4_core
,
96 static struct omap_hwmod omap2420_l3_main_hwmod
= {
98 .class = &l3_hwmod_class
,
99 .masters
= omap2420_l3_main_masters
,
100 .masters_cnt
= ARRAY_SIZE(omap2420_l3_main_masters
),
101 .slaves
= omap2420_l3_main_slaves
,
102 .slaves_cnt
= ARRAY_SIZE(omap2420_l3_main_slaves
),
103 .flags
= HWMOD_NO_IDLEST
,
106 static struct omap_hwmod omap2420_l4_wkup_hwmod
;
107 static struct omap_hwmod omap2420_uart1_hwmod
;
108 static struct omap_hwmod omap2420_uart2_hwmod
;
109 static struct omap_hwmod omap2420_uart3_hwmod
;
110 static struct omap_hwmod omap2420_i2c1_hwmod
;
111 static struct omap_hwmod omap2420_i2c2_hwmod
;
112 static struct omap_hwmod omap2420_mcbsp1_hwmod
;
113 static struct omap_hwmod omap2420_mcbsp2_hwmod
;
115 /* l4 core -> mcspi1 interface */
116 static struct omap_hwmod_ocp_if omap2420_l4_core__mcspi1
= {
117 .master
= &omap2420_l4_core_hwmod
,
118 .slave
= &omap2420_mcspi1_hwmod
,
120 .addr
= omap2_mcspi1_addr_space
,
121 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
124 /* l4 core -> mcspi2 interface */
125 static struct omap_hwmod_ocp_if omap2420_l4_core__mcspi2
= {
126 .master
= &omap2420_l4_core_hwmod
,
127 .slave
= &omap2420_mcspi2_hwmod
,
129 .addr
= omap2_mcspi2_addr_space
,
130 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
133 /* L4_CORE -> L4_WKUP interface */
134 static struct omap_hwmod_ocp_if omap2420_l4_core__l4_wkup
= {
135 .master
= &omap2420_l4_core_hwmod
,
136 .slave
= &omap2420_l4_wkup_hwmod
,
137 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
140 /* L4 CORE -> UART1 interface */
141 static struct omap_hwmod_ocp_if omap2_l4_core__uart1
= {
142 .master
= &omap2420_l4_core_hwmod
,
143 .slave
= &omap2420_uart1_hwmod
,
145 .addr
= omap2xxx_uart1_addr_space
,
146 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
149 /* L4 CORE -> UART2 interface */
150 static struct omap_hwmod_ocp_if omap2_l4_core__uart2
= {
151 .master
= &omap2420_l4_core_hwmod
,
152 .slave
= &omap2420_uart2_hwmod
,
154 .addr
= omap2xxx_uart2_addr_space
,
155 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
158 /* L4 PER -> UART3 interface */
159 static struct omap_hwmod_ocp_if omap2_l4_core__uart3
= {
160 .master
= &omap2420_l4_core_hwmod
,
161 .slave
= &omap2420_uart3_hwmod
,
163 .addr
= omap2xxx_uart3_addr_space
,
164 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
167 /* L4 CORE -> I2C1 interface */
168 static struct omap_hwmod_ocp_if omap2420_l4_core__i2c1
= {
169 .master
= &omap2420_l4_core_hwmod
,
170 .slave
= &omap2420_i2c1_hwmod
,
172 .addr
= omap2_i2c1_addr_space
,
173 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
176 /* L4 CORE -> I2C2 interface */
177 static struct omap_hwmod_ocp_if omap2420_l4_core__i2c2
= {
178 .master
= &omap2420_l4_core_hwmod
,
179 .slave
= &omap2420_i2c2_hwmod
,
181 .addr
= omap2_i2c2_addr_space
,
182 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
185 /* Slave interfaces on the L4_CORE interconnect */
186 static struct omap_hwmod_ocp_if
*omap2420_l4_core_slaves
[] = {
187 &omap2420_l3_main__l4_core
,
190 /* Master interfaces on the L4_CORE interconnect */
191 static struct omap_hwmod_ocp_if
*omap2420_l4_core_masters
[] = {
192 &omap2420_l4_core__l4_wkup
,
193 &omap2_l4_core__uart1
,
194 &omap2_l4_core__uart2
,
195 &omap2_l4_core__uart3
,
196 &omap2420_l4_core__i2c1
,
197 &omap2420_l4_core__i2c2
201 static struct omap_hwmod omap2420_l4_core_hwmod
= {
203 .class = &l4_hwmod_class
,
204 .masters
= omap2420_l4_core_masters
,
205 .masters_cnt
= ARRAY_SIZE(omap2420_l4_core_masters
),
206 .slaves
= omap2420_l4_core_slaves
,
207 .slaves_cnt
= ARRAY_SIZE(omap2420_l4_core_slaves
),
208 .flags
= HWMOD_NO_IDLEST
,
211 /* Slave interfaces on the L4_WKUP interconnect */
212 static struct omap_hwmod_ocp_if
*omap2420_l4_wkup_slaves
[] = {
213 &omap2420_l4_core__l4_wkup
,
216 /* Master interfaces on the L4_WKUP interconnect */
217 static struct omap_hwmod_ocp_if
*omap2420_l4_wkup_masters
[] = {
221 static struct omap_hwmod omap2420_l4_wkup_hwmod
= {
223 .class = &l4_hwmod_class
,
224 .masters
= omap2420_l4_wkup_masters
,
225 .masters_cnt
= ARRAY_SIZE(omap2420_l4_wkup_masters
),
226 .slaves
= omap2420_l4_wkup_slaves
,
227 .slaves_cnt
= ARRAY_SIZE(omap2420_l4_wkup_slaves
),
228 .flags
= HWMOD_NO_IDLEST
,
231 /* Master interfaces on the MPU device */
232 static struct omap_hwmod_ocp_if
*omap2420_mpu_masters
[] = {
233 &omap2420_mpu__l3_main
,
237 static struct omap_hwmod omap2420_mpu_hwmod
= {
239 .class = &mpu_hwmod_class
,
240 .main_clk
= "mpu_ck",
241 .masters
= omap2420_mpu_masters
,
242 .masters_cnt
= ARRAY_SIZE(omap2420_mpu_masters
),
246 * IVA1 interface data
249 /* IVA <- L3 interface */
250 static struct omap_hwmod_ocp_if omap2420_l3__iva
= {
251 .master
= &omap2420_l3_main_hwmod
,
252 .slave
= &omap2420_iva_hwmod
,
254 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
257 static struct omap_hwmod_ocp_if
*omap2420_iva_masters
[] = {
265 static struct omap_hwmod omap2420_iva_hwmod
= {
267 .class = &iva_hwmod_class
,
268 .masters
= omap2420_iva_masters
,
269 .masters_cnt
= ARRAY_SIZE(omap2420_iva_masters
),
272 /* always-on timers dev attribute */
273 static struct omap_timer_capability_dev_attr capability_alwon_dev_attr
= {
274 .timer_capability
= OMAP_TIMER_ALWON
,
277 /* pwm timers dev attribute */
278 static struct omap_timer_capability_dev_attr capability_pwm_dev_attr
= {
279 .timer_capability
= OMAP_TIMER_HAS_PWM
,
283 static struct omap_hwmod omap2420_timer1_hwmod
;
285 static struct omap_hwmod_addr_space omap2420_timer1_addrs
[] = {
287 .pa_start
= 0x48028000,
288 .pa_end
= 0x48028000 + SZ_1K
- 1,
289 .flags
= ADDR_TYPE_RT
294 /* l4_wkup -> timer1 */
295 static struct omap_hwmod_ocp_if omap2420_l4_wkup__timer1
= {
296 .master
= &omap2420_l4_wkup_hwmod
,
297 .slave
= &omap2420_timer1_hwmod
,
299 .addr
= omap2420_timer1_addrs
,
300 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
303 /* timer1 slave port */
304 static struct omap_hwmod_ocp_if
*omap2420_timer1_slaves
[] = {
305 &omap2420_l4_wkup__timer1
,
309 static struct omap_hwmod omap2420_timer1_hwmod
= {
311 .mpu_irqs
= omap2_timer1_mpu_irqs
,
312 .main_clk
= "gpt1_fck",
316 .module_bit
= OMAP24XX_EN_GPT1_SHIFT
,
317 .module_offs
= WKUP_MOD
,
319 .idlest_idle_bit
= OMAP24XX_ST_GPT1_SHIFT
,
322 .dev_attr
= &capability_alwon_dev_attr
,
323 .slaves
= omap2420_timer1_slaves
,
324 .slaves_cnt
= ARRAY_SIZE(omap2420_timer1_slaves
),
325 .class = &omap2xxx_timer_hwmod_class
,
329 static struct omap_hwmod omap2420_timer2_hwmod
;
331 /* l4_core -> timer2 */
332 static struct omap_hwmod_ocp_if omap2420_l4_core__timer2
= {
333 .master
= &omap2420_l4_core_hwmod
,
334 .slave
= &omap2420_timer2_hwmod
,
336 .addr
= omap2xxx_timer2_addrs
,
337 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
340 /* timer2 slave port */
341 static struct omap_hwmod_ocp_if
*omap2420_timer2_slaves
[] = {
342 &omap2420_l4_core__timer2
,
346 static struct omap_hwmod omap2420_timer2_hwmod
= {
348 .mpu_irqs
= omap2_timer2_mpu_irqs
,
349 .main_clk
= "gpt2_fck",
353 .module_bit
= OMAP24XX_EN_GPT2_SHIFT
,
354 .module_offs
= CORE_MOD
,
356 .idlest_idle_bit
= OMAP24XX_ST_GPT2_SHIFT
,
359 .dev_attr
= &capability_alwon_dev_attr
,
360 .slaves
= omap2420_timer2_slaves
,
361 .slaves_cnt
= ARRAY_SIZE(omap2420_timer2_slaves
),
362 .class = &omap2xxx_timer_hwmod_class
,
366 static struct omap_hwmod omap2420_timer3_hwmod
;
368 /* l4_core -> timer3 */
369 static struct omap_hwmod_ocp_if omap2420_l4_core__timer3
= {
370 .master
= &omap2420_l4_core_hwmod
,
371 .slave
= &omap2420_timer3_hwmod
,
373 .addr
= omap2xxx_timer3_addrs
,
374 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
377 /* timer3 slave port */
378 static struct omap_hwmod_ocp_if
*omap2420_timer3_slaves
[] = {
379 &omap2420_l4_core__timer3
,
383 static struct omap_hwmod omap2420_timer3_hwmod
= {
385 .mpu_irqs
= omap2_timer3_mpu_irqs
,
386 .main_clk
= "gpt3_fck",
390 .module_bit
= OMAP24XX_EN_GPT3_SHIFT
,
391 .module_offs
= CORE_MOD
,
393 .idlest_idle_bit
= OMAP24XX_ST_GPT3_SHIFT
,
396 .dev_attr
= &capability_alwon_dev_attr
,
397 .slaves
= omap2420_timer3_slaves
,
398 .slaves_cnt
= ARRAY_SIZE(omap2420_timer3_slaves
),
399 .class = &omap2xxx_timer_hwmod_class
,
403 static struct omap_hwmod omap2420_timer4_hwmod
;
405 /* l4_core -> timer4 */
406 static struct omap_hwmod_ocp_if omap2420_l4_core__timer4
= {
407 .master
= &omap2420_l4_core_hwmod
,
408 .slave
= &omap2420_timer4_hwmod
,
410 .addr
= omap2xxx_timer4_addrs
,
411 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
414 /* timer4 slave port */
415 static struct omap_hwmod_ocp_if
*omap2420_timer4_slaves
[] = {
416 &omap2420_l4_core__timer4
,
420 static struct omap_hwmod omap2420_timer4_hwmod
= {
422 .mpu_irqs
= omap2_timer4_mpu_irqs
,
423 .main_clk
= "gpt4_fck",
427 .module_bit
= OMAP24XX_EN_GPT4_SHIFT
,
428 .module_offs
= CORE_MOD
,
430 .idlest_idle_bit
= OMAP24XX_ST_GPT4_SHIFT
,
433 .dev_attr
= &capability_alwon_dev_attr
,
434 .slaves
= omap2420_timer4_slaves
,
435 .slaves_cnt
= ARRAY_SIZE(omap2420_timer4_slaves
),
436 .class = &omap2xxx_timer_hwmod_class
,
440 static struct omap_hwmod omap2420_timer5_hwmod
;
442 /* l4_core -> timer5 */
443 static struct omap_hwmod_ocp_if omap2420_l4_core__timer5
= {
444 .master
= &omap2420_l4_core_hwmod
,
445 .slave
= &omap2420_timer5_hwmod
,
447 .addr
= omap2xxx_timer5_addrs
,
448 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
451 /* timer5 slave port */
452 static struct omap_hwmod_ocp_if
*omap2420_timer5_slaves
[] = {
453 &omap2420_l4_core__timer5
,
457 static struct omap_hwmod omap2420_timer5_hwmod
= {
459 .mpu_irqs
= omap2_timer5_mpu_irqs
,
460 .main_clk
= "gpt5_fck",
464 .module_bit
= OMAP24XX_EN_GPT5_SHIFT
,
465 .module_offs
= CORE_MOD
,
467 .idlest_idle_bit
= OMAP24XX_ST_GPT5_SHIFT
,
470 .dev_attr
= &capability_alwon_dev_attr
,
471 .slaves
= omap2420_timer5_slaves
,
472 .slaves_cnt
= ARRAY_SIZE(omap2420_timer5_slaves
),
473 .class = &omap2xxx_timer_hwmod_class
,
478 static struct omap_hwmod omap2420_timer6_hwmod
;
480 /* l4_core -> timer6 */
481 static struct omap_hwmod_ocp_if omap2420_l4_core__timer6
= {
482 .master
= &omap2420_l4_core_hwmod
,
483 .slave
= &omap2420_timer6_hwmod
,
485 .addr
= omap2xxx_timer6_addrs
,
486 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
489 /* timer6 slave port */
490 static struct omap_hwmod_ocp_if
*omap2420_timer6_slaves
[] = {
491 &omap2420_l4_core__timer6
,
495 static struct omap_hwmod omap2420_timer6_hwmod
= {
497 .mpu_irqs
= omap2_timer6_mpu_irqs
,
498 .main_clk
= "gpt6_fck",
502 .module_bit
= OMAP24XX_EN_GPT6_SHIFT
,
503 .module_offs
= CORE_MOD
,
505 .idlest_idle_bit
= OMAP24XX_ST_GPT6_SHIFT
,
508 .dev_attr
= &capability_alwon_dev_attr
,
509 .slaves
= omap2420_timer6_slaves
,
510 .slaves_cnt
= ARRAY_SIZE(omap2420_timer6_slaves
),
511 .class = &omap2xxx_timer_hwmod_class
,
515 static struct omap_hwmod omap2420_timer7_hwmod
;
517 /* l4_core -> timer7 */
518 static struct omap_hwmod_ocp_if omap2420_l4_core__timer7
= {
519 .master
= &omap2420_l4_core_hwmod
,
520 .slave
= &omap2420_timer7_hwmod
,
522 .addr
= omap2xxx_timer7_addrs
,
523 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
526 /* timer7 slave port */
527 static struct omap_hwmod_ocp_if
*omap2420_timer7_slaves
[] = {
528 &omap2420_l4_core__timer7
,
532 static struct omap_hwmod omap2420_timer7_hwmod
= {
534 .mpu_irqs
= omap2_timer7_mpu_irqs
,
535 .main_clk
= "gpt7_fck",
539 .module_bit
= OMAP24XX_EN_GPT7_SHIFT
,
540 .module_offs
= CORE_MOD
,
542 .idlest_idle_bit
= OMAP24XX_ST_GPT7_SHIFT
,
545 .dev_attr
= &capability_alwon_dev_attr
,
546 .slaves
= omap2420_timer7_slaves
,
547 .slaves_cnt
= ARRAY_SIZE(omap2420_timer7_slaves
),
548 .class = &omap2xxx_timer_hwmod_class
,
552 static struct omap_hwmod omap2420_timer8_hwmod
;
554 /* l4_core -> timer8 */
555 static struct omap_hwmod_ocp_if omap2420_l4_core__timer8
= {
556 .master
= &omap2420_l4_core_hwmod
,
557 .slave
= &omap2420_timer8_hwmod
,
559 .addr
= omap2xxx_timer8_addrs
,
560 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
563 /* timer8 slave port */
564 static struct omap_hwmod_ocp_if
*omap2420_timer8_slaves
[] = {
565 &omap2420_l4_core__timer8
,
569 static struct omap_hwmod omap2420_timer8_hwmod
= {
571 .mpu_irqs
= omap2_timer8_mpu_irqs
,
572 .main_clk
= "gpt8_fck",
576 .module_bit
= OMAP24XX_EN_GPT8_SHIFT
,
577 .module_offs
= CORE_MOD
,
579 .idlest_idle_bit
= OMAP24XX_ST_GPT8_SHIFT
,
582 .dev_attr
= &capability_alwon_dev_attr
,
583 .slaves
= omap2420_timer8_slaves
,
584 .slaves_cnt
= ARRAY_SIZE(omap2420_timer8_slaves
),
585 .class = &omap2xxx_timer_hwmod_class
,
589 static struct omap_hwmod omap2420_timer9_hwmod
;
591 /* l4_core -> timer9 */
592 static struct omap_hwmod_ocp_if omap2420_l4_core__timer9
= {
593 .master
= &omap2420_l4_core_hwmod
,
594 .slave
= &omap2420_timer9_hwmod
,
596 .addr
= omap2xxx_timer9_addrs
,
597 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
600 /* timer9 slave port */
601 static struct omap_hwmod_ocp_if
*omap2420_timer9_slaves
[] = {
602 &omap2420_l4_core__timer9
,
606 static struct omap_hwmod omap2420_timer9_hwmod
= {
608 .mpu_irqs
= omap2_timer9_mpu_irqs
,
609 .main_clk
= "gpt9_fck",
613 .module_bit
= OMAP24XX_EN_GPT9_SHIFT
,
614 .module_offs
= CORE_MOD
,
616 .idlest_idle_bit
= OMAP24XX_ST_GPT9_SHIFT
,
619 .dev_attr
= &capability_pwm_dev_attr
,
620 .slaves
= omap2420_timer9_slaves
,
621 .slaves_cnt
= ARRAY_SIZE(omap2420_timer9_slaves
),
622 .class = &omap2xxx_timer_hwmod_class
,
626 static struct omap_hwmod omap2420_timer10_hwmod
;
628 /* l4_core -> timer10 */
629 static struct omap_hwmod_ocp_if omap2420_l4_core__timer10
= {
630 .master
= &omap2420_l4_core_hwmod
,
631 .slave
= &omap2420_timer10_hwmod
,
633 .addr
= omap2_timer10_addrs
,
634 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
637 /* timer10 slave port */
638 static struct omap_hwmod_ocp_if
*omap2420_timer10_slaves
[] = {
639 &omap2420_l4_core__timer10
,
643 static struct omap_hwmod omap2420_timer10_hwmod
= {
645 .mpu_irqs
= omap2_timer10_mpu_irqs
,
646 .main_clk
= "gpt10_fck",
650 .module_bit
= OMAP24XX_EN_GPT10_SHIFT
,
651 .module_offs
= CORE_MOD
,
653 .idlest_idle_bit
= OMAP24XX_ST_GPT10_SHIFT
,
656 .dev_attr
= &capability_pwm_dev_attr
,
657 .slaves
= omap2420_timer10_slaves
,
658 .slaves_cnt
= ARRAY_SIZE(omap2420_timer10_slaves
),
659 .class = &omap2xxx_timer_hwmod_class
,
663 static struct omap_hwmod omap2420_timer11_hwmod
;
665 /* l4_core -> timer11 */
666 static struct omap_hwmod_ocp_if omap2420_l4_core__timer11
= {
667 .master
= &omap2420_l4_core_hwmod
,
668 .slave
= &omap2420_timer11_hwmod
,
670 .addr
= omap2_timer11_addrs
,
671 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
674 /* timer11 slave port */
675 static struct omap_hwmod_ocp_if
*omap2420_timer11_slaves
[] = {
676 &omap2420_l4_core__timer11
,
680 static struct omap_hwmod omap2420_timer11_hwmod
= {
682 .mpu_irqs
= omap2_timer11_mpu_irqs
,
683 .main_clk
= "gpt11_fck",
687 .module_bit
= OMAP24XX_EN_GPT11_SHIFT
,
688 .module_offs
= CORE_MOD
,
690 .idlest_idle_bit
= OMAP24XX_ST_GPT11_SHIFT
,
693 .dev_attr
= &capability_pwm_dev_attr
,
694 .slaves
= omap2420_timer11_slaves
,
695 .slaves_cnt
= ARRAY_SIZE(omap2420_timer11_slaves
),
696 .class = &omap2xxx_timer_hwmod_class
,
700 static struct omap_hwmod omap2420_timer12_hwmod
;
702 /* l4_core -> timer12 */
703 static struct omap_hwmod_ocp_if omap2420_l4_core__timer12
= {
704 .master
= &omap2420_l4_core_hwmod
,
705 .slave
= &omap2420_timer12_hwmod
,
707 .addr
= omap2xxx_timer12_addrs
,
708 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
711 /* timer12 slave port */
712 static struct omap_hwmod_ocp_if
*omap2420_timer12_slaves
[] = {
713 &omap2420_l4_core__timer12
,
717 static struct omap_hwmod omap2420_timer12_hwmod
= {
719 .mpu_irqs
= omap2xxx_timer12_mpu_irqs
,
720 .main_clk
= "gpt12_fck",
724 .module_bit
= OMAP24XX_EN_GPT12_SHIFT
,
725 .module_offs
= CORE_MOD
,
727 .idlest_idle_bit
= OMAP24XX_ST_GPT12_SHIFT
,
730 .dev_attr
= &capability_pwm_dev_attr
,
731 .slaves
= omap2420_timer12_slaves
,
732 .slaves_cnt
= ARRAY_SIZE(omap2420_timer12_slaves
),
733 .class = &omap2xxx_timer_hwmod_class
,
736 /* l4_wkup -> wd_timer2 */
737 static struct omap_hwmod_addr_space omap2420_wd_timer2_addrs
[] = {
739 .pa_start
= 0x48022000,
740 .pa_end
= 0x4802207f,
741 .flags
= ADDR_TYPE_RT
746 static struct omap_hwmod_ocp_if omap2420_l4_wkup__wd_timer2
= {
747 .master
= &omap2420_l4_wkup_hwmod
,
748 .slave
= &omap2420_wd_timer2_hwmod
,
749 .clk
= "mpu_wdt_ick",
750 .addr
= omap2420_wd_timer2_addrs
,
751 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
755 static struct omap_hwmod_ocp_if
*omap2420_wd_timer2_slaves
[] = {
756 &omap2420_l4_wkup__wd_timer2
,
759 static struct omap_hwmod omap2420_wd_timer2_hwmod
= {
761 .class = &omap2xxx_wd_timer_hwmod_class
,
762 .main_clk
= "mpu_wdt_fck",
766 .module_bit
= OMAP24XX_EN_MPU_WDT_SHIFT
,
767 .module_offs
= WKUP_MOD
,
769 .idlest_idle_bit
= OMAP24XX_ST_MPU_WDT_SHIFT
,
772 .slaves
= omap2420_wd_timer2_slaves
,
773 .slaves_cnt
= ARRAY_SIZE(omap2420_wd_timer2_slaves
),
778 static struct omap_hwmod_ocp_if
*omap2420_uart1_slaves
[] = {
779 &omap2_l4_core__uart1
,
782 static struct omap_hwmod omap2420_uart1_hwmod
= {
784 .mpu_irqs
= omap2_uart1_mpu_irqs
,
785 .sdma_reqs
= omap2_uart1_sdma_reqs
,
786 .main_clk
= "uart1_fck",
789 .module_offs
= CORE_MOD
,
791 .module_bit
= OMAP24XX_EN_UART1_SHIFT
,
793 .idlest_idle_bit
= OMAP24XX_EN_UART1_SHIFT
,
796 .slaves
= omap2420_uart1_slaves
,
797 .slaves_cnt
= ARRAY_SIZE(omap2420_uart1_slaves
),
798 .class = &omap2_uart_class
,
803 static struct omap_hwmod_ocp_if
*omap2420_uart2_slaves
[] = {
804 &omap2_l4_core__uart2
,
807 static struct omap_hwmod omap2420_uart2_hwmod
= {
809 .mpu_irqs
= omap2_uart2_mpu_irqs
,
810 .sdma_reqs
= omap2_uart2_sdma_reqs
,
811 .main_clk
= "uart2_fck",
814 .module_offs
= CORE_MOD
,
816 .module_bit
= OMAP24XX_EN_UART2_SHIFT
,
818 .idlest_idle_bit
= OMAP24XX_EN_UART2_SHIFT
,
821 .slaves
= omap2420_uart2_slaves
,
822 .slaves_cnt
= ARRAY_SIZE(omap2420_uart2_slaves
),
823 .class = &omap2_uart_class
,
828 static struct omap_hwmod_ocp_if
*omap2420_uart3_slaves
[] = {
829 &omap2_l4_core__uart3
,
832 static struct omap_hwmod omap2420_uart3_hwmod
= {
834 .mpu_irqs
= omap2_uart3_mpu_irqs
,
835 .sdma_reqs
= omap2_uart3_sdma_reqs
,
836 .main_clk
= "uart3_fck",
839 .module_offs
= CORE_MOD
,
841 .module_bit
= OMAP24XX_EN_UART3_SHIFT
,
843 .idlest_idle_bit
= OMAP24XX_EN_UART3_SHIFT
,
846 .slaves
= omap2420_uart3_slaves
,
847 .slaves_cnt
= ARRAY_SIZE(omap2420_uart3_slaves
),
848 .class = &omap2_uart_class
,
852 /* dss master ports */
853 static struct omap_hwmod_ocp_if
*omap2420_dss_masters
[] = {
858 static struct omap_hwmod_ocp_if omap2420_l4_core__dss
= {
859 .master
= &omap2420_l4_core_hwmod
,
860 .slave
= &omap2420_dss_core_hwmod
,
862 .addr
= omap2_dss_addrs
,
865 .l4_fw_region
= OMAP2420_L4_CORE_FW_DSS_CORE_REGION
,
866 .flags
= OMAP_FIREWALL_L4
,
869 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
872 /* dss slave ports */
873 static struct omap_hwmod_ocp_if
*omap2420_dss_slaves
[] = {
874 &omap2420_l4_core__dss
,
877 static struct omap_hwmod_opt_clk dss_opt_clks
[] = {
878 { .role
= "tv_clk", .clk
= "dss_54m_fck" },
879 { .role
= "sys_clk", .clk
= "dss2_fck" },
882 static struct omap_hwmod omap2420_dss_core_hwmod
= {
884 .class = &omap2_dss_hwmod_class
,
885 .main_clk
= "dss1_fck", /* instead of dss_fck */
886 .sdma_reqs
= omap2xxx_dss_sdma_chs
,
890 .module_bit
= OMAP24XX_EN_DSS1_SHIFT
,
891 .module_offs
= CORE_MOD
,
893 .idlest_stdby_bit
= OMAP24XX_ST_DSS_SHIFT
,
896 .opt_clks
= dss_opt_clks
,
897 .opt_clks_cnt
= ARRAY_SIZE(dss_opt_clks
),
898 .slaves
= omap2420_dss_slaves
,
899 .slaves_cnt
= ARRAY_SIZE(omap2420_dss_slaves
),
900 .masters
= omap2420_dss_masters
,
901 .masters_cnt
= ARRAY_SIZE(omap2420_dss_masters
),
902 .flags
= HWMOD_NO_IDLEST
,
905 /* l4_core -> dss_dispc */
906 static struct omap_hwmod_ocp_if omap2420_l4_core__dss_dispc
= {
907 .master
= &omap2420_l4_core_hwmod
,
908 .slave
= &omap2420_dss_dispc_hwmod
,
910 .addr
= omap2_dss_dispc_addrs
,
913 .l4_fw_region
= OMAP2420_L4_CORE_FW_DSS_DISPC_REGION
,
914 .flags
= OMAP_FIREWALL_L4
,
917 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
920 /* dss_dispc slave ports */
921 static struct omap_hwmod_ocp_if
*omap2420_dss_dispc_slaves
[] = {
922 &omap2420_l4_core__dss_dispc
,
925 static struct omap_hwmod omap2420_dss_dispc_hwmod
= {
927 .class = &omap2_dispc_hwmod_class
,
928 .mpu_irqs
= omap2_dispc_irqs
,
929 .main_clk
= "dss1_fck",
933 .module_bit
= OMAP24XX_EN_DSS1_SHIFT
,
934 .module_offs
= CORE_MOD
,
936 .idlest_stdby_bit
= OMAP24XX_ST_DSS_SHIFT
,
939 .slaves
= omap2420_dss_dispc_slaves
,
940 .slaves_cnt
= ARRAY_SIZE(omap2420_dss_dispc_slaves
),
941 .flags
= HWMOD_NO_IDLEST
,
944 /* l4_core -> dss_rfbi */
945 static struct omap_hwmod_ocp_if omap2420_l4_core__dss_rfbi
= {
946 .master
= &omap2420_l4_core_hwmod
,
947 .slave
= &omap2420_dss_rfbi_hwmod
,
949 .addr
= omap2_dss_rfbi_addrs
,
952 .l4_fw_region
= OMAP2420_L4_CORE_FW_DSS_CORE_REGION
,
953 .flags
= OMAP_FIREWALL_L4
,
956 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
959 /* dss_rfbi slave ports */
960 static struct omap_hwmod_ocp_if
*omap2420_dss_rfbi_slaves
[] = {
961 &omap2420_l4_core__dss_rfbi
,
964 static struct omap_hwmod omap2420_dss_rfbi_hwmod
= {
966 .class = &omap2_rfbi_hwmod_class
,
967 .main_clk
= "dss1_fck",
971 .module_bit
= OMAP24XX_EN_DSS1_SHIFT
,
972 .module_offs
= CORE_MOD
,
975 .slaves
= omap2420_dss_rfbi_slaves
,
976 .slaves_cnt
= ARRAY_SIZE(omap2420_dss_rfbi_slaves
),
977 .flags
= HWMOD_NO_IDLEST
,
980 /* l4_core -> dss_venc */
981 static struct omap_hwmod_ocp_if omap2420_l4_core__dss_venc
= {
982 .master
= &omap2420_l4_core_hwmod
,
983 .slave
= &omap2420_dss_venc_hwmod
,
984 .clk
= "dss_54m_fck",
985 .addr
= omap2_dss_venc_addrs
,
988 .l4_fw_region
= OMAP2420_L4_CORE_FW_DSS_VENC_REGION
,
989 .flags
= OMAP_FIREWALL_L4
,
992 .flags
= OCPIF_SWSUP_IDLE
,
993 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
996 /* dss_venc slave ports */
997 static struct omap_hwmod_ocp_if
*omap2420_dss_venc_slaves
[] = {
998 &omap2420_l4_core__dss_venc
,
1001 static struct omap_hwmod omap2420_dss_venc_hwmod
= {
1003 .class = &omap2_venc_hwmod_class
,
1004 .main_clk
= "dss1_fck",
1008 .module_bit
= OMAP24XX_EN_DSS1_SHIFT
,
1009 .module_offs
= CORE_MOD
,
1012 .slaves
= omap2420_dss_venc_slaves
,
1013 .slaves_cnt
= ARRAY_SIZE(omap2420_dss_venc_slaves
),
1014 .flags
= HWMOD_NO_IDLEST
,
1018 static struct omap_hwmod_class_sysconfig i2c_sysc
= {
1022 .sysc_flags
= (SYSC_HAS_SOFTRESET
| SYSS_HAS_RESET_STATUS
),
1023 .sysc_fields
= &omap_hwmod_sysc_type1
,
1026 static struct omap_hwmod_class i2c_class
= {
1029 .rev
= OMAP_I2C_IP_VERSION_1
,
1030 .reset
= &omap_i2c_reset
,
1033 static struct omap_i2c_dev_attr i2c_dev_attr
= {
1034 .flags
= OMAP_I2C_FLAG_NO_FIFO
|
1035 OMAP_I2C_FLAG_SIMPLE_CLOCK
|
1036 OMAP_I2C_FLAG_16BIT_DATA_REG
|
1037 OMAP_I2C_FLAG_BUS_SHIFT_2
,
1042 static struct omap_hwmod_ocp_if
*omap2420_i2c1_slaves
[] = {
1043 &omap2420_l4_core__i2c1
,
1046 static struct omap_hwmod omap2420_i2c1_hwmod
= {
1048 .mpu_irqs
= omap2_i2c1_mpu_irqs
,
1049 .sdma_reqs
= omap2_i2c1_sdma_reqs
,
1050 .main_clk
= "i2c1_fck",
1053 .module_offs
= CORE_MOD
,
1055 .module_bit
= OMAP2420_EN_I2C1_SHIFT
,
1057 .idlest_idle_bit
= OMAP2420_ST_I2C1_SHIFT
,
1060 .slaves
= omap2420_i2c1_slaves
,
1061 .slaves_cnt
= ARRAY_SIZE(omap2420_i2c1_slaves
),
1062 .class = &i2c_class
,
1063 .dev_attr
= &i2c_dev_attr
,
1064 .flags
= HWMOD_16BIT_REG
,
1069 static struct omap_hwmod_ocp_if
*omap2420_i2c2_slaves
[] = {
1070 &omap2420_l4_core__i2c2
,
1073 static struct omap_hwmod omap2420_i2c2_hwmod
= {
1075 .mpu_irqs
= omap2_i2c2_mpu_irqs
,
1076 .sdma_reqs
= omap2_i2c2_sdma_reqs
,
1077 .main_clk
= "i2c2_fck",
1080 .module_offs
= CORE_MOD
,
1082 .module_bit
= OMAP2420_EN_I2C2_SHIFT
,
1084 .idlest_idle_bit
= OMAP2420_ST_I2C2_SHIFT
,
1087 .slaves
= omap2420_i2c2_slaves
,
1088 .slaves_cnt
= ARRAY_SIZE(omap2420_i2c2_slaves
),
1089 .class = &i2c_class
,
1090 .dev_attr
= &i2c_dev_attr
,
1091 .flags
= HWMOD_16BIT_REG
,
1094 /* l4_wkup -> gpio1 */
1095 static struct omap_hwmod_addr_space omap2420_gpio1_addr_space
[] = {
1097 .pa_start
= 0x48018000,
1098 .pa_end
= 0x480181ff,
1099 .flags
= ADDR_TYPE_RT
1104 static struct omap_hwmod_ocp_if omap2420_l4_wkup__gpio1
= {
1105 .master
= &omap2420_l4_wkup_hwmod
,
1106 .slave
= &omap2420_gpio1_hwmod
,
1108 .addr
= omap2420_gpio1_addr_space
,
1109 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
1112 /* l4_wkup -> gpio2 */
1113 static struct omap_hwmod_addr_space omap2420_gpio2_addr_space
[] = {
1115 .pa_start
= 0x4801a000,
1116 .pa_end
= 0x4801a1ff,
1117 .flags
= ADDR_TYPE_RT
1122 static struct omap_hwmod_ocp_if omap2420_l4_wkup__gpio2
= {
1123 .master
= &omap2420_l4_wkup_hwmod
,
1124 .slave
= &omap2420_gpio2_hwmod
,
1126 .addr
= omap2420_gpio2_addr_space
,
1127 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
1130 /* l4_wkup -> gpio3 */
1131 static struct omap_hwmod_addr_space omap2420_gpio3_addr_space
[] = {
1133 .pa_start
= 0x4801c000,
1134 .pa_end
= 0x4801c1ff,
1135 .flags
= ADDR_TYPE_RT
1140 static struct omap_hwmod_ocp_if omap2420_l4_wkup__gpio3
= {
1141 .master
= &omap2420_l4_wkup_hwmod
,
1142 .slave
= &omap2420_gpio3_hwmod
,
1144 .addr
= omap2420_gpio3_addr_space
,
1145 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
1148 /* l4_wkup -> gpio4 */
1149 static struct omap_hwmod_addr_space omap2420_gpio4_addr_space
[] = {
1151 .pa_start
= 0x4801e000,
1152 .pa_end
= 0x4801e1ff,
1153 .flags
= ADDR_TYPE_RT
1158 static struct omap_hwmod_ocp_if omap2420_l4_wkup__gpio4
= {
1159 .master
= &omap2420_l4_wkup_hwmod
,
1160 .slave
= &omap2420_gpio4_hwmod
,
1162 .addr
= omap2420_gpio4_addr_space
,
1163 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
1167 static struct omap_gpio_dev_attr gpio_dev_attr
= {
1173 static struct omap_hwmod_ocp_if
*omap2420_gpio1_slaves
[] = {
1174 &omap2420_l4_wkup__gpio1
,
1177 static struct omap_hwmod omap2420_gpio1_hwmod
= {
1179 .flags
= HWMOD_CONTROL_OPT_CLKS_IN_RESET
,
1180 .mpu_irqs
= omap2_gpio1_irqs
,
1181 .main_clk
= "gpios_fck",
1185 .module_bit
= OMAP24XX_EN_GPIOS_SHIFT
,
1186 .module_offs
= WKUP_MOD
,
1188 .idlest_idle_bit
= OMAP24XX_ST_GPIOS_SHIFT
,
1191 .slaves
= omap2420_gpio1_slaves
,
1192 .slaves_cnt
= ARRAY_SIZE(omap2420_gpio1_slaves
),
1193 .class = &omap2xxx_gpio_hwmod_class
,
1194 .dev_attr
= &gpio_dev_attr
,
1198 static struct omap_hwmod_ocp_if
*omap2420_gpio2_slaves
[] = {
1199 &omap2420_l4_wkup__gpio2
,
1202 static struct omap_hwmod omap2420_gpio2_hwmod
= {
1204 .flags
= HWMOD_CONTROL_OPT_CLKS_IN_RESET
,
1205 .mpu_irqs
= omap2_gpio2_irqs
,
1206 .main_clk
= "gpios_fck",
1210 .module_bit
= OMAP24XX_EN_GPIOS_SHIFT
,
1211 .module_offs
= WKUP_MOD
,
1213 .idlest_idle_bit
= OMAP24XX_ST_GPIOS_SHIFT
,
1216 .slaves
= omap2420_gpio2_slaves
,
1217 .slaves_cnt
= ARRAY_SIZE(omap2420_gpio2_slaves
),
1218 .class = &omap2xxx_gpio_hwmod_class
,
1219 .dev_attr
= &gpio_dev_attr
,
1223 static struct omap_hwmod_ocp_if
*omap2420_gpio3_slaves
[] = {
1224 &omap2420_l4_wkup__gpio3
,
1227 static struct omap_hwmod omap2420_gpio3_hwmod
= {
1229 .flags
= HWMOD_CONTROL_OPT_CLKS_IN_RESET
,
1230 .mpu_irqs
= omap2_gpio3_irqs
,
1231 .main_clk
= "gpios_fck",
1235 .module_bit
= OMAP24XX_EN_GPIOS_SHIFT
,
1236 .module_offs
= WKUP_MOD
,
1238 .idlest_idle_bit
= OMAP24XX_ST_GPIOS_SHIFT
,
1241 .slaves
= omap2420_gpio3_slaves
,
1242 .slaves_cnt
= ARRAY_SIZE(omap2420_gpio3_slaves
),
1243 .class = &omap2xxx_gpio_hwmod_class
,
1244 .dev_attr
= &gpio_dev_attr
,
1248 static struct omap_hwmod_ocp_if
*omap2420_gpio4_slaves
[] = {
1249 &omap2420_l4_wkup__gpio4
,
1252 static struct omap_hwmod omap2420_gpio4_hwmod
= {
1254 .flags
= HWMOD_CONTROL_OPT_CLKS_IN_RESET
,
1255 .mpu_irqs
= omap2_gpio4_irqs
,
1256 .main_clk
= "gpios_fck",
1260 .module_bit
= OMAP24XX_EN_GPIOS_SHIFT
,
1261 .module_offs
= WKUP_MOD
,
1263 .idlest_idle_bit
= OMAP24XX_ST_GPIOS_SHIFT
,
1266 .slaves
= omap2420_gpio4_slaves
,
1267 .slaves_cnt
= ARRAY_SIZE(omap2420_gpio4_slaves
),
1268 .class = &omap2xxx_gpio_hwmod_class
,
1269 .dev_attr
= &gpio_dev_attr
,
1272 /* dma attributes */
1273 static struct omap_dma_dev_attr dma_dev_attr
= {
1274 .dev_caps
= RESERVE_CHANNEL
| DMA_LINKED_LCH
| GLOBAL_PRIORITY
|
1275 IS_CSSA_32
| IS_CDSA_32
,
1279 /* dma_system -> L3 */
1280 static struct omap_hwmod_ocp_if omap2420_dma_system__l3
= {
1281 .master
= &omap2420_dma_system_hwmod
,
1282 .slave
= &omap2420_l3_main_hwmod
,
1283 .clk
= "core_l3_ck",
1284 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
1287 /* dma_system master ports */
1288 static struct omap_hwmod_ocp_if
*omap2420_dma_system_masters
[] = {
1289 &omap2420_dma_system__l3
,
1292 /* l4_core -> dma_system */
1293 static struct omap_hwmod_ocp_if omap2420_l4_core__dma_system
= {
1294 .master
= &omap2420_l4_core_hwmod
,
1295 .slave
= &omap2420_dma_system_hwmod
,
1297 .addr
= omap2_dma_system_addrs
,
1298 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
1301 /* dma_system slave ports */
1302 static struct omap_hwmod_ocp_if
*omap2420_dma_system_slaves
[] = {
1303 &omap2420_l4_core__dma_system
,
1306 static struct omap_hwmod omap2420_dma_system_hwmod
= {
1308 .class = &omap2xxx_dma_hwmod_class
,
1309 .mpu_irqs
= omap2_dma_system_irqs
,
1310 .main_clk
= "core_l3_ck",
1311 .slaves
= omap2420_dma_system_slaves
,
1312 .slaves_cnt
= ARRAY_SIZE(omap2420_dma_system_slaves
),
1313 .masters
= omap2420_dma_system_masters
,
1314 .masters_cnt
= ARRAY_SIZE(omap2420_dma_system_masters
),
1315 .dev_attr
= &dma_dev_attr
,
1316 .flags
= HWMOD_NO_IDLEST
,
1320 static struct omap_hwmod omap2420_mailbox_hwmod
;
1321 static struct omap_hwmod_irq_info omap2420_mailbox_irqs
[] = {
1322 { .name
= "dsp", .irq
= 26 },
1323 { .name
= "iva", .irq
= 34 },
1327 /* l4_core -> mailbox */
1328 static struct omap_hwmod_ocp_if omap2420_l4_core__mailbox
= {
1329 .master
= &omap2420_l4_core_hwmod
,
1330 .slave
= &omap2420_mailbox_hwmod
,
1331 .addr
= omap2_mailbox_addrs
,
1332 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
1335 /* mailbox slave ports */
1336 static struct omap_hwmod_ocp_if
*omap2420_mailbox_slaves
[] = {
1337 &omap2420_l4_core__mailbox
,
1340 static struct omap_hwmod omap2420_mailbox_hwmod
= {
1342 .class = &omap2xxx_mailbox_hwmod_class
,
1343 .mpu_irqs
= omap2420_mailbox_irqs
,
1344 .main_clk
= "mailboxes_ick",
1348 .module_bit
= OMAP24XX_EN_MAILBOXES_SHIFT
,
1349 .module_offs
= CORE_MOD
,
1351 .idlest_idle_bit
= OMAP24XX_ST_MAILBOXES_SHIFT
,
1354 .slaves
= omap2420_mailbox_slaves
,
1355 .slaves_cnt
= ARRAY_SIZE(omap2420_mailbox_slaves
),
1359 static struct omap_hwmod_ocp_if
*omap2420_mcspi1_slaves
[] = {
1360 &omap2420_l4_core__mcspi1
,
1363 static struct omap2_mcspi_dev_attr omap_mcspi1_dev_attr
= {
1364 .num_chipselect
= 4,
1367 static struct omap_hwmod omap2420_mcspi1_hwmod
= {
1368 .name
= "mcspi1_hwmod",
1369 .mpu_irqs
= omap2_mcspi1_mpu_irqs
,
1370 .sdma_reqs
= omap2_mcspi1_sdma_reqs
,
1371 .main_clk
= "mcspi1_fck",
1374 .module_offs
= CORE_MOD
,
1376 .module_bit
= OMAP24XX_EN_MCSPI1_SHIFT
,
1378 .idlest_idle_bit
= OMAP24XX_ST_MCSPI1_SHIFT
,
1381 .slaves
= omap2420_mcspi1_slaves
,
1382 .slaves_cnt
= ARRAY_SIZE(omap2420_mcspi1_slaves
),
1383 .class = &omap2xxx_mcspi_class
,
1384 .dev_attr
= &omap_mcspi1_dev_attr
,
1388 static struct omap_hwmod_ocp_if
*omap2420_mcspi2_slaves
[] = {
1389 &omap2420_l4_core__mcspi2
,
1392 static struct omap2_mcspi_dev_attr omap_mcspi2_dev_attr
= {
1393 .num_chipselect
= 2,
1396 static struct omap_hwmod omap2420_mcspi2_hwmod
= {
1397 .name
= "mcspi2_hwmod",
1398 .mpu_irqs
= omap2_mcspi2_mpu_irqs
,
1399 .sdma_reqs
= omap2_mcspi2_sdma_reqs
,
1400 .main_clk
= "mcspi2_fck",
1403 .module_offs
= CORE_MOD
,
1405 .module_bit
= OMAP24XX_EN_MCSPI2_SHIFT
,
1407 .idlest_idle_bit
= OMAP24XX_ST_MCSPI2_SHIFT
,
1410 .slaves
= omap2420_mcspi2_slaves
,
1411 .slaves_cnt
= ARRAY_SIZE(omap2420_mcspi2_slaves
),
1412 .class = &omap2xxx_mcspi_class
,
1413 .dev_attr
= &omap_mcspi2_dev_attr
,
1418 * multi channel buffered serial port controller
1421 static struct omap_hwmod_class omap2420_mcbsp_hwmod_class
= {
1426 static struct omap_hwmod_irq_info omap2420_mcbsp1_irqs
[] = {
1427 { .name
= "tx", .irq
= 59 },
1428 { .name
= "rx", .irq
= 60 },
1432 /* l4_core -> mcbsp1 */
1433 static struct omap_hwmod_ocp_if omap2420_l4_core__mcbsp1
= {
1434 .master
= &omap2420_l4_core_hwmod
,
1435 .slave
= &omap2420_mcbsp1_hwmod
,
1436 .clk
= "mcbsp1_ick",
1437 .addr
= omap2_mcbsp1_addrs
,
1438 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
1441 /* mcbsp1 slave ports */
1442 static struct omap_hwmod_ocp_if
*omap2420_mcbsp1_slaves
[] = {
1443 &omap2420_l4_core__mcbsp1
,
1446 static struct omap_hwmod omap2420_mcbsp1_hwmod
= {
1448 .class = &omap2420_mcbsp_hwmod_class
,
1449 .mpu_irqs
= omap2420_mcbsp1_irqs
,
1450 .sdma_reqs
= omap2_mcbsp1_sdma_reqs
,
1451 .main_clk
= "mcbsp1_fck",
1455 .module_bit
= OMAP24XX_EN_MCBSP1_SHIFT
,
1456 .module_offs
= CORE_MOD
,
1458 .idlest_idle_bit
= OMAP24XX_ST_MCBSP1_SHIFT
,
1461 .slaves
= omap2420_mcbsp1_slaves
,
1462 .slaves_cnt
= ARRAY_SIZE(omap2420_mcbsp1_slaves
),
1466 static struct omap_hwmod_irq_info omap2420_mcbsp2_irqs
[] = {
1467 { .name
= "tx", .irq
= 62 },
1468 { .name
= "rx", .irq
= 63 },
1472 /* l4_core -> mcbsp2 */
1473 static struct omap_hwmod_ocp_if omap2420_l4_core__mcbsp2
= {
1474 .master
= &omap2420_l4_core_hwmod
,
1475 .slave
= &omap2420_mcbsp2_hwmod
,
1476 .clk
= "mcbsp2_ick",
1477 .addr
= omap2xxx_mcbsp2_addrs
,
1478 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
1481 /* mcbsp2 slave ports */
1482 static struct omap_hwmod_ocp_if
*omap2420_mcbsp2_slaves
[] = {
1483 &omap2420_l4_core__mcbsp2
,
1486 static struct omap_hwmod omap2420_mcbsp2_hwmod
= {
1488 .class = &omap2420_mcbsp_hwmod_class
,
1489 .mpu_irqs
= omap2420_mcbsp2_irqs
,
1490 .sdma_reqs
= omap2_mcbsp2_sdma_reqs
,
1491 .main_clk
= "mcbsp2_fck",
1495 .module_bit
= OMAP24XX_EN_MCBSP2_SHIFT
,
1496 .module_offs
= CORE_MOD
,
1498 .idlest_idle_bit
= OMAP24XX_ST_MCBSP2_SHIFT
,
1501 .slaves
= omap2420_mcbsp2_slaves
,
1502 .slaves_cnt
= ARRAY_SIZE(omap2420_mcbsp2_slaves
),
1505 static __initdata
struct omap_hwmod
*omap2420_hwmods
[] = {
1506 &omap2420_l3_main_hwmod
,
1507 &omap2420_l4_core_hwmod
,
1508 &omap2420_l4_wkup_hwmod
,
1509 &omap2420_mpu_hwmod
,
1510 &omap2420_iva_hwmod
,
1512 &omap2420_timer1_hwmod
,
1513 &omap2420_timer2_hwmod
,
1514 &omap2420_timer3_hwmod
,
1515 &omap2420_timer4_hwmod
,
1516 &omap2420_timer5_hwmod
,
1517 &omap2420_timer6_hwmod
,
1518 &omap2420_timer7_hwmod
,
1519 &omap2420_timer8_hwmod
,
1520 &omap2420_timer9_hwmod
,
1521 &omap2420_timer10_hwmod
,
1522 &omap2420_timer11_hwmod
,
1523 &omap2420_timer12_hwmod
,
1525 &omap2420_wd_timer2_hwmod
,
1526 &omap2420_uart1_hwmod
,
1527 &omap2420_uart2_hwmod
,
1528 &omap2420_uart3_hwmod
,
1530 &omap2420_dss_core_hwmod
,
1531 &omap2420_dss_dispc_hwmod
,
1532 &omap2420_dss_rfbi_hwmod
,
1533 &omap2420_dss_venc_hwmod
,
1535 &omap2420_i2c1_hwmod
,
1536 &omap2420_i2c2_hwmod
,
1539 &omap2420_gpio1_hwmod
,
1540 &omap2420_gpio2_hwmod
,
1541 &omap2420_gpio3_hwmod
,
1542 &omap2420_gpio4_hwmod
,
1544 /* dma_system class*/
1545 &omap2420_dma_system_hwmod
,
1548 &omap2420_mailbox_hwmod
,
1551 &omap2420_mcbsp1_hwmod
,
1552 &omap2420_mcbsp2_hwmod
,
1555 &omap2420_mcspi1_hwmod
,
1556 &omap2420_mcspi2_hwmod
,
1560 int __init
omap2420_hwmod_init(void)
1562 return omap_hwmod_register(omap2420_hwmods
);