2 * omap_hwmod_2420_data.c - hardware modules present on the OMAP2420 chips
4 * Copyright (C) 2009-2010 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>
19 #include "omap_hwmod_common_data.h"
21 #include "prm-regbits-24xx.h"
24 * OMAP2420 hardware module integration data
26 * ALl of the data in this section should be autogeneratable from the
27 * TI hardware database or other technical documentation. Data that
28 * is driver-specific or driver-kernel integration-specific belongs
32 static struct omap_hwmod omap2420_mpu_hwmod
;
33 static struct omap_hwmod omap2420_iva_hwmod
;
34 static struct omap_hwmod omap2420_l3_main_hwmod
;
35 static struct omap_hwmod omap2420_l4_core_hwmod
;
37 /* L3 -> L4_CORE interface */
38 static struct omap_hwmod_ocp_if omap2420_l3_main__l4_core
= {
39 .master
= &omap2420_l3_main_hwmod
,
40 .slave
= &omap2420_l4_core_hwmod
,
41 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
44 /* MPU -> L3 interface */
45 static struct omap_hwmod_ocp_if omap2420_mpu__l3_main
= {
46 .master
= &omap2420_mpu_hwmod
,
47 .slave
= &omap2420_l3_main_hwmod
,
51 /* Slave interfaces on the L3 interconnect */
52 static struct omap_hwmod_ocp_if
*omap2420_l3_main_slaves
[] = {
53 &omap2420_mpu__l3_main
,
56 /* Master interfaces on the L3 interconnect */
57 static struct omap_hwmod_ocp_if
*omap2420_l3_main_masters
[] = {
58 &omap2420_l3_main__l4_core
,
62 static struct omap_hwmod omap2420_l3_main_hwmod
= {
64 .class = &l3_hwmod_class
,
65 .masters
= omap2420_l3_main_masters
,
66 .masters_cnt
= ARRAY_SIZE(omap2420_l3_main_masters
),
67 .slaves
= omap2420_l3_main_slaves
,
68 .slaves_cnt
= ARRAY_SIZE(omap2420_l3_main_slaves
),
69 .omap_chip
= OMAP_CHIP_INIT(CHIP_IS_OMAP2420
),
70 .flags
= HWMOD_NO_IDLEST
,
73 static struct omap_hwmod omap2420_l4_wkup_hwmod
;
75 /* L4_CORE -> L4_WKUP interface */
76 static struct omap_hwmod_ocp_if omap2420_l4_core__l4_wkup
= {
77 .master
= &omap2420_l4_core_hwmod
,
78 .slave
= &omap2420_l4_wkup_hwmod
,
79 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
82 /* Slave interfaces on the L4_CORE interconnect */
83 static struct omap_hwmod_ocp_if
*omap2420_l4_core_slaves
[] = {
84 &omap2420_l3_main__l4_core
,
87 /* Master interfaces on the L4_CORE interconnect */
88 static struct omap_hwmod_ocp_if
*omap2420_l4_core_masters
[] = {
89 &omap2420_l4_core__l4_wkup
,
93 static struct omap_hwmod omap2420_l4_core_hwmod
= {
95 .class = &l4_hwmod_class
,
96 .masters
= omap2420_l4_core_masters
,
97 .masters_cnt
= ARRAY_SIZE(omap2420_l4_core_masters
),
98 .slaves
= omap2420_l4_core_slaves
,
99 .slaves_cnt
= ARRAY_SIZE(omap2420_l4_core_slaves
),
100 .omap_chip
= OMAP_CHIP_INIT(CHIP_IS_OMAP2420
),
101 .flags
= HWMOD_NO_IDLEST
,
104 /* Slave interfaces on the L4_WKUP interconnect */
105 static struct omap_hwmod_ocp_if
*omap2420_l4_wkup_slaves
[] = {
106 &omap2420_l4_core__l4_wkup
,
109 /* Master interfaces on the L4_WKUP interconnect */
110 static struct omap_hwmod_ocp_if
*omap2420_l4_wkup_masters
[] = {
114 static struct omap_hwmod omap2420_l4_wkup_hwmod
= {
116 .class = &l4_hwmod_class
,
117 .masters
= omap2420_l4_wkup_masters
,
118 .masters_cnt
= ARRAY_SIZE(omap2420_l4_wkup_masters
),
119 .slaves
= omap2420_l4_wkup_slaves
,
120 .slaves_cnt
= ARRAY_SIZE(omap2420_l4_wkup_slaves
),
121 .omap_chip
= OMAP_CHIP_INIT(CHIP_IS_OMAP2420
),
122 .flags
= HWMOD_NO_IDLEST
,
125 /* Master interfaces on the MPU device */
126 static struct omap_hwmod_ocp_if
*omap2420_mpu_masters
[] = {
127 &omap2420_mpu__l3_main
,
131 static struct omap_hwmod omap2420_mpu_hwmod
= {
133 .class = &mpu_hwmod_class
,
134 .main_clk
= "mpu_ck",
135 .masters
= omap2420_mpu_masters
,
136 .masters_cnt
= ARRAY_SIZE(omap2420_mpu_masters
),
137 .omap_chip
= OMAP_CHIP_INIT(CHIP_IS_OMAP2420
),
141 * IVA1 interface data
144 /* IVA <- L3 interface */
145 static struct omap_hwmod_ocp_if omap2420_l3__iva
= {
146 .master
= &omap2420_l3_main_hwmod
,
147 .slave
= &omap2420_iva_hwmod
,
149 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
152 static struct omap_hwmod_ocp_if
*omap2420_iva_masters
[] = {
160 static struct omap_hwmod omap2420_iva_hwmod
= {
162 .class = &iva_hwmod_class
,
163 .masters
= omap2420_iva_masters
,
164 .masters_cnt
= ARRAY_SIZE(omap2420_iva_masters
),
165 .omap_chip
= OMAP_CHIP_INIT(CHIP_IS_OMAP2420
)
168 static __initdata
struct omap_hwmod
*omap2420_hwmods
[] = {
169 &omap2420_l3_main_hwmod
,
170 &omap2420_l4_core_hwmod
,
171 &omap2420_l4_wkup_hwmod
,
177 int __init
omap2420_hwmod_init(void)
179 return omap_hwmod_init(omap2420_hwmods
);