Merge tag 'dt-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
[deliverable/linux.git] / arch / arm / mach-omap2 / omap_hwmod_33xx_data.c
CommitLineData
a2cfc509
VH
1/*
2 * omap_hwmod_33xx_data.c: Hardware modules present on the AM33XX chips
3 *
4 * Copyright (C) {2012} Texas Instruments Incorporated - http://www.ti.com/
5 *
6 * This file is automatically generated from the AM33XX hardware databases.
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License as
9 * published by the Free Software Foundation version 2.
10 *
11 * This program is distributed "as is" WITHOUT ANY WARRANTY of any
12 * kind, whether express or implied; without even the implied warranty
13 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 */
16
3a8761c0
TL
17#include <linux/i2c-omap.h>
18
2a296c8f 19#include "omap_hwmod.h"
11964f53 20#include <linux/platform_data/gpio-omap.h>
aa817b2e 21#include <linux/platform_data/spi-omap2-mcspi.h>
a2cfc509
VH
22
23#include "omap_hwmod_common_data.h"
24
25#include "control.h"
26#include "cm33xx.h"
27#include "prm33xx.h"
28#include "prm-regbits-33xx.h"
3a8761c0 29#include "i2c.h"
68f39e74 30#include "mmc.h"
05cf03b6 31#include "wd_timer.h"
a2cfc509 32
a2cfc509
VH
33/*
34 * IP blocks
35 */
36
37/*
38 * 'emif_fw' class
39 * instance(s): emif_fw
40 */
41static struct omap_hwmod_class am33xx_emif_fw_hwmod_class = {
42 .name = "emif_fw",
43};
44
45/* emif_fw */
46static struct omap_hwmod am33xx_emif_fw_hwmod = {
47 .name = "emif_fw",
48 .class = &am33xx_emif_fw_hwmod_class,
49 .clkdm_name = "l4fw_clkdm",
50 .main_clk = "l4fw_gclk",
51 .flags = (HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET),
52 .prcm = {
53 .omap4 = {
54 .clkctrl_offs = AM33XX_CM_PER_EMIF_FW_CLKCTRL_OFFSET,
55 .modulemode = MODULEMODE_SWCTRL,
56 },
57 },
58};
59
60/*
61 * 'emif' class
62 * instance(s): emif
63 */
64static struct omap_hwmod_class_sysconfig am33xx_emif_sysc = {
65 .rev_offs = 0x0000,
66};
67
68static struct omap_hwmod_class am33xx_emif_hwmod_class = {
69 .name = "emif",
70 .sysc = &am33xx_emif_sysc,
71};
72
73static struct omap_hwmod_irq_info am33xx_emif_irqs[] = {
74 { .name = "ddrerr0", .irq = 101 + OMAP_INTC_START, },
75 { .irq = -1 },
76};
77
78/* emif */
79static struct omap_hwmod am33xx_emif_hwmod = {
80 .name = "emif",
81 .class = &am33xx_emif_hwmod_class,
82 .clkdm_name = "l3_clkdm",
83 .flags = (HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET),
84 .mpu_irqs = am33xx_emif_irqs,
85 .main_clk = "dpll_ddr_m2_div2_ck",
86 .prcm = {
87 .omap4 = {
88 .clkctrl_offs = AM33XX_CM_PER_EMIF_CLKCTRL_OFFSET,
89 .modulemode = MODULEMODE_SWCTRL,
90 },
91 },
92};
93
94/*
95 * 'l3' class
96 * instance(s): l3_main, l3_s, l3_instr
97 */
98static struct omap_hwmod_class am33xx_l3_hwmod_class = {
99 .name = "l3",
100};
101
102/* l3_main (l3_fast) */
103static struct omap_hwmod_irq_info am33xx_l3_main_irqs[] = {
104 { .name = "l3debug", .irq = 9 + OMAP_INTC_START, },
105 { .name = "l3appint", .irq = 10 + OMAP_INTC_START, },
106 { .irq = -1 },
107};
108
109static struct omap_hwmod am33xx_l3_main_hwmod = {
110 .name = "l3_main",
111 .class = &am33xx_l3_hwmod_class,
112 .clkdm_name = "l3_clkdm",
113 .flags = (HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET),
114 .mpu_irqs = am33xx_l3_main_irqs,
115 .main_clk = "l3_gclk",
116 .prcm = {
117 .omap4 = {
118 .clkctrl_offs = AM33XX_CM_PER_L3_CLKCTRL_OFFSET,
119 .modulemode = MODULEMODE_SWCTRL,
120 },
121 },
122};
123
124/* l3_s */
125static struct omap_hwmod am33xx_l3_s_hwmod = {
126 .name = "l3_s",
127 .class = &am33xx_l3_hwmod_class,
128 .clkdm_name = "l3s_clkdm",
129};
130
131/* l3_instr */
132static struct omap_hwmod am33xx_l3_instr_hwmod = {
133 .name = "l3_instr",
134 .class = &am33xx_l3_hwmod_class,
135 .clkdm_name = "l3_clkdm",
136 .flags = (HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET),
137 .main_clk = "l3_gclk",
138 .prcm = {
139 .omap4 = {
140 .clkctrl_offs = AM33XX_CM_PER_L3_INSTR_CLKCTRL_OFFSET,
141 .modulemode = MODULEMODE_SWCTRL,
142 },
143 },
144};
145
146/*
147 * 'l4' class
148 * instance(s): l4_ls, l4_hs, l4_wkup, l4_fw
149 */
150static struct omap_hwmod_class am33xx_l4_hwmod_class = {
151 .name = "l4",
152};
153
154/* l4_ls */
155static struct omap_hwmod am33xx_l4_ls_hwmod = {
156 .name = "l4_ls",
157 .class = &am33xx_l4_hwmod_class,
158 .clkdm_name = "l4ls_clkdm",
159 .flags = (HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET),
160 .main_clk = "l4ls_gclk",
161 .prcm = {
162 .omap4 = {
163 .clkctrl_offs = AM33XX_CM_PER_L4LS_CLKCTRL_OFFSET,
164 .modulemode = MODULEMODE_SWCTRL,
165 },
166 },
167};
168
169/* l4_hs */
170static struct omap_hwmod am33xx_l4_hs_hwmod = {
171 .name = "l4_hs",
172 .class = &am33xx_l4_hwmod_class,
173 .clkdm_name = "l4hs_clkdm",
174 .flags = (HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET),
175 .main_clk = "l4hs_gclk",
176 .prcm = {
177 .omap4 = {
178 .clkctrl_offs = AM33XX_CM_PER_L4HS_CLKCTRL_OFFSET,
179 .modulemode = MODULEMODE_SWCTRL,
180 },
181 },
182};
183
184
185/* l4_wkup */
186static struct omap_hwmod am33xx_l4_wkup_hwmod = {
187 .name = "l4_wkup",
188 .class = &am33xx_l4_hwmod_class,
189 .clkdm_name = "l4_wkup_clkdm",
190 .flags = (HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET),
191 .prcm = {
192 .omap4 = {
193 .clkctrl_offs = AM33XX_CM_WKUP_L4WKUP_CLKCTRL_OFFSET,
194 .modulemode = MODULEMODE_SWCTRL,
195 },
196 },
197};
198
199/* l4_fw */
200static struct omap_hwmod am33xx_l4_fw_hwmod = {
201 .name = "l4_fw",
202 .class = &am33xx_l4_hwmod_class,
203 .clkdm_name = "l4fw_clkdm",
204 .flags = (HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET),
205 .prcm = {
206 .omap4 = {
207 .clkctrl_offs = AM33XX_CM_PER_L4FW_CLKCTRL_OFFSET,
208 .modulemode = MODULEMODE_SWCTRL,
209 },
210 },
211};
212
213/*
214 * 'mpu' class
215 */
216static struct omap_hwmod_class am33xx_mpu_hwmod_class = {
217 .name = "mpu",
218};
219
220/* mpu */
221static struct omap_hwmod_irq_info am33xx_mpu_irqs[] = {
222 { .name = "emuint", .irq = 0 + OMAP_INTC_START, },
223 { .name = "commtx", .irq = 1 + OMAP_INTC_START, },
224 { .name = "commrx", .irq = 2 + OMAP_INTC_START, },
225 { .name = "bench", .irq = 3 + OMAP_INTC_START, },
226 { .irq = -1 },
227};
228
229static struct omap_hwmod am33xx_mpu_hwmod = {
230 .name = "mpu",
231 .class = &am33xx_mpu_hwmod_class,
232 .clkdm_name = "mpu_clkdm",
233 .flags = (HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET),
234 .mpu_irqs = am33xx_mpu_irqs,
235 .main_clk = "dpll_mpu_m2_ck",
236 .prcm = {
237 .omap4 = {
238 .clkctrl_offs = AM33XX_CM_MPU_MPU_CLKCTRL_OFFSET,
239 .modulemode = MODULEMODE_SWCTRL,
240 },
241 },
242};
243
244/*
245 * 'wakeup m3' class
246 * Wakeup controller sub-system under wakeup domain
247 */
248static struct omap_hwmod_class am33xx_wkup_m3_hwmod_class = {
249 .name = "wkup_m3",
250};
251
252static struct omap_hwmod_rst_info am33xx_wkup_m3_resets[] = {
253 { .name = "wkup_m3", .rst_shift = 3, .st_shift = 5 },
254};
255
256static struct omap_hwmod_irq_info am33xx_wkup_m3_irqs[] = {
257 { .name = "txev", .irq = 78 + OMAP_INTC_START, },
258 { .irq = -1 },
259};
260
261/* wkup_m3 */
262static struct omap_hwmod am33xx_wkup_m3_hwmod = {
263 .name = "wkup_m3",
264 .class = &am33xx_wkup_m3_hwmod_class,
265 .clkdm_name = "l4_wkup_aon_clkdm",
092bda62
HG
266 /* Keep hardreset asserted */
267 .flags = HWMOD_INIT_NO_RESET | HWMOD_NO_IDLEST,
a2cfc509
VH
268 .mpu_irqs = am33xx_wkup_m3_irqs,
269 .main_clk = "dpll_core_m4_div2_ck",
270 .prcm = {
271 .omap4 = {
272 .clkctrl_offs = AM33XX_CM_WKUP_WKUP_M3_CLKCTRL_OFFSET,
273 .rstctrl_offs = AM33XX_RM_WKUP_RSTCTRL_OFFSET,
3077fe69 274 .rstst_offs = AM33XX_RM_WKUP_RSTST_OFFSET,
a2cfc509
VH
275 .modulemode = MODULEMODE_SWCTRL,
276 },
277 },
278 .rst_lines = am33xx_wkup_m3_resets,
279 .rst_lines_cnt = ARRAY_SIZE(am33xx_wkup_m3_resets),
280};
281
282/*
283 * 'pru-icss' class
284 * Programmable Real-Time Unit and Industrial Communication Subsystem
285 */
286static struct omap_hwmod_class am33xx_pruss_hwmod_class = {
287 .name = "pruss",
288};
289
290static struct omap_hwmod_rst_info am33xx_pruss_resets[] = {
291 { .name = "pruss", .rst_shift = 1 },
292};
293
294static struct omap_hwmod_irq_info am33xx_pruss_irqs[] = {
295 { .name = "evtout0", .irq = 20 + OMAP_INTC_START, },
296 { .name = "evtout1", .irq = 21 + OMAP_INTC_START, },
297 { .name = "evtout2", .irq = 22 + OMAP_INTC_START, },
298 { .name = "evtout3", .irq = 23 + OMAP_INTC_START, },
299 { .name = "evtout4", .irq = 24 + OMAP_INTC_START, },
300 { .name = "evtout5", .irq = 25 + OMAP_INTC_START, },
301 { .name = "evtout6", .irq = 26 + OMAP_INTC_START, },
302 { .name = "evtout7", .irq = 27 + OMAP_INTC_START, },
303 { .irq = -1 },
304};
305
306/* pru-icss */
307/* Pseudo hwmod for reset control purpose only */
308static struct omap_hwmod am33xx_pruss_hwmod = {
309 .name = "pruss",
310 .class = &am33xx_pruss_hwmod_class,
311 .clkdm_name = "pruss_ocp_clkdm",
312 .mpu_irqs = am33xx_pruss_irqs,
313 .main_clk = "pruss_ocp_gclk",
314 .prcm = {
315 .omap4 = {
316 .clkctrl_offs = AM33XX_CM_PER_PRUSS_CLKCTRL_OFFSET,
317 .rstctrl_offs = AM33XX_RM_PER_RSTCTRL_OFFSET,
318 .modulemode = MODULEMODE_SWCTRL,
319 },
320 },
321 .rst_lines = am33xx_pruss_resets,
322 .rst_lines_cnt = ARRAY_SIZE(am33xx_pruss_resets),
323};
324
325/* gfx */
326/* Pseudo hwmod for reset control purpose only */
327static struct omap_hwmod_class am33xx_gfx_hwmod_class = {
328 .name = "gfx",
329};
330
331static struct omap_hwmod_rst_info am33xx_gfx_resets[] = {
332 { .name = "gfx", .rst_shift = 0 },
333};
334
335static struct omap_hwmod_irq_info am33xx_gfx_irqs[] = {
336 { .name = "gfxint", .irq = 37 + OMAP_INTC_START, },
337 { .irq = -1 },
338};
339
340static struct omap_hwmod am33xx_gfx_hwmod = {
341 .name = "gfx",
342 .class = &am33xx_gfx_hwmod_class,
343 .clkdm_name = "gfx_l3_clkdm",
344 .mpu_irqs = am33xx_gfx_irqs,
345 .main_clk = "gfx_fck_div_ck",
346 .prcm = {
347 .omap4 = {
348 .clkctrl_offs = AM33XX_CM_GFX_GFX_CLKCTRL_OFFSET,
349 .rstctrl_offs = AM33XX_RM_GFX_RSTCTRL_OFFSET,
350 .modulemode = MODULEMODE_SWCTRL,
351 },
352 },
353 .rst_lines = am33xx_gfx_resets,
354 .rst_lines_cnt = ARRAY_SIZE(am33xx_gfx_resets),
355};
356
357/*
358 * 'prcm' class
359 * power and reset manager (whole prcm infrastructure)
360 */
361static struct omap_hwmod_class am33xx_prcm_hwmod_class = {
362 .name = "prcm",
363};
364
365/* prcm */
366static struct omap_hwmod am33xx_prcm_hwmod = {
367 .name = "prcm",
368 .class = &am33xx_prcm_hwmod_class,
369 .clkdm_name = "l4_wkup_clkdm",
370};
371
372/*
373 * 'adc/tsc' class
374 * TouchScreen Controller (Anolog-To-Digital Converter)
375 */
376static struct omap_hwmod_class_sysconfig am33xx_adc_tsc_sysc = {
377 .rev_offs = 0x00,
378 .sysc_offs = 0x10,
379 .sysc_flags = SYSC_HAS_SIDLEMODE,
380 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
381 SIDLE_SMART_WKUP),
382 .sysc_fields = &omap_hwmod_sysc_type2,
383};
384
385static struct omap_hwmod_class am33xx_adc_tsc_hwmod_class = {
386 .name = "adc_tsc",
387 .sysc = &am33xx_adc_tsc_sysc,
388};
389
390static struct omap_hwmod_irq_info am33xx_adc_tsc_irqs[] = {
391 { .irq = 16 + OMAP_INTC_START, },
392 { .irq = -1 },
393};
394
395static struct omap_hwmod am33xx_adc_tsc_hwmod = {
396 .name = "adc_tsc",
397 .class = &am33xx_adc_tsc_hwmod_class,
398 .clkdm_name = "l4_wkup_clkdm",
399 .mpu_irqs = am33xx_adc_tsc_irqs,
400 .main_clk = "adc_tsc_fck",
401 .prcm = {
402 .omap4 = {
403 .clkctrl_offs = AM33XX_CM_WKUP_ADC_TSC_CLKCTRL_OFFSET,
404 .modulemode = MODULEMODE_SWCTRL,
405 },
406 },
407};
408
409/*
410 * Modules omap_hwmod structures
411 *
412 * The following IPs are excluded for the moment because:
413 * - They do not need an explicit SW control using omap_hwmod API.
414 * - They still need to be validated with the driver
415 * properly adapted to omap_hwmod / omap_device
416 *
417 * - cEFUSE (doesn't fall under any ocp_if)
418 * - clkdiv32k
419 * - debugss
a2cfc509
VH
420 * - ocp watch point
421 * - aes0
422 * - sha0
423 */
424#if 0
425/*
426 * 'cefuse' class
427 */
428static struct omap_hwmod_class am33xx_cefuse_hwmod_class = {
429 .name = "cefuse",
430};
431
432static struct omap_hwmod am33xx_cefuse_hwmod = {
433 .name = "cefuse",
434 .class = &am33xx_cefuse_hwmod_class,
435 .clkdm_name = "l4_cefuse_clkdm",
436 .main_clk = "cefuse_fck",
437 .prcm = {
438 .omap4 = {
439 .clkctrl_offs = AM33XX_CM_CEFUSE_CEFUSE_CLKCTRL_OFFSET,
440 .modulemode = MODULEMODE_SWCTRL,
441 },
442 },
443};
444
445/*
446 * 'clkdiv32k' class
447 */
448static struct omap_hwmod_class am33xx_clkdiv32k_hwmod_class = {
449 .name = "clkdiv32k",
450};
451
452static struct omap_hwmod am33xx_clkdiv32k_hwmod = {
453 .name = "clkdiv32k",
454 .class = &am33xx_clkdiv32k_hwmod_class,
455 .clkdm_name = "clk_24mhz_clkdm",
456 .main_clk = "clkdiv32k_ick",
457 .prcm = {
458 .omap4 = {
459 .clkctrl_offs = AM33XX_CM_PER_CLKDIV32K_CLKCTRL_OFFSET,
460 .modulemode = MODULEMODE_SWCTRL,
461 },
462 },
463};
464
465/*
466 * 'debugss' class
467 * debug sub system
468 */
469static struct omap_hwmod_class am33xx_debugss_hwmod_class = {
470 .name = "debugss",
471};
472
473static struct omap_hwmod am33xx_debugss_hwmod = {
474 .name = "debugss",
475 .class = &am33xx_debugss_hwmod_class,
476 .clkdm_name = "l3_aon_clkdm",
477 .main_clk = "debugss_ick",
478 .prcm = {
479 .omap4 = {
480 .clkctrl_offs = AM33XX_CM_WKUP_DEBUGSS_CLKCTRL_OFFSET,
481 .modulemode = MODULEMODE_SWCTRL,
482 },
483 },
484};
485
a2cfc509
VH
486/* ocpwp */
487static struct omap_hwmod_class am33xx_ocpwp_hwmod_class = {
488 .name = "ocpwp",
489};
490
491static struct omap_hwmod am33xx_ocpwp_hwmod = {
492 .name = "ocpwp",
493 .class = &am33xx_ocpwp_hwmod_class,
494 .clkdm_name = "l4ls_clkdm",
495 .main_clk = "l4ls_gclk",
496 .prcm = {
497 .omap4 = {
498 .clkctrl_offs = AM33XX_CM_PER_OCPWP_CLKCTRL_OFFSET,
499 .modulemode = MODULEMODE_SWCTRL,
500 },
501 },
502};
503
504/*
505 * 'aes' class
506 */
507static struct omap_hwmod_class am33xx_aes_hwmod_class = {
508 .name = "aes",
509};
510
511static struct omap_hwmod_irq_info am33xx_aes0_irqs[] = {
512 { .irq = 102 + OMAP_INTC_START, },
513 { .irq = -1 },
514};
515
516static struct omap_hwmod am33xx_aes0_hwmod = {
517 .name = "aes0",
518 .class = &am33xx_aes_hwmod_class,
519 .clkdm_name = "l3_clkdm",
520 .mpu_irqs = am33xx_aes0_irqs,
521 .main_clk = "l3_gclk",
522 .prcm = {
523 .omap4 = {
524 .clkctrl_offs = AM33XX_CM_PER_AES0_CLKCTRL_OFFSET,
525 .modulemode = MODULEMODE_SWCTRL,
526 },
527 },
528};
529
530/* sha0 */
531static struct omap_hwmod_class am33xx_sha0_hwmod_class = {
532 .name = "sha0",
533};
534
535static struct omap_hwmod_irq_info am33xx_sha0_irqs[] = {
536 { .irq = 108 + OMAP_INTC_START, },
537 { .irq = -1 },
538};
539
540static struct omap_hwmod am33xx_sha0_hwmod = {
541 .name = "sha0",
542 .class = &am33xx_sha0_hwmod_class,
543 .clkdm_name = "l3_clkdm",
544 .mpu_irqs = am33xx_sha0_irqs,
545 .main_clk = "l3_gclk",
546 .prcm = {
547 .omap4 = {
548 .clkctrl_offs = AM33XX_CM_PER_SHA0_CLKCTRL_OFFSET,
549 .modulemode = MODULEMODE_SWCTRL,
550 },
551 },
552};
553
554#endif
555
ca903b6f
VB
556/* ocmcram */
557static struct omap_hwmod_class am33xx_ocmcram_hwmod_class = {
558 .name = "ocmcram",
559};
560
561static struct omap_hwmod am33xx_ocmcram_hwmod = {
562 .name = "ocmcram",
563 .class = &am33xx_ocmcram_hwmod_class,
564 .clkdm_name = "l3_clkdm",
565 .flags = (HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET),
566 .main_clk = "l3_gclk",
567 .prcm = {
568 .omap4 = {
569 .clkctrl_offs = AM33XX_CM_PER_OCMCRAM_CLKCTRL_OFFSET,
570 .modulemode = MODULEMODE_SWCTRL,
571 },
572 },
573};
574
a2cfc509
VH
575/* 'smartreflex' class */
576static struct omap_hwmod_class am33xx_smartreflex_hwmod_class = {
577 .name = "smartreflex",
578};
579
580/* smartreflex0 */
581static struct omap_hwmod_irq_info am33xx_smartreflex0_irqs[] = {
582 { .irq = 120 + OMAP_INTC_START, },
583 { .irq = -1 },
584};
585
586static struct omap_hwmod am33xx_smartreflex0_hwmod = {
587 .name = "smartreflex0",
588 .class = &am33xx_smartreflex_hwmod_class,
589 .clkdm_name = "l4_wkup_clkdm",
590 .mpu_irqs = am33xx_smartreflex0_irqs,
591 .main_clk = "smartreflex0_fck",
592 .prcm = {
593 .omap4 = {
594 .clkctrl_offs = AM33XX_CM_WKUP_SMARTREFLEX0_CLKCTRL_OFFSET,
595 .modulemode = MODULEMODE_SWCTRL,
596 },
597 },
598};
599
600/* smartreflex1 */
601static struct omap_hwmod_irq_info am33xx_smartreflex1_irqs[] = {
602 { .irq = 121 + OMAP_INTC_START, },
603 { .irq = -1 },
604};
605
606static struct omap_hwmod am33xx_smartreflex1_hwmod = {
607 .name = "smartreflex1",
608 .class = &am33xx_smartreflex_hwmod_class,
609 .clkdm_name = "l4_wkup_clkdm",
610 .mpu_irqs = am33xx_smartreflex1_irqs,
611 .main_clk = "smartreflex1_fck",
612 .prcm = {
613 .omap4 = {
614 .clkctrl_offs = AM33XX_CM_WKUP_SMARTREFLEX1_CLKCTRL_OFFSET,
615 .modulemode = MODULEMODE_SWCTRL,
616 },
617 },
618};
619
620/*
621 * 'control' module class
622 */
623static struct omap_hwmod_class am33xx_control_hwmod_class = {
624 .name = "control",
625};
626
627static struct omap_hwmod_irq_info am33xx_control_irqs[] = {
628 { .irq = 8 + OMAP_INTC_START, },
629 { .irq = -1 },
630};
631
632static struct omap_hwmod am33xx_control_hwmod = {
633 .name = "control",
634 .class = &am33xx_control_hwmod_class,
635 .clkdm_name = "l4_wkup_clkdm",
636 .flags = (HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET),
637 .mpu_irqs = am33xx_control_irqs,
638 .main_clk = "dpll_core_m4_div2_ck",
639 .prcm = {
640 .omap4 = {
641 .clkctrl_offs = AM33XX_CM_WKUP_CONTROL_CLKCTRL_OFFSET,
642 .modulemode = MODULEMODE_SWCTRL,
643 },
644 },
645};
646
647/*
648 * 'cpgmac' class
649 * cpsw/cpgmac sub system
650 */
651static struct omap_hwmod_class_sysconfig am33xx_cpgmac_sysc = {
652 .rev_offs = 0x0,
653 .sysc_offs = 0x8,
654 .syss_offs = 0x4,
655 .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE |
656 SYSS_HAS_RESET_STATUS),
657 .idlemodes = (SIDLE_FORCE | SIDLE_NO | MSTANDBY_FORCE |
658 MSTANDBY_NO),
659 .sysc_fields = &omap_hwmod_sysc_type3,
660};
661
662static struct omap_hwmod_class am33xx_cpgmac0_hwmod_class = {
663 .name = "cpgmac0",
664 .sysc = &am33xx_cpgmac_sysc,
665};
666
667static struct omap_hwmod_irq_info am33xx_cpgmac0_irqs[] = {
668 { .name = "c0_rx_thresh_pend", .irq = 40 + OMAP_INTC_START, },
669 { .name = "c0_rx_pend", .irq = 41 + OMAP_INTC_START, },
670 { .name = "c0_tx_pend", .irq = 42 + OMAP_INTC_START, },
671 { .name = "c0_misc_pend", .irq = 43 + OMAP_INTC_START, },
672 { .irq = -1 },
673};
674
675static struct omap_hwmod am33xx_cpgmac0_hwmod = {
676 .name = "cpgmac0",
677 .class = &am33xx_cpgmac0_hwmod_class,
678 .clkdm_name = "cpsw_125mhz_clkdm",
70384a6a 679 .flags = (HWMOD_SWSUP_SIDLE | HWMOD_SWSUP_MSTANDBY),
a2cfc509
VH
680 .mpu_irqs = am33xx_cpgmac0_irqs,
681 .main_clk = "cpsw_125mhz_gclk",
682 .prcm = {
683 .omap4 = {
684 .clkctrl_offs = AM33XX_CM_PER_CPGMAC0_CLKCTRL_OFFSET,
685 .modulemode = MODULEMODE_SWCTRL,
686 },
687 },
688};
689
70384a6a
M
690/*
691 * mdio class
692 */
693static struct omap_hwmod_class am33xx_mdio_hwmod_class = {
694 .name = "davinci_mdio",
695};
696
697static struct omap_hwmod am33xx_mdio_hwmod = {
698 .name = "davinci_mdio",
699 .class = &am33xx_mdio_hwmod_class,
700 .clkdm_name = "cpsw_125mhz_clkdm",
701 .main_clk = "cpsw_125mhz_gclk",
702};
703
a2cfc509
VH
704/*
705 * dcan class
706 */
707static struct omap_hwmod_class am33xx_dcan_hwmod_class = {
708 .name = "d_can",
709};
710
711/* dcan0 */
712static struct omap_hwmod_irq_info am33xx_dcan0_irqs[] = {
713 { .name = "d_can_ms", .irq = 52 + OMAP_INTC_START, },
714 { .name = "d_can_mo", .irq = 53 + OMAP_INTC_START, },
715 { .irq = -1 },
716};
717
718static struct omap_hwmod am33xx_dcan0_hwmod = {
719 .name = "d_can0",
720 .class = &am33xx_dcan_hwmod_class,
721 .clkdm_name = "l4ls_clkdm",
722 .mpu_irqs = am33xx_dcan0_irqs,
723 .main_clk = "dcan0_fck",
724 .prcm = {
725 .omap4 = {
726 .clkctrl_offs = AM33XX_CM_PER_DCAN0_CLKCTRL_OFFSET,
727 .modulemode = MODULEMODE_SWCTRL,
728 },
729 },
730};
731
732/* dcan1 */
733static struct omap_hwmod_irq_info am33xx_dcan1_irqs[] = {
734 { .name = "d_can_ms", .irq = 55 + OMAP_INTC_START, },
735 { .name = "d_can_mo", .irq = 56 + OMAP_INTC_START, },
736 { .irq = -1 },
737};
738static struct omap_hwmod am33xx_dcan1_hwmod = {
739 .name = "d_can1",
740 .class = &am33xx_dcan_hwmod_class,
741 .clkdm_name = "l4ls_clkdm",
742 .mpu_irqs = am33xx_dcan1_irqs,
743 .main_clk = "dcan1_fck",
744 .prcm = {
745 .omap4 = {
746 .clkctrl_offs = AM33XX_CM_PER_DCAN1_CLKCTRL_OFFSET,
747 .modulemode = MODULEMODE_SWCTRL,
748 },
749 },
750};
751
752/* elm */
753static struct omap_hwmod_class_sysconfig am33xx_elm_sysc = {
754 .rev_offs = 0x0000,
755 .sysc_offs = 0x0010,
756 .syss_offs = 0x0014,
757 .sysc_flags = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
758 SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE |
759 SYSS_HAS_RESET_STATUS),
760 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
761 .sysc_fields = &omap_hwmod_sysc_type1,
762};
763
764static struct omap_hwmod_class am33xx_elm_hwmod_class = {
765 .name = "elm",
766 .sysc = &am33xx_elm_sysc,
767};
768
769static struct omap_hwmod_irq_info am33xx_elm_irqs[] = {
770 { .irq = 4 + OMAP_INTC_START, },
771 { .irq = -1 },
772};
773
774static struct omap_hwmod am33xx_elm_hwmod = {
775 .name = "elm",
776 .class = &am33xx_elm_hwmod_class,
777 .clkdm_name = "l4ls_clkdm",
778 .mpu_irqs = am33xx_elm_irqs,
779 .main_clk = "l4ls_gclk",
780 .prcm = {
781 .omap4 = {
782 .clkctrl_offs = AM33XX_CM_PER_ELM_CLKCTRL_OFFSET,
783 .modulemode = MODULEMODE_SWCTRL,
784 },
785 },
786};
787
9652d19a 788/* pwmss */
a2cfc509
VH
789static struct omap_hwmod_class_sysconfig am33xx_epwmss_sysc = {
790 .rev_offs = 0x0,
791 .sysc_offs = 0x4,
792 .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE),
793 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
794 SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
795 MSTANDBY_SMART | MSTANDBY_SMART_WKUP),
796 .sysc_fields = &omap_hwmod_sysc_type2,
797};
798
799static struct omap_hwmod_class am33xx_epwmss_hwmod_class = {
800 .name = "epwmss",
801 .sysc = &am33xx_epwmss_sysc,
802};
803
9652d19a
PA
804static struct omap_hwmod_class am33xx_ecap_hwmod_class = {
805 .name = "ecap",
a2cfc509
VH
806};
807
9652d19a
PA
808static struct omap_hwmod_class am33xx_eqep_hwmod_class = {
809 .name = "eqep",
a2cfc509
VH
810};
811
9652d19a
PA
812static struct omap_hwmod_class am33xx_ehrpwm_hwmod_class = {
813 .name = "ehrpwm",
a2cfc509
VH
814};
815
9652d19a
PA
816/* epwmss0 */
817static struct omap_hwmod am33xx_epwmss0_hwmod = {
818 .name = "epwmss0",
a2cfc509
VH
819 .class = &am33xx_epwmss_hwmod_class,
820 .clkdm_name = "l4ls_clkdm",
a2cfc509
VH
821 .main_clk = "l4ls_gclk",
822 .prcm = {
823 .omap4 = {
9652d19a 824 .clkctrl_offs = AM33XX_CM_PER_EPWMSS0_CLKCTRL_OFFSET,
a2cfc509
VH
825 .modulemode = MODULEMODE_SWCTRL,
826 },
827 },
828};
829
9652d19a
PA
830/* ecap0 */
831static struct omap_hwmod_irq_info am33xx_ecap0_irqs[] = {
832 { .irq = 31 + OMAP_INTC_START, },
a2cfc509
VH
833 { .irq = -1 },
834};
835
9652d19a
PA
836static struct omap_hwmod am33xx_ecap0_hwmod = {
837 .name = "ecap0",
838 .class = &am33xx_ecap_hwmod_class,
a2cfc509 839 .clkdm_name = "l4ls_clkdm",
9652d19a 840 .mpu_irqs = am33xx_ecap0_irqs,
a2cfc509 841 .main_clk = "l4ls_gclk",
a2cfc509
VH
842};
843
bee76659
PA
844/* eqep0 */
845static struct omap_hwmod_irq_info am33xx_eqep0_irqs[] = {
846 { .irq = 79 + OMAP_INTC_START, },
847 { .irq = -1 },
848};
849
850static struct omap_hwmod am33xx_eqep0_hwmod = {
851 .name = "eqep0",
9652d19a 852 .class = &am33xx_eqep_hwmod_class,
bee76659
PA
853 .clkdm_name = "l4ls_clkdm",
854 .mpu_irqs = am33xx_eqep0_irqs,
855 .main_clk = "l4ls_gclk",
bee76659
PA
856};
857
9652d19a
PA
858/* ehrpwm0 */
859static struct omap_hwmod_irq_info am33xx_ehrpwm0_irqs[] = {
860 { .name = "int", .irq = 86 + OMAP_INTC_START, },
861 { .name = "tzint", .irq = 58 + OMAP_INTC_START, },
bee76659
PA
862 { .irq = -1 },
863};
864
9652d19a
PA
865static struct omap_hwmod am33xx_ehrpwm0_hwmod = {
866 .name = "ehrpwm0",
867 .class = &am33xx_ehrpwm_hwmod_class,
868 .clkdm_name = "l4ls_clkdm",
869 .mpu_irqs = am33xx_ehrpwm0_irqs,
870 .main_clk = "l4ls_gclk",
871};
872
873/* epwmss1 */
874static struct omap_hwmod am33xx_epwmss1_hwmod = {
875 .name = "epwmss1",
bee76659
PA
876 .class = &am33xx_epwmss_hwmod_class,
877 .clkdm_name = "l4ls_clkdm",
bee76659
PA
878 .main_clk = "l4ls_gclk",
879 .prcm = {
880 .omap4 = {
881 .clkctrl_offs = AM33XX_CM_PER_EPWMSS1_CLKCTRL_OFFSET,
882 .modulemode = MODULEMODE_SWCTRL,
883 },
884 },
885};
886
9652d19a
PA
887/* ecap1 */
888static struct omap_hwmod_irq_info am33xx_ecap1_irqs[] = {
889 { .irq = 47 + OMAP_INTC_START, },
bee76659
PA
890 { .irq = -1 },
891};
892
9652d19a
PA
893static struct omap_hwmod am33xx_ecap1_hwmod = {
894 .name = "ecap1",
895 .class = &am33xx_ecap_hwmod_class,
bee76659 896 .clkdm_name = "l4ls_clkdm",
9652d19a 897 .mpu_irqs = am33xx_ecap1_irqs,
bee76659 898 .main_clk = "l4ls_gclk",
bee76659
PA
899};
900
9652d19a
PA
901/* eqep1 */
902static struct omap_hwmod_irq_info am33xx_eqep1_irqs[] = {
903 { .irq = 88 + OMAP_INTC_START, },
a2cfc509
VH
904 { .irq = -1 },
905};
906
9652d19a
PA
907static struct omap_hwmod am33xx_eqep1_hwmod = {
908 .name = "eqep1",
909 .class = &am33xx_eqep_hwmod_class,
a2cfc509 910 .clkdm_name = "l4ls_clkdm",
9652d19a 911 .mpu_irqs = am33xx_eqep1_irqs,
a2cfc509 912 .main_clk = "l4ls_gclk",
a2cfc509
VH
913};
914
9652d19a
PA
915/* ehrpwm1 */
916static struct omap_hwmod_irq_info am33xx_ehrpwm1_irqs[] = {
917 { .name = "int", .irq = 87 + OMAP_INTC_START, },
918 { .name = "tzint", .irq = 59 + OMAP_INTC_START, },
a2cfc509
VH
919 { .irq = -1 },
920};
921
9652d19a
PA
922static struct omap_hwmod am33xx_ehrpwm1_hwmod = {
923 .name = "ehrpwm1",
924 .class = &am33xx_ehrpwm_hwmod_class,
925 .clkdm_name = "l4ls_clkdm",
926 .mpu_irqs = am33xx_ehrpwm1_irqs,
927 .main_clk = "l4ls_gclk",
928};
929
930/* epwmss2 */
931static struct omap_hwmod am33xx_epwmss2_hwmod = {
932 .name = "epwmss2",
a2cfc509
VH
933 .class = &am33xx_epwmss_hwmod_class,
934 .clkdm_name = "l4ls_clkdm",
a2cfc509
VH
935 .main_clk = "l4ls_gclk",
936 .prcm = {
937 .omap4 = {
9652d19a 938 .clkctrl_offs = AM33XX_CM_PER_EPWMSS2_CLKCTRL_OFFSET,
a2cfc509
VH
939 .modulemode = MODULEMODE_SWCTRL,
940 },
941 },
942};
943
944/* ecap2 */
945static struct omap_hwmod_irq_info am33xx_ecap2_irqs[] = {
946 { .irq = 61 + OMAP_INTC_START, },
947 { .irq = -1 },
948};
949
950static struct omap_hwmod am33xx_ecap2_hwmod = {
951 .name = "ecap2",
9652d19a
PA
952 .class = &am33xx_ecap_hwmod_class,
953 .clkdm_name = "l4ls_clkdm",
a2cfc509 954 .mpu_irqs = am33xx_ecap2_irqs,
9652d19a
PA
955 .main_clk = "l4ls_gclk",
956};
957
958/* eqep2 */
959static struct omap_hwmod_irq_info am33xx_eqep2_irqs[] = {
960 { .irq = 89 + OMAP_INTC_START, },
961 { .irq = -1 },
962};
963
964static struct omap_hwmod am33xx_eqep2_hwmod = {
965 .name = "eqep2",
966 .class = &am33xx_eqep_hwmod_class,
a2cfc509 967 .clkdm_name = "l4ls_clkdm",
9652d19a
PA
968 .mpu_irqs = am33xx_eqep2_irqs,
969 .main_clk = "l4ls_gclk",
970};
971
972/* ehrpwm2 */
973static struct omap_hwmod_irq_info am33xx_ehrpwm2_irqs[] = {
974 { .name = "int", .irq = 39 + OMAP_INTC_START, },
975 { .name = "tzint", .irq = 60 + OMAP_INTC_START, },
976 { .irq = -1 },
977};
978
979static struct omap_hwmod am33xx_ehrpwm2_hwmod = {
980 .name = "ehrpwm2",
981 .class = &am33xx_ehrpwm_hwmod_class,
982 .clkdm_name = "l4ls_clkdm",
983 .mpu_irqs = am33xx_ehrpwm2_irqs,
a2cfc509 984 .main_clk = "l4ls_gclk",
a2cfc509
VH
985};
986
987/*
988 * 'gpio' class: for gpio 0,1,2,3
989 */
990static struct omap_hwmod_class_sysconfig am33xx_gpio_sysc = {
991 .rev_offs = 0x0000,
992 .sysc_offs = 0x0010,
993 .syss_offs = 0x0114,
994 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_ENAWAKEUP |
995 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
996 SYSS_HAS_RESET_STATUS),
997 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
998 SIDLE_SMART_WKUP),
999 .sysc_fields = &omap_hwmod_sysc_type1,
1000};
1001
1002static struct omap_hwmod_class am33xx_gpio_hwmod_class = {
1003 .name = "gpio",
1004 .sysc = &am33xx_gpio_sysc,
1005 .rev = 2,
1006};
1007
1008static struct omap_gpio_dev_attr gpio_dev_attr = {
1009 .bank_width = 32,
1010 .dbck_flag = true,
1011};
1012
1013/* gpio0 */
1014static struct omap_hwmod_opt_clk gpio0_opt_clks[] = {
1015 { .role = "dbclk", .clk = "gpio0_dbclk" },
1016};
1017
1018static struct omap_hwmod_irq_info am33xx_gpio0_irqs[] = {
1019 { .irq = 96 + OMAP_INTC_START, },
1020 { .irq = -1 },
1021};
1022
1023static struct omap_hwmod am33xx_gpio0_hwmod = {
1024 .name = "gpio1",
1025 .class = &am33xx_gpio_hwmod_class,
1026 .clkdm_name = "l4_wkup_clkdm",
1027 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
1028 .mpu_irqs = am33xx_gpio0_irqs,
1029 .main_clk = "dpll_core_m4_div2_ck",
1030 .prcm = {
1031 .omap4 = {
1032 .clkctrl_offs = AM33XX_CM_WKUP_GPIO0_CLKCTRL_OFFSET,
1033 .modulemode = MODULEMODE_SWCTRL,
1034 },
1035 },
1036 .opt_clks = gpio0_opt_clks,
1037 .opt_clks_cnt = ARRAY_SIZE(gpio0_opt_clks),
1038 .dev_attr = &gpio_dev_attr,
1039};
1040
1041/* gpio1 */
1042static struct omap_hwmod_irq_info am33xx_gpio1_irqs[] = {
1043 { .irq = 98 + OMAP_INTC_START, },
1044 { .irq = -1 },
1045};
1046
1047static struct omap_hwmod_opt_clk gpio1_opt_clks[] = {
1048 { .role = "dbclk", .clk = "gpio1_dbclk" },
1049};
1050
1051static struct omap_hwmod am33xx_gpio1_hwmod = {
1052 .name = "gpio2",
1053 .class = &am33xx_gpio_hwmod_class,
1054 .clkdm_name = "l4ls_clkdm",
1055 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
1056 .mpu_irqs = am33xx_gpio1_irqs,
1057 .main_clk = "l4ls_gclk",
1058 .prcm = {
1059 .omap4 = {
1060 .clkctrl_offs = AM33XX_CM_PER_GPIO1_CLKCTRL_OFFSET,
1061 .modulemode = MODULEMODE_SWCTRL,
1062 },
1063 },
1064 .opt_clks = gpio1_opt_clks,
1065 .opt_clks_cnt = ARRAY_SIZE(gpio1_opt_clks),
1066 .dev_attr = &gpio_dev_attr,
1067};
1068
1069/* gpio2 */
1070static struct omap_hwmod_irq_info am33xx_gpio2_irqs[] = {
1071 { .irq = 32 + OMAP_INTC_START, },
1072 { .irq = -1 },
1073};
1074
1075static struct omap_hwmod_opt_clk gpio2_opt_clks[] = {
1076 { .role = "dbclk", .clk = "gpio2_dbclk" },
1077};
1078
1079static struct omap_hwmod am33xx_gpio2_hwmod = {
1080 .name = "gpio3",
1081 .class = &am33xx_gpio_hwmod_class,
1082 .clkdm_name = "l4ls_clkdm",
1083 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
1084 .mpu_irqs = am33xx_gpio2_irqs,
1085 .main_clk = "l4ls_gclk",
1086 .prcm = {
1087 .omap4 = {
1088 .clkctrl_offs = AM33XX_CM_PER_GPIO2_CLKCTRL_OFFSET,
1089 .modulemode = MODULEMODE_SWCTRL,
1090 },
1091 },
1092 .opt_clks = gpio2_opt_clks,
1093 .opt_clks_cnt = ARRAY_SIZE(gpio2_opt_clks),
1094 .dev_attr = &gpio_dev_attr,
1095};
1096
1097/* gpio3 */
1098static struct omap_hwmod_irq_info am33xx_gpio3_irqs[] = {
1099 { .irq = 62 + OMAP_INTC_START, },
1100 { .irq = -1 },
1101};
1102
1103static struct omap_hwmod_opt_clk gpio3_opt_clks[] = {
1104 { .role = "dbclk", .clk = "gpio3_dbclk" },
1105};
1106
1107static struct omap_hwmod am33xx_gpio3_hwmod = {
1108 .name = "gpio4",
1109 .class = &am33xx_gpio_hwmod_class,
1110 .clkdm_name = "l4ls_clkdm",
1111 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
1112 .mpu_irqs = am33xx_gpio3_irqs,
1113 .main_clk = "l4ls_gclk",
1114 .prcm = {
1115 .omap4 = {
1116 .clkctrl_offs = AM33XX_CM_PER_GPIO3_CLKCTRL_OFFSET,
1117 .modulemode = MODULEMODE_SWCTRL,
1118 },
1119 },
1120 .opt_clks = gpio3_opt_clks,
1121 .opt_clks_cnt = ARRAY_SIZE(gpio3_opt_clks),
1122 .dev_attr = &gpio_dev_attr,
1123};
1124
1125/* gpmc */
1126static struct omap_hwmod_class_sysconfig gpmc_sysc = {
1127 .rev_offs = 0x0,
1128 .sysc_offs = 0x10,
1129 .syss_offs = 0x14,
1130 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_SIDLEMODE |
1131 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
1132 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
1133 .sysc_fields = &omap_hwmod_sysc_type1,
1134};
1135
1136static struct omap_hwmod_class am33xx_gpmc_hwmod_class = {
1137 .name = "gpmc",
1138 .sysc = &gpmc_sysc,
1139};
1140
1141static struct omap_hwmod_irq_info am33xx_gpmc_irqs[] = {
1142 { .irq = 100 + OMAP_INTC_START, },
1143 { .irq = -1 },
1144};
1145
1146static struct omap_hwmod am33xx_gpmc_hwmod = {
1147 .name = "gpmc",
1148 .class = &am33xx_gpmc_hwmod_class,
1149 .clkdm_name = "l3s_clkdm",
1150 .flags = (HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET),
1151 .mpu_irqs = am33xx_gpmc_irqs,
1152 .main_clk = "l3s_gclk",
1153 .prcm = {
1154 .omap4 = {
1155 .clkctrl_offs = AM33XX_CM_PER_GPMC_CLKCTRL_OFFSET,
1156 .modulemode = MODULEMODE_SWCTRL,
1157 },
1158 },
1159};
1160
1161/* 'i2c' class */
1162static struct omap_hwmod_class_sysconfig am33xx_i2c_sysc = {
1163 .sysc_offs = 0x0010,
1164 .syss_offs = 0x0090,
1165 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
1166 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE |
1167 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
1168 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1169 SIDLE_SMART_WKUP),
1170 .sysc_fields = &omap_hwmod_sysc_type1,
1171};
1172
1173static struct omap_hwmod_class i2c_class = {
1174 .name = "i2c",
1175 .sysc = &am33xx_i2c_sysc,
1176 .rev = OMAP_I2C_IP_VERSION_2,
1177 .reset = &omap_i2c_reset,
1178};
1179
1180static struct omap_i2c_dev_attr i2c_dev_attr = {
972deb4f 1181 .flags = OMAP_I2C_FLAG_BUS_SHIFT_NONE,
a2cfc509
VH
1182};
1183
1184/* i2c1 */
1185static struct omap_hwmod_irq_info i2c1_mpu_irqs[] = {
1186 { .irq = 70 + OMAP_INTC_START, },
1187 { .irq = -1 },
1188};
1189
1190static struct omap_hwmod_dma_info i2c1_edma_reqs[] = {
1191 { .name = "tx", .dma_req = 0, },
1192 { .name = "rx", .dma_req = 0, },
1193 { .dma_req = -1 }
1194};
1195
1196static struct omap_hwmod am33xx_i2c1_hwmod = {
1197 .name = "i2c1",
1198 .class = &i2c_class,
1199 .clkdm_name = "l4_wkup_clkdm",
1200 .mpu_irqs = i2c1_mpu_irqs,
1201 .sdma_reqs = i2c1_edma_reqs,
1202 .flags = HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT,
1203 .main_clk = "dpll_per_m2_div4_wkupdm_ck",
1204 .prcm = {
1205 .omap4 = {
1206 .clkctrl_offs = AM33XX_CM_WKUP_I2C0_CLKCTRL_OFFSET,
1207 .modulemode = MODULEMODE_SWCTRL,
1208 },
1209 },
1210 .dev_attr = &i2c_dev_attr,
1211};
1212
1213/* i2c1 */
1214static struct omap_hwmod_irq_info i2c2_mpu_irqs[] = {
1215 { .irq = 71 + OMAP_INTC_START, },
1216 { .irq = -1 },
1217};
1218
1219static struct omap_hwmod_dma_info i2c2_edma_reqs[] = {
1220 { .name = "tx", .dma_req = 0, },
1221 { .name = "rx", .dma_req = 0, },
1222 { .dma_req = -1 }
1223};
1224
1225static struct omap_hwmod am33xx_i2c2_hwmod = {
1226 .name = "i2c2",
1227 .class = &i2c_class,
1228 .clkdm_name = "l4ls_clkdm",
1229 .mpu_irqs = i2c2_mpu_irqs,
1230 .sdma_reqs = i2c2_edma_reqs,
1231 .flags = HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT,
1232 .main_clk = "dpll_per_m2_div4_ck",
1233 .prcm = {
1234 .omap4 = {
1235 .clkctrl_offs = AM33XX_CM_PER_I2C1_CLKCTRL_OFFSET,
1236 .modulemode = MODULEMODE_SWCTRL,
1237 },
1238 },
1239 .dev_attr = &i2c_dev_attr,
1240};
1241
1242/* i2c3 */
1243static struct omap_hwmod_dma_info i2c3_edma_reqs[] = {
1244 { .name = "tx", .dma_req = 0, },
1245 { .name = "rx", .dma_req = 0, },
1246 { .dma_req = -1 }
1247};
1248
1249static struct omap_hwmod_irq_info i2c3_mpu_irqs[] = {
1250 { .irq = 30 + OMAP_INTC_START, },
1251 { .irq = -1 },
1252};
1253
1254static struct omap_hwmod am33xx_i2c3_hwmod = {
1255 .name = "i2c3",
1256 .class = &i2c_class,
1257 .clkdm_name = "l4ls_clkdm",
1258 .mpu_irqs = i2c3_mpu_irqs,
1259 .sdma_reqs = i2c3_edma_reqs,
1260 .flags = HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT,
1261 .main_clk = "dpll_per_m2_div4_ck",
1262 .prcm = {
1263 .omap4 = {
1264 .clkctrl_offs = AM33XX_CM_PER_I2C2_CLKCTRL_OFFSET,
1265 .modulemode = MODULEMODE_SWCTRL,
1266 },
1267 },
1268 .dev_attr = &i2c_dev_attr,
1269};
1270
1271
1272/* lcdc */
1273static struct omap_hwmod_class_sysconfig lcdc_sysc = {
1274 .rev_offs = 0x0,
1275 .sysc_offs = 0x54,
1276 .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE),
1277 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
1278 .sysc_fields = &omap_hwmod_sysc_type2,
1279};
1280
1281static struct omap_hwmod_class am33xx_lcdc_hwmod_class = {
1282 .name = "lcdc",
1283 .sysc = &lcdc_sysc,
1284};
1285
1286static struct omap_hwmod_irq_info am33xx_lcdc_irqs[] = {
1287 { .irq = 36 + OMAP_INTC_START, },
1288 { .irq = -1 },
1289};
1290
1291static struct omap_hwmod am33xx_lcdc_hwmod = {
1292 .name = "lcdc",
1293 .class = &am33xx_lcdc_hwmod_class,
1294 .clkdm_name = "lcdc_clkdm",
1295 .mpu_irqs = am33xx_lcdc_irqs,
1296 .flags = HWMOD_SWSUP_SIDLE | HWMOD_SWSUP_MSTANDBY,
1297 .main_clk = "lcd_gclk",
1298 .prcm = {
1299 .omap4 = {
1300 .clkctrl_offs = AM33XX_CM_PER_LCDC_CLKCTRL_OFFSET,
1301 .modulemode = MODULEMODE_SWCTRL,
1302 },
1303 },
1304};
1305
1306/*
1307 * 'mailbox' class
1308 * mailbox module allowing communication between the on-chip processors using a
1309 * queued mailbox-interrupt mechanism.
1310 */
1311static struct omap_hwmod_class_sysconfig am33xx_mailbox_sysc = {
1312 .rev_offs = 0x0000,
1313 .sysc_offs = 0x0010,
1314 .sysc_flags = (SYSC_HAS_RESET_STATUS | SYSC_HAS_SIDLEMODE |
1315 SYSC_HAS_SOFTRESET),
1316 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
1317 .sysc_fields = &omap_hwmod_sysc_type2,
1318};
1319
1320static struct omap_hwmod_class am33xx_mailbox_hwmod_class = {
1321 .name = "mailbox",
1322 .sysc = &am33xx_mailbox_sysc,
1323};
1324
1325static struct omap_hwmod_irq_info am33xx_mailbox_irqs[] = {
1326 { .irq = 77 + OMAP_INTC_START, },
1327 { .irq = -1 },
1328};
1329
1330static struct omap_hwmod am33xx_mailbox_hwmod = {
1331 .name = "mailbox",
1332 .class = &am33xx_mailbox_hwmod_class,
1333 .clkdm_name = "l4ls_clkdm",
1334 .mpu_irqs = am33xx_mailbox_irqs,
1335 .main_clk = "l4ls_gclk",
1336 .prcm = {
1337 .omap4 = {
1338 .clkctrl_offs = AM33XX_CM_PER_MAILBOX0_CLKCTRL_OFFSET,
1339 .modulemode = MODULEMODE_SWCTRL,
1340 },
1341 },
1342};
1343
1344/*
1345 * 'mcasp' class
1346 */
1347static struct omap_hwmod_class_sysconfig am33xx_mcasp_sysc = {
1348 .rev_offs = 0x0,
1349 .sysc_offs = 0x4,
1350 .sysc_flags = SYSC_HAS_SIDLEMODE,
1351 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
1352 .sysc_fields = &omap_hwmod_sysc_type3,
1353};
1354
1355static struct omap_hwmod_class am33xx_mcasp_hwmod_class = {
1356 .name = "mcasp",
1357 .sysc = &am33xx_mcasp_sysc,
1358};
1359
1360/* mcasp0 */
1361static struct omap_hwmod_irq_info am33xx_mcasp0_irqs[] = {
1362 { .name = "ax", .irq = 80 + OMAP_INTC_START, },
1363 { .name = "ar", .irq = 81 + OMAP_INTC_START, },
1364 { .irq = -1 },
1365};
1366
1367static struct omap_hwmod_dma_info am33xx_mcasp0_edma_reqs[] = {
1368 { .name = "tx", .dma_req = 8, },
1369 { .name = "rx", .dma_req = 9, },
1370 { .dma_req = -1 }
1371};
1372
1373static struct omap_hwmod am33xx_mcasp0_hwmod = {
1374 .name = "mcasp0",
1375 .class = &am33xx_mcasp_hwmod_class,
1376 .clkdm_name = "l3s_clkdm",
1377 .mpu_irqs = am33xx_mcasp0_irqs,
1378 .sdma_reqs = am33xx_mcasp0_edma_reqs,
1379 .main_clk = "mcasp0_fck",
1380 .prcm = {
1381 .omap4 = {
1382 .clkctrl_offs = AM33XX_CM_PER_MCASP0_CLKCTRL_OFFSET,
1383 .modulemode = MODULEMODE_SWCTRL,
1384 },
1385 },
1386};
1387
1388/* mcasp1 */
1389static struct omap_hwmod_irq_info am33xx_mcasp1_irqs[] = {
1390 { .name = "ax", .irq = 82 + OMAP_INTC_START, },
1391 { .name = "ar", .irq = 83 + OMAP_INTC_START, },
1392 { .irq = -1 },
1393};
1394
1395static struct omap_hwmod_dma_info am33xx_mcasp1_edma_reqs[] = {
1396 { .name = "tx", .dma_req = 10, },
1397 { .name = "rx", .dma_req = 11, },
1398 { .dma_req = -1 }
1399};
1400
1401static struct omap_hwmod am33xx_mcasp1_hwmod = {
1402 .name = "mcasp1",
1403 .class = &am33xx_mcasp_hwmod_class,
1404 .clkdm_name = "l3s_clkdm",
1405 .mpu_irqs = am33xx_mcasp1_irqs,
1406 .sdma_reqs = am33xx_mcasp1_edma_reqs,
1407 .main_clk = "mcasp1_fck",
1408 .prcm = {
1409 .omap4 = {
1410 .clkctrl_offs = AM33XX_CM_PER_MCASP1_CLKCTRL_OFFSET,
1411 .modulemode = MODULEMODE_SWCTRL,
1412 },
1413 },
1414};
1415
1416/* 'mmc' class */
1417static struct omap_hwmod_class_sysconfig am33xx_mmc_sysc = {
1418 .rev_offs = 0x1fc,
1419 .sysc_offs = 0x10,
1420 .syss_offs = 0x14,
1421 .sysc_flags = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
1422 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
1423 SYSC_HAS_AUTOIDLE | SYSS_HAS_RESET_STATUS),
1424 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
1425 .sysc_fields = &omap_hwmod_sysc_type1,
1426};
1427
1428static struct omap_hwmod_class am33xx_mmc_hwmod_class = {
1429 .name = "mmc",
1430 .sysc = &am33xx_mmc_sysc,
1431};
1432
1433/* mmc0 */
1434static struct omap_hwmod_irq_info am33xx_mmc0_irqs[] = {
1435 { .irq = 64 + OMAP_INTC_START, },
1436 { .irq = -1 },
1437};
1438
1439static struct omap_hwmod_dma_info am33xx_mmc0_edma_reqs[] = {
1440 { .name = "tx", .dma_req = 24, },
1441 { .name = "rx", .dma_req = 25, },
1442 { .dma_req = -1 }
1443};
1444
1445static struct omap_mmc_dev_attr am33xx_mmc0_dev_attr = {
1446 .flags = OMAP_HSMMC_SUPPORTS_DUAL_VOLT,
1447};
1448
1449static struct omap_hwmod am33xx_mmc0_hwmod = {
1450 .name = "mmc1",
1451 .class = &am33xx_mmc_hwmod_class,
1452 .clkdm_name = "l4ls_clkdm",
1453 .mpu_irqs = am33xx_mmc0_irqs,
1454 .sdma_reqs = am33xx_mmc0_edma_reqs,
1455 .main_clk = "mmc_clk",
1456 .prcm = {
1457 .omap4 = {
1458 .clkctrl_offs = AM33XX_CM_PER_MMC0_CLKCTRL_OFFSET,
1459 .modulemode = MODULEMODE_SWCTRL,
1460 },
1461 },
1462 .dev_attr = &am33xx_mmc0_dev_attr,
1463};
1464
1465/* mmc1 */
1466static struct omap_hwmod_irq_info am33xx_mmc1_irqs[] = {
1467 { .irq = 28 + OMAP_INTC_START, },
1468 { .irq = -1 },
1469};
1470
1471static struct omap_hwmod_dma_info am33xx_mmc1_edma_reqs[] = {
1472 { .name = "tx", .dma_req = 2, },
1473 { .name = "rx", .dma_req = 3, },
1474 { .dma_req = -1 }
1475};
1476
1477static struct omap_mmc_dev_attr am33xx_mmc1_dev_attr = {
1478 .flags = OMAP_HSMMC_SUPPORTS_DUAL_VOLT,
1479};
1480
1481static struct omap_hwmod am33xx_mmc1_hwmod = {
1482 .name = "mmc2",
1483 .class = &am33xx_mmc_hwmod_class,
1484 .clkdm_name = "l4ls_clkdm",
1485 .mpu_irqs = am33xx_mmc1_irqs,
1486 .sdma_reqs = am33xx_mmc1_edma_reqs,
1487 .main_clk = "mmc_clk",
1488 .prcm = {
1489 .omap4 = {
1490 .clkctrl_offs = AM33XX_CM_PER_MMC1_CLKCTRL_OFFSET,
1491 .modulemode = MODULEMODE_SWCTRL,
1492 },
1493 },
1494 .dev_attr = &am33xx_mmc1_dev_attr,
1495};
1496
1497/* mmc2 */
1498static struct omap_hwmod_irq_info am33xx_mmc2_irqs[] = {
1499 { .irq = 29 + OMAP_INTC_START, },
1500 { .irq = -1 },
1501};
1502
1503static struct omap_hwmod_dma_info am33xx_mmc2_edma_reqs[] = {
1504 { .name = "tx", .dma_req = 64, },
1505 { .name = "rx", .dma_req = 65, },
1506 { .dma_req = -1 }
1507};
1508
1509static struct omap_mmc_dev_attr am33xx_mmc2_dev_attr = {
1510 .flags = OMAP_HSMMC_SUPPORTS_DUAL_VOLT,
1511};
1512static struct omap_hwmod am33xx_mmc2_hwmod = {
1513 .name = "mmc3",
1514 .class = &am33xx_mmc_hwmod_class,
1515 .clkdm_name = "l3s_clkdm",
1516 .mpu_irqs = am33xx_mmc2_irqs,
1517 .sdma_reqs = am33xx_mmc2_edma_reqs,
1518 .main_clk = "mmc_clk",
1519 .prcm = {
1520 .omap4 = {
1521 .clkctrl_offs = AM33XX_CM_PER_MMC2_CLKCTRL_OFFSET,
1522 .modulemode = MODULEMODE_SWCTRL,
1523 },
1524 },
1525 .dev_attr = &am33xx_mmc2_dev_attr,
1526};
1527
1528/*
1529 * 'rtc' class
1530 * rtc subsystem
1531 */
1532static struct omap_hwmod_class_sysconfig am33xx_rtc_sysc = {
1533 .rev_offs = 0x0074,
1534 .sysc_offs = 0x0078,
1535 .sysc_flags = SYSC_HAS_SIDLEMODE,
1536 .idlemodes = (SIDLE_FORCE | SIDLE_NO |
1537 SIDLE_SMART | SIDLE_SMART_WKUP),
1538 .sysc_fields = &omap_hwmod_sysc_type3,
1539};
1540
1541static struct omap_hwmod_class am33xx_rtc_hwmod_class = {
1542 .name = "rtc",
1543 .sysc = &am33xx_rtc_sysc,
1544};
1545
1546static struct omap_hwmod_irq_info am33xx_rtc_irqs[] = {
1547 { .name = "rtcint", .irq = 75 + OMAP_INTC_START, },
1548 { .name = "rtcalarmint", .irq = 76 + OMAP_INTC_START, },
1549 { .irq = -1 },
1550};
1551
1552static struct omap_hwmod am33xx_rtc_hwmod = {
1553 .name = "rtc",
1554 .class = &am33xx_rtc_hwmod_class,
1555 .clkdm_name = "l4_rtc_clkdm",
1556 .mpu_irqs = am33xx_rtc_irqs,
1557 .main_clk = "clk_32768_ck",
1558 .prcm = {
1559 .omap4 = {
1560 .clkctrl_offs = AM33XX_CM_RTC_RTC_CLKCTRL_OFFSET,
1561 .modulemode = MODULEMODE_SWCTRL,
1562 },
1563 },
1564};
1565
1566/* 'spi' class */
1567static struct omap_hwmod_class_sysconfig am33xx_mcspi_sysc = {
1568 .rev_offs = 0x0000,
1569 .sysc_offs = 0x0110,
1570 .syss_offs = 0x0114,
1571 .sysc_flags = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
1572 SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE |
1573 SYSS_HAS_RESET_STATUS),
1574 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
1575 .sysc_fields = &omap_hwmod_sysc_type1,
1576};
1577
1578static struct omap_hwmod_class am33xx_spi_hwmod_class = {
1579 .name = "mcspi",
1580 .sysc = &am33xx_mcspi_sysc,
1581 .rev = OMAP4_MCSPI_REV,
1582};
1583
1584/* spi0 */
1585static struct omap_hwmod_irq_info am33xx_spi0_irqs[] = {
1586 { .irq = 65 + OMAP_INTC_START, },
1587 { .irq = -1 },
1588};
1589
1590static struct omap_hwmod_dma_info am33xx_mcspi0_edma_reqs[] = {
1591 { .name = "rx0", .dma_req = 17 },
1592 { .name = "tx0", .dma_req = 16 },
1593 { .name = "rx1", .dma_req = 19 },
1594 { .name = "tx1", .dma_req = 18 },
1595 { .dma_req = -1 }
1596};
1597
1598static struct omap2_mcspi_dev_attr mcspi_attrib = {
1599 .num_chipselect = 2,
1600};
1601static struct omap_hwmod am33xx_spi0_hwmod = {
1602 .name = "spi0",
1603 .class = &am33xx_spi_hwmod_class,
1604 .clkdm_name = "l4ls_clkdm",
1605 .mpu_irqs = am33xx_spi0_irqs,
1606 .sdma_reqs = am33xx_mcspi0_edma_reqs,
1607 .main_clk = "dpll_per_m2_div4_ck",
1608 .prcm = {
1609 .omap4 = {
1610 .clkctrl_offs = AM33XX_CM_PER_SPI0_CLKCTRL_OFFSET,
1611 .modulemode = MODULEMODE_SWCTRL,
1612 },
1613 },
1614 .dev_attr = &mcspi_attrib,
1615};
1616
1617/* spi1 */
1618static struct omap_hwmod_irq_info am33xx_spi1_irqs[] = {
1619 { .irq = 125 + OMAP_INTC_START, },
1620 { .irq = -1 },
1621};
1622
1623static struct omap_hwmod_dma_info am33xx_mcspi1_edma_reqs[] = {
1624 { .name = "rx0", .dma_req = 43 },
1625 { .name = "tx0", .dma_req = 42 },
1626 { .name = "rx1", .dma_req = 45 },
1627 { .name = "tx1", .dma_req = 44 },
1628 { .dma_req = -1 }
1629};
1630
1631static struct omap_hwmod am33xx_spi1_hwmod = {
1632 .name = "spi1",
1633 .class = &am33xx_spi_hwmod_class,
1634 .clkdm_name = "l4ls_clkdm",
1635 .mpu_irqs = am33xx_spi1_irqs,
1636 .sdma_reqs = am33xx_mcspi1_edma_reqs,
1637 .main_clk = "dpll_per_m2_div4_ck",
1638 .prcm = {
1639 .omap4 = {
1640 .clkctrl_offs = AM33XX_CM_PER_SPI1_CLKCTRL_OFFSET,
1641 .modulemode = MODULEMODE_SWCTRL,
1642 },
1643 },
1644 .dev_attr = &mcspi_attrib,
1645};
1646
1647/*
1648 * 'spinlock' class
1649 * spinlock provides hardware assistance for synchronizing the
1650 * processes running on multiple processors
1651 */
1652static struct omap_hwmod_class am33xx_spinlock_hwmod_class = {
1653 .name = "spinlock",
1654};
1655
1656static struct omap_hwmod am33xx_spinlock_hwmod = {
1657 .name = "spinlock",
1658 .class = &am33xx_spinlock_hwmod_class,
1659 .clkdm_name = "l4ls_clkdm",
1660 .main_clk = "l4ls_gclk",
1661 .prcm = {
1662 .omap4 = {
1663 .clkctrl_offs = AM33XX_CM_PER_SPINLOCK_CLKCTRL_OFFSET,
1664 .modulemode = MODULEMODE_SWCTRL,
1665 },
1666 },
1667};
1668
1669/* 'timer 2-7' class */
1670static struct omap_hwmod_class_sysconfig am33xx_timer_sysc = {
1671 .rev_offs = 0x0000,
1672 .sysc_offs = 0x0010,
1673 .syss_offs = 0x0014,
1674 .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
1675 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1676 SIDLE_SMART_WKUP),
1677 .sysc_fields = &omap_hwmod_sysc_type2,
1678};
1679
1680static struct omap_hwmod_class am33xx_timer_hwmod_class = {
1681 .name = "timer",
1682 .sysc = &am33xx_timer_sysc,
1683};
1684
1685/* timer1 1ms */
1686static struct omap_hwmod_class_sysconfig am33xx_timer1ms_sysc = {
1687 .rev_offs = 0x0000,
1688 .sysc_offs = 0x0010,
1689 .syss_offs = 0x0014,
1690 .sysc_flags = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
1691 SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE |
1692 SYSS_HAS_RESET_STATUS),
1693 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
1694 .sysc_fields = &omap_hwmod_sysc_type1,
1695};
1696
1697static struct omap_hwmod_class am33xx_timer1ms_hwmod_class = {
1698 .name = "timer",
1699 .sysc = &am33xx_timer1ms_sysc,
1700};
1701
1702static struct omap_hwmod_irq_info am33xx_timer1_irqs[] = {
1703 { .irq = 67 + OMAP_INTC_START, },
1704 { .irq = -1 },
1705};
1706
1707static struct omap_hwmod am33xx_timer1_hwmod = {
1708 .name = "timer1",
1709 .class = &am33xx_timer1ms_hwmod_class,
1710 .clkdm_name = "l4_wkup_clkdm",
1711 .mpu_irqs = am33xx_timer1_irqs,
1712 .main_clk = "timer1_fck",
1713 .prcm = {
1714 .omap4 = {
1715 .clkctrl_offs = AM33XX_CM_WKUP_TIMER1_CLKCTRL_OFFSET,
1716 .modulemode = MODULEMODE_SWCTRL,
1717 },
1718 },
1719};
1720
1721static struct omap_hwmod_irq_info am33xx_timer2_irqs[] = {
1722 { .irq = 68 + OMAP_INTC_START, },
1723 { .irq = -1 },
1724};
1725
1726static struct omap_hwmod am33xx_timer2_hwmod = {
1727 .name = "timer2",
1728 .class = &am33xx_timer_hwmod_class,
1729 .clkdm_name = "l4ls_clkdm",
1730 .mpu_irqs = am33xx_timer2_irqs,
1731 .main_clk = "timer2_fck",
1732 .prcm = {
1733 .omap4 = {
1734 .clkctrl_offs = AM33XX_CM_PER_TIMER2_CLKCTRL_OFFSET,
1735 .modulemode = MODULEMODE_SWCTRL,
1736 },
1737 },
1738};
1739
1740static struct omap_hwmod_irq_info am33xx_timer3_irqs[] = {
1741 { .irq = 69 + OMAP_INTC_START, },
1742 { .irq = -1 },
1743};
1744
1745static struct omap_hwmod am33xx_timer3_hwmod = {
1746 .name = "timer3",
1747 .class = &am33xx_timer_hwmod_class,
1748 .clkdm_name = "l4ls_clkdm",
1749 .mpu_irqs = am33xx_timer3_irqs,
1750 .main_clk = "timer3_fck",
1751 .prcm = {
1752 .omap4 = {
1753 .clkctrl_offs = AM33XX_CM_PER_TIMER3_CLKCTRL_OFFSET,
1754 .modulemode = MODULEMODE_SWCTRL,
1755 },
1756 },
1757};
1758
1759static struct omap_hwmod_irq_info am33xx_timer4_irqs[] = {
1760 { .irq = 92 + OMAP_INTC_START, },
1761 { .irq = -1 },
1762};
1763
1764static struct omap_hwmod am33xx_timer4_hwmod = {
1765 .name = "timer4",
1766 .class = &am33xx_timer_hwmod_class,
1767 .clkdm_name = "l4ls_clkdm",
1768 .mpu_irqs = am33xx_timer4_irqs,
1769 .main_clk = "timer4_fck",
1770 .prcm = {
1771 .omap4 = {
1772 .clkctrl_offs = AM33XX_CM_PER_TIMER4_CLKCTRL_OFFSET,
1773 .modulemode = MODULEMODE_SWCTRL,
1774 },
1775 },
1776};
1777
1778static struct omap_hwmod_irq_info am33xx_timer5_irqs[] = {
1779 { .irq = 93 + OMAP_INTC_START, },
1780 { .irq = -1 },
1781};
1782
1783static struct omap_hwmod am33xx_timer5_hwmod = {
1784 .name = "timer5",
1785 .class = &am33xx_timer_hwmod_class,
1786 .clkdm_name = "l4ls_clkdm",
1787 .mpu_irqs = am33xx_timer5_irqs,
1788 .main_clk = "timer5_fck",
1789 .prcm = {
1790 .omap4 = {
1791 .clkctrl_offs = AM33XX_CM_PER_TIMER5_CLKCTRL_OFFSET,
1792 .modulemode = MODULEMODE_SWCTRL,
1793 },
1794 },
1795};
1796
1797static struct omap_hwmod_irq_info am33xx_timer6_irqs[] = {
1798 { .irq = 94 + OMAP_INTC_START, },
1799 { .irq = -1 },
1800};
1801
1802static struct omap_hwmod am33xx_timer6_hwmod = {
1803 .name = "timer6",
1804 .class = &am33xx_timer_hwmod_class,
1805 .clkdm_name = "l4ls_clkdm",
1806 .mpu_irqs = am33xx_timer6_irqs,
1807 .main_clk = "timer6_fck",
1808 .prcm = {
1809 .omap4 = {
1810 .clkctrl_offs = AM33XX_CM_PER_TIMER6_CLKCTRL_OFFSET,
1811 .modulemode = MODULEMODE_SWCTRL,
1812 },
1813 },
1814};
1815
1816static struct omap_hwmod_irq_info am33xx_timer7_irqs[] = {
1817 { .irq = 95 + OMAP_INTC_START, },
1818 { .irq = -1 },
1819};
1820
1821static struct omap_hwmod am33xx_timer7_hwmod = {
1822 .name = "timer7",
1823 .class = &am33xx_timer_hwmod_class,
1824 .clkdm_name = "l4ls_clkdm",
1825 .mpu_irqs = am33xx_timer7_irqs,
1826 .main_clk = "timer7_fck",
1827 .prcm = {
1828 .omap4 = {
1829 .clkctrl_offs = AM33XX_CM_PER_TIMER7_CLKCTRL_OFFSET,
1830 .modulemode = MODULEMODE_SWCTRL,
1831 },
1832 },
1833};
1834
1835/* tpcc */
1836static struct omap_hwmod_class am33xx_tpcc_hwmod_class = {
1837 .name = "tpcc",
1838};
1839
1840static struct omap_hwmod_irq_info am33xx_tpcc_irqs[] = {
1841 { .name = "edma0", .irq = 12 + OMAP_INTC_START, },
1842 { .name = "edma0_mperr", .irq = 13 + OMAP_INTC_START, },
1843 { .name = "edma0_err", .irq = 14 + OMAP_INTC_START, },
1844 { .irq = -1 },
1845};
1846
1847static struct omap_hwmod am33xx_tpcc_hwmod = {
1848 .name = "tpcc",
1849 .class = &am33xx_tpcc_hwmod_class,
1850 .clkdm_name = "l3_clkdm",
1851 .mpu_irqs = am33xx_tpcc_irqs,
1852 .main_clk = "l3_gclk",
1853 .prcm = {
1854 .omap4 = {
1855 .clkctrl_offs = AM33XX_CM_PER_TPCC_CLKCTRL_OFFSET,
1856 .modulemode = MODULEMODE_SWCTRL,
1857 },
1858 },
1859};
1860
1861static struct omap_hwmod_class_sysconfig am33xx_tptc_sysc = {
1862 .rev_offs = 0x0,
1863 .sysc_offs = 0x10,
1864 .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
1865 SYSC_HAS_MIDLEMODE),
1866 .idlemodes = (SIDLE_FORCE | SIDLE_SMART | MSTANDBY_FORCE),
1867 .sysc_fields = &omap_hwmod_sysc_type2,
1868};
1869
1870/* 'tptc' class */
1871static struct omap_hwmod_class am33xx_tptc_hwmod_class = {
1872 .name = "tptc",
1873 .sysc = &am33xx_tptc_sysc,
1874};
1875
1876/* tptc0 */
1877static struct omap_hwmod_irq_info am33xx_tptc0_irqs[] = {
1878 { .irq = 112 + OMAP_INTC_START, },
1879 { .irq = -1 },
1880};
1881
1882static struct omap_hwmod am33xx_tptc0_hwmod = {
1883 .name = "tptc0",
1884 .class = &am33xx_tptc_hwmod_class,
1885 .clkdm_name = "l3_clkdm",
1886 .mpu_irqs = am33xx_tptc0_irqs,
0bfbbded 1887 .flags = HWMOD_SWSUP_SIDLE | HWMOD_SWSUP_MSTANDBY,
a2cfc509
VH
1888 .main_clk = "l3_gclk",
1889 .prcm = {
1890 .omap4 = {
1891 .clkctrl_offs = AM33XX_CM_PER_TPTC0_CLKCTRL_OFFSET,
1892 .modulemode = MODULEMODE_SWCTRL,
1893 },
1894 },
1895};
1896
1897/* tptc1 */
1898static struct omap_hwmod_irq_info am33xx_tptc1_irqs[] = {
1899 { .irq = 113 + OMAP_INTC_START, },
1900 { .irq = -1 },
1901};
1902
1903static struct omap_hwmod am33xx_tptc1_hwmod = {
1904 .name = "tptc1",
1905 .class = &am33xx_tptc_hwmod_class,
1906 .clkdm_name = "l3_clkdm",
1907 .mpu_irqs = am33xx_tptc1_irqs,
1908 .flags = (HWMOD_SWSUP_SIDLE | HWMOD_SWSUP_MSTANDBY),
1909 .main_clk = "l3_gclk",
1910 .prcm = {
1911 .omap4 = {
1912 .clkctrl_offs = AM33XX_CM_PER_TPTC1_CLKCTRL_OFFSET,
1913 .modulemode = MODULEMODE_SWCTRL,
1914 },
1915 },
1916};
1917
1918/* tptc2 */
1919static struct omap_hwmod_irq_info am33xx_tptc2_irqs[] = {
1920 { .irq = 114 + OMAP_INTC_START, },
1921 { .irq = -1 },
1922};
1923
1924static struct omap_hwmod am33xx_tptc2_hwmod = {
1925 .name = "tptc2",
1926 .class = &am33xx_tptc_hwmod_class,
1927 .clkdm_name = "l3_clkdm",
1928 .mpu_irqs = am33xx_tptc2_irqs,
1929 .flags = (HWMOD_SWSUP_SIDLE | HWMOD_SWSUP_MSTANDBY),
1930 .main_clk = "l3_gclk",
1931 .prcm = {
1932 .omap4 = {
1933 .clkctrl_offs = AM33XX_CM_PER_TPTC2_CLKCTRL_OFFSET,
1934 .modulemode = MODULEMODE_SWCTRL,
1935 },
1936 },
1937};
1938
1939/* 'uart' class */
1940static struct omap_hwmod_class_sysconfig uart_sysc = {
1941 .rev_offs = 0x50,
1942 .sysc_offs = 0x54,
1943 .syss_offs = 0x58,
1944 .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_ENAWAKEUP |
1945 SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE),
1946 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1947 SIDLE_SMART_WKUP),
1948 .sysc_fields = &omap_hwmod_sysc_type1,
1949};
1950
1951static struct omap_hwmod_class uart_class = {
1952 .name = "uart",
1953 .sysc = &uart_sysc,
1954};
1955
1956/* uart1 */
1957static struct omap_hwmod_dma_info uart1_edma_reqs[] = {
1958 { .name = "tx", .dma_req = 26, },
1959 { .name = "rx", .dma_req = 27, },
1960 { .dma_req = -1 }
1961};
1962
1963static struct omap_hwmod_irq_info am33xx_uart1_irqs[] = {
1964 { .irq = 72 + OMAP_INTC_START, },
1965 { .irq = -1 },
1966};
1967
1968static struct omap_hwmod am33xx_uart1_hwmod = {
1969 .name = "uart1",
1970 .class = &uart_class,
1971 .clkdm_name = "l4_wkup_clkdm",
1972 .mpu_irqs = am33xx_uart1_irqs,
1973 .sdma_reqs = uart1_edma_reqs,
1974 .main_clk = "dpll_per_m2_div4_wkupdm_ck",
1975 .prcm = {
1976 .omap4 = {
1977 .clkctrl_offs = AM33XX_CM_WKUP_UART0_CLKCTRL_OFFSET,
1978 .modulemode = MODULEMODE_SWCTRL,
1979 },
1980 },
1981};
1982
1983static struct omap_hwmod_irq_info am33xx_uart2_irqs[] = {
1984 { .irq = 73 + OMAP_INTC_START, },
1985 { .irq = -1 },
1986};
1987
1988static struct omap_hwmod am33xx_uart2_hwmod = {
1989 .name = "uart2",
1990 .class = &uart_class,
1991 .clkdm_name = "l4ls_clkdm",
1992 .mpu_irqs = am33xx_uart2_irqs,
1993 .sdma_reqs = uart1_edma_reqs,
1994 .main_clk = "dpll_per_m2_div4_ck",
1995 .prcm = {
1996 .omap4 = {
1997 .clkctrl_offs = AM33XX_CM_PER_UART1_CLKCTRL_OFFSET,
1998 .modulemode = MODULEMODE_SWCTRL,
1999 },
2000 },
2001};
2002
2003/* uart3 */
2004static struct omap_hwmod_dma_info uart3_edma_reqs[] = {
2005 { .name = "tx", .dma_req = 30, },
2006 { .name = "rx", .dma_req = 31, },
2007 { .dma_req = -1 }
2008};
2009
2010static struct omap_hwmod_irq_info am33xx_uart3_irqs[] = {
2011 { .irq = 74 + OMAP_INTC_START, },
2012 { .irq = -1 },
2013};
2014
2015static struct omap_hwmod am33xx_uart3_hwmod = {
2016 .name = "uart3",
2017 .class = &uart_class,
2018 .clkdm_name = "l4ls_clkdm",
2019 .mpu_irqs = am33xx_uart3_irqs,
2020 .sdma_reqs = uart3_edma_reqs,
2021 .main_clk = "dpll_per_m2_div4_ck",
2022 .prcm = {
2023 .omap4 = {
2024 .clkctrl_offs = AM33XX_CM_PER_UART2_CLKCTRL_OFFSET,
2025 .modulemode = MODULEMODE_SWCTRL,
2026 },
2027 },
2028};
2029
2030static struct omap_hwmod_irq_info am33xx_uart4_irqs[] = {
2031 { .irq = 44 + OMAP_INTC_START, },
2032 { .irq = -1 },
2033};
2034
2035static struct omap_hwmod am33xx_uart4_hwmod = {
2036 .name = "uart4",
2037 .class = &uart_class,
2038 .clkdm_name = "l4ls_clkdm",
2039 .mpu_irqs = am33xx_uart4_irqs,
2040 .sdma_reqs = uart1_edma_reqs,
2041 .main_clk = "dpll_per_m2_div4_ck",
2042 .prcm = {
2043 .omap4 = {
2044 .clkctrl_offs = AM33XX_CM_PER_UART3_CLKCTRL_OFFSET,
2045 .modulemode = MODULEMODE_SWCTRL,
2046 },
2047 },
2048};
2049
2050static struct omap_hwmod_irq_info am33xx_uart5_irqs[] = {
2051 { .irq = 45 + OMAP_INTC_START, },
2052 { .irq = -1 },
2053};
2054
2055static struct omap_hwmod am33xx_uart5_hwmod = {
2056 .name = "uart5",
2057 .class = &uart_class,
2058 .clkdm_name = "l4ls_clkdm",
2059 .mpu_irqs = am33xx_uart5_irqs,
2060 .sdma_reqs = uart1_edma_reqs,
2061 .main_clk = "dpll_per_m2_div4_ck",
2062 .prcm = {
2063 .omap4 = {
2064 .clkctrl_offs = AM33XX_CM_PER_UART4_CLKCTRL_OFFSET,
2065 .modulemode = MODULEMODE_SWCTRL,
2066 },
2067 },
2068};
2069
2070static struct omap_hwmod_irq_info am33xx_uart6_irqs[] = {
2071 { .irq = 46 + OMAP_INTC_START, },
2072 { .irq = -1 },
2073};
2074
2075static struct omap_hwmod am33xx_uart6_hwmod = {
2076 .name = "uart6",
2077 .class = &uart_class,
2078 .clkdm_name = "l4ls_clkdm",
2079 .mpu_irqs = am33xx_uart6_irqs,
2080 .sdma_reqs = uart1_edma_reqs,
2081 .main_clk = "dpll_per_m2_div4_ck",
2082 .prcm = {
2083 .omap4 = {
2084 .clkctrl_offs = AM33XX_CM_PER_UART5_CLKCTRL_OFFSET,
2085 .modulemode = MODULEMODE_SWCTRL,
2086 },
2087 },
2088};
2089
2090/* 'wd_timer' class */
05cf03b6
VH
2091static struct omap_hwmod_class_sysconfig wdt_sysc = {
2092 .rev_offs = 0x0,
2093 .sysc_offs = 0x10,
2094 .syss_offs = 0x14,
2095 .sysc_flags = (SYSC_HAS_EMUFREE | SYSC_HAS_SIDLEMODE |
2096 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
2097 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
2098 SIDLE_SMART_WKUP),
2099 .sysc_fields = &omap_hwmod_sysc_type1,
2100};
2101
a2cfc509
VH
2102static struct omap_hwmod_class am33xx_wd_timer_hwmod_class = {
2103 .name = "wd_timer",
05cf03b6
VH
2104 .sysc = &wdt_sysc,
2105 .pre_shutdown = &omap2_wd_timer_disable,
a2cfc509
VH
2106};
2107
2108/*
2109 * XXX: device.c file uses hardcoded name for watchdog timer
2110 * driver "wd_timer2, so we are also using same name as of now...
2111 */
2112static struct omap_hwmod am33xx_wd_timer1_hwmod = {
2113 .name = "wd_timer2",
2114 .class = &am33xx_wd_timer_hwmod_class,
2115 .clkdm_name = "l4_wkup_clkdm",
05cf03b6 2116 .flags = HWMOD_SWSUP_SIDLE,
a2cfc509
VH
2117 .main_clk = "wdt1_fck",
2118 .prcm = {
2119 .omap4 = {
2120 .clkctrl_offs = AM33XX_CM_WKUP_WDT1_CLKCTRL_OFFSET,
2121 .modulemode = MODULEMODE_SWCTRL,
2122 },
2123 },
2124};
2125
2126/*
2127 * 'usb_otg' class
2128 * high-speed on-the-go universal serial bus (usb_otg) controller
2129 */
2130static struct omap_hwmod_class_sysconfig am33xx_usbhsotg_sysc = {
2131 .rev_offs = 0x0,
2132 .sysc_offs = 0x10,
2133 .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE),
2134 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
2135 MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
2136 .sysc_fields = &omap_hwmod_sysc_type2,
2137};
2138
2139static struct omap_hwmod_class am33xx_usbotg_class = {
2140 .name = "usbotg",
2141 .sysc = &am33xx_usbhsotg_sysc,
2142};
2143
2144static struct omap_hwmod_irq_info am33xx_usbss_mpu_irqs[] = {
2145 { .name = "usbss-irq", .irq = 17 + OMAP_INTC_START, },
2146 { .name = "musb0-irq", .irq = 18 + OMAP_INTC_START, },
2147 { .name = "musb1-irq", .irq = 19 + OMAP_INTC_START, },
6adba67e 2148 { .irq = -1, },
a2cfc509
VH
2149};
2150
2151static struct omap_hwmod am33xx_usbss_hwmod = {
2152 .name = "usb_otg_hs",
2153 .class = &am33xx_usbotg_class,
2154 .clkdm_name = "l3s_clkdm",
2155 .mpu_irqs = am33xx_usbss_mpu_irqs,
2156 .flags = HWMOD_SWSUP_SIDLE | HWMOD_SWSUP_MSTANDBY,
2157 .main_clk = "usbotg_fck",
2158 .prcm = {
2159 .omap4 = {
2160 .clkctrl_offs = AM33XX_CM_PER_USB0_CLKCTRL_OFFSET,
2161 .modulemode = MODULEMODE_SWCTRL,
2162 },
2163 },
2164};
2165
2166
2167/*
2168 * Interfaces
2169 */
2170
2171/* l4 fw -> emif fw */
2172static struct omap_hwmod_ocp_if am33xx_l4_fw__emif_fw = {
2173 .master = &am33xx_l4_fw_hwmod,
2174 .slave = &am33xx_emif_fw_hwmod,
2175 .clk = "l4fw_gclk",
2176 .user = OCP_USER_MPU,
2177};
2178
2179static struct omap_hwmod_addr_space am33xx_emif_addrs[] = {
2180 {
2181 .pa_start = 0x4c000000,
2182 .pa_end = 0x4c000fff,
2183 .flags = ADDR_TYPE_RT
2184 },
2185 { }
2186};
2187/* l3 main -> emif */
2188static struct omap_hwmod_ocp_if am33xx_l3_main__emif = {
2189 .master = &am33xx_l3_main_hwmod,
2190 .slave = &am33xx_emif_hwmod,
2191 .clk = "dpll_core_m4_ck",
2192 .addr = am33xx_emif_addrs,
2193 .user = OCP_USER_MPU | OCP_USER_SDMA,
2194};
2195
2196/* mpu -> l3 main */
2197static struct omap_hwmod_ocp_if am33xx_mpu__l3_main = {
2198 .master = &am33xx_mpu_hwmod,
2199 .slave = &am33xx_l3_main_hwmod,
2200 .clk = "dpll_mpu_m2_ck",
2201 .user = OCP_USER_MPU,
2202};
2203
2204/* l3 main -> l4 hs */
2205static struct omap_hwmod_ocp_if am33xx_l3_main__l4_hs = {
2206 .master = &am33xx_l3_main_hwmod,
2207 .slave = &am33xx_l4_hs_hwmod,
2208 .clk = "l3s_gclk",
2209 .user = OCP_USER_MPU | OCP_USER_SDMA,
2210};
2211
2212/* l3 main -> l3 s */
2213static struct omap_hwmod_ocp_if am33xx_l3_main__l3_s = {
2214 .master = &am33xx_l3_main_hwmod,
2215 .slave = &am33xx_l3_s_hwmod,
2216 .clk = "l3s_gclk",
2217 .user = OCP_USER_MPU | OCP_USER_SDMA,
2218};
2219
2220/* l3 s -> l4 per/ls */
2221static struct omap_hwmod_ocp_if am33xx_l3_s__l4_ls = {
2222 .master = &am33xx_l3_s_hwmod,
2223 .slave = &am33xx_l4_ls_hwmod,
2224 .clk = "l3s_gclk",
2225 .user = OCP_USER_MPU | OCP_USER_SDMA,
2226};
2227
2228/* l3 s -> l4 wkup */
2229static struct omap_hwmod_ocp_if am33xx_l3_s__l4_wkup = {
2230 .master = &am33xx_l3_s_hwmod,
2231 .slave = &am33xx_l4_wkup_hwmod,
2232 .clk = "l3s_gclk",
2233 .user = OCP_USER_MPU | OCP_USER_SDMA,
2234};
2235
2236/* l3 s -> l4 fw */
2237static struct omap_hwmod_ocp_if am33xx_l3_s__l4_fw = {
2238 .master = &am33xx_l3_s_hwmod,
2239 .slave = &am33xx_l4_fw_hwmod,
2240 .clk = "l3s_gclk",
2241 .user = OCP_USER_MPU | OCP_USER_SDMA,
2242};
2243
2244/* l3 main -> l3 instr */
2245static struct omap_hwmod_ocp_if am33xx_l3_main__l3_instr = {
2246 .master = &am33xx_l3_main_hwmod,
2247 .slave = &am33xx_l3_instr_hwmod,
2248 .clk = "l3s_gclk",
2249 .user = OCP_USER_MPU | OCP_USER_SDMA,
2250};
2251
2252/* mpu -> prcm */
2253static struct omap_hwmod_ocp_if am33xx_mpu__prcm = {
2254 .master = &am33xx_mpu_hwmod,
2255 .slave = &am33xx_prcm_hwmod,
2256 .clk = "dpll_mpu_m2_ck",
2257 .user = OCP_USER_MPU | OCP_USER_SDMA,
2258};
2259
2260/* l3 s -> l3 main*/
2261static struct omap_hwmod_ocp_if am33xx_l3_s__l3_main = {
2262 .master = &am33xx_l3_s_hwmod,
2263 .slave = &am33xx_l3_main_hwmod,
2264 .clk = "l3s_gclk",
2265 .user = OCP_USER_MPU | OCP_USER_SDMA,
2266};
2267
2268/* pru-icss -> l3 main */
2269static struct omap_hwmod_ocp_if am33xx_pruss__l3_main = {
2270 .master = &am33xx_pruss_hwmod,
2271 .slave = &am33xx_l3_main_hwmod,
2272 .clk = "l3_gclk",
2273 .user = OCP_USER_MPU | OCP_USER_SDMA,
2274};
2275
2276/* wkup m3 -> l4 wkup */
2277static struct omap_hwmod_ocp_if am33xx_wkup_m3__l4_wkup = {
2278 .master = &am33xx_wkup_m3_hwmod,
2279 .slave = &am33xx_l4_wkup_hwmod,
2280 .clk = "dpll_core_m4_div2_ck",
2281 .user = OCP_USER_MPU | OCP_USER_SDMA,
2282};
2283
2284/* gfx -> l3 main */
2285static struct omap_hwmod_ocp_if am33xx_gfx__l3_main = {
2286 .master = &am33xx_gfx_hwmod,
2287 .slave = &am33xx_l3_main_hwmod,
2288 .clk = "dpll_core_m4_ck",
2289 .user = OCP_USER_MPU | OCP_USER_SDMA,
2290};
2291
2292/* l4 wkup -> wkup m3 */
2293static struct omap_hwmod_addr_space am33xx_wkup_m3_addrs[] = {
2294 {
2295 .name = "umem",
2296 .pa_start = 0x44d00000,
2297 .pa_end = 0x44d00000 + SZ_16K - 1,
2298 .flags = ADDR_TYPE_RT
2299 },
2300 {
2301 .name = "dmem",
2302 .pa_start = 0x44d80000,
2303 .pa_end = 0x44d80000 + SZ_8K - 1,
2304 .flags = ADDR_TYPE_RT
2305 },
2306 { }
2307};
2308
2309static struct omap_hwmod_ocp_if am33xx_l4_wkup__wkup_m3 = {
2310 .master = &am33xx_l4_wkup_hwmod,
2311 .slave = &am33xx_wkup_m3_hwmod,
2312 .clk = "dpll_core_m4_div2_ck",
2313 .addr = am33xx_wkup_m3_addrs,
2314 .user = OCP_USER_MPU | OCP_USER_SDMA,
2315};
2316
2317/* l4 hs -> pru-icss */
2318static struct omap_hwmod_addr_space am33xx_pruss_addrs[] = {
2319 {
2320 .pa_start = 0x4a300000,
2321 .pa_end = 0x4a300000 + SZ_512K - 1,
2322 .flags = ADDR_TYPE_RT
2323 },
2324 { }
2325};
2326
2327static struct omap_hwmod_ocp_if am33xx_l4_hs__pruss = {
2328 .master = &am33xx_l4_hs_hwmod,
2329 .slave = &am33xx_pruss_hwmod,
2330 .clk = "dpll_core_m4_ck",
2331 .addr = am33xx_pruss_addrs,
2332 .user = OCP_USER_MPU | OCP_USER_SDMA,
2333};
2334
2335/* l3 main -> gfx */
2336static struct omap_hwmod_addr_space am33xx_gfx_addrs[] = {
2337 {
2338 .pa_start = 0x56000000,
2339 .pa_end = 0x56000000 + SZ_16M - 1,
2340 .flags = ADDR_TYPE_RT
2341 },
2342 { }
2343};
2344
2345static struct omap_hwmod_ocp_if am33xx_l3_main__gfx = {
2346 .master = &am33xx_l3_main_hwmod,
2347 .slave = &am33xx_gfx_hwmod,
2348 .clk = "dpll_core_m4_ck",
2349 .addr = am33xx_gfx_addrs,
2350 .user = OCP_USER_MPU | OCP_USER_SDMA,
2351};
2352
2353/* l4 wkup -> smartreflex0 */
2354static struct omap_hwmod_addr_space am33xx_smartreflex0_addrs[] = {
2355 {
2356 .pa_start = 0x44e37000,
2357 .pa_end = 0x44e37000 + SZ_4K - 1,
2358 .flags = ADDR_TYPE_RT
2359 },
2360 { }
2361};
2362
2363static struct omap_hwmod_ocp_if am33xx_l4_wkup__smartreflex0 = {
2364 .master = &am33xx_l4_wkup_hwmod,
2365 .slave = &am33xx_smartreflex0_hwmod,
2366 .clk = "dpll_core_m4_div2_ck",
2367 .addr = am33xx_smartreflex0_addrs,
2368 .user = OCP_USER_MPU,
2369};
2370
2371/* l4 wkup -> smartreflex1 */
2372static struct omap_hwmod_addr_space am33xx_smartreflex1_addrs[] = {
2373 {
2374 .pa_start = 0x44e39000,
2375 .pa_end = 0x44e39000 + SZ_4K - 1,
2376 .flags = ADDR_TYPE_RT
2377 },
2378 { }
2379};
2380
2381static struct omap_hwmod_ocp_if am33xx_l4_wkup__smartreflex1 = {
2382 .master = &am33xx_l4_wkup_hwmod,
2383 .slave = &am33xx_smartreflex1_hwmod,
2384 .clk = "dpll_core_m4_div2_ck",
2385 .addr = am33xx_smartreflex1_addrs,
2386 .user = OCP_USER_MPU,
2387};
2388
2389/* l4 wkup -> control */
2390static struct omap_hwmod_addr_space am33xx_control_addrs[] = {
2391 {
2392 .pa_start = 0x44e10000,
2393 .pa_end = 0x44e10000 + SZ_8K - 1,
2394 .flags = ADDR_TYPE_RT
2395 },
2396 { }
2397};
2398
2399static struct omap_hwmod_ocp_if am33xx_l4_wkup__control = {
2400 .master = &am33xx_l4_wkup_hwmod,
2401 .slave = &am33xx_control_hwmod,
2402 .clk = "dpll_core_m4_div2_ck",
2403 .addr = am33xx_control_addrs,
2404 .user = OCP_USER_MPU,
2405};
2406
2407/* l4 wkup -> rtc */
2408static struct omap_hwmod_addr_space am33xx_rtc_addrs[] = {
2409 {
2410 .pa_start = 0x44e3e000,
2411 .pa_end = 0x44e3e000 + SZ_4K - 1,
2412 .flags = ADDR_TYPE_RT
2413 },
2414 { }
2415};
2416
2417static struct omap_hwmod_ocp_if am33xx_l4_wkup__rtc = {
2418 .master = &am33xx_l4_wkup_hwmod,
2419 .slave = &am33xx_rtc_hwmod,
2420 .clk = "clkdiv32k_ick",
2421 .addr = am33xx_rtc_addrs,
2422 .user = OCP_USER_MPU,
2423};
2424
2425/* l4 per/ls -> DCAN0 */
2426static struct omap_hwmod_addr_space am33xx_dcan0_addrs[] = {
2427 {
2428 .pa_start = 0x481CC000,
2429 .pa_end = 0x481CC000 + SZ_4K - 1,
2430 .flags = ADDR_TYPE_RT
2431 },
2432 { }
2433};
2434
2435static struct omap_hwmod_ocp_if am33xx_l4_per__dcan0 = {
2436 .master = &am33xx_l4_ls_hwmod,
2437 .slave = &am33xx_dcan0_hwmod,
2438 .clk = "l4ls_gclk",
2439 .addr = am33xx_dcan0_addrs,
2440 .user = OCP_USER_MPU | OCP_USER_SDMA,
2441};
2442
2443/* l4 per/ls -> DCAN1 */
2444static struct omap_hwmod_addr_space am33xx_dcan1_addrs[] = {
2445 {
2446 .pa_start = 0x481D0000,
2447 .pa_end = 0x481D0000 + SZ_4K - 1,
2448 .flags = ADDR_TYPE_RT
2449 },
2450 { }
2451};
2452
2453static struct omap_hwmod_ocp_if am33xx_l4_per__dcan1 = {
2454 .master = &am33xx_l4_ls_hwmod,
2455 .slave = &am33xx_dcan1_hwmod,
2456 .clk = "l4ls_gclk",
2457 .addr = am33xx_dcan1_addrs,
2458 .user = OCP_USER_MPU | OCP_USER_SDMA,
2459};
2460
2461/* l4 per/ls -> GPIO2 */
2462static struct omap_hwmod_addr_space am33xx_gpio1_addrs[] = {
2463 {
2464 .pa_start = 0x4804C000,
2465 .pa_end = 0x4804C000 + SZ_4K - 1,
2466 .flags = ADDR_TYPE_RT,
2467 },
2468 { }
2469};
2470
2471static struct omap_hwmod_ocp_if am33xx_l4_per__gpio1 = {
2472 .master = &am33xx_l4_ls_hwmod,
2473 .slave = &am33xx_gpio1_hwmod,
2474 .clk = "l4ls_gclk",
2475 .addr = am33xx_gpio1_addrs,
2476 .user = OCP_USER_MPU | OCP_USER_SDMA,
2477};
2478
2479/* l4 per/ls -> gpio3 */
2480static struct omap_hwmod_addr_space am33xx_gpio2_addrs[] = {
2481 {
2482 .pa_start = 0x481AC000,
2483 .pa_end = 0x481AC000 + SZ_4K - 1,
2484 .flags = ADDR_TYPE_RT,
2485 },
2486 { }
2487};
2488
2489static struct omap_hwmod_ocp_if am33xx_l4_per__gpio2 = {
2490 .master = &am33xx_l4_ls_hwmod,
2491 .slave = &am33xx_gpio2_hwmod,
2492 .clk = "l4ls_gclk",
2493 .addr = am33xx_gpio2_addrs,
2494 .user = OCP_USER_MPU | OCP_USER_SDMA,
2495};
2496
2497/* l4 per/ls -> gpio4 */
2498static struct omap_hwmod_addr_space am33xx_gpio3_addrs[] = {
2499 {
2500 .pa_start = 0x481AE000,
2501 .pa_end = 0x481AE000 + SZ_4K - 1,
2502 .flags = ADDR_TYPE_RT,
2503 },
2504 { }
2505};
2506
2507static struct omap_hwmod_ocp_if am33xx_l4_per__gpio3 = {
2508 .master = &am33xx_l4_ls_hwmod,
2509 .slave = &am33xx_gpio3_hwmod,
2510 .clk = "l4ls_gclk",
2511 .addr = am33xx_gpio3_addrs,
2512 .user = OCP_USER_MPU | OCP_USER_SDMA,
2513};
2514
2515/* L4 WKUP -> I2C1 */
2516static struct omap_hwmod_addr_space am33xx_i2c1_addr_space[] = {
2517 {
2518 .pa_start = 0x44E0B000,
2519 .pa_end = 0x44E0B000 + SZ_4K - 1,
2520 .flags = ADDR_TYPE_RT,
2521 },
2522 { }
2523};
2524
2525static struct omap_hwmod_ocp_if am33xx_l4_wkup__i2c1 = {
2526 .master = &am33xx_l4_wkup_hwmod,
2527 .slave = &am33xx_i2c1_hwmod,
2528 .clk = "dpll_core_m4_div2_ck",
2529 .addr = am33xx_i2c1_addr_space,
2530 .user = OCP_USER_MPU,
2531};
2532
2533/* L4 WKUP -> GPIO1 */
2534static struct omap_hwmod_addr_space am33xx_gpio0_addrs[] = {
2535 {
2536 .pa_start = 0x44E07000,
2537 .pa_end = 0x44E07000 + SZ_4K - 1,
2538 .flags = ADDR_TYPE_RT,
2539 },
2540 { }
2541};
2542
2543static struct omap_hwmod_ocp_if am33xx_l4_wkup__gpio0 = {
2544 .master = &am33xx_l4_wkup_hwmod,
2545 .slave = &am33xx_gpio0_hwmod,
2546 .clk = "dpll_core_m4_div2_ck",
2547 .addr = am33xx_gpio0_addrs,
2548 .user = OCP_USER_MPU | OCP_USER_SDMA,
2549};
2550
2551/* L4 WKUP -> ADC_TSC */
2552static struct omap_hwmod_addr_space am33xx_adc_tsc_addrs[] = {
2553 {
2554 .pa_start = 0x44E0D000,
2555 .pa_end = 0x44E0D000 + SZ_8K - 1,
2556 .flags = ADDR_TYPE_RT
2557 },
2558 { }
2559};
2560
2561static struct omap_hwmod_ocp_if am33xx_l4_wkup__adc_tsc = {
2562 .master = &am33xx_l4_wkup_hwmod,
2563 .slave = &am33xx_adc_tsc_hwmod,
2564 .clk = "dpll_core_m4_div2_ck",
2565 .addr = am33xx_adc_tsc_addrs,
2566 .user = OCP_USER_MPU,
2567};
2568
2569static struct omap_hwmod_addr_space am33xx_cpgmac0_addr_space[] = {
2570 /* cpsw ss */
2571 {
2572 .pa_start = 0x4a100000,
2573 .pa_end = 0x4a100000 + SZ_2K - 1,
a2cfc509
VH
2574 },
2575 /* cpsw wr */
2576 {
2577 .pa_start = 0x4a101200,
2578 .pa_end = 0x4a101200 + SZ_256 - 1,
2579 .flags = ADDR_TYPE_RT,
2580 },
2581 { }
2582};
2583
2584static struct omap_hwmod_ocp_if am33xx_l4_hs__cpgmac0 = {
2585 .master = &am33xx_l4_hs_hwmod,
2586 .slave = &am33xx_cpgmac0_hwmod,
2587 .clk = "cpsw_125mhz_gclk",
2588 .addr = am33xx_cpgmac0_addr_space,
2589 .user = OCP_USER_MPU,
2590};
2591
9816aa80 2592static struct omap_hwmod_addr_space am33xx_mdio_addr_space[] = {
70384a6a
M
2593 {
2594 .pa_start = 0x4A101000,
2595 .pa_end = 0x4A101000 + SZ_256 - 1,
2596 },
2597 { }
2598};
2599
9816aa80 2600static struct omap_hwmod_ocp_if am33xx_cpgmac0__mdio = {
70384a6a
M
2601 .master = &am33xx_cpgmac0_hwmod,
2602 .slave = &am33xx_mdio_hwmod,
2603 .addr = am33xx_mdio_addr_space,
2604 .user = OCP_USER_MPU,
2605};
2606
a2cfc509
VH
2607static struct omap_hwmod_addr_space am33xx_elm_addr_space[] = {
2608 {
2609 .pa_start = 0x48080000,
2610 .pa_end = 0x48080000 + SZ_8K - 1,
2611 .flags = ADDR_TYPE_RT
2612 },
2613 { }
2614};
2615
2616static struct omap_hwmod_ocp_if am33xx_l4_ls__elm = {
2617 .master = &am33xx_l4_ls_hwmod,
2618 .slave = &am33xx_elm_hwmod,
2619 .clk = "l4ls_gclk",
2620 .addr = am33xx_elm_addr_space,
2621 .user = OCP_USER_MPU,
2622};
2623
9652d19a 2624static struct omap_hwmod_addr_space am33xx_epwmss0_addr_space[] = {
a2cfc509
VH
2625 {
2626 .pa_start = 0x48300000,
2627 .pa_end = 0x48300000 + SZ_16 - 1,
2628 .flags = ADDR_TYPE_RT
2629 },
a2cfc509
VH
2630 { }
2631};
2632
9652d19a 2633static struct omap_hwmod_ocp_if am33xx_l4_ls__epwmss0 = {
a2cfc509 2634 .master = &am33xx_l4_ls_hwmod,
9652d19a 2635 .slave = &am33xx_epwmss0_hwmod,
a2cfc509 2636 .clk = "l4ls_gclk",
9652d19a 2637 .addr = am33xx_epwmss0_addr_space,
a2cfc509
VH
2638 .user = OCP_USER_MPU,
2639};
2640
9652d19a 2641static struct omap_hwmod_addr_space am33xx_ecap0_addr_space[] = {
a2cfc509 2642 {
9652d19a
PA
2643 .pa_start = 0x48300100,
2644 .pa_end = 0x48300100 + SZ_128 - 1,
a2cfc509
VH
2645 },
2646 { }
2647};
2648
9652d19a
PA
2649static struct omap_hwmod_ocp_if am33xx_epwmss0__ecap0 = {
2650 .master = &am33xx_epwmss0_hwmod,
2651 .slave = &am33xx_ecap0_hwmod,
a2cfc509 2652 .clk = "l4ls_gclk",
9652d19a 2653 .addr = am33xx_ecap0_addr_space,
a2cfc509
VH
2654 .user = OCP_USER_MPU,
2655};
2656
9652d19a 2657static struct omap_hwmod_addr_space am33xx_eqep0_addr_space[] = {
a2cfc509 2658 {
9652d19a
PA
2659 .pa_start = 0x48300180,
2660 .pa_end = 0x48300180 + SZ_128 - 1,
a2cfc509 2661 },
9652d19a
PA
2662 { }
2663};
2664
2665static struct omap_hwmod_ocp_if am33xx_epwmss0__eqep0 = {
2666 .master = &am33xx_epwmss0_hwmod,
2667 .slave = &am33xx_eqep0_hwmod,
2668 .clk = "l4ls_gclk",
2669 .addr = am33xx_eqep0_addr_space,
2670 .user = OCP_USER_MPU,
2671};
2672
2673static struct omap_hwmod_addr_space am33xx_ehrpwm0_addr_space[] = {
a2cfc509 2674 {
9652d19a
PA
2675 .pa_start = 0x48300200,
2676 .pa_end = 0x48300200 + SZ_128 - 1,
a2cfc509
VH
2677 },
2678 { }
2679};
2680
9652d19a
PA
2681static struct omap_hwmod_ocp_if am33xx_epwmss0__ehrpwm0 = {
2682 .master = &am33xx_epwmss0_hwmod,
2683 .slave = &am33xx_ehrpwm0_hwmod,
a2cfc509 2684 .clk = "l4ls_gclk",
9652d19a 2685 .addr = am33xx_ehrpwm0_addr_space,
a2cfc509
VH
2686 .user = OCP_USER_MPU,
2687};
2688
9652d19a
PA
2689
2690static struct omap_hwmod_addr_space am33xx_epwmss1_addr_space[] = {
bee76659 2691 {
9652d19a
PA
2692 .pa_start = 0x48302000,
2693 .pa_end = 0x48302000 + SZ_16 - 1,
bee76659
PA
2694 .flags = ADDR_TYPE_RT
2695 },
bee76659
PA
2696 { }
2697};
2698
9652d19a 2699static struct omap_hwmod_ocp_if am33xx_l4_ls__epwmss1 = {
bee76659 2700 .master = &am33xx_l4_ls_hwmod,
9652d19a 2701 .slave = &am33xx_epwmss1_hwmod,
bee76659 2702 .clk = "l4ls_gclk",
9652d19a 2703 .addr = am33xx_epwmss1_addr_space,
bee76659
PA
2704 .user = OCP_USER_MPU,
2705};
2706
9652d19a 2707static struct omap_hwmod_addr_space am33xx_ecap1_addr_space[] = {
bee76659 2708 {
9652d19a
PA
2709 .pa_start = 0x48302100,
2710 .pa_end = 0x48302100 + SZ_128 - 1,
bee76659 2711 },
9652d19a
PA
2712 { }
2713};
2714
2715static struct omap_hwmod_ocp_if am33xx_epwmss1__ecap1 = {
2716 .master = &am33xx_epwmss1_hwmod,
2717 .slave = &am33xx_ecap1_hwmod,
2718 .clk = "l4ls_gclk",
2719 .addr = am33xx_ecap1_addr_space,
2720 .user = OCP_USER_MPU,
2721};
2722
2723static struct omap_hwmod_addr_space am33xx_eqep1_addr_space[] = {
bee76659
PA
2724 {
2725 .pa_start = 0x48302180,
2726 .pa_end = 0x48302180 + SZ_128 - 1,
2727 },
2728 { }
2729};
2730
9652d19a
PA
2731static struct omap_hwmod_ocp_if am33xx_epwmss1__eqep1 = {
2732 .master = &am33xx_epwmss1_hwmod,
bee76659
PA
2733 .slave = &am33xx_eqep1_hwmod,
2734 .clk = "l4ls_gclk",
2735 .addr = am33xx_eqep1_addr_space,
2736 .user = OCP_USER_MPU,
2737};
2738
9652d19a 2739static struct omap_hwmod_addr_space am33xx_ehrpwm1_addr_space[] = {
bee76659 2740 {
9652d19a
PA
2741 .pa_start = 0x48302200,
2742 .pa_end = 0x48302200 + SZ_128 - 1,
bee76659
PA
2743 },
2744 { }
2745};
2746
9652d19a
PA
2747static struct omap_hwmod_ocp_if am33xx_epwmss1__ehrpwm1 = {
2748 .master = &am33xx_epwmss1_hwmod,
2749 .slave = &am33xx_ehrpwm1_hwmod,
bee76659 2750 .clk = "l4ls_gclk",
9652d19a 2751 .addr = am33xx_ehrpwm1_addr_space,
bee76659
PA
2752 .user = OCP_USER_MPU,
2753};
2754
9652d19a 2755static struct omap_hwmod_addr_space am33xx_epwmss2_addr_space[] = {
a2cfc509 2756 {
9652d19a
PA
2757 .pa_start = 0x48304000,
2758 .pa_end = 0x48304000 + SZ_16 - 1,
a2cfc509
VH
2759 .flags = ADDR_TYPE_RT
2760 },
a2cfc509
VH
2761 { }
2762};
2763
9652d19a 2764static struct omap_hwmod_ocp_if am33xx_l4_ls__epwmss2 = {
a2cfc509 2765 .master = &am33xx_l4_ls_hwmod,
9652d19a 2766 .slave = &am33xx_epwmss2_hwmod,
a2cfc509 2767 .clk = "l4ls_gclk",
9652d19a 2768 .addr = am33xx_epwmss2_addr_space,
a2cfc509
VH
2769 .user = OCP_USER_MPU,
2770};
2771
9652d19a 2772static struct omap_hwmod_addr_space am33xx_ecap2_addr_space[] = {
a2cfc509 2773 {
9652d19a
PA
2774 .pa_start = 0x48304100,
2775 .pa_end = 0x48304100 + SZ_128 - 1,
a2cfc509
VH
2776 },
2777 { }
2778};
2779
9652d19a
PA
2780static struct omap_hwmod_ocp_if am33xx_epwmss2__ecap2 = {
2781 .master = &am33xx_epwmss2_hwmod,
2782 .slave = &am33xx_ecap2_hwmod,
a2cfc509 2783 .clk = "l4ls_gclk",
9652d19a 2784 .addr = am33xx_ecap2_addr_space,
a2cfc509
VH
2785 .user = OCP_USER_MPU,
2786};
2787
9652d19a 2788static struct omap_hwmod_addr_space am33xx_eqep2_addr_space[] = {
a2cfc509 2789 {
9652d19a
PA
2790 .pa_start = 0x48304180,
2791 .pa_end = 0x48304180 + SZ_128 - 1,
a2cfc509 2792 },
9652d19a
PA
2793 { }
2794};
2795
2796static struct omap_hwmod_ocp_if am33xx_epwmss2__eqep2 = {
2797 .master = &am33xx_epwmss2_hwmod,
2798 .slave = &am33xx_eqep2_hwmod,
2799 .clk = "l4ls_gclk",
2800 .addr = am33xx_eqep2_addr_space,
2801 .user = OCP_USER_MPU,
2802};
2803
2804static struct omap_hwmod_addr_space am33xx_ehrpwm2_addr_space[] = {
a2cfc509 2805 {
9652d19a
PA
2806 .pa_start = 0x48304200,
2807 .pa_end = 0x48304200 + SZ_128 - 1,
a2cfc509
VH
2808 },
2809 { }
2810};
2811
9652d19a
PA
2812static struct omap_hwmod_ocp_if am33xx_epwmss2__ehrpwm2 = {
2813 .master = &am33xx_epwmss2_hwmod,
2814 .slave = &am33xx_ehrpwm2_hwmod,
a2cfc509 2815 .clk = "l4ls_gclk",
9652d19a 2816 .addr = am33xx_ehrpwm2_addr_space,
a2cfc509
VH
2817 .user = OCP_USER_MPU,
2818};
2819
2820/* l3s cfg -> gpmc */
2821static struct omap_hwmod_addr_space am33xx_gpmc_addr_space[] = {
2822 {
2823 .pa_start = 0x50000000,
2824 .pa_end = 0x50000000 + SZ_8K - 1,
2825 .flags = ADDR_TYPE_RT,
2826 },
2827 { }
2828};
2829
2830static struct omap_hwmod_ocp_if am33xx_l3_s__gpmc = {
2831 .master = &am33xx_l3_s_hwmod,
2832 .slave = &am33xx_gpmc_hwmod,
2833 .clk = "l3s_gclk",
2834 .addr = am33xx_gpmc_addr_space,
2835 .user = OCP_USER_MPU,
2836};
2837
2838/* i2c2 */
2839static struct omap_hwmod_addr_space am33xx_i2c2_addr_space[] = {
2840 {
2841 .pa_start = 0x4802A000,
2842 .pa_end = 0x4802A000 + SZ_4K - 1,
2843 .flags = ADDR_TYPE_RT,
2844 },
2845 { }
2846};
2847
2848static struct omap_hwmod_ocp_if am33xx_l4_per__i2c2 = {
2849 .master = &am33xx_l4_ls_hwmod,
2850 .slave = &am33xx_i2c2_hwmod,
2851 .clk = "l4ls_gclk",
2852 .addr = am33xx_i2c2_addr_space,
2853 .user = OCP_USER_MPU,
2854};
2855
2856static struct omap_hwmod_addr_space am33xx_i2c3_addr_space[] = {
2857 {
2858 .pa_start = 0x4819C000,
2859 .pa_end = 0x4819C000 + SZ_4K - 1,
2860 .flags = ADDR_TYPE_RT
2861 },
2862 { }
2863};
2864
2865static struct omap_hwmod_ocp_if am33xx_l4_per__i2c3 = {
2866 .master = &am33xx_l4_ls_hwmod,
2867 .slave = &am33xx_i2c3_hwmod,
2868 .clk = "l4ls_gclk",
2869 .addr = am33xx_i2c3_addr_space,
2870 .user = OCP_USER_MPU,
2871};
2872
2873static struct omap_hwmod_addr_space am33xx_lcdc_addr_space[] = {
2874 {
2875 .pa_start = 0x4830E000,
2876 .pa_end = 0x4830E000 + SZ_8K - 1,
2877 .flags = ADDR_TYPE_RT,
2878 },
2879 { }
2880};
2881
2882static struct omap_hwmod_ocp_if am33xx_l3_main__lcdc = {
2883 .master = &am33xx_l3_main_hwmod,
2884 .slave = &am33xx_lcdc_hwmod,
2885 .clk = "dpll_core_m4_ck",
2886 .addr = am33xx_lcdc_addr_space,
2887 .user = OCP_USER_MPU,
2888};
2889
2890static struct omap_hwmod_addr_space am33xx_mailbox_addrs[] = {
2891 {
2892 .pa_start = 0x480C8000,
2893 .pa_end = 0x480C8000 + (SZ_4K - 1),
2894 .flags = ADDR_TYPE_RT
2895 },
2896 { }
2897};
2898
2899/* l4 ls -> mailbox */
2900static struct omap_hwmod_ocp_if am33xx_l4_per__mailbox = {
2901 .master = &am33xx_l4_ls_hwmod,
2902 .slave = &am33xx_mailbox_hwmod,
2903 .clk = "l4ls_gclk",
2904 .addr = am33xx_mailbox_addrs,
2905 .user = OCP_USER_MPU,
2906};
2907
2908/* l4 ls -> spinlock */
2909static struct omap_hwmod_addr_space am33xx_spinlock_addrs[] = {
2910 {
2911 .pa_start = 0x480Ca000,
2912 .pa_end = 0x480Ca000 + SZ_4K - 1,
2913 .flags = ADDR_TYPE_RT
2914 },
2915 { }
2916};
2917
2918static struct omap_hwmod_ocp_if am33xx_l4_ls__spinlock = {
2919 .master = &am33xx_l4_ls_hwmod,
2920 .slave = &am33xx_spinlock_hwmod,
2921 .clk = "l4ls_gclk",
2922 .addr = am33xx_spinlock_addrs,
2923 .user = OCP_USER_MPU,
2924};
2925
2926/* l4 ls -> mcasp0 */
2927static struct omap_hwmod_addr_space am33xx_mcasp0_addr_space[] = {
2928 {
2929 .pa_start = 0x48038000,
2930 .pa_end = 0x48038000 + SZ_8K - 1,
2931 .flags = ADDR_TYPE_RT
2932 },
2933 { }
2934};
2935
2936static struct omap_hwmod_ocp_if am33xx_l4_ls__mcasp0 = {
2937 .master = &am33xx_l4_ls_hwmod,
2938 .slave = &am33xx_mcasp0_hwmod,
2939 .clk = "l4ls_gclk",
2940 .addr = am33xx_mcasp0_addr_space,
2941 .user = OCP_USER_MPU,
2942};
2943
2944/* l3 s -> mcasp0 data */
2945static struct omap_hwmod_addr_space am33xx_mcasp0_data_addr_space[] = {
2946 {
2947 .pa_start = 0x46000000,
2948 .pa_end = 0x46000000 + SZ_4M - 1,
2949 .flags = ADDR_TYPE_RT
2950 },
2951 { }
2952};
2953
2954static struct omap_hwmod_ocp_if am33xx_l3_s__mcasp0_data = {
2955 .master = &am33xx_l3_s_hwmod,
2956 .slave = &am33xx_mcasp0_hwmod,
2957 .clk = "l3s_gclk",
2958 .addr = am33xx_mcasp0_data_addr_space,
2959 .user = OCP_USER_SDMA,
2960};
2961
2962/* l4 ls -> mcasp1 */
2963static struct omap_hwmod_addr_space am33xx_mcasp1_addr_space[] = {
2964 {
2965 .pa_start = 0x4803C000,
2966 .pa_end = 0x4803C000 + SZ_8K - 1,
2967 .flags = ADDR_TYPE_RT
2968 },
2969 { }
2970};
2971
2972static struct omap_hwmod_ocp_if am33xx_l4_ls__mcasp1 = {
2973 .master = &am33xx_l4_ls_hwmod,
2974 .slave = &am33xx_mcasp1_hwmod,
2975 .clk = "l4ls_gclk",
2976 .addr = am33xx_mcasp1_addr_space,
2977 .user = OCP_USER_MPU,
2978};
2979
2980/* l3 s -> mcasp1 data */
2981static struct omap_hwmod_addr_space am33xx_mcasp1_data_addr_space[] = {
2982 {
2983 .pa_start = 0x46400000,
2984 .pa_end = 0x46400000 + SZ_4M - 1,
2985 .flags = ADDR_TYPE_RT
2986 },
2987 { }
2988};
2989
2990static struct omap_hwmod_ocp_if am33xx_l3_s__mcasp1_data = {
2991 .master = &am33xx_l3_s_hwmod,
2992 .slave = &am33xx_mcasp1_hwmod,
2993 .clk = "l3s_gclk",
2994 .addr = am33xx_mcasp1_data_addr_space,
2995 .user = OCP_USER_SDMA,
2996};
2997
2998/* l4 ls -> mmc0 */
2999static struct omap_hwmod_addr_space am33xx_mmc0_addr_space[] = {
3000 {
3001 .pa_start = 0x48060100,
3002 .pa_end = 0x48060100 + SZ_4K - 1,
3003 .flags = ADDR_TYPE_RT,
3004 },
3005 { }
3006};
3007
3008static struct omap_hwmod_ocp_if am33xx_l4_ls__mmc0 = {
3009 .master = &am33xx_l4_ls_hwmod,
3010 .slave = &am33xx_mmc0_hwmod,
3011 .clk = "l4ls_gclk",
3012 .addr = am33xx_mmc0_addr_space,
3013 .user = OCP_USER_MPU,
3014};
3015
3016/* l4 ls -> mmc1 */
3017static struct omap_hwmod_addr_space am33xx_mmc1_addr_space[] = {
3018 {
3019 .pa_start = 0x481d8100,
3020 .pa_end = 0x481d8100 + SZ_4K - 1,
3021 .flags = ADDR_TYPE_RT,
3022 },
3023 { }
3024};
3025
3026static struct omap_hwmod_ocp_if am33xx_l4_ls__mmc1 = {
3027 .master = &am33xx_l4_ls_hwmod,
3028 .slave = &am33xx_mmc1_hwmod,
3029 .clk = "l4ls_gclk",
3030 .addr = am33xx_mmc1_addr_space,
3031 .user = OCP_USER_MPU,
3032};
3033
3034/* l3 s -> mmc2 */
3035static struct omap_hwmod_addr_space am33xx_mmc2_addr_space[] = {
3036 {
3037 .pa_start = 0x47810100,
3038 .pa_end = 0x47810100 + SZ_64K - 1,
3039 .flags = ADDR_TYPE_RT,
3040 },
3041 { }
3042};
3043
3044static struct omap_hwmod_ocp_if am33xx_l3_s__mmc2 = {
3045 .master = &am33xx_l3_s_hwmod,
3046 .slave = &am33xx_mmc2_hwmod,
3047 .clk = "l3s_gclk",
3048 .addr = am33xx_mmc2_addr_space,
3049 .user = OCP_USER_MPU,
3050};
3051
3052/* l4 ls -> mcspi0 */
3053static struct omap_hwmod_addr_space am33xx_mcspi0_addr_space[] = {
3054 {
3055 .pa_start = 0x48030000,
3056 .pa_end = 0x48030000 + SZ_1K - 1,
3057 .flags = ADDR_TYPE_RT,
3058 },
3059 { }
3060};
3061
3062static struct omap_hwmod_ocp_if am33xx_l4_ls__mcspi0 = {
3063 .master = &am33xx_l4_ls_hwmod,
3064 .slave = &am33xx_spi0_hwmod,
3065 .clk = "l4ls_gclk",
3066 .addr = am33xx_mcspi0_addr_space,
3067 .user = OCP_USER_MPU,
3068};
3069
3070/* l4 ls -> mcspi1 */
3071static struct omap_hwmod_addr_space am33xx_mcspi1_addr_space[] = {
3072 {
3073 .pa_start = 0x481A0000,
3074 .pa_end = 0x481A0000 + SZ_1K - 1,
3075 .flags = ADDR_TYPE_RT,
3076 },
3077 { }
3078};
3079
3080static struct omap_hwmod_ocp_if am33xx_l4_ls__mcspi1 = {
3081 .master = &am33xx_l4_ls_hwmod,
3082 .slave = &am33xx_spi1_hwmod,
3083 .clk = "l4ls_gclk",
3084 .addr = am33xx_mcspi1_addr_space,
3085 .user = OCP_USER_MPU,
3086};
3087
3088/* l4 wkup -> timer1 */
3089static struct omap_hwmod_addr_space am33xx_timer1_addr_space[] = {
3090 {
3091 .pa_start = 0x44E31000,
3092 .pa_end = 0x44E31000 + SZ_1K - 1,
3093 .flags = ADDR_TYPE_RT
3094 },
3095 { }
3096};
3097
3098static struct omap_hwmod_ocp_if am33xx_l4_wkup__timer1 = {
3099 .master = &am33xx_l4_wkup_hwmod,
3100 .slave = &am33xx_timer1_hwmod,
3101 .clk = "dpll_core_m4_div2_ck",
3102 .addr = am33xx_timer1_addr_space,
3103 .user = OCP_USER_MPU,
3104};
3105
3106/* l4 per -> timer2 */
3107static struct omap_hwmod_addr_space am33xx_timer2_addr_space[] = {
3108 {
3109 .pa_start = 0x48040000,
3110 .pa_end = 0x48040000 + SZ_1K - 1,
3111 .flags = ADDR_TYPE_RT
3112 },
3113 { }
3114};
3115
3116static struct omap_hwmod_ocp_if am33xx_l4_ls__timer2 = {
3117 .master = &am33xx_l4_ls_hwmod,
3118 .slave = &am33xx_timer2_hwmod,
3119 .clk = "l4ls_gclk",
3120 .addr = am33xx_timer2_addr_space,
3121 .user = OCP_USER_MPU,
3122};
3123
3124/* l4 per -> timer3 */
3125static struct omap_hwmod_addr_space am33xx_timer3_addr_space[] = {
3126 {
3127 .pa_start = 0x48042000,
3128 .pa_end = 0x48042000 + SZ_1K - 1,
3129 .flags = ADDR_TYPE_RT
3130 },
3131 { }
3132};
3133
3134static struct omap_hwmod_ocp_if am33xx_l4_ls__timer3 = {
3135 .master = &am33xx_l4_ls_hwmod,
3136 .slave = &am33xx_timer3_hwmod,
3137 .clk = "l4ls_gclk",
3138 .addr = am33xx_timer3_addr_space,
3139 .user = OCP_USER_MPU,
3140};
3141
3142/* l4 per -> timer4 */
3143static struct omap_hwmod_addr_space am33xx_timer4_addr_space[] = {
3144 {
3145 .pa_start = 0x48044000,
3146 .pa_end = 0x48044000 + SZ_1K - 1,
3147 .flags = ADDR_TYPE_RT
3148 },
3149 { }
3150};
3151
3152static struct omap_hwmod_ocp_if am33xx_l4_ls__timer4 = {
3153 .master = &am33xx_l4_ls_hwmod,
3154 .slave = &am33xx_timer4_hwmod,
3155 .clk = "l4ls_gclk",
3156 .addr = am33xx_timer4_addr_space,
3157 .user = OCP_USER_MPU,
3158};
3159
3160/* l4 per -> timer5 */
3161static struct omap_hwmod_addr_space am33xx_timer5_addr_space[] = {
3162 {
3163 .pa_start = 0x48046000,
3164 .pa_end = 0x48046000 + SZ_1K - 1,
3165 .flags = ADDR_TYPE_RT
3166 },
3167 { }
3168};
3169
3170static struct omap_hwmod_ocp_if am33xx_l4_ls__timer5 = {
3171 .master = &am33xx_l4_ls_hwmod,
3172 .slave = &am33xx_timer5_hwmod,
3173 .clk = "l4ls_gclk",
3174 .addr = am33xx_timer5_addr_space,
3175 .user = OCP_USER_MPU,
3176};
3177
3178/* l4 per -> timer6 */
3179static struct omap_hwmod_addr_space am33xx_timer6_addr_space[] = {
3180 {
3181 .pa_start = 0x48048000,
3182 .pa_end = 0x48048000 + SZ_1K - 1,
3183 .flags = ADDR_TYPE_RT
3184 },
3185 { }
3186};
3187
3188static struct omap_hwmod_ocp_if am33xx_l4_ls__timer6 = {
3189 .master = &am33xx_l4_ls_hwmod,
3190 .slave = &am33xx_timer6_hwmod,
3191 .clk = "l4ls_gclk",
3192 .addr = am33xx_timer6_addr_space,
3193 .user = OCP_USER_MPU,
3194};
3195
3196/* l4 per -> timer7 */
3197static struct omap_hwmod_addr_space am33xx_timer7_addr_space[] = {
3198 {
3199 .pa_start = 0x4804A000,
3200 .pa_end = 0x4804A000 + SZ_1K - 1,
3201 .flags = ADDR_TYPE_RT
3202 },
3203 { }
3204};
3205
3206static struct omap_hwmod_ocp_if am33xx_l4_ls__timer7 = {
3207 .master = &am33xx_l4_ls_hwmod,
3208 .slave = &am33xx_timer7_hwmod,
3209 .clk = "l4ls_gclk",
3210 .addr = am33xx_timer7_addr_space,
3211 .user = OCP_USER_MPU,
3212};
3213
3214/* l3 main -> tpcc */
3215static struct omap_hwmod_addr_space am33xx_tpcc_addr_space[] = {
3216 {
3217 .pa_start = 0x49000000,
3218 .pa_end = 0x49000000 + SZ_32K - 1,
3219 .flags = ADDR_TYPE_RT
3220 },
3221 { }
3222};
3223
3224static struct omap_hwmod_ocp_if am33xx_l3_main__tpcc = {
3225 .master = &am33xx_l3_main_hwmod,
3226 .slave = &am33xx_tpcc_hwmod,
3227 .clk = "l3_gclk",
3228 .addr = am33xx_tpcc_addr_space,
3229 .user = OCP_USER_MPU,
3230};
3231
3232/* l3 main -> tpcc0 */
3233static struct omap_hwmod_addr_space am33xx_tptc0_addr_space[] = {
3234 {
3235 .pa_start = 0x49800000,
3236 .pa_end = 0x49800000 + SZ_8K - 1,
3237 .flags = ADDR_TYPE_RT,
3238 },
3239 { }
3240};
3241
3242static struct omap_hwmod_ocp_if am33xx_l3_main__tptc0 = {
3243 .master = &am33xx_l3_main_hwmod,
3244 .slave = &am33xx_tptc0_hwmod,
3245 .clk = "l3_gclk",
3246 .addr = am33xx_tptc0_addr_space,
3247 .user = OCP_USER_MPU,
3248};
3249
3250/* l3 main -> tpcc1 */
3251static struct omap_hwmod_addr_space am33xx_tptc1_addr_space[] = {
3252 {
3253 .pa_start = 0x49900000,
3254 .pa_end = 0x49900000 + SZ_8K - 1,
3255 .flags = ADDR_TYPE_RT,
3256 },
3257 { }
3258};
3259
3260static struct omap_hwmod_ocp_if am33xx_l3_main__tptc1 = {
3261 .master = &am33xx_l3_main_hwmod,
3262 .slave = &am33xx_tptc1_hwmod,
3263 .clk = "l3_gclk",
3264 .addr = am33xx_tptc1_addr_space,
3265 .user = OCP_USER_MPU,
3266};
3267
3268/* l3 main -> tpcc2 */
3269static struct omap_hwmod_addr_space am33xx_tptc2_addr_space[] = {
3270 {
3271 .pa_start = 0x49a00000,
3272 .pa_end = 0x49a00000 + SZ_8K - 1,
3273 .flags = ADDR_TYPE_RT,
3274 },
3275 { }
3276};
3277
3278static struct omap_hwmod_ocp_if am33xx_l3_main__tptc2 = {
3279 .master = &am33xx_l3_main_hwmod,
3280 .slave = &am33xx_tptc2_hwmod,
3281 .clk = "l3_gclk",
3282 .addr = am33xx_tptc2_addr_space,
3283 .user = OCP_USER_MPU,
3284};
3285
3286/* l4 wkup -> uart1 */
3287static struct omap_hwmod_addr_space am33xx_uart1_addr_space[] = {
3288 {
3289 .pa_start = 0x44E09000,
3290 .pa_end = 0x44E09000 + SZ_8K - 1,
3291 .flags = ADDR_TYPE_RT,
3292 },
3293 { }
3294};
3295
3296static struct omap_hwmod_ocp_if am33xx_l4_wkup__uart1 = {
3297 .master = &am33xx_l4_wkup_hwmod,
3298 .slave = &am33xx_uart1_hwmod,
3299 .clk = "dpll_core_m4_div2_ck",
3300 .addr = am33xx_uart1_addr_space,
3301 .user = OCP_USER_MPU,
3302};
3303
3304/* l4 ls -> uart2 */
3305static struct omap_hwmod_addr_space am33xx_uart2_addr_space[] = {
3306 {
3307 .pa_start = 0x48022000,
3308 .pa_end = 0x48022000 + SZ_8K - 1,
3309 .flags = ADDR_TYPE_RT,
3310 },
3311 { }
3312};
3313
3314static struct omap_hwmod_ocp_if am33xx_l4_ls__uart2 = {
3315 .master = &am33xx_l4_ls_hwmod,
3316 .slave = &am33xx_uart2_hwmod,
3317 .clk = "l4ls_gclk",
3318 .addr = am33xx_uart2_addr_space,
3319 .user = OCP_USER_MPU,
3320};
3321
3322/* l4 ls -> uart3 */
3323static struct omap_hwmod_addr_space am33xx_uart3_addr_space[] = {
3324 {
3325 .pa_start = 0x48024000,
3326 .pa_end = 0x48024000 + SZ_8K - 1,
3327 .flags = ADDR_TYPE_RT,
3328 },
3329 { }
3330};
3331
3332static struct omap_hwmod_ocp_if am33xx_l4_ls__uart3 = {
3333 .master = &am33xx_l4_ls_hwmod,
3334 .slave = &am33xx_uart3_hwmod,
3335 .clk = "l4ls_gclk",
3336 .addr = am33xx_uart3_addr_space,
3337 .user = OCP_USER_MPU,
3338};
3339
3340/* l4 ls -> uart4 */
3341static struct omap_hwmod_addr_space am33xx_uart4_addr_space[] = {
3342 {
3343 .pa_start = 0x481A6000,
3344 .pa_end = 0x481A6000 + SZ_8K - 1,
3345 .flags = ADDR_TYPE_RT,
3346 },
3347 { }
3348};
3349
3350static struct omap_hwmod_ocp_if am33xx_l4_ls__uart4 = {
3351 .master = &am33xx_l4_ls_hwmod,
3352 .slave = &am33xx_uart4_hwmod,
3353 .clk = "l4ls_gclk",
3354 .addr = am33xx_uart4_addr_space,
3355 .user = OCP_USER_MPU,
3356};
3357
3358/* l4 ls -> uart5 */
3359static struct omap_hwmod_addr_space am33xx_uart5_addr_space[] = {
3360 {
3361 .pa_start = 0x481A8000,
3362 .pa_end = 0x481A8000 + SZ_8K - 1,
3363 .flags = ADDR_TYPE_RT,
3364 },
3365 { }
3366};
3367
3368static struct omap_hwmod_ocp_if am33xx_l4_ls__uart5 = {
3369 .master = &am33xx_l4_ls_hwmod,
3370 .slave = &am33xx_uart5_hwmod,
3371 .clk = "l4ls_gclk",
3372 .addr = am33xx_uart5_addr_space,
3373 .user = OCP_USER_MPU,
3374};
3375
3376/* l4 ls -> uart6 */
3377static struct omap_hwmod_addr_space am33xx_uart6_addr_space[] = {
3378 {
3379 .pa_start = 0x481aa000,
3380 .pa_end = 0x481aa000 + SZ_8K - 1,
3381 .flags = ADDR_TYPE_RT,
3382 },
3383 { }
3384};
3385
3386static struct omap_hwmod_ocp_if am33xx_l4_ls__uart6 = {
3387 .master = &am33xx_l4_ls_hwmod,
3388 .slave = &am33xx_uart6_hwmod,
3389 .clk = "l4ls_gclk",
3390 .addr = am33xx_uart6_addr_space,
3391 .user = OCP_USER_MPU,
3392};
3393
3394/* l4 wkup -> wd_timer1 */
3395static struct omap_hwmod_addr_space am33xx_wd_timer1_addrs[] = {
3396 {
3397 .pa_start = 0x44e35000,
3398 .pa_end = 0x44e35000 + SZ_4K - 1,
3399 .flags = ADDR_TYPE_RT
3400 },
3401 { }
3402};
3403
3404static struct omap_hwmod_ocp_if am33xx_l4_wkup__wd_timer1 = {
3405 .master = &am33xx_l4_wkup_hwmod,
3406 .slave = &am33xx_wd_timer1_hwmod,
3407 .clk = "dpll_core_m4_div2_ck",
3408 .addr = am33xx_wd_timer1_addrs,
3409 .user = OCP_USER_MPU,
3410};
3411
3412/* usbss */
3413/* l3 s -> USBSS interface */
3414static struct omap_hwmod_addr_space am33xx_usbss_addr_space[] = {
3415 {
3416 .name = "usbss",
3417 .pa_start = 0x47400000,
3418 .pa_end = 0x47400000 + SZ_4K - 1,
3419 .flags = ADDR_TYPE_RT
3420 },
3421 {
3422 .name = "musb0",
3423 .pa_start = 0x47401000,
3424 .pa_end = 0x47401000 + SZ_2K - 1,
3425 .flags = ADDR_TYPE_RT
3426 },
3427 {
3428 .name = "musb1",
3429 .pa_start = 0x47401800,
3430 .pa_end = 0x47401800 + SZ_2K - 1,
3431 .flags = ADDR_TYPE_RT
3432 },
3433 { }
3434};
3435
3436static struct omap_hwmod_ocp_if am33xx_l3_s__usbss = {
3437 .master = &am33xx_l3_s_hwmod,
3438 .slave = &am33xx_usbss_hwmod,
3439 .clk = "l3s_gclk",
3440 .addr = am33xx_usbss_addr_space,
3441 .user = OCP_USER_MPU,
3442 .flags = OCPIF_SWSUP_IDLE,
3443};
3444
ca903b6f
VB
3445/* l3 main -> ocmc */
3446static struct omap_hwmod_ocp_if am33xx_l3_main__ocmc = {
3447 .master = &am33xx_l3_main_hwmod,
3448 .slave = &am33xx_ocmcram_hwmod,
3449 .user = OCP_USER_MPU | OCP_USER_SDMA,
3450};
3451
a2cfc509
VH
3452static struct omap_hwmod_ocp_if *am33xx_hwmod_ocp_ifs[] __initdata = {
3453 &am33xx_l4_fw__emif_fw,
3454 &am33xx_l3_main__emif,
3455 &am33xx_mpu__l3_main,
3456 &am33xx_mpu__prcm,
3457 &am33xx_l3_s__l4_ls,
3458 &am33xx_l3_s__l4_wkup,
3459 &am33xx_l3_s__l4_fw,
3460 &am33xx_l3_main__l4_hs,
3461 &am33xx_l3_main__l3_s,
3462 &am33xx_l3_main__l3_instr,
3463 &am33xx_l3_main__gfx,
3464 &am33xx_l3_s__l3_main,
3465 &am33xx_pruss__l3_main,
3466 &am33xx_wkup_m3__l4_wkup,
3467 &am33xx_gfx__l3_main,
3468 &am33xx_l4_wkup__wkup_m3,
3469 &am33xx_l4_wkup__control,
3470 &am33xx_l4_wkup__smartreflex0,
3471 &am33xx_l4_wkup__smartreflex1,
3472 &am33xx_l4_wkup__uart1,
3473 &am33xx_l4_wkup__timer1,
3474 &am33xx_l4_wkup__rtc,
3475 &am33xx_l4_wkup__i2c1,
3476 &am33xx_l4_wkup__gpio0,
3477 &am33xx_l4_wkup__adc_tsc,
3478 &am33xx_l4_wkup__wd_timer1,
3479 &am33xx_l4_hs__pruss,
3480 &am33xx_l4_per__dcan0,
3481 &am33xx_l4_per__dcan1,
3482 &am33xx_l4_per__gpio1,
3483 &am33xx_l4_per__gpio2,
3484 &am33xx_l4_per__gpio3,
3485 &am33xx_l4_per__i2c2,
3486 &am33xx_l4_per__i2c3,
3487 &am33xx_l4_per__mailbox,
3488 &am33xx_l4_ls__mcasp0,
3489 &am33xx_l3_s__mcasp0_data,
3490 &am33xx_l4_ls__mcasp1,
3491 &am33xx_l3_s__mcasp1_data,
3492 &am33xx_l4_ls__mmc0,
3493 &am33xx_l4_ls__mmc1,
3494 &am33xx_l3_s__mmc2,
3495 &am33xx_l4_ls__timer2,
3496 &am33xx_l4_ls__timer3,
3497 &am33xx_l4_ls__timer4,
3498 &am33xx_l4_ls__timer5,
3499 &am33xx_l4_ls__timer6,
3500 &am33xx_l4_ls__timer7,
3501 &am33xx_l3_main__tpcc,
3502 &am33xx_l4_ls__uart2,
3503 &am33xx_l4_ls__uart3,
3504 &am33xx_l4_ls__uart4,
3505 &am33xx_l4_ls__uart5,
3506 &am33xx_l4_ls__uart6,
3507 &am33xx_l4_ls__spinlock,
3508 &am33xx_l4_ls__elm,
9652d19a
PA
3509 &am33xx_l4_ls__epwmss0,
3510 &am33xx_epwmss0__ecap0,
3511 &am33xx_epwmss0__eqep0,
3512 &am33xx_epwmss0__ehrpwm0,
3513 &am33xx_l4_ls__epwmss1,
3514 &am33xx_epwmss1__ecap1,
3515 &am33xx_epwmss1__eqep1,
3516 &am33xx_epwmss1__ehrpwm1,
3517 &am33xx_l4_ls__epwmss2,
3518 &am33xx_epwmss2__ecap2,
3519 &am33xx_epwmss2__eqep2,
3520 &am33xx_epwmss2__ehrpwm2,
a2cfc509
VH
3521 &am33xx_l3_s__gpmc,
3522 &am33xx_l3_main__lcdc,
3523 &am33xx_l4_ls__mcspi0,
3524 &am33xx_l4_ls__mcspi1,
3525 &am33xx_l3_main__tptc0,
3526 &am33xx_l3_main__tptc1,
3527 &am33xx_l3_main__tptc2,
ca903b6f 3528 &am33xx_l3_main__ocmc,
a2cfc509
VH
3529 &am33xx_l3_s__usbss,
3530 &am33xx_l4_hs__cpgmac0,
70384a6a 3531 &am33xx_cpgmac0__mdio,
a2cfc509
VH
3532 NULL,
3533};
3534
3535int __init am33xx_hwmod_init(void)
3536{
3537 omap_hwmod_init();
3538 return omap_hwmod_register_links(am33xx_hwmod_ocp_ifs);
3539}
This page took 0.198456 seconds and 5 git commands to generate.