2 * Hardware modules present on the OMAP44xx chips
4 * Copyright (C) 2009-2011 Texas Instruments, Inc.
5 * Copyright (C) 2009-2010 Nokia Corporation
10 * This file is automatically generated from the OMAP hardware databases.
11 * We respectfully ask that any modifications to this file be coordinated
12 * with the public linux-omap@vger.kernel.org mailing list and the
13 * authors above to ensure that the autogeneration scripts are kept
14 * up-to-date with the file contents.
16 * This program is free software; you can redistribute it and/or modify
17 * it under the terms of the GNU General Public License version 2 as
18 * published by the Free Software Foundation.
23 #include <plat/omap_hwmod.h>
26 #include <plat/gpio.h>
28 #include <plat/mcspi.h>
29 #include <plat/mcbsp.h>
33 #include "omap_hwmod_common_data.h"
38 #include "prm-regbits-44xx.h"
41 /* Base offset for all OMAP4 interrupts external to MPUSS */
42 #define OMAP44XX_IRQ_GIC_START 32
44 /* Base offset for all OMAP4 dma requests */
45 #define OMAP44XX_DMA_REQ_START 1
47 /* Backward references (IPs with Bus Master capability) */
48 static struct omap_hwmod omap44xx_aess_hwmod;
49 static struct omap_hwmod omap44xx_dma_system_hwmod;
50 static struct omap_hwmod omap44xx_dmm_hwmod;
51 static struct omap_hwmod omap44xx_dsp_hwmod;
52 static struct omap_hwmod omap44xx_dss_hwmod;
53 static struct omap_hwmod omap44xx_emif_fw_hwmod;
54 static struct omap_hwmod omap44xx_hsi_hwmod;
55 static struct omap_hwmod omap44xx_ipu_hwmod;
56 static struct omap_hwmod omap44xx_iss_hwmod;
57 static struct omap_hwmod omap44xx_iva_hwmod;
58 static struct omap_hwmod omap44xx_l3_instr_hwmod;
59 static struct omap_hwmod omap44xx_l3_main_1_hwmod;
60 static struct omap_hwmod omap44xx_l3_main_2_hwmod;
61 static struct omap_hwmod omap44xx_l3_main_3_hwmod;
62 static struct omap_hwmod omap44xx_l4_abe_hwmod;
63 static struct omap_hwmod omap44xx_l4_cfg_hwmod;
64 static struct omap_hwmod omap44xx_l4_per_hwmod;
65 static struct omap_hwmod omap44xx_l4_wkup_hwmod;
66 static struct omap_hwmod omap44xx_mmc1_hwmod;
67 static struct omap_hwmod omap44xx_mmc2_hwmod;
68 static struct omap_hwmod omap44xx_mpu_hwmod;
69 static struct omap_hwmod omap44xx_mpu_private_hwmod;
70 static struct omap_hwmod omap44xx_usb_otg_hs_hwmod;
73 * Interconnects omap_hwmod structures
74 * hwmods that compose the global OMAP interconnect
81 static struct omap_hwmod_class omap44xx_dmm_hwmod_class = {
86 static struct omap_hwmod_irq_info omap44xx_dmm_irqs[] = {
87 { .irq = 113 + OMAP44XX_IRQ_GIC_START },
91 /* l3_main_1 -> dmm */
92 static struct omap_hwmod_ocp_if omap44xx_l3_main_1__dmm = {
93 .master = &omap44xx_l3_main_1_hwmod,
94 .slave = &omap44xx_dmm_hwmod,
96 .user = OCP_USER_SDMA,
99 static struct omap_hwmod_addr_space omap44xx_dmm_addrs[] = {
101 .pa_start = 0x4e000000,
102 .pa_end = 0x4e0007ff,
103 .flags = ADDR_TYPE_RT
109 static struct omap_hwmod_ocp_if omap44xx_mpu__dmm = {
110 .master = &omap44xx_mpu_hwmod,
111 .slave = &omap44xx_dmm_hwmod,
113 .addr = omap44xx_dmm_addrs,
114 .user = OCP_USER_MPU,
117 /* dmm slave ports */
118 static struct omap_hwmod_ocp_if *omap44xx_dmm_slaves[] = {
119 &omap44xx_l3_main_1__dmm,
123 static struct omap_hwmod omap44xx_dmm_hwmod = {
125 .class = &omap44xx_dmm_hwmod_class,
126 .clkdm_name = "l3_emif_clkdm",
127 .slaves = omap44xx_dmm_slaves,
128 .slaves_cnt = ARRAY_SIZE(omap44xx_dmm_slaves),
129 .mpu_irqs = omap44xx_dmm_irqs,
130 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
135 * instance(s): emif_fw
137 static struct omap_hwmod_class omap44xx_emif_fw_hwmod_class = {
143 static struct omap_hwmod_ocp_if omap44xx_dmm__emif_fw = {
144 .master = &omap44xx_dmm_hwmod,
145 .slave = &omap44xx_emif_fw_hwmod,
147 .user = OCP_USER_MPU | OCP_USER_SDMA,
150 static struct omap_hwmod_addr_space omap44xx_emif_fw_addrs[] = {
152 .pa_start = 0x4a20c000,
153 .pa_end = 0x4a20c0ff,
154 .flags = ADDR_TYPE_RT
159 /* l4_cfg -> emif_fw */
160 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__emif_fw = {
161 .master = &omap44xx_l4_cfg_hwmod,
162 .slave = &omap44xx_emif_fw_hwmod,
164 .addr = omap44xx_emif_fw_addrs,
165 .user = OCP_USER_MPU,
168 /* emif_fw slave ports */
169 static struct omap_hwmod_ocp_if *omap44xx_emif_fw_slaves[] = {
170 &omap44xx_dmm__emif_fw,
171 &omap44xx_l4_cfg__emif_fw,
174 static struct omap_hwmod omap44xx_emif_fw_hwmod = {
176 .class = &omap44xx_emif_fw_hwmod_class,
177 .clkdm_name = "l3_emif_clkdm",
178 .slaves = omap44xx_emif_fw_slaves,
179 .slaves_cnt = ARRAY_SIZE(omap44xx_emif_fw_slaves),
180 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
185 * instance(s): l3_instr, l3_main_1, l3_main_2, l3_main_3
187 static struct omap_hwmod_class omap44xx_l3_hwmod_class = {
192 /* iva -> l3_instr */
193 static struct omap_hwmod_ocp_if omap44xx_iva__l3_instr = {
194 .master = &omap44xx_iva_hwmod,
195 .slave = &omap44xx_l3_instr_hwmod,
197 .user = OCP_USER_MPU | OCP_USER_SDMA,
200 /* l3_main_3 -> l3_instr */
201 static struct omap_hwmod_ocp_if omap44xx_l3_main_3__l3_instr = {
202 .master = &omap44xx_l3_main_3_hwmod,
203 .slave = &omap44xx_l3_instr_hwmod,
205 .user = OCP_USER_MPU | OCP_USER_SDMA,
208 /* l3_instr slave ports */
209 static struct omap_hwmod_ocp_if *omap44xx_l3_instr_slaves[] = {
210 &omap44xx_iva__l3_instr,
211 &omap44xx_l3_main_3__l3_instr,
214 static struct omap_hwmod omap44xx_l3_instr_hwmod = {
216 .class = &omap44xx_l3_hwmod_class,
217 .clkdm_name = "l3_instr_clkdm",
218 .slaves = omap44xx_l3_instr_slaves,
219 .slaves_cnt = ARRAY_SIZE(omap44xx_l3_instr_slaves),
220 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
224 static struct omap_hwmod_irq_info omap44xx_l3_main_1_irqs[] = {
225 { .name = "dbg_err", .irq = 9 + OMAP44XX_IRQ_GIC_START },
226 { .name = "app_err", .irq = 10 + OMAP44XX_IRQ_GIC_START },
230 /* dsp -> l3_main_1 */
231 static struct omap_hwmod_ocp_if omap44xx_dsp__l3_main_1 = {
232 .master = &omap44xx_dsp_hwmod,
233 .slave = &omap44xx_l3_main_1_hwmod,
235 .user = OCP_USER_MPU | OCP_USER_SDMA,
238 /* dss -> l3_main_1 */
239 static struct omap_hwmod_ocp_if omap44xx_dss__l3_main_1 = {
240 .master = &omap44xx_dss_hwmod,
241 .slave = &omap44xx_l3_main_1_hwmod,
243 .user = OCP_USER_MPU | OCP_USER_SDMA,
246 /* l3_main_2 -> l3_main_1 */
247 static struct omap_hwmod_ocp_if omap44xx_l3_main_2__l3_main_1 = {
248 .master = &omap44xx_l3_main_2_hwmod,
249 .slave = &omap44xx_l3_main_1_hwmod,
251 .user = OCP_USER_MPU | OCP_USER_SDMA,
254 /* l4_cfg -> l3_main_1 */
255 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l3_main_1 = {
256 .master = &omap44xx_l4_cfg_hwmod,
257 .slave = &omap44xx_l3_main_1_hwmod,
259 .user = OCP_USER_MPU | OCP_USER_SDMA,
262 /* mmc1 -> l3_main_1 */
263 static struct omap_hwmod_ocp_if omap44xx_mmc1__l3_main_1 = {
264 .master = &omap44xx_mmc1_hwmod,
265 .slave = &omap44xx_l3_main_1_hwmod,
267 .user = OCP_USER_MPU | OCP_USER_SDMA,
270 /* mmc2 -> l3_main_1 */
271 static struct omap_hwmod_ocp_if omap44xx_mmc2__l3_main_1 = {
272 .master = &omap44xx_mmc2_hwmod,
273 .slave = &omap44xx_l3_main_1_hwmod,
275 .user = OCP_USER_MPU | OCP_USER_SDMA,
278 static struct omap_hwmod_addr_space omap44xx_l3_main_1_addrs[] = {
280 .pa_start = 0x44000000,
281 .pa_end = 0x44000fff,
282 .flags = ADDR_TYPE_RT
287 /* mpu -> l3_main_1 */
288 static struct omap_hwmod_ocp_if omap44xx_mpu__l3_main_1 = {
289 .master = &omap44xx_mpu_hwmod,
290 .slave = &omap44xx_l3_main_1_hwmod,
292 .addr = omap44xx_l3_main_1_addrs,
293 .user = OCP_USER_MPU,
296 /* l3_main_1 slave ports */
297 static struct omap_hwmod_ocp_if *omap44xx_l3_main_1_slaves[] = {
298 &omap44xx_dsp__l3_main_1,
299 &omap44xx_dss__l3_main_1,
300 &omap44xx_l3_main_2__l3_main_1,
301 &omap44xx_l4_cfg__l3_main_1,
302 &omap44xx_mmc1__l3_main_1,
303 &omap44xx_mmc2__l3_main_1,
304 &omap44xx_mpu__l3_main_1,
307 static struct omap_hwmod omap44xx_l3_main_1_hwmod = {
309 .class = &omap44xx_l3_hwmod_class,
310 .clkdm_name = "l3_1_clkdm",
311 .mpu_irqs = omap44xx_l3_main_1_irqs,
312 .slaves = omap44xx_l3_main_1_slaves,
313 .slaves_cnt = ARRAY_SIZE(omap44xx_l3_main_1_slaves),
314 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
318 /* dma_system -> l3_main_2 */
319 static struct omap_hwmod_ocp_if omap44xx_dma_system__l3_main_2 = {
320 .master = &omap44xx_dma_system_hwmod,
321 .slave = &omap44xx_l3_main_2_hwmod,
323 .user = OCP_USER_MPU | OCP_USER_SDMA,
326 /* hsi -> l3_main_2 */
327 static struct omap_hwmod_ocp_if omap44xx_hsi__l3_main_2 = {
328 .master = &omap44xx_hsi_hwmod,
329 .slave = &omap44xx_l3_main_2_hwmod,
331 .user = OCP_USER_MPU | OCP_USER_SDMA,
334 /* ipu -> l3_main_2 */
335 static struct omap_hwmod_ocp_if omap44xx_ipu__l3_main_2 = {
336 .master = &omap44xx_ipu_hwmod,
337 .slave = &omap44xx_l3_main_2_hwmod,
339 .user = OCP_USER_MPU | OCP_USER_SDMA,
342 /* iss -> l3_main_2 */
343 static struct omap_hwmod_ocp_if omap44xx_iss__l3_main_2 = {
344 .master = &omap44xx_iss_hwmod,
345 .slave = &omap44xx_l3_main_2_hwmod,
347 .user = OCP_USER_MPU | OCP_USER_SDMA,
350 /* iva -> l3_main_2 */
351 static struct omap_hwmod_ocp_if omap44xx_iva__l3_main_2 = {
352 .master = &omap44xx_iva_hwmod,
353 .slave = &omap44xx_l3_main_2_hwmod,
355 .user = OCP_USER_MPU | OCP_USER_SDMA,
358 static struct omap_hwmod_addr_space omap44xx_l3_main_2_addrs[] = {
360 .pa_start = 0x44800000,
361 .pa_end = 0x44801fff,
362 .flags = ADDR_TYPE_RT
367 /* l3_main_1 -> l3_main_2 */
368 static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l3_main_2 = {
369 .master = &omap44xx_l3_main_1_hwmod,
370 .slave = &omap44xx_l3_main_2_hwmod,
372 .addr = omap44xx_l3_main_2_addrs,
373 .user = OCP_USER_MPU,
376 /* l4_cfg -> l3_main_2 */
377 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l3_main_2 = {
378 .master = &omap44xx_l4_cfg_hwmod,
379 .slave = &omap44xx_l3_main_2_hwmod,
381 .user = OCP_USER_MPU | OCP_USER_SDMA,
384 /* usb_otg_hs -> l3_main_2 */
385 static struct omap_hwmod_ocp_if omap44xx_usb_otg_hs__l3_main_2 = {
386 .master = &omap44xx_usb_otg_hs_hwmod,
387 .slave = &omap44xx_l3_main_2_hwmod,
389 .user = OCP_USER_MPU | OCP_USER_SDMA,
392 /* l3_main_2 slave ports */
393 static struct omap_hwmod_ocp_if *omap44xx_l3_main_2_slaves[] = {
394 &omap44xx_dma_system__l3_main_2,
395 &omap44xx_hsi__l3_main_2,
396 &omap44xx_ipu__l3_main_2,
397 &omap44xx_iss__l3_main_2,
398 &omap44xx_iva__l3_main_2,
399 &omap44xx_l3_main_1__l3_main_2,
400 &omap44xx_l4_cfg__l3_main_2,
401 &omap44xx_usb_otg_hs__l3_main_2,
404 static struct omap_hwmod omap44xx_l3_main_2_hwmod = {
406 .class = &omap44xx_l3_hwmod_class,
407 .clkdm_name = "l3_2_clkdm",
408 .slaves = omap44xx_l3_main_2_slaves,
409 .slaves_cnt = ARRAY_SIZE(omap44xx_l3_main_2_slaves),
410 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
414 static struct omap_hwmod_addr_space omap44xx_l3_main_3_addrs[] = {
416 .pa_start = 0x45000000,
417 .pa_end = 0x45000fff,
418 .flags = ADDR_TYPE_RT
423 /* l3_main_1 -> l3_main_3 */
424 static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l3_main_3 = {
425 .master = &omap44xx_l3_main_1_hwmod,
426 .slave = &omap44xx_l3_main_3_hwmod,
428 .addr = omap44xx_l3_main_3_addrs,
429 .user = OCP_USER_MPU,
432 /* l3_main_2 -> l3_main_3 */
433 static struct omap_hwmod_ocp_if omap44xx_l3_main_2__l3_main_3 = {
434 .master = &omap44xx_l3_main_2_hwmod,
435 .slave = &omap44xx_l3_main_3_hwmod,
437 .user = OCP_USER_MPU | OCP_USER_SDMA,
440 /* l4_cfg -> l3_main_3 */
441 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l3_main_3 = {
442 .master = &omap44xx_l4_cfg_hwmod,
443 .slave = &omap44xx_l3_main_3_hwmod,
445 .user = OCP_USER_MPU | OCP_USER_SDMA,
448 /* l3_main_3 slave ports */
449 static struct omap_hwmod_ocp_if *omap44xx_l3_main_3_slaves[] = {
450 &omap44xx_l3_main_1__l3_main_3,
451 &omap44xx_l3_main_2__l3_main_3,
452 &omap44xx_l4_cfg__l3_main_3,
455 static struct omap_hwmod omap44xx_l3_main_3_hwmod = {
457 .class = &omap44xx_l3_hwmod_class,
458 .clkdm_name = "l3_instr_clkdm",
459 .slaves = omap44xx_l3_main_3_slaves,
460 .slaves_cnt = ARRAY_SIZE(omap44xx_l3_main_3_slaves),
461 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
466 * instance(s): l4_abe, l4_cfg, l4_per, l4_wkup
468 static struct omap_hwmod_class omap44xx_l4_hwmod_class = {
474 static struct omap_hwmod_ocp_if omap44xx_aess__l4_abe = {
475 .master = &omap44xx_aess_hwmod,
476 .slave = &omap44xx_l4_abe_hwmod,
477 .clk = "ocp_abe_iclk",
478 .user = OCP_USER_MPU | OCP_USER_SDMA,
482 static struct omap_hwmod_ocp_if omap44xx_dsp__l4_abe = {
483 .master = &omap44xx_dsp_hwmod,
484 .slave = &omap44xx_l4_abe_hwmod,
485 .clk = "ocp_abe_iclk",
486 .user = OCP_USER_MPU | OCP_USER_SDMA,
489 /* l3_main_1 -> l4_abe */
490 static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l4_abe = {
491 .master = &omap44xx_l3_main_1_hwmod,
492 .slave = &omap44xx_l4_abe_hwmod,
494 .user = OCP_USER_MPU | OCP_USER_SDMA,
498 static struct omap_hwmod_ocp_if omap44xx_mpu__l4_abe = {
499 .master = &omap44xx_mpu_hwmod,
500 .slave = &omap44xx_l4_abe_hwmod,
501 .clk = "ocp_abe_iclk",
502 .user = OCP_USER_MPU | OCP_USER_SDMA,
505 /* l4_abe slave ports */
506 static struct omap_hwmod_ocp_if *omap44xx_l4_abe_slaves[] = {
507 &omap44xx_aess__l4_abe,
508 &omap44xx_dsp__l4_abe,
509 &omap44xx_l3_main_1__l4_abe,
510 &omap44xx_mpu__l4_abe,
513 static struct omap_hwmod omap44xx_l4_abe_hwmod = {
515 .class = &omap44xx_l4_hwmod_class,
516 .clkdm_name = "abe_clkdm",
517 .slaves = omap44xx_l4_abe_slaves,
518 .slaves_cnt = ARRAY_SIZE(omap44xx_l4_abe_slaves),
519 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
523 /* l3_main_1 -> l4_cfg */
524 static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l4_cfg = {
525 .master = &omap44xx_l3_main_1_hwmod,
526 .slave = &omap44xx_l4_cfg_hwmod,
528 .user = OCP_USER_MPU | OCP_USER_SDMA,
531 /* l4_cfg slave ports */
532 static struct omap_hwmod_ocp_if *omap44xx_l4_cfg_slaves[] = {
533 &omap44xx_l3_main_1__l4_cfg,
536 static struct omap_hwmod omap44xx_l4_cfg_hwmod = {
538 .class = &omap44xx_l4_hwmod_class,
539 .clkdm_name = "l4_cfg_clkdm",
540 .slaves = omap44xx_l4_cfg_slaves,
541 .slaves_cnt = ARRAY_SIZE(omap44xx_l4_cfg_slaves),
542 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
546 /* l3_main_2 -> l4_per */
547 static struct omap_hwmod_ocp_if omap44xx_l3_main_2__l4_per = {
548 .master = &omap44xx_l3_main_2_hwmod,
549 .slave = &omap44xx_l4_per_hwmod,
551 .user = OCP_USER_MPU | OCP_USER_SDMA,
554 /* l4_per slave ports */
555 static struct omap_hwmod_ocp_if *omap44xx_l4_per_slaves[] = {
556 &omap44xx_l3_main_2__l4_per,
559 static struct omap_hwmod omap44xx_l4_per_hwmod = {
561 .class = &omap44xx_l4_hwmod_class,
562 .clkdm_name = "l4_per_clkdm",
563 .slaves = omap44xx_l4_per_slaves,
564 .slaves_cnt = ARRAY_SIZE(omap44xx_l4_per_slaves),
565 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
569 /* l4_cfg -> l4_wkup */
570 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l4_wkup = {
571 .master = &omap44xx_l4_cfg_hwmod,
572 .slave = &omap44xx_l4_wkup_hwmod,
574 .user = OCP_USER_MPU | OCP_USER_SDMA,
577 /* l4_wkup slave ports */
578 static struct omap_hwmod_ocp_if *omap44xx_l4_wkup_slaves[] = {
579 &omap44xx_l4_cfg__l4_wkup,
582 static struct omap_hwmod omap44xx_l4_wkup_hwmod = {
584 .class = &omap44xx_l4_hwmod_class,
585 .clkdm_name = "l4_wkup_clkdm",
586 .slaves = omap44xx_l4_wkup_slaves,
587 .slaves_cnt = ARRAY_SIZE(omap44xx_l4_wkup_slaves),
588 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
593 * instance(s): mpu_private
595 static struct omap_hwmod_class omap44xx_mpu_bus_hwmod_class = {
600 /* mpu -> mpu_private */
601 static struct omap_hwmod_ocp_if omap44xx_mpu__mpu_private = {
602 .master = &omap44xx_mpu_hwmod,
603 .slave = &omap44xx_mpu_private_hwmod,
605 .user = OCP_USER_MPU | OCP_USER_SDMA,
608 /* mpu_private slave ports */
609 static struct omap_hwmod_ocp_if *omap44xx_mpu_private_slaves[] = {
610 &omap44xx_mpu__mpu_private,
613 static struct omap_hwmod omap44xx_mpu_private_hwmod = {
614 .name = "mpu_private",
615 .class = &omap44xx_mpu_bus_hwmod_class,
616 .clkdm_name = "mpuss_clkdm",
617 .slaves = omap44xx_mpu_private_slaves,
618 .slaves_cnt = ARRAY_SIZE(omap44xx_mpu_private_slaves),
619 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
623 * Modules omap_hwmod structures
625 * The following IPs are excluded for the moment because:
626 * - They do not need an explicit SW control using omap_hwmod API.
627 * - They still need to be validated with the driver
628 * properly adapted to omap_hwmod / omap_device
635 * ctrl_module_pad_core
636 * ctrl_module_pad_wkup
669 * audio engine sub system
672 static struct omap_hwmod_class_sysconfig omap44xx_aess_sysc = {
675 .sysc_flags = (SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE),
676 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
677 MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART |
678 MSTANDBY_SMART_WKUP),
679 .sysc_fields = &omap_hwmod_sysc_type2,
682 static struct omap_hwmod_class omap44xx_aess_hwmod_class = {
684 .sysc = &omap44xx_aess_sysc,
688 static struct omap_hwmod_irq_info omap44xx_aess_irqs[] = {
689 { .irq = 99 + OMAP44XX_IRQ_GIC_START },
693 static struct omap_hwmod_dma_info omap44xx_aess_sdma_reqs[] = {
694 { .name = "fifo0", .dma_req = 100 + OMAP44XX_DMA_REQ_START },
695 { .name = "fifo1", .dma_req = 101 + OMAP44XX_DMA_REQ_START },
696 { .name = "fifo2", .dma_req = 102 + OMAP44XX_DMA_REQ_START },
697 { .name = "fifo3", .dma_req = 103 + OMAP44XX_DMA_REQ_START },
698 { .name = "fifo4", .dma_req = 104 + OMAP44XX_DMA_REQ_START },
699 { .name = "fifo5", .dma_req = 105 + OMAP44XX_DMA_REQ_START },
700 { .name = "fifo6", .dma_req = 106 + OMAP44XX_DMA_REQ_START },
701 { .name = "fifo7", .dma_req = 107 + OMAP44XX_DMA_REQ_START },
705 /* aess master ports */
706 static struct omap_hwmod_ocp_if *omap44xx_aess_masters[] = {
707 &omap44xx_aess__l4_abe,
710 static struct omap_hwmod_addr_space omap44xx_aess_addrs[] = {
712 .pa_start = 0x401f1000,
713 .pa_end = 0x401f13ff,
714 .flags = ADDR_TYPE_RT
720 static struct omap_hwmod_ocp_if omap44xx_l4_abe__aess = {
721 .master = &omap44xx_l4_abe_hwmod,
722 .slave = &omap44xx_aess_hwmod,
723 .clk = "ocp_abe_iclk",
724 .addr = omap44xx_aess_addrs,
725 .user = OCP_USER_MPU,
728 static struct omap_hwmod_addr_space omap44xx_aess_dma_addrs[] = {
730 .pa_start = 0x490f1000,
731 .pa_end = 0x490f13ff,
732 .flags = ADDR_TYPE_RT
737 /* l4_abe -> aess (dma) */
738 static struct omap_hwmod_ocp_if omap44xx_l4_abe__aess_dma = {
739 .master = &omap44xx_l4_abe_hwmod,
740 .slave = &omap44xx_aess_hwmod,
741 .clk = "ocp_abe_iclk",
742 .addr = omap44xx_aess_dma_addrs,
743 .user = OCP_USER_SDMA,
746 /* aess slave ports */
747 static struct omap_hwmod_ocp_if *omap44xx_aess_slaves[] = {
748 &omap44xx_l4_abe__aess,
749 &omap44xx_l4_abe__aess_dma,
752 static struct omap_hwmod omap44xx_aess_hwmod = {
754 .class = &omap44xx_aess_hwmod_class,
755 .clkdm_name = "abe_clkdm",
756 .mpu_irqs = omap44xx_aess_irqs,
757 .sdma_reqs = omap44xx_aess_sdma_reqs,
758 .main_clk = "aess_fck",
761 .clkctrl_reg = OMAP4430_CM1_ABE_AESS_CLKCTRL,
764 .slaves = omap44xx_aess_slaves,
765 .slaves_cnt = ARRAY_SIZE(omap44xx_aess_slaves),
766 .masters = omap44xx_aess_masters,
767 .masters_cnt = ARRAY_SIZE(omap44xx_aess_masters),
768 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
773 * bangap reference for ldo regulators
776 static struct omap_hwmod_class omap44xx_bandgap_hwmod_class = {
781 static struct omap_hwmod_opt_clk bandgap_opt_clks[] = {
782 { .role = "fclk", .clk = "bandgap_fclk" },
785 static struct omap_hwmod omap44xx_bandgap_hwmod = {
787 .class = &omap44xx_bandgap_hwmod_class,
788 .clkdm_name = "l4_wkup_clkdm",
791 .clkctrl_reg = OMAP4430_CM_WKUP_BANDGAP_CLKCTRL,
794 .opt_clks = bandgap_opt_clks,
795 .opt_clks_cnt = ARRAY_SIZE(bandgap_opt_clks),
796 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
801 * 32-bit ordinary counter, clocked by the falling edge of the 32 khz clock
804 static struct omap_hwmod_class_sysconfig omap44xx_counter_sysc = {
807 .sysc_flags = SYSC_HAS_SIDLEMODE,
808 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
810 .sysc_fields = &omap_hwmod_sysc_type1,
813 static struct omap_hwmod_class omap44xx_counter_hwmod_class = {
815 .sysc = &omap44xx_counter_sysc,
819 static struct omap_hwmod omap44xx_counter_32k_hwmod;
820 static struct omap_hwmod_addr_space omap44xx_counter_32k_addrs[] = {
822 .pa_start = 0x4a304000,
823 .pa_end = 0x4a30401f,
824 .flags = ADDR_TYPE_RT
829 /* l4_wkup -> counter_32k */
830 static struct omap_hwmod_ocp_if omap44xx_l4_wkup__counter_32k = {
831 .master = &omap44xx_l4_wkup_hwmod,
832 .slave = &omap44xx_counter_32k_hwmod,
833 .clk = "l4_wkup_clk_mux_ck",
834 .addr = omap44xx_counter_32k_addrs,
835 .user = OCP_USER_MPU | OCP_USER_SDMA,
838 /* counter_32k slave ports */
839 static struct omap_hwmod_ocp_if *omap44xx_counter_32k_slaves[] = {
840 &omap44xx_l4_wkup__counter_32k,
843 static struct omap_hwmod omap44xx_counter_32k_hwmod = {
844 .name = "counter_32k",
845 .class = &omap44xx_counter_hwmod_class,
846 .clkdm_name = "l4_wkup_clkdm",
847 .flags = HWMOD_SWSUP_SIDLE,
848 .main_clk = "sys_32k_ck",
851 .clkctrl_reg = OMAP4430_CM_WKUP_SYNCTIMER_CLKCTRL,
854 .slaves = omap44xx_counter_32k_slaves,
855 .slaves_cnt = ARRAY_SIZE(omap44xx_counter_32k_slaves),
856 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
861 * dma controller for data exchange between memory to memory (i.e. internal or
862 * external memory) and gp peripherals to memory or memory to gp peripherals
865 static struct omap_hwmod_class_sysconfig omap44xx_dma_sysc = {
869 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
870 SYSC_HAS_EMUFREE | SYSC_HAS_MIDLEMODE |
871 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
872 SYSS_HAS_RESET_STATUS),
873 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
874 MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
875 .sysc_fields = &omap_hwmod_sysc_type1,
878 static struct omap_hwmod_class omap44xx_dma_hwmod_class = {
880 .sysc = &omap44xx_dma_sysc,
884 static struct omap_dma_dev_attr dma_dev_attr = {
885 .dev_caps = RESERVE_CHANNEL | DMA_LINKED_LCH | GLOBAL_PRIORITY |
886 IS_CSSA_32 | IS_CDSA_32 | IS_RW_PRIORITY,
891 static struct omap_hwmod_irq_info omap44xx_dma_system_irqs[] = {
892 { .name = "0", .irq = 12 + OMAP44XX_IRQ_GIC_START },
893 { .name = "1", .irq = 13 + OMAP44XX_IRQ_GIC_START },
894 { .name = "2", .irq = 14 + OMAP44XX_IRQ_GIC_START },
895 { .name = "3", .irq = 15 + OMAP44XX_IRQ_GIC_START },
899 /* dma_system master ports */
900 static struct omap_hwmod_ocp_if *omap44xx_dma_system_masters[] = {
901 &omap44xx_dma_system__l3_main_2,
904 static struct omap_hwmod_addr_space omap44xx_dma_system_addrs[] = {
906 .pa_start = 0x4a056000,
907 .pa_end = 0x4a056fff,
908 .flags = ADDR_TYPE_RT
913 /* l4_cfg -> dma_system */
914 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__dma_system = {
915 .master = &omap44xx_l4_cfg_hwmod,
916 .slave = &omap44xx_dma_system_hwmod,
918 .addr = omap44xx_dma_system_addrs,
919 .user = OCP_USER_MPU | OCP_USER_SDMA,
922 /* dma_system slave ports */
923 static struct omap_hwmod_ocp_if *omap44xx_dma_system_slaves[] = {
924 &omap44xx_l4_cfg__dma_system,
927 static struct omap_hwmod omap44xx_dma_system_hwmod = {
928 .name = "dma_system",
929 .class = &omap44xx_dma_hwmod_class,
930 .clkdm_name = "l3_dma_clkdm",
931 .mpu_irqs = omap44xx_dma_system_irqs,
932 .main_clk = "l3_div_ck",
935 .clkctrl_reg = OMAP4430_CM_SDMA_SDMA_CLKCTRL,
938 .dev_attr = &dma_dev_attr,
939 .slaves = omap44xx_dma_system_slaves,
940 .slaves_cnt = ARRAY_SIZE(omap44xx_dma_system_slaves),
941 .masters = omap44xx_dma_system_masters,
942 .masters_cnt = ARRAY_SIZE(omap44xx_dma_system_masters),
943 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
948 * digital microphone controller
951 static struct omap_hwmod_class_sysconfig omap44xx_dmic_sysc = {
954 .sysc_flags = (SYSC_HAS_EMUFREE | SYSC_HAS_RESET_STATUS |
955 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
956 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
958 .sysc_fields = &omap_hwmod_sysc_type2,
961 static struct omap_hwmod_class omap44xx_dmic_hwmod_class = {
963 .sysc = &omap44xx_dmic_sysc,
967 static struct omap_hwmod omap44xx_dmic_hwmod;
968 static struct omap_hwmod_irq_info omap44xx_dmic_irqs[] = {
969 { .irq = 114 + OMAP44XX_IRQ_GIC_START },
973 static struct omap_hwmod_dma_info omap44xx_dmic_sdma_reqs[] = {
974 { .dma_req = 66 + OMAP44XX_DMA_REQ_START },
978 static struct omap_hwmod_addr_space omap44xx_dmic_addrs[] = {
980 .pa_start = 0x4012e000,
981 .pa_end = 0x4012e07f,
982 .flags = ADDR_TYPE_RT
988 static struct omap_hwmod_ocp_if omap44xx_l4_abe__dmic = {
989 .master = &omap44xx_l4_abe_hwmod,
990 .slave = &omap44xx_dmic_hwmod,
991 .clk = "ocp_abe_iclk",
992 .addr = omap44xx_dmic_addrs,
993 .user = OCP_USER_MPU,
996 static struct omap_hwmod_addr_space omap44xx_dmic_dma_addrs[] = {
998 .pa_start = 0x4902e000,
999 .pa_end = 0x4902e07f,
1000 .flags = ADDR_TYPE_RT
1005 /* l4_abe -> dmic (dma) */
1006 static struct omap_hwmod_ocp_if omap44xx_l4_abe__dmic_dma = {
1007 .master = &omap44xx_l4_abe_hwmod,
1008 .slave = &omap44xx_dmic_hwmod,
1009 .clk = "ocp_abe_iclk",
1010 .addr = omap44xx_dmic_dma_addrs,
1011 .user = OCP_USER_SDMA,
1014 /* dmic slave ports */
1015 static struct omap_hwmod_ocp_if *omap44xx_dmic_slaves[] = {
1016 &omap44xx_l4_abe__dmic,
1017 &omap44xx_l4_abe__dmic_dma,
1020 static struct omap_hwmod omap44xx_dmic_hwmod = {
1022 .class = &omap44xx_dmic_hwmod_class,
1023 .clkdm_name = "abe_clkdm",
1024 .mpu_irqs = omap44xx_dmic_irqs,
1025 .sdma_reqs = omap44xx_dmic_sdma_reqs,
1026 .main_clk = "dmic_fck",
1029 .clkctrl_reg = OMAP4430_CM1_ABE_DMIC_CLKCTRL,
1032 .slaves = omap44xx_dmic_slaves,
1033 .slaves_cnt = ARRAY_SIZE(omap44xx_dmic_slaves),
1034 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
1042 static struct omap_hwmod_class omap44xx_dsp_hwmod_class = {
1047 static struct omap_hwmod_irq_info omap44xx_dsp_irqs[] = {
1048 { .irq = 28 + OMAP44XX_IRQ_GIC_START },
1052 static struct omap_hwmod_rst_info omap44xx_dsp_resets[] = {
1053 { .name = "mmu_cache", .rst_shift = 1 },
1056 static struct omap_hwmod_rst_info omap44xx_dsp_c0_resets[] = {
1057 { .name = "dsp", .rst_shift = 0 },
1061 static struct omap_hwmod_ocp_if omap44xx_dsp__iva = {
1062 .master = &omap44xx_dsp_hwmod,
1063 .slave = &omap44xx_iva_hwmod,
1064 .clk = "dpll_iva_m5x2_ck",
1067 /* dsp master ports */
1068 static struct omap_hwmod_ocp_if *omap44xx_dsp_masters[] = {
1069 &omap44xx_dsp__l3_main_1,
1070 &omap44xx_dsp__l4_abe,
1075 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__dsp = {
1076 .master = &omap44xx_l4_cfg_hwmod,
1077 .slave = &omap44xx_dsp_hwmod,
1079 .user = OCP_USER_MPU | OCP_USER_SDMA,
1082 /* dsp slave ports */
1083 static struct omap_hwmod_ocp_if *omap44xx_dsp_slaves[] = {
1084 &omap44xx_l4_cfg__dsp,
1087 /* Pseudo hwmod for reset control purpose only */
1088 static struct omap_hwmod omap44xx_dsp_c0_hwmod = {
1090 .class = &omap44xx_dsp_hwmod_class,
1091 .clkdm_name = "tesla_clkdm",
1092 .flags = HWMOD_INIT_NO_RESET,
1093 .rst_lines = omap44xx_dsp_c0_resets,
1094 .rst_lines_cnt = ARRAY_SIZE(omap44xx_dsp_c0_resets),
1097 .rstctrl_reg = OMAP4430_RM_TESLA_RSTCTRL,
1100 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
1103 static struct omap_hwmod omap44xx_dsp_hwmod = {
1105 .class = &omap44xx_dsp_hwmod_class,
1106 .clkdm_name = "tesla_clkdm",
1107 .mpu_irqs = omap44xx_dsp_irqs,
1108 .rst_lines = omap44xx_dsp_resets,
1109 .rst_lines_cnt = ARRAY_SIZE(omap44xx_dsp_resets),
1110 .main_clk = "dsp_fck",
1113 .clkctrl_reg = OMAP4430_CM_TESLA_TESLA_CLKCTRL,
1114 .rstctrl_reg = OMAP4430_RM_TESLA_RSTCTRL,
1117 .slaves = omap44xx_dsp_slaves,
1118 .slaves_cnt = ARRAY_SIZE(omap44xx_dsp_slaves),
1119 .masters = omap44xx_dsp_masters,
1120 .masters_cnt = ARRAY_SIZE(omap44xx_dsp_masters),
1121 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
1126 * display sub-system
1129 static struct omap_hwmod_class_sysconfig omap44xx_dss_sysc = {
1131 .syss_offs = 0x0014,
1132 .sysc_flags = SYSS_HAS_RESET_STATUS,
1135 static struct omap_hwmod_class omap44xx_dss_hwmod_class = {
1137 .sysc = &omap44xx_dss_sysc,
1141 /* dss master ports */
1142 static struct omap_hwmod_ocp_if *omap44xx_dss_masters[] = {
1143 &omap44xx_dss__l3_main_1,
1146 static struct omap_hwmod_addr_space omap44xx_dss_dma_addrs[] = {
1148 .pa_start = 0x58000000,
1149 .pa_end = 0x5800007f,
1150 .flags = ADDR_TYPE_RT
1155 /* l3_main_2 -> dss */
1156 static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss = {
1157 .master = &omap44xx_l3_main_2_hwmod,
1158 .slave = &omap44xx_dss_hwmod,
1160 .addr = omap44xx_dss_dma_addrs,
1161 .user = OCP_USER_SDMA,
1164 static struct omap_hwmod_addr_space omap44xx_dss_addrs[] = {
1166 .pa_start = 0x48040000,
1167 .pa_end = 0x4804007f,
1168 .flags = ADDR_TYPE_RT
1174 static struct omap_hwmod_ocp_if omap44xx_l4_per__dss = {
1175 .master = &omap44xx_l4_per_hwmod,
1176 .slave = &omap44xx_dss_hwmod,
1178 .addr = omap44xx_dss_addrs,
1179 .user = OCP_USER_MPU,
1182 /* dss slave ports */
1183 static struct omap_hwmod_ocp_if *omap44xx_dss_slaves[] = {
1184 &omap44xx_l3_main_2__dss,
1185 &omap44xx_l4_per__dss,
1188 static struct omap_hwmod_opt_clk dss_opt_clks[] = {
1189 { .role = "sys_clk", .clk = "dss_sys_clk" },
1190 { .role = "tv_clk", .clk = "dss_tv_clk" },
1191 { .role = "dss_clk", .clk = "dss_dss_clk" },
1192 { .role = "video_clk", .clk = "dss_48mhz_clk" },
1195 static struct omap_hwmod omap44xx_dss_hwmod = {
1197 .class = &omap44xx_dss_hwmod_class,
1198 .clkdm_name = "l3_dss_clkdm",
1199 .main_clk = "dss_dss_clk",
1202 .clkctrl_reg = OMAP4430_CM_DSS_DSS_CLKCTRL,
1205 .opt_clks = dss_opt_clks,
1206 .opt_clks_cnt = ARRAY_SIZE(dss_opt_clks),
1207 .slaves = omap44xx_dss_slaves,
1208 .slaves_cnt = ARRAY_SIZE(omap44xx_dss_slaves),
1209 .masters = omap44xx_dss_masters,
1210 .masters_cnt = ARRAY_SIZE(omap44xx_dss_masters),
1211 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
1216 * display controller
1219 static struct omap_hwmod_class_sysconfig omap44xx_dispc_sysc = {
1221 .sysc_offs = 0x0010,
1222 .syss_offs = 0x0014,
1223 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
1224 SYSC_HAS_ENAWAKEUP | SYSC_HAS_MIDLEMODE |
1225 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
1226 SYSS_HAS_RESET_STATUS),
1227 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1228 MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
1229 .sysc_fields = &omap_hwmod_sysc_type1,
1232 static struct omap_hwmod_class omap44xx_dispc_hwmod_class = {
1234 .sysc = &omap44xx_dispc_sysc,
1238 static struct omap_hwmod omap44xx_dss_dispc_hwmod;
1239 static struct omap_hwmod_irq_info omap44xx_dss_dispc_irqs[] = {
1240 { .irq = 25 + OMAP44XX_IRQ_GIC_START },
1244 static struct omap_hwmod_dma_info omap44xx_dss_dispc_sdma_reqs[] = {
1245 { .dma_req = 5 + OMAP44XX_DMA_REQ_START },
1249 static struct omap_hwmod_addr_space omap44xx_dss_dispc_dma_addrs[] = {
1251 .pa_start = 0x58001000,
1252 .pa_end = 0x58001fff,
1253 .flags = ADDR_TYPE_RT
1258 /* l3_main_2 -> dss_dispc */
1259 static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_dispc = {
1260 .master = &omap44xx_l3_main_2_hwmod,
1261 .slave = &omap44xx_dss_dispc_hwmod,
1263 .addr = omap44xx_dss_dispc_dma_addrs,
1264 .user = OCP_USER_SDMA,
1267 static struct omap_hwmod_addr_space omap44xx_dss_dispc_addrs[] = {
1269 .pa_start = 0x48041000,
1270 .pa_end = 0x48041fff,
1271 .flags = ADDR_TYPE_RT
1276 /* l4_per -> dss_dispc */
1277 static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_dispc = {
1278 .master = &omap44xx_l4_per_hwmod,
1279 .slave = &omap44xx_dss_dispc_hwmod,
1281 .addr = omap44xx_dss_dispc_addrs,
1282 .user = OCP_USER_MPU,
1285 /* dss_dispc slave ports */
1286 static struct omap_hwmod_ocp_if *omap44xx_dss_dispc_slaves[] = {
1287 &omap44xx_l3_main_2__dss_dispc,
1288 &omap44xx_l4_per__dss_dispc,
1291 static struct omap_hwmod_opt_clk dss_dispc_opt_clks[] = {
1292 { .role = "sys_clk", .clk = "dss_sys_clk" },
1293 { .role = "tv_clk", .clk = "dss_tv_clk" },
1294 { .role = "hdmi_clk", .clk = "dss_48mhz_clk" },
1297 static struct omap_hwmod omap44xx_dss_dispc_hwmod = {
1298 .name = "dss_dispc",
1299 .class = &omap44xx_dispc_hwmod_class,
1300 .clkdm_name = "l3_dss_clkdm",
1301 .mpu_irqs = omap44xx_dss_dispc_irqs,
1302 .sdma_reqs = omap44xx_dss_dispc_sdma_reqs,
1303 .main_clk = "dss_dss_clk",
1306 .clkctrl_reg = OMAP4430_CM_DSS_DSS_CLKCTRL,
1309 .opt_clks = dss_dispc_opt_clks,
1310 .opt_clks_cnt = ARRAY_SIZE(dss_dispc_opt_clks),
1311 .slaves = omap44xx_dss_dispc_slaves,
1312 .slaves_cnt = ARRAY_SIZE(omap44xx_dss_dispc_slaves),
1313 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
1318 * display serial interface controller
1321 static struct omap_hwmod_class_sysconfig omap44xx_dsi_sysc = {
1323 .sysc_offs = 0x0010,
1324 .syss_offs = 0x0014,
1325 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
1326 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE |
1327 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
1328 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
1329 .sysc_fields = &omap_hwmod_sysc_type1,
1332 static struct omap_hwmod_class omap44xx_dsi_hwmod_class = {
1334 .sysc = &omap44xx_dsi_sysc,
1338 static struct omap_hwmod omap44xx_dss_dsi1_hwmod;
1339 static struct omap_hwmod_irq_info omap44xx_dss_dsi1_irqs[] = {
1340 { .irq = 53 + OMAP44XX_IRQ_GIC_START },
1344 static struct omap_hwmod_dma_info omap44xx_dss_dsi1_sdma_reqs[] = {
1345 { .dma_req = 74 + OMAP44XX_DMA_REQ_START },
1349 static struct omap_hwmod_addr_space omap44xx_dss_dsi1_dma_addrs[] = {
1351 .pa_start = 0x58004000,
1352 .pa_end = 0x580041ff,
1353 .flags = ADDR_TYPE_RT
1358 /* l3_main_2 -> dss_dsi1 */
1359 static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_dsi1 = {
1360 .master = &omap44xx_l3_main_2_hwmod,
1361 .slave = &omap44xx_dss_dsi1_hwmod,
1363 .addr = omap44xx_dss_dsi1_dma_addrs,
1364 .user = OCP_USER_SDMA,
1367 static struct omap_hwmod_addr_space omap44xx_dss_dsi1_addrs[] = {
1369 .pa_start = 0x48044000,
1370 .pa_end = 0x480441ff,
1371 .flags = ADDR_TYPE_RT
1376 /* l4_per -> dss_dsi1 */
1377 static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_dsi1 = {
1378 .master = &omap44xx_l4_per_hwmod,
1379 .slave = &omap44xx_dss_dsi1_hwmod,
1381 .addr = omap44xx_dss_dsi1_addrs,
1382 .user = OCP_USER_MPU,
1385 /* dss_dsi1 slave ports */
1386 static struct omap_hwmod_ocp_if *omap44xx_dss_dsi1_slaves[] = {
1387 &omap44xx_l3_main_2__dss_dsi1,
1388 &omap44xx_l4_per__dss_dsi1,
1391 static struct omap_hwmod_opt_clk dss_dsi1_opt_clks[] = {
1392 { .role = "sys_clk", .clk = "dss_sys_clk" },
1395 static struct omap_hwmod omap44xx_dss_dsi1_hwmod = {
1397 .class = &omap44xx_dsi_hwmod_class,
1398 .clkdm_name = "l3_dss_clkdm",
1399 .mpu_irqs = omap44xx_dss_dsi1_irqs,
1400 .sdma_reqs = omap44xx_dss_dsi1_sdma_reqs,
1401 .main_clk = "dss_dss_clk",
1404 .clkctrl_reg = OMAP4430_CM_DSS_DSS_CLKCTRL,
1407 .opt_clks = dss_dsi1_opt_clks,
1408 .opt_clks_cnt = ARRAY_SIZE(dss_dsi1_opt_clks),
1409 .slaves = omap44xx_dss_dsi1_slaves,
1410 .slaves_cnt = ARRAY_SIZE(omap44xx_dss_dsi1_slaves),
1411 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
1415 static struct omap_hwmod omap44xx_dss_dsi2_hwmod;
1416 static struct omap_hwmod_irq_info omap44xx_dss_dsi2_irqs[] = {
1417 { .irq = 84 + OMAP44XX_IRQ_GIC_START },
1421 static struct omap_hwmod_dma_info omap44xx_dss_dsi2_sdma_reqs[] = {
1422 { .dma_req = 83 + OMAP44XX_DMA_REQ_START },
1426 static struct omap_hwmod_addr_space omap44xx_dss_dsi2_dma_addrs[] = {
1428 .pa_start = 0x58005000,
1429 .pa_end = 0x580051ff,
1430 .flags = ADDR_TYPE_RT
1435 /* l3_main_2 -> dss_dsi2 */
1436 static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_dsi2 = {
1437 .master = &omap44xx_l3_main_2_hwmod,
1438 .slave = &omap44xx_dss_dsi2_hwmod,
1440 .addr = omap44xx_dss_dsi2_dma_addrs,
1441 .user = OCP_USER_SDMA,
1444 static struct omap_hwmod_addr_space omap44xx_dss_dsi2_addrs[] = {
1446 .pa_start = 0x48045000,
1447 .pa_end = 0x480451ff,
1448 .flags = ADDR_TYPE_RT
1453 /* l4_per -> dss_dsi2 */
1454 static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_dsi2 = {
1455 .master = &omap44xx_l4_per_hwmod,
1456 .slave = &omap44xx_dss_dsi2_hwmod,
1458 .addr = omap44xx_dss_dsi2_addrs,
1459 .user = OCP_USER_MPU,
1462 /* dss_dsi2 slave ports */
1463 static struct omap_hwmod_ocp_if *omap44xx_dss_dsi2_slaves[] = {
1464 &omap44xx_l3_main_2__dss_dsi2,
1465 &omap44xx_l4_per__dss_dsi2,
1468 static struct omap_hwmod_opt_clk dss_dsi2_opt_clks[] = {
1469 { .role = "sys_clk", .clk = "dss_sys_clk" },
1472 static struct omap_hwmod omap44xx_dss_dsi2_hwmod = {
1474 .class = &omap44xx_dsi_hwmod_class,
1475 .clkdm_name = "l3_dss_clkdm",
1476 .mpu_irqs = omap44xx_dss_dsi2_irqs,
1477 .sdma_reqs = omap44xx_dss_dsi2_sdma_reqs,
1478 .main_clk = "dss_dss_clk",
1481 .clkctrl_reg = OMAP4430_CM_DSS_DSS_CLKCTRL,
1484 .opt_clks = dss_dsi2_opt_clks,
1485 .opt_clks_cnt = ARRAY_SIZE(dss_dsi2_opt_clks),
1486 .slaves = omap44xx_dss_dsi2_slaves,
1487 .slaves_cnt = ARRAY_SIZE(omap44xx_dss_dsi2_slaves),
1488 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
1496 static struct omap_hwmod_class_sysconfig omap44xx_hdmi_sysc = {
1498 .sysc_offs = 0x0010,
1499 .sysc_flags = (SYSC_HAS_RESET_STATUS | SYSC_HAS_SIDLEMODE |
1500 SYSC_HAS_SOFTRESET),
1501 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1503 .sysc_fields = &omap_hwmod_sysc_type2,
1506 static struct omap_hwmod_class omap44xx_hdmi_hwmod_class = {
1508 .sysc = &omap44xx_hdmi_sysc,
1512 static struct omap_hwmod omap44xx_dss_hdmi_hwmod;
1513 static struct omap_hwmod_irq_info omap44xx_dss_hdmi_irqs[] = {
1514 { .irq = 101 + OMAP44XX_IRQ_GIC_START },
1518 static struct omap_hwmod_dma_info omap44xx_dss_hdmi_sdma_reqs[] = {
1519 { .dma_req = 75 + OMAP44XX_DMA_REQ_START },
1523 static struct omap_hwmod_addr_space omap44xx_dss_hdmi_dma_addrs[] = {
1525 .pa_start = 0x58006000,
1526 .pa_end = 0x58006fff,
1527 .flags = ADDR_TYPE_RT
1532 /* l3_main_2 -> dss_hdmi */
1533 static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_hdmi = {
1534 .master = &omap44xx_l3_main_2_hwmod,
1535 .slave = &omap44xx_dss_hdmi_hwmod,
1537 .addr = omap44xx_dss_hdmi_dma_addrs,
1538 .user = OCP_USER_SDMA,
1541 static struct omap_hwmod_addr_space omap44xx_dss_hdmi_addrs[] = {
1543 .pa_start = 0x48046000,
1544 .pa_end = 0x48046fff,
1545 .flags = ADDR_TYPE_RT
1550 /* l4_per -> dss_hdmi */
1551 static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_hdmi = {
1552 .master = &omap44xx_l4_per_hwmod,
1553 .slave = &omap44xx_dss_hdmi_hwmod,
1555 .addr = omap44xx_dss_hdmi_addrs,
1556 .user = OCP_USER_MPU,
1559 /* dss_hdmi slave ports */
1560 static struct omap_hwmod_ocp_if *omap44xx_dss_hdmi_slaves[] = {
1561 &omap44xx_l3_main_2__dss_hdmi,
1562 &omap44xx_l4_per__dss_hdmi,
1565 static struct omap_hwmod_opt_clk dss_hdmi_opt_clks[] = {
1566 { .role = "sys_clk", .clk = "dss_sys_clk" },
1569 static struct omap_hwmod omap44xx_dss_hdmi_hwmod = {
1571 .class = &omap44xx_hdmi_hwmod_class,
1572 .clkdm_name = "l3_dss_clkdm",
1573 .mpu_irqs = omap44xx_dss_hdmi_irqs,
1574 .sdma_reqs = omap44xx_dss_hdmi_sdma_reqs,
1575 .main_clk = "dss_dss_clk",
1578 .clkctrl_reg = OMAP4430_CM_DSS_DSS_CLKCTRL,
1581 .opt_clks = dss_hdmi_opt_clks,
1582 .opt_clks_cnt = ARRAY_SIZE(dss_hdmi_opt_clks),
1583 .slaves = omap44xx_dss_hdmi_slaves,
1584 .slaves_cnt = ARRAY_SIZE(omap44xx_dss_hdmi_slaves),
1585 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
1590 * remote frame buffer interface
1593 static struct omap_hwmod_class_sysconfig omap44xx_rfbi_sysc = {
1595 .sysc_offs = 0x0010,
1596 .syss_offs = 0x0014,
1597 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_SIDLEMODE |
1598 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
1599 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
1600 .sysc_fields = &omap_hwmod_sysc_type1,
1603 static struct omap_hwmod_class omap44xx_rfbi_hwmod_class = {
1605 .sysc = &omap44xx_rfbi_sysc,
1609 static struct omap_hwmod omap44xx_dss_rfbi_hwmod;
1610 static struct omap_hwmod_dma_info omap44xx_dss_rfbi_sdma_reqs[] = {
1611 { .dma_req = 13 + OMAP44XX_DMA_REQ_START },
1615 static struct omap_hwmod_addr_space omap44xx_dss_rfbi_dma_addrs[] = {
1617 .pa_start = 0x58002000,
1618 .pa_end = 0x580020ff,
1619 .flags = ADDR_TYPE_RT
1624 /* l3_main_2 -> dss_rfbi */
1625 static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_rfbi = {
1626 .master = &omap44xx_l3_main_2_hwmod,
1627 .slave = &omap44xx_dss_rfbi_hwmod,
1629 .addr = omap44xx_dss_rfbi_dma_addrs,
1630 .user = OCP_USER_SDMA,
1633 static struct omap_hwmod_addr_space omap44xx_dss_rfbi_addrs[] = {
1635 .pa_start = 0x48042000,
1636 .pa_end = 0x480420ff,
1637 .flags = ADDR_TYPE_RT
1642 /* l4_per -> dss_rfbi */
1643 static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_rfbi = {
1644 .master = &omap44xx_l4_per_hwmod,
1645 .slave = &omap44xx_dss_rfbi_hwmod,
1647 .addr = omap44xx_dss_rfbi_addrs,
1648 .user = OCP_USER_MPU,
1651 /* dss_rfbi slave ports */
1652 static struct omap_hwmod_ocp_if *omap44xx_dss_rfbi_slaves[] = {
1653 &omap44xx_l3_main_2__dss_rfbi,
1654 &omap44xx_l4_per__dss_rfbi,
1657 static struct omap_hwmod_opt_clk dss_rfbi_opt_clks[] = {
1658 { .role = "ick", .clk = "dss_fck" },
1661 static struct omap_hwmod omap44xx_dss_rfbi_hwmod = {
1663 .class = &omap44xx_rfbi_hwmod_class,
1664 .clkdm_name = "l3_dss_clkdm",
1665 .sdma_reqs = omap44xx_dss_rfbi_sdma_reqs,
1666 .main_clk = "dss_dss_clk",
1669 .clkctrl_reg = OMAP4430_CM_DSS_DSS_CLKCTRL,
1672 .opt_clks = dss_rfbi_opt_clks,
1673 .opt_clks_cnt = ARRAY_SIZE(dss_rfbi_opt_clks),
1674 .slaves = omap44xx_dss_rfbi_slaves,
1675 .slaves_cnt = ARRAY_SIZE(omap44xx_dss_rfbi_slaves),
1676 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
1684 static struct omap_hwmod_class omap44xx_venc_hwmod_class = {
1689 static struct omap_hwmod omap44xx_dss_venc_hwmod;
1690 static struct omap_hwmod_addr_space omap44xx_dss_venc_dma_addrs[] = {
1692 .pa_start = 0x58003000,
1693 .pa_end = 0x580030ff,
1694 .flags = ADDR_TYPE_RT
1699 /* l3_main_2 -> dss_venc */
1700 static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_venc = {
1701 .master = &omap44xx_l3_main_2_hwmod,
1702 .slave = &omap44xx_dss_venc_hwmod,
1704 .addr = omap44xx_dss_venc_dma_addrs,
1705 .user = OCP_USER_SDMA,
1708 static struct omap_hwmod_addr_space omap44xx_dss_venc_addrs[] = {
1710 .pa_start = 0x48043000,
1711 .pa_end = 0x480430ff,
1712 .flags = ADDR_TYPE_RT
1717 /* l4_per -> dss_venc */
1718 static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_venc = {
1719 .master = &omap44xx_l4_per_hwmod,
1720 .slave = &omap44xx_dss_venc_hwmod,
1722 .addr = omap44xx_dss_venc_addrs,
1723 .user = OCP_USER_MPU,
1726 /* dss_venc slave ports */
1727 static struct omap_hwmod_ocp_if *omap44xx_dss_venc_slaves[] = {
1728 &omap44xx_l3_main_2__dss_venc,
1729 &omap44xx_l4_per__dss_venc,
1732 static struct omap_hwmod omap44xx_dss_venc_hwmod = {
1734 .class = &omap44xx_venc_hwmod_class,
1735 .clkdm_name = "l3_dss_clkdm",
1736 .main_clk = "dss_dss_clk",
1739 .clkctrl_reg = OMAP4430_CM_DSS_DSS_CLKCTRL,
1742 .slaves = omap44xx_dss_venc_slaves,
1743 .slaves_cnt = ARRAY_SIZE(omap44xx_dss_venc_slaves),
1744 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
1749 * general purpose io module
1752 static struct omap_hwmod_class_sysconfig omap44xx_gpio_sysc = {
1754 .sysc_offs = 0x0010,
1755 .syss_offs = 0x0114,
1756 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_ENAWAKEUP |
1757 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
1758 SYSS_HAS_RESET_STATUS),
1759 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1761 .sysc_fields = &omap_hwmod_sysc_type1,
1764 static struct omap_hwmod_class omap44xx_gpio_hwmod_class = {
1766 .sysc = &omap44xx_gpio_sysc,
1771 static struct omap_gpio_dev_attr gpio_dev_attr = {
1777 static struct omap_hwmod omap44xx_gpio1_hwmod;
1778 static struct omap_hwmod_irq_info omap44xx_gpio1_irqs[] = {
1779 { .irq = 29 + OMAP44XX_IRQ_GIC_START },
1783 static struct omap_hwmod_addr_space omap44xx_gpio1_addrs[] = {
1785 .pa_start = 0x4a310000,
1786 .pa_end = 0x4a3101ff,
1787 .flags = ADDR_TYPE_RT
1792 /* l4_wkup -> gpio1 */
1793 static struct omap_hwmod_ocp_if omap44xx_l4_wkup__gpio1 = {
1794 .master = &omap44xx_l4_wkup_hwmod,
1795 .slave = &omap44xx_gpio1_hwmod,
1796 .clk = "l4_wkup_clk_mux_ck",
1797 .addr = omap44xx_gpio1_addrs,
1798 .user = OCP_USER_MPU | OCP_USER_SDMA,
1801 /* gpio1 slave ports */
1802 static struct omap_hwmod_ocp_if *omap44xx_gpio1_slaves[] = {
1803 &omap44xx_l4_wkup__gpio1,
1806 static struct omap_hwmod_opt_clk gpio1_opt_clks[] = {
1807 { .role = "dbclk", .clk = "gpio1_dbclk" },
1810 static struct omap_hwmod omap44xx_gpio1_hwmod = {
1812 .class = &omap44xx_gpio_hwmod_class,
1813 .clkdm_name = "l4_wkup_clkdm",
1814 .mpu_irqs = omap44xx_gpio1_irqs,
1815 .main_clk = "gpio1_ick",
1818 .clkctrl_reg = OMAP4430_CM_WKUP_GPIO1_CLKCTRL,
1821 .opt_clks = gpio1_opt_clks,
1822 .opt_clks_cnt = ARRAY_SIZE(gpio1_opt_clks),
1823 .dev_attr = &gpio_dev_attr,
1824 .slaves = omap44xx_gpio1_slaves,
1825 .slaves_cnt = ARRAY_SIZE(omap44xx_gpio1_slaves),
1826 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
1830 static struct omap_hwmod omap44xx_gpio2_hwmod;
1831 static struct omap_hwmod_irq_info omap44xx_gpio2_irqs[] = {
1832 { .irq = 30 + OMAP44XX_IRQ_GIC_START },
1836 static struct omap_hwmod_addr_space omap44xx_gpio2_addrs[] = {
1838 .pa_start = 0x48055000,
1839 .pa_end = 0x480551ff,
1840 .flags = ADDR_TYPE_RT
1845 /* l4_per -> gpio2 */
1846 static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio2 = {
1847 .master = &omap44xx_l4_per_hwmod,
1848 .slave = &omap44xx_gpio2_hwmod,
1850 .addr = omap44xx_gpio2_addrs,
1851 .user = OCP_USER_MPU | OCP_USER_SDMA,
1854 /* gpio2 slave ports */
1855 static struct omap_hwmod_ocp_if *omap44xx_gpio2_slaves[] = {
1856 &omap44xx_l4_per__gpio2,
1859 static struct omap_hwmod_opt_clk gpio2_opt_clks[] = {
1860 { .role = "dbclk", .clk = "gpio2_dbclk" },
1863 static struct omap_hwmod omap44xx_gpio2_hwmod = {
1865 .class = &omap44xx_gpio_hwmod_class,
1866 .clkdm_name = "l4_per_clkdm",
1867 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
1868 .mpu_irqs = omap44xx_gpio2_irqs,
1869 .main_clk = "gpio2_ick",
1872 .clkctrl_reg = OMAP4430_CM_L4PER_GPIO2_CLKCTRL,
1875 .opt_clks = gpio2_opt_clks,
1876 .opt_clks_cnt = ARRAY_SIZE(gpio2_opt_clks),
1877 .dev_attr = &gpio_dev_attr,
1878 .slaves = omap44xx_gpio2_slaves,
1879 .slaves_cnt = ARRAY_SIZE(omap44xx_gpio2_slaves),
1880 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
1884 static struct omap_hwmod omap44xx_gpio3_hwmod;
1885 static struct omap_hwmod_irq_info omap44xx_gpio3_irqs[] = {
1886 { .irq = 31 + OMAP44XX_IRQ_GIC_START },
1890 static struct omap_hwmod_addr_space omap44xx_gpio3_addrs[] = {
1892 .pa_start = 0x48057000,
1893 .pa_end = 0x480571ff,
1894 .flags = ADDR_TYPE_RT
1899 /* l4_per -> gpio3 */
1900 static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio3 = {
1901 .master = &omap44xx_l4_per_hwmod,
1902 .slave = &omap44xx_gpio3_hwmod,
1904 .addr = omap44xx_gpio3_addrs,
1905 .user = OCP_USER_MPU | OCP_USER_SDMA,
1908 /* gpio3 slave ports */
1909 static struct omap_hwmod_ocp_if *omap44xx_gpio3_slaves[] = {
1910 &omap44xx_l4_per__gpio3,
1913 static struct omap_hwmod_opt_clk gpio3_opt_clks[] = {
1914 { .role = "dbclk", .clk = "gpio3_dbclk" },
1917 static struct omap_hwmod omap44xx_gpio3_hwmod = {
1919 .class = &omap44xx_gpio_hwmod_class,
1920 .clkdm_name = "l4_per_clkdm",
1921 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
1922 .mpu_irqs = omap44xx_gpio3_irqs,
1923 .main_clk = "gpio3_ick",
1926 .clkctrl_reg = OMAP4430_CM_L4PER_GPIO3_CLKCTRL,
1929 .opt_clks = gpio3_opt_clks,
1930 .opt_clks_cnt = ARRAY_SIZE(gpio3_opt_clks),
1931 .dev_attr = &gpio_dev_attr,
1932 .slaves = omap44xx_gpio3_slaves,
1933 .slaves_cnt = ARRAY_SIZE(omap44xx_gpio3_slaves),
1934 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
1938 static struct omap_hwmod omap44xx_gpio4_hwmod;
1939 static struct omap_hwmod_irq_info omap44xx_gpio4_irqs[] = {
1940 { .irq = 32 + OMAP44XX_IRQ_GIC_START },
1944 static struct omap_hwmod_addr_space omap44xx_gpio4_addrs[] = {
1946 .pa_start = 0x48059000,
1947 .pa_end = 0x480591ff,
1948 .flags = ADDR_TYPE_RT
1953 /* l4_per -> gpio4 */
1954 static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio4 = {
1955 .master = &omap44xx_l4_per_hwmod,
1956 .slave = &omap44xx_gpio4_hwmod,
1958 .addr = omap44xx_gpio4_addrs,
1959 .user = OCP_USER_MPU | OCP_USER_SDMA,
1962 /* gpio4 slave ports */
1963 static struct omap_hwmod_ocp_if *omap44xx_gpio4_slaves[] = {
1964 &omap44xx_l4_per__gpio4,
1967 static struct omap_hwmod_opt_clk gpio4_opt_clks[] = {
1968 { .role = "dbclk", .clk = "gpio4_dbclk" },
1971 static struct omap_hwmod omap44xx_gpio4_hwmod = {
1973 .class = &omap44xx_gpio_hwmod_class,
1974 .clkdm_name = "l4_per_clkdm",
1975 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
1976 .mpu_irqs = omap44xx_gpio4_irqs,
1977 .main_clk = "gpio4_ick",
1980 .clkctrl_reg = OMAP4430_CM_L4PER_GPIO4_CLKCTRL,
1983 .opt_clks = gpio4_opt_clks,
1984 .opt_clks_cnt = ARRAY_SIZE(gpio4_opt_clks),
1985 .dev_attr = &gpio_dev_attr,
1986 .slaves = omap44xx_gpio4_slaves,
1987 .slaves_cnt = ARRAY_SIZE(omap44xx_gpio4_slaves),
1988 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
1992 static struct omap_hwmod omap44xx_gpio5_hwmod;
1993 static struct omap_hwmod_irq_info omap44xx_gpio5_irqs[] = {
1994 { .irq = 33 + OMAP44XX_IRQ_GIC_START },
1998 static struct omap_hwmod_addr_space omap44xx_gpio5_addrs[] = {
2000 .pa_start = 0x4805b000,
2001 .pa_end = 0x4805b1ff,
2002 .flags = ADDR_TYPE_RT
2007 /* l4_per -> gpio5 */
2008 static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio5 = {
2009 .master = &omap44xx_l4_per_hwmod,
2010 .slave = &omap44xx_gpio5_hwmod,
2012 .addr = omap44xx_gpio5_addrs,
2013 .user = OCP_USER_MPU | OCP_USER_SDMA,
2016 /* gpio5 slave ports */
2017 static struct omap_hwmod_ocp_if *omap44xx_gpio5_slaves[] = {
2018 &omap44xx_l4_per__gpio5,
2021 static struct omap_hwmod_opt_clk gpio5_opt_clks[] = {
2022 { .role = "dbclk", .clk = "gpio5_dbclk" },
2025 static struct omap_hwmod omap44xx_gpio5_hwmod = {
2027 .class = &omap44xx_gpio_hwmod_class,
2028 .clkdm_name = "l4_per_clkdm",
2029 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
2030 .mpu_irqs = omap44xx_gpio5_irqs,
2031 .main_clk = "gpio5_ick",
2034 .clkctrl_reg = OMAP4430_CM_L4PER_GPIO5_CLKCTRL,
2037 .opt_clks = gpio5_opt_clks,
2038 .opt_clks_cnt = ARRAY_SIZE(gpio5_opt_clks),
2039 .dev_attr = &gpio_dev_attr,
2040 .slaves = omap44xx_gpio5_slaves,
2041 .slaves_cnt = ARRAY_SIZE(omap44xx_gpio5_slaves),
2042 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
2046 static struct omap_hwmod omap44xx_gpio6_hwmod;
2047 static struct omap_hwmod_irq_info omap44xx_gpio6_irqs[] = {
2048 { .irq = 34 + OMAP44XX_IRQ_GIC_START },
2052 static struct omap_hwmod_addr_space omap44xx_gpio6_addrs[] = {
2054 .pa_start = 0x4805d000,
2055 .pa_end = 0x4805d1ff,
2056 .flags = ADDR_TYPE_RT
2061 /* l4_per -> gpio6 */
2062 static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio6 = {
2063 .master = &omap44xx_l4_per_hwmod,
2064 .slave = &omap44xx_gpio6_hwmod,
2066 .addr = omap44xx_gpio6_addrs,
2067 .user = OCP_USER_MPU | OCP_USER_SDMA,
2070 /* gpio6 slave ports */
2071 static struct omap_hwmod_ocp_if *omap44xx_gpio6_slaves[] = {
2072 &omap44xx_l4_per__gpio6,
2075 static struct omap_hwmod_opt_clk gpio6_opt_clks[] = {
2076 { .role = "dbclk", .clk = "gpio6_dbclk" },
2079 static struct omap_hwmod omap44xx_gpio6_hwmod = {
2081 .class = &omap44xx_gpio_hwmod_class,
2082 .clkdm_name = "l4_per_clkdm",
2083 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
2084 .mpu_irqs = omap44xx_gpio6_irqs,
2085 .main_clk = "gpio6_ick",
2088 .clkctrl_reg = OMAP4430_CM_L4PER_GPIO6_CLKCTRL,
2091 .opt_clks = gpio6_opt_clks,
2092 .opt_clks_cnt = ARRAY_SIZE(gpio6_opt_clks),
2093 .dev_attr = &gpio_dev_attr,
2094 .slaves = omap44xx_gpio6_slaves,
2095 .slaves_cnt = ARRAY_SIZE(omap44xx_gpio6_slaves),
2096 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
2101 * mipi high-speed synchronous serial interface (multichannel and full-duplex
2105 static struct omap_hwmod_class_sysconfig omap44xx_hsi_sysc = {
2107 .sysc_offs = 0x0010,
2108 .syss_offs = 0x0014,
2109 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_EMUFREE |
2110 SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE |
2111 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
2112 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
2113 SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
2114 MSTANDBY_SMART | MSTANDBY_SMART_WKUP),
2115 .sysc_fields = &omap_hwmod_sysc_type1,
2118 static struct omap_hwmod_class omap44xx_hsi_hwmod_class = {
2120 .sysc = &omap44xx_hsi_sysc,
2124 static struct omap_hwmod_irq_info omap44xx_hsi_irqs[] = {
2125 { .name = "mpu_p1", .irq = 67 + OMAP44XX_IRQ_GIC_START },
2126 { .name = "mpu_p2", .irq = 68 + OMAP44XX_IRQ_GIC_START },
2127 { .name = "mpu_dma", .irq = 71 + OMAP44XX_IRQ_GIC_START },
2131 /* hsi master ports */
2132 static struct omap_hwmod_ocp_if *omap44xx_hsi_masters[] = {
2133 &omap44xx_hsi__l3_main_2,
2136 static struct omap_hwmod_addr_space omap44xx_hsi_addrs[] = {
2138 .pa_start = 0x4a058000,
2139 .pa_end = 0x4a05bfff,
2140 .flags = ADDR_TYPE_RT
2146 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__hsi = {
2147 .master = &omap44xx_l4_cfg_hwmod,
2148 .slave = &omap44xx_hsi_hwmod,
2150 .addr = omap44xx_hsi_addrs,
2151 .user = OCP_USER_MPU | OCP_USER_SDMA,
2154 /* hsi slave ports */
2155 static struct omap_hwmod_ocp_if *omap44xx_hsi_slaves[] = {
2156 &omap44xx_l4_cfg__hsi,
2159 static struct omap_hwmod omap44xx_hsi_hwmod = {
2161 .class = &omap44xx_hsi_hwmod_class,
2162 .clkdm_name = "l3_init_clkdm",
2163 .mpu_irqs = omap44xx_hsi_irqs,
2164 .main_clk = "hsi_fck",
2167 .clkctrl_reg = OMAP4430_CM_L3INIT_HSI_CLKCTRL,
2170 .slaves = omap44xx_hsi_slaves,
2171 .slaves_cnt = ARRAY_SIZE(omap44xx_hsi_slaves),
2172 .masters = omap44xx_hsi_masters,
2173 .masters_cnt = ARRAY_SIZE(omap44xx_hsi_masters),
2174 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
2179 * multimaster high-speed i2c controller
2182 static struct omap_hwmod_class_sysconfig omap44xx_i2c_sysc = {
2183 .sysc_offs = 0x0010,
2184 .syss_offs = 0x0090,
2185 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
2186 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE |
2187 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
2188 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
2190 .sysc_fields = &omap_hwmod_sysc_type1,
2193 static struct omap_hwmod_class omap44xx_i2c_hwmod_class = {
2195 .sysc = &omap44xx_i2c_sysc,
2196 .rev = OMAP_I2C_IP_VERSION_2,
2197 .reset = &omap_i2c_reset,
2200 static struct omap_i2c_dev_attr i2c_dev_attr = {
2201 .flags = OMAP_I2C_FLAG_BUS_SHIFT_NONE,
2205 static struct omap_hwmod omap44xx_i2c1_hwmod;
2206 static struct omap_hwmod_irq_info omap44xx_i2c1_irqs[] = {
2207 { .irq = 56 + OMAP44XX_IRQ_GIC_START },
2211 static struct omap_hwmod_dma_info omap44xx_i2c1_sdma_reqs[] = {
2212 { .name = "tx", .dma_req = 26 + OMAP44XX_DMA_REQ_START },
2213 { .name = "rx", .dma_req = 27 + OMAP44XX_DMA_REQ_START },
2217 static struct omap_hwmod_addr_space omap44xx_i2c1_addrs[] = {
2219 .pa_start = 0x48070000,
2220 .pa_end = 0x480700ff,
2221 .flags = ADDR_TYPE_RT
2226 /* l4_per -> i2c1 */
2227 static struct omap_hwmod_ocp_if omap44xx_l4_per__i2c1 = {
2228 .master = &omap44xx_l4_per_hwmod,
2229 .slave = &omap44xx_i2c1_hwmod,
2231 .addr = omap44xx_i2c1_addrs,
2232 .user = OCP_USER_MPU | OCP_USER_SDMA,
2235 /* i2c1 slave ports */
2236 static struct omap_hwmod_ocp_if *omap44xx_i2c1_slaves[] = {
2237 &omap44xx_l4_per__i2c1,
2240 static struct omap_hwmod omap44xx_i2c1_hwmod = {
2242 .class = &omap44xx_i2c_hwmod_class,
2243 .clkdm_name = "l4_per_clkdm",
2244 .flags = HWMOD_16BIT_REG,
2245 .mpu_irqs = omap44xx_i2c1_irqs,
2246 .sdma_reqs = omap44xx_i2c1_sdma_reqs,
2247 .main_clk = "i2c1_fck",
2250 .clkctrl_reg = OMAP4430_CM_L4PER_I2C1_CLKCTRL,
2253 .slaves = omap44xx_i2c1_slaves,
2254 .slaves_cnt = ARRAY_SIZE(omap44xx_i2c1_slaves),
2255 .dev_attr = &i2c_dev_attr,
2256 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
2260 static struct omap_hwmod omap44xx_i2c2_hwmod;
2261 static struct omap_hwmod_irq_info omap44xx_i2c2_irqs[] = {
2262 { .irq = 57 + OMAP44XX_IRQ_GIC_START },
2266 static struct omap_hwmod_dma_info omap44xx_i2c2_sdma_reqs[] = {
2267 { .name = "tx", .dma_req = 28 + OMAP44XX_DMA_REQ_START },
2268 { .name = "rx", .dma_req = 29 + OMAP44XX_DMA_REQ_START },
2272 static struct omap_hwmod_addr_space omap44xx_i2c2_addrs[] = {
2274 .pa_start = 0x48072000,
2275 .pa_end = 0x480720ff,
2276 .flags = ADDR_TYPE_RT
2281 /* l4_per -> i2c2 */
2282 static struct omap_hwmod_ocp_if omap44xx_l4_per__i2c2 = {
2283 .master = &omap44xx_l4_per_hwmod,
2284 .slave = &omap44xx_i2c2_hwmod,
2286 .addr = omap44xx_i2c2_addrs,
2287 .user = OCP_USER_MPU | OCP_USER_SDMA,
2290 /* i2c2 slave ports */
2291 static struct omap_hwmod_ocp_if *omap44xx_i2c2_slaves[] = {
2292 &omap44xx_l4_per__i2c2,
2295 static struct omap_hwmod omap44xx_i2c2_hwmod = {
2297 .class = &omap44xx_i2c_hwmod_class,
2298 .clkdm_name = "l4_per_clkdm",
2299 .flags = HWMOD_16BIT_REG,
2300 .mpu_irqs = omap44xx_i2c2_irqs,
2301 .sdma_reqs = omap44xx_i2c2_sdma_reqs,
2302 .main_clk = "i2c2_fck",
2305 .clkctrl_reg = OMAP4430_CM_L4PER_I2C2_CLKCTRL,
2308 .slaves = omap44xx_i2c2_slaves,
2309 .slaves_cnt = ARRAY_SIZE(omap44xx_i2c2_slaves),
2310 .dev_attr = &i2c_dev_attr,
2311 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
2315 static struct omap_hwmod omap44xx_i2c3_hwmod;
2316 static struct omap_hwmod_irq_info omap44xx_i2c3_irqs[] = {
2317 { .irq = 61 + OMAP44XX_IRQ_GIC_START },
2321 static struct omap_hwmod_dma_info omap44xx_i2c3_sdma_reqs[] = {
2322 { .name = "tx", .dma_req = 24 + OMAP44XX_DMA_REQ_START },
2323 { .name = "rx", .dma_req = 25 + OMAP44XX_DMA_REQ_START },
2327 static struct omap_hwmod_addr_space omap44xx_i2c3_addrs[] = {
2329 .pa_start = 0x48060000,
2330 .pa_end = 0x480600ff,
2331 .flags = ADDR_TYPE_RT
2336 /* l4_per -> i2c3 */
2337 static struct omap_hwmod_ocp_if omap44xx_l4_per__i2c3 = {
2338 .master = &omap44xx_l4_per_hwmod,
2339 .slave = &omap44xx_i2c3_hwmod,
2341 .addr = omap44xx_i2c3_addrs,
2342 .user = OCP_USER_MPU | OCP_USER_SDMA,
2345 /* i2c3 slave ports */
2346 static struct omap_hwmod_ocp_if *omap44xx_i2c3_slaves[] = {
2347 &omap44xx_l4_per__i2c3,
2350 static struct omap_hwmod omap44xx_i2c3_hwmod = {
2352 .class = &omap44xx_i2c_hwmod_class,
2353 .clkdm_name = "l4_per_clkdm",
2354 .flags = HWMOD_16BIT_REG,
2355 .mpu_irqs = omap44xx_i2c3_irqs,
2356 .sdma_reqs = omap44xx_i2c3_sdma_reqs,
2357 .main_clk = "i2c3_fck",
2360 .clkctrl_reg = OMAP4430_CM_L4PER_I2C3_CLKCTRL,
2363 .slaves = omap44xx_i2c3_slaves,
2364 .slaves_cnt = ARRAY_SIZE(omap44xx_i2c3_slaves),
2365 .dev_attr = &i2c_dev_attr,
2366 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
2370 static struct omap_hwmod omap44xx_i2c4_hwmod;
2371 static struct omap_hwmod_irq_info omap44xx_i2c4_irqs[] = {
2372 { .irq = 62 + OMAP44XX_IRQ_GIC_START },
2376 static struct omap_hwmod_dma_info omap44xx_i2c4_sdma_reqs[] = {
2377 { .name = "tx", .dma_req = 123 + OMAP44XX_DMA_REQ_START },
2378 { .name = "rx", .dma_req = 124 + OMAP44XX_DMA_REQ_START },
2382 static struct omap_hwmod_addr_space omap44xx_i2c4_addrs[] = {
2384 .pa_start = 0x48350000,
2385 .pa_end = 0x483500ff,
2386 .flags = ADDR_TYPE_RT
2391 /* l4_per -> i2c4 */
2392 static struct omap_hwmod_ocp_if omap44xx_l4_per__i2c4 = {
2393 .master = &omap44xx_l4_per_hwmod,
2394 .slave = &omap44xx_i2c4_hwmod,
2396 .addr = omap44xx_i2c4_addrs,
2397 .user = OCP_USER_MPU | OCP_USER_SDMA,
2400 /* i2c4 slave ports */
2401 static struct omap_hwmod_ocp_if *omap44xx_i2c4_slaves[] = {
2402 &omap44xx_l4_per__i2c4,
2405 static struct omap_hwmod omap44xx_i2c4_hwmod = {
2407 .class = &omap44xx_i2c_hwmod_class,
2408 .clkdm_name = "l4_per_clkdm",
2409 .flags = HWMOD_16BIT_REG,
2410 .mpu_irqs = omap44xx_i2c4_irqs,
2411 .sdma_reqs = omap44xx_i2c4_sdma_reqs,
2412 .main_clk = "i2c4_fck",
2415 .clkctrl_reg = OMAP4430_CM_L4PER_I2C4_CLKCTRL,
2418 .slaves = omap44xx_i2c4_slaves,
2419 .slaves_cnt = ARRAY_SIZE(omap44xx_i2c4_slaves),
2420 .dev_attr = &i2c_dev_attr,
2421 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
2426 * imaging processor unit
2429 static struct omap_hwmod_class omap44xx_ipu_hwmod_class = {
2434 static struct omap_hwmod_irq_info omap44xx_ipu_irqs[] = {
2435 { .irq = 100 + OMAP44XX_IRQ_GIC_START },
2439 static struct omap_hwmod_rst_info omap44xx_ipu_c0_resets[] = {
2440 { .name = "cpu0", .rst_shift = 0 },
2443 static struct omap_hwmod_rst_info omap44xx_ipu_c1_resets[] = {
2444 { .name = "cpu1", .rst_shift = 1 },
2447 static struct omap_hwmod_rst_info omap44xx_ipu_resets[] = {
2448 { .name = "mmu_cache", .rst_shift = 2 },
2451 /* ipu master ports */
2452 static struct omap_hwmod_ocp_if *omap44xx_ipu_masters[] = {
2453 &omap44xx_ipu__l3_main_2,
2456 /* l3_main_2 -> ipu */
2457 static struct omap_hwmod_ocp_if omap44xx_l3_main_2__ipu = {
2458 .master = &omap44xx_l3_main_2_hwmod,
2459 .slave = &omap44xx_ipu_hwmod,
2461 .user = OCP_USER_MPU | OCP_USER_SDMA,
2464 /* ipu slave ports */
2465 static struct omap_hwmod_ocp_if *omap44xx_ipu_slaves[] = {
2466 &omap44xx_l3_main_2__ipu,
2469 /* Pseudo hwmod for reset control purpose only */
2470 static struct omap_hwmod omap44xx_ipu_c0_hwmod = {
2472 .class = &omap44xx_ipu_hwmod_class,
2473 .clkdm_name = "ducati_clkdm",
2474 .flags = HWMOD_INIT_NO_RESET,
2475 .rst_lines = omap44xx_ipu_c0_resets,
2476 .rst_lines_cnt = ARRAY_SIZE(omap44xx_ipu_c0_resets),
2479 .rstctrl_reg = OMAP4430_RM_DUCATI_RSTCTRL,
2482 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
2485 /* Pseudo hwmod for reset control purpose only */
2486 static struct omap_hwmod omap44xx_ipu_c1_hwmod = {
2488 .class = &omap44xx_ipu_hwmod_class,
2489 .clkdm_name = "ducati_clkdm",
2490 .flags = HWMOD_INIT_NO_RESET,
2491 .rst_lines = omap44xx_ipu_c1_resets,
2492 .rst_lines_cnt = ARRAY_SIZE(omap44xx_ipu_c1_resets),
2495 .rstctrl_reg = OMAP4430_RM_DUCATI_RSTCTRL,
2498 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
2501 static struct omap_hwmod omap44xx_ipu_hwmod = {
2503 .class = &omap44xx_ipu_hwmod_class,
2504 .clkdm_name = "ducati_clkdm",
2505 .mpu_irqs = omap44xx_ipu_irqs,
2506 .rst_lines = omap44xx_ipu_resets,
2507 .rst_lines_cnt = ARRAY_SIZE(omap44xx_ipu_resets),
2508 .main_clk = "ipu_fck",
2511 .clkctrl_reg = OMAP4430_CM_DUCATI_DUCATI_CLKCTRL,
2512 .rstctrl_reg = OMAP4430_RM_DUCATI_RSTCTRL,
2515 .slaves = omap44xx_ipu_slaves,
2516 .slaves_cnt = ARRAY_SIZE(omap44xx_ipu_slaves),
2517 .masters = omap44xx_ipu_masters,
2518 .masters_cnt = ARRAY_SIZE(omap44xx_ipu_masters),
2519 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
2524 * external images sensor pixel data processor
2527 static struct omap_hwmod_class_sysconfig omap44xx_iss_sysc = {
2529 .sysc_offs = 0x0010,
2530 .sysc_flags = (SYSC_HAS_MIDLEMODE | SYSC_HAS_RESET_STATUS |
2531 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
2532 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
2533 SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
2534 MSTANDBY_SMART | MSTANDBY_SMART_WKUP),
2535 .sysc_fields = &omap_hwmod_sysc_type2,
2538 static struct omap_hwmod_class omap44xx_iss_hwmod_class = {
2540 .sysc = &omap44xx_iss_sysc,
2544 static struct omap_hwmod_irq_info omap44xx_iss_irqs[] = {
2545 { .irq = 24 + OMAP44XX_IRQ_GIC_START },
2549 static struct omap_hwmod_dma_info omap44xx_iss_sdma_reqs[] = {
2550 { .name = "1", .dma_req = 8 + OMAP44XX_DMA_REQ_START },
2551 { .name = "2", .dma_req = 9 + OMAP44XX_DMA_REQ_START },
2552 { .name = "3", .dma_req = 11 + OMAP44XX_DMA_REQ_START },
2553 { .name = "4", .dma_req = 12 + OMAP44XX_DMA_REQ_START },
2557 /* iss master ports */
2558 static struct omap_hwmod_ocp_if *omap44xx_iss_masters[] = {
2559 &omap44xx_iss__l3_main_2,
2562 static struct omap_hwmod_addr_space omap44xx_iss_addrs[] = {
2564 .pa_start = 0x52000000,
2565 .pa_end = 0x520000ff,
2566 .flags = ADDR_TYPE_RT
2571 /* l3_main_2 -> iss */
2572 static struct omap_hwmod_ocp_if omap44xx_l3_main_2__iss = {
2573 .master = &omap44xx_l3_main_2_hwmod,
2574 .slave = &omap44xx_iss_hwmod,
2576 .addr = omap44xx_iss_addrs,
2577 .user = OCP_USER_MPU | OCP_USER_SDMA,
2580 /* iss slave ports */
2581 static struct omap_hwmod_ocp_if *omap44xx_iss_slaves[] = {
2582 &omap44xx_l3_main_2__iss,
2585 static struct omap_hwmod_opt_clk iss_opt_clks[] = {
2586 { .role = "ctrlclk", .clk = "iss_ctrlclk" },
2589 static struct omap_hwmod omap44xx_iss_hwmod = {
2591 .class = &omap44xx_iss_hwmod_class,
2592 .clkdm_name = "iss_clkdm",
2593 .mpu_irqs = omap44xx_iss_irqs,
2594 .sdma_reqs = omap44xx_iss_sdma_reqs,
2595 .main_clk = "iss_fck",
2598 .clkctrl_reg = OMAP4430_CM_CAM_ISS_CLKCTRL,
2601 .opt_clks = iss_opt_clks,
2602 .opt_clks_cnt = ARRAY_SIZE(iss_opt_clks),
2603 .slaves = omap44xx_iss_slaves,
2604 .slaves_cnt = ARRAY_SIZE(omap44xx_iss_slaves),
2605 .masters = omap44xx_iss_masters,
2606 .masters_cnt = ARRAY_SIZE(omap44xx_iss_masters),
2607 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
2612 * multi-standard video encoder/decoder hardware accelerator
2615 static struct omap_hwmod_class omap44xx_iva_hwmod_class = {
2620 static struct omap_hwmod_irq_info omap44xx_iva_irqs[] = {
2621 { .name = "sync_1", .irq = 103 + OMAP44XX_IRQ_GIC_START },
2622 { .name = "sync_0", .irq = 104 + OMAP44XX_IRQ_GIC_START },
2623 { .name = "mailbox_0", .irq = 107 + OMAP44XX_IRQ_GIC_START },
2627 static struct omap_hwmod_rst_info omap44xx_iva_resets[] = {
2628 { .name = "logic", .rst_shift = 2 },
2631 static struct omap_hwmod_rst_info omap44xx_iva_seq0_resets[] = {
2632 { .name = "seq0", .rst_shift = 0 },
2635 static struct omap_hwmod_rst_info omap44xx_iva_seq1_resets[] = {
2636 { .name = "seq1", .rst_shift = 1 },
2639 /* iva master ports */
2640 static struct omap_hwmod_ocp_if *omap44xx_iva_masters[] = {
2641 &omap44xx_iva__l3_main_2,
2642 &omap44xx_iva__l3_instr,
2645 static struct omap_hwmod_addr_space omap44xx_iva_addrs[] = {
2647 .pa_start = 0x5a000000,
2648 .pa_end = 0x5a07ffff,
2649 .flags = ADDR_TYPE_RT
2654 /* l3_main_2 -> iva */
2655 static struct omap_hwmod_ocp_if omap44xx_l3_main_2__iva = {
2656 .master = &omap44xx_l3_main_2_hwmod,
2657 .slave = &omap44xx_iva_hwmod,
2659 .addr = omap44xx_iva_addrs,
2660 .user = OCP_USER_MPU,
2663 /* iva slave ports */
2664 static struct omap_hwmod_ocp_if *omap44xx_iva_slaves[] = {
2666 &omap44xx_l3_main_2__iva,
2669 /* Pseudo hwmod for reset control purpose only */
2670 static struct omap_hwmod omap44xx_iva_seq0_hwmod = {
2672 .class = &omap44xx_iva_hwmod_class,
2673 .clkdm_name = "ivahd_clkdm",
2674 .flags = HWMOD_INIT_NO_RESET,
2675 .rst_lines = omap44xx_iva_seq0_resets,
2676 .rst_lines_cnt = ARRAY_SIZE(omap44xx_iva_seq0_resets),
2679 .rstctrl_reg = OMAP4430_RM_IVAHD_RSTCTRL,
2682 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
2685 /* Pseudo hwmod for reset control purpose only */
2686 static struct omap_hwmod omap44xx_iva_seq1_hwmod = {
2688 .class = &omap44xx_iva_hwmod_class,
2689 .clkdm_name = "ivahd_clkdm",
2690 .flags = HWMOD_INIT_NO_RESET,
2691 .rst_lines = omap44xx_iva_seq1_resets,
2692 .rst_lines_cnt = ARRAY_SIZE(omap44xx_iva_seq1_resets),
2695 .rstctrl_reg = OMAP4430_RM_IVAHD_RSTCTRL,
2698 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
2701 static struct omap_hwmod omap44xx_iva_hwmod = {
2703 .class = &omap44xx_iva_hwmod_class,
2704 .clkdm_name = "ivahd_clkdm",
2705 .mpu_irqs = omap44xx_iva_irqs,
2706 .rst_lines = omap44xx_iva_resets,
2707 .rst_lines_cnt = ARRAY_SIZE(omap44xx_iva_resets),
2708 .main_clk = "iva_fck",
2711 .clkctrl_reg = OMAP4430_CM_IVAHD_IVAHD_CLKCTRL,
2712 .rstctrl_reg = OMAP4430_RM_IVAHD_RSTCTRL,
2715 .slaves = omap44xx_iva_slaves,
2716 .slaves_cnt = ARRAY_SIZE(omap44xx_iva_slaves),
2717 .masters = omap44xx_iva_masters,
2718 .masters_cnt = ARRAY_SIZE(omap44xx_iva_masters),
2719 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
2724 * keyboard controller
2727 static struct omap_hwmod_class_sysconfig omap44xx_kbd_sysc = {
2729 .sysc_offs = 0x0010,
2730 .syss_offs = 0x0014,
2731 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
2732 SYSC_HAS_EMUFREE | SYSC_HAS_ENAWAKEUP |
2733 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
2734 SYSS_HAS_RESET_STATUS),
2735 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
2736 .sysc_fields = &omap_hwmod_sysc_type1,
2739 static struct omap_hwmod_class omap44xx_kbd_hwmod_class = {
2741 .sysc = &omap44xx_kbd_sysc,
2745 static struct omap_hwmod omap44xx_kbd_hwmod;
2746 static struct omap_hwmod_irq_info omap44xx_kbd_irqs[] = {
2747 { .irq = 120 + OMAP44XX_IRQ_GIC_START },
2751 static struct omap_hwmod_addr_space omap44xx_kbd_addrs[] = {
2753 .pa_start = 0x4a31c000,
2754 .pa_end = 0x4a31c07f,
2755 .flags = ADDR_TYPE_RT
2760 /* l4_wkup -> kbd */
2761 static struct omap_hwmod_ocp_if omap44xx_l4_wkup__kbd = {
2762 .master = &omap44xx_l4_wkup_hwmod,
2763 .slave = &omap44xx_kbd_hwmod,
2764 .clk = "l4_wkup_clk_mux_ck",
2765 .addr = omap44xx_kbd_addrs,
2766 .user = OCP_USER_MPU | OCP_USER_SDMA,
2769 /* kbd slave ports */
2770 static struct omap_hwmod_ocp_if *omap44xx_kbd_slaves[] = {
2771 &omap44xx_l4_wkup__kbd,
2774 static struct omap_hwmod omap44xx_kbd_hwmod = {
2776 .class = &omap44xx_kbd_hwmod_class,
2777 .clkdm_name = "l4_wkup_clkdm",
2778 .mpu_irqs = omap44xx_kbd_irqs,
2779 .main_clk = "kbd_fck",
2782 .clkctrl_reg = OMAP4430_CM_WKUP_KEYBOARD_CLKCTRL,
2785 .slaves = omap44xx_kbd_slaves,
2786 .slaves_cnt = ARRAY_SIZE(omap44xx_kbd_slaves),
2787 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
2792 * mailbox module allowing communication between the on-chip processors using a
2793 * queued mailbox-interrupt mechanism.
2796 static struct omap_hwmod_class_sysconfig omap44xx_mailbox_sysc = {
2798 .sysc_offs = 0x0010,
2799 .sysc_flags = (SYSC_HAS_RESET_STATUS | SYSC_HAS_SIDLEMODE |
2800 SYSC_HAS_SOFTRESET),
2801 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
2802 .sysc_fields = &omap_hwmod_sysc_type2,
2805 static struct omap_hwmod_class omap44xx_mailbox_hwmod_class = {
2807 .sysc = &omap44xx_mailbox_sysc,
2811 static struct omap_hwmod omap44xx_mailbox_hwmod;
2812 static struct omap_hwmod_irq_info omap44xx_mailbox_irqs[] = {
2813 { .irq = 26 + OMAP44XX_IRQ_GIC_START },
2817 static struct omap_hwmod_addr_space omap44xx_mailbox_addrs[] = {
2819 .pa_start = 0x4a0f4000,
2820 .pa_end = 0x4a0f41ff,
2821 .flags = ADDR_TYPE_RT
2826 /* l4_cfg -> mailbox */
2827 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__mailbox = {
2828 .master = &omap44xx_l4_cfg_hwmod,
2829 .slave = &omap44xx_mailbox_hwmod,
2831 .addr = omap44xx_mailbox_addrs,
2832 .user = OCP_USER_MPU | OCP_USER_SDMA,
2835 /* mailbox slave ports */
2836 static struct omap_hwmod_ocp_if *omap44xx_mailbox_slaves[] = {
2837 &omap44xx_l4_cfg__mailbox,
2840 static struct omap_hwmod omap44xx_mailbox_hwmod = {
2842 .class = &omap44xx_mailbox_hwmod_class,
2843 .clkdm_name = "l4_cfg_clkdm",
2844 .mpu_irqs = omap44xx_mailbox_irqs,
2847 .clkctrl_reg = OMAP4430_CM_L4CFG_MAILBOX_CLKCTRL,
2850 .slaves = omap44xx_mailbox_slaves,
2851 .slaves_cnt = ARRAY_SIZE(omap44xx_mailbox_slaves),
2852 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
2857 * multi channel buffered serial port controller
2860 static struct omap_hwmod_class_sysconfig omap44xx_mcbsp_sysc = {
2861 .sysc_offs = 0x008c,
2862 .sysc_flags = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_ENAWAKEUP |
2863 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
2864 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
2865 .sysc_fields = &omap_hwmod_sysc_type1,
2868 static struct omap_hwmod_class omap44xx_mcbsp_hwmod_class = {
2870 .sysc = &omap44xx_mcbsp_sysc,
2871 .rev = MCBSP_CONFIG_TYPE4,
2875 static struct omap_hwmod omap44xx_mcbsp1_hwmod;
2876 static struct omap_hwmod_irq_info omap44xx_mcbsp1_irqs[] = {
2877 { .irq = 17 + OMAP44XX_IRQ_GIC_START },
2881 static struct omap_hwmod_dma_info omap44xx_mcbsp1_sdma_reqs[] = {
2882 { .name = "tx", .dma_req = 32 + OMAP44XX_DMA_REQ_START },
2883 { .name = "rx", .dma_req = 33 + OMAP44XX_DMA_REQ_START },
2887 static struct omap_hwmod_addr_space omap44xx_mcbsp1_addrs[] = {
2890 .pa_start = 0x40122000,
2891 .pa_end = 0x401220ff,
2892 .flags = ADDR_TYPE_RT
2897 /* l4_abe -> mcbsp1 */
2898 static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp1 = {
2899 .master = &omap44xx_l4_abe_hwmod,
2900 .slave = &omap44xx_mcbsp1_hwmod,
2901 .clk = "ocp_abe_iclk",
2902 .addr = omap44xx_mcbsp1_addrs,
2903 .user = OCP_USER_MPU,
2906 static struct omap_hwmod_addr_space omap44xx_mcbsp1_dma_addrs[] = {
2909 .pa_start = 0x49022000,
2910 .pa_end = 0x490220ff,
2911 .flags = ADDR_TYPE_RT
2916 /* l4_abe -> mcbsp1 (dma) */
2917 static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp1_dma = {
2918 .master = &omap44xx_l4_abe_hwmod,
2919 .slave = &omap44xx_mcbsp1_hwmod,
2920 .clk = "ocp_abe_iclk",
2921 .addr = omap44xx_mcbsp1_dma_addrs,
2922 .user = OCP_USER_SDMA,
2925 /* mcbsp1 slave ports */
2926 static struct omap_hwmod_ocp_if *omap44xx_mcbsp1_slaves[] = {
2927 &omap44xx_l4_abe__mcbsp1,
2928 &omap44xx_l4_abe__mcbsp1_dma,
2931 static struct omap_hwmod omap44xx_mcbsp1_hwmod = {
2933 .class = &omap44xx_mcbsp_hwmod_class,
2934 .clkdm_name = "abe_clkdm",
2935 .mpu_irqs = omap44xx_mcbsp1_irqs,
2936 .sdma_reqs = omap44xx_mcbsp1_sdma_reqs,
2937 .main_clk = "mcbsp1_fck",
2940 .clkctrl_reg = OMAP4430_CM1_ABE_MCBSP1_CLKCTRL,
2943 .slaves = omap44xx_mcbsp1_slaves,
2944 .slaves_cnt = ARRAY_SIZE(omap44xx_mcbsp1_slaves),
2945 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
2949 static struct omap_hwmod omap44xx_mcbsp2_hwmod;
2950 static struct omap_hwmod_irq_info omap44xx_mcbsp2_irqs[] = {
2951 { .irq = 22 + OMAP44XX_IRQ_GIC_START },
2955 static struct omap_hwmod_dma_info omap44xx_mcbsp2_sdma_reqs[] = {
2956 { .name = "tx", .dma_req = 16 + OMAP44XX_DMA_REQ_START },
2957 { .name = "rx", .dma_req = 17 + OMAP44XX_DMA_REQ_START },
2961 static struct omap_hwmod_addr_space omap44xx_mcbsp2_addrs[] = {
2964 .pa_start = 0x40124000,
2965 .pa_end = 0x401240ff,
2966 .flags = ADDR_TYPE_RT
2971 /* l4_abe -> mcbsp2 */
2972 static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp2 = {
2973 .master = &omap44xx_l4_abe_hwmod,
2974 .slave = &omap44xx_mcbsp2_hwmod,
2975 .clk = "ocp_abe_iclk",
2976 .addr = omap44xx_mcbsp2_addrs,
2977 .user = OCP_USER_MPU,
2980 static struct omap_hwmod_addr_space omap44xx_mcbsp2_dma_addrs[] = {
2983 .pa_start = 0x49024000,
2984 .pa_end = 0x490240ff,
2985 .flags = ADDR_TYPE_RT
2990 /* l4_abe -> mcbsp2 (dma) */
2991 static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp2_dma = {
2992 .master = &omap44xx_l4_abe_hwmod,
2993 .slave = &omap44xx_mcbsp2_hwmod,
2994 .clk = "ocp_abe_iclk",
2995 .addr = omap44xx_mcbsp2_dma_addrs,
2996 .user = OCP_USER_SDMA,
2999 /* mcbsp2 slave ports */
3000 static struct omap_hwmod_ocp_if *omap44xx_mcbsp2_slaves[] = {
3001 &omap44xx_l4_abe__mcbsp2,
3002 &omap44xx_l4_abe__mcbsp2_dma,
3005 static struct omap_hwmod omap44xx_mcbsp2_hwmod = {
3007 .class = &omap44xx_mcbsp_hwmod_class,
3008 .clkdm_name = "abe_clkdm",
3009 .mpu_irqs = omap44xx_mcbsp2_irqs,
3010 .sdma_reqs = omap44xx_mcbsp2_sdma_reqs,
3011 .main_clk = "mcbsp2_fck",
3014 .clkctrl_reg = OMAP4430_CM1_ABE_MCBSP2_CLKCTRL,
3017 .slaves = omap44xx_mcbsp2_slaves,
3018 .slaves_cnt = ARRAY_SIZE(omap44xx_mcbsp2_slaves),
3019 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
3023 static struct omap_hwmod omap44xx_mcbsp3_hwmod;
3024 static struct omap_hwmod_irq_info omap44xx_mcbsp3_irqs[] = {
3025 { .irq = 23 + OMAP44XX_IRQ_GIC_START },
3029 static struct omap_hwmod_dma_info omap44xx_mcbsp3_sdma_reqs[] = {
3030 { .name = "tx", .dma_req = 18 + OMAP44XX_DMA_REQ_START },
3031 { .name = "rx", .dma_req = 19 + OMAP44XX_DMA_REQ_START },
3035 static struct omap_hwmod_addr_space omap44xx_mcbsp3_addrs[] = {
3038 .pa_start = 0x40126000,
3039 .pa_end = 0x401260ff,
3040 .flags = ADDR_TYPE_RT
3045 /* l4_abe -> mcbsp3 */
3046 static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp3 = {
3047 .master = &omap44xx_l4_abe_hwmod,
3048 .slave = &omap44xx_mcbsp3_hwmod,
3049 .clk = "ocp_abe_iclk",
3050 .addr = omap44xx_mcbsp3_addrs,
3051 .user = OCP_USER_MPU,
3054 static struct omap_hwmod_addr_space omap44xx_mcbsp3_dma_addrs[] = {
3057 .pa_start = 0x49026000,
3058 .pa_end = 0x490260ff,
3059 .flags = ADDR_TYPE_RT
3064 /* l4_abe -> mcbsp3 (dma) */
3065 static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp3_dma = {
3066 .master = &omap44xx_l4_abe_hwmod,
3067 .slave = &omap44xx_mcbsp3_hwmod,
3068 .clk = "ocp_abe_iclk",
3069 .addr = omap44xx_mcbsp3_dma_addrs,
3070 .user = OCP_USER_SDMA,
3073 /* mcbsp3 slave ports */
3074 static struct omap_hwmod_ocp_if *omap44xx_mcbsp3_slaves[] = {
3075 &omap44xx_l4_abe__mcbsp3,
3076 &omap44xx_l4_abe__mcbsp3_dma,
3079 static struct omap_hwmod omap44xx_mcbsp3_hwmod = {
3081 .class = &omap44xx_mcbsp_hwmod_class,
3082 .clkdm_name = "abe_clkdm",
3083 .mpu_irqs = omap44xx_mcbsp3_irqs,
3084 .sdma_reqs = omap44xx_mcbsp3_sdma_reqs,
3085 .main_clk = "mcbsp3_fck",
3088 .clkctrl_reg = OMAP4430_CM1_ABE_MCBSP3_CLKCTRL,
3091 .slaves = omap44xx_mcbsp3_slaves,
3092 .slaves_cnt = ARRAY_SIZE(omap44xx_mcbsp3_slaves),
3093 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
3097 static struct omap_hwmod omap44xx_mcbsp4_hwmod;
3098 static struct omap_hwmod_irq_info omap44xx_mcbsp4_irqs[] = {
3099 { .irq = 16 + OMAP44XX_IRQ_GIC_START },
3103 static struct omap_hwmod_dma_info omap44xx_mcbsp4_sdma_reqs[] = {
3104 { .name = "tx", .dma_req = 30 + OMAP44XX_DMA_REQ_START },
3105 { .name = "rx", .dma_req = 31 + OMAP44XX_DMA_REQ_START },
3109 static struct omap_hwmod_addr_space omap44xx_mcbsp4_addrs[] = {
3111 .pa_start = 0x48096000,
3112 .pa_end = 0x480960ff,
3113 .flags = ADDR_TYPE_RT
3118 /* l4_per -> mcbsp4 */
3119 static struct omap_hwmod_ocp_if omap44xx_l4_per__mcbsp4 = {
3120 .master = &omap44xx_l4_per_hwmod,
3121 .slave = &omap44xx_mcbsp4_hwmod,
3123 .addr = omap44xx_mcbsp4_addrs,
3124 .user = OCP_USER_MPU | OCP_USER_SDMA,
3127 /* mcbsp4 slave ports */
3128 static struct omap_hwmod_ocp_if *omap44xx_mcbsp4_slaves[] = {
3129 &omap44xx_l4_per__mcbsp4,
3132 static struct omap_hwmod omap44xx_mcbsp4_hwmod = {
3134 .class = &omap44xx_mcbsp_hwmod_class,
3135 .clkdm_name = "l4_per_clkdm",
3136 .mpu_irqs = omap44xx_mcbsp4_irqs,
3137 .sdma_reqs = omap44xx_mcbsp4_sdma_reqs,
3138 .main_clk = "mcbsp4_fck",
3141 .clkctrl_reg = OMAP4430_CM_L4PER_MCBSP4_CLKCTRL,
3144 .slaves = omap44xx_mcbsp4_slaves,
3145 .slaves_cnt = ARRAY_SIZE(omap44xx_mcbsp4_slaves),
3146 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
3151 * multi channel pdm controller (proprietary interface with phoenix power
3155 static struct omap_hwmod_class_sysconfig omap44xx_mcpdm_sysc = {
3157 .sysc_offs = 0x0010,
3158 .sysc_flags = (SYSC_HAS_EMUFREE | SYSC_HAS_RESET_STATUS |
3159 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
3160 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
3162 .sysc_fields = &omap_hwmod_sysc_type2,
3165 static struct omap_hwmod_class omap44xx_mcpdm_hwmod_class = {
3167 .sysc = &omap44xx_mcpdm_sysc,
3171 static struct omap_hwmod omap44xx_mcpdm_hwmod;
3172 static struct omap_hwmod_irq_info omap44xx_mcpdm_irqs[] = {
3173 { .irq = 112 + OMAP44XX_IRQ_GIC_START },
3177 static struct omap_hwmod_dma_info omap44xx_mcpdm_sdma_reqs[] = {
3178 { .name = "up_link", .dma_req = 64 + OMAP44XX_DMA_REQ_START },
3179 { .name = "dn_link", .dma_req = 65 + OMAP44XX_DMA_REQ_START },
3183 static struct omap_hwmod_addr_space omap44xx_mcpdm_addrs[] = {
3185 .pa_start = 0x40132000,
3186 .pa_end = 0x4013207f,
3187 .flags = ADDR_TYPE_RT
3192 /* l4_abe -> mcpdm */
3193 static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcpdm = {
3194 .master = &omap44xx_l4_abe_hwmod,
3195 .slave = &omap44xx_mcpdm_hwmod,
3196 .clk = "ocp_abe_iclk",
3197 .addr = omap44xx_mcpdm_addrs,
3198 .user = OCP_USER_MPU,
3201 static struct omap_hwmod_addr_space omap44xx_mcpdm_dma_addrs[] = {
3203 .pa_start = 0x49032000,
3204 .pa_end = 0x4903207f,
3205 .flags = ADDR_TYPE_RT
3210 /* l4_abe -> mcpdm (dma) */
3211 static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcpdm_dma = {
3212 .master = &omap44xx_l4_abe_hwmod,
3213 .slave = &omap44xx_mcpdm_hwmod,
3214 .clk = "ocp_abe_iclk",
3215 .addr = omap44xx_mcpdm_dma_addrs,
3216 .user = OCP_USER_SDMA,
3219 /* mcpdm slave ports */
3220 static struct omap_hwmod_ocp_if *omap44xx_mcpdm_slaves[] = {
3221 &omap44xx_l4_abe__mcpdm,
3222 &omap44xx_l4_abe__mcpdm_dma,
3225 static struct omap_hwmod omap44xx_mcpdm_hwmod = {
3227 .class = &omap44xx_mcpdm_hwmod_class,
3228 .clkdm_name = "abe_clkdm",
3229 .mpu_irqs = omap44xx_mcpdm_irqs,
3230 .sdma_reqs = omap44xx_mcpdm_sdma_reqs,
3231 .main_clk = "mcpdm_fck",
3234 .clkctrl_reg = OMAP4430_CM1_ABE_PDM_CLKCTRL,
3237 .slaves = omap44xx_mcpdm_slaves,
3238 .slaves_cnt = ARRAY_SIZE(omap44xx_mcpdm_slaves),
3239 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
3244 * multichannel serial port interface (mcspi) / master/slave synchronous serial
3248 static struct omap_hwmod_class_sysconfig omap44xx_mcspi_sysc = {
3250 .sysc_offs = 0x0010,
3251 .sysc_flags = (SYSC_HAS_EMUFREE | SYSC_HAS_RESET_STATUS |
3252 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
3253 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
3255 .sysc_fields = &omap_hwmod_sysc_type2,
3258 static struct omap_hwmod_class omap44xx_mcspi_hwmod_class = {
3260 .sysc = &omap44xx_mcspi_sysc,
3261 .rev = OMAP4_MCSPI_REV,
3265 static struct omap_hwmod omap44xx_mcspi1_hwmod;
3266 static struct omap_hwmod_irq_info omap44xx_mcspi1_irqs[] = {
3267 { .irq = 65 + OMAP44XX_IRQ_GIC_START },
3271 static struct omap_hwmod_dma_info omap44xx_mcspi1_sdma_reqs[] = {
3272 { .name = "tx0", .dma_req = 34 + OMAP44XX_DMA_REQ_START },
3273 { .name = "rx0", .dma_req = 35 + OMAP44XX_DMA_REQ_START },
3274 { .name = "tx1", .dma_req = 36 + OMAP44XX_DMA_REQ_START },
3275 { .name = "rx1", .dma_req = 37 + OMAP44XX_DMA_REQ_START },
3276 { .name = "tx2", .dma_req = 38 + OMAP44XX_DMA_REQ_START },
3277 { .name = "rx2", .dma_req = 39 + OMAP44XX_DMA_REQ_START },
3278 { .name = "tx3", .dma_req = 40 + OMAP44XX_DMA_REQ_START },
3279 { .name = "rx3", .dma_req = 41 + OMAP44XX_DMA_REQ_START },
3283 static struct omap_hwmod_addr_space omap44xx_mcspi1_addrs[] = {
3285 .pa_start = 0x48098000,
3286 .pa_end = 0x480981ff,
3287 .flags = ADDR_TYPE_RT
3292 /* l4_per -> mcspi1 */
3293 static struct omap_hwmod_ocp_if omap44xx_l4_per__mcspi1 = {
3294 .master = &omap44xx_l4_per_hwmod,
3295 .slave = &omap44xx_mcspi1_hwmod,
3297 .addr = omap44xx_mcspi1_addrs,
3298 .user = OCP_USER_MPU | OCP_USER_SDMA,
3301 /* mcspi1 slave ports */
3302 static struct omap_hwmod_ocp_if *omap44xx_mcspi1_slaves[] = {
3303 &omap44xx_l4_per__mcspi1,
3306 /* mcspi1 dev_attr */
3307 static struct omap2_mcspi_dev_attr mcspi1_dev_attr = {
3308 .num_chipselect = 4,
3311 static struct omap_hwmod omap44xx_mcspi1_hwmod = {
3313 .class = &omap44xx_mcspi_hwmod_class,
3314 .clkdm_name = "l4_per_clkdm",
3315 .mpu_irqs = omap44xx_mcspi1_irqs,
3316 .sdma_reqs = omap44xx_mcspi1_sdma_reqs,
3317 .main_clk = "mcspi1_fck",
3320 .clkctrl_reg = OMAP4430_CM_L4PER_MCSPI1_CLKCTRL,
3323 .dev_attr = &mcspi1_dev_attr,
3324 .slaves = omap44xx_mcspi1_slaves,
3325 .slaves_cnt = ARRAY_SIZE(omap44xx_mcspi1_slaves),
3326 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
3330 static struct omap_hwmod omap44xx_mcspi2_hwmod;
3331 static struct omap_hwmod_irq_info omap44xx_mcspi2_irqs[] = {
3332 { .irq = 66 + OMAP44XX_IRQ_GIC_START },
3336 static struct omap_hwmod_dma_info omap44xx_mcspi2_sdma_reqs[] = {
3337 { .name = "tx0", .dma_req = 42 + OMAP44XX_DMA_REQ_START },
3338 { .name = "rx0", .dma_req = 43 + OMAP44XX_DMA_REQ_START },
3339 { .name = "tx1", .dma_req = 44 + OMAP44XX_DMA_REQ_START },
3340 { .name = "rx1", .dma_req = 45 + OMAP44XX_DMA_REQ_START },
3344 static struct omap_hwmod_addr_space omap44xx_mcspi2_addrs[] = {
3346 .pa_start = 0x4809a000,
3347 .pa_end = 0x4809a1ff,
3348 .flags = ADDR_TYPE_RT
3353 /* l4_per -> mcspi2 */
3354 static struct omap_hwmod_ocp_if omap44xx_l4_per__mcspi2 = {
3355 .master = &omap44xx_l4_per_hwmod,
3356 .slave = &omap44xx_mcspi2_hwmod,
3358 .addr = omap44xx_mcspi2_addrs,
3359 .user = OCP_USER_MPU | OCP_USER_SDMA,
3362 /* mcspi2 slave ports */
3363 static struct omap_hwmod_ocp_if *omap44xx_mcspi2_slaves[] = {
3364 &omap44xx_l4_per__mcspi2,
3367 /* mcspi2 dev_attr */
3368 static struct omap2_mcspi_dev_attr mcspi2_dev_attr = {
3369 .num_chipselect = 2,
3372 static struct omap_hwmod omap44xx_mcspi2_hwmod = {
3374 .class = &omap44xx_mcspi_hwmod_class,
3375 .clkdm_name = "l4_per_clkdm",
3376 .mpu_irqs = omap44xx_mcspi2_irqs,
3377 .sdma_reqs = omap44xx_mcspi2_sdma_reqs,
3378 .main_clk = "mcspi2_fck",
3381 .clkctrl_reg = OMAP4430_CM_L4PER_MCSPI2_CLKCTRL,
3384 .dev_attr = &mcspi2_dev_attr,
3385 .slaves = omap44xx_mcspi2_slaves,
3386 .slaves_cnt = ARRAY_SIZE(omap44xx_mcspi2_slaves),
3387 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
3391 static struct omap_hwmod omap44xx_mcspi3_hwmod;
3392 static struct omap_hwmod_irq_info omap44xx_mcspi3_irqs[] = {
3393 { .irq = 91 + OMAP44XX_IRQ_GIC_START },
3397 static struct omap_hwmod_dma_info omap44xx_mcspi3_sdma_reqs[] = {
3398 { .name = "tx0", .dma_req = 14 + OMAP44XX_DMA_REQ_START },
3399 { .name = "rx0", .dma_req = 15 + OMAP44XX_DMA_REQ_START },
3400 { .name = "tx1", .dma_req = 22 + OMAP44XX_DMA_REQ_START },
3401 { .name = "rx1", .dma_req = 23 + OMAP44XX_DMA_REQ_START },
3405 static struct omap_hwmod_addr_space omap44xx_mcspi3_addrs[] = {
3407 .pa_start = 0x480b8000,
3408 .pa_end = 0x480b81ff,
3409 .flags = ADDR_TYPE_RT
3414 /* l4_per -> mcspi3 */
3415 static struct omap_hwmod_ocp_if omap44xx_l4_per__mcspi3 = {
3416 .master = &omap44xx_l4_per_hwmod,
3417 .slave = &omap44xx_mcspi3_hwmod,
3419 .addr = omap44xx_mcspi3_addrs,
3420 .user = OCP_USER_MPU | OCP_USER_SDMA,
3423 /* mcspi3 slave ports */
3424 static struct omap_hwmod_ocp_if *omap44xx_mcspi3_slaves[] = {
3425 &omap44xx_l4_per__mcspi3,
3428 /* mcspi3 dev_attr */
3429 static struct omap2_mcspi_dev_attr mcspi3_dev_attr = {
3430 .num_chipselect = 2,
3433 static struct omap_hwmod omap44xx_mcspi3_hwmod = {
3435 .class = &omap44xx_mcspi_hwmod_class,
3436 .clkdm_name = "l4_per_clkdm",
3437 .mpu_irqs = omap44xx_mcspi3_irqs,
3438 .sdma_reqs = omap44xx_mcspi3_sdma_reqs,
3439 .main_clk = "mcspi3_fck",
3442 .clkctrl_reg = OMAP4430_CM_L4PER_MCSPI3_CLKCTRL,
3445 .dev_attr = &mcspi3_dev_attr,
3446 .slaves = omap44xx_mcspi3_slaves,
3447 .slaves_cnt = ARRAY_SIZE(omap44xx_mcspi3_slaves),
3448 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
3452 static struct omap_hwmod omap44xx_mcspi4_hwmod;
3453 static struct omap_hwmod_irq_info omap44xx_mcspi4_irqs[] = {
3454 { .irq = 48 + OMAP44XX_IRQ_GIC_START },
3458 static struct omap_hwmod_dma_info omap44xx_mcspi4_sdma_reqs[] = {
3459 { .name = "tx0", .dma_req = 69 + OMAP44XX_DMA_REQ_START },
3460 { .name = "rx0", .dma_req = 70 + OMAP44XX_DMA_REQ_START },
3464 static struct omap_hwmod_addr_space omap44xx_mcspi4_addrs[] = {
3466 .pa_start = 0x480ba000,
3467 .pa_end = 0x480ba1ff,
3468 .flags = ADDR_TYPE_RT
3473 /* l4_per -> mcspi4 */
3474 static struct omap_hwmod_ocp_if omap44xx_l4_per__mcspi4 = {
3475 .master = &omap44xx_l4_per_hwmod,
3476 .slave = &omap44xx_mcspi4_hwmod,
3478 .addr = omap44xx_mcspi4_addrs,
3479 .user = OCP_USER_MPU | OCP_USER_SDMA,
3482 /* mcspi4 slave ports */
3483 static struct omap_hwmod_ocp_if *omap44xx_mcspi4_slaves[] = {
3484 &omap44xx_l4_per__mcspi4,
3487 /* mcspi4 dev_attr */
3488 static struct omap2_mcspi_dev_attr mcspi4_dev_attr = {
3489 .num_chipselect = 1,
3492 static struct omap_hwmod omap44xx_mcspi4_hwmod = {
3494 .class = &omap44xx_mcspi_hwmod_class,
3495 .clkdm_name = "l4_per_clkdm",
3496 .mpu_irqs = omap44xx_mcspi4_irqs,
3497 .sdma_reqs = omap44xx_mcspi4_sdma_reqs,
3498 .main_clk = "mcspi4_fck",
3501 .clkctrl_reg = OMAP4430_CM_L4PER_MCSPI4_CLKCTRL,
3504 .dev_attr = &mcspi4_dev_attr,
3505 .slaves = omap44xx_mcspi4_slaves,
3506 .slaves_cnt = ARRAY_SIZE(omap44xx_mcspi4_slaves),
3507 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
3512 * multimedia card high-speed/sd/sdio (mmc/sd/sdio) host controller
3515 static struct omap_hwmod_class_sysconfig omap44xx_mmc_sysc = {
3517 .sysc_offs = 0x0010,
3518 .sysc_flags = (SYSC_HAS_EMUFREE | SYSC_HAS_MIDLEMODE |
3519 SYSC_HAS_RESET_STATUS | SYSC_HAS_SIDLEMODE |
3520 SYSC_HAS_SOFTRESET),
3521 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
3522 SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
3523 MSTANDBY_SMART | MSTANDBY_SMART_WKUP),
3524 .sysc_fields = &omap_hwmod_sysc_type2,
3527 static struct omap_hwmod_class omap44xx_mmc_hwmod_class = {
3529 .sysc = &omap44xx_mmc_sysc,
3533 static struct omap_hwmod_irq_info omap44xx_mmc1_irqs[] = {
3534 { .irq = 83 + OMAP44XX_IRQ_GIC_START },
3538 static struct omap_hwmod_dma_info omap44xx_mmc1_sdma_reqs[] = {
3539 { .name = "tx", .dma_req = 60 + OMAP44XX_DMA_REQ_START },
3540 { .name = "rx", .dma_req = 61 + OMAP44XX_DMA_REQ_START },
3544 /* mmc1 master ports */
3545 static struct omap_hwmod_ocp_if *omap44xx_mmc1_masters[] = {
3546 &omap44xx_mmc1__l3_main_1,
3549 static struct omap_hwmod_addr_space omap44xx_mmc1_addrs[] = {
3551 .pa_start = 0x4809c000,
3552 .pa_end = 0x4809c3ff,
3553 .flags = ADDR_TYPE_RT
3558 /* l4_per -> mmc1 */
3559 static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc1 = {
3560 .master = &omap44xx_l4_per_hwmod,
3561 .slave = &omap44xx_mmc1_hwmod,
3563 .addr = omap44xx_mmc1_addrs,
3564 .user = OCP_USER_MPU | OCP_USER_SDMA,
3567 /* mmc1 slave ports */
3568 static struct omap_hwmod_ocp_if *omap44xx_mmc1_slaves[] = {
3569 &omap44xx_l4_per__mmc1,
3573 static struct omap_mmc_dev_attr mmc1_dev_attr = {
3574 .flags = OMAP_HSMMC_SUPPORTS_DUAL_VOLT,
3577 static struct omap_hwmod omap44xx_mmc1_hwmod = {
3579 .class = &omap44xx_mmc_hwmod_class,
3580 .clkdm_name = "l3_init_clkdm",
3581 .mpu_irqs = omap44xx_mmc1_irqs,
3582 .sdma_reqs = omap44xx_mmc1_sdma_reqs,
3583 .main_clk = "mmc1_fck",
3586 .clkctrl_reg = OMAP4430_CM_L3INIT_MMC1_CLKCTRL,
3589 .dev_attr = &mmc1_dev_attr,
3590 .slaves = omap44xx_mmc1_slaves,
3591 .slaves_cnt = ARRAY_SIZE(omap44xx_mmc1_slaves),
3592 .masters = omap44xx_mmc1_masters,
3593 .masters_cnt = ARRAY_SIZE(omap44xx_mmc1_masters),
3594 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
3598 static struct omap_hwmod_irq_info omap44xx_mmc2_irqs[] = {
3599 { .irq = 86 + OMAP44XX_IRQ_GIC_START },
3603 static struct omap_hwmod_dma_info omap44xx_mmc2_sdma_reqs[] = {
3604 { .name = "tx", .dma_req = 46 + OMAP44XX_DMA_REQ_START },
3605 { .name = "rx", .dma_req = 47 + OMAP44XX_DMA_REQ_START },
3609 /* mmc2 master ports */
3610 static struct omap_hwmod_ocp_if *omap44xx_mmc2_masters[] = {
3611 &omap44xx_mmc2__l3_main_1,
3614 static struct omap_hwmod_addr_space omap44xx_mmc2_addrs[] = {
3616 .pa_start = 0x480b4000,
3617 .pa_end = 0x480b43ff,
3618 .flags = ADDR_TYPE_RT
3623 /* l4_per -> mmc2 */
3624 static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc2 = {
3625 .master = &omap44xx_l4_per_hwmod,
3626 .slave = &omap44xx_mmc2_hwmod,
3628 .addr = omap44xx_mmc2_addrs,
3629 .user = OCP_USER_MPU | OCP_USER_SDMA,
3632 /* mmc2 slave ports */
3633 static struct omap_hwmod_ocp_if *omap44xx_mmc2_slaves[] = {
3634 &omap44xx_l4_per__mmc2,
3637 static struct omap_hwmod omap44xx_mmc2_hwmod = {
3639 .class = &omap44xx_mmc_hwmod_class,
3640 .clkdm_name = "l3_init_clkdm",
3641 .mpu_irqs = omap44xx_mmc2_irqs,
3642 .sdma_reqs = omap44xx_mmc2_sdma_reqs,
3643 .main_clk = "mmc2_fck",
3646 .clkctrl_reg = OMAP4430_CM_L3INIT_MMC2_CLKCTRL,
3649 .slaves = omap44xx_mmc2_slaves,
3650 .slaves_cnt = ARRAY_SIZE(omap44xx_mmc2_slaves),
3651 .masters = omap44xx_mmc2_masters,
3652 .masters_cnt = ARRAY_SIZE(omap44xx_mmc2_masters),
3653 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
3657 static struct omap_hwmod omap44xx_mmc3_hwmod;
3658 static struct omap_hwmod_irq_info omap44xx_mmc3_irqs[] = {
3659 { .irq = 94 + OMAP44XX_IRQ_GIC_START },
3663 static struct omap_hwmod_dma_info omap44xx_mmc3_sdma_reqs[] = {
3664 { .name = "tx", .dma_req = 76 + OMAP44XX_DMA_REQ_START },
3665 { .name = "rx", .dma_req = 77 + OMAP44XX_DMA_REQ_START },
3669 static struct omap_hwmod_addr_space omap44xx_mmc3_addrs[] = {
3671 .pa_start = 0x480ad000,
3672 .pa_end = 0x480ad3ff,
3673 .flags = ADDR_TYPE_RT
3678 /* l4_per -> mmc3 */
3679 static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc3 = {
3680 .master = &omap44xx_l4_per_hwmod,
3681 .slave = &omap44xx_mmc3_hwmod,
3683 .addr = omap44xx_mmc3_addrs,
3684 .user = OCP_USER_MPU | OCP_USER_SDMA,
3687 /* mmc3 slave ports */
3688 static struct omap_hwmod_ocp_if *omap44xx_mmc3_slaves[] = {
3689 &omap44xx_l4_per__mmc3,
3692 static struct omap_hwmod omap44xx_mmc3_hwmod = {
3694 .class = &omap44xx_mmc_hwmod_class,
3695 .clkdm_name = "l4_per_clkdm",
3696 .mpu_irqs = omap44xx_mmc3_irqs,
3697 .sdma_reqs = omap44xx_mmc3_sdma_reqs,
3698 .main_clk = "mmc3_fck",
3701 .clkctrl_reg = OMAP4430_CM_L4PER_MMCSD3_CLKCTRL,
3704 .slaves = omap44xx_mmc3_slaves,
3705 .slaves_cnt = ARRAY_SIZE(omap44xx_mmc3_slaves),
3706 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
3710 static struct omap_hwmod omap44xx_mmc4_hwmod;
3711 static struct omap_hwmod_irq_info omap44xx_mmc4_irqs[] = {
3712 { .irq = 96 + OMAP44XX_IRQ_GIC_START },
3716 static struct omap_hwmod_dma_info omap44xx_mmc4_sdma_reqs[] = {
3717 { .name = "tx", .dma_req = 56 + OMAP44XX_DMA_REQ_START },
3718 { .name = "rx", .dma_req = 57 + OMAP44XX_DMA_REQ_START },
3722 static struct omap_hwmod_addr_space omap44xx_mmc4_addrs[] = {
3724 .pa_start = 0x480d1000,
3725 .pa_end = 0x480d13ff,
3726 .flags = ADDR_TYPE_RT
3731 /* l4_per -> mmc4 */
3732 static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc4 = {
3733 .master = &omap44xx_l4_per_hwmod,
3734 .slave = &omap44xx_mmc4_hwmod,
3736 .addr = omap44xx_mmc4_addrs,
3737 .user = OCP_USER_MPU | OCP_USER_SDMA,
3740 /* mmc4 slave ports */
3741 static struct omap_hwmod_ocp_if *omap44xx_mmc4_slaves[] = {
3742 &omap44xx_l4_per__mmc4,
3745 static struct omap_hwmod omap44xx_mmc4_hwmod = {
3747 .class = &omap44xx_mmc_hwmod_class,
3748 .clkdm_name = "l4_per_clkdm",
3749 .mpu_irqs = omap44xx_mmc4_irqs,
3751 .sdma_reqs = omap44xx_mmc4_sdma_reqs,
3752 .main_clk = "mmc4_fck",
3755 .clkctrl_reg = OMAP4430_CM_L4PER_MMCSD4_CLKCTRL,
3758 .slaves = omap44xx_mmc4_slaves,
3759 .slaves_cnt = ARRAY_SIZE(omap44xx_mmc4_slaves),
3760 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
3764 static struct omap_hwmod omap44xx_mmc5_hwmod;
3765 static struct omap_hwmod_irq_info omap44xx_mmc5_irqs[] = {
3766 { .irq = 59 + OMAP44XX_IRQ_GIC_START },
3770 static struct omap_hwmod_dma_info omap44xx_mmc5_sdma_reqs[] = {
3771 { .name = "tx", .dma_req = 58 + OMAP44XX_DMA_REQ_START },
3772 { .name = "rx", .dma_req = 59 + OMAP44XX_DMA_REQ_START },
3776 static struct omap_hwmod_addr_space omap44xx_mmc5_addrs[] = {
3778 .pa_start = 0x480d5000,
3779 .pa_end = 0x480d53ff,
3780 .flags = ADDR_TYPE_RT
3785 /* l4_per -> mmc5 */
3786 static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc5 = {
3787 .master = &omap44xx_l4_per_hwmod,
3788 .slave = &omap44xx_mmc5_hwmod,
3790 .addr = omap44xx_mmc5_addrs,
3791 .user = OCP_USER_MPU | OCP_USER_SDMA,
3794 /* mmc5 slave ports */
3795 static struct omap_hwmod_ocp_if *omap44xx_mmc5_slaves[] = {
3796 &omap44xx_l4_per__mmc5,
3799 static struct omap_hwmod omap44xx_mmc5_hwmod = {
3801 .class = &omap44xx_mmc_hwmod_class,
3802 .clkdm_name = "l4_per_clkdm",
3803 .mpu_irqs = omap44xx_mmc5_irqs,
3804 .sdma_reqs = omap44xx_mmc5_sdma_reqs,
3805 .main_clk = "mmc5_fck",
3808 .clkctrl_reg = OMAP4430_CM_L4PER_MMCSD5_CLKCTRL,
3811 .slaves = omap44xx_mmc5_slaves,
3812 .slaves_cnt = ARRAY_SIZE(omap44xx_mmc5_slaves),
3813 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
3821 static struct omap_hwmod_class omap44xx_mpu_hwmod_class = {
3826 static struct omap_hwmod_irq_info omap44xx_mpu_irqs[] = {
3827 { .name = "pl310", .irq = 0 + OMAP44XX_IRQ_GIC_START },
3828 { .name = "cti0", .irq = 1 + OMAP44XX_IRQ_GIC_START },
3829 { .name = "cti1", .irq = 2 + OMAP44XX_IRQ_GIC_START },
3833 /* mpu master ports */
3834 static struct omap_hwmod_ocp_if *omap44xx_mpu_masters[] = {
3835 &omap44xx_mpu__l3_main_1,
3836 &omap44xx_mpu__l4_abe,
3840 static struct omap_hwmod omap44xx_mpu_hwmod = {
3842 .class = &omap44xx_mpu_hwmod_class,
3843 .clkdm_name = "mpuss_clkdm",
3844 .flags = HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET,
3845 .mpu_irqs = omap44xx_mpu_irqs,
3846 .main_clk = "dpll_mpu_m2_ck",
3849 .clkctrl_reg = OMAP4430_CM_MPU_MPU_CLKCTRL,
3852 .masters = omap44xx_mpu_masters,
3853 .masters_cnt = ARRAY_SIZE(omap44xx_mpu_masters),
3854 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
3858 * 'smartreflex' class
3859 * smartreflex module (monitor silicon performance and outputs a measure of
3860 * performance error)
3863 /* The IP is not compliant to type1 / type2 scheme */
3864 static struct omap_hwmod_sysc_fields omap_hwmod_sysc_type_smartreflex = {
3869 static struct omap_hwmod_class_sysconfig omap44xx_smartreflex_sysc = {
3870 .sysc_offs = 0x0038,
3871 .sysc_flags = (SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE),
3872 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
3874 .sysc_fields = &omap_hwmod_sysc_type_smartreflex,
3877 static struct omap_hwmod_class omap44xx_smartreflex_hwmod_class = {
3878 .name = "smartreflex",
3879 .sysc = &omap44xx_smartreflex_sysc,
3883 /* smartreflex_core */
3884 static struct omap_hwmod omap44xx_smartreflex_core_hwmod;
3885 static struct omap_hwmod_irq_info omap44xx_smartreflex_core_irqs[] = {
3886 { .irq = 19 + OMAP44XX_IRQ_GIC_START },
3890 static struct omap_hwmod_addr_space omap44xx_smartreflex_core_addrs[] = {
3892 .pa_start = 0x4a0dd000,
3893 .pa_end = 0x4a0dd03f,
3894 .flags = ADDR_TYPE_RT
3899 /* l4_cfg -> smartreflex_core */
3900 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__smartreflex_core = {
3901 .master = &omap44xx_l4_cfg_hwmod,
3902 .slave = &omap44xx_smartreflex_core_hwmod,
3904 .addr = omap44xx_smartreflex_core_addrs,
3905 .user = OCP_USER_MPU | OCP_USER_SDMA,
3908 /* smartreflex_core slave ports */
3909 static struct omap_hwmod_ocp_if *omap44xx_smartreflex_core_slaves[] = {
3910 &omap44xx_l4_cfg__smartreflex_core,
3913 static struct omap_hwmod omap44xx_smartreflex_core_hwmod = {
3914 .name = "smartreflex_core",
3915 .class = &omap44xx_smartreflex_hwmod_class,
3916 .clkdm_name = "l4_ao_clkdm",
3917 .mpu_irqs = omap44xx_smartreflex_core_irqs,
3919 .main_clk = "smartreflex_core_fck",
3923 .clkctrl_reg = OMAP4430_CM_ALWON_SR_CORE_CLKCTRL,
3926 .slaves = omap44xx_smartreflex_core_slaves,
3927 .slaves_cnt = ARRAY_SIZE(omap44xx_smartreflex_core_slaves),
3928 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
3931 /* smartreflex_iva */
3932 static struct omap_hwmod omap44xx_smartreflex_iva_hwmod;
3933 static struct omap_hwmod_irq_info omap44xx_smartreflex_iva_irqs[] = {
3934 { .irq = 102 + OMAP44XX_IRQ_GIC_START },
3938 static struct omap_hwmod_addr_space omap44xx_smartreflex_iva_addrs[] = {
3940 .pa_start = 0x4a0db000,
3941 .pa_end = 0x4a0db03f,
3942 .flags = ADDR_TYPE_RT
3947 /* l4_cfg -> smartreflex_iva */
3948 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__smartreflex_iva = {
3949 .master = &omap44xx_l4_cfg_hwmod,
3950 .slave = &omap44xx_smartreflex_iva_hwmod,
3952 .addr = omap44xx_smartreflex_iva_addrs,
3953 .user = OCP_USER_MPU | OCP_USER_SDMA,
3956 /* smartreflex_iva slave ports */
3957 static struct omap_hwmod_ocp_if *omap44xx_smartreflex_iva_slaves[] = {
3958 &omap44xx_l4_cfg__smartreflex_iva,
3961 static struct omap_hwmod omap44xx_smartreflex_iva_hwmod = {
3962 .name = "smartreflex_iva",
3963 .class = &omap44xx_smartreflex_hwmod_class,
3964 .clkdm_name = "l4_ao_clkdm",
3965 .mpu_irqs = omap44xx_smartreflex_iva_irqs,
3966 .main_clk = "smartreflex_iva_fck",
3970 .clkctrl_reg = OMAP4430_CM_ALWON_SR_IVA_CLKCTRL,
3973 .slaves = omap44xx_smartreflex_iva_slaves,
3974 .slaves_cnt = ARRAY_SIZE(omap44xx_smartreflex_iva_slaves),
3975 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
3978 /* smartreflex_mpu */
3979 static struct omap_hwmod omap44xx_smartreflex_mpu_hwmod;
3980 static struct omap_hwmod_irq_info omap44xx_smartreflex_mpu_irqs[] = {
3981 { .irq = 18 + OMAP44XX_IRQ_GIC_START },
3985 static struct omap_hwmod_addr_space omap44xx_smartreflex_mpu_addrs[] = {
3987 .pa_start = 0x4a0d9000,
3988 .pa_end = 0x4a0d903f,
3989 .flags = ADDR_TYPE_RT
3994 /* l4_cfg -> smartreflex_mpu */
3995 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__smartreflex_mpu = {
3996 .master = &omap44xx_l4_cfg_hwmod,
3997 .slave = &omap44xx_smartreflex_mpu_hwmod,
3999 .addr = omap44xx_smartreflex_mpu_addrs,
4000 .user = OCP_USER_MPU | OCP_USER_SDMA,
4003 /* smartreflex_mpu slave ports */
4004 static struct omap_hwmod_ocp_if *omap44xx_smartreflex_mpu_slaves[] = {
4005 &omap44xx_l4_cfg__smartreflex_mpu,
4008 static struct omap_hwmod omap44xx_smartreflex_mpu_hwmod = {
4009 .name = "smartreflex_mpu",
4010 .class = &omap44xx_smartreflex_hwmod_class,
4011 .clkdm_name = "l4_ao_clkdm",
4012 .mpu_irqs = omap44xx_smartreflex_mpu_irqs,
4013 .main_clk = "smartreflex_mpu_fck",
4017 .clkctrl_reg = OMAP4430_CM_ALWON_SR_MPU_CLKCTRL,
4020 .slaves = omap44xx_smartreflex_mpu_slaves,
4021 .slaves_cnt = ARRAY_SIZE(omap44xx_smartreflex_mpu_slaves),
4022 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
4027 * spinlock provides hardware assistance for synchronizing the processes
4028 * running on multiple processors
4031 static struct omap_hwmod_class_sysconfig omap44xx_spinlock_sysc = {
4033 .sysc_offs = 0x0010,
4034 .syss_offs = 0x0014,
4035 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
4036 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE |
4037 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
4038 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
4040 .sysc_fields = &omap_hwmod_sysc_type1,
4043 static struct omap_hwmod_class omap44xx_spinlock_hwmod_class = {
4045 .sysc = &omap44xx_spinlock_sysc,
4049 static struct omap_hwmod omap44xx_spinlock_hwmod;
4050 static struct omap_hwmod_addr_space omap44xx_spinlock_addrs[] = {
4052 .pa_start = 0x4a0f6000,
4053 .pa_end = 0x4a0f6fff,
4054 .flags = ADDR_TYPE_RT
4059 /* l4_cfg -> spinlock */
4060 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__spinlock = {
4061 .master = &omap44xx_l4_cfg_hwmod,
4062 .slave = &omap44xx_spinlock_hwmod,
4064 .addr = omap44xx_spinlock_addrs,
4065 .user = OCP_USER_MPU | OCP_USER_SDMA,
4068 /* spinlock slave ports */
4069 static struct omap_hwmod_ocp_if *omap44xx_spinlock_slaves[] = {
4070 &omap44xx_l4_cfg__spinlock,
4073 static struct omap_hwmod omap44xx_spinlock_hwmod = {
4075 .class = &omap44xx_spinlock_hwmod_class,
4076 .clkdm_name = "l4_cfg_clkdm",
4079 .clkctrl_reg = OMAP4430_CM_L4CFG_HW_SEM_CLKCTRL,
4082 .slaves = omap44xx_spinlock_slaves,
4083 .slaves_cnt = ARRAY_SIZE(omap44xx_spinlock_slaves),
4084 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
4089 * general purpose timer module with accurate 1ms tick
4090 * This class contains several variants: ['timer_1ms', 'timer']
4093 static struct omap_hwmod_class_sysconfig omap44xx_timer_1ms_sysc = {
4095 .sysc_offs = 0x0010,
4096 .syss_offs = 0x0014,
4097 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
4098 SYSC_HAS_EMUFREE | SYSC_HAS_ENAWAKEUP |
4099 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
4100 SYSS_HAS_RESET_STATUS),
4101 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
4102 .sysc_fields = &omap_hwmod_sysc_type1,
4105 static struct omap_hwmod_class omap44xx_timer_1ms_hwmod_class = {
4107 .sysc = &omap44xx_timer_1ms_sysc,
4110 static struct omap_hwmod_class_sysconfig omap44xx_timer_sysc = {
4112 .sysc_offs = 0x0010,
4113 .sysc_flags = (SYSC_HAS_EMUFREE | SYSC_HAS_RESET_STATUS |
4114 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
4115 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
4117 .sysc_fields = &omap_hwmod_sysc_type2,
4120 static struct omap_hwmod_class omap44xx_timer_hwmod_class = {
4122 .sysc = &omap44xx_timer_sysc,
4126 static struct omap_hwmod omap44xx_timer1_hwmod;
4127 static struct omap_hwmod_irq_info omap44xx_timer1_irqs[] = {
4128 { .irq = 37 + OMAP44XX_IRQ_GIC_START },
4132 static struct omap_hwmod_addr_space omap44xx_timer1_addrs[] = {
4134 .pa_start = 0x4a318000,
4135 .pa_end = 0x4a31807f,
4136 .flags = ADDR_TYPE_RT
4141 /* l4_wkup -> timer1 */
4142 static struct omap_hwmod_ocp_if omap44xx_l4_wkup__timer1 = {
4143 .master = &omap44xx_l4_wkup_hwmod,
4144 .slave = &omap44xx_timer1_hwmod,
4145 .clk = "l4_wkup_clk_mux_ck",
4146 .addr = omap44xx_timer1_addrs,
4147 .user = OCP_USER_MPU | OCP_USER_SDMA,
4150 /* timer1 slave ports */
4151 static struct omap_hwmod_ocp_if *omap44xx_timer1_slaves[] = {
4152 &omap44xx_l4_wkup__timer1,
4155 static struct omap_hwmod omap44xx_timer1_hwmod = {
4157 .class = &omap44xx_timer_1ms_hwmod_class,
4158 .clkdm_name = "l4_wkup_clkdm",
4159 .mpu_irqs = omap44xx_timer1_irqs,
4160 .main_clk = "timer1_fck",
4163 .clkctrl_reg = OMAP4430_CM_WKUP_TIMER1_CLKCTRL,
4166 .slaves = omap44xx_timer1_slaves,
4167 .slaves_cnt = ARRAY_SIZE(omap44xx_timer1_slaves),
4168 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
4172 static struct omap_hwmod omap44xx_timer2_hwmod;
4173 static struct omap_hwmod_irq_info omap44xx_timer2_irqs[] = {
4174 { .irq = 38 + OMAP44XX_IRQ_GIC_START },
4178 static struct omap_hwmod_addr_space omap44xx_timer2_addrs[] = {
4180 .pa_start = 0x48032000,
4181 .pa_end = 0x4803207f,
4182 .flags = ADDR_TYPE_RT
4187 /* l4_per -> timer2 */
4188 static struct omap_hwmod_ocp_if omap44xx_l4_per__timer2 = {
4189 .master = &omap44xx_l4_per_hwmod,
4190 .slave = &omap44xx_timer2_hwmod,
4192 .addr = omap44xx_timer2_addrs,
4193 .user = OCP_USER_MPU | OCP_USER_SDMA,
4196 /* timer2 slave ports */
4197 static struct omap_hwmod_ocp_if *omap44xx_timer2_slaves[] = {
4198 &omap44xx_l4_per__timer2,
4201 static struct omap_hwmod omap44xx_timer2_hwmod = {
4203 .class = &omap44xx_timer_1ms_hwmod_class,
4204 .clkdm_name = "l4_per_clkdm",
4205 .mpu_irqs = omap44xx_timer2_irqs,
4206 .main_clk = "timer2_fck",
4209 .clkctrl_reg = OMAP4430_CM_L4PER_DMTIMER2_CLKCTRL,
4212 .slaves = omap44xx_timer2_slaves,
4213 .slaves_cnt = ARRAY_SIZE(omap44xx_timer2_slaves),
4214 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
4218 static struct omap_hwmod omap44xx_timer3_hwmod;
4219 static struct omap_hwmod_irq_info omap44xx_timer3_irqs[] = {
4220 { .irq = 39 + OMAP44XX_IRQ_GIC_START },
4224 static struct omap_hwmod_addr_space omap44xx_timer3_addrs[] = {
4226 .pa_start = 0x48034000,
4227 .pa_end = 0x4803407f,
4228 .flags = ADDR_TYPE_RT
4233 /* l4_per -> timer3 */
4234 static struct omap_hwmod_ocp_if omap44xx_l4_per__timer3 = {
4235 .master = &omap44xx_l4_per_hwmod,
4236 .slave = &omap44xx_timer3_hwmod,
4238 .addr = omap44xx_timer3_addrs,
4239 .user = OCP_USER_MPU | OCP_USER_SDMA,
4242 /* timer3 slave ports */
4243 static struct omap_hwmod_ocp_if *omap44xx_timer3_slaves[] = {
4244 &omap44xx_l4_per__timer3,
4247 static struct omap_hwmod omap44xx_timer3_hwmod = {
4249 .class = &omap44xx_timer_hwmod_class,
4250 .clkdm_name = "l4_per_clkdm",
4251 .mpu_irqs = omap44xx_timer3_irqs,
4252 .main_clk = "timer3_fck",
4255 .clkctrl_reg = OMAP4430_CM_L4PER_DMTIMER3_CLKCTRL,
4258 .slaves = omap44xx_timer3_slaves,
4259 .slaves_cnt = ARRAY_SIZE(omap44xx_timer3_slaves),
4260 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
4264 static struct omap_hwmod omap44xx_timer4_hwmod;
4265 static struct omap_hwmod_irq_info omap44xx_timer4_irqs[] = {
4266 { .irq = 40 + OMAP44XX_IRQ_GIC_START },
4270 static struct omap_hwmod_addr_space omap44xx_timer4_addrs[] = {
4272 .pa_start = 0x48036000,
4273 .pa_end = 0x4803607f,
4274 .flags = ADDR_TYPE_RT
4279 /* l4_per -> timer4 */
4280 static struct omap_hwmod_ocp_if omap44xx_l4_per__timer4 = {
4281 .master = &omap44xx_l4_per_hwmod,
4282 .slave = &omap44xx_timer4_hwmod,
4284 .addr = omap44xx_timer4_addrs,
4285 .user = OCP_USER_MPU | OCP_USER_SDMA,
4288 /* timer4 slave ports */
4289 static struct omap_hwmod_ocp_if *omap44xx_timer4_slaves[] = {
4290 &omap44xx_l4_per__timer4,
4293 static struct omap_hwmod omap44xx_timer4_hwmod = {
4295 .class = &omap44xx_timer_hwmod_class,
4296 .clkdm_name = "l4_per_clkdm",
4297 .mpu_irqs = omap44xx_timer4_irqs,
4298 .main_clk = "timer4_fck",
4301 .clkctrl_reg = OMAP4430_CM_L4PER_DMTIMER4_CLKCTRL,
4304 .slaves = omap44xx_timer4_slaves,
4305 .slaves_cnt = ARRAY_SIZE(omap44xx_timer4_slaves),
4306 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
4310 static struct omap_hwmod omap44xx_timer5_hwmod;
4311 static struct omap_hwmod_irq_info omap44xx_timer5_irqs[] = {
4312 { .irq = 41 + OMAP44XX_IRQ_GIC_START },
4316 static struct omap_hwmod_addr_space omap44xx_timer5_addrs[] = {
4318 .pa_start = 0x40138000,
4319 .pa_end = 0x4013807f,
4320 .flags = ADDR_TYPE_RT
4325 /* l4_abe -> timer5 */
4326 static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer5 = {
4327 .master = &omap44xx_l4_abe_hwmod,
4328 .slave = &omap44xx_timer5_hwmod,
4329 .clk = "ocp_abe_iclk",
4330 .addr = omap44xx_timer5_addrs,
4331 .user = OCP_USER_MPU,
4334 static struct omap_hwmod_addr_space omap44xx_timer5_dma_addrs[] = {
4336 .pa_start = 0x49038000,
4337 .pa_end = 0x4903807f,
4338 .flags = ADDR_TYPE_RT
4343 /* l4_abe -> timer5 (dma) */
4344 static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer5_dma = {
4345 .master = &omap44xx_l4_abe_hwmod,
4346 .slave = &omap44xx_timer5_hwmod,
4347 .clk = "ocp_abe_iclk",
4348 .addr = omap44xx_timer5_dma_addrs,
4349 .user = OCP_USER_SDMA,
4352 /* timer5 slave ports */
4353 static struct omap_hwmod_ocp_if *omap44xx_timer5_slaves[] = {
4354 &omap44xx_l4_abe__timer5,
4355 &omap44xx_l4_abe__timer5_dma,
4358 static struct omap_hwmod omap44xx_timer5_hwmod = {
4360 .class = &omap44xx_timer_hwmod_class,
4361 .clkdm_name = "abe_clkdm",
4362 .mpu_irqs = omap44xx_timer5_irqs,
4363 .main_clk = "timer5_fck",
4366 .clkctrl_reg = OMAP4430_CM1_ABE_TIMER5_CLKCTRL,
4369 .slaves = omap44xx_timer5_slaves,
4370 .slaves_cnt = ARRAY_SIZE(omap44xx_timer5_slaves),
4371 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
4375 static struct omap_hwmod omap44xx_timer6_hwmod;
4376 static struct omap_hwmod_irq_info omap44xx_timer6_irqs[] = {
4377 { .irq = 42 + OMAP44XX_IRQ_GIC_START },
4381 static struct omap_hwmod_addr_space omap44xx_timer6_addrs[] = {
4383 .pa_start = 0x4013a000,
4384 .pa_end = 0x4013a07f,
4385 .flags = ADDR_TYPE_RT
4390 /* l4_abe -> timer6 */
4391 static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer6 = {
4392 .master = &omap44xx_l4_abe_hwmod,
4393 .slave = &omap44xx_timer6_hwmod,
4394 .clk = "ocp_abe_iclk",
4395 .addr = omap44xx_timer6_addrs,
4396 .user = OCP_USER_MPU,
4399 static struct omap_hwmod_addr_space omap44xx_timer6_dma_addrs[] = {
4401 .pa_start = 0x4903a000,
4402 .pa_end = 0x4903a07f,
4403 .flags = ADDR_TYPE_RT
4408 /* l4_abe -> timer6 (dma) */
4409 static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer6_dma = {
4410 .master = &omap44xx_l4_abe_hwmod,
4411 .slave = &omap44xx_timer6_hwmod,
4412 .clk = "ocp_abe_iclk",
4413 .addr = omap44xx_timer6_dma_addrs,
4414 .user = OCP_USER_SDMA,
4417 /* timer6 slave ports */
4418 static struct omap_hwmod_ocp_if *omap44xx_timer6_slaves[] = {
4419 &omap44xx_l4_abe__timer6,
4420 &omap44xx_l4_abe__timer6_dma,
4423 static struct omap_hwmod omap44xx_timer6_hwmod = {
4425 .class = &omap44xx_timer_hwmod_class,
4426 .clkdm_name = "abe_clkdm",
4427 .mpu_irqs = omap44xx_timer6_irqs,
4429 .main_clk = "timer6_fck",
4432 .clkctrl_reg = OMAP4430_CM1_ABE_TIMER6_CLKCTRL,
4435 .slaves = omap44xx_timer6_slaves,
4436 .slaves_cnt = ARRAY_SIZE(omap44xx_timer6_slaves),
4437 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
4441 static struct omap_hwmod omap44xx_timer7_hwmod;
4442 static struct omap_hwmod_irq_info omap44xx_timer7_irqs[] = {
4443 { .irq = 43 + OMAP44XX_IRQ_GIC_START },
4447 static struct omap_hwmod_addr_space omap44xx_timer7_addrs[] = {
4449 .pa_start = 0x4013c000,
4450 .pa_end = 0x4013c07f,
4451 .flags = ADDR_TYPE_RT
4456 /* l4_abe -> timer7 */
4457 static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer7 = {
4458 .master = &omap44xx_l4_abe_hwmod,
4459 .slave = &omap44xx_timer7_hwmod,
4460 .clk = "ocp_abe_iclk",
4461 .addr = omap44xx_timer7_addrs,
4462 .user = OCP_USER_MPU,
4465 static struct omap_hwmod_addr_space omap44xx_timer7_dma_addrs[] = {
4467 .pa_start = 0x4903c000,
4468 .pa_end = 0x4903c07f,
4469 .flags = ADDR_TYPE_RT
4474 /* l4_abe -> timer7 (dma) */
4475 static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer7_dma = {
4476 .master = &omap44xx_l4_abe_hwmod,
4477 .slave = &omap44xx_timer7_hwmod,
4478 .clk = "ocp_abe_iclk",
4479 .addr = omap44xx_timer7_dma_addrs,
4480 .user = OCP_USER_SDMA,
4483 /* timer7 slave ports */
4484 static struct omap_hwmod_ocp_if *omap44xx_timer7_slaves[] = {
4485 &omap44xx_l4_abe__timer7,
4486 &omap44xx_l4_abe__timer7_dma,
4489 static struct omap_hwmod omap44xx_timer7_hwmod = {
4491 .class = &omap44xx_timer_hwmod_class,
4492 .clkdm_name = "abe_clkdm",
4493 .mpu_irqs = omap44xx_timer7_irqs,
4494 .main_clk = "timer7_fck",
4497 .clkctrl_reg = OMAP4430_CM1_ABE_TIMER7_CLKCTRL,
4500 .slaves = omap44xx_timer7_slaves,
4501 .slaves_cnt = ARRAY_SIZE(omap44xx_timer7_slaves),
4502 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
4506 static struct omap_hwmod omap44xx_timer8_hwmod;
4507 static struct omap_hwmod_irq_info omap44xx_timer8_irqs[] = {
4508 { .irq = 44 + OMAP44XX_IRQ_GIC_START },
4512 static struct omap_hwmod_addr_space omap44xx_timer8_addrs[] = {
4514 .pa_start = 0x4013e000,
4515 .pa_end = 0x4013e07f,
4516 .flags = ADDR_TYPE_RT
4521 /* l4_abe -> timer8 */
4522 static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer8 = {
4523 .master = &omap44xx_l4_abe_hwmod,
4524 .slave = &omap44xx_timer8_hwmod,
4525 .clk = "ocp_abe_iclk",
4526 .addr = omap44xx_timer8_addrs,
4527 .user = OCP_USER_MPU,
4530 static struct omap_hwmod_addr_space omap44xx_timer8_dma_addrs[] = {
4532 .pa_start = 0x4903e000,
4533 .pa_end = 0x4903e07f,
4534 .flags = ADDR_TYPE_RT
4539 /* l4_abe -> timer8 (dma) */
4540 static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer8_dma = {
4541 .master = &omap44xx_l4_abe_hwmod,
4542 .slave = &omap44xx_timer8_hwmod,
4543 .clk = "ocp_abe_iclk",
4544 .addr = omap44xx_timer8_dma_addrs,
4545 .user = OCP_USER_SDMA,
4548 /* timer8 slave ports */
4549 static struct omap_hwmod_ocp_if *omap44xx_timer8_slaves[] = {
4550 &omap44xx_l4_abe__timer8,
4551 &omap44xx_l4_abe__timer8_dma,
4554 static struct omap_hwmod omap44xx_timer8_hwmod = {
4556 .class = &omap44xx_timer_hwmod_class,
4557 .clkdm_name = "abe_clkdm",
4558 .mpu_irqs = omap44xx_timer8_irqs,
4559 .main_clk = "timer8_fck",
4562 .clkctrl_reg = OMAP4430_CM1_ABE_TIMER8_CLKCTRL,
4565 .slaves = omap44xx_timer8_slaves,
4566 .slaves_cnt = ARRAY_SIZE(omap44xx_timer8_slaves),
4567 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
4571 static struct omap_hwmod omap44xx_timer9_hwmod;
4572 static struct omap_hwmod_irq_info omap44xx_timer9_irqs[] = {
4573 { .irq = 45 + OMAP44XX_IRQ_GIC_START },
4577 static struct omap_hwmod_addr_space omap44xx_timer9_addrs[] = {
4579 .pa_start = 0x4803e000,
4580 .pa_end = 0x4803e07f,
4581 .flags = ADDR_TYPE_RT
4586 /* l4_per -> timer9 */
4587 static struct omap_hwmod_ocp_if omap44xx_l4_per__timer9 = {
4588 .master = &omap44xx_l4_per_hwmod,
4589 .slave = &omap44xx_timer9_hwmod,
4591 .addr = omap44xx_timer9_addrs,
4592 .user = OCP_USER_MPU | OCP_USER_SDMA,
4595 /* timer9 slave ports */
4596 static struct omap_hwmod_ocp_if *omap44xx_timer9_slaves[] = {
4597 &omap44xx_l4_per__timer9,
4600 static struct omap_hwmod omap44xx_timer9_hwmod = {
4602 .class = &omap44xx_timer_hwmod_class,
4603 .clkdm_name = "l4_per_clkdm",
4604 .mpu_irqs = omap44xx_timer9_irqs,
4605 .main_clk = "timer9_fck",
4608 .clkctrl_reg = OMAP4430_CM_L4PER_DMTIMER9_CLKCTRL,
4611 .slaves = omap44xx_timer9_slaves,
4612 .slaves_cnt = ARRAY_SIZE(omap44xx_timer9_slaves),
4613 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
4617 static struct omap_hwmod omap44xx_timer10_hwmod;
4618 static struct omap_hwmod_irq_info omap44xx_timer10_irqs[] = {
4619 { .irq = 46 + OMAP44XX_IRQ_GIC_START },
4623 static struct omap_hwmod_addr_space omap44xx_timer10_addrs[] = {
4625 .pa_start = 0x48086000,
4626 .pa_end = 0x4808607f,
4627 .flags = ADDR_TYPE_RT
4632 /* l4_per -> timer10 */
4633 static struct omap_hwmod_ocp_if omap44xx_l4_per__timer10 = {
4634 .master = &omap44xx_l4_per_hwmod,
4635 .slave = &omap44xx_timer10_hwmod,
4637 .addr = omap44xx_timer10_addrs,
4638 .user = OCP_USER_MPU | OCP_USER_SDMA,
4641 /* timer10 slave ports */
4642 static struct omap_hwmod_ocp_if *omap44xx_timer10_slaves[] = {
4643 &omap44xx_l4_per__timer10,
4646 static struct omap_hwmod omap44xx_timer10_hwmod = {
4648 .class = &omap44xx_timer_1ms_hwmod_class,
4649 .clkdm_name = "l4_per_clkdm",
4650 .mpu_irqs = omap44xx_timer10_irqs,
4651 .main_clk = "timer10_fck",
4654 .clkctrl_reg = OMAP4430_CM_L4PER_DMTIMER10_CLKCTRL,
4657 .slaves = omap44xx_timer10_slaves,
4658 .slaves_cnt = ARRAY_SIZE(omap44xx_timer10_slaves),
4659 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
4663 static struct omap_hwmod omap44xx_timer11_hwmod;
4664 static struct omap_hwmod_irq_info omap44xx_timer11_irqs[] = {
4665 { .irq = 47 + OMAP44XX_IRQ_GIC_START },
4669 static struct omap_hwmod_addr_space omap44xx_timer11_addrs[] = {
4671 .pa_start = 0x48088000,
4672 .pa_end = 0x4808807f,
4673 .flags = ADDR_TYPE_RT
4678 /* l4_per -> timer11 */
4679 static struct omap_hwmod_ocp_if omap44xx_l4_per__timer11 = {
4680 .master = &omap44xx_l4_per_hwmod,
4681 .slave = &omap44xx_timer11_hwmod,
4683 .addr = omap44xx_timer11_addrs,
4684 .user = OCP_USER_MPU | OCP_USER_SDMA,
4687 /* timer11 slave ports */
4688 static struct omap_hwmod_ocp_if *omap44xx_timer11_slaves[] = {
4689 &omap44xx_l4_per__timer11,
4692 static struct omap_hwmod omap44xx_timer11_hwmod = {
4694 .class = &omap44xx_timer_hwmod_class,
4695 .clkdm_name = "l4_per_clkdm",
4696 .mpu_irqs = omap44xx_timer11_irqs,
4697 .main_clk = "timer11_fck",
4700 .clkctrl_reg = OMAP4430_CM_L4PER_DMTIMER11_CLKCTRL,
4703 .slaves = omap44xx_timer11_slaves,
4704 .slaves_cnt = ARRAY_SIZE(omap44xx_timer11_slaves),
4705 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
4710 * universal asynchronous receiver/transmitter (uart)
4713 static struct omap_hwmod_class_sysconfig omap44xx_uart_sysc = {
4715 .sysc_offs = 0x0054,
4716 .syss_offs = 0x0058,
4717 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_ENAWAKEUP |
4718 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
4719 SYSS_HAS_RESET_STATUS),
4720 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
4722 .sysc_fields = &omap_hwmod_sysc_type1,
4725 static struct omap_hwmod_class omap44xx_uart_hwmod_class = {
4727 .sysc = &omap44xx_uart_sysc,
4731 static struct omap_hwmod omap44xx_uart1_hwmod;
4732 static struct omap_hwmod_irq_info omap44xx_uart1_irqs[] = {
4733 { .irq = 72 + OMAP44XX_IRQ_GIC_START },
4737 static struct omap_hwmod_dma_info omap44xx_uart1_sdma_reqs[] = {
4738 { .name = "tx", .dma_req = 48 + OMAP44XX_DMA_REQ_START },
4739 { .name = "rx", .dma_req = 49 + OMAP44XX_DMA_REQ_START },
4743 static struct omap_hwmod_addr_space omap44xx_uart1_addrs[] = {
4745 .pa_start = 0x4806a000,
4746 .pa_end = 0x4806a0ff,
4747 .flags = ADDR_TYPE_RT
4752 /* l4_per -> uart1 */
4753 static struct omap_hwmod_ocp_if omap44xx_l4_per__uart1 = {
4754 .master = &omap44xx_l4_per_hwmod,
4755 .slave = &omap44xx_uart1_hwmod,
4757 .addr = omap44xx_uart1_addrs,
4758 .user = OCP_USER_MPU | OCP_USER_SDMA,
4761 /* uart1 slave ports */
4762 static struct omap_hwmod_ocp_if *omap44xx_uart1_slaves[] = {
4763 &omap44xx_l4_per__uart1,
4766 static struct omap_hwmod omap44xx_uart1_hwmod = {
4768 .class = &omap44xx_uart_hwmod_class,
4769 .clkdm_name = "l4_per_clkdm",
4770 .mpu_irqs = omap44xx_uart1_irqs,
4771 .sdma_reqs = omap44xx_uart1_sdma_reqs,
4772 .main_clk = "uart1_fck",
4775 .clkctrl_reg = OMAP4430_CM_L4PER_UART1_CLKCTRL,
4778 .slaves = omap44xx_uart1_slaves,
4779 .slaves_cnt = ARRAY_SIZE(omap44xx_uart1_slaves),
4780 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
4784 static struct omap_hwmod omap44xx_uart2_hwmod;
4785 static struct omap_hwmod_irq_info omap44xx_uart2_irqs[] = {
4786 { .irq = 73 + OMAP44XX_IRQ_GIC_START },
4790 static struct omap_hwmod_dma_info omap44xx_uart2_sdma_reqs[] = {
4791 { .name = "tx", .dma_req = 50 + OMAP44XX_DMA_REQ_START },
4792 { .name = "rx", .dma_req = 51 + OMAP44XX_DMA_REQ_START },
4796 static struct omap_hwmod_addr_space omap44xx_uart2_addrs[] = {
4798 .pa_start = 0x4806c000,
4799 .pa_end = 0x4806c0ff,
4800 .flags = ADDR_TYPE_RT
4805 /* l4_per -> uart2 */
4806 static struct omap_hwmod_ocp_if omap44xx_l4_per__uart2 = {
4807 .master = &omap44xx_l4_per_hwmod,
4808 .slave = &omap44xx_uart2_hwmod,
4810 .addr = omap44xx_uart2_addrs,
4811 .user = OCP_USER_MPU | OCP_USER_SDMA,
4814 /* uart2 slave ports */
4815 static struct omap_hwmod_ocp_if *omap44xx_uart2_slaves[] = {
4816 &omap44xx_l4_per__uart2,
4819 static struct omap_hwmod omap44xx_uart2_hwmod = {
4821 .class = &omap44xx_uart_hwmod_class,
4822 .clkdm_name = "l4_per_clkdm",
4823 .mpu_irqs = omap44xx_uart2_irqs,
4824 .sdma_reqs = omap44xx_uart2_sdma_reqs,
4825 .main_clk = "uart2_fck",
4828 .clkctrl_reg = OMAP4430_CM_L4PER_UART2_CLKCTRL,
4831 .slaves = omap44xx_uart2_slaves,
4832 .slaves_cnt = ARRAY_SIZE(omap44xx_uart2_slaves),
4833 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
4837 static struct omap_hwmod omap44xx_uart3_hwmod;
4838 static struct omap_hwmod_irq_info omap44xx_uart3_irqs[] = {
4839 { .irq = 74 + OMAP44XX_IRQ_GIC_START },
4843 static struct omap_hwmod_dma_info omap44xx_uart3_sdma_reqs[] = {
4844 { .name = "tx", .dma_req = 52 + OMAP44XX_DMA_REQ_START },
4845 { .name = "rx", .dma_req = 53 + OMAP44XX_DMA_REQ_START },
4849 static struct omap_hwmod_addr_space omap44xx_uart3_addrs[] = {
4851 .pa_start = 0x48020000,
4852 .pa_end = 0x480200ff,
4853 .flags = ADDR_TYPE_RT
4858 /* l4_per -> uart3 */
4859 static struct omap_hwmod_ocp_if omap44xx_l4_per__uart3 = {
4860 .master = &omap44xx_l4_per_hwmod,
4861 .slave = &omap44xx_uart3_hwmod,
4863 .addr = omap44xx_uart3_addrs,
4864 .user = OCP_USER_MPU | OCP_USER_SDMA,
4867 /* uart3 slave ports */
4868 static struct omap_hwmod_ocp_if *omap44xx_uart3_slaves[] = {
4869 &omap44xx_l4_per__uart3,
4872 static struct omap_hwmod omap44xx_uart3_hwmod = {
4874 .class = &omap44xx_uart_hwmod_class,
4875 .clkdm_name = "l4_per_clkdm",
4876 .flags = HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET,
4877 .mpu_irqs = omap44xx_uart3_irqs,
4878 .sdma_reqs = omap44xx_uart3_sdma_reqs,
4879 .main_clk = "uart3_fck",
4882 .clkctrl_reg = OMAP4430_CM_L4PER_UART3_CLKCTRL,
4885 .slaves = omap44xx_uart3_slaves,
4886 .slaves_cnt = ARRAY_SIZE(omap44xx_uart3_slaves),
4887 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
4891 static struct omap_hwmod omap44xx_uart4_hwmod;
4892 static struct omap_hwmod_irq_info omap44xx_uart4_irqs[] = {
4893 { .irq = 70 + OMAP44XX_IRQ_GIC_START },
4897 static struct omap_hwmod_dma_info omap44xx_uart4_sdma_reqs[] = {
4898 { .name = "tx", .dma_req = 54 + OMAP44XX_DMA_REQ_START },
4899 { .name = "rx", .dma_req = 55 + OMAP44XX_DMA_REQ_START },
4903 static struct omap_hwmod_addr_space omap44xx_uart4_addrs[] = {
4905 .pa_start = 0x4806e000,
4906 .pa_end = 0x4806e0ff,
4907 .flags = ADDR_TYPE_RT
4912 /* l4_per -> uart4 */
4913 static struct omap_hwmod_ocp_if omap44xx_l4_per__uart4 = {
4914 .master = &omap44xx_l4_per_hwmod,
4915 .slave = &omap44xx_uart4_hwmod,
4917 .addr = omap44xx_uart4_addrs,
4918 .user = OCP_USER_MPU | OCP_USER_SDMA,
4921 /* uart4 slave ports */
4922 static struct omap_hwmod_ocp_if *omap44xx_uart4_slaves[] = {
4923 &omap44xx_l4_per__uart4,
4926 static struct omap_hwmod omap44xx_uart4_hwmod = {
4928 .class = &omap44xx_uart_hwmod_class,
4929 .clkdm_name = "l4_per_clkdm",
4930 .mpu_irqs = omap44xx_uart4_irqs,
4931 .sdma_reqs = omap44xx_uart4_sdma_reqs,
4932 .main_clk = "uart4_fck",
4935 .clkctrl_reg = OMAP4430_CM_L4PER_UART4_CLKCTRL,
4938 .slaves = omap44xx_uart4_slaves,
4939 .slaves_cnt = ARRAY_SIZE(omap44xx_uart4_slaves),
4940 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
4944 * 'usb_otg_hs' class
4945 * high-speed on-the-go universal serial bus (usb_otg_hs) controller
4948 static struct omap_hwmod_class_sysconfig omap44xx_usb_otg_hs_sysc = {
4950 .sysc_offs = 0x0404,
4951 .syss_offs = 0x0408,
4952 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_ENAWAKEUP |
4953 SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE |
4954 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
4955 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
4956 SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
4958 .sysc_fields = &omap_hwmod_sysc_type1,
4961 static struct omap_hwmod_class omap44xx_usb_otg_hs_hwmod_class = {
4962 .name = "usb_otg_hs",
4963 .sysc = &omap44xx_usb_otg_hs_sysc,
4967 static struct omap_hwmod_irq_info omap44xx_usb_otg_hs_irqs[] = {
4968 { .name = "mc", .irq = 92 + OMAP44XX_IRQ_GIC_START },
4969 { .name = "dma", .irq = 93 + OMAP44XX_IRQ_GIC_START },
4973 /* usb_otg_hs master ports */
4974 static struct omap_hwmod_ocp_if *omap44xx_usb_otg_hs_masters[] = {
4975 &omap44xx_usb_otg_hs__l3_main_2,
4978 static struct omap_hwmod_addr_space omap44xx_usb_otg_hs_addrs[] = {
4980 .pa_start = 0x4a0ab000,
4981 .pa_end = 0x4a0ab003,
4982 .flags = ADDR_TYPE_RT
4987 /* l4_cfg -> usb_otg_hs */
4988 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__usb_otg_hs = {
4989 .master = &omap44xx_l4_cfg_hwmod,
4990 .slave = &omap44xx_usb_otg_hs_hwmod,
4992 .addr = omap44xx_usb_otg_hs_addrs,
4993 .user = OCP_USER_MPU | OCP_USER_SDMA,
4996 /* usb_otg_hs slave ports */
4997 static struct omap_hwmod_ocp_if *omap44xx_usb_otg_hs_slaves[] = {
4998 &omap44xx_l4_cfg__usb_otg_hs,
5001 static struct omap_hwmod_opt_clk usb_otg_hs_opt_clks[] = {
5002 { .role = "xclk", .clk = "usb_otg_hs_xclk" },
5005 static struct omap_hwmod omap44xx_usb_otg_hs_hwmod = {
5006 .name = "usb_otg_hs",
5007 .class = &omap44xx_usb_otg_hs_hwmod_class,
5008 .clkdm_name = "l3_init_clkdm",
5009 .flags = HWMOD_SWSUP_SIDLE | HWMOD_SWSUP_MSTANDBY,
5010 .mpu_irqs = omap44xx_usb_otg_hs_irqs,
5011 .main_clk = "usb_otg_hs_ick",
5014 .clkctrl_reg = OMAP4430_CM_L3INIT_USB_OTG_CLKCTRL,
5017 .opt_clks = usb_otg_hs_opt_clks,
5018 .opt_clks_cnt = ARRAY_SIZE(usb_otg_hs_opt_clks),
5019 .slaves = omap44xx_usb_otg_hs_slaves,
5020 .slaves_cnt = ARRAY_SIZE(omap44xx_usb_otg_hs_slaves),
5021 .masters = omap44xx_usb_otg_hs_masters,
5022 .masters_cnt = ARRAY_SIZE(omap44xx_usb_otg_hs_masters),
5023 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
5028 * 32-bit watchdog upward counter that generates a pulse on the reset pin on
5029 * overflow condition
5032 static struct omap_hwmod_class_sysconfig omap44xx_wd_timer_sysc = {
5034 .sysc_offs = 0x0010,
5035 .syss_offs = 0x0014,
5036 .sysc_flags = (SYSC_HAS_EMUFREE | SYSC_HAS_SIDLEMODE |
5037 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
5038 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
5040 .sysc_fields = &omap_hwmod_sysc_type1,
5043 static struct omap_hwmod_class omap44xx_wd_timer_hwmod_class = {
5045 .sysc = &omap44xx_wd_timer_sysc,
5046 .pre_shutdown = &omap2_wd_timer_disable,
5050 static struct omap_hwmod omap44xx_wd_timer2_hwmod;
5051 static struct omap_hwmod_irq_info omap44xx_wd_timer2_irqs[] = {
5052 { .irq = 80 + OMAP44XX_IRQ_GIC_START },
5056 static struct omap_hwmod_addr_space omap44xx_wd_timer2_addrs[] = {
5058 .pa_start = 0x4a314000,
5059 .pa_end = 0x4a31407f,
5060 .flags = ADDR_TYPE_RT
5065 /* l4_wkup -> wd_timer2 */
5066 static struct omap_hwmod_ocp_if omap44xx_l4_wkup__wd_timer2 = {
5067 .master = &omap44xx_l4_wkup_hwmod,
5068 .slave = &omap44xx_wd_timer2_hwmod,
5069 .clk = "l4_wkup_clk_mux_ck",
5070 .addr = omap44xx_wd_timer2_addrs,
5071 .user = OCP_USER_MPU | OCP_USER_SDMA,
5074 /* wd_timer2 slave ports */
5075 static struct omap_hwmod_ocp_if *omap44xx_wd_timer2_slaves[] = {
5076 &omap44xx_l4_wkup__wd_timer2,
5079 static struct omap_hwmod omap44xx_wd_timer2_hwmod = {
5080 .name = "wd_timer2",
5081 .class = &omap44xx_wd_timer_hwmod_class,
5082 .clkdm_name = "l4_wkup_clkdm",
5083 .mpu_irqs = omap44xx_wd_timer2_irqs,
5084 .main_clk = "wd_timer2_fck",
5087 .clkctrl_reg = OMAP4430_CM_WKUP_WDT2_CLKCTRL,
5090 .slaves = omap44xx_wd_timer2_slaves,
5091 .slaves_cnt = ARRAY_SIZE(omap44xx_wd_timer2_slaves),
5092 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
5096 static struct omap_hwmod omap44xx_wd_timer3_hwmod;
5097 static struct omap_hwmod_irq_info omap44xx_wd_timer3_irqs[] = {
5098 { .irq = 36 + OMAP44XX_IRQ_GIC_START },
5102 static struct omap_hwmod_addr_space omap44xx_wd_timer3_addrs[] = {
5104 .pa_start = 0x40130000,
5105 .pa_end = 0x4013007f,
5106 .flags = ADDR_TYPE_RT
5111 /* l4_abe -> wd_timer3 */
5112 static struct omap_hwmod_ocp_if omap44xx_l4_abe__wd_timer3 = {
5113 .master = &omap44xx_l4_abe_hwmod,
5114 .slave = &omap44xx_wd_timer3_hwmod,
5115 .clk = "ocp_abe_iclk",
5116 .addr = omap44xx_wd_timer3_addrs,
5117 .user = OCP_USER_MPU,
5120 static struct omap_hwmod_addr_space omap44xx_wd_timer3_dma_addrs[] = {
5122 .pa_start = 0x49030000,
5123 .pa_end = 0x4903007f,
5124 .flags = ADDR_TYPE_RT
5129 /* l4_abe -> wd_timer3 (dma) */
5130 static struct omap_hwmod_ocp_if omap44xx_l4_abe__wd_timer3_dma = {
5131 .master = &omap44xx_l4_abe_hwmod,
5132 .slave = &omap44xx_wd_timer3_hwmod,
5133 .clk = "ocp_abe_iclk",
5134 .addr = omap44xx_wd_timer3_dma_addrs,
5135 .user = OCP_USER_SDMA,
5138 /* wd_timer3 slave ports */
5139 static struct omap_hwmod_ocp_if *omap44xx_wd_timer3_slaves[] = {
5140 &omap44xx_l4_abe__wd_timer3,
5141 &omap44xx_l4_abe__wd_timer3_dma,
5144 static struct omap_hwmod omap44xx_wd_timer3_hwmod = {
5145 .name = "wd_timer3",
5146 .class = &omap44xx_wd_timer_hwmod_class,
5147 .clkdm_name = "abe_clkdm",
5148 .mpu_irqs = omap44xx_wd_timer3_irqs,
5149 .main_clk = "wd_timer3_fck",
5152 .clkctrl_reg = OMAP4430_CM1_ABE_WDT3_CLKCTRL,
5155 .slaves = omap44xx_wd_timer3_slaves,
5156 .slaves_cnt = ARRAY_SIZE(omap44xx_wd_timer3_slaves),
5157 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
5160 static __initdata struct omap_hwmod *omap44xx_hwmods[] = {
5163 &omap44xx_dmm_hwmod,
5166 &omap44xx_emif_fw_hwmod,
5169 &omap44xx_l3_instr_hwmod,
5170 &omap44xx_l3_main_1_hwmod,
5171 &omap44xx_l3_main_2_hwmod,
5172 &omap44xx_l3_main_3_hwmod,
5175 &omap44xx_l4_abe_hwmod,
5176 &omap44xx_l4_cfg_hwmod,
5177 &omap44xx_l4_per_hwmod,
5178 &omap44xx_l4_wkup_hwmod,
5181 &omap44xx_mpu_private_hwmod,
5184 /* &omap44xx_aess_hwmod, */
5187 &omap44xx_bandgap_hwmod,
5190 /* &omap44xx_counter_32k_hwmod, */
5193 &omap44xx_dma_system_hwmod,
5196 &omap44xx_dmic_hwmod,
5199 &omap44xx_dsp_hwmod,
5200 &omap44xx_dsp_c0_hwmod,
5203 &omap44xx_dss_hwmod,
5204 &omap44xx_dss_dispc_hwmod,
5205 &omap44xx_dss_dsi1_hwmod,
5206 &omap44xx_dss_dsi2_hwmod,
5207 &omap44xx_dss_hdmi_hwmod,
5208 &omap44xx_dss_rfbi_hwmod,
5209 &omap44xx_dss_venc_hwmod,
5212 &omap44xx_gpio1_hwmod,
5213 &omap44xx_gpio2_hwmod,
5214 &omap44xx_gpio3_hwmod,
5215 &omap44xx_gpio4_hwmod,
5216 &omap44xx_gpio5_hwmod,
5217 &omap44xx_gpio6_hwmod,
5220 /* &omap44xx_hsi_hwmod, */
5223 &omap44xx_i2c1_hwmod,
5224 &omap44xx_i2c2_hwmod,
5225 &omap44xx_i2c3_hwmod,
5226 &omap44xx_i2c4_hwmod,
5229 &omap44xx_ipu_hwmod,
5230 &omap44xx_ipu_c0_hwmod,
5231 &omap44xx_ipu_c1_hwmod,
5234 /* &omap44xx_iss_hwmod, */
5237 &omap44xx_iva_hwmod,
5238 &omap44xx_iva_seq0_hwmod,
5239 &omap44xx_iva_seq1_hwmod,
5242 &omap44xx_kbd_hwmod,
5245 &omap44xx_mailbox_hwmod,
5248 &omap44xx_mcbsp1_hwmod,
5249 &omap44xx_mcbsp2_hwmod,
5250 &omap44xx_mcbsp3_hwmod,
5251 &omap44xx_mcbsp4_hwmod,
5254 /* &omap44xx_mcpdm_hwmod, */
5257 &omap44xx_mcspi1_hwmod,
5258 &omap44xx_mcspi2_hwmod,
5259 &omap44xx_mcspi3_hwmod,
5260 &omap44xx_mcspi4_hwmod,
5263 &omap44xx_mmc1_hwmod,
5264 &omap44xx_mmc2_hwmod,
5265 &omap44xx_mmc3_hwmod,
5266 &omap44xx_mmc4_hwmod,
5267 &omap44xx_mmc5_hwmod,
5270 &omap44xx_mpu_hwmod,
5272 /* smartreflex class */
5273 &omap44xx_smartreflex_core_hwmod,
5274 &omap44xx_smartreflex_iva_hwmod,
5275 &omap44xx_smartreflex_mpu_hwmod,
5277 /* spinlock class */
5278 &omap44xx_spinlock_hwmod,
5281 &omap44xx_timer1_hwmod,
5282 &omap44xx_timer2_hwmod,
5283 &omap44xx_timer3_hwmod,
5284 &omap44xx_timer4_hwmod,
5285 &omap44xx_timer5_hwmod,
5286 &omap44xx_timer6_hwmod,
5287 &omap44xx_timer7_hwmod,
5288 &omap44xx_timer8_hwmod,
5289 &omap44xx_timer9_hwmod,
5290 &omap44xx_timer10_hwmod,
5291 &omap44xx_timer11_hwmod,
5294 &omap44xx_uart1_hwmod,
5295 &omap44xx_uart2_hwmod,
5296 &omap44xx_uart3_hwmod,
5297 &omap44xx_uart4_hwmod,
5299 /* usb_otg_hs class */
5300 &omap44xx_usb_otg_hs_hwmod,
5302 /* wd_timer class */
5303 &omap44xx_wd_timer2_hwmod,
5304 &omap44xx_wd_timer3_hwmod,
5309 int __init omap44xx_hwmod_init(void)
5311 return omap_hwmod_register(omap44xx_hwmods);