blob: 207ccfbac2e4b43ef36a10889438c759a5cb2e6b [file] [log] [blame]
Paul Walmsley73591542010-02-22 22:09:32 -07001/*
2 * omap_hwmod_3xxx_data.c - hardware modules present on the OMAP3xxx chips
3 *
4 * Copyright (C) 2009-2010 Nokia Corporation
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 * The data in this file should be completely autogeneratable from
12 * the TI hardware database or other technical documentation.
13 *
14 * XXX these should be marked initdata for multi-OMAP kernels
15 */
16#include <plat/omap_hwmod.h>
17#include <mach/irqs.h>
18#include <plat/cpu.h>
19#include <plat/dma.h>
Kevin Hilman046465b2010-09-27 20:19:30 +053020#include <plat/serial.h>
Senthilvadivu Guruswamye04d9e12011-01-24 06:21:51 +000021#include <plat/l3_3xxx.h>
Rajendra Nayak4fe20e92010-09-21 19:37:13 +053022#include <plat/l4_3xxx.h>
23#include <plat/i2c.h>
Varadarajan, Charulatha70034d32010-12-07 16:26:57 -080024#include <plat/gpio.h>
Thara Gopinathd3442722010-05-29 22:02:24 +053025#include <plat/smartreflex.h>
Charulatha V0f616a42011-02-17 09:53:10 -080026#include <plat/mcspi.h>
Thara Gopinathce722d22011-02-23 00:14:05 -070027#include <plat/dmtimer.h>
Paul Walmsley73591542010-02-22 22:09:32 -070028
Paul Walmsley43b40992010-02-22 22:09:34 -070029#include "omap_hwmod_common_data.h"
30
Paul Walmsley73591542010-02-22 22:09:32 -070031#include "prm-regbits-34xx.h"
Varadarajan, Charulatha6b667f82010-09-23 20:02:38 +053032#include "cm-regbits-34xx.h"
Paul Walmsleyff2516f2010-12-21 15:39:15 -070033#include "wd_timer.h"
Hema HK273ff8c2011-02-17 12:07:19 +053034#include <mach/am35xx.h>
Paul Walmsley73591542010-02-22 22:09:32 -070035
36/*
37 * OMAP3xxx hardware module integration data
38 *
39 * ALl of the data in this section should be autogeneratable from the
40 * TI hardware database or other technical documentation. Data that
41 * is driver-specific or driver-kernel integration-specific belongs
42 * elsewhere.
43 */
44
45static struct omap_hwmod omap3xxx_mpu_hwmod;
Kevin Hilman540064b2010-07-26 16:34:32 -060046static struct omap_hwmod omap3xxx_iva_hwmod;
Kevin Hilman4a7cf902010-07-26 16:34:32 -060047static struct omap_hwmod omap3xxx_l3_main_hwmod;
Paul Walmsley73591542010-02-22 22:09:32 -070048static struct omap_hwmod omap3xxx_l4_core_hwmod;
49static struct omap_hwmod omap3xxx_l4_per_hwmod;
Varadarajan, Charulatha6b667f82010-09-23 20:02:38 +053050static struct omap_hwmod omap3xxx_wd_timer2_hwmod;
Senthilvadivu Guruswamye04d9e12011-01-24 06:21:51 +000051static struct omap_hwmod omap3430es1_dss_core_hwmod;
52static struct omap_hwmod omap3xxx_dss_core_hwmod;
53static struct omap_hwmod omap3xxx_dss_dispc_hwmod;
54static struct omap_hwmod omap3xxx_dss_dsi1_hwmod;
55static struct omap_hwmod omap3xxx_dss_rfbi_hwmod;
56static struct omap_hwmod omap3xxx_dss_venc_hwmod;
Rajendra Nayak4fe20e92010-09-21 19:37:13 +053057static struct omap_hwmod omap3xxx_i2c1_hwmod;
58static struct omap_hwmod omap3xxx_i2c2_hwmod;
59static struct omap_hwmod omap3xxx_i2c3_hwmod;
Varadarajan, Charulatha70034d32010-12-07 16:26:57 -080060static struct omap_hwmod omap3xxx_gpio1_hwmod;
61static struct omap_hwmod omap3xxx_gpio2_hwmod;
62static struct omap_hwmod omap3xxx_gpio3_hwmod;
63static struct omap_hwmod omap3xxx_gpio4_hwmod;
64static struct omap_hwmod omap3xxx_gpio5_hwmod;
65static struct omap_hwmod omap3xxx_gpio6_hwmod;
Thara Gopinathd3442722010-05-29 22:02:24 +053066static struct omap_hwmod omap34xx_sr1_hwmod;
67static struct omap_hwmod omap34xx_sr2_hwmod;
Charulatha V0f616a42011-02-17 09:53:10 -080068static struct omap_hwmod omap34xx_mcspi1;
69static struct omap_hwmod omap34xx_mcspi2;
70static struct omap_hwmod omap34xx_mcspi3;
71static struct omap_hwmod omap34xx_mcspi4;
Paul Walmsleyb1636052011-03-01 13:12:56 -080072static struct omap_hwmod omap3xxx_mmc1_hwmod;
73static struct omap_hwmod omap3xxx_mmc2_hwmod;
74static struct omap_hwmod omap3xxx_mmc3_hwmod;
Hema HK273ff8c2011-02-17 12:07:19 +053075static struct omap_hwmod am35xx_usbhsotg_hwmod;
Paul Walmsley73591542010-02-22 22:09:32 -070076
G, Manjunath Kondaiah01438ab2010-12-20 18:27:19 -080077static struct omap_hwmod omap3xxx_dma_system_hwmod;
78
Paul Walmsley73591542010-02-22 22:09:32 -070079/* L3 -> L4_CORE interface */
Kevin Hilman4a7cf902010-07-26 16:34:32 -060080static struct omap_hwmod_ocp_if omap3xxx_l3_main__l4_core = {
81 .master = &omap3xxx_l3_main_hwmod,
Paul Walmsley73591542010-02-22 22:09:32 -070082 .slave = &omap3xxx_l4_core_hwmod,
83 .user = OCP_USER_MPU | OCP_USER_SDMA,
84};
85
86/* L3 -> L4_PER interface */
Kevin Hilman4a7cf902010-07-26 16:34:32 -060087static struct omap_hwmod_ocp_if omap3xxx_l3_main__l4_per = {
88 .master = &omap3xxx_l3_main_hwmod,
Paul Walmsley73591542010-02-22 22:09:32 -070089 .slave = &omap3xxx_l4_per_hwmod,
90 .user = OCP_USER_MPU | OCP_USER_SDMA,
91};
92
93/* MPU -> L3 interface */
Kevin Hilman4a7cf902010-07-26 16:34:32 -060094static struct omap_hwmod_ocp_if omap3xxx_mpu__l3_main = {
Paul Walmsley73591542010-02-22 22:09:32 -070095 .master = &omap3xxx_mpu_hwmod,
Kevin Hilman4a7cf902010-07-26 16:34:32 -060096 .slave = &omap3xxx_l3_main_hwmod,
Paul Walmsley73591542010-02-22 22:09:32 -070097 .user = OCP_USER_MPU,
98};
99
100/* Slave interfaces on the L3 interconnect */
Kevin Hilman4a7cf902010-07-26 16:34:32 -0600101static struct omap_hwmod_ocp_if *omap3xxx_l3_main_slaves[] = {
102 &omap3xxx_mpu__l3_main,
Paul Walmsley73591542010-02-22 22:09:32 -0700103};
104
Senthilvadivu Guruswamye04d9e12011-01-24 06:21:51 +0000105/* DSS -> l3 */
106static struct omap_hwmod_ocp_if omap3xxx_dss__l3 = {
107 .master = &omap3xxx_dss_core_hwmod,
108 .slave = &omap3xxx_l3_main_hwmod,
109 .fw = {
110 .omap2 = {
111 .l3_perm_bit = OMAP3_L3_CORE_FW_INIT_ID_DSS,
112 .flags = OMAP_FIREWALL_L3,
113 }
114 },
115 .user = OCP_USER_MPU | OCP_USER_SDMA,
116};
117
Paul Walmsley73591542010-02-22 22:09:32 -0700118/* Master interfaces on the L3 interconnect */
Kevin Hilman4a7cf902010-07-26 16:34:32 -0600119static struct omap_hwmod_ocp_if *omap3xxx_l3_main_masters[] = {
120 &omap3xxx_l3_main__l4_core,
121 &omap3xxx_l3_main__l4_per,
Paul Walmsley73591542010-02-22 22:09:32 -0700122};
123
124/* L3 */
Kevin Hilman4a7cf902010-07-26 16:34:32 -0600125static struct omap_hwmod omap3xxx_l3_main_hwmod = {
Benoit Coussonfa983472010-07-26 16:34:29 -0600126 .name = "l3_main",
Paul Walmsley43b40992010-02-22 22:09:34 -0700127 .class = &l3_hwmod_class,
Kevin Hilman4a7cf902010-07-26 16:34:32 -0600128 .masters = omap3xxx_l3_main_masters,
129 .masters_cnt = ARRAY_SIZE(omap3xxx_l3_main_masters),
130 .slaves = omap3xxx_l3_main_slaves,
131 .slaves_cnt = ARRAY_SIZE(omap3xxx_l3_main_slaves),
Kevin Hilman2eb18752010-07-26 16:34:28 -0600132 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
133 .flags = HWMOD_NO_IDLEST,
Paul Walmsley73591542010-02-22 22:09:32 -0700134};
135
136static struct omap_hwmod omap3xxx_l4_wkup_hwmod;
Kevin Hilman046465b2010-09-27 20:19:30 +0530137static struct omap_hwmod omap3xxx_uart1_hwmod;
138static struct omap_hwmod omap3xxx_uart2_hwmod;
139static struct omap_hwmod omap3xxx_uart3_hwmod;
140static struct omap_hwmod omap3xxx_uart4_hwmod;
Hema HK870ea2b2011-02-17 12:07:18 +0530141static struct omap_hwmod omap3xxx_usbhsotg_hwmod;
Paul Walmsley73591542010-02-22 22:09:32 -0700142
Hema HK870ea2b2011-02-17 12:07:18 +0530143/* l3_core -> usbhsotg interface */
144static struct omap_hwmod_ocp_if omap3xxx_usbhsotg__l3 = {
145 .master = &omap3xxx_usbhsotg_hwmod,
146 .slave = &omap3xxx_l3_main_hwmod,
147 .clk = "core_l3_ick",
148 .user = OCP_USER_MPU,
149};
Paul Walmsley73591542010-02-22 22:09:32 -0700150
Hema HK273ff8c2011-02-17 12:07:19 +0530151/* l3_core -> am35xx_usbhsotg interface */
152static struct omap_hwmod_ocp_if am35xx_usbhsotg__l3 = {
153 .master = &am35xx_usbhsotg_hwmod,
154 .slave = &omap3xxx_l3_main_hwmod,
155 .clk = "core_l3_ick",
156 .user = OCP_USER_MPU,
157};
Paul Walmsley73591542010-02-22 22:09:32 -0700158/* L4_CORE -> L4_WKUP interface */
159static struct omap_hwmod_ocp_if omap3xxx_l4_core__l4_wkup = {
160 .master = &omap3xxx_l4_core_hwmod,
161 .slave = &omap3xxx_l4_wkup_hwmod,
162 .user = OCP_USER_MPU | OCP_USER_SDMA,
163};
164
Paul Walmsleyb1636052011-03-01 13:12:56 -0800165/* L4 CORE -> MMC1 interface */
166static struct omap_hwmod_addr_space omap3xxx_mmc1_addr_space[] = {
167 {
168 .pa_start = 0x4809c000,
169 .pa_end = 0x4809c1ff,
170 .flags = ADDR_TYPE_RT,
171 },
172};
173
174static struct omap_hwmod_ocp_if omap3xxx_l4_core__mmc1 = {
175 .master = &omap3xxx_l4_core_hwmod,
176 .slave = &omap3xxx_mmc1_hwmod,
177 .clk = "mmchs1_ick",
178 .addr = omap3xxx_mmc1_addr_space,
179 .addr_cnt = ARRAY_SIZE(omap3xxx_mmc1_addr_space),
180 .user = OCP_USER_MPU | OCP_USER_SDMA,
181 .flags = OMAP_FIREWALL_L4
182};
183
184/* L4 CORE -> MMC2 interface */
185static struct omap_hwmod_addr_space omap3xxx_mmc2_addr_space[] = {
186 {
187 .pa_start = 0x480b4000,
188 .pa_end = 0x480b41ff,
189 .flags = ADDR_TYPE_RT,
190 },
191};
192
193static struct omap_hwmod_ocp_if omap3xxx_l4_core__mmc2 = {
194 .master = &omap3xxx_l4_core_hwmod,
195 .slave = &omap3xxx_mmc2_hwmod,
196 .clk = "mmchs2_ick",
197 .addr = omap3xxx_mmc2_addr_space,
198 .addr_cnt = ARRAY_SIZE(omap3xxx_mmc2_addr_space),
199 .user = OCP_USER_MPU | OCP_USER_SDMA,
200 .flags = OMAP_FIREWALL_L4
201};
202
203/* L4 CORE -> MMC3 interface */
204static struct omap_hwmod_addr_space omap3xxx_mmc3_addr_space[] = {
205 {
206 .pa_start = 0x480ad000,
207 .pa_end = 0x480ad1ff,
208 .flags = ADDR_TYPE_RT,
209 },
210};
211
212static struct omap_hwmod_ocp_if omap3xxx_l4_core__mmc3 = {
213 .master = &omap3xxx_l4_core_hwmod,
214 .slave = &omap3xxx_mmc3_hwmod,
215 .clk = "mmchs3_ick",
216 .addr = omap3xxx_mmc3_addr_space,
217 .addr_cnt = ARRAY_SIZE(omap3xxx_mmc3_addr_space),
218 .user = OCP_USER_MPU | OCP_USER_SDMA,
219 .flags = OMAP_FIREWALL_L4
220};
221
Kevin Hilman046465b2010-09-27 20:19:30 +0530222/* L4 CORE -> UART1 interface */
223static struct omap_hwmod_addr_space omap3xxx_uart1_addr_space[] = {
224 {
225 .pa_start = OMAP3_UART1_BASE,
226 .pa_end = OMAP3_UART1_BASE + SZ_8K - 1,
227 .flags = ADDR_MAP_ON_INIT | ADDR_TYPE_RT,
228 },
229};
230
231static struct omap_hwmod_ocp_if omap3_l4_core__uart1 = {
232 .master = &omap3xxx_l4_core_hwmod,
233 .slave = &omap3xxx_uart1_hwmod,
234 .clk = "uart1_ick",
235 .addr = omap3xxx_uart1_addr_space,
236 .addr_cnt = ARRAY_SIZE(omap3xxx_uart1_addr_space),
237 .user = OCP_USER_MPU | OCP_USER_SDMA,
238};
239
240/* L4 CORE -> UART2 interface */
241static struct omap_hwmod_addr_space omap3xxx_uart2_addr_space[] = {
242 {
243 .pa_start = OMAP3_UART2_BASE,
244 .pa_end = OMAP3_UART2_BASE + SZ_1K - 1,
245 .flags = ADDR_MAP_ON_INIT | ADDR_TYPE_RT,
246 },
247};
248
249static struct omap_hwmod_ocp_if omap3_l4_core__uart2 = {
250 .master = &omap3xxx_l4_core_hwmod,
251 .slave = &omap3xxx_uart2_hwmod,
252 .clk = "uart2_ick",
253 .addr = omap3xxx_uart2_addr_space,
254 .addr_cnt = ARRAY_SIZE(omap3xxx_uart2_addr_space),
255 .user = OCP_USER_MPU | OCP_USER_SDMA,
256};
257
258/* L4 PER -> UART3 interface */
259static struct omap_hwmod_addr_space omap3xxx_uart3_addr_space[] = {
260 {
261 .pa_start = OMAP3_UART3_BASE,
262 .pa_end = OMAP3_UART3_BASE + SZ_1K - 1,
263 .flags = ADDR_MAP_ON_INIT | ADDR_TYPE_RT,
264 },
265};
266
267static struct omap_hwmod_ocp_if omap3_l4_per__uart3 = {
268 .master = &omap3xxx_l4_per_hwmod,
269 .slave = &omap3xxx_uart3_hwmod,
270 .clk = "uart3_ick",
271 .addr = omap3xxx_uart3_addr_space,
272 .addr_cnt = ARRAY_SIZE(omap3xxx_uart3_addr_space),
273 .user = OCP_USER_MPU | OCP_USER_SDMA,
274};
275
276/* L4 PER -> UART4 interface */
277static struct omap_hwmod_addr_space omap3xxx_uart4_addr_space[] = {
278 {
279 .pa_start = OMAP3_UART4_BASE,
280 .pa_end = OMAP3_UART4_BASE + SZ_1K - 1,
281 .flags = ADDR_MAP_ON_INIT | ADDR_TYPE_RT,
282 },
283};
284
285static struct omap_hwmod_ocp_if omap3_l4_per__uart4 = {
286 .master = &omap3xxx_l4_per_hwmod,
287 .slave = &omap3xxx_uart4_hwmod,
288 .clk = "uart4_ick",
289 .addr = omap3xxx_uart4_addr_space,
290 .addr_cnt = ARRAY_SIZE(omap3xxx_uart4_addr_space),
291 .user = OCP_USER_MPU | OCP_USER_SDMA,
292};
293
Rajendra Nayak4fe20e92010-09-21 19:37:13 +0530294/* I2C IP block address space length (in bytes) */
295#define OMAP2_I2C_AS_LEN 128
296
297/* L4 CORE -> I2C1 interface */
298static struct omap_hwmod_addr_space omap3xxx_i2c1_addr_space[] = {
299 {
300 .pa_start = 0x48070000,
301 .pa_end = 0x48070000 + OMAP2_I2C_AS_LEN - 1,
302 .flags = ADDR_TYPE_RT,
303 },
304};
305
306static struct omap_hwmod_ocp_if omap3_l4_core__i2c1 = {
307 .master = &omap3xxx_l4_core_hwmod,
308 .slave = &omap3xxx_i2c1_hwmod,
309 .clk = "i2c1_ick",
310 .addr = omap3xxx_i2c1_addr_space,
311 .addr_cnt = ARRAY_SIZE(omap3xxx_i2c1_addr_space),
312 .fw = {
313 .omap2 = {
314 .l4_fw_region = OMAP3_L4_CORE_FW_I2C1_REGION,
315 .l4_prot_group = 7,
316 .flags = OMAP_FIREWALL_L4,
317 }
318 },
319 .user = OCP_USER_MPU | OCP_USER_SDMA,
320};
321
322/* L4 CORE -> I2C2 interface */
323static struct omap_hwmod_addr_space omap3xxx_i2c2_addr_space[] = {
324 {
325 .pa_start = 0x48072000,
326 .pa_end = 0x48072000 + OMAP2_I2C_AS_LEN - 1,
327 .flags = ADDR_TYPE_RT,
328 },
329};
330
331static struct omap_hwmod_ocp_if omap3_l4_core__i2c2 = {
332 .master = &omap3xxx_l4_core_hwmod,
333 .slave = &omap3xxx_i2c2_hwmod,
334 .clk = "i2c2_ick",
335 .addr = omap3xxx_i2c2_addr_space,
336 .addr_cnt = ARRAY_SIZE(omap3xxx_i2c2_addr_space),
337 .fw = {
338 .omap2 = {
339 .l4_fw_region = OMAP3_L4_CORE_FW_I2C2_REGION,
340 .l4_prot_group = 7,
341 .flags = OMAP_FIREWALL_L4,
342 }
343 },
344 .user = OCP_USER_MPU | OCP_USER_SDMA,
345};
346
347/* L4 CORE -> I2C3 interface */
348static struct omap_hwmod_addr_space omap3xxx_i2c3_addr_space[] = {
349 {
350 .pa_start = 0x48060000,
351 .pa_end = 0x48060000 + OMAP2_I2C_AS_LEN - 1,
352 .flags = ADDR_TYPE_RT,
353 },
354};
355
356static struct omap_hwmod_ocp_if omap3_l4_core__i2c3 = {
357 .master = &omap3xxx_l4_core_hwmod,
358 .slave = &omap3xxx_i2c3_hwmod,
359 .clk = "i2c3_ick",
360 .addr = omap3xxx_i2c3_addr_space,
361 .addr_cnt = ARRAY_SIZE(omap3xxx_i2c3_addr_space),
362 .fw = {
363 .omap2 = {
364 .l4_fw_region = OMAP3_L4_CORE_FW_I2C3_REGION,
365 .l4_prot_group = 7,
366 .flags = OMAP_FIREWALL_L4,
367 }
368 },
369 .user = OCP_USER_MPU | OCP_USER_SDMA,
370};
371
Thara Gopinathd3442722010-05-29 22:02:24 +0530372/* L4 CORE -> SR1 interface */
373static struct omap_hwmod_addr_space omap3_sr1_addr_space[] = {
374 {
375 .pa_start = OMAP34XX_SR1_BASE,
376 .pa_end = OMAP34XX_SR1_BASE + SZ_1K - 1,
377 .flags = ADDR_TYPE_RT,
378 },
379};
380
381static struct omap_hwmod_ocp_if omap3_l4_core__sr1 = {
382 .master = &omap3xxx_l4_core_hwmod,
383 .slave = &omap34xx_sr1_hwmod,
384 .clk = "sr_l4_ick",
385 .addr = omap3_sr1_addr_space,
386 .addr_cnt = ARRAY_SIZE(omap3_sr1_addr_space),
387 .user = OCP_USER_MPU,
388};
389
390/* L4 CORE -> SR1 interface */
391static struct omap_hwmod_addr_space omap3_sr2_addr_space[] = {
392 {
393 .pa_start = OMAP34XX_SR2_BASE,
394 .pa_end = OMAP34XX_SR2_BASE + SZ_1K - 1,
395 .flags = ADDR_TYPE_RT,
396 },
397};
398
399static struct omap_hwmod_ocp_if omap3_l4_core__sr2 = {
400 .master = &omap3xxx_l4_core_hwmod,
401 .slave = &omap34xx_sr2_hwmod,
402 .clk = "sr_l4_ick",
403 .addr = omap3_sr2_addr_space,
404 .addr_cnt = ARRAY_SIZE(omap3_sr2_addr_space),
405 .user = OCP_USER_MPU,
406};
407
Hema HK870ea2b2011-02-17 12:07:18 +0530408/*
409* usbhsotg interface data
410*/
411
412static struct omap_hwmod_addr_space omap3xxx_usbhsotg_addrs[] = {
413 {
414 .pa_start = OMAP34XX_HSUSB_OTG_BASE,
415 .pa_end = OMAP34XX_HSUSB_OTG_BASE + SZ_4K - 1,
416 .flags = ADDR_TYPE_RT
417 },
418};
419
420/* l4_core -> usbhsotg */
421static struct omap_hwmod_ocp_if omap3xxx_l4_core__usbhsotg = {
422 .master = &omap3xxx_l4_core_hwmod,
423 .slave = &omap3xxx_usbhsotg_hwmod,
424 .clk = "l4_ick",
425 .addr = omap3xxx_usbhsotg_addrs,
426 .addr_cnt = ARRAY_SIZE(omap3xxx_usbhsotg_addrs),
427 .user = OCP_USER_MPU,
428};
429
430static struct omap_hwmod_ocp_if *omap3xxx_usbhsotg_masters[] = {
431 &omap3xxx_usbhsotg__l3,
432};
433
434static struct omap_hwmod_ocp_if *omap3xxx_usbhsotg_slaves[] = {
435 &omap3xxx_l4_core__usbhsotg,
436};
437
Hema HK273ff8c2011-02-17 12:07:19 +0530438static struct omap_hwmod_addr_space am35xx_usbhsotg_addrs[] = {
439 {
440 .pa_start = AM35XX_IPSS_USBOTGSS_BASE,
441 .pa_end = AM35XX_IPSS_USBOTGSS_BASE + SZ_4K - 1,
442 .flags = ADDR_TYPE_RT
443 },
444};
445
446/* l4_core -> usbhsotg */
447static struct omap_hwmod_ocp_if am35xx_l4_core__usbhsotg = {
448 .master = &omap3xxx_l4_core_hwmod,
449 .slave = &am35xx_usbhsotg_hwmod,
450 .clk = "l4_ick",
451 .addr = am35xx_usbhsotg_addrs,
452 .addr_cnt = ARRAY_SIZE(am35xx_usbhsotg_addrs),
453 .user = OCP_USER_MPU,
454};
455
456static struct omap_hwmod_ocp_if *am35xx_usbhsotg_masters[] = {
457 &am35xx_usbhsotg__l3,
458};
459
460static struct omap_hwmod_ocp_if *am35xx_usbhsotg_slaves[] = {
461 &am35xx_l4_core__usbhsotg,
462};
Paul Walmsley73591542010-02-22 22:09:32 -0700463/* Slave interfaces on the L4_CORE interconnect */
464static struct omap_hwmod_ocp_if *omap3xxx_l4_core_slaves[] = {
Kevin Hilman4a7cf902010-07-26 16:34:32 -0600465 &omap3xxx_l3_main__l4_core,
Thara Gopinathd3442722010-05-29 22:02:24 +0530466 &omap3_l4_core__sr1,
467 &omap3_l4_core__sr2,
Paul Walmsley73591542010-02-22 22:09:32 -0700468};
469
470/* Master interfaces on the L4_CORE interconnect */
471static struct omap_hwmod_ocp_if *omap3xxx_l4_core_masters[] = {
472 &omap3xxx_l4_core__l4_wkup,
Kevin Hilman046465b2010-09-27 20:19:30 +0530473 &omap3_l4_core__uart1,
474 &omap3_l4_core__uart2,
Rajendra Nayak4fe20e92010-09-21 19:37:13 +0530475 &omap3_l4_core__i2c1,
476 &omap3_l4_core__i2c2,
477 &omap3_l4_core__i2c3,
Paul Walmsley73591542010-02-22 22:09:32 -0700478};
479
480/* L4 CORE */
481static struct omap_hwmod omap3xxx_l4_core_hwmod = {
Benoit Coussonfa983472010-07-26 16:34:29 -0600482 .name = "l4_core",
Paul Walmsley43b40992010-02-22 22:09:34 -0700483 .class = &l4_hwmod_class,
Paul Walmsley73591542010-02-22 22:09:32 -0700484 .masters = omap3xxx_l4_core_masters,
485 .masters_cnt = ARRAY_SIZE(omap3xxx_l4_core_masters),
486 .slaves = omap3xxx_l4_core_slaves,
487 .slaves_cnt = ARRAY_SIZE(omap3xxx_l4_core_slaves),
Kevin Hilman2eb18752010-07-26 16:34:28 -0600488 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
489 .flags = HWMOD_NO_IDLEST,
Paul Walmsley73591542010-02-22 22:09:32 -0700490};
491
492/* Slave interfaces on the L4_PER interconnect */
493static struct omap_hwmod_ocp_if *omap3xxx_l4_per_slaves[] = {
Kevin Hilman4a7cf902010-07-26 16:34:32 -0600494 &omap3xxx_l3_main__l4_per,
Paul Walmsley73591542010-02-22 22:09:32 -0700495};
496
497/* Master interfaces on the L4_PER interconnect */
498static struct omap_hwmod_ocp_if *omap3xxx_l4_per_masters[] = {
Kevin Hilman046465b2010-09-27 20:19:30 +0530499 &omap3_l4_per__uart3,
500 &omap3_l4_per__uart4,
Paul Walmsley73591542010-02-22 22:09:32 -0700501};
502
503/* L4 PER */
504static struct omap_hwmod omap3xxx_l4_per_hwmod = {
Benoit Coussonfa983472010-07-26 16:34:29 -0600505 .name = "l4_per",
Paul Walmsley43b40992010-02-22 22:09:34 -0700506 .class = &l4_hwmod_class,
Paul Walmsley73591542010-02-22 22:09:32 -0700507 .masters = omap3xxx_l4_per_masters,
508 .masters_cnt = ARRAY_SIZE(omap3xxx_l4_per_masters),
509 .slaves = omap3xxx_l4_per_slaves,
510 .slaves_cnt = ARRAY_SIZE(omap3xxx_l4_per_slaves),
Kevin Hilman2eb18752010-07-26 16:34:28 -0600511 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
512 .flags = HWMOD_NO_IDLEST,
Paul Walmsley73591542010-02-22 22:09:32 -0700513};
514
515/* Slave interfaces on the L4_WKUP interconnect */
516static struct omap_hwmod_ocp_if *omap3xxx_l4_wkup_slaves[] = {
517 &omap3xxx_l4_core__l4_wkup,
518};
519
520/* Master interfaces on the L4_WKUP interconnect */
521static struct omap_hwmod_ocp_if *omap3xxx_l4_wkup_masters[] = {
522};
523
524/* L4 WKUP */
525static struct omap_hwmod omap3xxx_l4_wkup_hwmod = {
Benoit Coussonfa983472010-07-26 16:34:29 -0600526 .name = "l4_wkup",
Paul Walmsley43b40992010-02-22 22:09:34 -0700527 .class = &l4_hwmod_class,
Paul Walmsley73591542010-02-22 22:09:32 -0700528 .masters = omap3xxx_l4_wkup_masters,
529 .masters_cnt = ARRAY_SIZE(omap3xxx_l4_wkup_masters),
530 .slaves = omap3xxx_l4_wkup_slaves,
531 .slaves_cnt = ARRAY_SIZE(omap3xxx_l4_wkup_slaves),
Kevin Hilman2eb18752010-07-26 16:34:28 -0600532 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
533 .flags = HWMOD_NO_IDLEST,
Paul Walmsley73591542010-02-22 22:09:32 -0700534};
535
536/* Master interfaces on the MPU device */
537static struct omap_hwmod_ocp_if *omap3xxx_mpu_masters[] = {
Kevin Hilman4a7cf902010-07-26 16:34:32 -0600538 &omap3xxx_mpu__l3_main,
Paul Walmsley73591542010-02-22 22:09:32 -0700539};
540
541/* MPU */
542static struct omap_hwmod omap3xxx_mpu_hwmod = {
Benoit Cousson5c2c0292010-05-20 12:31:10 -0600543 .name = "mpu",
Paul Walmsley43b40992010-02-22 22:09:34 -0700544 .class = &mpu_hwmod_class,
Paul Walmsley73591542010-02-22 22:09:32 -0700545 .main_clk = "arm_fck",
546 .masters = omap3xxx_mpu_masters,
547 .masters_cnt = ARRAY_SIZE(omap3xxx_mpu_masters),
548 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
549};
550
Kevin Hilman540064b2010-07-26 16:34:32 -0600551/*
552 * IVA2_2 interface data
553 */
554
555/* IVA2 <- L3 interface */
556static struct omap_hwmod_ocp_if omap3xxx_l3__iva = {
557 .master = &omap3xxx_l3_main_hwmod,
558 .slave = &omap3xxx_iva_hwmod,
559 .clk = "iva2_ck",
560 .user = OCP_USER_MPU | OCP_USER_SDMA,
561};
562
563static struct omap_hwmod_ocp_if *omap3xxx_iva_masters[] = {
564 &omap3xxx_l3__iva,
565};
566
567/*
568 * IVA2 (IVA2)
569 */
570
571static struct omap_hwmod omap3xxx_iva_hwmod = {
572 .name = "iva",
573 .class = &iva_hwmod_class,
574 .masters = omap3xxx_iva_masters,
575 .masters_cnt = ARRAY_SIZE(omap3xxx_iva_masters),
576 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
577};
578
Thara Gopinathce722d22011-02-23 00:14:05 -0700579/* timer class */
580static struct omap_hwmod_class_sysconfig omap3xxx_timer_1ms_sysc = {
581 .rev_offs = 0x0000,
582 .sysc_offs = 0x0010,
583 .syss_offs = 0x0014,
584 .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_CLOCKACTIVITY |
585 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
586 SYSC_HAS_EMUFREE | SYSC_HAS_AUTOIDLE),
587 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
588 .sysc_fields = &omap_hwmod_sysc_type1,
589};
590
591static struct omap_hwmod_class omap3xxx_timer_1ms_hwmod_class = {
592 .name = "timer",
593 .sysc = &omap3xxx_timer_1ms_sysc,
594 .rev = OMAP_TIMER_IP_VERSION_1,
595};
596
597static struct omap_hwmod_class_sysconfig omap3xxx_timer_sysc = {
598 .rev_offs = 0x0000,
599 .sysc_offs = 0x0010,
600 .syss_offs = 0x0014,
601 .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_ENAWAKEUP |
602 SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE),
603 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
604 .sysc_fields = &omap_hwmod_sysc_type1,
605};
606
607static struct omap_hwmod_class omap3xxx_timer_hwmod_class = {
608 .name = "timer",
609 .sysc = &omap3xxx_timer_sysc,
610 .rev = OMAP_TIMER_IP_VERSION_1,
611};
612
613/* timer1 */
614static struct omap_hwmod omap3xxx_timer1_hwmod;
615static struct omap_hwmod_irq_info omap3xxx_timer1_mpu_irqs[] = {
616 { .irq = 37, },
617};
618
619static struct omap_hwmod_addr_space omap3xxx_timer1_addrs[] = {
620 {
621 .pa_start = 0x48318000,
622 .pa_end = 0x48318000 + SZ_1K - 1,
623 .flags = ADDR_TYPE_RT
624 },
625};
626
627/* l4_wkup -> timer1 */
628static struct omap_hwmod_ocp_if omap3xxx_l4_wkup__timer1 = {
629 .master = &omap3xxx_l4_wkup_hwmod,
630 .slave = &omap3xxx_timer1_hwmod,
631 .clk = "gpt1_ick",
632 .addr = omap3xxx_timer1_addrs,
633 .addr_cnt = ARRAY_SIZE(omap3xxx_timer1_addrs),
634 .user = OCP_USER_MPU | OCP_USER_SDMA,
635};
636
637/* timer1 slave port */
638static struct omap_hwmod_ocp_if *omap3xxx_timer1_slaves[] = {
639 &omap3xxx_l4_wkup__timer1,
640};
641
642/* timer1 hwmod */
643static struct omap_hwmod omap3xxx_timer1_hwmod = {
644 .name = "timer1",
645 .mpu_irqs = omap3xxx_timer1_mpu_irqs,
646 .mpu_irqs_cnt = ARRAY_SIZE(omap3xxx_timer1_mpu_irqs),
647 .main_clk = "gpt1_fck",
648 .prcm = {
649 .omap2 = {
650 .prcm_reg_id = 1,
651 .module_bit = OMAP3430_EN_GPT1_SHIFT,
652 .module_offs = WKUP_MOD,
653 .idlest_reg_id = 1,
654 .idlest_idle_bit = OMAP3430_ST_GPT1_SHIFT,
655 },
656 },
657 .slaves = omap3xxx_timer1_slaves,
658 .slaves_cnt = ARRAY_SIZE(omap3xxx_timer1_slaves),
659 .class = &omap3xxx_timer_1ms_hwmod_class,
660 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
661};
662
663/* timer2 */
664static struct omap_hwmod omap3xxx_timer2_hwmod;
665static struct omap_hwmod_irq_info omap3xxx_timer2_mpu_irqs[] = {
666 { .irq = 38, },
667};
668
669static struct omap_hwmod_addr_space omap3xxx_timer2_addrs[] = {
670 {
671 .pa_start = 0x49032000,
672 .pa_end = 0x49032000 + SZ_1K - 1,
673 .flags = ADDR_TYPE_RT
674 },
675};
676
677/* l4_per -> timer2 */
678static struct omap_hwmod_ocp_if omap3xxx_l4_per__timer2 = {
679 .master = &omap3xxx_l4_per_hwmod,
680 .slave = &omap3xxx_timer2_hwmod,
681 .clk = "gpt2_ick",
682 .addr = omap3xxx_timer2_addrs,
683 .addr_cnt = ARRAY_SIZE(omap3xxx_timer2_addrs),
684 .user = OCP_USER_MPU | OCP_USER_SDMA,
685};
686
687/* timer2 slave port */
688static struct omap_hwmod_ocp_if *omap3xxx_timer2_slaves[] = {
689 &omap3xxx_l4_per__timer2,
690};
691
692/* timer2 hwmod */
693static struct omap_hwmod omap3xxx_timer2_hwmod = {
694 .name = "timer2",
695 .mpu_irqs = omap3xxx_timer2_mpu_irqs,
696 .mpu_irqs_cnt = ARRAY_SIZE(omap3xxx_timer2_mpu_irqs),
697 .main_clk = "gpt2_fck",
698 .prcm = {
699 .omap2 = {
700 .prcm_reg_id = 1,
701 .module_bit = OMAP3430_EN_GPT2_SHIFT,
702 .module_offs = OMAP3430_PER_MOD,
703 .idlest_reg_id = 1,
704 .idlest_idle_bit = OMAP3430_ST_GPT2_SHIFT,
705 },
706 },
707 .slaves = omap3xxx_timer2_slaves,
708 .slaves_cnt = ARRAY_SIZE(omap3xxx_timer2_slaves),
709 .class = &omap3xxx_timer_1ms_hwmod_class,
710 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
711};
712
713/* timer3 */
714static struct omap_hwmod omap3xxx_timer3_hwmod;
715static struct omap_hwmod_irq_info omap3xxx_timer3_mpu_irqs[] = {
716 { .irq = 39, },
717};
718
719static struct omap_hwmod_addr_space omap3xxx_timer3_addrs[] = {
720 {
721 .pa_start = 0x49034000,
722 .pa_end = 0x49034000 + SZ_1K - 1,
723 .flags = ADDR_TYPE_RT
724 },
725};
726
727/* l4_per -> timer3 */
728static struct omap_hwmod_ocp_if omap3xxx_l4_per__timer3 = {
729 .master = &omap3xxx_l4_per_hwmod,
730 .slave = &omap3xxx_timer3_hwmod,
731 .clk = "gpt3_ick",
732 .addr = omap3xxx_timer3_addrs,
733 .addr_cnt = ARRAY_SIZE(omap3xxx_timer3_addrs),
734 .user = OCP_USER_MPU | OCP_USER_SDMA,
735};
736
737/* timer3 slave port */
738static struct omap_hwmod_ocp_if *omap3xxx_timer3_slaves[] = {
739 &omap3xxx_l4_per__timer3,
740};
741
742/* timer3 hwmod */
743static struct omap_hwmod omap3xxx_timer3_hwmod = {
744 .name = "timer3",
745 .mpu_irqs = omap3xxx_timer3_mpu_irqs,
746 .mpu_irqs_cnt = ARRAY_SIZE(omap3xxx_timer3_mpu_irqs),
747 .main_clk = "gpt3_fck",
748 .prcm = {
749 .omap2 = {
750 .prcm_reg_id = 1,
751 .module_bit = OMAP3430_EN_GPT3_SHIFT,
752 .module_offs = OMAP3430_PER_MOD,
753 .idlest_reg_id = 1,
754 .idlest_idle_bit = OMAP3430_ST_GPT3_SHIFT,
755 },
756 },
757 .slaves = omap3xxx_timer3_slaves,
758 .slaves_cnt = ARRAY_SIZE(omap3xxx_timer3_slaves),
759 .class = &omap3xxx_timer_hwmod_class,
760 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
761};
762
763/* timer4 */
764static struct omap_hwmod omap3xxx_timer4_hwmod;
765static struct omap_hwmod_irq_info omap3xxx_timer4_mpu_irqs[] = {
766 { .irq = 40, },
767};
768
769static struct omap_hwmod_addr_space omap3xxx_timer4_addrs[] = {
770 {
771 .pa_start = 0x49036000,
772 .pa_end = 0x49036000 + SZ_1K - 1,
773 .flags = ADDR_TYPE_RT
774 },
775};
776
777/* l4_per -> timer4 */
778static struct omap_hwmod_ocp_if omap3xxx_l4_per__timer4 = {
779 .master = &omap3xxx_l4_per_hwmod,
780 .slave = &omap3xxx_timer4_hwmod,
781 .clk = "gpt4_ick",
782 .addr = omap3xxx_timer4_addrs,
783 .addr_cnt = ARRAY_SIZE(omap3xxx_timer4_addrs),
784 .user = OCP_USER_MPU | OCP_USER_SDMA,
785};
786
787/* timer4 slave port */
788static struct omap_hwmod_ocp_if *omap3xxx_timer4_slaves[] = {
789 &omap3xxx_l4_per__timer4,
790};
791
792/* timer4 hwmod */
793static struct omap_hwmod omap3xxx_timer4_hwmod = {
794 .name = "timer4",
795 .mpu_irqs = omap3xxx_timer4_mpu_irqs,
796 .mpu_irqs_cnt = ARRAY_SIZE(omap3xxx_timer4_mpu_irqs),
797 .main_clk = "gpt4_fck",
798 .prcm = {
799 .omap2 = {
800 .prcm_reg_id = 1,
801 .module_bit = OMAP3430_EN_GPT4_SHIFT,
802 .module_offs = OMAP3430_PER_MOD,
803 .idlest_reg_id = 1,
804 .idlest_idle_bit = OMAP3430_ST_GPT4_SHIFT,
805 },
806 },
807 .slaves = omap3xxx_timer4_slaves,
808 .slaves_cnt = ARRAY_SIZE(omap3xxx_timer4_slaves),
809 .class = &omap3xxx_timer_hwmod_class,
810 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
811};
812
813/* timer5 */
814static struct omap_hwmod omap3xxx_timer5_hwmod;
815static struct omap_hwmod_irq_info omap3xxx_timer5_mpu_irqs[] = {
816 { .irq = 41, },
817};
818
819static struct omap_hwmod_addr_space omap3xxx_timer5_addrs[] = {
820 {
821 .pa_start = 0x49038000,
822 .pa_end = 0x49038000 + SZ_1K - 1,
823 .flags = ADDR_TYPE_RT
824 },
825};
826
827/* l4_per -> timer5 */
828static struct omap_hwmod_ocp_if omap3xxx_l4_per__timer5 = {
829 .master = &omap3xxx_l4_per_hwmod,
830 .slave = &omap3xxx_timer5_hwmod,
831 .clk = "gpt5_ick",
832 .addr = omap3xxx_timer5_addrs,
833 .addr_cnt = ARRAY_SIZE(omap3xxx_timer5_addrs),
834 .user = OCP_USER_MPU | OCP_USER_SDMA,
835};
836
837/* timer5 slave port */
838static struct omap_hwmod_ocp_if *omap3xxx_timer5_slaves[] = {
839 &omap3xxx_l4_per__timer5,
840};
841
842/* timer5 hwmod */
843static struct omap_hwmod omap3xxx_timer5_hwmod = {
844 .name = "timer5",
845 .mpu_irqs = omap3xxx_timer5_mpu_irqs,
846 .mpu_irqs_cnt = ARRAY_SIZE(omap3xxx_timer5_mpu_irqs),
847 .main_clk = "gpt5_fck",
848 .prcm = {
849 .omap2 = {
850 .prcm_reg_id = 1,
851 .module_bit = OMAP3430_EN_GPT5_SHIFT,
852 .module_offs = OMAP3430_PER_MOD,
853 .idlest_reg_id = 1,
854 .idlest_idle_bit = OMAP3430_ST_GPT5_SHIFT,
855 },
856 },
857 .slaves = omap3xxx_timer5_slaves,
858 .slaves_cnt = ARRAY_SIZE(omap3xxx_timer5_slaves),
859 .class = &omap3xxx_timer_hwmod_class,
860 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
861};
862
863/* timer6 */
864static struct omap_hwmod omap3xxx_timer6_hwmod;
865static struct omap_hwmod_irq_info omap3xxx_timer6_mpu_irqs[] = {
866 { .irq = 42, },
867};
868
869static struct omap_hwmod_addr_space omap3xxx_timer6_addrs[] = {
870 {
871 .pa_start = 0x4903A000,
872 .pa_end = 0x4903A000 + SZ_1K - 1,
873 .flags = ADDR_TYPE_RT
874 },
875};
876
877/* l4_per -> timer6 */
878static struct omap_hwmod_ocp_if omap3xxx_l4_per__timer6 = {
879 .master = &omap3xxx_l4_per_hwmod,
880 .slave = &omap3xxx_timer6_hwmod,
881 .clk = "gpt6_ick",
882 .addr = omap3xxx_timer6_addrs,
883 .addr_cnt = ARRAY_SIZE(omap3xxx_timer6_addrs),
884 .user = OCP_USER_MPU | OCP_USER_SDMA,
885};
886
887/* timer6 slave port */
888static struct omap_hwmod_ocp_if *omap3xxx_timer6_slaves[] = {
889 &omap3xxx_l4_per__timer6,
890};
891
892/* timer6 hwmod */
893static struct omap_hwmod omap3xxx_timer6_hwmod = {
894 .name = "timer6",
895 .mpu_irqs = omap3xxx_timer6_mpu_irqs,
896 .mpu_irqs_cnt = ARRAY_SIZE(omap3xxx_timer6_mpu_irqs),
897 .main_clk = "gpt6_fck",
898 .prcm = {
899 .omap2 = {
900 .prcm_reg_id = 1,
901 .module_bit = OMAP3430_EN_GPT6_SHIFT,
902 .module_offs = OMAP3430_PER_MOD,
903 .idlest_reg_id = 1,
904 .idlest_idle_bit = OMAP3430_ST_GPT6_SHIFT,
905 },
906 },
907 .slaves = omap3xxx_timer6_slaves,
908 .slaves_cnt = ARRAY_SIZE(omap3xxx_timer6_slaves),
909 .class = &omap3xxx_timer_hwmod_class,
910 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
911};
912
913/* timer7 */
914static struct omap_hwmod omap3xxx_timer7_hwmod;
915static struct omap_hwmod_irq_info omap3xxx_timer7_mpu_irqs[] = {
916 { .irq = 43, },
917};
918
919static struct omap_hwmod_addr_space omap3xxx_timer7_addrs[] = {
920 {
921 .pa_start = 0x4903C000,
922 .pa_end = 0x4903C000 + SZ_1K - 1,
923 .flags = ADDR_TYPE_RT
924 },
925};
926
927/* l4_per -> timer7 */
928static struct omap_hwmod_ocp_if omap3xxx_l4_per__timer7 = {
929 .master = &omap3xxx_l4_per_hwmod,
930 .slave = &omap3xxx_timer7_hwmod,
931 .clk = "gpt7_ick",
932 .addr = omap3xxx_timer7_addrs,
933 .addr_cnt = ARRAY_SIZE(omap3xxx_timer7_addrs),
934 .user = OCP_USER_MPU | OCP_USER_SDMA,
935};
936
937/* timer7 slave port */
938static struct omap_hwmod_ocp_if *omap3xxx_timer7_slaves[] = {
939 &omap3xxx_l4_per__timer7,
940};
941
942/* timer7 hwmod */
943static struct omap_hwmod omap3xxx_timer7_hwmod = {
944 .name = "timer7",
945 .mpu_irqs = omap3xxx_timer7_mpu_irqs,
946 .mpu_irqs_cnt = ARRAY_SIZE(omap3xxx_timer7_mpu_irqs),
947 .main_clk = "gpt7_fck",
948 .prcm = {
949 .omap2 = {
950 .prcm_reg_id = 1,
951 .module_bit = OMAP3430_EN_GPT7_SHIFT,
952 .module_offs = OMAP3430_PER_MOD,
953 .idlest_reg_id = 1,
954 .idlest_idle_bit = OMAP3430_ST_GPT7_SHIFT,
955 },
956 },
957 .slaves = omap3xxx_timer7_slaves,
958 .slaves_cnt = ARRAY_SIZE(omap3xxx_timer7_slaves),
959 .class = &omap3xxx_timer_hwmod_class,
960 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
961};
962
963/* timer8 */
964static struct omap_hwmod omap3xxx_timer8_hwmod;
965static struct omap_hwmod_irq_info omap3xxx_timer8_mpu_irqs[] = {
966 { .irq = 44, },
967};
968
969static struct omap_hwmod_addr_space omap3xxx_timer8_addrs[] = {
970 {
971 .pa_start = 0x4903E000,
972 .pa_end = 0x4903E000 + SZ_1K - 1,
973 .flags = ADDR_TYPE_RT
974 },
975};
976
977/* l4_per -> timer8 */
978static struct omap_hwmod_ocp_if omap3xxx_l4_per__timer8 = {
979 .master = &omap3xxx_l4_per_hwmod,
980 .slave = &omap3xxx_timer8_hwmod,
981 .clk = "gpt8_ick",
982 .addr = omap3xxx_timer8_addrs,
983 .addr_cnt = ARRAY_SIZE(omap3xxx_timer8_addrs),
984 .user = OCP_USER_MPU | OCP_USER_SDMA,
985};
986
987/* timer8 slave port */
988static struct omap_hwmod_ocp_if *omap3xxx_timer8_slaves[] = {
989 &omap3xxx_l4_per__timer8,
990};
991
992/* timer8 hwmod */
993static struct omap_hwmod omap3xxx_timer8_hwmod = {
994 .name = "timer8",
995 .mpu_irqs = omap3xxx_timer8_mpu_irqs,
996 .mpu_irqs_cnt = ARRAY_SIZE(omap3xxx_timer8_mpu_irqs),
997 .main_clk = "gpt8_fck",
998 .prcm = {
999 .omap2 = {
1000 .prcm_reg_id = 1,
1001 .module_bit = OMAP3430_EN_GPT8_SHIFT,
1002 .module_offs = OMAP3430_PER_MOD,
1003 .idlest_reg_id = 1,
1004 .idlest_idle_bit = OMAP3430_ST_GPT8_SHIFT,
1005 },
1006 },
1007 .slaves = omap3xxx_timer8_slaves,
1008 .slaves_cnt = ARRAY_SIZE(omap3xxx_timer8_slaves),
1009 .class = &omap3xxx_timer_hwmod_class,
1010 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
1011};
1012
1013/* timer9 */
1014static struct omap_hwmod omap3xxx_timer9_hwmod;
1015static struct omap_hwmod_irq_info omap3xxx_timer9_mpu_irqs[] = {
1016 { .irq = 45, },
1017};
1018
1019static struct omap_hwmod_addr_space omap3xxx_timer9_addrs[] = {
1020 {
1021 .pa_start = 0x49040000,
1022 .pa_end = 0x49040000 + SZ_1K - 1,
1023 .flags = ADDR_TYPE_RT
1024 },
1025};
1026
1027/* l4_per -> timer9 */
1028static struct omap_hwmod_ocp_if omap3xxx_l4_per__timer9 = {
1029 .master = &omap3xxx_l4_per_hwmod,
1030 .slave = &omap3xxx_timer9_hwmod,
1031 .clk = "gpt9_ick",
1032 .addr = omap3xxx_timer9_addrs,
1033 .addr_cnt = ARRAY_SIZE(omap3xxx_timer9_addrs),
1034 .user = OCP_USER_MPU | OCP_USER_SDMA,
1035};
1036
1037/* timer9 slave port */
1038static struct omap_hwmod_ocp_if *omap3xxx_timer9_slaves[] = {
1039 &omap3xxx_l4_per__timer9,
1040};
1041
1042/* timer9 hwmod */
1043static struct omap_hwmod omap3xxx_timer9_hwmod = {
1044 .name = "timer9",
1045 .mpu_irqs = omap3xxx_timer9_mpu_irqs,
1046 .mpu_irqs_cnt = ARRAY_SIZE(omap3xxx_timer9_mpu_irqs),
1047 .main_clk = "gpt9_fck",
1048 .prcm = {
1049 .omap2 = {
1050 .prcm_reg_id = 1,
1051 .module_bit = OMAP3430_EN_GPT9_SHIFT,
1052 .module_offs = OMAP3430_PER_MOD,
1053 .idlest_reg_id = 1,
1054 .idlest_idle_bit = OMAP3430_ST_GPT9_SHIFT,
1055 },
1056 },
1057 .slaves = omap3xxx_timer9_slaves,
1058 .slaves_cnt = ARRAY_SIZE(omap3xxx_timer9_slaves),
1059 .class = &omap3xxx_timer_hwmod_class,
1060 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
1061};
1062
1063/* timer10 */
1064static struct omap_hwmod omap3xxx_timer10_hwmod;
1065static struct omap_hwmod_irq_info omap3xxx_timer10_mpu_irqs[] = {
1066 { .irq = 46, },
1067};
1068
1069static struct omap_hwmod_addr_space omap3xxx_timer10_addrs[] = {
1070 {
1071 .pa_start = 0x48086000,
1072 .pa_end = 0x48086000 + SZ_1K - 1,
1073 .flags = ADDR_TYPE_RT
1074 },
1075};
1076
1077/* l4_core -> timer10 */
1078static struct omap_hwmod_ocp_if omap3xxx_l4_core__timer10 = {
1079 .master = &omap3xxx_l4_core_hwmod,
1080 .slave = &omap3xxx_timer10_hwmod,
1081 .clk = "gpt10_ick",
1082 .addr = omap3xxx_timer10_addrs,
1083 .addr_cnt = ARRAY_SIZE(omap3xxx_timer10_addrs),
1084 .user = OCP_USER_MPU | OCP_USER_SDMA,
1085};
1086
1087/* timer10 slave port */
1088static struct omap_hwmod_ocp_if *omap3xxx_timer10_slaves[] = {
1089 &omap3xxx_l4_core__timer10,
1090};
1091
1092/* timer10 hwmod */
1093static struct omap_hwmod omap3xxx_timer10_hwmod = {
1094 .name = "timer10",
1095 .mpu_irqs = omap3xxx_timer10_mpu_irqs,
1096 .mpu_irqs_cnt = ARRAY_SIZE(omap3xxx_timer10_mpu_irqs),
1097 .main_clk = "gpt10_fck",
1098 .prcm = {
1099 .omap2 = {
1100 .prcm_reg_id = 1,
1101 .module_bit = OMAP3430_EN_GPT10_SHIFT,
1102 .module_offs = CORE_MOD,
1103 .idlest_reg_id = 1,
1104 .idlest_idle_bit = OMAP3430_ST_GPT10_SHIFT,
1105 },
1106 },
1107 .slaves = omap3xxx_timer10_slaves,
1108 .slaves_cnt = ARRAY_SIZE(omap3xxx_timer10_slaves),
1109 .class = &omap3xxx_timer_1ms_hwmod_class,
1110 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
1111};
1112
1113/* timer11 */
1114static struct omap_hwmod omap3xxx_timer11_hwmod;
1115static struct omap_hwmod_irq_info omap3xxx_timer11_mpu_irqs[] = {
1116 { .irq = 47, },
1117};
1118
1119static struct omap_hwmod_addr_space omap3xxx_timer11_addrs[] = {
1120 {
1121 .pa_start = 0x48088000,
1122 .pa_end = 0x48088000 + SZ_1K - 1,
1123 .flags = ADDR_TYPE_RT
1124 },
1125};
1126
1127/* l4_core -> timer11 */
1128static struct omap_hwmod_ocp_if omap3xxx_l4_core__timer11 = {
1129 .master = &omap3xxx_l4_core_hwmod,
1130 .slave = &omap3xxx_timer11_hwmod,
1131 .clk = "gpt11_ick",
1132 .addr = omap3xxx_timer11_addrs,
1133 .addr_cnt = ARRAY_SIZE(omap3xxx_timer11_addrs),
1134 .user = OCP_USER_MPU | OCP_USER_SDMA,
1135};
1136
1137/* timer11 slave port */
1138static struct omap_hwmod_ocp_if *omap3xxx_timer11_slaves[] = {
1139 &omap3xxx_l4_core__timer11,
1140};
1141
1142/* timer11 hwmod */
1143static struct omap_hwmod omap3xxx_timer11_hwmod = {
1144 .name = "timer11",
1145 .mpu_irqs = omap3xxx_timer11_mpu_irqs,
1146 .mpu_irqs_cnt = ARRAY_SIZE(omap3xxx_timer11_mpu_irqs),
1147 .main_clk = "gpt11_fck",
1148 .prcm = {
1149 .omap2 = {
1150 .prcm_reg_id = 1,
1151 .module_bit = OMAP3430_EN_GPT11_SHIFT,
1152 .module_offs = CORE_MOD,
1153 .idlest_reg_id = 1,
1154 .idlest_idle_bit = OMAP3430_ST_GPT11_SHIFT,
1155 },
1156 },
1157 .slaves = omap3xxx_timer11_slaves,
1158 .slaves_cnt = ARRAY_SIZE(omap3xxx_timer11_slaves),
1159 .class = &omap3xxx_timer_hwmod_class,
1160 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
1161};
1162
1163/* timer12*/
1164static struct omap_hwmod omap3xxx_timer12_hwmod;
1165static struct omap_hwmod_irq_info omap3xxx_timer12_mpu_irqs[] = {
1166 { .irq = 95, },
1167};
1168
1169static struct omap_hwmod_addr_space omap3xxx_timer12_addrs[] = {
1170 {
1171 .pa_start = 0x48304000,
1172 .pa_end = 0x48304000 + SZ_1K - 1,
1173 .flags = ADDR_TYPE_RT
1174 },
1175};
1176
1177/* l4_core -> timer12 */
1178static struct omap_hwmod_ocp_if omap3xxx_l4_core__timer12 = {
1179 .master = &omap3xxx_l4_core_hwmod,
1180 .slave = &omap3xxx_timer12_hwmod,
1181 .clk = "gpt12_ick",
1182 .addr = omap3xxx_timer12_addrs,
1183 .addr_cnt = ARRAY_SIZE(omap3xxx_timer12_addrs),
1184 .user = OCP_USER_MPU | OCP_USER_SDMA,
1185};
1186
1187/* timer12 slave port */
1188static struct omap_hwmod_ocp_if *omap3xxx_timer12_slaves[] = {
1189 &omap3xxx_l4_core__timer12,
1190};
1191
1192/* timer12 hwmod */
1193static struct omap_hwmod omap3xxx_timer12_hwmod = {
1194 .name = "timer12",
1195 .mpu_irqs = omap3xxx_timer12_mpu_irqs,
1196 .mpu_irqs_cnt = ARRAY_SIZE(omap3xxx_timer12_mpu_irqs),
1197 .main_clk = "gpt12_fck",
1198 .prcm = {
1199 .omap2 = {
1200 .prcm_reg_id = 1,
1201 .module_bit = OMAP3430_EN_GPT12_SHIFT,
1202 .module_offs = WKUP_MOD,
1203 .idlest_reg_id = 1,
1204 .idlest_idle_bit = OMAP3430_ST_GPT12_SHIFT,
1205 },
1206 },
1207 .slaves = omap3xxx_timer12_slaves,
1208 .slaves_cnt = ARRAY_SIZE(omap3xxx_timer12_slaves),
1209 .class = &omap3xxx_timer_hwmod_class,
1210 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
1211};
1212
Varadarajan, Charulatha6b667f82010-09-23 20:02:38 +05301213/* l4_wkup -> wd_timer2 */
1214static struct omap_hwmod_addr_space omap3xxx_wd_timer2_addrs[] = {
1215 {
1216 .pa_start = 0x48314000,
1217 .pa_end = 0x4831407f,
1218 .flags = ADDR_TYPE_RT
1219 },
1220};
1221
1222static struct omap_hwmod_ocp_if omap3xxx_l4_wkup__wd_timer2 = {
1223 .master = &omap3xxx_l4_wkup_hwmod,
1224 .slave = &omap3xxx_wd_timer2_hwmod,
1225 .clk = "wdt2_ick",
1226 .addr = omap3xxx_wd_timer2_addrs,
1227 .addr_cnt = ARRAY_SIZE(omap3xxx_wd_timer2_addrs),
1228 .user = OCP_USER_MPU | OCP_USER_SDMA,
1229};
1230
1231/*
1232 * 'wd_timer' class
1233 * 32-bit watchdog upward counter that generates a pulse on the reset pin on
1234 * overflow condition
1235 */
1236
1237static struct omap_hwmod_class_sysconfig omap3xxx_wd_timer_sysc = {
1238 .rev_offs = 0x0000,
1239 .sysc_offs = 0x0010,
1240 .syss_offs = 0x0014,
1241 .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_EMUFREE |
1242 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
1243 SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY),
1244 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
1245 .sysc_fields = &omap_hwmod_sysc_type1,
1246};
1247
Rajendra Nayak4fe20e92010-09-21 19:37:13 +05301248/* I2C common */
1249static struct omap_hwmod_class_sysconfig i2c_sysc = {
1250 .rev_offs = 0x00,
1251 .sysc_offs = 0x20,
1252 .syss_offs = 0x10,
1253 .sysc_flags = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
1254 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
1255 SYSC_HAS_AUTOIDLE),
1256 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
1257 .sysc_fields = &omap_hwmod_sysc_type1,
1258};
1259
Varadarajan, Charulatha6b667f82010-09-23 20:02:38 +05301260static struct omap_hwmod_class omap3xxx_wd_timer_hwmod_class = {
Paul Walmsleyff2516f2010-12-21 15:39:15 -07001261 .name = "wd_timer",
1262 .sysc = &omap3xxx_wd_timer_sysc,
1263 .pre_shutdown = &omap2_wd_timer_disable
Varadarajan, Charulatha6b667f82010-09-23 20:02:38 +05301264};
1265
1266/* wd_timer2 */
1267static struct omap_hwmod_ocp_if *omap3xxx_wd_timer2_slaves[] = {
1268 &omap3xxx_l4_wkup__wd_timer2,
1269};
1270
1271static struct omap_hwmod omap3xxx_wd_timer2_hwmod = {
1272 .name = "wd_timer2",
1273 .class = &omap3xxx_wd_timer_hwmod_class,
1274 .main_clk = "wdt2_fck",
1275 .prcm = {
1276 .omap2 = {
1277 .prcm_reg_id = 1,
1278 .module_bit = OMAP3430_EN_WDT2_SHIFT,
1279 .module_offs = WKUP_MOD,
1280 .idlest_reg_id = 1,
1281 .idlest_idle_bit = OMAP3430_ST_WDT2_SHIFT,
1282 },
1283 },
1284 .slaves = omap3xxx_wd_timer2_slaves,
1285 .slaves_cnt = ARRAY_SIZE(omap3xxx_wd_timer2_slaves),
1286 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
1287};
1288
Kevin Hilman046465b2010-09-27 20:19:30 +05301289/* UART common */
1290
1291static struct omap_hwmod_class_sysconfig uart_sysc = {
1292 .rev_offs = 0x50,
1293 .sysc_offs = 0x54,
1294 .syss_offs = 0x58,
1295 .sysc_flags = (SYSC_HAS_SIDLEMODE |
1296 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
1297 SYSC_HAS_AUTOIDLE),
1298 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
1299 .sysc_fields = &omap_hwmod_sysc_type1,
1300};
1301
1302static struct omap_hwmod_class uart_class = {
1303 .name = "uart",
1304 .sysc = &uart_sysc,
1305};
1306
1307/* UART1 */
1308
1309static struct omap_hwmod_irq_info uart1_mpu_irqs[] = {
1310 { .irq = INT_24XX_UART1_IRQ, },
1311};
1312
1313static struct omap_hwmod_dma_info uart1_sdma_reqs[] = {
1314 { .name = "tx", .dma_req = OMAP24XX_DMA_UART1_TX, },
1315 { .name = "rx", .dma_req = OMAP24XX_DMA_UART1_RX, },
1316};
1317
1318static struct omap_hwmod_ocp_if *omap3xxx_uart1_slaves[] = {
1319 &omap3_l4_core__uart1,
1320};
1321
1322static struct omap_hwmod omap3xxx_uart1_hwmod = {
1323 .name = "uart1",
1324 .mpu_irqs = uart1_mpu_irqs,
1325 .mpu_irqs_cnt = ARRAY_SIZE(uart1_mpu_irqs),
1326 .sdma_reqs = uart1_sdma_reqs,
1327 .sdma_reqs_cnt = ARRAY_SIZE(uart1_sdma_reqs),
1328 .main_clk = "uart1_fck",
1329 .prcm = {
1330 .omap2 = {
1331 .module_offs = CORE_MOD,
1332 .prcm_reg_id = 1,
1333 .module_bit = OMAP3430_EN_UART1_SHIFT,
1334 .idlest_reg_id = 1,
1335 .idlest_idle_bit = OMAP3430_EN_UART1_SHIFT,
1336 },
1337 },
1338 .slaves = omap3xxx_uart1_slaves,
1339 .slaves_cnt = ARRAY_SIZE(omap3xxx_uart1_slaves),
1340 .class = &uart_class,
1341 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
1342};
1343
1344/* UART2 */
1345
1346static struct omap_hwmod_irq_info uart2_mpu_irqs[] = {
1347 { .irq = INT_24XX_UART2_IRQ, },
1348};
1349
1350static struct omap_hwmod_dma_info uart2_sdma_reqs[] = {
1351 { .name = "tx", .dma_req = OMAP24XX_DMA_UART2_TX, },
1352 { .name = "rx", .dma_req = OMAP24XX_DMA_UART2_RX, },
1353};
1354
1355static struct omap_hwmod_ocp_if *omap3xxx_uart2_slaves[] = {
1356 &omap3_l4_core__uart2,
1357};
1358
1359static struct omap_hwmod omap3xxx_uart2_hwmod = {
1360 .name = "uart2",
1361 .mpu_irqs = uart2_mpu_irqs,
1362 .mpu_irqs_cnt = ARRAY_SIZE(uart2_mpu_irqs),
1363 .sdma_reqs = uart2_sdma_reqs,
1364 .sdma_reqs_cnt = ARRAY_SIZE(uart2_sdma_reqs),
1365 .main_clk = "uart2_fck",
1366 .prcm = {
1367 .omap2 = {
1368 .module_offs = CORE_MOD,
1369 .prcm_reg_id = 1,
1370 .module_bit = OMAP3430_EN_UART2_SHIFT,
1371 .idlest_reg_id = 1,
1372 .idlest_idle_bit = OMAP3430_EN_UART2_SHIFT,
1373 },
1374 },
1375 .slaves = omap3xxx_uart2_slaves,
1376 .slaves_cnt = ARRAY_SIZE(omap3xxx_uart2_slaves),
1377 .class = &uart_class,
1378 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
1379};
1380
1381/* UART3 */
1382
1383static struct omap_hwmod_irq_info uart3_mpu_irqs[] = {
1384 { .irq = INT_24XX_UART3_IRQ, },
1385};
1386
1387static struct omap_hwmod_dma_info uart3_sdma_reqs[] = {
1388 { .name = "tx", .dma_req = OMAP24XX_DMA_UART3_TX, },
1389 { .name = "rx", .dma_req = OMAP24XX_DMA_UART3_RX, },
1390};
1391
1392static struct omap_hwmod_ocp_if *omap3xxx_uart3_slaves[] = {
1393 &omap3_l4_per__uart3,
1394};
1395
1396static struct omap_hwmod omap3xxx_uart3_hwmod = {
1397 .name = "uart3",
1398 .mpu_irqs = uart3_mpu_irqs,
1399 .mpu_irqs_cnt = ARRAY_SIZE(uart3_mpu_irqs),
1400 .sdma_reqs = uart3_sdma_reqs,
1401 .sdma_reqs_cnt = ARRAY_SIZE(uart3_sdma_reqs),
1402 .main_clk = "uart3_fck",
1403 .prcm = {
1404 .omap2 = {
1405 .module_offs = OMAP3430_PER_MOD,
1406 .prcm_reg_id = 1,
1407 .module_bit = OMAP3430_EN_UART3_SHIFT,
1408 .idlest_reg_id = 1,
1409 .idlest_idle_bit = OMAP3430_EN_UART3_SHIFT,
1410 },
1411 },
1412 .slaves = omap3xxx_uart3_slaves,
1413 .slaves_cnt = ARRAY_SIZE(omap3xxx_uart3_slaves),
1414 .class = &uart_class,
1415 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
1416};
1417
1418/* UART4 */
1419
1420static struct omap_hwmod_irq_info uart4_mpu_irqs[] = {
1421 { .irq = INT_36XX_UART4_IRQ, },
1422};
1423
1424static struct omap_hwmod_dma_info uart4_sdma_reqs[] = {
1425 { .name = "rx", .dma_req = OMAP36XX_DMA_UART4_RX, },
1426 { .name = "tx", .dma_req = OMAP36XX_DMA_UART4_TX, },
1427};
1428
1429static struct omap_hwmod_ocp_if *omap3xxx_uart4_slaves[] = {
1430 &omap3_l4_per__uart4,
1431};
1432
1433static struct omap_hwmod omap3xxx_uart4_hwmod = {
1434 .name = "uart4",
1435 .mpu_irqs = uart4_mpu_irqs,
1436 .mpu_irqs_cnt = ARRAY_SIZE(uart4_mpu_irqs),
1437 .sdma_reqs = uart4_sdma_reqs,
1438 .sdma_reqs_cnt = ARRAY_SIZE(uart4_sdma_reqs),
1439 .main_clk = "uart4_fck",
1440 .prcm = {
1441 .omap2 = {
1442 .module_offs = OMAP3430_PER_MOD,
1443 .prcm_reg_id = 1,
1444 .module_bit = OMAP3630_EN_UART4_SHIFT,
1445 .idlest_reg_id = 1,
1446 .idlest_idle_bit = OMAP3630_EN_UART4_SHIFT,
1447 },
1448 },
1449 .slaves = omap3xxx_uart4_slaves,
1450 .slaves_cnt = ARRAY_SIZE(omap3xxx_uart4_slaves),
1451 .class = &uart_class,
1452 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3630ES1),
1453};
1454
Rajendra Nayak4fe20e92010-09-21 19:37:13 +05301455static struct omap_hwmod_class i2c_class = {
1456 .name = "i2c",
1457 .sysc = &i2c_sysc,
1458};
1459
Senthilvadivu Guruswamye04d9e12011-01-24 06:21:51 +00001460/*
1461 * 'dss' class
1462 * display sub-system
1463 */
1464
1465static struct omap_hwmod_class_sysconfig omap3xxx_dss_sysc = {
1466 .rev_offs = 0x0000,
1467 .sysc_offs = 0x0010,
1468 .syss_offs = 0x0014,
1469 .sysc_flags = (SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE),
1470 .sysc_fields = &omap_hwmod_sysc_type1,
1471};
1472
1473static struct omap_hwmod_class omap3xxx_dss_hwmod_class = {
1474 .name = "dss",
1475 .sysc = &omap3xxx_dss_sysc,
1476};
1477
1478/* dss */
1479static struct omap_hwmod_irq_info omap3xxx_dss_irqs[] = {
1480 { .irq = 25 },
1481};
1482
1483static struct omap_hwmod_dma_info omap3xxx_dss_sdma_chs[] = {
1484 { .name = "dispc", .dma_req = 5 },
1485 { .name = "dsi1", .dma_req = 74 },
1486};
1487
1488/* dss */
1489/* dss master ports */
1490static struct omap_hwmod_ocp_if *omap3xxx_dss_masters[] = {
1491 &omap3xxx_dss__l3,
1492};
1493
1494static struct omap_hwmod_addr_space omap3xxx_dss_addrs[] = {
1495 {
1496 .pa_start = 0x48050000,
1497 .pa_end = 0x480503FF,
1498 .flags = ADDR_TYPE_RT
1499 },
1500};
1501
1502/* l4_core -> dss */
1503static struct omap_hwmod_ocp_if omap3430es1_l4_core__dss = {
1504 .master = &omap3xxx_l4_core_hwmod,
1505 .slave = &omap3430es1_dss_core_hwmod,
1506 .clk = "dss_ick",
1507 .addr = omap3xxx_dss_addrs,
1508 .addr_cnt = ARRAY_SIZE(omap3xxx_dss_addrs),
1509 .fw = {
1510 .omap2 = {
1511 .l4_fw_region = OMAP3ES1_L4_CORE_FW_DSS_CORE_REGION,
1512 .l4_prot_group = OMAP3_L4_CORE_FW_DSS_PROT_GROUP,
1513 .flags = OMAP_FIREWALL_L4,
1514 }
1515 },
1516 .user = OCP_USER_MPU | OCP_USER_SDMA,
1517};
1518
1519static struct omap_hwmod_ocp_if omap3xxx_l4_core__dss = {
1520 .master = &omap3xxx_l4_core_hwmod,
1521 .slave = &omap3xxx_dss_core_hwmod,
1522 .clk = "dss_ick",
1523 .addr = omap3xxx_dss_addrs,
1524 .addr_cnt = ARRAY_SIZE(omap3xxx_dss_addrs),
1525 .fw = {
1526 .omap2 = {
1527 .l4_fw_region = OMAP3_L4_CORE_FW_DSS_CORE_REGION,
1528 .l4_prot_group = OMAP3_L4_CORE_FW_DSS_PROT_GROUP,
1529 .flags = OMAP_FIREWALL_L4,
1530 }
1531 },
1532 .user = OCP_USER_MPU | OCP_USER_SDMA,
1533};
1534
1535/* dss slave ports */
1536static struct omap_hwmod_ocp_if *omap3430es1_dss_slaves[] = {
1537 &omap3430es1_l4_core__dss,
1538};
1539
1540static struct omap_hwmod_ocp_if *omap3xxx_dss_slaves[] = {
1541 &omap3xxx_l4_core__dss,
1542};
1543
1544static struct omap_hwmod_opt_clk dss_opt_clks[] = {
1545 { .role = "tv_clk", .clk = "dss_tv_fck" },
1546 { .role = "dssclk", .clk = "dss_96m_fck" },
1547 { .role = "sys_clk", .clk = "dss2_alwon_fck" },
1548};
1549
1550static struct omap_hwmod omap3430es1_dss_core_hwmod = {
1551 .name = "dss_core",
1552 .class = &omap3xxx_dss_hwmod_class,
1553 .main_clk = "dss1_alwon_fck", /* instead of dss_fck */
1554 .mpu_irqs = omap3xxx_dss_irqs,
1555 .mpu_irqs_cnt = ARRAY_SIZE(omap3xxx_dss_irqs),
1556 .sdma_reqs = omap3xxx_dss_sdma_chs,
1557 .sdma_reqs_cnt = ARRAY_SIZE(omap3xxx_dss_sdma_chs),
1558
1559 .prcm = {
1560 .omap2 = {
1561 .prcm_reg_id = 1,
1562 .module_bit = OMAP3430_EN_DSS1_SHIFT,
1563 .module_offs = OMAP3430_DSS_MOD,
1564 .idlest_reg_id = 1,
1565 .idlest_stdby_bit = OMAP3430ES1_ST_DSS_SHIFT,
1566 },
1567 },
1568 .opt_clks = dss_opt_clks,
1569 .opt_clks_cnt = ARRAY_SIZE(dss_opt_clks),
1570 .slaves = omap3430es1_dss_slaves,
1571 .slaves_cnt = ARRAY_SIZE(omap3430es1_dss_slaves),
1572 .masters = omap3xxx_dss_masters,
1573 .masters_cnt = ARRAY_SIZE(omap3xxx_dss_masters),
1574 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430ES1),
1575 .flags = HWMOD_NO_IDLEST,
1576};
1577
1578static struct omap_hwmod omap3xxx_dss_core_hwmod = {
1579 .name = "dss_core",
1580 .class = &omap3xxx_dss_hwmod_class,
1581 .main_clk = "dss1_alwon_fck", /* instead of dss_fck */
1582 .mpu_irqs = omap3xxx_dss_irqs,
1583 .mpu_irqs_cnt = ARRAY_SIZE(omap3xxx_dss_irqs),
1584 .sdma_reqs = omap3xxx_dss_sdma_chs,
1585 .sdma_reqs_cnt = ARRAY_SIZE(omap3xxx_dss_sdma_chs),
1586
1587 .prcm = {
1588 .omap2 = {
1589 .prcm_reg_id = 1,
1590 .module_bit = OMAP3430_EN_DSS1_SHIFT,
1591 .module_offs = OMAP3430_DSS_MOD,
1592 .idlest_reg_id = 1,
1593 .idlest_idle_bit = OMAP3430ES2_ST_DSS_IDLE_SHIFT,
1594 .idlest_stdby_bit = OMAP3430ES2_ST_DSS_STDBY_SHIFT,
1595 },
1596 },
1597 .opt_clks = dss_opt_clks,
1598 .opt_clks_cnt = ARRAY_SIZE(dss_opt_clks),
1599 .slaves = omap3xxx_dss_slaves,
1600 .slaves_cnt = ARRAY_SIZE(omap3xxx_dss_slaves),
1601 .masters = omap3xxx_dss_masters,
1602 .masters_cnt = ARRAY_SIZE(omap3xxx_dss_masters),
1603 .omap_chip = OMAP_CHIP_INIT(CHIP_GE_OMAP3430ES2 |
1604 CHIP_IS_OMAP3630ES1 | CHIP_GE_OMAP3630ES1_1),
1605};
1606
1607/*
1608 * 'dispc' class
1609 * display controller
1610 */
1611
1612static struct omap_hwmod_class_sysconfig omap3xxx_dispc_sysc = {
1613 .rev_offs = 0x0000,
1614 .sysc_offs = 0x0010,
1615 .syss_offs = 0x0014,
1616 .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_CLOCKACTIVITY |
1617 SYSC_HAS_MIDLEMODE | SYSC_HAS_ENAWAKEUP |
1618 SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE),
1619 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1620 MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
1621 .sysc_fields = &omap_hwmod_sysc_type1,
1622};
1623
1624static struct omap_hwmod_class omap3xxx_dispc_hwmod_class = {
1625 .name = "dispc",
1626 .sysc = &omap3xxx_dispc_sysc,
1627};
1628
1629static struct omap_hwmod_addr_space omap3xxx_dss_dispc_addrs[] = {
1630 {
1631 .pa_start = 0x48050400,
1632 .pa_end = 0x480507FF,
1633 .flags = ADDR_TYPE_RT
1634 },
1635};
1636
1637/* l4_core -> dss_dispc */
1638static struct omap_hwmod_ocp_if omap3xxx_l4_core__dss_dispc = {
1639 .master = &omap3xxx_l4_core_hwmod,
1640 .slave = &omap3xxx_dss_dispc_hwmod,
1641 .clk = "dss_ick",
1642 .addr = omap3xxx_dss_dispc_addrs,
1643 .addr_cnt = ARRAY_SIZE(omap3xxx_dss_dispc_addrs),
1644 .fw = {
1645 .omap2 = {
1646 .l4_fw_region = OMAP3_L4_CORE_FW_DSS_DISPC_REGION,
1647 .l4_prot_group = OMAP3_L4_CORE_FW_DSS_PROT_GROUP,
1648 .flags = OMAP_FIREWALL_L4,
1649 }
1650 },
1651 .user = OCP_USER_MPU | OCP_USER_SDMA,
1652};
1653
1654/* dss_dispc slave ports */
1655static struct omap_hwmod_ocp_if *omap3xxx_dss_dispc_slaves[] = {
1656 &omap3xxx_l4_core__dss_dispc,
1657};
1658
1659static struct omap_hwmod omap3xxx_dss_dispc_hwmod = {
1660 .name = "dss_dispc",
1661 .class = &omap3xxx_dispc_hwmod_class,
1662 .main_clk = "dss1_alwon_fck",
1663 .prcm = {
1664 .omap2 = {
1665 .prcm_reg_id = 1,
1666 .module_bit = OMAP3430_EN_DSS1_SHIFT,
1667 .module_offs = OMAP3430_DSS_MOD,
1668 },
1669 },
1670 .slaves = omap3xxx_dss_dispc_slaves,
1671 .slaves_cnt = ARRAY_SIZE(omap3xxx_dss_dispc_slaves),
1672 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430ES1 |
1673 CHIP_GE_OMAP3430ES2 | CHIP_IS_OMAP3630ES1 |
1674 CHIP_GE_OMAP3630ES1_1),
1675 .flags = HWMOD_NO_IDLEST,
1676};
1677
1678/*
1679 * 'dsi' class
1680 * display serial interface controller
1681 */
1682
1683static struct omap_hwmod_class omap3xxx_dsi_hwmod_class = {
1684 .name = "dsi",
1685};
1686
1687/* dss_dsi1 */
1688static struct omap_hwmod_addr_space omap3xxx_dss_dsi1_addrs[] = {
1689 {
1690 .pa_start = 0x4804FC00,
1691 .pa_end = 0x4804FFFF,
1692 .flags = ADDR_TYPE_RT
1693 },
1694};
1695
1696/* l4_core -> dss_dsi1 */
1697static struct omap_hwmod_ocp_if omap3xxx_l4_core__dss_dsi1 = {
1698 .master = &omap3xxx_l4_core_hwmod,
1699 .slave = &omap3xxx_dss_dsi1_hwmod,
1700 .addr = omap3xxx_dss_dsi1_addrs,
1701 .addr_cnt = ARRAY_SIZE(omap3xxx_dss_dsi1_addrs),
1702 .fw = {
1703 .omap2 = {
1704 .l4_fw_region = OMAP3_L4_CORE_FW_DSS_DSI_REGION,
1705 .l4_prot_group = OMAP3_L4_CORE_FW_DSS_PROT_GROUP,
1706 .flags = OMAP_FIREWALL_L4,
1707 }
1708 },
1709 .user = OCP_USER_MPU | OCP_USER_SDMA,
1710};
1711
1712/* dss_dsi1 slave ports */
1713static struct omap_hwmod_ocp_if *omap3xxx_dss_dsi1_slaves[] = {
1714 &omap3xxx_l4_core__dss_dsi1,
1715};
1716
1717static struct omap_hwmod omap3xxx_dss_dsi1_hwmod = {
1718 .name = "dss_dsi1",
1719 .class = &omap3xxx_dsi_hwmod_class,
1720 .main_clk = "dss1_alwon_fck",
1721 .prcm = {
1722 .omap2 = {
1723 .prcm_reg_id = 1,
1724 .module_bit = OMAP3430_EN_DSS1_SHIFT,
1725 .module_offs = OMAP3430_DSS_MOD,
1726 },
1727 },
1728 .slaves = omap3xxx_dss_dsi1_slaves,
1729 .slaves_cnt = ARRAY_SIZE(omap3xxx_dss_dsi1_slaves),
1730 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430ES1 |
1731 CHIP_GE_OMAP3430ES2 | CHIP_IS_OMAP3630ES1 |
1732 CHIP_GE_OMAP3630ES1_1),
1733 .flags = HWMOD_NO_IDLEST,
1734};
1735
1736/*
1737 * 'rfbi' class
1738 * remote frame buffer interface
1739 */
1740
1741static struct omap_hwmod_class_sysconfig omap3xxx_rfbi_sysc = {
1742 .rev_offs = 0x0000,
1743 .sysc_offs = 0x0010,
1744 .syss_offs = 0x0014,
1745 .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
1746 SYSC_HAS_AUTOIDLE),
1747 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
1748 .sysc_fields = &omap_hwmod_sysc_type1,
1749};
1750
1751static struct omap_hwmod_class omap3xxx_rfbi_hwmod_class = {
1752 .name = "rfbi",
1753 .sysc = &omap3xxx_rfbi_sysc,
1754};
1755
1756static struct omap_hwmod_addr_space omap3xxx_dss_rfbi_addrs[] = {
1757 {
1758 .pa_start = 0x48050800,
1759 .pa_end = 0x48050BFF,
1760 .flags = ADDR_TYPE_RT
1761 },
1762};
1763
1764/* l4_core -> dss_rfbi */
1765static struct omap_hwmod_ocp_if omap3xxx_l4_core__dss_rfbi = {
1766 .master = &omap3xxx_l4_core_hwmod,
1767 .slave = &omap3xxx_dss_rfbi_hwmod,
1768 .clk = "dss_ick",
1769 .addr = omap3xxx_dss_rfbi_addrs,
1770 .addr_cnt = ARRAY_SIZE(omap3xxx_dss_rfbi_addrs),
1771 .fw = {
1772 .omap2 = {
1773 .l4_fw_region = OMAP3_L4_CORE_FW_DSS_RFBI_REGION,
1774 .l4_prot_group = OMAP3_L4_CORE_FW_DSS_PROT_GROUP ,
1775 .flags = OMAP_FIREWALL_L4,
1776 }
1777 },
1778 .user = OCP_USER_MPU | OCP_USER_SDMA,
1779};
1780
1781/* dss_rfbi slave ports */
1782static struct omap_hwmod_ocp_if *omap3xxx_dss_rfbi_slaves[] = {
1783 &omap3xxx_l4_core__dss_rfbi,
1784};
1785
1786static struct omap_hwmod omap3xxx_dss_rfbi_hwmod = {
1787 .name = "dss_rfbi",
1788 .class = &omap3xxx_rfbi_hwmod_class,
1789 .main_clk = "dss1_alwon_fck",
1790 .prcm = {
1791 .omap2 = {
1792 .prcm_reg_id = 1,
1793 .module_bit = OMAP3430_EN_DSS1_SHIFT,
1794 .module_offs = OMAP3430_DSS_MOD,
1795 },
1796 },
1797 .slaves = omap3xxx_dss_rfbi_slaves,
1798 .slaves_cnt = ARRAY_SIZE(omap3xxx_dss_rfbi_slaves),
1799 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430ES1 |
1800 CHIP_GE_OMAP3430ES2 | CHIP_IS_OMAP3630ES1 |
1801 CHIP_GE_OMAP3630ES1_1),
1802 .flags = HWMOD_NO_IDLEST,
1803};
1804
1805/*
1806 * 'venc' class
1807 * video encoder
1808 */
1809
1810static struct omap_hwmod_class omap3xxx_venc_hwmod_class = {
1811 .name = "venc",
1812};
1813
1814/* dss_venc */
1815static struct omap_hwmod_addr_space omap3xxx_dss_venc_addrs[] = {
1816 {
1817 .pa_start = 0x48050C00,
1818 .pa_end = 0x48050FFF,
1819 .flags = ADDR_TYPE_RT
1820 },
1821};
1822
1823/* l4_core -> dss_venc */
1824static struct omap_hwmod_ocp_if omap3xxx_l4_core__dss_venc = {
1825 .master = &omap3xxx_l4_core_hwmod,
1826 .slave = &omap3xxx_dss_venc_hwmod,
1827 .clk = "dss_tv_fck",
1828 .addr = omap3xxx_dss_venc_addrs,
1829 .addr_cnt = ARRAY_SIZE(omap3xxx_dss_venc_addrs),
1830 .fw = {
1831 .omap2 = {
1832 .l4_fw_region = OMAP3_L4_CORE_FW_DSS_VENC_REGION,
1833 .l4_prot_group = OMAP3_L4_CORE_FW_DSS_PROT_GROUP,
1834 .flags = OMAP_FIREWALL_L4,
1835 }
1836 },
1837 .user = OCP_USER_MPU | OCP_USER_SDMA,
1838};
1839
1840/* dss_venc slave ports */
1841static struct omap_hwmod_ocp_if *omap3xxx_dss_venc_slaves[] = {
1842 &omap3xxx_l4_core__dss_venc,
1843};
1844
1845static struct omap_hwmod omap3xxx_dss_venc_hwmod = {
1846 .name = "dss_venc",
1847 .class = &omap3xxx_venc_hwmod_class,
1848 .main_clk = "dss1_alwon_fck",
1849 .prcm = {
1850 .omap2 = {
1851 .prcm_reg_id = 1,
1852 .module_bit = OMAP3430_EN_DSS1_SHIFT,
1853 .module_offs = OMAP3430_DSS_MOD,
1854 },
1855 },
1856 .slaves = omap3xxx_dss_venc_slaves,
1857 .slaves_cnt = ARRAY_SIZE(omap3xxx_dss_venc_slaves),
1858 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430ES1 |
1859 CHIP_GE_OMAP3430ES2 | CHIP_IS_OMAP3630ES1 |
1860 CHIP_GE_OMAP3630ES1_1),
1861 .flags = HWMOD_NO_IDLEST,
1862};
1863
Rajendra Nayak4fe20e92010-09-21 19:37:13 +05301864/* I2C1 */
1865
1866static struct omap_i2c_dev_attr i2c1_dev_attr = {
1867 .fifo_depth = 8, /* bytes */
1868};
1869
1870static struct omap_hwmod_irq_info i2c1_mpu_irqs[] = {
1871 { .irq = INT_24XX_I2C1_IRQ, },
1872};
1873
1874static struct omap_hwmod_dma_info i2c1_sdma_reqs[] = {
1875 { .name = "tx", .dma_req = OMAP24XX_DMA_I2C1_TX },
1876 { .name = "rx", .dma_req = OMAP24XX_DMA_I2C1_RX },
1877};
1878
1879static struct omap_hwmod_ocp_if *omap3xxx_i2c1_slaves[] = {
1880 &omap3_l4_core__i2c1,
1881};
1882
1883static struct omap_hwmod omap3xxx_i2c1_hwmod = {
1884 .name = "i2c1",
1885 .mpu_irqs = i2c1_mpu_irqs,
1886 .mpu_irqs_cnt = ARRAY_SIZE(i2c1_mpu_irqs),
1887 .sdma_reqs = i2c1_sdma_reqs,
1888 .sdma_reqs_cnt = ARRAY_SIZE(i2c1_sdma_reqs),
1889 .main_clk = "i2c1_fck",
1890 .prcm = {
1891 .omap2 = {
1892 .module_offs = CORE_MOD,
1893 .prcm_reg_id = 1,
1894 .module_bit = OMAP3430_EN_I2C1_SHIFT,
1895 .idlest_reg_id = 1,
1896 .idlest_idle_bit = OMAP3430_ST_I2C1_SHIFT,
1897 },
1898 },
1899 .slaves = omap3xxx_i2c1_slaves,
1900 .slaves_cnt = ARRAY_SIZE(omap3xxx_i2c1_slaves),
1901 .class = &i2c_class,
1902 .dev_attr = &i2c1_dev_attr,
1903 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
1904};
1905
1906/* I2C2 */
1907
1908static struct omap_i2c_dev_attr i2c2_dev_attr = {
1909 .fifo_depth = 8, /* bytes */
1910};
1911
1912static struct omap_hwmod_irq_info i2c2_mpu_irqs[] = {
1913 { .irq = INT_24XX_I2C2_IRQ, },
1914};
1915
1916static struct omap_hwmod_dma_info i2c2_sdma_reqs[] = {
1917 { .name = "tx", .dma_req = OMAP24XX_DMA_I2C2_TX },
1918 { .name = "rx", .dma_req = OMAP24XX_DMA_I2C2_RX },
1919};
1920
1921static struct omap_hwmod_ocp_if *omap3xxx_i2c2_slaves[] = {
1922 &omap3_l4_core__i2c2,
1923};
1924
1925static struct omap_hwmod omap3xxx_i2c2_hwmod = {
1926 .name = "i2c2",
1927 .mpu_irqs = i2c2_mpu_irqs,
1928 .mpu_irqs_cnt = ARRAY_SIZE(i2c2_mpu_irqs),
1929 .sdma_reqs = i2c2_sdma_reqs,
1930 .sdma_reqs_cnt = ARRAY_SIZE(i2c2_sdma_reqs),
1931 .main_clk = "i2c2_fck",
1932 .prcm = {
1933 .omap2 = {
1934 .module_offs = CORE_MOD,
1935 .prcm_reg_id = 1,
1936 .module_bit = OMAP3430_EN_I2C2_SHIFT,
1937 .idlest_reg_id = 1,
1938 .idlest_idle_bit = OMAP3430_ST_I2C2_SHIFT,
1939 },
1940 },
1941 .slaves = omap3xxx_i2c2_slaves,
1942 .slaves_cnt = ARRAY_SIZE(omap3xxx_i2c2_slaves),
1943 .class = &i2c_class,
1944 .dev_attr = &i2c2_dev_attr,
1945 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
1946};
1947
1948/* I2C3 */
1949
1950static struct omap_i2c_dev_attr i2c3_dev_attr = {
1951 .fifo_depth = 64, /* bytes */
1952};
1953
1954static struct omap_hwmod_irq_info i2c3_mpu_irqs[] = {
1955 { .irq = INT_34XX_I2C3_IRQ, },
1956};
1957
1958static struct omap_hwmod_dma_info i2c3_sdma_reqs[] = {
1959 { .name = "tx", .dma_req = OMAP34XX_DMA_I2C3_TX },
1960 { .name = "rx", .dma_req = OMAP34XX_DMA_I2C3_RX },
1961};
1962
1963static struct omap_hwmod_ocp_if *omap3xxx_i2c3_slaves[] = {
1964 &omap3_l4_core__i2c3,
1965};
1966
1967static struct omap_hwmod omap3xxx_i2c3_hwmod = {
1968 .name = "i2c3",
1969 .mpu_irqs = i2c3_mpu_irqs,
1970 .mpu_irqs_cnt = ARRAY_SIZE(i2c3_mpu_irqs),
1971 .sdma_reqs = i2c3_sdma_reqs,
1972 .sdma_reqs_cnt = ARRAY_SIZE(i2c3_sdma_reqs),
1973 .main_clk = "i2c3_fck",
1974 .prcm = {
1975 .omap2 = {
1976 .module_offs = CORE_MOD,
1977 .prcm_reg_id = 1,
1978 .module_bit = OMAP3430_EN_I2C3_SHIFT,
1979 .idlest_reg_id = 1,
1980 .idlest_idle_bit = OMAP3430_ST_I2C3_SHIFT,
1981 },
1982 },
1983 .slaves = omap3xxx_i2c3_slaves,
1984 .slaves_cnt = ARRAY_SIZE(omap3xxx_i2c3_slaves),
1985 .class = &i2c_class,
1986 .dev_attr = &i2c3_dev_attr,
1987 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
1988};
1989
Varadarajan, Charulatha70034d32010-12-07 16:26:57 -08001990/* l4_wkup -> gpio1 */
1991static struct omap_hwmod_addr_space omap3xxx_gpio1_addrs[] = {
1992 {
1993 .pa_start = 0x48310000,
1994 .pa_end = 0x483101ff,
1995 .flags = ADDR_TYPE_RT
1996 },
1997};
1998
1999static struct omap_hwmod_ocp_if omap3xxx_l4_wkup__gpio1 = {
2000 .master = &omap3xxx_l4_wkup_hwmod,
2001 .slave = &omap3xxx_gpio1_hwmod,
2002 .addr = omap3xxx_gpio1_addrs,
2003 .addr_cnt = ARRAY_SIZE(omap3xxx_gpio1_addrs),
2004 .user = OCP_USER_MPU | OCP_USER_SDMA,
2005};
2006
2007/* l4_per -> gpio2 */
2008static struct omap_hwmod_addr_space omap3xxx_gpio2_addrs[] = {
2009 {
2010 .pa_start = 0x49050000,
2011 .pa_end = 0x490501ff,
2012 .flags = ADDR_TYPE_RT
2013 },
2014};
2015
2016static struct omap_hwmod_ocp_if omap3xxx_l4_per__gpio2 = {
2017 .master = &omap3xxx_l4_per_hwmod,
2018 .slave = &omap3xxx_gpio2_hwmod,
2019 .addr = omap3xxx_gpio2_addrs,
2020 .addr_cnt = ARRAY_SIZE(omap3xxx_gpio2_addrs),
2021 .user = OCP_USER_MPU | OCP_USER_SDMA,
2022};
2023
2024/* l4_per -> gpio3 */
2025static struct omap_hwmod_addr_space omap3xxx_gpio3_addrs[] = {
2026 {
2027 .pa_start = 0x49052000,
2028 .pa_end = 0x490521ff,
2029 .flags = ADDR_TYPE_RT
2030 },
2031};
2032
2033static struct omap_hwmod_ocp_if omap3xxx_l4_per__gpio3 = {
2034 .master = &omap3xxx_l4_per_hwmod,
2035 .slave = &omap3xxx_gpio3_hwmod,
2036 .addr = omap3xxx_gpio3_addrs,
2037 .addr_cnt = ARRAY_SIZE(omap3xxx_gpio3_addrs),
2038 .user = OCP_USER_MPU | OCP_USER_SDMA,
2039};
2040
2041/* l4_per -> gpio4 */
2042static struct omap_hwmod_addr_space omap3xxx_gpio4_addrs[] = {
2043 {
2044 .pa_start = 0x49054000,
2045 .pa_end = 0x490541ff,
2046 .flags = ADDR_TYPE_RT
2047 },
2048};
2049
2050static struct omap_hwmod_ocp_if omap3xxx_l4_per__gpio4 = {
2051 .master = &omap3xxx_l4_per_hwmod,
2052 .slave = &omap3xxx_gpio4_hwmod,
2053 .addr = omap3xxx_gpio4_addrs,
2054 .addr_cnt = ARRAY_SIZE(omap3xxx_gpio4_addrs),
2055 .user = OCP_USER_MPU | OCP_USER_SDMA,
2056};
2057
2058/* l4_per -> gpio5 */
2059static struct omap_hwmod_addr_space omap3xxx_gpio5_addrs[] = {
2060 {
2061 .pa_start = 0x49056000,
2062 .pa_end = 0x490561ff,
2063 .flags = ADDR_TYPE_RT
2064 },
2065};
2066
2067static struct omap_hwmod_ocp_if omap3xxx_l4_per__gpio5 = {
2068 .master = &omap3xxx_l4_per_hwmod,
2069 .slave = &omap3xxx_gpio5_hwmod,
2070 .addr = omap3xxx_gpio5_addrs,
2071 .addr_cnt = ARRAY_SIZE(omap3xxx_gpio5_addrs),
2072 .user = OCP_USER_MPU | OCP_USER_SDMA,
2073};
2074
2075/* l4_per -> gpio6 */
2076static struct omap_hwmod_addr_space omap3xxx_gpio6_addrs[] = {
2077 {
2078 .pa_start = 0x49058000,
2079 .pa_end = 0x490581ff,
2080 .flags = ADDR_TYPE_RT
2081 },
2082};
2083
2084static struct omap_hwmod_ocp_if omap3xxx_l4_per__gpio6 = {
2085 .master = &omap3xxx_l4_per_hwmod,
2086 .slave = &omap3xxx_gpio6_hwmod,
2087 .addr = omap3xxx_gpio6_addrs,
2088 .addr_cnt = ARRAY_SIZE(omap3xxx_gpio6_addrs),
2089 .user = OCP_USER_MPU | OCP_USER_SDMA,
2090};
2091
2092/*
2093 * 'gpio' class
2094 * general purpose io module
2095 */
2096
2097static struct omap_hwmod_class_sysconfig omap3xxx_gpio_sysc = {
2098 .rev_offs = 0x0000,
2099 .sysc_offs = 0x0010,
2100 .syss_offs = 0x0014,
2101 .sysc_flags = (SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE |
2102 SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE),
2103 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
2104 .sysc_fields = &omap_hwmod_sysc_type1,
2105};
2106
2107static struct omap_hwmod_class omap3xxx_gpio_hwmod_class = {
2108 .name = "gpio",
2109 .sysc = &omap3xxx_gpio_sysc,
2110 .rev = 1,
2111};
2112
2113/* gpio_dev_attr*/
2114static struct omap_gpio_dev_attr gpio_dev_attr = {
2115 .bank_width = 32,
2116 .dbck_flag = true,
2117};
2118
2119/* gpio1 */
2120static struct omap_hwmod_irq_info omap3xxx_gpio1_irqs[] = {
2121 { .irq = 29 }, /* INT_34XX_GPIO_BANK1 */
2122};
2123
2124static struct omap_hwmod_opt_clk gpio1_opt_clks[] = {
2125 { .role = "dbclk", .clk = "gpio1_dbck", },
2126};
2127
2128static struct omap_hwmod_ocp_if *omap3xxx_gpio1_slaves[] = {
2129 &omap3xxx_l4_wkup__gpio1,
2130};
2131
2132static struct omap_hwmod omap3xxx_gpio1_hwmod = {
2133 .name = "gpio1",
2134 .mpu_irqs = omap3xxx_gpio1_irqs,
2135 .mpu_irqs_cnt = ARRAY_SIZE(omap3xxx_gpio1_irqs),
2136 .main_clk = "gpio1_ick",
2137 .opt_clks = gpio1_opt_clks,
2138 .opt_clks_cnt = ARRAY_SIZE(gpio1_opt_clks),
2139 .prcm = {
2140 .omap2 = {
2141 .prcm_reg_id = 1,
2142 .module_bit = OMAP3430_EN_GPIO1_SHIFT,
2143 .module_offs = WKUP_MOD,
2144 .idlest_reg_id = 1,
2145 .idlest_idle_bit = OMAP3430_ST_GPIO1_SHIFT,
2146 },
2147 },
2148 .slaves = omap3xxx_gpio1_slaves,
2149 .slaves_cnt = ARRAY_SIZE(omap3xxx_gpio1_slaves),
2150 .class = &omap3xxx_gpio_hwmod_class,
2151 .dev_attr = &gpio_dev_attr,
2152 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
2153};
2154
2155/* gpio2 */
2156static struct omap_hwmod_irq_info omap3xxx_gpio2_irqs[] = {
2157 { .irq = 30 }, /* INT_34XX_GPIO_BANK2 */
2158};
2159
2160static struct omap_hwmod_opt_clk gpio2_opt_clks[] = {
2161 { .role = "dbclk", .clk = "gpio2_dbck", },
2162};
2163
2164static struct omap_hwmod_ocp_if *omap3xxx_gpio2_slaves[] = {
2165 &omap3xxx_l4_per__gpio2,
2166};
2167
2168static struct omap_hwmod omap3xxx_gpio2_hwmod = {
2169 .name = "gpio2",
2170 .mpu_irqs = omap3xxx_gpio2_irqs,
2171 .mpu_irqs_cnt = ARRAY_SIZE(omap3xxx_gpio2_irqs),
2172 .main_clk = "gpio2_ick",
2173 .opt_clks = gpio2_opt_clks,
2174 .opt_clks_cnt = ARRAY_SIZE(gpio2_opt_clks),
2175 .prcm = {
2176 .omap2 = {
2177 .prcm_reg_id = 1,
2178 .module_bit = OMAP3430_EN_GPIO2_SHIFT,
2179 .module_offs = OMAP3430_PER_MOD,
2180 .idlest_reg_id = 1,
2181 .idlest_idle_bit = OMAP3430_ST_GPIO2_SHIFT,
2182 },
2183 },
2184 .slaves = omap3xxx_gpio2_slaves,
2185 .slaves_cnt = ARRAY_SIZE(omap3xxx_gpio2_slaves),
2186 .class = &omap3xxx_gpio_hwmod_class,
2187 .dev_attr = &gpio_dev_attr,
2188 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
2189};
2190
2191/* gpio3 */
2192static struct omap_hwmod_irq_info omap3xxx_gpio3_irqs[] = {
2193 { .irq = 31 }, /* INT_34XX_GPIO_BANK3 */
2194};
2195
2196static struct omap_hwmod_opt_clk gpio3_opt_clks[] = {
2197 { .role = "dbclk", .clk = "gpio3_dbck", },
2198};
2199
2200static struct omap_hwmod_ocp_if *omap3xxx_gpio3_slaves[] = {
2201 &omap3xxx_l4_per__gpio3,
2202};
2203
2204static struct omap_hwmod omap3xxx_gpio3_hwmod = {
2205 .name = "gpio3",
2206 .mpu_irqs = omap3xxx_gpio3_irqs,
2207 .mpu_irqs_cnt = ARRAY_SIZE(omap3xxx_gpio3_irqs),
2208 .main_clk = "gpio3_ick",
2209 .opt_clks = gpio3_opt_clks,
2210 .opt_clks_cnt = ARRAY_SIZE(gpio3_opt_clks),
2211 .prcm = {
2212 .omap2 = {
2213 .prcm_reg_id = 1,
2214 .module_bit = OMAP3430_EN_GPIO3_SHIFT,
2215 .module_offs = OMAP3430_PER_MOD,
2216 .idlest_reg_id = 1,
2217 .idlest_idle_bit = OMAP3430_ST_GPIO3_SHIFT,
2218 },
2219 },
2220 .slaves = omap3xxx_gpio3_slaves,
2221 .slaves_cnt = ARRAY_SIZE(omap3xxx_gpio3_slaves),
2222 .class = &omap3xxx_gpio_hwmod_class,
2223 .dev_attr = &gpio_dev_attr,
2224 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
2225};
2226
2227/* gpio4 */
2228static struct omap_hwmod_irq_info omap3xxx_gpio4_irqs[] = {
2229 { .irq = 32 }, /* INT_34XX_GPIO_BANK4 */
2230};
2231
2232static struct omap_hwmod_opt_clk gpio4_opt_clks[] = {
2233 { .role = "dbclk", .clk = "gpio4_dbck", },
2234};
2235
2236static struct omap_hwmod_ocp_if *omap3xxx_gpio4_slaves[] = {
2237 &omap3xxx_l4_per__gpio4,
2238};
2239
2240static struct omap_hwmod omap3xxx_gpio4_hwmod = {
2241 .name = "gpio4",
2242 .mpu_irqs = omap3xxx_gpio4_irqs,
2243 .mpu_irqs_cnt = ARRAY_SIZE(omap3xxx_gpio4_irqs),
2244 .main_clk = "gpio4_ick",
2245 .opt_clks = gpio4_opt_clks,
2246 .opt_clks_cnt = ARRAY_SIZE(gpio4_opt_clks),
2247 .prcm = {
2248 .omap2 = {
2249 .prcm_reg_id = 1,
2250 .module_bit = OMAP3430_EN_GPIO4_SHIFT,
2251 .module_offs = OMAP3430_PER_MOD,
2252 .idlest_reg_id = 1,
2253 .idlest_idle_bit = OMAP3430_ST_GPIO4_SHIFT,
2254 },
2255 },
2256 .slaves = omap3xxx_gpio4_slaves,
2257 .slaves_cnt = ARRAY_SIZE(omap3xxx_gpio4_slaves),
2258 .class = &omap3xxx_gpio_hwmod_class,
2259 .dev_attr = &gpio_dev_attr,
2260 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
2261};
2262
2263/* gpio5 */
2264static struct omap_hwmod_irq_info omap3xxx_gpio5_irqs[] = {
2265 { .irq = 33 }, /* INT_34XX_GPIO_BANK5 */
2266};
2267
2268static struct omap_hwmod_opt_clk gpio5_opt_clks[] = {
2269 { .role = "dbclk", .clk = "gpio5_dbck", },
2270};
2271
2272static struct omap_hwmod_ocp_if *omap3xxx_gpio5_slaves[] = {
2273 &omap3xxx_l4_per__gpio5,
2274};
2275
2276static struct omap_hwmod omap3xxx_gpio5_hwmod = {
2277 .name = "gpio5",
2278 .mpu_irqs = omap3xxx_gpio5_irqs,
2279 .mpu_irqs_cnt = ARRAY_SIZE(omap3xxx_gpio5_irqs),
2280 .main_clk = "gpio5_ick",
2281 .opt_clks = gpio5_opt_clks,
2282 .opt_clks_cnt = ARRAY_SIZE(gpio5_opt_clks),
2283 .prcm = {
2284 .omap2 = {
2285 .prcm_reg_id = 1,
2286 .module_bit = OMAP3430_EN_GPIO5_SHIFT,
2287 .module_offs = OMAP3430_PER_MOD,
2288 .idlest_reg_id = 1,
2289 .idlest_idle_bit = OMAP3430_ST_GPIO5_SHIFT,
2290 },
2291 },
2292 .slaves = omap3xxx_gpio5_slaves,
2293 .slaves_cnt = ARRAY_SIZE(omap3xxx_gpio5_slaves),
2294 .class = &omap3xxx_gpio_hwmod_class,
2295 .dev_attr = &gpio_dev_attr,
2296 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
2297};
2298
2299/* gpio6 */
2300static struct omap_hwmod_irq_info omap3xxx_gpio6_irqs[] = {
2301 { .irq = 34 }, /* INT_34XX_GPIO_BANK6 */
2302};
2303
2304static struct omap_hwmod_opt_clk gpio6_opt_clks[] = {
2305 { .role = "dbclk", .clk = "gpio6_dbck", },
2306};
2307
2308static struct omap_hwmod_ocp_if *omap3xxx_gpio6_slaves[] = {
2309 &omap3xxx_l4_per__gpio6,
2310};
2311
2312static struct omap_hwmod omap3xxx_gpio6_hwmod = {
2313 .name = "gpio6",
2314 .mpu_irqs = omap3xxx_gpio6_irqs,
2315 .mpu_irqs_cnt = ARRAY_SIZE(omap3xxx_gpio6_irqs),
2316 .main_clk = "gpio6_ick",
2317 .opt_clks = gpio6_opt_clks,
2318 .opt_clks_cnt = ARRAY_SIZE(gpio6_opt_clks),
2319 .prcm = {
2320 .omap2 = {
2321 .prcm_reg_id = 1,
2322 .module_bit = OMAP3430_EN_GPIO6_SHIFT,
2323 .module_offs = OMAP3430_PER_MOD,
2324 .idlest_reg_id = 1,
2325 .idlest_idle_bit = OMAP3430_ST_GPIO6_SHIFT,
2326 },
2327 },
2328 .slaves = omap3xxx_gpio6_slaves,
2329 .slaves_cnt = ARRAY_SIZE(omap3xxx_gpio6_slaves),
2330 .class = &omap3xxx_gpio_hwmod_class,
2331 .dev_attr = &gpio_dev_attr,
2332 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
2333};
2334
G, Manjunath Kondaiah01438ab2010-12-20 18:27:19 -08002335/* dma_system -> L3 */
2336static struct omap_hwmod_ocp_if omap3xxx_dma_system__l3 = {
2337 .master = &omap3xxx_dma_system_hwmod,
2338 .slave = &omap3xxx_l3_main_hwmod,
2339 .clk = "core_l3_ick",
2340 .user = OCP_USER_MPU | OCP_USER_SDMA,
2341};
2342
2343/* dma attributes */
2344static struct omap_dma_dev_attr dma_dev_attr = {
2345 .dev_caps = RESERVE_CHANNEL | DMA_LINKED_LCH | GLOBAL_PRIORITY |
2346 IS_CSSA_32 | IS_CDSA_32 | IS_RW_PRIORITY,
2347 .lch_count = 32,
2348};
2349
2350static struct omap_hwmod_class_sysconfig omap3xxx_dma_sysc = {
2351 .rev_offs = 0x0000,
2352 .sysc_offs = 0x002c,
2353 .syss_offs = 0x0028,
2354 .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
2355 SYSC_HAS_MIDLEMODE | SYSC_HAS_CLOCKACTIVITY |
2356 SYSC_HAS_EMUFREE | SYSC_HAS_AUTOIDLE),
2357 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
2358 MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
2359 .sysc_fields = &omap_hwmod_sysc_type1,
2360};
2361
2362static struct omap_hwmod_class omap3xxx_dma_hwmod_class = {
2363 .name = "dma",
2364 .sysc = &omap3xxx_dma_sysc,
2365};
2366
2367/* dma_system */
2368static struct omap_hwmod_irq_info omap3xxx_dma_system_irqs[] = {
2369 { .name = "0", .irq = 12 }, /* INT_24XX_SDMA_IRQ0 */
2370 { .name = "1", .irq = 13 }, /* INT_24XX_SDMA_IRQ1 */
2371 { .name = "2", .irq = 14 }, /* INT_24XX_SDMA_IRQ2 */
2372 { .name = "3", .irq = 15 }, /* INT_24XX_SDMA_IRQ3 */
2373};
2374
2375static struct omap_hwmod_addr_space omap3xxx_dma_system_addrs[] = {
2376 {
2377 .pa_start = 0x48056000,
2378 .pa_end = 0x4a0560ff,
2379 .flags = ADDR_TYPE_RT
2380 },
2381};
2382
2383/* dma_system master ports */
2384static struct omap_hwmod_ocp_if *omap3xxx_dma_system_masters[] = {
2385 &omap3xxx_dma_system__l3,
2386};
2387
2388/* l4_cfg -> dma_system */
2389static struct omap_hwmod_ocp_if omap3xxx_l4_core__dma_system = {
2390 .master = &omap3xxx_l4_core_hwmod,
2391 .slave = &omap3xxx_dma_system_hwmod,
2392 .clk = "core_l4_ick",
2393 .addr = omap3xxx_dma_system_addrs,
2394 .addr_cnt = ARRAY_SIZE(omap3xxx_dma_system_addrs),
2395 .user = OCP_USER_MPU | OCP_USER_SDMA,
2396};
2397
2398/* dma_system slave ports */
2399static struct omap_hwmod_ocp_if *omap3xxx_dma_system_slaves[] = {
2400 &omap3xxx_l4_core__dma_system,
2401};
2402
2403static struct omap_hwmod omap3xxx_dma_system_hwmod = {
2404 .name = "dma",
2405 .class = &omap3xxx_dma_hwmod_class,
2406 .mpu_irqs = omap3xxx_dma_system_irqs,
2407 .mpu_irqs_cnt = ARRAY_SIZE(omap3xxx_dma_system_irqs),
2408 .main_clk = "core_l3_ick",
2409 .prcm = {
2410 .omap2 = {
2411 .module_offs = CORE_MOD,
2412 .prcm_reg_id = 1,
2413 .module_bit = OMAP3430_ST_SDMA_SHIFT,
2414 .idlest_reg_id = 1,
2415 .idlest_idle_bit = OMAP3430_ST_SDMA_SHIFT,
2416 },
2417 },
2418 .slaves = omap3xxx_dma_system_slaves,
2419 .slaves_cnt = ARRAY_SIZE(omap3xxx_dma_system_slaves),
2420 .masters = omap3xxx_dma_system_masters,
2421 .masters_cnt = ARRAY_SIZE(omap3xxx_dma_system_masters),
2422 .dev_attr = &dma_dev_attr,
2423 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
2424 .flags = HWMOD_NO_IDLEST,
2425};
2426
Thara Gopinathd3442722010-05-29 22:02:24 +05302427/* SR common */
2428static struct omap_hwmod_sysc_fields omap34xx_sr_sysc_fields = {
2429 .clkact_shift = 20,
2430};
2431
2432static struct omap_hwmod_class_sysconfig omap34xx_sr_sysc = {
2433 .sysc_offs = 0x24,
2434 .sysc_flags = (SYSC_HAS_CLOCKACTIVITY | SYSC_NO_CACHE),
2435 .clockact = CLOCKACT_TEST_ICLK,
2436 .sysc_fields = &omap34xx_sr_sysc_fields,
2437};
2438
2439static struct omap_hwmod_class omap34xx_smartreflex_hwmod_class = {
2440 .name = "smartreflex",
2441 .sysc = &omap34xx_sr_sysc,
2442 .rev = 1,
2443};
2444
2445static struct omap_hwmod_sysc_fields omap36xx_sr_sysc_fields = {
2446 .sidle_shift = 24,
2447 .enwkup_shift = 26
2448};
2449
2450static struct omap_hwmod_class_sysconfig omap36xx_sr_sysc = {
2451 .sysc_offs = 0x38,
2452 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
2453 .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_ENAWAKEUP |
2454 SYSC_NO_CACHE),
2455 .sysc_fields = &omap36xx_sr_sysc_fields,
2456};
2457
2458static struct omap_hwmod_class omap36xx_smartreflex_hwmod_class = {
2459 .name = "smartreflex",
2460 .sysc = &omap36xx_sr_sysc,
2461 .rev = 2,
2462};
2463
2464/* SR1 */
2465static struct omap_hwmod_ocp_if *omap3_sr1_slaves[] = {
2466 &omap3_l4_core__sr1,
2467};
2468
2469static struct omap_hwmod omap34xx_sr1_hwmod = {
2470 .name = "sr1_hwmod",
2471 .class = &omap34xx_smartreflex_hwmod_class,
2472 .main_clk = "sr1_fck",
2473 .vdd_name = "mpu",
2474 .prcm = {
2475 .omap2 = {
2476 .prcm_reg_id = 1,
2477 .module_bit = OMAP3430_EN_SR1_SHIFT,
2478 .module_offs = WKUP_MOD,
2479 .idlest_reg_id = 1,
2480 .idlest_idle_bit = OMAP3430_EN_SR1_SHIFT,
2481 },
2482 },
2483 .slaves = omap3_sr1_slaves,
2484 .slaves_cnt = ARRAY_SIZE(omap3_sr1_slaves),
2485 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430ES2 |
2486 CHIP_IS_OMAP3430ES3_0 |
2487 CHIP_IS_OMAP3430ES3_1),
2488 .flags = HWMOD_SET_DEFAULT_CLOCKACT,
2489};
2490
2491static struct omap_hwmod omap36xx_sr1_hwmod = {
2492 .name = "sr1_hwmod",
2493 .class = &omap36xx_smartreflex_hwmod_class,
2494 .main_clk = "sr1_fck",
2495 .vdd_name = "mpu",
2496 .prcm = {
2497 .omap2 = {
2498 .prcm_reg_id = 1,
2499 .module_bit = OMAP3430_EN_SR1_SHIFT,
2500 .module_offs = WKUP_MOD,
2501 .idlest_reg_id = 1,
2502 .idlest_idle_bit = OMAP3430_EN_SR1_SHIFT,
2503 },
2504 },
2505 .slaves = omap3_sr1_slaves,
2506 .slaves_cnt = ARRAY_SIZE(omap3_sr1_slaves),
2507 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3630ES1),
2508};
2509
2510/* SR2 */
2511static struct omap_hwmod_ocp_if *omap3_sr2_slaves[] = {
2512 &omap3_l4_core__sr2,
2513};
2514
2515static struct omap_hwmod omap34xx_sr2_hwmod = {
2516 .name = "sr2_hwmod",
2517 .class = &omap34xx_smartreflex_hwmod_class,
2518 .main_clk = "sr2_fck",
2519 .vdd_name = "core",
2520 .prcm = {
2521 .omap2 = {
2522 .prcm_reg_id = 1,
2523 .module_bit = OMAP3430_EN_SR2_SHIFT,
2524 .module_offs = WKUP_MOD,
2525 .idlest_reg_id = 1,
2526 .idlest_idle_bit = OMAP3430_EN_SR2_SHIFT,
2527 },
2528 },
2529 .slaves = omap3_sr2_slaves,
2530 .slaves_cnt = ARRAY_SIZE(omap3_sr2_slaves),
2531 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430ES2 |
2532 CHIP_IS_OMAP3430ES3_0 |
2533 CHIP_IS_OMAP3430ES3_1),
2534 .flags = HWMOD_SET_DEFAULT_CLOCKACT,
2535};
2536
2537static struct omap_hwmod omap36xx_sr2_hwmod = {
2538 .name = "sr2_hwmod",
2539 .class = &omap36xx_smartreflex_hwmod_class,
2540 .main_clk = "sr2_fck",
2541 .vdd_name = "core",
2542 .prcm = {
2543 .omap2 = {
2544 .prcm_reg_id = 1,
2545 .module_bit = OMAP3430_EN_SR2_SHIFT,
2546 .module_offs = WKUP_MOD,
2547 .idlest_reg_id = 1,
2548 .idlest_idle_bit = OMAP3430_EN_SR2_SHIFT,
2549 },
2550 },
2551 .slaves = omap3_sr2_slaves,
2552 .slaves_cnt = ARRAY_SIZE(omap3_sr2_slaves),
2553 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3630ES1),
2554};
2555
Charulatha V0f616a42011-02-17 09:53:10 -08002556/* l4 core -> mcspi1 interface */
2557static struct omap_hwmod_addr_space omap34xx_mcspi1_addr_space[] = {
2558 {
2559 .pa_start = 0x48098000,
2560 .pa_end = 0x480980ff,
2561 .flags = ADDR_TYPE_RT,
2562 },
2563};
2564
2565static struct omap_hwmod_ocp_if omap34xx_l4_core__mcspi1 = {
2566 .master = &omap3xxx_l4_core_hwmod,
2567 .slave = &omap34xx_mcspi1,
2568 .clk = "mcspi1_ick",
2569 .addr = omap34xx_mcspi1_addr_space,
2570 .addr_cnt = ARRAY_SIZE(omap34xx_mcspi1_addr_space),
2571 .user = OCP_USER_MPU | OCP_USER_SDMA,
2572};
2573
2574/* l4 core -> mcspi2 interface */
2575static struct omap_hwmod_addr_space omap34xx_mcspi2_addr_space[] = {
2576 {
2577 .pa_start = 0x4809a000,
2578 .pa_end = 0x4809a0ff,
2579 .flags = ADDR_TYPE_RT,
2580 },
2581};
2582
2583static struct omap_hwmod_ocp_if omap34xx_l4_core__mcspi2 = {
2584 .master = &omap3xxx_l4_core_hwmod,
2585 .slave = &omap34xx_mcspi2,
2586 .clk = "mcspi2_ick",
2587 .addr = omap34xx_mcspi2_addr_space,
2588 .addr_cnt = ARRAY_SIZE(omap34xx_mcspi2_addr_space),
2589 .user = OCP_USER_MPU | OCP_USER_SDMA,
2590};
2591
2592/* l4 core -> mcspi3 interface */
2593static struct omap_hwmod_addr_space omap34xx_mcspi3_addr_space[] = {
2594 {
2595 .pa_start = 0x480b8000,
2596 .pa_end = 0x480b80ff,
2597 .flags = ADDR_TYPE_RT,
2598 },
2599};
2600
2601static struct omap_hwmod_ocp_if omap34xx_l4_core__mcspi3 = {
2602 .master = &omap3xxx_l4_core_hwmod,
2603 .slave = &omap34xx_mcspi3,
2604 .clk = "mcspi3_ick",
2605 .addr = omap34xx_mcspi3_addr_space,
2606 .addr_cnt = ARRAY_SIZE(omap34xx_mcspi3_addr_space),
2607 .user = OCP_USER_MPU | OCP_USER_SDMA,
2608};
2609
2610/* l4 core -> mcspi4 interface */
2611static struct omap_hwmod_addr_space omap34xx_mcspi4_addr_space[] = {
2612 {
2613 .pa_start = 0x480ba000,
2614 .pa_end = 0x480ba0ff,
2615 .flags = ADDR_TYPE_RT,
2616 },
2617};
2618
2619static struct omap_hwmod_ocp_if omap34xx_l4_core__mcspi4 = {
2620 .master = &omap3xxx_l4_core_hwmod,
2621 .slave = &omap34xx_mcspi4,
2622 .clk = "mcspi4_ick",
2623 .addr = omap34xx_mcspi4_addr_space,
2624 .addr_cnt = ARRAY_SIZE(omap34xx_mcspi4_addr_space),
2625 .user = OCP_USER_MPU | OCP_USER_SDMA,
2626};
2627
2628/*
2629 * 'mcspi' class
2630 * multichannel serial port interface (mcspi) / master/slave synchronous serial
2631 * bus
2632 */
2633
2634static struct omap_hwmod_class_sysconfig omap34xx_mcspi_sysc = {
2635 .rev_offs = 0x0000,
2636 .sysc_offs = 0x0010,
2637 .syss_offs = 0x0014,
2638 .sysc_flags = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
2639 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
2640 SYSC_HAS_AUTOIDLE | SYSS_HAS_RESET_STATUS),
2641 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
2642 .sysc_fields = &omap_hwmod_sysc_type1,
2643};
2644
2645static struct omap_hwmod_class omap34xx_mcspi_class = {
2646 .name = "mcspi",
2647 .sysc = &omap34xx_mcspi_sysc,
2648 .rev = OMAP3_MCSPI_REV,
2649};
2650
2651/* mcspi1 */
2652static struct omap_hwmod_irq_info omap34xx_mcspi1_mpu_irqs[] = {
2653 { .name = "irq", .irq = 65 },
2654};
2655
2656static struct omap_hwmod_dma_info omap34xx_mcspi1_sdma_reqs[] = {
2657 { .name = "tx0", .dma_req = 35 },
2658 { .name = "rx0", .dma_req = 36 },
2659 { .name = "tx1", .dma_req = 37 },
2660 { .name = "rx1", .dma_req = 38 },
2661 { .name = "tx2", .dma_req = 39 },
2662 { .name = "rx2", .dma_req = 40 },
2663 { .name = "tx3", .dma_req = 41 },
2664 { .name = "rx3", .dma_req = 42 },
2665};
2666
2667static struct omap_hwmod_ocp_if *omap34xx_mcspi1_slaves[] = {
2668 &omap34xx_l4_core__mcspi1,
2669};
2670
2671static struct omap2_mcspi_dev_attr omap_mcspi1_dev_attr = {
2672 .num_chipselect = 4,
2673};
2674
2675static struct omap_hwmod omap34xx_mcspi1 = {
2676 .name = "mcspi1",
2677 .mpu_irqs = omap34xx_mcspi1_mpu_irqs,
2678 .mpu_irqs_cnt = ARRAY_SIZE(omap34xx_mcspi1_mpu_irqs),
2679 .sdma_reqs = omap34xx_mcspi1_sdma_reqs,
2680 .sdma_reqs_cnt = ARRAY_SIZE(omap34xx_mcspi1_sdma_reqs),
2681 .main_clk = "mcspi1_fck",
2682 .prcm = {
2683 .omap2 = {
2684 .module_offs = CORE_MOD,
2685 .prcm_reg_id = 1,
2686 .module_bit = OMAP3430_EN_MCSPI1_SHIFT,
2687 .idlest_reg_id = 1,
2688 .idlest_idle_bit = OMAP3430_ST_MCSPI1_SHIFT,
2689 },
2690 },
2691 .slaves = omap34xx_mcspi1_slaves,
2692 .slaves_cnt = ARRAY_SIZE(omap34xx_mcspi1_slaves),
2693 .class = &omap34xx_mcspi_class,
2694 .dev_attr = &omap_mcspi1_dev_attr,
2695 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
2696};
2697
2698/* mcspi2 */
2699static struct omap_hwmod_irq_info omap34xx_mcspi2_mpu_irqs[] = {
2700 { .name = "irq", .irq = 66 },
2701};
2702
2703static struct omap_hwmod_dma_info omap34xx_mcspi2_sdma_reqs[] = {
2704 { .name = "tx0", .dma_req = 43 },
2705 { .name = "rx0", .dma_req = 44 },
2706 { .name = "tx1", .dma_req = 45 },
2707 { .name = "rx1", .dma_req = 46 },
2708};
2709
2710static struct omap_hwmod_ocp_if *omap34xx_mcspi2_slaves[] = {
2711 &omap34xx_l4_core__mcspi2,
2712};
2713
2714static struct omap2_mcspi_dev_attr omap_mcspi2_dev_attr = {
2715 .num_chipselect = 2,
2716};
2717
2718static struct omap_hwmod omap34xx_mcspi2 = {
2719 .name = "mcspi2",
2720 .mpu_irqs = omap34xx_mcspi2_mpu_irqs,
2721 .mpu_irqs_cnt = ARRAY_SIZE(omap34xx_mcspi2_mpu_irqs),
2722 .sdma_reqs = omap34xx_mcspi2_sdma_reqs,
2723 .sdma_reqs_cnt = ARRAY_SIZE(omap34xx_mcspi2_sdma_reqs),
2724 .main_clk = "mcspi2_fck",
2725 .prcm = {
2726 .omap2 = {
2727 .module_offs = CORE_MOD,
2728 .prcm_reg_id = 1,
2729 .module_bit = OMAP3430_EN_MCSPI2_SHIFT,
2730 .idlest_reg_id = 1,
2731 .idlest_idle_bit = OMAP3430_ST_MCSPI2_SHIFT,
2732 },
2733 },
2734 .slaves = omap34xx_mcspi2_slaves,
2735 .slaves_cnt = ARRAY_SIZE(omap34xx_mcspi2_slaves),
2736 .class = &omap34xx_mcspi_class,
2737 .dev_attr = &omap_mcspi2_dev_attr,
2738 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
2739};
2740
2741/* mcspi3 */
2742static struct omap_hwmod_irq_info omap34xx_mcspi3_mpu_irqs[] = {
2743 { .name = "irq", .irq = 91 }, /* 91 */
2744};
2745
2746static struct omap_hwmod_dma_info omap34xx_mcspi3_sdma_reqs[] = {
2747 { .name = "tx0", .dma_req = 15 },
2748 { .name = "rx0", .dma_req = 16 },
2749 { .name = "tx1", .dma_req = 23 },
2750 { .name = "rx1", .dma_req = 24 },
2751};
2752
2753static struct omap_hwmod_ocp_if *omap34xx_mcspi3_slaves[] = {
2754 &omap34xx_l4_core__mcspi3,
2755};
2756
2757static struct omap2_mcspi_dev_attr omap_mcspi3_dev_attr = {
2758 .num_chipselect = 2,
2759};
2760
2761static struct omap_hwmod omap34xx_mcspi3 = {
2762 .name = "mcspi3",
2763 .mpu_irqs = omap34xx_mcspi3_mpu_irqs,
2764 .mpu_irqs_cnt = ARRAY_SIZE(omap34xx_mcspi3_mpu_irqs),
2765 .sdma_reqs = omap34xx_mcspi3_sdma_reqs,
2766 .sdma_reqs_cnt = ARRAY_SIZE(omap34xx_mcspi3_sdma_reqs),
2767 .main_clk = "mcspi3_fck",
2768 .prcm = {
2769 .omap2 = {
2770 .module_offs = CORE_MOD,
2771 .prcm_reg_id = 1,
2772 .module_bit = OMAP3430_EN_MCSPI3_SHIFT,
2773 .idlest_reg_id = 1,
2774 .idlest_idle_bit = OMAP3430_ST_MCSPI3_SHIFT,
2775 },
2776 },
2777 .slaves = omap34xx_mcspi3_slaves,
2778 .slaves_cnt = ARRAY_SIZE(omap34xx_mcspi3_slaves),
2779 .class = &omap34xx_mcspi_class,
2780 .dev_attr = &omap_mcspi3_dev_attr,
2781 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
2782};
2783
2784/* SPI4 */
2785static struct omap_hwmod_irq_info omap34xx_mcspi4_mpu_irqs[] = {
2786 { .name = "irq", .irq = INT_34XX_SPI4_IRQ }, /* 48 */
2787};
2788
2789static struct omap_hwmod_dma_info omap34xx_mcspi4_sdma_reqs[] = {
2790 { .name = "tx0", .dma_req = 70 }, /* DMA_SPI4_TX0 */
2791 { .name = "rx0", .dma_req = 71 }, /* DMA_SPI4_RX0 */
2792};
2793
2794static struct omap_hwmod_ocp_if *omap34xx_mcspi4_slaves[] = {
2795 &omap34xx_l4_core__mcspi4,
2796};
2797
2798static struct omap2_mcspi_dev_attr omap_mcspi4_dev_attr = {
2799 .num_chipselect = 1,
2800};
2801
2802static struct omap_hwmod omap34xx_mcspi4 = {
2803 .name = "mcspi4",
2804 .mpu_irqs = omap34xx_mcspi4_mpu_irqs,
2805 .mpu_irqs_cnt = ARRAY_SIZE(omap34xx_mcspi4_mpu_irqs),
2806 .sdma_reqs = omap34xx_mcspi4_sdma_reqs,
2807 .sdma_reqs_cnt = ARRAY_SIZE(omap34xx_mcspi4_sdma_reqs),
2808 .main_clk = "mcspi4_fck",
2809 .prcm = {
2810 .omap2 = {
2811 .module_offs = CORE_MOD,
2812 .prcm_reg_id = 1,
2813 .module_bit = OMAP3430_EN_MCSPI4_SHIFT,
2814 .idlest_reg_id = 1,
2815 .idlest_idle_bit = OMAP3430_ST_MCSPI4_SHIFT,
2816 },
2817 },
2818 .slaves = omap34xx_mcspi4_slaves,
2819 .slaves_cnt = ARRAY_SIZE(omap34xx_mcspi4_slaves),
2820 .class = &omap34xx_mcspi_class,
2821 .dev_attr = &omap_mcspi4_dev_attr,
2822 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
2823};
2824
Hema HK870ea2b2011-02-17 12:07:18 +05302825/*
2826 * usbhsotg
2827 */
2828static struct omap_hwmod_class_sysconfig omap3xxx_usbhsotg_sysc = {
2829 .rev_offs = 0x0400,
2830 .sysc_offs = 0x0404,
2831 .syss_offs = 0x0408,
2832 .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE|
2833 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
2834 SYSC_HAS_AUTOIDLE),
2835 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
2836 MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
2837 .sysc_fields = &omap_hwmod_sysc_type1,
2838};
2839
2840static struct omap_hwmod_class usbotg_class = {
2841 .name = "usbotg",
2842 .sysc = &omap3xxx_usbhsotg_sysc,
2843};
Hema HK870ea2b2011-02-17 12:07:18 +05302844/* usb_otg_hs */
2845static struct omap_hwmod_irq_info omap3xxx_usbhsotg_mpu_irqs[] = {
2846
2847 { .name = "mc", .irq = 92 },
2848 { .name = "dma", .irq = 93 },
2849};
2850
2851static struct omap_hwmod omap3xxx_usbhsotg_hwmod = {
2852 .name = "usb_otg_hs",
2853 .mpu_irqs = omap3xxx_usbhsotg_mpu_irqs,
2854 .mpu_irqs_cnt = ARRAY_SIZE(omap3xxx_usbhsotg_mpu_irqs),
2855 .main_clk = "hsotgusb_ick",
2856 .prcm = {
2857 .omap2 = {
2858 .prcm_reg_id = 1,
2859 .module_bit = OMAP3430_EN_HSOTGUSB_SHIFT,
2860 .module_offs = CORE_MOD,
2861 .idlest_reg_id = 1,
2862 .idlest_idle_bit = OMAP3430ES2_ST_HSOTGUSB_IDLE_SHIFT,
2863 .idlest_stdby_bit = OMAP3430ES2_ST_HSOTGUSB_STDBY_SHIFT
2864 },
2865 },
2866 .masters = omap3xxx_usbhsotg_masters,
2867 .masters_cnt = ARRAY_SIZE(omap3xxx_usbhsotg_masters),
2868 .slaves = omap3xxx_usbhsotg_slaves,
2869 .slaves_cnt = ARRAY_SIZE(omap3xxx_usbhsotg_slaves),
2870 .class = &usbotg_class,
2871
2872 /*
2873 * Erratum ID: i479 idle_req / idle_ack mechanism potentially
2874 * broken when autoidle is enabled
2875 * workaround is to disable the autoidle bit at module level.
2876 */
2877 .flags = HWMOD_NO_OCP_AUTOIDLE | HWMOD_SWSUP_SIDLE
2878 | HWMOD_SWSUP_MSTANDBY,
2879 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
2880};
Tony Lindgren04aa67d2011-02-22 10:54:12 -08002881
Hema HK273ff8c2011-02-17 12:07:19 +05302882/* usb_otg_hs */
2883static struct omap_hwmod_irq_info am35xx_usbhsotg_mpu_irqs[] = {
2884
2885 { .name = "mc", .irq = 71 },
2886};
2887
2888static struct omap_hwmod_class am35xx_usbotg_class = {
2889 .name = "am35xx_usbotg",
2890 .sysc = NULL,
2891};
2892
2893static struct omap_hwmod am35xx_usbhsotg_hwmod = {
2894 .name = "am35x_otg_hs",
2895 .mpu_irqs = am35xx_usbhsotg_mpu_irqs,
2896 .mpu_irqs_cnt = ARRAY_SIZE(am35xx_usbhsotg_mpu_irqs),
2897 .main_clk = NULL,
2898 .prcm = {
2899 .omap2 = {
2900 },
2901 },
2902 .masters = am35xx_usbhsotg_masters,
2903 .masters_cnt = ARRAY_SIZE(am35xx_usbhsotg_masters),
2904 .slaves = am35xx_usbhsotg_slaves,
2905 .slaves_cnt = ARRAY_SIZE(am35xx_usbhsotg_slaves),
2906 .class = &am35xx_usbotg_class,
2907 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430ES3_1)
2908};
Hema HK870ea2b2011-02-17 12:07:18 +05302909
Paul Walmsleyb1636052011-03-01 13:12:56 -08002910/* MMC/SD/SDIO common */
2911
2912static struct omap_hwmod_class_sysconfig omap34xx_mmc_sysc = {
2913 .rev_offs = 0x1fc,
2914 .sysc_offs = 0x10,
2915 .syss_offs = 0x14,
2916 .sysc_flags = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
2917 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
2918 SYSC_HAS_AUTOIDLE | SYSS_HAS_RESET_STATUS),
2919 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
2920 .sysc_fields = &omap_hwmod_sysc_type1,
2921};
2922
2923static struct omap_hwmod_class omap34xx_mmc_class = {
2924 .name = "mmc",
2925 .sysc = &omap34xx_mmc_sysc,
2926};
2927
2928/* MMC/SD/SDIO1 */
2929
2930static struct omap_hwmod_irq_info omap34xx_mmc1_mpu_irqs[] = {
2931 { .irq = 83, },
2932};
2933
2934static struct omap_hwmod_dma_info omap34xx_mmc1_sdma_reqs[] = {
2935 { .name = "tx", .dma_req = 61, },
2936 { .name = "rx", .dma_req = 62, },
2937};
2938
2939static struct omap_hwmod_opt_clk omap34xx_mmc1_opt_clks[] = {
2940 { .role = "dbck", .clk = "omap_32k_fck", },
2941};
2942
2943static struct omap_hwmod_ocp_if *omap3xxx_mmc1_slaves[] = {
2944 &omap3xxx_l4_core__mmc1,
2945};
2946
2947static struct omap_hwmod omap3xxx_mmc1_hwmod = {
2948 .name = "mmc1",
2949 .mpu_irqs = omap34xx_mmc1_mpu_irqs,
2950 .mpu_irqs_cnt = ARRAY_SIZE(omap34xx_mmc1_mpu_irqs),
2951 .sdma_reqs = omap34xx_mmc1_sdma_reqs,
2952 .sdma_reqs_cnt = ARRAY_SIZE(omap34xx_mmc1_sdma_reqs),
2953 .opt_clks = omap34xx_mmc1_opt_clks,
2954 .opt_clks_cnt = ARRAY_SIZE(omap34xx_mmc1_opt_clks),
2955 .main_clk = "mmchs1_fck",
2956 .prcm = {
2957 .omap2 = {
2958 .module_offs = CORE_MOD,
2959 .prcm_reg_id = 1,
2960 .module_bit = OMAP3430_EN_MMC1_SHIFT,
2961 .idlest_reg_id = 1,
2962 .idlest_idle_bit = OMAP3430_ST_MMC1_SHIFT,
2963 },
2964 },
2965 .slaves = omap3xxx_mmc1_slaves,
2966 .slaves_cnt = ARRAY_SIZE(omap3xxx_mmc1_slaves),
2967 .class = &omap34xx_mmc_class,
2968 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
2969};
2970
2971/* MMC/SD/SDIO2 */
2972
2973static struct omap_hwmod_irq_info omap34xx_mmc2_mpu_irqs[] = {
2974 { .irq = INT_24XX_MMC2_IRQ, },
2975};
2976
2977static struct omap_hwmod_dma_info omap34xx_mmc2_sdma_reqs[] = {
2978 { .name = "tx", .dma_req = 47, },
2979 { .name = "rx", .dma_req = 48, },
2980};
2981
2982static struct omap_hwmod_opt_clk omap34xx_mmc2_opt_clks[] = {
2983 { .role = "dbck", .clk = "omap_32k_fck", },
2984};
2985
2986static struct omap_hwmod_ocp_if *omap3xxx_mmc2_slaves[] = {
2987 &omap3xxx_l4_core__mmc2,
2988};
2989
2990static struct omap_hwmod omap3xxx_mmc2_hwmod = {
2991 .name = "mmc2",
2992 .mpu_irqs = omap34xx_mmc2_mpu_irqs,
2993 .mpu_irqs_cnt = ARRAY_SIZE(omap34xx_mmc2_mpu_irqs),
2994 .sdma_reqs = omap34xx_mmc2_sdma_reqs,
2995 .sdma_reqs_cnt = ARRAY_SIZE(omap34xx_mmc2_sdma_reqs),
2996 .opt_clks = omap34xx_mmc2_opt_clks,
2997 .opt_clks_cnt = ARRAY_SIZE(omap34xx_mmc2_opt_clks),
2998 .main_clk = "mmchs2_fck",
2999 .prcm = {
3000 .omap2 = {
3001 .module_offs = CORE_MOD,
3002 .prcm_reg_id = 1,
3003 .module_bit = OMAP3430_EN_MMC2_SHIFT,
3004 .idlest_reg_id = 1,
3005 .idlest_idle_bit = OMAP3430_ST_MMC2_SHIFT,
3006 },
3007 },
3008 .slaves = omap3xxx_mmc2_slaves,
3009 .slaves_cnt = ARRAY_SIZE(omap3xxx_mmc2_slaves),
3010 .class = &omap34xx_mmc_class,
3011 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
3012};
3013
3014/* MMC/SD/SDIO3 */
3015
3016static struct omap_hwmod_irq_info omap34xx_mmc3_mpu_irqs[] = {
3017 { .irq = 94, },
3018};
3019
3020static struct omap_hwmod_dma_info omap34xx_mmc3_sdma_reqs[] = {
3021 { .name = "tx", .dma_req = 77, },
3022 { .name = "rx", .dma_req = 78, },
3023};
3024
3025static struct omap_hwmod_opt_clk omap34xx_mmc3_opt_clks[] = {
3026 { .role = "dbck", .clk = "omap_32k_fck", },
3027};
3028
3029static struct omap_hwmod_ocp_if *omap3xxx_mmc3_slaves[] = {
3030 &omap3xxx_l4_core__mmc3,
3031};
3032
3033static struct omap_hwmod omap3xxx_mmc3_hwmod = {
3034 .name = "mmc3",
3035 .mpu_irqs = omap34xx_mmc3_mpu_irqs,
3036 .mpu_irqs_cnt = ARRAY_SIZE(omap34xx_mmc3_mpu_irqs),
3037 .sdma_reqs = omap34xx_mmc3_sdma_reqs,
3038 .sdma_reqs_cnt = ARRAY_SIZE(omap34xx_mmc3_sdma_reqs),
3039 .opt_clks = omap34xx_mmc3_opt_clks,
3040 .opt_clks_cnt = ARRAY_SIZE(omap34xx_mmc3_opt_clks),
3041 .main_clk = "mmchs3_fck",
3042 .prcm = {
3043 .omap2 = {
3044 .prcm_reg_id = 1,
3045 .module_bit = OMAP3430_EN_MMC3_SHIFT,
3046 .idlest_reg_id = 1,
3047 .idlest_idle_bit = OMAP3430_ST_MMC3_SHIFT,
3048 },
3049 },
3050 .slaves = omap3xxx_mmc3_slaves,
3051 .slaves_cnt = ARRAY_SIZE(omap3xxx_mmc3_slaves),
3052 .class = &omap34xx_mmc_class,
3053 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
3054};
3055
Paul Walmsley73591542010-02-22 22:09:32 -07003056static __initdata struct omap_hwmod *omap3xxx_hwmods[] = {
Kevin Hilman4a7cf902010-07-26 16:34:32 -06003057 &omap3xxx_l3_main_hwmod,
Paul Walmsley73591542010-02-22 22:09:32 -07003058 &omap3xxx_l4_core_hwmod,
3059 &omap3xxx_l4_per_hwmod,
3060 &omap3xxx_l4_wkup_hwmod,
Paul Walmsleyb1636052011-03-01 13:12:56 -08003061 &omap3xxx_mmc1_hwmod,
3062 &omap3xxx_mmc2_hwmod,
3063 &omap3xxx_mmc3_hwmod,
Paul Walmsley73591542010-02-22 22:09:32 -07003064 &omap3xxx_mpu_hwmod,
Kevin Hilman540064b2010-07-26 16:34:32 -06003065 &omap3xxx_iva_hwmod,
Thara Gopinathce722d22011-02-23 00:14:05 -07003066
3067 &omap3xxx_timer1_hwmod,
3068 &omap3xxx_timer2_hwmod,
3069 &omap3xxx_timer3_hwmod,
3070 &omap3xxx_timer4_hwmod,
3071 &omap3xxx_timer5_hwmod,
3072 &omap3xxx_timer6_hwmod,
3073 &omap3xxx_timer7_hwmod,
3074 &omap3xxx_timer8_hwmod,
3075 &omap3xxx_timer9_hwmod,
3076 &omap3xxx_timer10_hwmod,
3077 &omap3xxx_timer11_hwmod,
3078 &omap3xxx_timer12_hwmod,
3079
Varadarajan, Charulatha6b667f82010-09-23 20:02:38 +05303080 &omap3xxx_wd_timer2_hwmod,
Kevin Hilman046465b2010-09-27 20:19:30 +05303081 &omap3xxx_uart1_hwmod,
3082 &omap3xxx_uart2_hwmod,
3083 &omap3xxx_uart3_hwmod,
3084 &omap3xxx_uart4_hwmod,
Senthilvadivu Guruswamye04d9e12011-01-24 06:21:51 +00003085 /* dss class */
3086 &omap3430es1_dss_core_hwmod,
3087 &omap3xxx_dss_core_hwmod,
3088 &omap3xxx_dss_dispc_hwmod,
3089 &omap3xxx_dss_dsi1_hwmod,
3090 &omap3xxx_dss_rfbi_hwmod,
3091 &omap3xxx_dss_venc_hwmod,
3092
3093 /* i2c class */
Rajendra Nayak4fe20e92010-09-21 19:37:13 +05303094 &omap3xxx_i2c1_hwmod,
3095 &omap3xxx_i2c2_hwmod,
3096 &omap3xxx_i2c3_hwmod,
Thara Gopinathd3442722010-05-29 22:02:24 +05303097 &omap34xx_sr1_hwmod,
3098 &omap34xx_sr2_hwmod,
3099 &omap36xx_sr1_hwmod,
3100 &omap36xx_sr2_hwmod,
3101
Varadarajan, Charulatha70034d32010-12-07 16:26:57 -08003102
3103 /* gpio class */
3104 &omap3xxx_gpio1_hwmod,
3105 &omap3xxx_gpio2_hwmod,
3106 &omap3xxx_gpio3_hwmod,
3107 &omap3xxx_gpio4_hwmod,
3108 &omap3xxx_gpio5_hwmod,
3109 &omap3xxx_gpio6_hwmod,
G, Manjunath Kondaiah01438ab2010-12-20 18:27:19 -08003110
3111 /* dma_system class*/
3112 &omap3xxx_dma_system_hwmod,
Charulatha V0f616a42011-02-17 09:53:10 -08003113
3114 /* mcspi class */
3115 &omap34xx_mcspi1,
3116 &omap34xx_mcspi2,
3117 &omap34xx_mcspi3,
3118 &omap34xx_mcspi4,
Tony Lindgren04aa67d2011-02-22 10:54:12 -08003119
Hema HK870ea2b2011-02-17 12:07:18 +05303120 /* usbotg class */
3121 &omap3xxx_usbhsotg_hwmod,
3122
Hema HK273ff8c2011-02-17 12:07:19 +05303123 /* usbotg for am35x */
3124 &am35xx_usbhsotg_hwmod,
3125
Paul Walmsley73591542010-02-22 22:09:32 -07003126 NULL,
3127};
3128
3129int __init omap3xxx_hwmod_init(void)
3130{
Paul Walmsley550c8092011-02-28 11:58:14 -07003131 return omap_hwmod_register(omap3xxx_hwmods);
Paul Walmsley73591542010-02-22 22:09:32 -07003132}