3 * Copyright (C) 2013 Texas Instruments Incorporated
5 * Interconnects common for AM335x and AM43x
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License as
9 * published by the Free Software Foundation version 2.
11 * This program is distributed "as is" WITHOUT ANY WARRANTY of any
12 * kind, whether express or implied; without even the implied warranty
13 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
17 #include <linux/sizes.h>
18 #include "omap_hwmod.h"
19 #include "omap_hwmod_33xx_43xx_common_data.h"
22 struct omap_hwmod_ocp_if am33xx_mpu__l3_main
= {
23 .master
= &am33xx_mpu_hwmod
,
24 .slave
= &am33xx_l3_main_hwmod
,
25 .clk
= "dpll_mpu_m2_ck",
30 struct omap_hwmod_ocp_if am33xx_l3_main__l3_s
= {
31 .master
= &am33xx_l3_main_hwmod
,
32 .slave
= &am33xx_l3_s_hwmod
,
34 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
37 /* l3 s -> l4 per/ls */
38 struct omap_hwmod_ocp_if am33xx_l3_s__l4_ls
= {
39 .master
= &am33xx_l3_s_hwmod
,
40 .slave
= &am33xx_l4_ls_hwmod
,
42 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
46 struct omap_hwmod_ocp_if am33xx_l3_s__l4_wkup
= {
47 .master
= &am33xx_l3_s_hwmod
,
48 .slave
= &am33xx_l4_wkup_hwmod
,
50 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
53 /* l3 main -> l3 instr */
54 struct omap_hwmod_ocp_if am33xx_l3_main__l3_instr
= {
55 .master
= &am33xx_l3_main_hwmod
,
56 .slave
= &am33xx_l3_instr_hwmod
,
58 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
62 struct omap_hwmod_ocp_if am33xx_mpu__prcm
= {
63 .master
= &am33xx_mpu_hwmod
,
64 .slave
= &am33xx_prcm_hwmod
,
65 .clk
= "dpll_mpu_m2_ck",
66 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
70 struct omap_hwmod_ocp_if am33xx_l3_s__l3_main
= {
71 .master
= &am33xx_l3_s_hwmod
,
72 .slave
= &am33xx_l3_main_hwmod
,
74 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
77 /* pru-icss -> l3 main */
78 struct omap_hwmod_ocp_if am33xx_pruss__l3_main
= {
79 .master
= &am33xx_pruss_hwmod
,
80 .slave
= &am33xx_l3_main_hwmod
,
82 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
86 struct omap_hwmod_ocp_if am33xx_gfx__l3_main
= {
87 .master
= &am33xx_gfx_hwmod
,
88 .slave
= &am33xx_l3_main_hwmod
,
89 .clk
= "dpll_core_m4_ck",
90 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
94 struct omap_hwmod_ocp_if am33xx_l3_main__gfx
= {
95 .master
= &am33xx_l3_main_hwmod
,
96 .slave
= &am33xx_gfx_hwmod
,
97 .clk
= "dpll_core_m4_ck",
98 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
102 struct omap_hwmod_ocp_if am33xx_l4_wkup__rtc
= {
103 .master
= &am33xx_l4_wkup_hwmod
,
104 .slave
= &am33xx_rtc_hwmod
,
105 .clk
= "clkdiv32k_ick",
106 .user
= OCP_USER_MPU
,
109 /* l4 per/ls -> DCAN0 */
110 struct omap_hwmod_ocp_if am33xx_l4_per__dcan0
= {
111 .master
= &am33xx_l4_ls_hwmod
,
112 .slave
= &am33xx_dcan0_hwmod
,
114 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
117 /* l4 per/ls -> DCAN1 */
118 struct omap_hwmod_ocp_if am33xx_l4_per__dcan1
= {
119 .master
= &am33xx_l4_ls_hwmod
,
120 .slave
= &am33xx_dcan1_hwmod
,
122 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
125 /* l4 per/ls -> GPIO2 */
126 struct omap_hwmod_ocp_if am33xx_l4_per__gpio1
= {
127 .master
= &am33xx_l4_ls_hwmod
,
128 .slave
= &am33xx_gpio1_hwmod
,
130 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
133 /* l4 per/ls -> gpio3 */
134 struct omap_hwmod_ocp_if am33xx_l4_per__gpio2
= {
135 .master
= &am33xx_l4_ls_hwmod
,
136 .slave
= &am33xx_gpio2_hwmod
,
138 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
141 /* l4 per/ls -> gpio4 */
142 struct omap_hwmod_ocp_if am33xx_l4_per__gpio3
= {
143 .master
= &am33xx_l4_ls_hwmod
,
144 .slave
= &am33xx_gpio3_hwmod
,
146 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
149 struct omap_hwmod_ocp_if am33xx_cpgmac0__mdio
= {
150 .master
= &am33xx_cpgmac0_hwmod
,
151 .slave
= &am33xx_mdio_hwmod
,
152 .user
= OCP_USER_MPU
,
155 struct omap_hwmod_ocp_if am33xx_l4_ls__elm
= {
156 .master
= &am33xx_l4_ls_hwmod
,
157 .slave
= &am33xx_elm_hwmod
,
159 .user
= OCP_USER_MPU
,
162 static struct omap_hwmod_addr_space am33xx_epwmss0_addr_space
[] = {
164 .pa_start
= 0x48300000,
165 .pa_end
= 0x48300000 + SZ_16
- 1,
166 .flags
= ADDR_TYPE_RT
171 struct omap_hwmod_ocp_if am33xx_l4_ls__epwmss0
= {
172 .master
= &am33xx_l4_ls_hwmod
,
173 .slave
= &am33xx_epwmss0_hwmod
,
175 .addr
= am33xx_epwmss0_addr_space
,
176 .user
= OCP_USER_MPU
,
179 struct omap_hwmod_ocp_if am33xx_epwmss0__ecap0
= {
180 .master
= &am33xx_epwmss0_hwmod
,
181 .slave
= &am33xx_ecap0_hwmod
,
183 .user
= OCP_USER_MPU
,
186 struct omap_hwmod_ocp_if am33xx_epwmss0__eqep0
= {
187 .master
= &am33xx_epwmss0_hwmod
,
188 .slave
= &am33xx_eqep0_hwmod
,
190 .user
= OCP_USER_MPU
,
193 struct omap_hwmod_ocp_if am33xx_epwmss0__ehrpwm0
= {
194 .master
= &am33xx_epwmss0_hwmod
,
195 .slave
= &am33xx_ehrpwm0_hwmod
,
197 .user
= OCP_USER_MPU
,
201 static struct omap_hwmod_addr_space am33xx_epwmss1_addr_space
[] = {
203 .pa_start
= 0x48302000,
204 .pa_end
= 0x48302000 + SZ_16
- 1,
205 .flags
= ADDR_TYPE_RT
210 struct omap_hwmod_ocp_if am33xx_l4_ls__epwmss1
= {
211 .master
= &am33xx_l4_ls_hwmod
,
212 .slave
= &am33xx_epwmss1_hwmod
,
214 .addr
= am33xx_epwmss1_addr_space
,
215 .user
= OCP_USER_MPU
,
218 struct omap_hwmod_ocp_if am33xx_epwmss1__ecap1
= {
219 .master
= &am33xx_epwmss1_hwmod
,
220 .slave
= &am33xx_ecap1_hwmod
,
222 .user
= OCP_USER_MPU
,
225 struct omap_hwmod_ocp_if am33xx_epwmss1__eqep1
= {
226 .master
= &am33xx_epwmss1_hwmod
,
227 .slave
= &am33xx_eqep1_hwmod
,
229 .user
= OCP_USER_MPU
,
232 struct omap_hwmod_ocp_if am33xx_epwmss1__ehrpwm1
= {
233 .master
= &am33xx_epwmss1_hwmod
,
234 .slave
= &am33xx_ehrpwm1_hwmod
,
236 .user
= OCP_USER_MPU
,
239 static struct omap_hwmod_addr_space am33xx_epwmss2_addr_space
[] = {
241 .pa_start
= 0x48304000,
242 .pa_end
= 0x48304000 + SZ_16
- 1,
243 .flags
= ADDR_TYPE_RT
248 struct omap_hwmod_ocp_if am33xx_l4_ls__epwmss2
= {
249 .master
= &am33xx_l4_ls_hwmod
,
250 .slave
= &am33xx_epwmss2_hwmod
,
252 .addr
= am33xx_epwmss2_addr_space
,
253 .user
= OCP_USER_MPU
,
256 struct omap_hwmod_ocp_if am33xx_epwmss2__ecap2
= {
257 .master
= &am33xx_epwmss2_hwmod
,
258 .slave
= &am33xx_ecap2_hwmod
,
260 .user
= OCP_USER_MPU
,
263 struct omap_hwmod_ocp_if am33xx_epwmss2__eqep2
= {
264 .master
= &am33xx_epwmss2_hwmod
,
265 .slave
= &am33xx_eqep2_hwmod
,
267 .user
= OCP_USER_MPU
,
270 struct omap_hwmod_ocp_if am33xx_epwmss2__ehrpwm2
= {
271 .master
= &am33xx_epwmss2_hwmod
,
272 .slave
= &am33xx_ehrpwm2_hwmod
,
274 .user
= OCP_USER_MPU
,
277 /* l3s cfg -> gpmc */
278 struct omap_hwmod_ocp_if am33xx_l3_s__gpmc
= {
279 .master
= &am33xx_l3_s_hwmod
,
280 .slave
= &am33xx_gpmc_hwmod
,
282 .user
= OCP_USER_MPU
,
286 struct omap_hwmod_ocp_if am33xx_l4_per__i2c2
= {
287 .master
= &am33xx_l4_ls_hwmod
,
288 .slave
= &am33xx_i2c2_hwmod
,
290 .user
= OCP_USER_MPU
,
293 struct omap_hwmod_ocp_if am33xx_l4_per__i2c3
= {
294 .master
= &am33xx_l4_ls_hwmod
,
295 .slave
= &am33xx_i2c3_hwmod
,
297 .user
= OCP_USER_MPU
,
300 /* l4 ls -> mailbox */
301 struct omap_hwmod_ocp_if am33xx_l4_per__mailbox
= {
302 .master
= &am33xx_l4_ls_hwmod
,
303 .slave
= &am33xx_mailbox_hwmod
,
305 .user
= OCP_USER_MPU
,
308 /* l4 ls -> spinlock */
309 struct omap_hwmod_ocp_if am33xx_l4_ls__spinlock
= {
310 .master
= &am33xx_l4_ls_hwmod
,
311 .slave
= &am33xx_spinlock_hwmod
,
313 .user
= OCP_USER_MPU
,
316 /* l4 ls -> mcasp0 */
317 static struct omap_hwmod_addr_space am33xx_mcasp0_addr_space
[] = {
319 .pa_start
= 0x48038000,
320 .pa_end
= 0x48038000 + SZ_8K
- 1,
321 .flags
= ADDR_TYPE_RT
326 struct omap_hwmod_ocp_if am33xx_l4_ls__mcasp0
= {
327 .master
= &am33xx_l4_ls_hwmod
,
328 .slave
= &am33xx_mcasp0_hwmod
,
330 .addr
= am33xx_mcasp0_addr_space
,
331 .user
= OCP_USER_MPU
,
334 /* l4 ls -> mcasp1 */
335 static struct omap_hwmod_addr_space am33xx_mcasp1_addr_space
[] = {
337 .pa_start
= 0x4803C000,
338 .pa_end
= 0x4803C000 + SZ_8K
- 1,
339 .flags
= ADDR_TYPE_RT
344 struct omap_hwmod_ocp_if am33xx_l4_ls__mcasp1
= {
345 .master
= &am33xx_l4_ls_hwmod
,
346 .slave
= &am33xx_mcasp1_hwmod
,
348 .addr
= am33xx_mcasp1_addr_space
,
349 .user
= OCP_USER_MPU
,
353 static struct omap_hwmod_addr_space am33xx_mmc0_addr_space
[] = {
355 .pa_start
= 0x48060100,
356 .pa_end
= 0x48060100 + SZ_4K
- 1,
357 .flags
= ADDR_TYPE_RT
,
362 struct omap_hwmod_ocp_if am33xx_l4_ls__mmc0
= {
363 .master
= &am33xx_l4_ls_hwmod
,
364 .slave
= &am33xx_mmc0_hwmod
,
366 .addr
= am33xx_mmc0_addr_space
,
367 .user
= OCP_USER_MPU
,
371 static struct omap_hwmod_addr_space am33xx_mmc1_addr_space
[] = {
373 .pa_start
= 0x481d8100,
374 .pa_end
= 0x481d8100 + SZ_4K
- 1,
375 .flags
= ADDR_TYPE_RT
,
380 struct omap_hwmod_ocp_if am33xx_l4_ls__mmc1
= {
381 .master
= &am33xx_l4_ls_hwmod
,
382 .slave
= &am33xx_mmc1_hwmod
,
384 .addr
= am33xx_mmc1_addr_space
,
385 .user
= OCP_USER_MPU
,
389 static struct omap_hwmod_addr_space am33xx_mmc2_addr_space
[] = {
391 .pa_start
= 0x47810100,
392 .pa_end
= 0x47810100 + SZ_64K
- 1,
393 .flags
= ADDR_TYPE_RT
,
398 struct omap_hwmod_ocp_if am33xx_l3_s__mmc2
= {
399 .master
= &am33xx_l3_s_hwmod
,
400 .slave
= &am33xx_mmc2_hwmod
,
402 .addr
= am33xx_mmc2_addr_space
,
403 .user
= OCP_USER_MPU
,
406 /* l4 ls -> mcspi0 */
407 struct omap_hwmod_ocp_if am33xx_l4_ls__mcspi0
= {
408 .master
= &am33xx_l4_ls_hwmod
,
409 .slave
= &am33xx_spi0_hwmod
,
411 .user
= OCP_USER_MPU
,
414 /* l4 ls -> mcspi1 */
415 struct omap_hwmod_ocp_if am33xx_l4_ls__mcspi1
= {
416 .master
= &am33xx_l4_ls_hwmod
,
417 .slave
= &am33xx_spi1_hwmod
,
419 .user
= OCP_USER_MPU
,
422 /* l4 per -> timer2 */
423 struct omap_hwmod_ocp_if am33xx_l4_ls__timer2
= {
424 .master
= &am33xx_l4_ls_hwmod
,
425 .slave
= &am33xx_timer2_hwmod
,
427 .user
= OCP_USER_MPU
,
430 /* l4 per -> timer3 */
431 struct omap_hwmod_ocp_if am33xx_l4_ls__timer3
= {
432 .master
= &am33xx_l4_ls_hwmod
,
433 .slave
= &am33xx_timer3_hwmod
,
435 .user
= OCP_USER_MPU
,
438 /* l4 per -> timer4 */
439 struct omap_hwmod_ocp_if am33xx_l4_ls__timer4
= {
440 .master
= &am33xx_l4_ls_hwmod
,
441 .slave
= &am33xx_timer4_hwmod
,
443 .user
= OCP_USER_MPU
,
446 /* l4 per -> timer5 */
447 struct omap_hwmod_ocp_if am33xx_l4_ls__timer5
= {
448 .master
= &am33xx_l4_ls_hwmod
,
449 .slave
= &am33xx_timer5_hwmod
,
451 .user
= OCP_USER_MPU
,
454 /* l4 per -> timer6 */
455 struct omap_hwmod_ocp_if am33xx_l4_ls__timer6
= {
456 .master
= &am33xx_l4_ls_hwmod
,
457 .slave
= &am33xx_timer6_hwmod
,
459 .user
= OCP_USER_MPU
,
462 /* l4 per -> timer7 */
463 struct omap_hwmod_ocp_if am33xx_l4_ls__timer7
= {
464 .master
= &am33xx_l4_ls_hwmod
,
465 .slave
= &am33xx_timer7_hwmod
,
467 .user
= OCP_USER_MPU
,
470 /* l3 main -> tpcc */
471 struct omap_hwmod_ocp_if am33xx_l3_main__tpcc
= {
472 .master
= &am33xx_l3_main_hwmod
,
473 .slave
= &am33xx_tpcc_hwmod
,
475 .user
= OCP_USER_MPU
,
478 /* l3 main -> tpcc0 */
479 static struct omap_hwmod_addr_space am33xx_tptc0_addr_space
[] = {
481 .pa_start
= 0x49800000,
482 .pa_end
= 0x49800000 + SZ_8K
- 1,
483 .flags
= ADDR_TYPE_RT
,
488 struct omap_hwmod_ocp_if am33xx_l3_main__tptc0
= {
489 .master
= &am33xx_l3_main_hwmod
,
490 .slave
= &am33xx_tptc0_hwmod
,
492 .addr
= am33xx_tptc0_addr_space
,
493 .user
= OCP_USER_MPU
,
496 /* l3 main -> tpcc1 */
497 static struct omap_hwmod_addr_space am33xx_tptc1_addr_space
[] = {
499 .pa_start
= 0x49900000,
500 .pa_end
= 0x49900000 + SZ_8K
- 1,
501 .flags
= ADDR_TYPE_RT
,
506 struct omap_hwmod_ocp_if am33xx_l3_main__tptc1
= {
507 .master
= &am33xx_l3_main_hwmod
,
508 .slave
= &am33xx_tptc1_hwmod
,
510 .addr
= am33xx_tptc1_addr_space
,
511 .user
= OCP_USER_MPU
,
514 /* l3 main -> tpcc2 */
515 static struct omap_hwmod_addr_space am33xx_tptc2_addr_space
[] = {
517 .pa_start
= 0x49a00000,
518 .pa_end
= 0x49a00000 + SZ_8K
- 1,
519 .flags
= ADDR_TYPE_RT
,
524 struct omap_hwmod_ocp_if am33xx_l3_main__tptc2
= {
525 .master
= &am33xx_l3_main_hwmod
,
526 .slave
= &am33xx_tptc2_hwmod
,
528 .addr
= am33xx_tptc2_addr_space
,
529 .user
= OCP_USER_MPU
,
533 struct omap_hwmod_ocp_if am33xx_l4_ls__uart2
= {
534 .master
= &am33xx_l4_ls_hwmod
,
535 .slave
= &am33xx_uart2_hwmod
,
537 .user
= OCP_USER_MPU
,
541 struct omap_hwmod_ocp_if am33xx_l4_ls__uart3
= {
542 .master
= &am33xx_l4_ls_hwmod
,
543 .slave
= &am33xx_uart3_hwmod
,
545 .user
= OCP_USER_MPU
,
549 struct omap_hwmod_ocp_if am33xx_l4_ls__uart4
= {
550 .master
= &am33xx_l4_ls_hwmod
,
551 .slave
= &am33xx_uart4_hwmod
,
553 .user
= OCP_USER_MPU
,
557 struct omap_hwmod_ocp_if am33xx_l4_ls__uart5
= {
558 .master
= &am33xx_l4_ls_hwmod
,
559 .slave
= &am33xx_uart5_hwmod
,
561 .user
= OCP_USER_MPU
,
565 struct omap_hwmod_ocp_if am33xx_l4_ls__uart6
= {
566 .master
= &am33xx_l4_ls_hwmod
,
567 .slave
= &am33xx_uart6_hwmod
,
569 .user
= OCP_USER_MPU
,
572 /* l3 main -> ocmc */
573 struct omap_hwmod_ocp_if am33xx_l3_main__ocmc
= {
574 .master
= &am33xx_l3_main_hwmod
,
575 .slave
= &am33xx_ocmcram_hwmod
,
576 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
579 /* l3 main -> sha0 HIB2 */
580 static struct omap_hwmod_addr_space am33xx_sha0_addrs
[] = {
582 .pa_start
= 0x53100000,
583 .pa_end
= 0x53100000 + SZ_512
- 1,
584 .flags
= ADDR_TYPE_RT
589 struct omap_hwmod_ocp_if am33xx_l3_main__sha0
= {
590 .master
= &am33xx_l3_main_hwmod
,
591 .slave
= &am33xx_sha0_hwmod
,
593 .addr
= am33xx_sha0_addrs
,
594 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
597 /* l3 main -> AES0 HIB2 */
598 static struct omap_hwmod_addr_space am33xx_aes0_addrs
[] = {
600 .pa_start
= 0x53500000,
601 .pa_end
= 0x53500000 + SZ_1M
- 1,
602 .flags
= ADDR_TYPE_RT
607 struct omap_hwmod_ocp_if am33xx_l3_main__aes0
= {
608 .master
= &am33xx_l3_main_hwmod
,
609 .slave
= &am33xx_aes0_hwmod
,
611 .addr
= am33xx_aes0_addrs
,
612 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,