blob: e44ecb465519b6eb78f8d716d34185f0a05c76c3 [file] [log] [blame]
Paul Walmsley02bfc032009-09-03 20:14:05 +03001/*
Paul Walmsley73591542010-02-22 22:09:32 -07002 * omap_hwmod_2420_data.c - hardware modules present on the OMAP2420 chips
Paul Walmsley02bfc032009-09-03 20:14:05 +03003 *
Paul Walmsley73591542010-02-22 22:09:32 -07004 * Copyright (C) 2009-2010 Nokia Corporation
Paul Walmsley02bfc032009-09-03 20:14:05 +03005 * Paul Walmsley
6 *
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.
10 *
11 * XXX handle crossbar/shared link difference for L3?
Paul Walmsley73591542010-02-22 22:09:32 -070012 * XXX these should be marked initdata for multi-OMAP kernels
Paul Walmsley02bfc032009-09-03 20:14:05 +030013 */
Tony Lindgrence491cf2009-10-20 09:40:47 -070014#include <plat/omap_hwmod.h>
Paul Walmsley02bfc032009-09-03 20:14:05 +030015#include <mach/irqs.h>
Tony Lindgrence491cf2009-10-20 09:40:47 -070016#include <plat/cpu.h>
17#include <plat/dma.h>
Kevin Hilman046465b2010-09-27 20:19:30 +053018#include <plat/serial.h>
Paul Walmsley20042902010-09-30 02:40:12 +053019#include <plat/i2c.h>
Varadarajan, Charulatha59c348c2010-12-07 16:26:56 -080020#include <plat/gpio.h>
Charulatha V617871d2011-02-17 09:53:09 -080021#include <plat/mcspi.h>
Senthilvadivu Guruswamy996746c2011-02-22 09:50:36 +020022#include <plat/l3_2xxx.h>
23#include <plat/l4_2xxx.h>
Paul Walmsley02bfc032009-09-03 20:14:05 +030024
Paul Walmsley43b40992010-02-22 22:09:34 -070025#include "omap_hwmod_common_data.h"
26
Varadarajan, Charulathaa714b9c2010-09-23 20:02:39 +053027#include "cm-regbits-24xx.h"
Paul Walmsley20042902010-09-30 02:40:12 +053028#include "prm-regbits-24xx.h"
Paul Walmsleyff2516f2010-12-21 15:39:15 -070029#include "wd_timer.h"
Paul Walmsley02bfc032009-09-03 20:14:05 +030030
Paul Walmsley73591542010-02-22 22:09:32 -070031/*
32 * OMAP2420 hardware module integration data
33 *
34 * ALl of the data in this section should be autogeneratable from the
35 * TI hardware database or other technical documentation. Data that
36 * is driver-specific or driver-kernel integration-specific belongs
37 * elsewhere.
38 */
39
Paul Walmsley02bfc032009-09-03 20:14:05 +030040static struct omap_hwmod omap2420_mpu_hwmod;
Paul Walmsley08072ac2010-07-26 16:34:33 -060041static struct omap_hwmod omap2420_iva_hwmod;
Kevin Hilman4a7cf902010-07-26 16:34:32 -060042static struct omap_hwmod omap2420_l3_main_hwmod;
Paul Walmsley02bfc032009-09-03 20:14:05 +030043static struct omap_hwmod omap2420_l4_core_hwmod;
Senthilvadivu Guruswamy996746c2011-02-22 09:50:36 +020044static struct omap_hwmod omap2420_dss_core_hwmod;
45static struct omap_hwmod omap2420_dss_dispc_hwmod;
46static struct omap_hwmod omap2420_dss_rfbi_hwmod;
47static struct omap_hwmod omap2420_dss_venc_hwmod;
Varadarajan, Charulathaa714b9c2010-09-23 20:02:39 +053048static struct omap_hwmod omap2420_wd_timer2_hwmod;
Varadarajan, Charulatha59c348c2010-12-07 16:26:56 -080049static struct omap_hwmod omap2420_gpio1_hwmod;
50static struct omap_hwmod omap2420_gpio2_hwmod;
51static struct omap_hwmod omap2420_gpio3_hwmod;
52static struct omap_hwmod omap2420_gpio4_hwmod;
G, Manjunath Kondaiah745685df92010-12-20 18:27:18 -080053static struct omap_hwmod omap2420_dma_system_hwmod;
Charulatha V617871d2011-02-17 09:53:09 -080054static struct omap_hwmod omap2420_mcspi1_hwmod;
55static struct omap_hwmod omap2420_mcspi2_hwmod;
Paul Walmsley02bfc032009-09-03 20:14:05 +030056
57/* L3 -> L4_CORE interface */
Kevin Hilman4a7cf902010-07-26 16:34:32 -060058static struct omap_hwmod_ocp_if omap2420_l3_main__l4_core = {
59 .master = &omap2420_l3_main_hwmod,
Paul Walmsley02bfc032009-09-03 20:14:05 +030060 .slave = &omap2420_l4_core_hwmod,
61 .user = OCP_USER_MPU | OCP_USER_SDMA,
62};
63
64/* MPU -> L3 interface */
Kevin Hilman4a7cf902010-07-26 16:34:32 -060065static struct omap_hwmod_ocp_if omap2420_mpu__l3_main = {
Paul Walmsley02bfc032009-09-03 20:14:05 +030066 .master = &omap2420_mpu_hwmod,
Kevin Hilman4a7cf902010-07-26 16:34:32 -060067 .slave = &omap2420_l3_main_hwmod,
Paul Walmsley02bfc032009-09-03 20:14:05 +030068 .user = OCP_USER_MPU,
69};
70
71/* Slave interfaces on the L3 interconnect */
Kevin Hilman4a7cf902010-07-26 16:34:32 -060072static struct omap_hwmod_ocp_if *omap2420_l3_main_slaves[] = {
73 &omap2420_mpu__l3_main,
Paul Walmsley02bfc032009-09-03 20:14:05 +030074};
75
Senthilvadivu Guruswamy996746c2011-02-22 09:50:36 +020076/* DSS -> l3 */
77static struct omap_hwmod_ocp_if omap2420_dss__l3 = {
78 .master = &omap2420_dss_core_hwmod,
79 .slave = &omap2420_l3_main_hwmod,
80 .fw = {
81 .omap2 = {
82 .l3_perm_bit = OMAP2_L3_CORE_FW_CONNID_DSS,
83 .flags = OMAP_FIREWALL_L3,
84 }
85 },
86 .user = OCP_USER_MPU | OCP_USER_SDMA,
87};
88
Paul Walmsley02bfc032009-09-03 20:14:05 +030089/* Master interfaces on the L3 interconnect */
Kevin Hilman4a7cf902010-07-26 16:34:32 -060090static struct omap_hwmod_ocp_if *omap2420_l3_main_masters[] = {
91 &omap2420_l3_main__l4_core,
Paul Walmsley02bfc032009-09-03 20:14:05 +030092};
93
94/* L3 */
Kevin Hilman4a7cf902010-07-26 16:34:32 -060095static struct omap_hwmod omap2420_l3_main_hwmod = {
Benoit Coussonfa983472010-07-26 16:34:29 -060096 .name = "l3_main",
Paul Walmsley43b40992010-02-22 22:09:34 -070097 .class = &l3_hwmod_class,
Kevin Hilman4a7cf902010-07-26 16:34:32 -060098 .masters = omap2420_l3_main_masters,
99 .masters_cnt = ARRAY_SIZE(omap2420_l3_main_masters),
100 .slaves = omap2420_l3_main_slaves,
101 .slaves_cnt = ARRAY_SIZE(omap2420_l3_main_slaves),
Kevin Hilman2eb18752010-07-26 16:34:28 -0600102 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
103 .flags = HWMOD_NO_IDLEST,
Paul Walmsley02bfc032009-09-03 20:14:05 +0300104};
105
106static struct omap_hwmod omap2420_l4_wkup_hwmod;
Kevin Hilman046465b2010-09-27 20:19:30 +0530107static struct omap_hwmod omap2420_uart1_hwmod;
108static struct omap_hwmod omap2420_uart2_hwmod;
109static struct omap_hwmod omap2420_uart3_hwmod;
Paul Walmsley20042902010-09-30 02:40:12 +0530110static struct omap_hwmod omap2420_i2c1_hwmod;
111static struct omap_hwmod omap2420_i2c2_hwmod;
Charulatha V3cb72fa2011-02-24 12:51:46 -0800112static struct omap_hwmod omap2420_mcbsp1_hwmod;
113static struct omap_hwmod omap2420_mcbsp2_hwmod;
Paul Walmsley02bfc032009-09-03 20:14:05 +0300114
Charulatha V617871d2011-02-17 09:53:09 -0800115/* l4 core -> mcspi1 interface */
116static struct omap_hwmod_addr_space omap2420_mcspi1_addr_space[] = {
117 {
118 .pa_start = 0x48098000,
119 .pa_end = 0x480980ff,
120 .flags = ADDR_TYPE_RT,
121 },
122};
123
124static struct omap_hwmod_ocp_if omap2420_l4_core__mcspi1 = {
125 .master = &omap2420_l4_core_hwmod,
126 .slave = &omap2420_mcspi1_hwmod,
127 .clk = "mcspi1_ick",
128 .addr = omap2420_mcspi1_addr_space,
129 .addr_cnt = ARRAY_SIZE(omap2420_mcspi1_addr_space),
130 .user = OCP_USER_MPU | OCP_USER_SDMA,
131};
132
133/* l4 core -> mcspi2 interface */
134static struct omap_hwmod_addr_space omap2420_mcspi2_addr_space[] = {
135 {
136 .pa_start = 0x4809a000,
137 .pa_end = 0x4809a0ff,
138 .flags = ADDR_TYPE_RT,
139 },
140};
141
142static struct omap_hwmod_ocp_if omap2420_l4_core__mcspi2 = {
143 .master = &omap2420_l4_core_hwmod,
144 .slave = &omap2420_mcspi2_hwmod,
145 .clk = "mcspi2_ick",
146 .addr = omap2420_mcspi2_addr_space,
147 .addr_cnt = ARRAY_SIZE(omap2420_mcspi2_addr_space),
148 .user = OCP_USER_MPU | OCP_USER_SDMA,
149};
150
Paul Walmsley02bfc032009-09-03 20:14:05 +0300151/* L4_CORE -> L4_WKUP interface */
152static struct omap_hwmod_ocp_if omap2420_l4_core__l4_wkup = {
153 .master = &omap2420_l4_core_hwmod,
154 .slave = &omap2420_l4_wkup_hwmod,
155 .user = OCP_USER_MPU | OCP_USER_SDMA,
156};
157
Kevin Hilman046465b2010-09-27 20:19:30 +0530158/* L4 CORE -> UART1 interface */
159static struct omap_hwmod_addr_space omap2420_uart1_addr_space[] = {
160 {
161 .pa_start = OMAP2_UART1_BASE,
162 .pa_end = OMAP2_UART1_BASE + SZ_8K - 1,
163 .flags = ADDR_MAP_ON_INIT | ADDR_TYPE_RT,
164 },
165};
166
167static struct omap_hwmod_ocp_if omap2_l4_core__uart1 = {
168 .master = &omap2420_l4_core_hwmod,
169 .slave = &omap2420_uart1_hwmod,
170 .clk = "uart1_ick",
171 .addr = omap2420_uart1_addr_space,
172 .addr_cnt = ARRAY_SIZE(omap2420_uart1_addr_space),
173 .user = OCP_USER_MPU | OCP_USER_SDMA,
174};
175
176/* L4 CORE -> UART2 interface */
177static struct omap_hwmod_addr_space omap2420_uart2_addr_space[] = {
178 {
179 .pa_start = OMAP2_UART2_BASE,
180 .pa_end = OMAP2_UART2_BASE + SZ_1K - 1,
181 .flags = ADDR_MAP_ON_INIT | ADDR_TYPE_RT,
182 },
183};
184
185static struct omap_hwmod_ocp_if omap2_l4_core__uart2 = {
186 .master = &omap2420_l4_core_hwmod,
187 .slave = &omap2420_uart2_hwmod,
188 .clk = "uart2_ick",
189 .addr = omap2420_uart2_addr_space,
190 .addr_cnt = ARRAY_SIZE(omap2420_uart2_addr_space),
191 .user = OCP_USER_MPU | OCP_USER_SDMA,
192};
193
194/* L4 PER -> UART3 interface */
195static struct omap_hwmod_addr_space omap2420_uart3_addr_space[] = {
196 {
197 .pa_start = OMAP2_UART3_BASE,
198 .pa_end = OMAP2_UART3_BASE + SZ_1K - 1,
199 .flags = ADDR_MAP_ON_INIT | ADDR_TYPE_RT,
200 },
201};
202
203static struct omap_hwmod_ocp_if omap2_l4_core__uart3 = {
204 .master = &omap2420_l4_core_hwmod,
205 .slave = &omap2420_uart3_hwmod,
206 .clk = "uart3_ick",
207 .addr = omap2420_uart3_addr_space,
208 .addr_cnt = ARRAY_SIZE(omap2420_uart3_addr_space),
209 .user = OCP_USER_MPU | OCP_USER_SDMA,
210};
211
Paul Walmsley20042902010-09-30 02:40:12 +0530212/* I2C IP block address space length (in bytes) */
213#define OMAP2_I2C_AS_LEN 128
214
215/* L4 CORE -> I2C1 interface */
216static struct omap_hwmod_addr_space omap2420_i2c1_addr_space[] = {
217 {
218 .pa_start = 0x48070000,
219 .pa_end = 0x48070000 + OMAP2_I2C_AS_LEN - 1,
220 .flags = ADDR_TYPE_RT,
221 },
222};
223
224static struct omap_hwmod_ocp_if omap2420_l4_core__i2c1 = {
225 .master = &omap2420_l4_core_hwmod,
226 .slave = &omap2420_i2c1_hwmod,
227 .clk = "i2c1_ick",
228 .addr = omap2420_i2c1_addr_space,
229 .addr_cnt = ARRAY_SIZE(omap2420_i2c1_addr_space),
230 .user = OCP_USER_MPU | OCP_USER_SDMA,
231};
232
233/* L4 CORE -> I2C2 interface */
234static struct omap_hwmod_addr_space omap2420_i2c2_addr_space[] = {
235 {
236 .pa_start = 0x48072000,
237 .pa_end = 0x48072000 + OMAP2_I2C_AS_LEN - 1,
238 .flags = ADDR_TYPE_RT,
239 },
240};
241
242static struct omap_hwmod_ocp_if omap2420_l4_core__i2c2 = {
243 .master = &omap2420_l4_core_hwmod,
244 .slave = &omap2420_i2c2_hwmod,
245 .clk = "i2c2_ick",
246 .addr = omap2420_i2c2_addr_space,
247 .addr_cnt = ARRAY_SIZE(omap2420_i2c2_addr_space),
248 .user = OCP_USER_MPU | OCP_USER_SDMA,
249};
250
Paul Walmsley02bfc032009-09-03 20:14:05 +0300251/* Slave interfaces on the L4_CORE interconnect */
252static struct omap_hwmod_ocp_if *omap2420_l4_core_slaves[] = {
Kevin Hilman4a7cf902010-07-26 16:34:32 -0600253 &omap2420_l3_main__l4_core,
Paul Walmsley02bfc032009-09-03 20:14:05 +0300254};
255
256/* Master interfaces on the L4_CORE interconnect */
257static struct omap_hwmod_ocp_if *omap2420_l4_core_masters[] = {
258 &omap2420_l4_core__l4_wkup,
Kevin Hilman046465b2010-09-27 20:19:30 +0530259 &omap2_l4_core__uart1,
260 &omap2_l4_core__uart2,
261 &omap2_l4_core__uart3,
Paul Walmsley20042902010-09-30 02:40:12 +0530262 &omap2420_l4_core__i2c1,
263 &omap2420_l4_core__i2c2
Paul Walmsley02bfc032009-09-03 20:14:05 +0300264};
265
266/* L4 CORE */
267static struct omap_hwmod omap2420_l4_core_hwmod = {
Benoit Coussonfa983472010-07-26 16:34:29 -0600268 .name = "l4_core",
Paul Walmsley43b40992010-02-22 22:09:34 -0700269 .class = &l4_hwmod_class,
Paul Walmsley02bfc032009-09-03 20:14:05 +0300270 .masters = omap2420_l4_core_masters,
271 .masters_cnt = ARRAY_SIZE(omap2420_l4_core_masters),
272 .slaves = omap2420_l4_core_slaves,
273 .slaves_cnt = ARRAY_SIZE(omap2420_l4_core_slaves),
Kevin Hilman2eb18752010-07-26 16:34:28 -0600274 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
275 .flags = HWMOD_NO_IDLEST,
Paul Walmsley02bfc032009-09-03 20:14:05 +0300276};
277
278/* Slave interfaces on the L4_WKUP interconnect */
279static struct omap_hwmod_ocp_if *omap2420_l4_wkup_slaves[] = {
280 &omap2420_l4_core__l4_wkup,
281};
282
283/* Master interfaces on the L4_WKUP interconnect */
284static struct omap_hwmod_ocp_if *omap2420_l4_wkup_masters[] = {
285};
286
287/* L4 WKUP */
288static struct omap_hwmod omap2420_l4_wkup_hwmod = {
Benoit Coussonfa983472010-07-26 16:34:29 -0600289 .name = "l4_wkup",
Paul Walmsley43b40992010-02-22 22:09:34 -0700290 .class = &l4_hwmod_class,
Paul Walmsley02bfc032009-09-03 20:14:05 +0300291 .masters = omap2420_l4_wkup_masters,
292 .masters_cnt = ARRAY_SIZE(omap2420_l4_wkup_masters),
293 .slaves = omap2420_l4_wkup_slaves,
294 .slaves_cnt = ARRAY_SIZE(omap2420_l4_wkup_slaves),
Kevin Hilman2eb18752010-07-26 16:34:28 -0600295 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
296 .flags = HWMOD_NO_IDLEST,
Paul Walmsley02bfc032009-09-03 20:14:05 +0300297};
298
299/* Master interfaces on the MPU device */
300static struct omap_hwmod_ocp_if *omap2420_mpu_masters[] = {
Kevin Hilman4a7cf902010-07-26 16:34:32 -0600301 &omap2420_mpu__l3_main,
Paul Walmsley02bfc032009-09-03 20:14:05 +0300302};
303
304/* MPU */
305static struct omap_hwmod omap2420_mpu_hwmod = {
Benoit Cousson5c2c0292010-05-20 12:31:10 -0600306 .name = "mpu",
Paul Walmsley43b40992010-02-22 22:09:34 -0700307 .class = &mpu_hwmod_class,
Paul Walmsley50ebdac2010-02-22 22:09:31 -0700308 .main_clk = "mpu_ck",
Paul Walmsley02bfc032009-09-03 20:14:05 +0300309 .masters = omap2420_mpu_masters,
310 .masters_cnt = ARRAY_SIZE(omap2420_mpu_masters),
311 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
312};
313
Paul Walmsley08072ac2010-07-26 16:34:33 -0600314/*
315 * IVA1 interface data
316 */
317
318/* IVA <- L3 interface */
319static struct omap_hwmod_ocp_if omap2420_l3__iva = {
320 .master = &omap2420_l3_main_hwmod,
321 .slave = &omap2420_iva_hwmod,
322 .clk = "iva1_ifck",
323 .user = OCP_USER_MPU | OCP_USER_SDMA,
324};
325
326static struct omap_hwmod_ocp_if *omap2420_iva_masters[] = {
327 &omap2420_l3__iva,
328};
329
330/*
331 * IVA2 (IVA2)
332 */
333
334static struct omap_hwmod omap2420_iva_hwmod = {
335 .name = "iva",
336 .class = &iva_hwmod_class,
337 .masters = omap2420_iva_masters,
338 .masters_cnt = ARRAY_SIZE(omap2420_iva_masters),
339 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420)
340};
341
Varadarajan, Charulathaa714b9c2010-09-23 20:02:39 +0530342/* l4_wkup -> wd_timer2 */
343static struct omap_hwmod_addr_space omap2420_wd_timer2_addrs[] = {
344 {
345 .pa_start = 0x48022000,
346 .pa_end = 0x4802207f,
347 .flags = ADDR_TYPE_RT
348 },
349};
350
351static struct omap_hwmod_ocp_if omap2420_l4_wkup__wd_timer2 = {
352 .master = &omap2420_l4_wkup_hwmod,
353 .slave = &omap2420_wd_timer2_hwmod,
354 .clk = "mpu_wdt_ick",
355 .addr = omap2420_wd_timer2_addrs,
356 .addr_cnt = ARRAY_SIZE(omap2420_wd_timer2_addrs),
357 .user = OCP_USER_MPU | OCP_USER_SDMA,
358};
359
360/*
361 * 'wd_timer' class
362 * 32-bit watchdog upward counter that generates a pulse on the reset pin on
363 * overflow condition
364 */
365
366static struct omap_hwmod_class_sysconfig omap2420_wd_timer_sysc = {
367 .rev_offs = 0x0000,
368 .sysc_offs = 0x0010,
369 .syss_offs = 0x0014,
370 .sysc_flags = (SYSC_HAS_EMUFREE | SYSC_HAS_SOFTRESET |
371 SYSC_HAS_AUTOIDLE),
372 .sysc_fields = &omap_hwmod_sysc_type1,
373};
374
375static struct omap_hwmod_class omap2420_wd_timer_hwmod_class = {
Paul Walmsleyff2516f2010-12-21 15:39:15 -0700376 .name = "wd_timer",
377 .sysc = &omap2420_wd_timer_sysc,
378 .pre_shutdown = &omap2_wd_timer_disable
Varadarajan, Charulathaa714b9c2010-09-23 20:02:39 +0530379};
380
381/* wd_timer2 */
382static struct omap_hwmod_ocp_if *omap2420_wd_timer2_slaves[] = {
383 &omap2420_l4_wkup__wd_timer2,
384};
385
386static struct omap_hwmod omap2420_wd_timer2_hwmod = {
387 .name = "wd_timer2",
388 .class = &omap2420_wd_timer_hwmod_class,
389 .main_clk = "mpu_wdt_fck",
390 .prcm = {
391 .omap2 = {
392 .prcm_reg_id = 1,
393 .module_bit = OMAP24XX_EN_MPU_WDT_SHIFT,
394 .module_offs = WKUP_MOD,
395 .idlest_reg_id = 1,
396 .idlest_idle_bit = OMAP24XX_ST_MPU_WDT_SHIFT,
397 },
398 },
399 .slaves = omap2420_wd_timer2_slaves,
400 .slaves_cnt = ARRAY_SIZE(omap2420_wd_timer2_slaves),
401 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
402};
403
Kevin Hilman046465b2010-09-27 20:19:30 +0530404/* UART */
405
406static struct omap_hwmod_class_sysconfig uart_sysc = {
407 .rev_offs = 0x50,
408 .sysc_offs = 0x54,
409 .syss_offs = 0x58,
410 .sysc_flags = (SYSC_HAS_SIDLEMODE |
411 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
412 SYSC_HAS_AUTOIDLE),
413 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
414 .sysc_fields = &omap_hwmod_sysc_type1,
415};
416
417static struct omap_hwmod_class uart_class = {
418 .name = "uart",
419 .sysc = &uart_sysc,
420};
421
422/* UART1 */
423
424static struct omap_hwmod_irq_info uart1_mpu_irqs[] = {
425 { .irq = INT_24XX_UART1_IRQ, },
426};
427
428static struct omap_hwmod_dma_info uart1_sdma_reqs[] = {
429 { .name = "rx", .dma_req = OMAP24XX_DMA_UART1_RX, },
430 { .name = "tx", .dma_req = OMAP24XX_DMA_UART1_TX, },
431};
432
433static struct omap_hwmod_ocp_if *omap2420_uart1_slaves[] = {
434 &omap2_l4_core__uart1,
435};
436
437static struct omap_hwmod omap2420_uart1_hwmod = {
438 .name = "uart1",
439 .mpu_irqs = uart1_mpu_irqs,
440 .mpu_irqs_cnt = ARRAY_SIZE(uart1_mpu_irqs),
441 .sdma_reqs = uart1_sdma_reqs,
442 .sdma_reqs_cnt = ARRAY_SIZE(uart1_sdma_reqs),
443 .main_clk = "uart1_fck",
444 .prcm = {
445 .omap2 = {
446 .module_offs = CORE_MOD,
447 .prcm_reg_id = 1,
448 .module_bit = OMAP24XX_EN_UART1_SHIFT,
449 .idlest_reg_id = 1,
450 .idlest_idle_bit = OMAP24XX_EN_UART1_SHIFT,
451 },
452 },
453 .slaves = omap2420_uart1_slaves,
454 .slaves_cnt = ARRAY_SIZE(omap2420_uart1_slaves),
455 .class = &uart_class,
456 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
457};
458
459/* UART2 */
460
461static struct omap_hwmod_irq_info uart2_mpu_irqs[] = {
462 { .irq = INT_24XX_UART2_IRQ, },
463};
464
465static struct omap_hwmod_dma_info uart2_sdma_reqs[] = {
466 { .name = "rx", .dma_req = OMAP24XX_DMA_UART2_RX, },
467 { .name = "tx", .dma_req = OMAP24XX_DMA_UART2_TX, },
468};
469
470static struct omap_hwmod_ocp_if *omap2420_uart2_slaves[] = {
471 &omap2_l4_core__uart2,
472};
473
474static struct omap_hwmod omap2420_uart2_hwmod = {
475 .name = "uart2",
476 .mpu_irqs = uart2_mpu_irqs,
477 .mpu_irqs_cnt = ARRAY_SIZE(uart2_mpu_irqs),
478 .sdma_reqs = uart2_sdma_reqs,
479 .sdma_reqs_cnt = ARRAY_SIZE(uart2_sdma_reqs),
480 .main_clk = "uart2_fck",
481 .prcm = {
482 .omap2 = {
483 .module_offs = CORE_MOD,
484 .prcm_reg_id = 1,
485 .module_bit = OMAP24XX_EN_UART2_SHIFT,
486 .idlest_reg_id = 1,
487 .idlest_idle_bit = OMAP24XX_EN_UART2_SHIFT,
488 },
489 },
490 .slaves = omap2420_uart2_slaves,
491 .slaves_cnt = ARRAY_SIZE(omap2420_uart2_slaves),
492 .class = &uart_class,
493 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
494};
495
496/* UART3 */
497
498static struct omap_hwmod_irq_info uart3_mpu_irqs[] = {
499 { .irq = INT_24XX_UART3_IRQ, },
500};
501
502static struct omap_hwmod_dma_info uart3_sdma_reqs[] = {
503 { .name = "rx", .dma_req = OMAP24XX_DMA_UART3_RX, },
504 { .name = "tx", .dma_req = OMAP24XX_DMA_UART3_TX, },
505};
506
507static struct omap_hwmod_ocp_if *omap2420_uart3_slaves[] = {
508 &omap2_l4_core__uart3,
509};
510
511static struct omap_hwmod omap2420_uart3_hwmod = {
512 .name = "uart3",
513 .mpu_irqs = uart3_mpu_irqs,
514 .mpu_irqs_cnt = ARRAY_SIZE(uart3_mpu_irqs),
515 .sdma_reqs = uart3_sdma_reqs,
516 .sdma_reqs_cnt = ARRAY_SIZE(uart3_sdma_reqs),
517 .main_clk = "uart3_fck",
518 .prcm = {
519 .omap2 = {
520 .module_offs = CORE_MOD,
521 .prcm_reg_id = 2,
522 .module_bit = OMAP24XX_EN_UART3_SHIFT,
523 .idlest_reg_id = 2,
524 .idlest_idle_bit = OMAP24XX_EN_UART3_SHIFT,
525 },
526 },
527 .slaves = omap2420_uart3_slaves,
528 .slaves_cnt = ARRAY_SIZE(omap2420_uart3_slaves),
529 .class = &uart_class,
530 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
531};
532
Senthilvadivu Guruswamy996746c2011-02-22 09:50:36 +0200533/*
534 * 'dss' class
535 * display sub-system
536 */
537
538static struct omap_hwmod_class_sysconfig omap2420_dss_sysc = {
539 .rev_offs = 0x0000,
540 .sysc_offs = 0x0010,
541 .syss_offs = 0x0014,
542 .sysc_flags = (SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE),
543 .sysc_fields = &omap_hwmod_sysc_type1,
544};
545
546static struct omap_hwmod_class omap2420_dss_hwmod_class = {
547 .name = "dss",
548 .sysc = &omap2420_dss_sysc,
549};
550
551/* dss */
552static struct omap_hwmod_irq_info omap2420_dss_irqs[] = {
553 { .irq = 25 },
554};
555
556static struct omap_hwmod_dma_info omap2420_dss_sdma_chs[] = {
557 { .name = "dispc", .dma_req = 5 },
558};
559
560/* dss */
561/* dss master ports */
562static struct omap_hwmod_ocp_if *omap2420_dss_masters[] = {
563 &omap2420_dss__l3,
564};
565
566static struct omap_hwmod_addr_space omap2420_dss_addrs[] = {
567 {
568 .pa_start = 0x48050000,
569 .pa_end = 0x480503FF,
570 .flags = ADDR_TYPE_RT
571 },
572};
573
574/* l4_core -> dss */
575static struct omap_hwmod_ocp_if omap2420_l4_core__dss = {
576 .master = &omap2420_l4_core_hwmod,
577 .slave = &omap2420_dss_core_hwmod,
578 .clk = "dss_ick",
579 .addr = omap2420_dss_addrs,
580 .addr_cnt = ARRAY_SIZE(omap2420_dss_addrs),
581 .fw = {
582 .omap2 = {
583 .l4_fw_region = OMAP2420_L4_CORE_FW_DSS_CORE_REGION,
584 .flags = OMAP_FIREWALL_L4,
585 }
586 },
587 .user = OCP_USER_MPU | OCP_USER_SDMA,
588};
589
590/* dss slave ports */
591static struct omap_hwmod_ocp_if *omap2420_dss_slaves[] = {
592 &omap2420_l4_core__dss,
593};
594
595static struct omap_hwmod_opt_clk dss_opt_clks[] = {
596 { .role = "tv_clk", .clk = "dss_54m_fck" },
597 { .role = "sys_clk", .clk = "dss2_fck" },
598};
599
600static struct omap_hwmod omap2420_dss_core_hwmod = {
601 .name = "dss_core",
602 .class = &omap2420_dss_hwmod_class,
603 .main_clk = "dss1_fck", /* instead of dss_fck */
604 .mpu_irqs = omap2420_dss_irqs,
605 .mpu_irqs_cnt = ARRAY_SIZE(omap2420_dss_irqs),
606 .sdma_reqs = omap2420_dss_sdma_chs,
607 .sdma_reqs_cnt = ARRAY_SIZE(omap2420_dss_sdma_chs),
608 .prcm = {
609 .omap2 = {
610 .prcm_reg_id = 1,
611 .module_bit = OMAP24XX_EN_DSS1_SHIFT,
612 .module_offs = CORE_MOD,
613 .idlest_reg_id = 1,
614 .idlest_stdby_bit = OMAP24XX_ST_DSS_SHIFT,
615 },
616 },
617 .opt_clks = dss_opt_clks,
618 .opt_clks_cnt = ARRAY_SIZE(dss_opt_clks),
619 .slaves = omap2420_dss_slaves,
620 .slaves_cnt = ARRAY_SIZE(omap2420_dss_slaves),
621 .masters = omap2420_dss_masters,
622 .masters_cnt = ARRAY_SIZE(omap2420_dss_masters),
623 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
624 .flags = HWMOD_NO_IDLEST,
625};
626
627/*
628 * 'dispc' class
629 * display controller
630 */
631
632static struct omap_hwmod_class_sysconfig omap2420_dispc_sysc = {
633 .rev_offs = 0x0000,
634 .sysc_offs = 0x0010,
635 .syss_offs = 0x0014,
636 .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE |
637 SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE),
638 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
639 MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
640 .sysc_fields = &omap_hwmod_sysc_type1,
641};
642
643static struct omap_hwmod_class omap2420_dispc_hwmod_class = {
644 .name = "dispc",
645 .sysc = &omap2420_dispc_sysc,
646};
647
648static struct omap_hwmod_addr_space omap2420_dss_dispc_addrs[] = {
649 {
650 .pa_start = 0x48050400,
651 .pa_end = 0x480507FF,
652 .flags = ADDR_TYPE_RT
653 },
654};
655
656/* l4_core -> dss_dispc */
657static struct omap_hwmod_ocp_if omap2420_l4_core__dss_dispc = {
658 .master = &omap2420_l4_core_hwmod,
659 .slave = &omap2420_dss_dispc_hwmod,
660 .clk = "dss_ick",
661 .addr = omap2420_dss_dispc_addrs,
662 .addr_cnt = ARRAY_SIZE(omap2420_dss_dispc_addrs),
663 .fw = {
664 .omap2 = {
665 .l4_fw_region = OMAP2420_L4_CORE_FW_DSS_DISPC_REGION,
666 .flags = OMAP_FIREWALL_L4,
667 }
668 },
669 .user = OCP_USER_MPU | OCP_USER_SDMA,
670};
671
672/* dss_dispc slave ports */
673static struct omap_hwmod_ocp_if *omap2420_dss_dispc_slaves[] = {
674 &omap2420_l4_core__dss_dispc,
675};
676
677static struct omap_hwmod omap2420_dss_dispc_hwmod = {
678 .name = "dss_dispc",
679 .class = &omap2420_dispc_hwmod_class,
680 .main_clk = "dss1_fck",
681 .prcm = {
682 .omap2 = {
683 .prcm_reg_id = 1,
684 .module_bit = OMAP24XX_EN_DSS1_SHIFT,
685 .module_offs = CORE_MOD,
686 .idlest_reg_id = 1,
687 .idlest_stdby_bit = OMAP24XX_ST_DSS_SHIFT,
688 },
689 },
690 .slaves = omap2420_dss_dispc_slaves,
691 .slaves_cnt = ARRAY_SIZE(omap2420_dss_dispc_slaves),
692 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
693 .flags = HWMOD_NO_IDLEST,
694};
695
696/*
697 * 'rfbi' class
698 * remote frame buffer interface
699 */
700
701static struct omap_hwmod_class_sysconfig omap2420_rfbi_sysc = {
702 .rev_offs = 0x0000,
703 .sysc_offs = 0x0010,
704 .syss_offs = 0x0014,
705 .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
706 SYSC_HAS_AUTOIDLE),
707 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
708 .sysc_fields = &omap_hwmod_sysc_type1,
709};
710
711static struct omap_hwmod_class omap2420_rfbi_hwmod_class = {
712 .name = "rfbi",
713 .sysc = &omap2420_rfbi_sysc,
714};
715
716static struct omap_hwmod_addr_space omap2420_dss_rfbi_addrs[] = {
717 {
718 .pa_start = 0x48050800,
719 .pa_end = 0x48050BFF,
720 .flags = ADDR_TYPE_RT
721 },
722};
723
724/* l4_core -> dss_rfbi */
725static struct omap_hwmod_ocp_if omap2420_l4_core__dss_rfbi = {
726 .master = &omap2420_l4_core_hwmod,
727 .slave = &omap2420_dss_rfbi_hwmod,
728 .clk = "dss_ick",
729 .addr = omap2420_dss_rfbi_addrs,
730 .addr_cnt = ARRAY_SIZE(omap2420_dss_rfbi_addrs),
731 .fw = {
732 .omap2 = {
733 .l4_fw_region = OMAP2420_L4_CORE_FW_DSS_CORE_REGION,
734 .flags = OMAP_FIREWALL_L4,
735 }
736 },
737 .user = OCP_USER_MPU | OCP_USER_SDMA,
738};
739
740/* dss_rfbi slave ports */
741static struct omap_hwmod_ocp_if *omap2420_dss_rfbi_slaves[] = {
742 &omap2420_l4_core__dss_rfbi,
743};
744
745static struct omap_hwmod omap2420_dss_rfbi_hwmod = {
746 .name = "dss_rfbi",
747 .class = &omap2420_rfbi_hwmod_class,
748 .main_clk = "dss1_fck",
749 .prcm = {
750 .omap2 = {
751 .prcm_reg_id = 1,
752 .module_bit = OMAP24XX_EN_DSS1_SHIFT,
753 .module_offs = CORE_MOD,
754 },
755 },
756 .slaves = omap2420_dss_rfbi_slaves,
757 .slaves_cnt = ARRAY_SIZE(omap2420_dss_rfbi_slaves),
758 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
759 .flags = HWMOD_NO_IDLEST,
760};
761
762/*
763 * 'venc' class
764 * video encoder
765 */
766
767static struct omap_hwmod_class omap2420_venc_hwmod_class = {
768 .name = "venc",
769};
770
771/* dss_venc */
772static struct omap_hwmod_addr_space omap2420_dss_venc_addrs[] = {
773 {
774 .pa_start = 0x48050C00,
775 .pa_end = 0x48050FFF,
776 .flags = ADDR_TYPE_RT
777 },
778};
779
780/* l4_core -> dss_venc */
781static struct omap_hwmod_ocp_if omap2420_l4_core__dss_venc = {
782 .master = &omap2420_l4_core_hwmod,
783 .slave = &omap2420_dss_venc_hwmod,
784 .clk = "dss_54m_fck",
785 .addr = omap2420_dss_venc_addrs,
786 .addr_cnt = ARRAY_SIZE(omap2420_dss_venc_addrs),
787 .fw = {
788 .omap2 = {
789 .l4_fw_region = OMAP2420_L4_CORE_FW_DSS_VENC_REGION,
790 .flags = OMAP_FIREWALL_L4,
791 }
792 },
793 .user = OCP_USER_MPU | OCP_USER_SDMA,
794};
795
796/* dss_venc slave ports */
797static struct omap_hwmod_ocp_if *omap2420_dss_venc_slaves[] = {
798 &omap2420_l4_core__dss_venc,
799};
800
801static struct omap_hwmod omap2420_dss_venc_hwmod = {
802 .name = "dss_venc",
803 .class = &omap2420_venc_hwmod_class,
804 .main_clk = "dss1_fck",
805 .prcm = {
806 .omap2 = {
807 .prcm_reg_id = 1,
808 .module_bit = OMAP24XX_EN_DSS1_SHIFT,
809 .module_offs = CORE_MOD,
810 },
811 },
812 .slaves = omap2420_dss_venc_slaves,
813 .slaves_cnt = ARRAY_SIZE(omap2420_dss_venc_slaves),
814 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
815 .flags = HWMOD_NO_IDLEST,
816};
817
Paul Walmsley20042902010-09-30 02:40:12 +0530818/* I2C common */
819static struct omap_hwmod_class_sysconfig i2c_sysc = {
820 .rev_offs = 0x00,
821 .sysc_offs = 0x20,
822 .syss_offs = 0x10,
823 .sysc_flags = SYSC_HAS_SOFTRESET,
824 .sysc_fields = &omap_hwmod_sysc_type1,
825};
826
827static struct omap_hwmod_class i2c_class = {
828 .name = "i2c",
829 .sysc = &i2c_sysc,
830};
831
832static struct omap_i2c_dev_attr i2c_dev_attr;
833
834/* I2C1 */
835
836static struct omap_hwmod_irq_info i2c1_mpu_irqs[] = {
837 { .irq = INT_24XX_I2C1_IRQ, },
838};
839
840static struct omap_hwmod_dma_info i2c1_sdma_reqs[] = {
841 { .name = "tx", .dma_req = OMAP24XX_DMA_I2C1_TX },
842 { .name = "rx", .dma_req = OMAP24XX_DMA_I2C1_RX },
843};
844
845static struct omap_hwmod_ocp_if *omap2420_i2c1_slaves[] = {
846 &omap2420_l4_core__i2c1,
847};
848
849static struct omap_hwmod omap2420_i2c1_hwmod = {
850 .name = "i2c1",
851 .mpu_irqs = i2c1_mpu_irqs,
852 .mpu_irqs_cnt = ARRAY_SIZE(i2c1_mpu_irqs),
853 .sdma_reqs = i2c1_sdma_reqs,
854 .sdma_reqs_cnt = ARRAY_SIZE(i2c1_sdma_reqs),
855 .main_clk = "i2c1_fck",
856 .prcm = {
857 .omap2 = {
858 .module_offs = CORE_MOD,
859 .prcm_reg_id = 1,
860 .module_bit = OMAP2420_EN_I2C1_SHIFT,
861 .idlest_reg_id = 1,
862 .idlest_idle_bit = OMAP2420_ST_I2C1_SHIFT,
863 },
864 },
865 .slaves = omap2420_i2c1_slaves,
866 .slaves_cnt = ARRAY_SIZE(omap2420_i2c1_slaves),
867 .class = &i2c_class,
868 .dev_attr = &i2c_dev_attr,
869 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
870 .flags = HWMOD_16BIT_REG,
871};
872
873/* I2C2 */
874
875static struct omap_hwmod_irq_info i2c2_mpu_irqs[] = {
876 { .irq = INT_24XX_I2C2_IRQ, },
877};
878
879static struct omap_hwmod_dma_info i2c2_sdma_reqs[] = {
880 { .name = "tx", .dma_req = OMAP24XX_DMA_I2C2_TX },
881 { .name = "rx", .dma_req = OMAP24XX_DMA_I2C2_RX },
882};
883
884static struct omap_hwmod_ocp_if *omap2420_i2c2_slaves[] = {
885 &omap2420_l4_core__i2c2,
886};
887
888static struct omap_hwmod omap2420_i2c2_hwmod = {
889 .name = "i2c2",
890 .mpu_irqs = i2c2_mpu_irqs,
891 .mpu_irqs_cnt = ARRAY_SIZE(i2c2_mpu_irqs),
892 .sdma_reqs = i2c2_sdma_reqs,
893 .sdma_reqs_cnt = ARRAY_SIZE(i2c2_sdma_reqs),
894 .main_clk = "i2c2_fck",
895 .prcm = {
896 .omap2 = {
897 .module_offs = CORE_MOD,
898 .prcm_reg_id = 1,
899 .module_bit = OMAP2420_EN_I2C2_SHIFT,
900 .idlest_reg_id = 1,
901 .idlest_idle_bit = OMAP2420_ST_I2C2_SHIFT,
902 },
903 },
904 .slaves = omap2420_i2c2_slaves,
905 .slaves_cnt = ARRAY_SIZE(omap2420_i2c2_slaves),
906 .class = &i2c_class,
907 .dev_attr = &i2c_dev_attr,
908 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
909 .flags = HWMOD_16BIT_REG,
910};
911
Varadarajan, Charulatha59c348c2010-12-07 16:26:56 -0800912/* l4_wkup -> gpio1 */
913static struct omap_hwmod_addr_space omap2420_gpio1_addr_space[] = {
914 {
915 .pa_start = 0x48018000,
916 .pa_end = 0x480181ff,
917 .flags = ADDR_TYPE_RT
918 },
919};
920
921static struct omap_hwmod_ocp_if omap2420_l4_wkup__gpio1 = {
922 .master = &omap2420_l4_wkup_hwmod,
923 .slave = &omap2420_gpio1_hwmod,
924 .clk = "gpios_ick",
925 .addr = omap2420_gpio1_addr_space,
926 .addr_cnt = ARRAY_SIZE(omap2420_gpio1_addr_space),
927 .user = OCP_USER_MPU | OCP_USER_SDMA,
928};
929
930/* l4_wkup -> gpio2 */
931static struct omap_hwmod_addr_space omap2420_gpio2_addr_space[] = {
932 {
933 .pa_start = 0x4801a000,
934 .pa_end = 0x4801a1ff,
935 .flags = ADDR_TYPE_RT
936 },
937};
938
939static struct omap_hwmod_ocp_if omap2420_l4_wkup__gpio2 = {
940 .master = &omap2420_l4_wkup_hwmod,
941 .slave = &omap2420_gpio2_hwmod,
942 .clk = "gpios_ick",
943 .addr = omap2420_gpio2_addr_space,
944 .addr_cnt = ARRAY_SIZE(omap2420_gpio2_addr_space),
945 .user = OCP_USER_MPU | OCP_USER_SDMA,
946};
947
948/* l4_wkup -> gpio3 */
949static struct omap_hwmod_addr_space omap2420_gpio3_addr_space[] = {
950 {
951 .pa_start = 0x4801c000,
952 .pa_end = 0x4801c1ff,
953 .flags = ADDR_TYPE_RT
954 },
955};
956
957static struct omap_hwmod_ocp_if omap2420_l4_wkup__gpio3 = {
958 .master = &omap2420_l4_wkup_hwmod,
959 .slave = &omap2420_gpio3_hwmod,
960 .clk = "gpios_ick",
961 .addr = omap2420_gpio3_addr_space,
962 .addr_cnt = ARRAY_SIZE(omap2420_gpio3_addr_space),
963 .user = OCP_USER_MPU | OCP_USER_SDMA,
964};
965
966/* l4_wkup -> gpio4 */
967static struct omap_hwmod_addr_space omap2420_gpio4_addr_space[] = {
968 {
969 .pa_start = 0x4801e000,
970 .pa_end = 0x4801e1ff,
971 .flags = ADDR_TYPE_RT
972 },
973};
974
975static struct omap_hwmod_ocp_if omap2420_l4_wkup__gpio4 = {
976 .master = &omap2420_l4_wkup_hwmod,
977 .slave = &omap2420_gpio4_hwmod,
978 .clk = "gpios_ick",
979 .addr = omap2420_gpio4_addr_space,
980 .addr_cnt = ARRAY_SIZE(omap2420_gpio4_addr_space),
981 .user = OCP_USER_MPU | OCP_USER_SDMA,
982};
983
984/* gpio dev_attr */
985static struct omap_gpio_dev_attr gpio_dev_attr = {
986 .bank_width = 32,
987 .dbck_flag = false,
988};
989
990static struct omap_hwmod_class_sysconfig omap242x_gpio_sysc = {
991 .rev_offs = 0x0000,
992 .sysc_offs = 0x0010,
993 .syss_offs = 0x0014,
994 .sysc_flags = (SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE |
995 SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE),
996 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
997 .sysc_fields = &omap_hwmod_sysc_type1,
998};
999
1000/*
1001 * 'gpio' class
1002 * general purpose io module
1003 */
1004static struct omap_hwmod_class omap242x_gpio_hwmod_class = {
1005 .name = "gpio",
1006 .sysc = &omap242x_gpio_sysc,
1007 .rev = 0,
1008};
1009
1010/* gpio1 */
1011static struct omap_hwmod_irq_info omap242x_gpio1_irqs[] = {
1012 { .irq = 29 }, /* INT_24XX_GPIO_BANK1 */
1013};
1014
1015static struct omap_hwmod_ocp_if *omap2420_gpio1_slaves[] = {
1016 &omap2420_l4_wkup__gpio1,
1017};
1018
1019static struct omap_hwmod omap2420_gpio1_hwmod = {
1020 .name = "gpio1",
1021 .mpu_irqs = omap242x_gpio1_irqs,
1022 .mpu_irqs_cnt = ARRAY_SIZE(omap242x_gpio1_irqs),
1023 .main_clk = "gpios_fck",
1024 .prcm = {
1025 .omap2 = {
1026 .prcm_reg_id = 1,
1027 .module_bit = OMAP24XX_EN_GPIOS_SHIFT,
1028 .module_offs = WKUP_MOD,
1029 .idlest_reg_id = 1,
1030 .idlest_idle_bit = OMAP24XX_ST_GPIOS_SHIFT,
1031 },
1032 },
1033 .slaves = omap2420_gpio1_slaves,
1034 .slaves_cnt = ARRAY_SIZE(omap2420_gpio1_slaves),
1035 .class = &omap242x_gpio_hwmod_class,
1036 .dev_attr = &gpio_dev_attr,
1037 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
1038};
1039
1040/* gpio2 */
1041static struct omap_hwmod_irq_info omap242x_gpio2_irqs[] = {
1042 { .irq = 30 }, /* INT_24XX_GPIO_BANK2 */
1043};
1044
1045static struct omap_hwmod_ocp_if *omap2420_gpio2_slaves[] = {
1046 &omap2420_l4_wkup__gpio2,
1047};
1048
1049static struct omap_hwmod omap2420_gpio2_hwmod = {
1050 .name = "gpio2",
1051 .mpu_irqs = omap242x_gpio2_irqs,
1052 .mpu_irqs_cnt = ARRAY_SIZE(omap242x_gpio2_irqs),
1053 .main_clk = "gpios_fck",
1054 .prcm = {
1055 .omap2 = {
1056 .prcm_reg_id = 1,
1057 .module_bit = OMAP24XX_EN_GPIOS_SHIFT,
1058 .module_offs = WKUP_MOD,
1059 .idlest_reg_id = 1,
1060 .idlest_idle_bit = OMAP24XX_ST_GPIOS_SHIFT,
1061 },
1062 },
1063 .slaves = omap2420_gpio2_slaves,
1064 .slaves_cnt = ARRAY_SIZE(omap2420_gpio2_slaves),
1065 .class = &omap242x_gpio_hwmod_class,
1066 .dev_attr = &gpio_dev_attr,
1067 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
1068};
1069
1070/* gpio3 */
1071static struct omap_hwmod_irq_info omap242x_gpio3_irqs[] = {
1072 { .irq = 31 }, /* INT_24XX_GPIO_BANK3 */
1073};
1074
1075static struct omap_hwmod_ocp_if *omap2420_gpio3_slaves[] = {
1076 &omap2420_l4_wkup__gpio3,
1077};
1078
1079static struct omap_hwmod omap2420_gpio3_hwmod = {
1080 .name = "gpio3",
1081 .mpu_irqs = omap242x_gpio3_irqs,
1082 .mpu_irqs_cnt = ARRAY_SIZE(omap242x_gpio3_irqs),
1083 .main_clk = "gpios_fck",
1084 .prcm = {
1085 .omap2 = {
1086 .prcm_reg_id = 1,
1087 .module_bit = OMAP24XX_EN_GPIOS_SHIFT,
1088 .module_offs = WKUP_MOD,
1089 .idlest_reg_id = 1,
1090 .idlest_idle_bit = OMAP24XX_ST_GPIOS_SHIFT,
1091 },
1092 },
1093 .slaves = omap2420_gpio3_slaves,
1094 .slaves_cnt = ARRAY_SIZE(omap2420_gpio3_slaves),
1095 .class = &omap242x_gpio_hwmod_class,
1096 .dev_attr = &gpio_dev_attr,
1097 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
1098};
1099
1100/* gpio4 */
1101static struct omap_hwmod_irq_info omap242x_gpio4_irqs[] = {
1102 { .irq = 32 }, /* INT_24XX_GPIO_BANK4 */
1103};
1104
1105static struct omap_hwmod_ocp_if *omap2420_gpio4_slaves[] = {
1106 &omap2420_l4_wkup__gpio4,
1107};
1108
1109static struct omap_hwmod omap2420_gpio4_hwmod = {
1110 .name = "gpio4",
1111 .mpu_irqs = omap242x_gpio4_irqs,
1112 .mpu_irqs_cnt = ARRAY_SIZE(omap242x_gpio4_irqs),
1113 .main_clk = "gpios_fck",
1114 .prcm = {
1115 .omap2 = {
1116 .prcm_reg_id = 1,
1117 .module_bit = OMAP24XX_EN_GPIOS_SHIFT,
1118 .module_offs = WKUP_MOD,
1119 .idlest_reg_id = 1,
1120 .idlest_idle_bit = OMAP24XX_ST_GPIOS_SHIFT,
1121 },
1122 },
1123 .slaves = omap2420_gpio4_slaves,
1124 .slaves_cnt = ARRAY_SIZE(omap2420_gpio4_slaves),
1125 .class = &omap242x_gpio_hwmod_class,
1126 .dev_attr = &gpio_dev_attr,
1127 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
1128};
1129
G, Manjunath Kondaiah745685df92010-12-20 18:27:18 -08001130/* system dma */
1131static struct omap_hwmod_class_sysconfig omap2420_dma_sysc = {
1132 .rev_offs = 0x0000,
1133 .sysc_offs = 0x002c,
1134 .syss_offs = 0x0028,
1135 .sysc_flags = (SYSC_HAS_SOFTRESET | SYSC_HAS_MIDLEMODE |
1136 SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_EMUFREE |
1137 SYSC_HAS_AUTOIDLE),
1138 .idlemodes = (MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
1139 .sysc_fields = &omap_hwmod_sysc_type1,
1140};
1141
1142static struct omap_hwmod_class omap2420_dma_hwmod_class = {
1143 .name = "dma",
1144 .sysc = &omap2420_dma_sysc,
1145};
1146
1147/* dma attributes */
1148static struct omap_dma_dev_attr dma_dev_attr = {
1149 .dev_caps = RESERVE_CHANNEL | DMA_LINKED_LCH | GLOBAL_PRIORITY |
1150 IS_CSSA_32 | IS_CDSA_32,
1151 .lch_count = 32,
1152};
1153
1154static struct omap_hwmod_irq_info omap2420_dma_system_irqs[] = {
1155 { .name = "0", .irq = 12 }, /* INT_24XX_SDMA_IRQ0 */
1156 { .name = "1", .irq = 13 }, /* INT_24XX_SDMA_IRQ1 */
1157 { .name = "2", .irq = 14 }, /* INT_24XX_SDMA_IRQ2 */
1158 { .name = "3", .irq = 15 }, /* INT_24XX_SDMA_IRQ3 */
1159};
1160
1161static struct omap_hwmod_addr_space omap2420_dma_system_addrs[] = {
1162 {
1163 .pa_start = 0x48056000,
1164 .pa_end = 0x4a0560ff,
1165 .flags = ADDR_TYPE_RT
1166 },
1167};
1168
1169/* dma_system -> L3 */
1170static struct omap_hwmod_ocp_if omap2420_dma_system__l3 = {
1171 .master = &omap2420_dma_system_hwmod,
1172 .slave = &omap2420_l3_main_hwmod,
1173 .clk = "core_l3_ck",
1174 .user = OCP_USER_MPU | OCP_USER_SDMA,
1175};
1176
1177/* dma_system master ports */
1178static struct omap_hwmod_ocp_if *omap2420_dma_system_masters[] = {
1179 &omap2420_dma_system__l3,
1180};
1181
1182/* l4_core -> dma_system */
1183static struct omap_hwmod_ocp_if omap2420_l4_core__dma_system = {
1184 .master = &omap2420_l4_core_hwmod,
1185 .slave = &omap2420_dma_system_hwmod,
1186 .clk = "sdma_ick",
1187 .addr = omap2420_dma_system_addrs,
1188 .addr_cnt = ARRAY_SIZE(omap2420_dma_system_addrs),
1189 .user = OCP_USER_MPU | OCP_USER_SDMA,
1190};
1191
1192/* dma_system slave ports */
1193static struct omap_hwmod_ocp_if *omap2420_dma_system_slaves[] = {
1194 &omap2420_l4_core__dma_system,
1195};
1196
1197static struct omap_hwmod omap2420_dma_system_hwmod = {
1198 .name = "dma",
1199 .class = &omap2420_dma_hwmod_class,
1200 .mpu_irqs = omap2420_dma_system_irqs,
1201 .mpu_irqs_cnt = ARRAY_SIZE(omap2420_dma_system_irqs),
1202 .main_clk = "core_l3_ck",
1203 .slaves = omap2420_dma_system_slaves,
1204 .slaves_cnt = ARRAY_SIZE(omap2420_dma_system_slaves),
1205 .masters = omap2420_dma_system_masters,
1206 .masters_cnt = ARRAY_SIZE(omap2420_dma_system_masters),
1207 .dev_attr = &dma_dev_attr,
1208 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
1209 .flags = HWMOD_NO_IDLEST,
1210};
1211
Charulatha V617871d2011-02-17 09:53:09 -08001212/*
Omar Ramirez Lunafca1ab52011-02-24 12:51:32 -08001213 * 'mailbox' class
1214 * mailbox module allowing communication between the on-chip processors
1215 * using a queued mailbox-interrupt mechanism.
1216 */
1217
1218static struct omap_hwmod_class_sysconfig omap2420_mailbox_sysc = {
1219 .rev_offs = 0x000,
1220 .sysc_offs = 0x010,
1221 .syss_offs = 0x014,
1222 .sysc_flags = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
1223 SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE),
1224 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
1225 .sysc_fields = &omap_hwmod_sysc_type1,
1226};
1227
1228static struct omap_hwmod_class omap2420_mailbox_hwmod_class = {
1229 .name = "mailbox",
1230 .sysc = &omap2420_mailbox_sysc,
1231};
1232
1233/* mailbox */
1234static struct omap_hwmod omap2420_mailbox_hwmod;
1235static struct omap_hwmod_irq_info omap2420_mailbox_irqs[] = {
1236 { .name = "dsp", .irq = 26 },
1237 { .name = "iva", .irq = 34 },
1238};
1239
1240static struct omap_hwmod_addr_space omap2420_mailbox_addrs[] = {
1241 {
1242 .pa_start = 0x48094000,
1243 .pa_end = 0x480941ff,
1244 .flags = ADDR_TYPE_RT,
1245 },
1246};
1247
1248/* l4_core -> mailbox */
1249static struct omap_hwmod_ocp_if omap2420_l4_core__mailbox = {
1250 .master = &omap2420_l4_core_hwmod,
1251 .slave = &omap2420_mailbox_hwmod,
1252 .addr = omap2420_mailbox_addrs,
1253 .addr_cnt = ARRAY_SIZE(omap2420_mailbox_addrs),
1254 .user = OCP_USER_MPU | OCP_USER_SDMA,
1255};
1256
1257/* mailbox slave ports */
1258static struct omap_hwmod_ocp_if *omap2420_mailbox_slaves[] = {
1259 &omap2420_l4_core__mailbox,
1260};
1261
1262static struct omap_hwmod omap2420_mailbox_hwmod = {
1263 .name = "mailbox",
1264 .class = &omap2420_mailbox_hwmod_class,
1265 .mpu_irqs = omap2420_mailbox_irqs,
1266 .mpu_irqs_cnt = ARRAY_SIZE(omap2420_mailbox_irqs),
1267 .main_clk = "mailboxes_ick",
1268 .prcm = {
1269 .omap2 = {
1270 .prcm_reg_id = 1,
1271 .module_bit = OMAP24XX_EN_MAILBOXES_SHIFT,
1272 .module_offs = CORE_MOD,
1273 .idlest_reg_id = 1,
1274 .idlest_idle_bit = OMAP24XX_ST_MAILBOXES_SHIFT,
1275 },
1276 },
1277 .slaves = omap2420_mailbox_slaves,
1278 .slaves_cnt = ARRAY_SIZE(omap2420_mailbox_slaves),
1279 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
1280};
1281
1282/*
Charulatha V617871d2011-02-17 09:53:09 -08001283 * 'mcspi' class
1284 * multichannel serial port interface (mcspi) / master/slave synchronous serial
1285 * bus
1286 */
1287
1288static struct omap_hwmod_class_sysconfig omap2420_mcspi_sysc = {
1289 .rev_offs = 0x0000,
1290 .sysc_offs = 0x0010,
1291 .syss_offs = 0x0014,
1292 .sysc_flags = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
1293 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
1294 SYSC_HAS_AUTOIDLE | SYSS_HAS_RESET_STATUS),
1295 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
1296 .sysc_fields = &omap_hwmod_sysc_type1,
1297};
1298
1299static struct omap_hwmod_class omap2420_mcspi_class = {
1300 .name = "mcspi",
1301 .sysc = &omap2420_mcspi_sysc,
1302 .rev = OMAP2_MCSPI_REV,
1303};
1304
1305/* mcspi1 */
1306static struct omap_hwmod_irq_info omap2420_mcspi1_mpu_irqs[] = {
1307 { .irq = 65 },
1308};
1309
1310static struct omap_hwmod_dma_info omap2420_mcspi1_sdma_reqs[] = {
1311 { .name = "tx0", .dma_req = 35 }, /* DMA_SPI1_TX0 */
1312 { .name = "rx0", .dma_req = 36 }, /* DMA_SPI1_RX0 */
1313 { .name = "tx1", .dma_req = 37 }, /* DMA_SPI1_TX1 */
1314 { .name = "rx1", .dma_req = 38 }, /* DMA_SPI1_RX1 */
1315 { .name = "tx2", .dma_req = 39 }, /* DMA_SPI1_TX2 */
1316 { .name = "rx2", .dma_req = 40 }, /* DMA_SPI1_RX2 */
1317 { .name = "tx3", .dma_req = 41 }, /* DMA_SPI1_TX3 */
1318 { .name = "rx3", .dma_req = 42 }, /* DMA_SPI1_RX3 */
1319};
1320
1321static struct omap_hwmod_ocp_if *omap2420_mcspi1_slaves[] = {
1322 &omap2420_l4_core__mcspi1,
1323};
1324
1325static struct omap2_mcspi_dev_attr omap_mcspi1_dev_attr = {
1326 .num_chipselect = 4,
1327};
1328
1329static struct omap_hwmod omap2420_mcspi1_hwmod = {
1330 .name = "mcspi1_hwmod",
1331 .mpu_irqs = omap2420_mcspi1_mpu_irqs,
1332 .mpu_irqs_cnt = ARRAY_SIZE(omap2420_mcspi1_mpu_irqs),
1333 .sdma_reqs = omap2420_mcspi1_sdma_reqs,
1334 .sdma_reqs_cnt = ARRAY_SIZE(omap2420_mcspi1_sdma_reqs),
1335 .main_clk = "mcspi1_fck",
1336 .prcm = {
1337 .omap2 = {
1338 .module_offs = CORE_MOD,
1339 .prcm_reg_id = 1,
1340 .module_bit = OMAP24XX_EN_MCSPI1_SHIFT,
1341 .idlest_reg_id = 1,
1342 .idlest_idle_bit = OMAP24XX_ST_MCSPI1_SHIFT,
1343 },
1344 },
1345 .slaves = omap2420_mcspi1_slaves,
1346 .slaves_cnt = ARRAY_SIZE(omap2420_mcspi1_slaves),
1347 .class = &omap2420_mcspi_class,
1348 .dev_attr = &omap_mcspi1_dev_attr,
1349 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
1350};
1351
1352/* mcspi2 */
1353static struct omap_hwmod_irq_info omap2420_mcspi2_mpu_irqs[] = {
1354 { .irq = 66 },
1355};
1356
1357static struct omap_hwmod_dma_info omap2420_mcspi2_sdma_reqs[] = {
1358 { .name = "tx0", .dma_req = 43 }, /* DMA_SPI2_TX0 */
1359 { .name = "rx0", .dma_req = 44 }, /* DMA_SPI2_RX0 */
1360 { .name = "tx1", .dma_req = 45 }, /* DMA_SPI2_TX1 */
1361 { .name = "rx1", .dma_req = 46 }, /* DMA_SPI2_RX1 */
1362};
1363
1364static struct omap_hwmod_ocp_if *omap2420_mcspi2_slaves[] = {
1365 &omap2420_l4_core__mcspi2,
1366};
1367
1368static struct omap2_mcspi_dev_attr omap_mcspi2_dev_attr = {
1369 .num_chipselect = 2,
1370};
1371
1372static struct omap_hwmod omap2420_mcspi2_hwmod = {
1373 .name = "mcspi2_hwmod",
1374 .mpu_irqs = omap2420_mcspi2_mpu_irqs,
1375 .mpu_irqs_cnt = ARRAY_SIZE(omap2420_mcspi2_mpu_irqs),
1376 .sdma_reqs = omap2420_mcspi2_sdma_reqs,
1377 .sdma_reqs_cnt = ARRAY_SIZE(omap2420_mcspi2_sdma_reqs),
1378 .main_clk = "mcspi2_fck",
1379 .prcm = {
1380 .omap2 = {
1381 .module_offs = CORE_MOD,
1382 .prcm_reg_id = 1,
1383 .module_bit = OMAP24XX_EN_MCSPI2_SHIFT,
1384 .idlest_reg_id = 1,
1385 .idlest_idle_bit = OMAP24XX_ST_MCSPI2_SHIFT,
1386 },
1387 },
1388 .slaves = omap2420_mcspi2_slaves,
1389 .slaves_cnt = ARRAY_SIZE(omap2420_mcspi2_slaves),
1390 .class = &omap2420_mcspi_class,
1391 .dev_attr = &omap_mcspi2_dev_attr,
1392 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
1393};
1394
Charulatha V3cb72fa2011-02-24 12:51:46 -08001395/*
1396 * 'mcbsp' class
1397 * multi channel buffered serial port controller
1398 */
1399
1400static struct omap_hwmod_class omap2420_mcbsp_hwmod_class = {
1401 .name = "mcbsp",
1402};
1403
1404/* mcbsp1 */
1405static struct omap_hwmod_irq_info omap2420_mcbsp1_irqs[] = {
1406 { .name = "tx", .irq = 59 },
1407 { .name = "rx", .irq = 60 },
1408};
1409
1410static struct omap_hwmod_dma_info omap2420_mcbsp1_sdma_chs[] = {
1411 { .name = "rx", .dma_req = 32 },
1412 { .name = "tx", .dma_req = 31 },
1413};
1414
1415static struct omap_hwmod_addr_space omap2420_mcbsp1_addrs[] = {
1416 {
1417 .name = "mpu",
1418 .pa_start = 0x48074000,
1419 .pa_end = 0x480740ff,
1420 .flags = ADDR_TYPE_RT
1421 },
1422};
1423
1424/* l4_core -> mcbsp1 */
1425static struct omap_hwmod_ocp_if omap2420_l4_core__mcbsp1 = {
1426 .master = &omap2420_l4_core_hwmod,
1427 .slave = &omap2420_mcbsp1_hwmod,
1428 .clk = "mcbsp1_ick",
1429 .addr = omap2420_mcbsp1_addrs,
1430 .addr_cnt = ARRAY_SIZE(omap2420_mcbsp1_addrs),
1431 .user = OCP_USER_MPU | OCP_USER_SDMA,
1432};
1433
1434/* mcbsp1 slave ports */
1435static struct omap_hwmod_ocp_if *omap2420_mcbsp1_slaves[] = {
1436 &omap2420_l4_core__mcbsp1,
1437};
1438
1439static struct omap_hwmod omap2420_mcbsp1_hwmod = {
1440 .name = "mcbsp1",
1441 .class = &omap2420_mcbsp_hwmod_class,
1442 .mpu_irqs = omap2420_mcbsp1_irqs,
1443 .mpu_irqs_cnt = ARRAY_SIZE(omap2420_mcbsp1_irqs),
1444 .sdma_reqs = omap2420_mcbsp1_sdma_chs,
1445 .sdma_reqs_cnt = ARRAY_SIZE(omap2420_mcbsp1_sdma_chs),
1446 .main_clk = "mcbsp1_fck",
1447 .prcm = {
1448 .omap2 = {
1449 .prcm_reg_id = 1,
1450 .module_bit = OMAP24XX_EN_MCBSP1_SHIFT,
1451 .module_offs = CORE_MOD,
1452 .idlest_reg_id = 1,
1453 .idlest_idle_bit = OMAP24XX_ST_MCBSP1_SHIFT,
1454 },
1455 },
1456 .slaves = omap2420_mcbsp1_slaves,
1457 .slaves_cnt = ARRAY_SIZE(omap2420_mcbsp1_slaves),
1458 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
1459};
1460
1461/* mcbsp2 */
1462static struct omap_hwmod_irq_info omap2420_mcbsp2_irqs[] = {
1463 { .name = "tx", .irq = 62 },
1464 { .name = "rx", .irq = 63 },
1465};
1466
1467static struct omap_hwmod_dma_info omap2420_mcbsp2_sdma_chs[] = {
1468 { .name = "rx", .dma_req = 34 },
1469 { .name = "tx", .dma_req = 33 },
1470};
1471
1472static struct omap_hwmod_addr_space omap2420_mcbsp2_addrs[] = {
1473 {
1474 .name = "mpu",
1475 .pa_start = 0x48076000,
1476 .pa_end = 0x480760ff,
1477 .flags = ADDR_TYPE_RT
1478 },
1479};
1480
1481/* l4_core -> mcbsp2 */
1482static struct omap_hwmod_ocp_if omap2420_l4_core__mcbsp2 = {
1483 .master = &omap2420_l4_core_hwmod,
1484 .slave = &omap2420_mcbsp2_hwmod,
1485 .clk = "mcbsp2_ick",
1486 .addr = omap2420_mcbsp2_addrs,
1487 .addr_cnt = ARRAY_SIZE(omap2420_mcbsp2_addrs),
1488 .user = OCP_USER_MPU | OCP_USER_SDMA,
1489};
1490
1491/* mcbsp2 slave ports */
1492static struct omap_hwmod_ocp_if *omap2420_mcbsp2_slaves[] = {
1493 &omap2420_l4_core__mcbsp2,
1494};
1495
1496static struct omap_hwmod omap2420_mcbsp2_hwmod = {
1497 .name = "mcbsp2",
1498 .class = &omap2420_mcbsp_hwmod_class,
1499 .mpu_irqs = omap2420_mcbsp2_irqs,
1500 .mpu_irqs_cnt = ARRAY_SIZE(omap2420_mcbsp2_irqs),
1501 .sdma_reqs = omap2420_mcbsp2_sdma_chs,
1502 .sdma_reqs_cnt = ARRAY_SIZE(omap2420_mcbsp2_sdma_chs),
1503 .main_clk = "mcbsp2_fck",
1504 .prcm = {
1505 .omap2 = {
1506 .prcm_reg_id = 1,
1507 .module_bit = OMAP24XX_EN_MCBSP2_SHIFT,
1508 .module_offs = CORE_MOD,
1509 .idlest_reg_id = 1,
1510 .idlest_idle_bit = OMAP24XX_ST_MCBSP2_SHIFT,
1511 },
1512 },
1513 .slaves = omap2420_mcbsp2_slaves,
1514 .slaves_cnt = ARRAY_SIZE(omap2420_mcbsp2_slaves),
1515 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
1516};
1517
Paul Walmsley02bfc032009-09-03 20:14:05 +03001518static __initdata struct omap_hwmod *omap2420_hwmods[] = {
Kevin Hilman4a7cf902010-07-26 16:34:32 -06001519 &omap2420_l3_main_hwmod,
Paul Walmsley02bfc032009-09-03 20:14:05 +03001520 &omap2420_l4_core_hwmod,
1521 &omap2420_l4_wkup_hwmod,
1522 &omap2420_mpu_hwmod,
Paul Walmsley08072ac2010-07-26 16:34:33 -06001523 &omap2420_iva_hwmod,
Varadarajan, Charulathaa714b9c2010-09-23 20:02:39 +05301524 &omap2420_wd_timer2_hwmod,
Kevin Hilman046465b2010-09-27 20:19:30 +05301525 &omap2420_uart1_hwmod,
1526 &omap2420_uart2_hwmod,
1527 &omap2420_uart3_hwmod,
Senthilvadivu Guruswamy996746c2011-02-22 09:50:36 +02001528 /* dss class */
1529 &omap2420_dss_core_hwmod,
1530 &omap2420_dss_dispc_hwmod,
1531 &omap2420_dss_rfbi_hwmod,
1532 &omap2420_dss_venc_hwmod,
1533 /* i2c class */
Paul Walmsley20042902010-09-30 02:40:12 +05301534 &omap2420_i2c1_hwmod,
1535 &omap2420_i2c2_hwmod,
Varadarajan, Charulatha59c348c2010-12-07 16:26:56 -08001536
1537 /* gpio class */
1538 &omap2420_gpio1_hwmod,
1539 &omap2420_gpio2_hwmod,
1540 &omap2420_gpio3_hwmod,
1541 &omap2420_gpio4_hwmod,
G, Manjunath Kondaiah745685df92010-12-20 18:27:18 -08001542
1543 /* dma_system class*/
1544 &omap2420_dma_system_hwmod,
Charulatha V617871d2011-02-17 09:53:09 -08001545
Omar Ramirez Lunafca1ab52011-02-24 12:51:32 -08001546 /* mailbox class */
1547 &omap2420_mailbox_hwmod,
1548
Charulatha V3cb72fa2011-02-24 12:51:46 -08001549 /* mcbsp class */
1550 &omap2420_mcbsp1_hwmod,
1551 &omap2420_mcbsp2_hwmod,
1552
Charulatha V617871d2011-02-17 09:53:09 -08001553 /* mcspi class */
1554 &omap2420_mcspi1_hwmod,
1555 &omap2420_mcspi2_hwmod,
Paul Walmsley02bfc032009-09-03 20:14:05 +03001556 NULL,
1557};
1558
Paul Walmsley73591542010-02-22 22:09:32 -07001559int __init omap2420_hwmod_init(void)
1560{
1561 return omap_hwmod_init(omap2420_hwmods);
1562}