I2C: OMAP1/OMAP2+: create omap I2C functionality flags for each cpu_... test
[deliverable/linux.git] / arch / arm / mach-omap2 / omap_hwmod_2420_data.c
CommitLineData
02bfc030 1/*
7359154e 2 * omap_hwmod_2420_data.c - hardware modules present on the OMAP2420 chips
02bfc030 3 *
78183f3f 4 * Copyright (C) 2009-2011 Nokia Corporation
02bfc030
PW
5 * 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?
7359154e 12 * XXX these should be marked initdata for multi-OMAP kernels
02bfc030 13 */
ce491cf8 14#include <plat/omap_hwmod.h>
02bfc030 15#include <mach/irqs.h>
ce491cf8
TL
16#include <plat/cpu.h>
17#include <plat/dma.h>
046465b7 18#include <plat/serial.h>
2004290f 19#include <plat/i2c.h>
59c348c3 20#include <plat/gpio.h>
617871de 21#include <plat/mcspi.h>
eddb1262 22#include <plat/dmtimer.h>
996746ca
SG
23#include <plat/l3_2xxx.h>
24#include <plat/l4_2xxx.h>
02bfc030 25
43b40992
PW
26#include "omap_hwmod_common_data.h"
27
a714b9cf 28#include "cm-regbits-24xx.h"
2004290f 29#include "prm-regbits-24xx.h"
ff2516fb 30#include "wd_timer.h"
02bfc030 31
7359154e
PW
32/*
33 * OMAP2420 hardware module integration data
34 *
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
38 * elsewhere.
39 */
40
02bfc030 41static struct omap_hwmod omap2420_mpu_hwmod;
08072acf 42static struct omap_hwmod omap2420_iva_hwmod;
4a7cf90a 43static struct omap_hwmod omap2420_l3_main_hwmod;
02bfc030 44static struct omap_hwmod omap2420_l4_core_hwmod;
996746ca
SG
45static struct omap_hwmod omap2420_dss_core_hwmod;
46static struct omap_hwmod omap2420_dss_dispc_hwmod;
47static struct omap_hwmod omap2420_dss_rfbi_hwmod;
48static struct omap_hwmod omap2420_dss_venc_hwmod;
a714b9cf 49static struct omap_hwmod omap2420_wd_timer2_hwmod;
59c348c3
VC
50static struct omap_hwmod omap2420_gpio1_hwmod;
51static struct omap_hwmod omap2420_gpio2_hwmod;
52static struct omap_hwmod omap2420_gpio3_hwmod;
53static struct omap_hwmod omap2420_gpio4_hwmod;
745685df 54static struct omap_hwmod omap2420_dma_system_hwmod;
617871de
C
55static struct omap_hwmod omap2420_mcspi1_hwmod;
56static struct omap_hwmod omap2420_mcspi2_hwmod;
02bfc030
PW
57
58/* L3 -> L4_CORE interface */
4a7cf90a
KH
59static struct omap_hwmod_ocp_if omap2420_l3_main__l4_core = {
60 .master = &omap2420_l3_main_hwmod,
02bfc030
PW
61 .slave = &omap2420_l4_core_hwmod,
62 .user = OCP_USER_MPU | OCP_USER_SDMA,
63};
64
65/* MPU -> L3 interface */
4a7cf90a 66static struct omap_hwmod_ocp_if omap2420_mpu__l3_main = {
02bfc030 67 .master = &omap2420_mpu_hwmod,
4a7cf90a 68 .slave = &omap2420_l3_main_hwmod,
02bfc030
PW
69 .user = OCP_USER_MPU,
70};
71
72/* Slave interfaces on the L3 interconnect */
4a7cf90a
KH
73static struct omap_hwmod_ocp_if *omap2420_l3_main_slaves[] = {
74 &omap2420_mpu__l3_main,
02bfc030
PW
75};
76
996746ca
SG
77/* DSS -> l3 */
78static struct omap_hwmod_ocp_if omap2420_dss__l3 = {
79 .master = &omap2420_dss_core_hwmod,
80 .slave = &omap2420_l3_main_hwmod,
81 .fw = {
82 .omap2 = {
83 .l3_perm_bit = OMAP2_L3_CORE_FW_CONNID_DSS,
84 .flags = OMAP_FIREWALL_L3,
85 }
86 },
87 .user = OCP_USER_MPU | OCP_USER_SDMA,
88};
89
02bfc030 90/* Master interfaces on the L3 interconnect */
4a7cf90a
KH
91static struct omap_hwmod_ocp_if *omap2420_l3_main_masters[] = {
92 &omap2420_l3_main__l4_core,
02bfc030
PW
93};
94
95/* L3 */
4a7cf90a 96static struct omap_hwmod omap2420_l3_main_hwmod = {
fa98347e 97 .name = "l3_main",
43b40992 98 .class = &l3_hwmod_class,
4a7cf90a
KH
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),
2eb1875d
KH
103 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
104 .flags = HWMOD_NO_IDLEST,
02bfc030
PW
105};
106
107static struct omap_hwmod omap2420_l4_wkup_hwmod;
046465b7
KH
108static struct omap_hwmod omap2420_uart1_hwmod;
109static struct omap_hwmod omap2420_uart2_hwmod;
110static struct omap_hwmod omap2420_uart3_hwmod;
2004290f
PW
111static struct omap_hwmod omap2420_i2c1_hwmod;
112static struct omap_hwmod omap2420_i2c2_hwmod;
3cb72fa4
C
113static struct omap_hwmod omap2420_mcbsp1_hwmod;
114static struct omap_hwmod omap2420_mcbsp2_hwmod;
02bfc030 115
617871de 116/* l4 core -> mcspi1 interface */
617871de
C
117static struct omap_hwmod_ocp_if omap2420_l4_core__mcspi1 = {
118 .master = &omap2420_l4_core_hwmod,
119 .slave = &omap2420_mcspi1_hwmod,
120 .clk = "mcspi1_ick",
ded11383 121 .addr = omap2_mcspi1_addr_space,
617871de
C
122 .user = OCP_USER_MPU | OCP_USER_SDMA,
123};
124
125/* l4 core -> mcspi2 interface */
617871de
C
126static struct omap_hwmod_ocp_if omap2420_l4_core__mcspi2 = {
127 .master = &omap2420_l4_core_hwmod,
128 .slave = &omap2420_mcspi2_hwmod,
129 .clk = "mcspi2_ick",
ded11383 130 .addr = omap2_mcspi2_addr_space,
617871de
C
131 .user = OCP_USER_MPU | OCP_USER_SDMA,
132};
133
02bfc030
PW
134/* L4_CORE -> L4_WKUP interface */
135static struct omap_hwmod_ocp_if omap2420_l4_core__l4_wkup = {
136 .master = &omap2420_l4_core_hwmod,
137 .slave = &omap2420_l4_wkup_hwmod,
138 .user = OCP_USER_MPU | OCP_USER_SDMA,
139};
140
046465b7 141/* L4 CORE -> UART1 interface */
046465b7
KH
142static struct omap_hwmod_ocp_if omap2_l4_core__uart1 = {
143 .master = &omap2420_l4_core_hwmod,
144 .slave = &omap2420_uart1_hwmod,
145 .clk = "uart1_ick",
ded11383 146 .addr = omap2xxx_uart1_addr_space,
046465b7
KH
147 .user = OCP_USER_MPU | OCP_USER_SDMA,
148};
149
150/* L4 CORE -> UART2 interface */
046465b7
KH
151static struct omap_hwmod_ocp_if omap2_l4_core__uart2 = {
152 .master = &omap2420_l4_core_hwmod,
153 .slave = &omap2420_uart2_hwmod,
154 .clk = "uart2_ick",
ded11383 155 .addr = omap2xxx_uart2_addr_space,
046465b7
KH
156 .user = OCP_USER_MPU | OCP_USER_SDMA,
157};
158
159/* L4 PER -> UART3 interface */
046465b7
KH
160static struct omap_hwmod_ocp_if omap2_l4_core__uart3 = {
161 .master = &omap2420_l4_core_hwmod,
162 .slave = &omap2420_uart3_hwmod,
163 .clk = "uart3_ick",
ded11383 164 .addr = omap2xxx_uart3_addr_space,
046465b7
KH
165 .user = OCP_USER_MPU | OCP_USER_SDMA,
166};
167
2004290f 168/* L4 CORE -> I2C1 interface */
2004290f
PW
169static struct omap_hwmod_ocp_if omap2420_l4_core__i2c1 = {
170 .master = &omap2420_l4_core_hwmod,
171 .slave = &omap2420_i2c1_hwmod,
172 .clk = "i2c1_ick",
ded11383 173 .addr = omap2_i2c1_addr_space,
2004290f
PW
174 .user = OCP_USER_MPU | OCP_USER_SDMA,
175};
176
177/* L4 CORE -> I2C2 interface */
2004290f
PW
178static struct omap_hwmod_ocp_if omap2420_l4_core__i2c2 = {
179 .master = &omap2420_l4_core_hwmod,
180 .slave = &omap2420_i2c2_hwmod,
181 .clk = "i2c2_ick",
ded11383 182 .addr = omap2_i2c2_addr_space,
2004290f
PW
183 .user = OCP_USER_MPU | OCP_USER_SDMA,
184};
185
02bfc030
PW
186/* Slave interfaces on the L4_CORE interconnect */
187static struct omap_hwmod_ocp_if *omap2420_l4_core_slaves[] = {
4a7cf90a 188 &omap2420_l3_main__l4_core,
02bfc030
PW
189};
190
191/* Master interfaces on the L4_CORE interconnect */
192static struct omap_hwmod_ocp_if *omap2420_l4_core_masters[] = {
193 &omap2420_l4_core__l4_wkup,
046465b7
KH
194 &omap2_l4_core__uart1,
195 &omap2_l4_core__uart2,
196 &omap2_l4_core__uart3,
2004290f
PW
197 &omap2420_l4_core__i2c1,
198 &omap2420_l4_core__i2c2
02bfc030
PW
199};
200
201/* L4 CORE */
202static struct omap_hwmod omap2420_l4_core_hwmod = {
fa98347e 203 .name = "l4_core",
43b40992 204 .class = &l4_hwmod_class,
02bfc030
PW
205 .masters = omap2420_l4_core_masters,
206 .masters_cnt = ARRAY_SIZE(omap2420_l4_core_masters),
207 .slaves = omap2420_l4_core_slaves,
208 .slaves_cnt = ARRAY_SIZE(omap2420_l4_core_slaves),
2eb1875d
KH
209 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
210 .flags = HWMOD_NO_IDLEST,
02bfc030
PW
211};
212
213/* Slave interfaces on the L4_WKUP interconnect */
214static struct omap_hwmod_ocp_if *omap2420_l4_wkup_slaves[] = {
215 &omap2420_l4_core__l4_wkup,
216};
217
218/* Master interfaces on the L4_WKUP interconnect */
219static struct omap_hwmod_ocp_if *omap2420_l4_wkup_masters[] = {
220};
221
222/* L4 WKUP */
223static struct omap_hwmod omap2420_l4_wkup_hwmod = {
fa98347e 224 .name = "l4_wkup",
43b40992 225 .class = &l4_hwmod_class,
02bfc030
PW
226 .masters = omap2420_l4_wkup_masters,
227 .masters_cnt = ARRAY_SIZE(omap2420_l4_wkup_masters),
228 .slaves = omap2420_l4_wkup_slaves,
229 .slaves_cnt = ARRAY_SIZE(omap2420_l4_wkup_slaves),
2eb1875d
KH
230 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
231 .flags = HWMOD_NO_IDLEST,
02bfc030
PW
232};
233
234/* Master interfaces on the MPU device */
235static struct omap_hwmod_ocp_if *omap2420_mpu_masters[] = {
4a7cf90a 236 &omap2420_mpu__l3_main,
02bfc030
PW
237};
238
239/* MPU */
240static struct omap_hwmod omap2420_mpu_hwmod = {
5c2c0296 241 .name = "mpu",
43b40992 242 .class = &mpu_hwmod_class,
50ebdac2 243 .main_clk = "mpu_ck",
02bfc030
PW
244 .masters = omap2420_mpu_masters,
245 .masters_cnt = ARRAY_SIZE(omap2420_mpu_masters),
246 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
247};
248
08072acf
PW
249/*
250 * IVA1 interface data
251 */
252
253/* IVA <- L3 interface */
254static struct omap_hwmod_ocp_if omap2420_l3__iva = {
255 .master = &omap2420_l3_main_hwmod,
256 .slave = &omap2420_iva_hwmod,
257 .clk = "iva1_ifck",
258 .user = OCP_USER_MPU | OCP_USER_SDMA,
259};
260
261static struct omap_hwmod_ocp_if *omap2420_iva_masters[] = {
262 &omap2420_l3__iva,
263};
264
265/*
266 * IVA2 (IVA2)
267 */
268
269static struct omap_hwmod omap2420_iva_hwmod = {
270 .name = "iva",
271 .class = &iva_hwmod_class,
272 .masters = omap2420_iva_masters,
273 .masters_cnt = ARRAY_SIZE(omap2420_iva_masters),
274 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420)
275};
276
eddb1262
TG
277/* timer1 */
278static struct omap_hwmod omap2420_timer1_hwmod;
eddb1262
TG
279
280static struct omap_hwmod_addr_space omap2420_timer1_addrs[] = {
281 {
282 .pa_start = 0x48028000,
283 .pa_end = 0x48028000 + SZ_1K - 1,
284 .flags = ADDR_TYPE_RT
285 },
78183f3f 286 { }
eddb1262
TG
287};
288
289/* l4_wkup -> timer1 */
290static struct omap_hwmod_ocp_if omap2420_l4_wkup__timer1 = {
291 .master = &omap2420_l4_wkup_hwmod,
292 .slave = &omap2420_timer1_hwmod,
293 .clk = "gpt1_ick",
294 .addr = omap2420_timer1_addrs,
eddb1262
TG
295 .user = OCP_USER_MPU | OCP_USER_SDMA,
296};
297
298/* timer1 slave port */
299static struct omap_hwmod_ocp_if *omap2420_timer1_slaves[] = {
300 &omap2420_l4_wkup__timer1,
301};
302
303/* timer1 hwmod */
304static struct omap_hwmod omap2420_timer1_hwmod = {
305 .name = "timer1",
0d619a89 306 .mpu_irqs = omap2_timer1_mpu_irqs,
eddb1262
TG
307 .main_clk = "gpt1_fck",
308 .prcm = {
309 .omap2 = {
310 .prcm_reg_id = 1,
311 .module_bit = OMAP24XX_EN_GPT1_SHIFT,
312 .module_offs = WKUP_MOD,
313 .idlest_reg_id = 1,
314 .idlest_idle_bit = OMAP24XX_ST_GPT1_SHIFT,
315 },
316 },
317 .slaves = omap2420_timer1_slaves,
318 .slaves_cnt = ARRAY_SIZE(omap2420_timer1_slaves),
273b9465 319 .class = &omap2xxx_timer_hwmod_class,
eddb1262
TG
320 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420)
321};
322
323/* timer2 */
324static struct omap_hwmod omap2420_timer2_hwmod;
eddb1262
TG
325
326/* l4_core -> timer2 */
327static struct omap_hwmod_ocp_if omap2420_l4_core__timer2 = {
328 .master = &omap2420_l4_core_hwmod,
329 .slave = &omap2420_timer2_hwmod,
330 .clk = "gpt2_ick",
ded11383 331 .addr = omap2xxx_timer2_addrs,
eddb1262
TG
332 .user = OCP_USER_MPU | OCP_USER_SDMA,
333};
334
335/* timer2 slave port */
336static struct omap_hwmod_ocp_if *omap2420_timer2_slaves[] = {
337 &omap2420_l4_core__timer2,
338};
339
340/* timer2 hwmod */
341static struct omap_hwmod omap2420_timer2_hwmod = {
342 .name = "timer2",
0d619a89 343 .mpu_irqs = omap2_timer2_mpu_irqs,
eddb1262
TG
344 .main_clk = "gpt2_fck",
345 .prcm = {
346 .omap2 = {
347 .prcm_reg_id = 1,
348 .module_bit = OMAP24XX_EN_GPT2_SHIFT,
349 .module_offs = CORE_MOD,
350 .idlest_reg_id = 1,
351 .idlest_idle_bit = OMAP24XX_ST_GPT2_SHIFT,
352 },
353 },
354 .slaves = omap2420_timer2_slaves,
355 .slaves_cnt = ARRAY_SIZE(omap2420_timer2_slaves),
273b9465 356 .class = &omap2xxx_timer_hwmod_class,
eddb1262
TG
357 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420)
358};
359
360/* timer3 */
361static struct omap_hwmod omap2420_timer3_hwmod;
eddb1262 362
eddb1262
TG
363/* l4_core -> timer3 */
364static struct omap_hwmod_ocp_if omap2420_l4_core__timer3 = {
365 .master = &omap2420_l4_core_hwmod,
366 .slave = &omap2420_timer3_hwmod,
367 .clk = "gpt3_ick",
ded11383 368 .addr = omap2xxx_timer3_addrs,
eddb1262
TG
369 .user = OCP_USER_MPU | OCP_USER_SDMA,
370};
371
372/* timer3 slave port */
373static struct omap_hwmod_ocp_if *omap2420_timer3_slaves[] = {
374 &omap2420_l4_core__timer3,
375};
376
377/* timer3 hwmod */
378static struct omap_hwmod omap2420_timer3_hwmod = {
379 .name = "timer3",
0d619a89 380 .mpu_irqs = omap2_timer3_mpu_irqs,
eddb1262
TG
381 .main_clk = "gpt3_fck",
382 .prcm = {
383 .omap2 = {
384 .prcm_reg_id = 1,
385 .module_bit = OMAP24XX_EN_GPT3_SHIFT,
386 .module_offs = CORE_MOD,
387 .idlest_reg_id = 1,
388 .idlest_idle_bit = OMAP24XX_ST_GPT3_SHIFT,
389 },
390 },
391 .slaves = omap2420_timer3_slaves,
392 .slaves_cnt = ARRAY_SIZE(omap2420_timer3_slaves),
273b9465 393 .class = &omap2xxx_timer_hwmod_class,
eddb1262
TG
394 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420)
395};
396
397/* timer4 */
398static struct omap_hwmod omap2420_timer4_hwmod;
eddb1262 399
eddb1262
TG
400/* l4_core -> timer4 */
401static struct omap_hwmod_ocp_if omap2420_l4_core__timer4 = {
402 .master = &omap2420_l4_core_hwmod,
403 .slave = &omap2420_timer4_hwmod,
404 .clk = "gpt4_ick",
ded11383 405 .addr = omap2xxx_timer4_addrs,
eddb1262
TG
406 .user = OCP_USER_MPU | OCP_USER_SDMA,
407};
408
409/* timer4 slave port */
410static struct omap_hwmod_ocp_if *omap2420_timer4_slaves[] = {
411 &omap2420_l4_core__timer4,
412};
413
414/* timer4 hwmod */
415static struct omap_hwmod omap2420_timer4_hwmod = {
416 .name = "timer4",
0d619a89 417 .mpu_irqs = omap2_timer4_mpu_irqs,
eddb1262
TG
418 .main_clk = "gpt4_fck",
419 .prcm = {
420 .omap2 = {
421 .prcm_reg_id = 1,
422 .module_bit = OMAP24XX_EN_GPT4_SHIFT,
423 .module_offs = CORE_MOD,
424 .idlest_reg_id = 1,
425 .idlest_idle_bit = OMAP24XX_ST_GPT4_SHIFT,
426 },
427 },
428 .slaves = omap2420_timer4_slaves,
429 .slaves_cnt = ARRAY_SIZE(omap2420_timer4_slaves),
273b9465 430 .class = &omap2xxx_timer_hwmod_class,
eddb1262
TG
431 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420)
432};
433
434/* timer5 */
435static struct omap_hwmod omap2420_timer5_hwmod;
eddb1262 436
eddb1262
TG
437/* l4_core -> timer5 */
438static struct omap_hwmod_ocp_if omap2420_l4_core__timer5 = {
439 .master = &omap2420_l4_core_hwmod,
440 .slave = &omap2420_timer5_hwmod,
441 .clk = "gpt5_ick",
ded11383 442 .addr = omap2xxx_timer5_addrs,
eddb1262
TG
443 .user = OCP_USER_MPU | OCP_USER_SDMA,
444};
445
446/* timer5 slave port */
447static struct omap_hwmod_ocp_if *omap2420_timer5_slaves[] = {
448 &omap2420_l4_core__timer5,
449};
450
451/* timer5 hwmod */
452static struct omap_hwmod omap2420_timer5_hwmod = {
453 .name = "timer5",
0d619a89 454 .mpu_irqs = omap2_timer5_mpu_irqs,
eddb1262
TG
455 .main_clk = "gpt5_fck",
456 .prcm = {
457 .omap2 = {
458 .prcm_reg_id = 1,
459 .module_bit = OMAP24XX_EN_GPT5_SHIFT,
460 .module_offs = CORE_MOD,
461 .idlest_reg_id = 1,
462 .idlest_idle_bit = OMAP24XX_ST_GPT5_SHIFT,
463 },
464 },
465 .slaves = omap2420_timer5_slaves,
466 .slaves_cnt = ARRAY_SIZE(omap2420_timer5_slaves),
273b9465 467 .class = &omap2xxx_timer_hwmod_class,
eddb1262
TG
468 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420)
469};
470
471
472/* timer6 */
473static struct omap_hwmod omap2420_timer6_hwmod;
eddb1262 474
eddb1262
TG
475/* l4_core -> timer6 */
476static struct omap_hwmod_ocp_if omap2420_l4_core__timer6 = {
477 .master = &omap2420_l4_core_hwmod,
478 .slave = &omap2420_timer6_hwmod,
479 .clk = "gpt6_ick",
ded11383 480 .addr = omap2xxx_timer6_addrs,
eddb1262
TG
481 .user = OCP_USER_MPU | OCP_USER_SDMA,
482};
483
484/* timer6 slave port */
485static struct omap_hwmod_ocp_if *omap2420_timer6_slaves[] = {
486 &omap2420_l4_core__timer6,
487};
488
489/* timer6 hwmod */
490static struct omap_hwmod omap2420_timer6_hwmod = {
491 .name = "timer6",
0d619a89 492 .mpu_irqs = omap2_timer6_mpu_irqs,
eddb1262
TG
493 .main_clk = "gpt6_fck",
494 .prcm = {
495 .omap2 = {
496 .prcm_reg_id = 1,
497 .module_bit = OMAP24XX_EN_GPT6_SHIFT,
498 .module_offs = CORE_MOD,
499 .idlest_reg_id = 1,
500 .idlest_idle_bit = OMAP24XX_ST_GPT6_SHIFT,
501 },
502 },
503 .slaves = omap2420_timer6_slaves,
504 .slaves_cnt = ARRAY_SIZE(omap2420_timer6_slaves),
273b9465 505 .class = &omap2xxx_timer_hwmod_class,
eddb1262
TG
506 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420)
507};
508
509/* timer7 */
510static struct omap_hwmod omap2420_timer7_hwmod;
eddb1262 511
eddb1262
TG
512/* l4_core -> timer7 */
513static struct omap_hwmod_ocp_if omap2420_l4_core__timer7 = {
514 .master = &omap2420_l4_core_hwmod,
515 .slave = &omap2420_timer7_hwmod,
516 .clk = "gpt7_ick",
ded11383 517 .addr = omap2xxx_timer7_addrs,
eddb1262
TG
518 .user = OCP_USER_MPU | OCP_USER_SDMA,
519};
520
521/* timer7 slave port */
522static struct omap_hwmod_ocp_if *omap2420_timer7_slaves[] = {
523 &omap2420_l4_core__timer7,
524};
525
526/* timer7 hwmod */
527static struct omap_hwmod omap2420_timer7_hwmod = {
528 .name = "timer7",
0d619a89 529 .mpu_irqs = omap2_timer7_mpu_irqs,
eddb1262
TG
530 .main_clk = "gpt7_fck",
531 .prcm = {
532 .omap2 = {
533 .prcm_reg_id = 1,
534 .module_bit = OMAP24XX_EN_GPT7_SHIFT,
535 .module_offs = CORE_MOD,
536 .idlest_reg_id = 1,
537 .idlest_idle_bit = OMAP24XX_ST_GPT7_SHIFT,
538 },
539 },
540 .slaves = omap2420_timer7_slaves,
541 .slaves_cnt = ARRAY_SIZE(omap2420_timer7_slaves),
273b9465 542 .class = &omap2xxx_timer_hwmod_class,
eddb1262
TG
543 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420)
544};
545
546/* timer8 */
547static struct omap_hwmod omap2420_timer8_hwmod;
eddb1262 548
eddb1262
TG
549/* l4_core -> timer8 */
550static struct omap_hwmod_ocp_if omap2420_l4_core__timer8 = {
551 .master = &omap2420_l4_core_hwmod,
552 .slave = &omap2420_timer8_hwmod,
553 .clk = "gpt8_ick",
ded11383 554 .addr = omap2xxx_timer8_addrs,
eddb1262
TG
555 .user = OCP_USER_MPU | OCP_USER_SDMA,
556};
557
558/* timer8 slave port */
559static struct omap_hwmod_ocp_if *omap2420_timer8_slaves[] = {
560 &omap2420_l4_core__timer8,
561};
562
563/* timer8 hwmod */
564static struct omap_hwmod omap2420_timer8_hwmod = {
565 .name = "timer8",
0d619a89 566 .mpu_irqs = omap2_timer8_mpu_irqs,
eddb1262
TG
567 .main_clk = "gpt8_fck",
568 .prcm = {
569 .omap2 = {
570 .prcm_reg_id = 1,
571 .module_bit = OMAP24XX_EN_GPT8_SHIFT,
572 .module_offs = CORE_MOD,
573 .idlest_reg_id = 1,
574 .idlest_idle_bit = OMAP24XX_ST_GPT8_SHIFT,
575 },
576 },
577 .slaves = omap2420_timer8_slaves,
578 .slaves_cnt = ARRAY_SIZE(omap2420_timer8_slaves),
273b9465 579 .class = &omap2xxx_timer_hwmod_class,
eddb1262
TG
580 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420)
581};
582
583/* timer9 */
584static struct omap_hwmod omap2420_timer9_hwmod;
eddb1262 585
eddb1262
TG
586/* l4_core -> timer9 */
587static struct omap_hwmod_ocp_if omap2420_l4_core__timer9 = {
588 .master = &omap2420_l4_core_hwmod,
589 .slave = &omap2420_timer9_hwmod,
590 .clk = "gpt9_ick",
ded11383 591 .addr = omap2xxx_timer9_addrs,
eddb1262
TG
592 .user = OCP_USER_MPU | OCP_USER_SDMA,
593};
594
595/* timer9 slave port */
596static struct omap_hwmod_ocp_if *omap2420_timer9_slaves[] = {
597 &omap2420_l4_core__timer9,
598};
599
600/* timer9 hwmod */
601static struct omap_hwmod omap2420_timer9_hwmod = {
602 .name = "timer9",
0d619a89 603 .mpu_irqs = omap2_timer9_mpu_irqs,
eddb1262
TG
604 .main_clk = "gpt9_fck",
605 .prcm = {
606 .omap2 = {
607 .prcm_reg_id = 1,
608 .module_bit = OMAP24XX_EN_GPT9_SHIFT,
609 .module_offs = CORE_MOD,
610 .idlest_reg_id = 1,
611 .idlest_idle_bit = OMAP24XX_ST_GPT9_SHIFT,
612 },
613 },
614 .slaves = omap2420_timer9_slaves,
615 .slaves_cnt = ARRAY_SIZE(omap2420_timer9_slaves),
273b9465 616 .class = &omap2xxx_timer_hwmod_class,
eddb1262
TG
617 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420)
618};
619
620/* timer10 */
621static struct omap_hwmod omap2420_timer10_hwmod;
eddb1262 622
eddb1262
TG
623/* l4_core -> timer10 */
624static struct omap_hwmod_ocp_if omap2420_l4_core__timer10 = {
625 .master = &omap2420_l4_core_hwmod,
626 .slave = &omap2420_timer10_hwmod,
627 .clk = "gpt10_ick",
ded11383 628 .addr = omap2_timer10_addrs,
eddb1262
TG
629 .user = OCP_USER_MPU | OCP_USER_SDMA,
630};
631
632/* timer10 slave port */
633static struct omap_hwmod_ocp_if *omap2420_timer10_slaves[] = {
634 &omap2420_l4_core__timer10,
635};
636
637/* timer10 hwmod */
638static struct omap_hwmod omap2420_timer10_hwmod = {
639 .name = "timer10",
0d619a89 640 .mpu_irqs = omap2_timer10_mpu_irqs,
eddb1262
TG
641 .main_clk = "gpt10_fck",
642 .prcm = {
643 .omap2 = {
644 .prcm_reg_id = 1,
645 .module_bit = OMAP24XX_EN_GPT10_SHIFT,
646 .module_offs = CORE_MOD,
647 .idlest_reg_id = 1,
648 .idlest_idle_bit = OMAP24XX_ST_GPT10_SHIFT,
649 },
650 },
651 .slaves = omap2420_timer10_slaves,
652 .slaves_cnt = ARRAY_SIZE(omap2420_timer10_slaves),
273b9465 653 .class = &omap2xxx_timer_hwmod_class,
eddb1262
TG
654 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420)
655};
656
657/* timer11 */
658static struct omap_hwmod omap2420_timer11_hwmod;
eddb1262 659
eddb1262
TG
660/* l4_core -> timer11 */
661static struct omap_hwmod_ocp_if omap2420_l4_core__timer11 = {
662 .master = &omap2420_l4_core_hwmod,
663 .slave = &omap2420_timer11_hwmod,
664 .clk = "gpt11_ick",
ded11383 665 .addr = omap2_timer11_addrs,
eddb1262
TG
666 .user = OCP_USER_MPU | OCP_USER_SDMA,
667};
668
669/* timer11 slave port */
670static struct omap_hwmod_ocp_if *omap2420_timer11_slaves[] = {
671 &omap2420_l4_core__timer11,
672};
673
674/* timer11 hwmod */
675static struct omap_hwmod omap2420_timer11_hwmod = {
676 .name = "timer11",
0d619a89 677 .mpu_irqs = omap2_timer11_mpu_irqs,
eddb1262
TG
678 .main_clk = "gpt11_fck",
679 .prcm = {
680 .omap2 = {
681 .prcm_reg_id = 1,
682 .module_bit = OMAP24XX_EN_GPT11_SHIFT,
683 .module_offs = CORE_MOD,
684 .idlest_reg_id = 1,
685 .idlest_idle_bit = OMAP24XX_ST_GPT11_SHIFT,
686 },
687 },
688 .slaves = omap2420_timer11_slaves,
689 .slaves_cnt = ARRAY_SIZE(omap2420_timer11_slaves),
273b9465 690 .class = &omap2xxx_timer_hwmod_class,
eddb1262
TG
691 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420)
692};
693
694/* timer12 */
695static struct omap_hwmod omap2420_timer12_hwmod;
eddb1262 696
eddb1262
TG
697/* l4_core -> timer12 */
698static struct omap_hwmod_ocp_if omap2420_l4_core__timer12 = {
699 .master = &omap2420_l4_core_hwmod,
700 .slave = &omap2420_timer12_hwmod,
701 .clk = "gpt12_ick",
ded11383 702 .addr = omap2xxx_timer12_addrs,
eddb1262
TG
703 .user = OCP_USER_MPU | OCP_USER_SDMA,
704};
705
706/* timer12 slave port */
707static struct omap_hwmod_ocp_if *omap2420_timer12_slaves[] = {
708 &omap2420_l4_core__timer12,
709};
710
711/* timer12 hwmod */
712static struct omap_hwmod omap2420_timer12_hwmod = {
713 .name = "timer12",
0d619a89 714 .mpu_irqs = omap2xxx_timer12_mpu_irqs,
eddb1262
TG
715 .main_clk = "gpt12_fck",
716 .prcm = {
717 .omap2 = {
718 .prcm_reg_id = 1,
719 .module_bit = OMAP24XX_EN_GPT12_SHIFT,
720 .module_offs = CORE_MOD,
721 .idlest_reg_id = 1,
722 .idlest_idle_bit = OMAP24XX_ST_GPT12_SHIFT,
723 },
724 },
725 .slaves = omap2420_timer12_slaves,
726 .slaves_cnt = ARRAY_SIZE(omap2420_timer12_slaves),
273b9465 727 .class = &omap2xxx_timer_hwmod_class,
eddb1262
TG
728 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420)
729};
730
a714b9cf
VC
731/* l4_wkup -> wd_timer2 */
732static struct omap_hwmod_addr_space omap2420_wd_timer2_addrs[] = {
733 {
734 .pa_start = 0x48022000,
735 .pa_end = 0x4802207f,
736 .flags = ADDR_TYPE_RT
737 },
78183f3f 738 { }
a714b9cf
VC
739};
740
741static struct omap_hwmod_ocp_if omap2420_l4_wkup__wd_timer2 = {
742 .master = &omap2420_l4_wkup_hwmod,
743 .slave = &omap2420_wd_timer2_hwmod,
744 .clk = "mpu_wdt_ick",
745 .addr = omap2420_wd_timer2_addrs,
a714b9cf
VC
746 .user = OCP_USER_MPU | OCP_USER_SDMA,
747};
748
a714b9cf
VC
749/* wd_timer2 */
750static struct omap_hwmod_ocp_if *omap2420_wd_timer2_slaves[] = {
751 &omap2420_l4_wkup__wd_timer2,
752};
753
754static struct omap_hwmod omap2420_wd_timer2_hwmod = {
755 .name = "wd_timer2",
273b9465 756 .class = &omap2xxx_wd_timer_hwmod_class,
a714b9cf
VC
757 .main_clk = "mpu_wdt_fck",
758 .prcm = {
759 .omap2 = {
760 .prcm_reg_id = 1,
761 .module_bit = OMAP24XX_EN_MPU_WDT_SHIFT,
762 .module_offs = WKUP_MOD,
763 .idlest_reg_id = 1,
764 .idlest_idle_bit = OMAP24XX_ST_MPU_WDT_SHIFT,
765 },
766 },
767 .slaves = omap2420_wd_timer2_slaves,
768 .slaves_cnt = ARRAY_SIZE(omap2420_wd_timer2_slaves),
769 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
770};
771
046465b7
KH
772/* UART1 */
773
046465b7
KH
774static struct omap_hwmod_ocp_if *omap2420_uart1_slaves[] = {
775 &omap2_l4_core__uart1,
776};
777
778static struct omap_hwmod omap2420_uart1_hwmod = {
779 .name = "uart1",
0d619a89 780 .mpu_irqs = omap2_uart1_mpu_irqs,
d826ebfa 781 .sdma_reqs = omap2_uart1_sdma_reqs,
046465b7
KH
782 .main_clk = "uart1_fck",
783 .prcm = {
784 .omap2 = {
785 .module_offs = CORE_MOD,
786 .prcm_reg_id = 1,
787 .module_bit = OMAP24XX_EN_UART1_SHIFT,
788 .idlest_reg_id = 1,
789 .idlest_idle_bit = OMAP24XX_EN_UART1_SHIFT,
790 },
791 },
792 .slaves = omap2420_uart1_slaves,
793 .slaves_cnt = ARRAY_SIZE(omap2420_uart1_slaves),
273b9465 794 .class = &omap2_uart_class,
046465b7
KH
795 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
796};
797
798/* UART2 */
799
046465b7
KH
800static struct omap_hwmod_ocp_if *omap2420_uart2_slaves[] = {
801 &omap2_l4_core__uart2,
802};
803
804static struct omap_hwmod omap2420_uart2_hwmod = {
805 .name = "uart2",
0d619a89 806 .mpu_irqs = omap2_uart2_mpu_irqs,
d826ebfa 807 .sdma_reqs = omap2_uart2_sdma_reqs,
046465b7
KH
808 .main_clk = "uart2_fck",
809 .prcm = {
810 .omap2 = {
811 .module_offs = CORE_MOD,
812 .prcm_reg_id = 1,
813 .module_bit = OMAP24XX_EN_UART2_SHIFT,
814 .idlest_reg_id = 1,
815 .idlest_idle_bit = OMAP24XX_EN_UART2_SHIFT,
816 },
817 },
818 .slaves = omap2420_uart2_slaves,
819 .slaves_cnt = ARRAY_SIZE(omap2420_uart2_slaves),
273b9465 820 .class = &omap2_uart_class,
046465b7
KH
821 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
822};
823
824/* UART3 */
825
046465b7
KH
826static struct omap_hwmod_ocp_if *omap2420_uart3_slaves[] = {
827 &omap2_l4_core__uart3,
828};
829
830static struct omap_hwmod omap2420_uart3_hwmod = {
831 .name = "uart3",
0d619a89 832 .mpu_irqs = omap2_uart3_mpu_irqs,
d826ebfa 833 .sdma_reqs = omap2_uart3_sdma_reqs,
046465b7
KH
834 .main_clk = "uart3_fck",
835 .prcm = {
836 .omap2 = {
837 .module_offs = CORE_MOD,
838 .prcm_reg_id = 2,
839 .module_bit = OMAP24XX_EN_UART3_SHIFT,
840 .idlest_reg_id = 2,
841 .idlest_idle_bit = OMAP24XX_EN_UART3_SHIFT,
842 },
843 },
844 .slaves = omap2420_uart3_slaves,
845 .slaves_cnt = ARRAY_SIZE(omap2420_uart3_slaves),
273b9465 846 .class = &omap2_uart_class,
046465b7
KH
847 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
848};
849
996746ca
SG
850/* dss */
851/* dss master ports */
852static struct omap_hwmod_ocp_if *omap2420_dss_masters[] = {
853 &omap2420_dss__l3,
854};
855
996746ca
SG
856/* l4_core -> dss */
857static struct omap_hwmod_ocp_if omap2420_l4_core__dss = {
858 .master = &omap2420_l4_core_hwmod,
859 .slave = &omap2420_dss_core_hwmod,
860 .clk = "dss_ick",
ded11383 861 .addr = omap2_dss_addrs,
996746ca
SG
862 .fw = {
863 .omap2 = {
864 .l4_fw_region = OMAP2420_L4_CORE_FW_DSS_CORE_REGION,
865 .flags = OMAP_FIREWALL_L4,
866 }
867 },
868 .user = OCP_USER_MPU | OCP_USER_SDMA,
869};
870
871/* dss slave ports */
872static struct omap_hwmod_ocp_if *omap2420_dss_slaves[] = {
873 &omap2420_l4_core__dss,
874};
875
876static struct omap_hwmod_opt_clk dss_opt_clks[] = {
877 { .role = "tv_clk", .clk = "dss_54m_fck" },
878 { .role = "sys_clk", .clk = "dss2_fck" },
879};
880
881static struct omap_hwmod omap2420_dss_core_hwmod = {
882 .name = "dss_core",
273b9465 883 .class = &omap2_dss_hwmod_class,
996746ca 884 .main_clk = "dss1_fck", /* instead of dss_fck */
d826ebfa 885 .sdma_reqs = omap2xxx_dss_sdma_chs,
996746ca
SG
886 .prcm = {
887 .omap2 = {
888 .prcm_reg_id = 1,
889 .module_bit = OMAP24XX_EN_DSS1_SHIFT,
890 .module_offs = CORE_MOD,
891 .idlest_reg_id = 1,
892 .idlest_stdby_bit = OMAP24XX_ST_DSS_SHIFT,
893 },
894 },
895 .opt_clks = dss_opt_clks,
896 .opt_clks_cnt = ARRAY_SIZE(dss_opt_clks),
897 .slaves = omap2420_dss_slaves,
898 .slaves_cnt = ARRAY_SIZE(omap2420_dss_slaves),
899 .masters = omap2420_dss_masters,
900 .masters_cnt = ARRAY_SIZE(omap2420_dss_masters),
901 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
902 .flags = HWMOD_NO_IDLEST,
903};
904
996746ca
SG
905/* l4_core -> dss_dispc */
906static struct omap_hwmod_ocp_if omap2420_l4_core__dss_dispc = {
907 .master = &omap2420_l4_core_hwmod,
908 .slave = &omap2420_dss_dispc_hwmod,
909 .clk = "dss_ick",
ded11383 910 .addr = omap2_dss_dispc_addrs,
996746ca
SG
911 .fw = {
912 .omap2 = {
913 .l4_fw_region = OMAP2420_L4_CORE_FW_DSS_DISPC_REGION,
914 .flags = OMAP_FIREWALL_L4,
915 }
916 },
917 .user = OCP_USER_MPU | OCP_USER_SDMA,
918};
919
920/* dss_dispc slave ports */
921static struct omap_hwmod_ocp_if *omap2420_dss_dispc_slaves[] = {
922 &omap2420_l4_core__dss_dispc,
923};
924
925static struct omap_hwmod omap2420_dss_dispc_hwmod = {
926 .name = "dss_dispc",
273b9465 927 .class = &omap2_dispc_hwmod_class,
0d619a89 928 .mpu_irqs = omap2_dispc_irqs,
996746ca
SG
929 .main_clk = "dss1_fck",
930 .prcm = {
931 .omap2 = {
932 .prcm_reg_id = 1,
933 .module_bit = OMAP24XX_EN_DSS1_SHIFT,
934 .module_offs = CORE_MOD,
935 .idlest_reg_id = 1,
936 .idlest_stdby_bit = OMAP24XX_ST_DSS_SHIFT,
937 },
938 },
939 .slaves = omap2420_dss_dispc_slaves,
940 .slaves_cnt = ARRAY_SIZE(omap2420_dss_dispc_slaves),
941 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
942 .flags = HWMOD_NO_IDLEST,
943};
944
996746ca
SG
945/* l4_core -> dss_rfbi */
946static struct omap_hwmod_ocp_if omap2420_l4_core__dss_rfbi = {
947 .master = &omap2420_l4_core_hwmod,
948 .slave = &omap2420_dss_rfbi_hwmod,
949 .clk = "dss_ick",
ded11383 950 .addr = omap2_dss_rfbi_addrs,
996746ca
SG
951 .fw = {
952 .omap2 = {
953 .l4_fw_region = OMAP2420_L4_CORE_FW_DSS_CORE_REGION,
954 .flags = OMAP_FIREWALL_L4,
955 }
956 },
957 .user = OCP_USER_MPU | OCP_USER_SDMA,
958};
959
960/* dss_rfbi slave ports */
961static struct omap_hwmod_ocp_if *omap2420_dss_rfbi_slaves[] = {
962 &omap2420_l4_core__dss_rfbi,
963};
964
965static struct omap_hwmod omap2420_dss_rfbi_hwmod = {
966 .name = "dss_rfbi",
273b9465 967 .class = &omap2_rfbi_hwmod_class,
996746ca
SG
968 .main_clk = "dss1_fck",
969 .prcm = {
970 .omap2 = {
971 .prcm_reg_id = 1,
972 .module_bit = OMAP24XX_EN_DSS1_SHIFT,
973 .module_offs = CORE_MOD,
974 },
975 },
976 .slaves = omap2420_dss_rfbi_slaves,
977 .slaves_cnt = ARRAY_SIZE(omap2420_dss_rfbi_slaves),
978 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
979 .flags = HWMOD_NO_IDLEST,
980};
981
996746ca
SG
982/* l4_core -> dss_venc */
983static struct omap_hwmod_ocp_if omap2420_l4_core__dss_venc = {
984 .master = &omap2420_l4_core_hwmod,
985 .slave = &omap2420_dss_venc_hwmod,
986 .clk = "dss_54m_fck",
ded11383 987 .addr = omap2_dss_venc_addrs,
996746ca
SG
988 .fw = {
989 .omap2 = {
990 .l4_fw_region = OMAP2420_L4_CORE_FW_DSS_VENC_REGION,
991 .flags = OMAP_FIREWALL_L4,
992 }
993 },
c39bee8a 994 .flags = OCPIF_SWSUP_IDLE,
996746ca
SG
995 .user = OCP_USER_MPU | OCP_USER_SDMA,
996};
997
998/* dss_venc slave ports */
999static struct omap_hwmod_ocp_if *omap2420_dss_venc_slaves[] = {
1000 &omap2420_l4_core__dss_venc,
1001};
1002
1003static struct omap_hwmod omap2420_dss_venc_hwmod = {
1004 .name = "dss_venc",
273b9465 1005 .class = &omap2_venc_hwmod_class,
996746ca
SG
1006 .main_clk = "dss1_fck",
1007 .prcm = {
1008 .omap2 = {
1009 .prcm_reg_id = 1,
1010 .module_bit = OMAP24XX_EN_DSS1_SHIFT,
1011 .module_offs = CORE_MOD,
1012 },
1013 },
1014 .slaves = omap2420_dss_venc_slaves,
1015 .slaves_cnt = ARRAY_SIZE(omap2420_dss_venc_slaves),
1016 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
1017 .flags = HWMOD_NO_IDLEST,
1018};
1019
2004290f
PW
1020/* I2C common */
1021static struct omap_hwmod_class_sysconfig i2c_sysc = {
1022 .rev_offs = 0x00,
1023 .sysc_offs = 0x20,
1024 .syss_offs = 0x10,
d73d65fa 1025 .sysc_flags = (SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
2004290f
PW
1026 .sysc_fields = &omap_hwmod_sysc_type1,
1027};
1028
1029static struct omap_hwmod_class i2c_class = {
1030 .name = "i2c",
1031 .sysc = &i2c_sysc,
1032};
1033
1034static struct omap_i2c_dev_attr i2c_dev_attr;
1035
1036/* I2C1 */
1037
2004290f
PW
1038static struct omap_hwmod_ocp_if *omap2420_i2c1_slaves[] = {
1039 &omap2420_l4_core__i2c1,
1040};
1041
1042static struct omap_hwmod omap2420_i2c1_hwmod = {
1043 .name = "i2c1",
0d619a89 1044 .mpu_irqs = omap2_i2c1_mpu_irqs,
d826ebfa 1045 .sdma_reqs = omap2_i2c1_sdma_reqs,
2004290f
PW
1046 .main_clk = "i2c1_fck",
1047 .prcm = {
1048 .omap2 = {
1049 .module_offs = CORE_MOD,
1050 .prcm_reg_id = 1,
1051 .module_bit = OMAP2420_EN_I2C1_SHIFT,
1052 .idlest_reg_id = 1,
1053 .idlest_idle_bit = OMAP2420_ST_I2C1_SHIFT,
1054 },
1055 },
1056 .slaves = omap2420_i2c1_slaves,
1057 .slaves_cnt = ARRAY_SIZE(omap2420_i2c1_slaves),
1058 .class = &i2c_class,
1059 .dev_attr = &i2c_dev_attr,
1060 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
1061 .flags = HWMOD_16BIT_REG,
1062};
1063
1064/* I2C2 */
1065
2004290f
PW
1066static struct omap_hwmod_ocp_if *omap2420_i2c2_slaves[] = {
1067 &omap2420_l4_core__i2c2,
1068};
1069
1070static struct omap_hwmod omap2420_i2c2_hwmod = {
1071 .name = "i2c2",
0d619a89 1072 .mpu_irqs = omap2_i2c2_mpu_irqs,
d826ebfa 1073 .sdma_reqs = omap2_i2c2_sdma_reqs,
2004290f
PW
1074 .main_clk = "i2c2_fck",
1075 .prcm = {
1076 .omap2 = {
1077 .module_offs = CORE_MOD,
1078 .prcm_reg_id = 1,
1079 .module_bit = OMAP2420_EN_I2C2_SHIFT,
1080 .idlest_reg_id = 1,
1081 .idlest_idle_bit = OMAP2420_ST_I2C2_SHIFT,
1082 },
1083 },
1084 .slaves = omap2420_i2c2_slaves,
1085 .slaves_cnt = ARRAY_SIZE(omap2420_i2c2_slaves),
1086 .class = &i2c_class,
1087 .dev_attr = &i2c_dev_attr,
1088 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
1089 .flags = HWMOD_16BIT_REG,
1090};
1091
59c348c3
VC
1092/* l4_wkup -> gpio1 */
1093static struct omap_hwmod_addr_space omap2420_gpio1_addr_space[] = {
1094 {
1095 .pa_start = 0x48018000,
1096 .pa_end = 0x480181ff,
1097 .flags = ADDR_TYPE_RT
1098 },
78183f3f 1099 { }
59c348c3
VC
1100};
1101
1102static struct omap_hwmod_ocp_if omap2420_l4_wkup__gpio1 = {
1103 .master = &omap2420_l4_wkup_hwmod,
1104 .slave = &omap2420_gpio1_hwmod,
1105 .clk = "gpios_ick",
1106 .addr = omap2420_gpio1_addr_space,
59c348c3
VC
1107 .user = OCP_USER_MPU | OCP_USER_SDMA,
1108};
1109
1110/* l4_wkup -> gpio2 */
1111static struct omap_hwmod_addr_space omap2420_gpio2_addr_space[] = {
1112 {
1113 .pa_start = 0x4801a000,
1114 .pa_end = 0x4801a1ff,
1115 .flags = ADDR_TYPE_RT
1116 },
78183f3f 1117 { }
59c348c3
VC
1118};
1119
1120static struct omap_hwmod_ocp_if omap2420_l4_wkup__gpio2 = {
1121 .master = &omap2420_l4_wkup_hwmod,
1122 .slave = &omap2420_gpio2_hwmod,
1123 .clk = "gpios_ick",
1124 .addr = omap2420_gpio2_addr_space,
59c348c3
VC
1125 .user = OCP_USER_MPU | OCP_USER_SDMA,
1126};
1127
1128/* l4_wkup -> gpio3 */
1129static struct omap_hwmod_addr_space omap2420_gpio3_addr_space[] = {
1130 {
1131 .pa_start = 0x4801c000,
1132 .pa_end = 0x4801c1ff,
1133 .flags = ADDR_TYPE_RT
1134 },
78183f3f 1135 { }
59c348c3
VC
1136};
1137
1138static struct omap_hwmod_ocp_if omap2420_l4_wkup__gpio3 = {
1139 .master = &omap2420_l4_wkup_hwmod,
1140 .slave = &omap2420_gpio3_hwmod,
1141 .clk = "gpios_ick",
1142 .addr = omap2420_gpio3_addr_space,
59c348c3
VC
1143 .user = OCP_USER_MPU | OCP_USER_SDMA,
1144};
1145
1146/* l4_wkup -> gpio4 */
1147static struct omap_hwmod_addr_space omap2420_gpio4_addr_space[] = {
1148 {
1149 .pa_start = 0x4801e000,
1150 .pa_end = 0x4801e1ff,
1151 .flags = ADDR_TYPE_RT
1152 },
78183f3f 1153 { }
59c348c3
VC
1154};
1155
1156static struct omap_hwmod_ocp_if omap2420_l4_wkup__gpio4 = {
1157 .master = &omap2420_l4_wkup_hwmod,
1158 .slave = &omap2420_gpio4_hwmod,
1159 .clk = "gpios_ick",
1160 .addr = omap2420_gpio4_addr_space,
59c348c3
VC
1161 .user = OCP_USER_MPU | OCP_USER_SDMA,
1162};
1163
1164/* gpio dev_attr */
1165static struct omap_gpio_dev_attr gpio_dev_attr = {
1166 .bank_width = 32,
1167 .dbck_flag = false,
1168};
1169
59c348c3 1170/* gpio1 */
59c348c3
VC
1171static struct omap_hwmod_ocp_if *omap2420_gpio1_slaves[] = {
1172 &omap2420_l4_wkup__gpio1,
1173};
1174
1175static struct omap_hwmod omap2420_gpio1_hwmod = {
1176 .name = "gpio1",
f95440ca 1177 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
0d619a89 1178 .mpu_irqs = omap2_gpio1_irqs,
59c348c3
VC
1179 .main_clk = "gpios_fck",
1180 .prcm = {
1181 .omap2 = {
1182 .prcm_reg_id = 1,
1183 .module_bit = OMAP24XX_EN_GPIOS_SHIFT,
1184 .module_offs = WKUP_MOD,
1185 .idlest_reg_id = 1,
1186 .idlest_idle_bit = OMAP24XX_ST_GPIOS_SHIFT,
1187 },
1188 },
1189 .slaves = omap2420_gpio1_slaves,
1190 .slaves_cnt = ARRAY_SIZE(omap2420_gpio1_slaves),
273b9465 1191 .class = &omap2xxx_gpio_hwmod_class,
59c348c3
VC
1192 .dev_attr = &gpio_dev_attr,
1193 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
1194};
1195
1196/* gpio2 */
59c348c3
VC
1197static struct omap_hwmod_ocp_if *omap2420_gpio2_slaves[] = {
1198 &omap2420_l4_wkup__gpio2,
1199};
1200
1201static struct omap_hwmod omap2420_gpio2_hwmod = {
1202 .name = "gpio2",
f95440ca 1203 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
0d619a89 1204 .mpu_irqs = omap2_gpio2_irqs,
59c348c3
VC
1205 .main_clk = "gpios_fck",
1206 .prcm = {
1207 .omap2 = {
1208 .prcm_reg_id = 1,
1209 .module_bit = OMAP24XX_EN_GPIOS_SHIFT,
1210 .module_offs = WKUP_MOD,
1211 .idlest_reg_id = 1,
1212 .idlest_idle_bit = OMAP24XX_ST_GPIOS_SHIFT,
1213 },
1214 },
1215 .slaves = omap2420_gpio2_slaves,
1216 .slaves_cnt = ARRAY_SIZE(omap2420_gpio2_slaves),
273b9465 1217 .class = &omap2xxx_gpio_hwmod_class,
59c348c3
VC
1218 .dev_attr = &gpio_dev_attr,
1219 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
1220};
1221
1222/* gpio3 */
59c348c3
VC
1223static struct omap_hwmod_ocp_if *omap2420_gpio3_slaves[] = {
1224 &omap2420_l4_wkup__gpio3,
1225};
1226
1227static struct omap_hwmod omap2420_gpio3_hwmod = {
1228 .name = "gpio3",
f95440ca 1229 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
0d619a89 1230 .mpu_irqs = omap2_gpio3_irqs,
59c348c3
VC
1231 .main_clk = "gpios_fck",
1232 .prcm = {
1233 .omap2 = {
1234 .prcm_reg_id = 1,
1235 .module_bit = OMAP24XX_EN_GPIOS_SHIFT,
1236 .module_offs = WKUP_MOD,
1237 .idlest_reg_id = 1,
1238 .idlest_idle_bit = OMAP24XX_ST_GPIOS_SHIFT,
1239 },
1240 },
1241 .slaves = omap2420_gpio3_slaves,
1242 .slaves_cnt = ARRAY_SIZE(omap2420_gpio3_slaves),
273b9465 1243 .class = &omap2xxx_gpio_hwmod_class,
59c348c3
VC
1244 .dev_attr = &gpio_dev_attr,
1245 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
1246};
1247
1248/* gpio4 */
59c348c3
VC
1249static struct omap_hwmod_ocp_if *omap2420_gpio4_slaves[] = {
1250 &omap2420_l4_wkup__gpio4,
1251};
1252
1253static struct omap_hwmod omap2420_gpio4_hwmod = {
1254 .name = "gpio4",
f95440ca 1255 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
0d619a89 1256 .mpu_irqs = omap2_gpio4_irqs,
59c348c3
VC
1257 .main_clk = "gpios_fck",
1258 .prcm = {
1259 .omap2 = {
1260 .prcm_reg_id = 1,
1261 .module_bit = OMAP24XX_EN_GPIOS_SHIFT,
1262 .module_offs = WKUP_MOD,
1263 .idlest_reg_id = 1,
1264 .idlest_idle_bit = OMAP24XX_ST_GPIOS_SHIFT,
1265 },
1266 },
1267 .slaves = omap2420_gpio4_slaves,
1268 .slaves_cnt = ARRAY_SIZE(omap2420_gpio4_slaves),
273b9465 1269 .class = &omap2xxx_gpio_hwmod_class,
59c348c3
VC
1270 .dev_attr = &gpio_dev_attr,
1271 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
1272};
1273
745685df
MK
1274/* dma attributes */
1275static struct omap_dma_dev_attr dma_dev_attr = {
1276 .dev_caps = RESERVE_CHANNEL | DMA_LINKED_LCH | GLOBAL_PRIORITY |
1277 IS_CSSA_32 | IS_CDSA_32,
1278 .lch_count = 32,
1279};
1280
745685df
MK
1281/* dma_system -> L3 */
1282static struct omap_hwmod_ocp_if omap2420_dma_system__l3 = {
1283 .master = &omap2420_dma_system_hwmod,
1284 .slave = &omap2420_l3_main_hwmod,
1285 .clk = "core_l3_ck",
1286 .user = OCP_USER_MPU | OCP_USER_SDMA,
1287};
1288
1289/* dma_system master ports */
1290static struct omap_hwmod_ocp_if *omap2420_dma_system_masters[] = {
1291 &omap2420_dma_system__l3,
1292};
1293
1294/* l4_core -> dma_system */
1295static struct omap_hwmod_ocp_if omap2420_l4_core__dma_system = {
1296 .master = &omap2420_l4_core_hwmod,
1297 .slave = &omap2420_dma_system_hwmod,
1298 .clk = "sdma_ick",
ded11383 1299 .addr = omap2_dma_system_addrs,
745685df
MK
1300 .user = OCP_USER_MPU | OCP_USER_SDMA,
1301};
1302
1303/* dma_system slave ports */
1304static struct omap_hwmod_ocp_if *omap2420_dma_system_slaves[] = {
1305 &omap2420_l4_core__dma_system,
1306};
1307
1308static struct omap_hwmod omap2420_dma_system_hwmod = {
1309 .name = "dma",
273b9465 1310 .class = &omap2xxx_dma_hwmod_class,
0d619a89 1311 .mpu_irqs = omap2_dma_system_irqs,
745685df
MK
1312 .main_clk = "core_l3_ck",
1313 .slaves = omap2420_dma_system_slaves,
1314 .slaves_cnt = ARRAY_SIZE(omap2420_dma_system_slaves),
1315 .masters = omap2420_dma_system_masters,
1316 .masters_cnt = ARRAY_SIZE(omap2420_dma_system_masters),
1317 .dev_attr = &dma_dev_attr,
1318 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
1319 .flags = HWMOD_NO_IDLEST,
1320};
1321
fca1ab55
ORL
1322/* mailbox */
1323static struct omap_hwmod omap2420_mailbox_hwmod;
1324static struct omap_hwmod_irq_info omap2420_mailbox_irqs[] = {
1325 { .name = "dsp", .irq = 26 },
1326 { .name = "iva", .irq = 34 },
212738a4 1327 { .irq = -1 }
fca1ab55
ORL
1328};
1329
fca1ab55
ORL
1330/* l4_core -> mailbox */
1331static struct omap_hwmod_ocp_if omap2420_l4_core__mailbox = {
1332 .master = &omap2420_l4_core_hwmod,
1333 .slave = &omap2420_mailbox_hwmod,
ded11383 1334 .addr = omap2_mailbox_addrs,
fca1ab55
ORL
1335 .user = OCP_USER_MPU | OCP_USER_SDMA,
1336};
1337
1338/* mailbox slave ports */
1339static struct omap_hwmod_ocp_if *omap2420_mailbox_slaves[] = {
1340 &omap2420_l4_core__mailbox,
1341};
1342
1343static struct omap_hwmod omap2420_mailbox_hwmod = {
1344 .name = "mailbox",
273b9465 1345 .class = &omap2xxx_mailbox_hwmod_class,
fca1ab55 1346 .mpu_irqs = omap2420_mailbox_irqs,
fca1ab55
ORL
1347 .main_clk = "mailboxes_ick",
1348 .prcm = {
1349 .omap2 = {
1350 .prcm_reg_id = 1,
1351 .module_bit = OMAP24XX_EN_MAILBOXES_SHIFT,
1352 .module_offs = CORE_MOD,
1353 .idlest_reg_id = 1,
1354 .idlest_idle_bit = OMAP24XX_ST_MAILBOXES_SHIFT,
1355 },
1356 },
1357 .slaves = omap2420_mailbox_slaves,
1358 .slaves_cnt = ARRAY_SIZE(omap2420_mailbox_slaves),
1359 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
1360};
1361
617871de 1362/* mcspi1 */
617871de
C
1363static struct omap_hwmod_ocp_if *omap2420_mcspi1_slaves[] = {
1364 &omap2420_l4_core__mcspi1,
1365};
1366
1367static struct omap2_mcspi_dev_attr omap_mcspi1_dev_attr = {
1368 .num_chipselect = 4,
1369};
1370
1371static struct omap_hwmod omap2420_mcspi1_hwmod = {
1372 .name = "mcspi1_hwmod",
0d619a89 1373 .mpu_irqs = omap2_mcspi1_mpu_irqs,
d826ebfa 1374 .sdma_reqs = omap2_mcspi1_sdma_reqs,
617871de
C
1375 .main_clk = "mcspi1_fck",
1376 .prcm = {
1377 .omap2 = {
1378 .module_offs = CORE_MOD,
1379 .prcm_reg_id = 1,
1380 .module_bit = OMAP24XX_EN_MCSPI1_SHIFT,
1381 .idlest_reg_id = 1,
1382 .idlest_idle_bit = OMAP24XX_ST_MCSPI1_SHIFT,
1383 },
1384 },
1385 .slaves = omap2420_mcspi1_slaves,
1386 .slaves_cnt = ARRAY_SIZE(omap2420_mcspi1_slaves),
273b9465
PW
1387 .class = &omap2xxx_mcspi_class,
1388 .dev_attr = &omap_mcspi1_dev_attr,
617871de
C
1389 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
1390};
1391
1392/* mcspi2 */
617871de
C
1393static struct omap_hwmod_ocp_if *omap2420_mcspi2_slaves[] = {
1394 &omap2420_l4_core__mcspi2,
1395};
1396
1397static struct omap2_mcspi_dev_attr omap_mcspi2_dev_attr = {
1398 .num_chipselect = 2,
1399};
1400
1401static struct omap_hwmod omap2420_mcspi2_hwmod = {
1402 .name = "mcspi2_hwmod",
0d619a89 1403 .mpu_irqs = omap2_mcspi2_mpu_irqs,
d826ebfa 1404 .sdma_reqs = omap2_mcspi2_sdma_reqs,
617871de
C
1405 .main_clk = "mcspi2_fck",
1406 .prcm = {
1407 .omap2 = {
1408 .module_offs = CORE_MOD,
1409 .prcm_reg_id = 1,
1410 .module_bit = OMAP24XX_EN_MCSPI2_SHIFT,
1411 .idlest_reg_id = 1,
1412 .idlest_idle_bit = OMAP24XX_ST_MCSPI2_SHIFT,
1413 },
1414 },
1415 .slaves = omap2420_mcspi2_slaves,
1416 .slaves_cnt = ARRAY_SIZE(omap2420_mcspi2_slaves),
273b9465
PW
1417 .class = &omap2xxx_mcspi_class,
1418 .dev_attr = &omap_mcspi2_dev_attr,
617871de
C
1419 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
1420};
1421
3cb72fa4
C
1422/*
1423 * 'mcbsp' class
1424 * multi channel buffered serial port controller
1425 */
1426
1427static struct omap_hwmod_class omap2420_mcbsp_hwmod_class = {
1428 .name = "mcbsp",
1429};
1430
1431/* mcbsp1 */
1432static struct omap_hwmod_irq_info omap2420_mcbsp1_irqs[] = {
1433 { .name = "tx", .irq = 59 },
1434 { .name = "rx", .irq = 60 },
212738a4 1435 { .irq = -1 }
3cb72fa4
C
1436};
1437
3cb72fa4
C
1438/* l4_core -> mcbsp1 */
1439static struct omap_hwmod_ocp_if omap2420_l4_core__mcbsp1 = {
1440 .master = &omap2420_l4_core_hwmod,
1441 .slave = &omap2420_mcbsp1_hwmod,
1442 .clk = "mcbsp1_ick",
ded11383 1443 .addr = omap2_mcbsp1_addrs,
3cb72fa4
C
1444 .user = OCP_USER_MPU | OCP_USER_SDMA,
1445};
1446
1447/* mcbsp1 slave ports */
1448static struct omap_hwmod_ocp_if *omap2420_mcbsp1_slaves[] = {
1449 &omap2420_l4_core__mcbsp1,
1450};
1451
1452static struct omap_hwmod omap2420_mcbsp1_hwmod = {
1453 .name = "mcbsp1",
1454 .class = &omap2420_mcbsp_hwmod_class,
1455 .mpu_irqs = omap2420_mcbsp1_irqs,
d826ebfa 1456 .sdma_reqs = omap2_mcbsp1_sdma_reqs,
3cb72fa4
C
1457 .main_clk = "mcbsp1_fck",
1458 .prcm = {
1459 .omap2 = {
1460 .prcm_reg_id = 1,
1461 .module_bit = OMAP24XX_EN_MCBSP1_SHIFT,
1462 .module_offs = CORE_MOD,
1463 .idlest_reg_id = 1,
1464 .idlest_idle_bit = OMAP24XX_ST_MCBSP1_SHIFT,
1465 },
1466 },
1467 .slaves = omap2420_mcbsp1_slaves,
1468 .slaves_cnt = ARRAY_SIZE(omap2420_mcbsp1_slaves),
1469 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
1470};
1471
1472/* mcbsp2 */
1473static struct omap_hwmod_irq_info omap2420_mcbsp2_irqs[] = {
1474 { .name = "tx", .irq = 62 },
1475 { .name = "rx", .irq = 63 },
212738a4 1476 { .irq = -1 }
3cb72fa4
C
1477};
1478
3cb72fa4
C
1479/* l4_core -> mcbsp2 */
1480static struct omap_hwmod_ocp_if omap2420_l4_core__mcbsp2 = {
1481 .master = &omap2420_l4_core_hwmod,
1482 .slave = &omap2420_mcbsp2_hwmod,
1483 .clk = "mcbsp2_ick",
ded11383 1484 .addr = omap2xxx_mcbsp2_addrs,
3cb72fa4
C
1485 .user = OCP_USER_MPU | OCP_USER_SDMA,
1486};
1487
1488/* mcbsp2 slave ports */
1489static struct omap_hwmod_ocp_if *omap2420_mcbsp2_slaves[] = {
1490 &omap2420_l4_core__mcbsp2,
1491};
1492
1493static struct omap_hwmod omap2420_mcbsp2_hwmod = {
1494 .name = "mcbsp2",
1495 .class = &omap2420_mcbsp_hwmod_class,
1496 .mpu_irqs = omap2420_mcbsp2_irqs,
d826ebfa 1497 .sdma_reqs = omap2_mcbsp2_sdma_reqs,
3cb72fa4
C
1498 .main_clk = "mcbsp2_fck",
1499 .prcm = {
1500 .omap2 = {
1501 .prcm_reg_id = 1,
1502 .module_bit = OMAP24XX_EN_MCBSP2_SHIFT,
1503 .module_offs = CORE_MOD,
1504 .idlest_reg_id = 1,
1505 .idlest_idle_bit = OMAP24XX_ST_MCBSP2_SHIFT,
1506 },
1507 },
1508 .slaves = omap2420_mcbsp2_slaves,
1509 .slaves_cnt = ARRAY_SIZE(omap2420_mcbsp2_slaves),
1510 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420),
1511};
1512
02bfc030 1513static __initdata struct omap_hwmod *omap2420_hwmods[] = {
4a7cf90a 1514 &omap2420_l3_main_hwmod,
02bfc030
PW
1515 &omap2420_l4_core_hwmod,
1516 &omap2420_l4_wkup_hwmod,
1517 &omap2420_mpu_hwmod,
08072acf 1518 &omap2420_iva_hwmod,
eddb1262
TG
1519
1520 &omap2420_timer1_hwmod,
1521 &omap2420_timer2_hwmod,
1522 &omap2420_timer3_hwmod,
1523 &omap2420_timer4_hwmod,
1524 &omap2420_timer5_hwmod,
1525 &omap2420_timer6_hwmod,
1526 &omap2420_timer7_hwmod,
1527 &omap2420_timer8_hwmod,
1528 &omap2420_timer9_hwmod,
1529 &omap2420_timer10_hwmod,
1530 &omap2420_timer11_hwmod,
1531 &omap2420_timer12_hwmod,
1532
a714b9cf 1533 &omap2420_wd_timer2_hwmod,
046465b7
KH
1534 &omap2420_uart1_hwmod,
1535 &omap2420_uart2_hwmod,
1536 &omap2420_uart3_hwmod,
996746ca
SG
1537 /* dss class */
1538 &omap2420_dss_core_hwmod,
1539 &omap2420_dss_dispc_hwmod,
1540 &omap2420_dss_rfbi_hwmod,
1541 &omap2420_dss_venc_hwmod,
1542 /* i2c class */
2004290f
PW
1543 &omap2420_i2c1_hwmod,
1544 &omap2420_i2c2_hwmod,
59c348c3
VC
1545
1546 /* gpio class */
1547 &omap2420_gpio1_hwmod,
1548 &omap2420_gpio2_hwmod,
1549 &omap2420_gpio3_hwmod,
1550 &omap2420_gpio4_hwmod,
745685df
MK
1551
1552 /* dma_system class*/
1553 &omap2420_dma_system_hwmod,
617871de 1554
fca1ab55
ORL
1555 /* mailbox class */
1556 &omap2420_mailbox_hwmod,
1557
3cb72fa4
C
1558 /* mcbsp class */
1559 &omap2420_mcbsp1_hwmod,
1560 &omap2420_mcbsp2_hwmod,
1561
617871de
C
1562 /* mcspi class */
1563 &omap2420_mcspi1_hwmod,
1564 &omap2420_mcspi2_hwmod,
02bfc030
PW
1565 NULL,
1566};
1567
7359154e
PW
1568int __init omap2420_hwmod_init(void)
1569{
550c8092 1570 return omap_hwmod_register(omap2420_hwmods);
7359154e 1571}
This page took 0.210484 seconds and 5 git commands to generate.