2 * omap_hwmod_3xxx_data.c - hardware modules present on the OMAP3xxx 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 * The data in this file should be completely autogeneratable from
12 * the TI hardware database or other technical documentation.
14 * XXX these should be marked initdata for multi-OMAP kernels
16 #include <plat/omap_hwmod.h>
17 #include <mach/irqs.h>
21 #include "omap_hwmod_common_data.h"
23 #include "prm-regbits-34xx.h"
26 * OMAP3xxx hardware module integration data
28 * ALl of the data in this section should be autogeneratable from the
29 * TI hardware database or other technical documentation. Data that
30 * is driver-specific or driver-kernel integration-specific belongs
34 static struct omap_hwmod omap3xxx_mpu_hwmod;
35 static struct omap_hwmod omap3xxx_iva_hwmod;
36 static struct omap_hwmod omap3xxx_l3_main_hwmod;
37 static struct omap_hwmod omap3xxx_l4_core_hwmod;
38 static struct omap_hwmod omap3xxx_l4_per_hwmod;
40 /* L3 -> L4_CORE interface */
41 static struct omap_hwmod_ocp_if omap3xxx_l3_main__l4_core = {
42 .master = &omap3xxx_l3_main_hwmod,
43 .slave = &omap3xxx_l4_core_hwmod,
44 .user = OCP_USER_MPU | OCP_USER_SDMA,
47 /* L3 -> L4_PER interface */
48 static struct omap_hwmod_ocp_if omap3xxx_l3_main__l4_per = {
49 .master = &omap3xxx_l3_main_hwmod,
50 .slave = &omap3xxx_l4_per_hwmod,
51 .user = OCP_USER_MPU | OCP_USER_SDMA,
54 /* MPU -> L3 interface */
55 static struct omap_hwmod_ocp_if omap3xxx_mpu__l3_main = {
56 .master = &omap3xxx_mpu_hwmod,
57 .slave = &omap3xxx_l3_main_hwmod,
61 /* Slave interfaces on the L3 interconnect */
62 static struct omap_hwmod_ocp_if *omap3xxx_l3_main_slaves[] = {
63 &omap3xxx_mpu__l3_main,
66 /* Master interfaces on the L3 interconnect */
67 static struct omap_hwmod_ocp_if *omap3xxx_l3_main_masters[] = {
68 &omap3xxx_l3_main__l4_core,
69 &omap3xxx_l3_main__l4_per,
73 static struct omap_hwmod omap3xxx_l3_main_hwmod = {
75 .class = &l3_hwmod_class,
76 .masters = omap3xxx_l3_main_masters,
77 .masters_cnt = ARRAY_SIZE(omap3xxx_l3_main_masters),
78 .slaves = omap3xxx_l3_main_slaves,
79 .slaves_cnt = ARRAY_SIZE(omap3xxx_l3_main_slaves),
80 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
81 .flags = HWMOD_NO_IDLEST,
84 static struct omap_hwmod omap3xxx_l4_wkup_hwmod;
86 /* L4_CORE -> L4_WKUP interface */
87 static struct omap_hwmod_ocp_if omap3xxx_l4_core__l4_wkup = {
88 .master = &omap3xxx_l4_core_hwmod,
89 .slave = &omap3xxx_l4_wkup_hwmod,
90 .user = OCP_USER_MPU | OCP_USER_SDMA,
93 /* Slave interfaces on the L4_CORE interconnect */
94 static struct omap_hwmod_ocp_if *omap3xxx_l4_core_slaves[] = {
95 &omap3xxx_l3_main__l4_core,
98 /* Master interfaces on the L4_CORE interconnect */
99 static struct omap_hwmod_ocp_if *omap3xxx_l4_core_masters[] = {
100 &omap3xxx_l4_core__l4_wkup,
104 static struct omap_hwmod omap3xxx_l4_core_hwmod = {
106 .class = &l4_hwmod_class,
107 .masters = omap3xxx_l4_core_masters,
108 .masters_cnt = ARRAY_SIZE(omap3xxx_l4_core_masters),
109 .slaves = omap3xxx_l4_core_slaves,
110 .slaves_cnt = ARRAY_SIZE(omap3xxx_l4_core_slaves),
111 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
112 .flags = HWMOD_NO_IDLEST,
115 /* Slave interfaces on the L4_PER interconnect */
116 static struct omap_hwmod_ocp_if *omap3xxx_l4_per_slaves[] = {
117 &omap3xxx_l3_main__l4_per,
120 /* Master interfaces on the L4_PER interconnect */
121 static struct omap_hwmod_ocp_if *omap3xxx_l4_per_masters[] = {
125 static struct omap_hwmod omap3xxx_l4_per_hwmod = {
127 .class = &l4_hwmod_class,
128 .masters = omap3xxx_l4_per_masters,
129 .masters_cnt = ARRAY_SIZE(omap3xxx_l4_per_masters),
130 .slaves = omap3xxx_l4_per_slaves,
131 .slaves_cnt = ARRAY_SIZE(omap3xxx_l4_per_slaves),
132 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
133 .flags = HWMOD_NO_IDLEST,
136 /* Slave interfaces on the L4_WKUP interconnect */
137 static struct omap_hwmod_ocp_if *omap3xxx_l4_wkup_slaves[] = {
138 &omap3xxx_l4_core__l4_wkup,
141 /* Master interfaces on the L4_WKUP interconnect */
142 static struct omap_hwmod_ocp_if *omap3xxx_l4_wkup_masters[] = {
146 static struct omap_hwmod omap3xxx_l4_wkup_hwmod = {
148 .class = &l4_hwmod_class,
149 .masters = omap3xxx_l4_wkup_masters,
150 .masters_cnt = ARRAY_SIZE(omap3xxx_l4_wkup_masters),
151 .slaves = omap3xxx_l4_wkup_slaves,
152 .slaves_cnt = ARRAY_SIZE(omap3xxx_l4_wkup_slaves),
153 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
154 .flags = HWMOD_NO_IDLEST,
157 /* Master interfaces on the MPU device */
158 static struct omap_hwmod_ocp_if *omap3xxx_mpu_masters[] = {
159 &omap3xxx_mpu__l3_main,
163 static struct omap_hwmod omap3xxx_mpu_hwmod = {
165 .class = &mpu_hwmod_class,
166 .main_clk = "arm_fck",
167 .masters = omap3xxx_mpu_masters,
168 .masters_cnt = ARRAY_SIZE(omap3xxx_mpu_masters),
169 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
173 * IVA2_2 interface data
176 /* IVA2 <- L3 interface */
177 static struct omap_hwmod_ocp_if omap3xxx_l3__iva = {
178 .master = &omap3xxx_l3_main_hwmod,
179 .slave = &omap3xxx_iva_hwmod,
181 .user = OCP_USER_MPU | OCP_USER_SDMA,
184 static struct omap_hwmod_ocp_if *omap3xxx_iva_masters[] = {
192 static struct omap_hwmod omap3xxx_iva_hwmod = {
194 .class = &iva_hwmod_class,
195 .masters = omap3xxx_iva_masters,
196 .masters_cnt = ARRAY_SIZE(omap3xxx_iva_masters),
197 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
200 static __initdata struct omap_hwmod *omap3xxx_hwmods[] = {
201 &omap3xxx_l3_main_hwmod,
202 &omap3xxx_l4_core_hwmod,
203 &omap3xxx_l4_per_hwmod,
204 &omap3xxx_l4_wkup_hwmod,
210 int __init omap3xxx_hwmod_init(void)
212 return omap_hwmod_init(omap3xxx_hwmods);