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>
25 #include <plat/gpio.h>
28 #include "omap_hwmod_common_data.h"
33 #include "prm-regbits-44xx.h"
36 /* Base offset for all OMAP4 interrupts external to MPUSS */
37 #define OMAP44XX_IRQ_GIC_START 32
39 /* Base offset for all OMAP4 dma requests */
40 #define OMAP44XX_DMA_REQ_START 1
42 /* Backward references (IPs with Bus Master capability) */
43 static struct omap_hwmod omap44xx_dma_system_hwmod;
44 static struct omap_hwmod omap44xx_dmm_hwmod;
45 static struct omap_hwmod omap44xx_dsp_hwmod;
46 static struct omap_hwmod omap44xx_dss_hwmod;
47 static struct omap_hwmod omap44xx_emif_fw_hwmod;
48 static struct omap_hwmod omap44xx_iva_hwmod;
49 static struct omap_hwmod omap44xx_l3_instr_hwmod;
50 static struct omap_hwmod omap44xx_l3_main_1_hwmod;
51 static struct omap_hwmod omap44xx_l3_main_2_hwmod;
52 static struct omap_hwmod omap44xx_l3_main_3_hwmod;
53 static struct omap_hwmod omap44xx_l4_abe_hwmod;
54 static struct omap_hwmod omap44xx_l4_cfg_hwmod;
55 static struct omap_hwmod omap44xx_l4_per_hwmod;
56 static struct omap_hwmod omap44xx_l4_wkup_hwmod;
57 static struct omap_hwmod omap44xx_mpu_hwmod;
58 static struct omap_hwmod omap44xx_mpu_private_hwmod;
61 * Interconnects omap_hwmod structures
62 * hwmods that compose the global OMAP interconnect
69 static struct omap_hwmod_class omap44xx_dmm_hwmod_class = {
73 /* dmm interface data */
74 /* l3_main_1 -> dmm */
75 static struct omap_hwmod_ocp_if omap44xx_l3_main_1__dmm = {
76 .master = &omap44xx_l3_main_1_hwmod,
77 .slave = &omap44xx_dmm_hwmod,
79 .user = OCP_USER_SDMA,
82 static struct omap_hwmod_addr_space omap44xx_dmm_addrs[] = {
84 .pa_start = 0x4e000000,
91 static struct omap_hwmod_ocp_if omap44xx_mpu__dmm = {
92 .master = &omap44xx_mpu_hwmod,
93 .slave = &omap44xx_dmm_hwmod,
95 .addr = omap44xx_dmm_addrs,
96 .addr_cnt = ARRAY_SIZE(omap44xx_dmm_addrs),
100 /* dmm slave ports */
101 static struct omap_hwmod_ocp_if *omap44xx_dmm_slaves[] = {
102 &omap44xx_l3_main_1__dmm,
106 static struct omap_hwmod_irq_info omap44xx_dmm_irqs[] = {
107 { .irq = 113 + OMAP44XX_IRQ_GIC_START },
110 static struct omap_hwmod omap44xx_dmm_hwmod = {
112 .class = &omap44xx_dmm_hwmod_class,
113 .slaves = omap44xx_dmm_slaves,
114 .slaves_cnt = ARRAY_SIZE(omap44xx_dmm_slaves),
115 .mpu_irqs = omap44xx_dmm_irqs,
116 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_dmm_irqs),
117 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
122 * instance(s): emif_fw
124 static struct omap_hwmod_class omap44xx_emif_fw_hwmod_class = {
128 /* emif_fw interface data */
130 static struct omap_hwmod_ocp_if omap44xx_dmm__emif_fw = {
131 .master = &omap44xx_dmm_hwmod,
132 .slave = &omap44xx_emif_fw_hwmod,
134 .user = OCP_USER_MPU | OCP_USER_SDMA,
137 static struct omap_hwmod_addr_space omap44xx_emif_fw_addrs[] = {
139 .pa_start = 0x4a20c000,
140 .pa_end = 0x4a20c0ff,
141 .flags = ADDR_TYPE_RT
145 /* l4_cfg -> emif_fw */
146 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__emif_fw = {
147 .master = &omap44xx_l4_cfg_hwmod,
148 .slave = &omap44xx_emif_fw_hwmod,
150 .addr = omap44xx_emif_fw_addrs,
151 .addr_cnt = ARRAY_SIZE(omap44xx_emif_fw_addrs),
152 .user = OCP_USER_MPU,
155 /* emif_fw slave ports */
156 static struct omap_hwmod_ocp_if *omap44xx_emif_fw_slaves[] = {
157 &omap44xx_dmm__emif_fw,
158 &omap44xx_l4_cfg__emif_fw,
161 static struct omap_hwmod omap44xx_emif_fw_hwmod = {
163 .class = &omap44xx_emif_fw_hwmod_class,
164 .slaves = omap44xx_emif_fw_slaves,
165 .slaves_cnt = ARRAY_SIZE(omap44xx_emif_fw_slaves),
166 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
171 * instance(s): l3_instr, l3_main_1, l3_main_2, l3_main_3
173 static struct omap_hwmod_class omap44xx_l3_hwmod_class = {
177 /* l3_instr interface data */
178 /* iva -> l3_instr */
179 static struct omap_hwmod_ocp_if omap44xx_iva__l3_instr = {
180 .master = &omap44xx_iva_hwmod,
181 .slave = &omap44xx_l3_instr_hwmod,
183 .user = OCP_USER_MPU | OCP_USER_SDMA,
186 /* l3_main_3 -> l3_instr */
187 static struct omap_hwmod_ocp_if omap44xx_l3_main_3__l3_instr = {
188 .master = &omap44xx_l3_main_3_hwmod,
189 .slave = &omap44xx_l3_instr_hwmod,
191 .user = OCP_USER_MPU | OCP_USER_SDMA,
194 /* l3_instr slave ports */
195 static struct omap_hwmod_ocp_if *omap44xx_l3_instr_slaves[] = {
196 &omap44xx_iva__l3_instr,
197 &omap44xx_l3_main_3__l3_instr,
200 static struct omap_hwmod omap44xx_l3_instr_hwmod = {
202 .class = &omap44xx_l3_hwmod_class,
203 .slaves = omap44xx_l3_instr_slaves,
204 .slaves_cnt = ARRAY_SIZE(omap44xx_l3_instr_slaves),
205 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
208 /* l3_main_1 interface data */
209 /* dsp -> l3_main_1 */
210 static struct omap_hwmod_ocp_if omap44xx_dsp__l3_main_1 = {
211 .master = &omap44xx_dsp_hwmod,
212 .slave = &omap44xx_l3_main_1_hwmod,
214 .user = OCP_USER_MPU | OCP_USER_SDMA,
217 /* dss -> l3_main_1 */
218 static struct omap_hwmod_ocp_if omap44xx_dss__l3_main_1 = {
219 .master = &omap44xx_dss_hwmod,
220 .slave = &omap44xx_l3_main_1_hwmod,
222 .user = OCP_USER_MPU | OCP_USER_SDMA,
225 /* l3_main_2 -> l3_main_1 */
226 static struct omap_hwmod_ocp_if omap44xx_l3_main_2__l3_main_1 = {
227 .master = &omap44xx_l3_main_2_hwmod,
228 .slave = &omap44xx_l3_main_1_hwmod,
230 .user = OCP_USER_MPU | OCP_USER_SDMA,
233 /* l4_cfg -> l3_main_1 */
234 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l3_main_1 = {
235 .master = &omap44xx_l4_cfg_hwmod,
236 .slave = &omap44xx_l3_main_1_hwmod,
238 .user = OCP_USER_MPU | OCP_USER_SDMA,
241 /* mpu -> l3_main_1 */
242 static struct omap_hwmod_ocp_if omap44xx_mpu__l3_main_1 = {
243 .master = &omap44xx_mpu_hwmod,
244 .slave = &omap44xx_l3_main_1_hwmod,
246 .user = OCP_USER_MPU | OCP_USER_SDMA,
249 /* l3_main_1 slave ports */
250 static struct omap_hwmod_ocp_if *omap44xx_l3_main_1_slaves[] = {
251 &omap44xx_dsp__l3_main_1,
252 &omap44xx_dss__l3_main_1,
253 &omap44xx_l3_main_2__l3_main_1,
254 &omap44xx_l4_cfg__l3_main_1,
255 &omap44xx_mpu__l3_main_1,
258 static struct omap_hwmod omap44xx_l3_main_1_hwmod = {
260 .class = &omap44xx_l3_hwmod_class,
261 .slaves = omap44xx_l3_main_1_slaves,
262 .slaves_cnt = ARRAY_SIZE(omap44xx_l3_main_1_slaves),
263 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
266 /* l3_main_2 interface data */
267 /* dma_system -> l3_main_2 */
268 static struct omap_hwmod_ocp_if omap44xx_dma_system__l3_main_2 = {
269 .master = &omap44xx_dma_system_hwmod,
270 .slave = &omap44xx_l3_main_2_hwmod,
272 .user = OCP_USER_MPU | OCP_USER_SDMA,
275 /* iva -> l3_main_2 */
276 static struct omap_hwmod_ocp_if omap44xx_iva__l3_main_2 = {
277 .master = &omap44xx_iva_hwmod,
278 .slave = &omap44xx_l3_main_2_hwmod,
280 .user = OCP_USER_MPU | OCP_USER_SDMA,
283 /* l3_main_1 -> l3_main_2 */
284 static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l3_main_2 = {
285 .master = &omap44xx_l3_main_1_hwmod,
286 .slave = &omap44xx_l3_main_2_hwmod,
288 .user = OCP_USER_MPU | OCP_USER_SDMA,
291 /* l4_cfg -> l3_main_2 */
292 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l3_main_2 = {
293 .master = &omap44xx_l4_cfg_hwmod,
294 .slave = &omap44xx_l3_main_2_hwmod,
296 .user = OCP_USER_MPU | OCP_USER_SDMA,
299 /* l3_main_2 slave ports */
300 static struct omap_hwmod_ocp_if *omap44xx_l3_main_2_slaves[] = {
301 &omap44xx_dma_system__l3_main_2,
302 &omap44xx_iva__l3_main_2,
303 &omap44xx_l3_main_1__l3_main_2,
304 &omap44xx_l4_cfg__l3_main_2,
307 static struct omap_hwmod omap44xx_l3_main_2_hwmod = {
309 .class = &omap44xx_l3_hwmod_class,
310 .slaves = omap44xx_l3_main_2_slaves,
311 .slaves_cnt = ARRAY_SIZE(omap44xx_l3_main_2_slaves),
312 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
315 /* l3_main_3 interface data */
316 /* l3_main_1 -> l3_main_3 */
317 static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l3_main_3 = {
318 .master = &omap44xx_l3_main_1_hwmod,
319 .slave = &omap44xx_l3_main_3_hwmod,
321 .user = OCP_USER_MPU | OCP_USER_SDMA,
324 /* l3_main_2 -> l3_main_3 */
325 static struct omap_hwmod_ocp_if omap44xx_l3_main_2__l3_main_3 = {
326 .master = &omap44xx_l3_main_2_hwmod,
327 .slave = &omap44xx_l3_main_3_hwmod,
329 .user = OCP_USER_MPU | OCP_USER_SDMA,
332 /* l4_cfg -> l3_main_3 */
333 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l3_main_3 = {
334 .master = &omap44xx_l4_cfg_hwmod,
335 .slave = &omap44xx_l3_main_3_hwmod,
337 .user = OCP_USER_MPU | OCP_USER_SDMA,
340 /* l3_main_3 slave ports */
341 static struct omap_hwmod_ocp_if *omap44xx_l3_main_3_slaves[] = {
342 &omap44xx_l3_main_1__l3_main_3,
343 &omap44xx_l3_main_2__l3_main_3,
344 &omap44xx_l4_cfg__l3_main_3,
347 static struct omap_hwmod omap44xx_l3_main_3_hwmod = {
349 .class = &omap44xx_l3_hwmod_class,
350 .slaves = omap44xx_l3_main_3_slaves,
351 .slaves_cnt = ARRAY_SIZE(omap44xx_l3_main_3_slaves),
352 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
357 * instance(s): l4_abe, l4_cfg, l4_per, l4_wkup
359 static struct omap_hwmod_class omap44xx_l4_hwmod_class = {
363 /* l4_abe interface data */
365 static struct omap_hwmod_ocp_if omap44xx_dsp__l4_abe = {
366 .master = &omap44xx_dsp_hwmod,
367 .slave = &omap44xx_l4_abe_hwmod,
368 .clk = "ocp_abe_iclk",
369 .user = OCP_USER_MPU | OCP_USER_SDMA,
372 /* l3_main_1 -> l4_abe */
373 static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l4_abe = {
374 .master = &omap44xx_l3_main_1_hwmod,
375 .slave = &omap44xx_l4_abe_hwmod,
377 .user = OCP_USER_MPU | OCP_USER_SDMA,
381 static struct omap_hwmod_ocp_if omap44xx_mpu__l4_abe = {
382 .master = &omap44xx_mpu_hwmod,
383 .slave = &omap44xx_l4_abe_hwmod,
384 .clk = "ocp_abe_iclk",
385 .user = OCP_USER_MPU | OCP_USER_SDMA,
388 /* l4_abe slave ports */
389 static struct omap_hwmod_ocp_if *omap44xx_l4_abe_slaves[] = {
390 &omap44xx_dsp__l4_abe,
391 &omap44xx_l3_main_1__l4_abe,
392 &omap44xx_mpu__l4_abe,
395 static struct omap_hwmod omap44xx_l4_abe_hwmod = {
397 .class = &omap44xx_l4_hwmod_class,
398 .slaves = omap44xx_l4_abe_slaves,
399 .slaves_cnt = ARRAY_SIZE(omap44xx_l4_abe_slaves),
400 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
403 /* l4_cfg interface data */
404 /* l3_main_1 -> l4_cfg */
405 static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l4_cfg = {
406 .master = &omap44xx_l3_main_1_hwmod,
407 .slave = &omap44xx_l4_cfg_hwmod,
409 .user = OCP_USER_MPU | OCP_USER_SDMA,
412 /* l4_cfg slave ports */
413 static struct omap_hwmod_ocp_if *omap44xx_l4_cfg_slaves[] = {
414 &omap44xx_l3_main_1__l4_cfg,
417 static struct omap_hwmod omap44xx_l4_cfg_hwmod = {
419 .class = &omap44xx_l4_hwmod_class,
420 .slaves = omap44xx_l4_cfg_slaves,
421 .slaves_cnt = ARRAY_SIZE(omap44xx_l4_cfg_slaves),
422 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
425 /* l4_per interface data */
426 /* l3_main_2 -> l4_per */
427 static struct omap_hwmod_ocp_if omap44xx_l3_main_2__l4_per = {
428 .master = &omap44xx_l3_main_2_hwmod,
429 .slave = &omap44xx_l4_per_hwmod,
431 .user = OCP_USER_MPU | OCP_USER_SDMA,
434 /* l4_per slave ports */
435 static struct omap_hwmod_ocp_if *omap44xx_l4_per_slaves[] = {
436 &omap44xx_l3_main_2__l4_per,
439 static struct omap_hwmod omap44xx_l4_per_hwmod = {
441 .class = &omap44xx_l4_hwmod_class,
442 .slaves = omap44xx_l4_per_slaves,
443 .slaves_cnt = ARRAY_SIZE(omap44xx_l4_per_slaves),
444 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
447 /* l4_wkup interface data */
448 /* l4_cfg -> l4_wkup */
449 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l4_wkup = {
450 .master = &omap44xx_l4_cfg_hwmod,
451 .slave = &omap44xx_l4_wkup_hwmod,
453 .user = OCP_USER_MPU | OCP_USER_SDMA,
456 /* l4_wkup slave ports */
457 static struct omap_hwmod_ocp_if *omap44xx_l4_wkup_slaves[] = {
458 &omap44xx_l4_cfg__l4_wkup,
461 static struct omap_hwmod omap44xx_l4_wkup_hwmod = {
463 .class = &omap44xx_l4_hwmod_class,
464 .slaves = omap44xx_l4_wkup_slaves,
465 .slaves_cnt = ARRAY_SIZE(omap44xx_l4_wkup_slaves),
466 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
471 * instance(s): mpu_private
473 static struct omap_hwmod_class omap44xx_mpu_bus_hwmod_class = {
477 /* mpu_private interface data */
478 /* mpu -> mpu_private */
479 static struct omap_hwmod_ocp_if omap44xx_mpu__mpu_private = {
480 .master = &omap44xx_mpu_hwmod,
481 .slave = &omap44xx_mpu_private_hwmod,
483 .user = OCP_USER_MPU | OCP_USER_SDMA,
486 /* mpu_private slave ports */
487 static struct omap_hwmod_ocp_if *omap44xx_mpu_private_slaves[] = {
488 &omap44xx_mpu__mpu_private,
491 static struct omap_hwmod omap44xx_mpu_private_hwmod = {
492 .name = "mpu_private",
493 .class = &omap44xx_mpu_bus_hwmod_class,
494 .slaves = omap44xx_mpu_private_slaves,
495 .slaves_cnt = ARRAY_SIZE(omap44xx_mpu_private_slaves),
496 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
500 * Modules omap_hwmod structures
502 * The following IPs are excluded for the moment because:
503 * - They do not need an explicit SW control using omap_hwmod API.
504 * - They still need to be validated with the driver
505 * properly adapted to omap_hwmod / omap_device
515 * ctrl_module_pad_core
516 * ctrl_module_pad_wkup
565 * dma controller for data exchange between memory to memory (i.e. internal or
566 * external memory) and gp peripherals to memory or memory to gp peripherals
569 static struct omap_hwmod_class_sysconfig omap44xx_dma_sysc = {
573 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
574 SYSC_HAS_EMUFREE | SYSC_HAS_MIDLEMODE |
575 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
576 SYSS_HAS_RESET_STATUS),
577 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
578 MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
579 .sysc_fields = &omap_hwmod_sysc_type1,
582 static struct omap_hwmod_class omap44xx_dma_hwmod_class = {
584 .sysc = &omap44xx_dma_sysc,
588 static struct omap_dma_dev_attr dma_dev_attr = {
589 .dev_caps = RESERVE_CHANNEL | DMA_LINKED_LCH | GLOBAL_PRIORITY |
590 IS_CSSA_32 | IS_CDSA_32 | IS_RW_PRIORITY,
595 static struct omap_hwmod_irq_info omap44xx_dma_system_irqs[] = {
596 { .name = "0", .irq = 12 + OMAP44XX_IRQ_GIC_START },
597 { .name = "1", .irq = 13 + OMAP44XX_IRQ_GIC_START },
598 { .name = "2", .irq = 14 + OMAP44XX_IRQ_GIC_START },
599 { .name = "3", .irq = 15 + OMAP44XX_IRQ_GIC_START },
602 /* dma_system master ports */
603 static struct omap_hwmod_ocp_if *omap44xx_dma_system_masters[] = {
604 &omap44xx_dma_system__l3_main_2,
607 static struct omap_hwmod_addr_space omap44xx_dma_system_addrs[] = {
609 .pa_start = 0x4a056000,
610 .pa_end = 0x4a0560ff,
611 .flags = ADDR_TYPE_RT
615 /* l4_cfg -> dma_system */
616 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__dma_system = {
617 .master = &omap44xx_l4_cfg_hwmod,
618 .slave = &omap44xx_dma_system_hwmod,
620 .addr = omap44xx_dma_system_addrs,
621 .addr_cnt = ARRAY_SIZE(omap44xx_dma_system_addrs),
622 .user = OCP_USER_MPU | OCP_USER_SDMA,
625 /* dma_system slave ports */
626 static struct omap_hwmod_ocp_if *omap44xx_dma_system_slaves[] = {
627 &omap44xx_l4_cfg__dma_system,
630 static struct omap_hwmod omap44xx_dma_system_hwmod = {
631 .name = "dma_system",
632 .class = &omap44xx_dma_hwmod_class,
633 .mpu_irqs = omap44xx_dma_system_irqs,
634 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_dma_system_irqs),
635 .main_clk = "l3_div_ck",
638 .clkctrl_reg = OMAP4430_CM_SDMA_SDMA_CLKCTRL,
641 .dev_attr = &dma_dev_attr,
642 .slaves = omap44xx_dma_system_slaves,
643 .slaves_cnt = ARRAY_SIZE(omap44xx_dma_system_slaves),
644 .masters = omap44xx_dma_system_masters,
645 .masters_cnt = ARRAY_SIZE(omap44xx_dma_system_masters),
646 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
651 * digital microphone controller
654 static struct omap_hwmod_class_sysconfig omap44xx_dmic_sysc = {
657 .sysc_flags = (SYSC_HAS_EMUFREE | SYSC_HAS_RESET_STATUS |
658 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
659 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
661 .sysc_fields = &omap_hwmod_sysc_type2,
664 static struct omap_hwmod_class omap44xx_dmic_hwmod_class = {
666 .sysc = &omap44xx_dmic_sysc,
670 static struct omap_hwmod omap44xx_dmic_hwmod;
671 static struct omap_hwmod_irq_info omap44xx_dmic_irqs[] = {
672 { .irq = 114 + OMAP44XX_IRQ_GIC_START },
675 static struct omap_hwmod_dma_info omap44xx_dmic_sdma_reqs[] = {
676 { .dma_req = 66 + OMAP44XX_DMA_REQ_START },
679 static struct omap_hwmod_addr_space omap44xx_dmic_addrs[] = {
681 .pa_start = 0x4012e000,
682 .pa_end = 0x4012e07f,
683 .flags = ADDR_TYPE_RT
688 static struct omap_hwmod_ocp_if omap44xx_l4_abe__dmic = {
689 .master = &omap44xx_l4_abe_hwmod,
690 .slave = &omap44xx_dmic_hwmod,
691 .clk = "ocp_abe_iclk",
692 .addr = omap44xx_dmic_addrs,
693 .addr_cnt = ARRAY_SIZE(omap44xx_dmic_addrs),
694 .user = OCP_USER_MPU,
697 static struct omap_hwmod_addr_space omap44xx_dmic_dma_addrs[] = {
699 .pa_start = 0x4902e000,
700 .pa_end = 0x4902e07f,
701 .flags = ADDR_TYPE_RT
705 /* l4_abe -> dmic (dma) */
706 static struct omap_hwmod_ocp_if omap44xx_l4_abe__dmic_dma = {
707 .master = &omap44xx_l4_abe_hwmod,
708 .slave = &omap44xx_dmic_hwmod,
709 .clk = "ocp_abe_iclk",
710 .addr = omap44xx_dmic_dma_addrs,
711 .addr_cnt = ARRAY_SIZE(omap44xx_dmic_dma_addrs),
712 .user = OCP_USER_SDMA,
715 /* dmic slave ports */
716 static struct omap_hwmod_ocp_if *omap44xx_dmic_slaves[] = {
717 &omap44xx_l4_abe__dmic,
718 &omap44xx_l4_abe__dmic_dma,
721 static struct omap_hwmod omap44xx_dmic_hwmod = {
723 .class = &omap44xx_dmic_hwmod_class,
724 .mpu_irqs = omap44xx_dmic_irqs,
725 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_dmic_irqs),
726 .sdma_reqs = omap44xx_dmic_sdma_reqs,
727 .sdma_reqs_cnt = ARRAY_SIZE(omap44xx_dmic_sdma_reqs),
728 .main_clk = "dmic_fck",
731 .clkctrl_reg = OMAP4430_CM1_ABE_DMIC_CLKCTRL,
734 .slaves = omap44xx_dmic_slaves,
735 .slaves_cnt = ARRAY_SIZE(omap44xx_dmic_slaves),
736 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
744 static struct omap_hwmod_class omap44xx_dsp_hwmod_class = {
749 static struct omap_hwmod_irq_info omap44xx_dsp_irqs[] = {
750 { .irq = 28 + OMAP44XX_IRQ_GIC_START },
753 static struct omap_hwmod_rst_info omap44xx_dsp_resets[] = {
754 { .name = "mmu_cache", .rst_shift = 1 },
757 static struct omap_hwmod_rst_info omap44xx_dsp_c0_resets[] = {
758 { .name = "dsp", .rst_shift = 0 },
762 static struct omap_hwmod_ocp_if omap44xx_dsp__iva = {
763 .master = &omap44xx_dsp_hwmod,
764 .slave = &omap44xx_iva_hwmod,
765 .clk = "dpll_iva_m5x2_ck",
768 /* dsp master ports */
769 static struct omap_hwmod_ocp_if *omap44xx_dsp_masters[] = {
770 &omap44xx_dsp__l3_main_1,
771 &omap44xx_dsp__l4_abe,
776 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__dsp = {
777 .master = &omap44xx_l4_cfg_hwmod,
778 .slave = &omap44xx_dsp_hwmod,
780 .user = OCP_USER_MPU | OCP_USER_SDMA,
783 /* dsp slave ports */
784 static struct omap_hwmod_ocp_if *omap44xx_dsp_slaves[] = {
785 &omap44xx_l4_cfg__dsp,
788 /* Pseudo hwmod for reset control purpose only */
789 static struct omap_hwmod omap44xx_dsp_c0_hwmod = {
791 .class = &omap44xx_dsp_hwmod_class,
792 .flags = HWMOD_INIT_NO_RESET,
793 .rst_lines = omap44xx_dsp_c0_resets,
794 .rst_lines_cnt = ARRAY_SIZE(omap44xx_dsp_c0_resets),
797 .rstctrl_reg = OMAP4430_RM_TESLA_RSTCTRL,
800 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
803 static struct omap_hwmod omap44xx_dsp_hwmod = {
805 .class = &omap44xx_dsp_hwmod_class,
806 .mpu_irqs = omap44xx_dsp_irqs,
807 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_dsp_irqs),
808 .rst_lines = omap44xx_dsp_resets,
809 .rst_lines_cnt = ARRAY_SIZE(omap44xx_dsp_resets),
810 .main_clk = "dsp_fck",
813 .clkctrl_reg = OMAP4430_CM_TESLA_TESLA_CLKCTRL,
814 .rstctrl_reg = OMAP4430_RM_TESLA_RSTCTRL,
817 .slaves = omap44xx_dsp_slaves,
818 .slaves_cnt = ARRAY_SIZE(omap44xx_dsp_slaves),
819 .masters = omap44xx_dsp_masters,
820 .masters_cnt = ARRAY_SIZE(omap44xx_dsp_masters),
821 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
829 static struct omap_hwmod_class_sysconfig omap44xx_dss_sysc = {
832 .sysc_flags = SYSS_HAS_RESET_STATUS,
835 static struct omap_hwmod_class omap44xx_dss_hwmod_class = {
837 .sysc = &omap44xx_dss_sysc,
841 /* dss master ports */
842 static struct omap_hwmod_ocp_if *omap44xx_dss_masters[] = {
843 &omap44xx_dss__l3_main_1,
846 static struct omap_hwmod_addr_space omap44xx_dss_dma_addrs[] = {
848 .pa_start = 0x58000000,
849 .pa_end = 0x5800007f,
850 .flags = ADDR_TYPE_RT
854 /* l3_main_2 -> dss */
855 static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss = {
856 .master = &omap44xx_l3_main_2_hwmod,
857 .slave = &omap44xx_dss_hwmod,
859 .addr = omap44xx_dss_dma_addrs,
860 .addr_cnt = ARRAY_SIZE(omap44xx_dss_dma_addrs),
861 .user = OCP_USER_SDMA,
864 static struct omap_hwmod_addr_space omap44xx_dss_addrs[] = {
866 .pa_start = 0x48040000,
867 .pa_end = 0x4804007f,
868 .flags = ADDR_TYPE_RT
873 static struct omap_hwmod_ocp_if omap44xx_l4_per__dss = {
874 .master = &omap44xx_l4_per_hwmod,
875 .slave = &omap44xx_dss_hwmod,
877 .addr = omap44xx_dss_addrs,
878 .addr_cnt = ARRAY_SIZE(omap44xx_dss_addrs),
879 .user = OCP_USER_MPU,
882 /* dss slave ports */
883 static struct omap_hwmod_ocp_if *omap44xx_dss_slaves[] = {
884 &omap44xx_l3_main_2__dss,
885 &omap44xx_l4_per__dss,
888 static struct omap_hwmod_opt_clk dss_opt_clks[] = {
889 { .role = "sys_clk", .clk = "dss_sys_clk" },
890 { .role = "tv_clk", .clk = "dss_tv_clk" },
891 { .role = "dss_clk", .clk = "dss_dss_clk" },
892 { .role = "video_clk", .clk = "dss_48mhz_clk" },
895 static struct omap_hwmod omap44xx_dss_hwmod = {
897 .class = &omap44xx_dss_hwmod_class,
898 .main_clk = "dss_fck",
901 .clkctrl_reg = OMAP4430_CM_DSS_DSS_CLKCTRL,
904 .opt_clks = dss_opt_clks,
905 .opt_clks_cnt = ARRAY_SIZE(dss_opt_clks),
906 .slaves = omap44xx_dss_slaves,
907 .slaves_cnt = ARRAY_SIZE(omap44xx_dss_slaves),
908 .masters = omap44xx_dss_masters,
909 .masters_cnt = ARRAY_SIZE(omap44xx_dss_masters),
910 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
918 static struct omap_hwmod_class_sysconfig omap44xx_dispc_sysc = {
922 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
923 SYSC_HAS_ENAWAKEUP | SYSC_HAS_MIDLEMODE |
924 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
925 SYSS_HAS_RESET_STATUS),
926 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
927 MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
928 .sysc_fields = &omap_hwmod_sysc_type1,
931 static struct omap_hwmod_class omap44xx_dispc_hwmod_class = {
933 .sysc = &omap44xx_dispc_sysc,
937 static struct omap_hwmod omap44xx_dss_dispc_hwmod;
938 static struct omap_hwmod_irq_info omap44xx_dss_dispc_irqs[] = {
939 { .irq = 25 + OMAP44XX_IRQ_GIC_START },
942 static struct omap_hwmod_dma_info omap44xx_dss_dispc_sdma_reqs[] = {
943 { .dma_req = 5 + OMAP44XX_DMA_REQ_START },
946 static struct omap_hwmod_addr_space omap44xx_dss_dispc_dma_addrs[] = {
948 .pa_start = 0x58001000,
949 .pa_end = 0x58001fff,
950 .flags = ADDR_TYPE_RT
954 /* l3_main_2 -> dss_dispc */
955 static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_dispc = {
956 .master = &omap44xx_l3_main_2_hwmod,
957 .slave = &omap44xx_dss_dispc_hwmod,
959 .addr = omap44xx_dss_dispc_dma_addrs,
960 .addr_cnt = ARRAY_SIZE(omap44xx_dss_dispc_dma_addrs),
961 .user = OCP_USER_SDMA,
964 static struct omap_hwmod_addr_space omap44xx_dss_dispc_addrs[] = {
966 .pa_start = 0x48041000,
967 .pa_end = 0x48041fff,
968 .flags = ADDR_TYPE_RT
972 /* l4_per -> dss_dispc */
973 static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_dispc = {
974 .master = &omap44xx_l4_per_hwmod,
975 .slave = &omap44xx_dss_dispc_hwmod,
977 .addr = omap44xx_dss_dispc_addrs,
978 .addr_cnt = ARRAY_SIZE(omap44xx_dss_dispc_addrs),
979 .user = OCP_USER_MPU,
982 /* dss_dispc slave ports */
983 static struct omap_hwmod_ocp_if *omap44xx_dss_dispc_slaves[] = {
984 &omap44xx_l3_main_2__dss_dispc,
985 &omap44xx_l4_per__dss_dispc,
988 static struct omap_hwmod omap44xx_dss_dispc_hwmod = {
990 .class = &omap44xx_dispc_hwmod_class,
991 .mpu_irqs = omap44xx_dss_dispc_irqs,
992 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_dss_dispc_irqs),
993 .sdma_reqs = omap44xx_dss_dispc_sdma_reqs,
994 .sdma_reqs_cnt = ARRAY_SIZE(omap44xx_dss_dispc_sdma_reqs),
995 .main_clk = "dss_fck",
998 .clkctrl_reg = OMAP4430_CM_DSS_DSS_CLKCTRL,
1001 .slaves = omap44xx_dss_dispc_slaves,
1002 .slaves_cnt = ARRAY_SIZE(omap44xx_dss_dispc_slaves),
1003 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
1008 * display serial interface controller
1011 static struct omap_hwmod_class_sysconfig omap44xx_dsi_sysc = {
1013 .sysc_offs = 0x0010,
1014 .syss_offs = 0x0014,
1015 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
1016 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE |
1017 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
1018 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
1019 .sysc_fields = &omap_hwmod_sysc_type1,
1022 static struct omap_hwmod_class omap44xx_dsi_hwmod_class = {
1024 .sysc = &omap44xx_dsi_sysc,
1028 static struct omap_hwmod omap44xx_dss_dsi1_hwmod;
1029 static struct omap_hwmod_irq_info omap44xx_dss_dsi1_irqs[] = {
1030 { .irq = 53 + OMAP44XX_IRQ_GIC_START },
1033 static struct omap_hwmod_dma_info omap44xx_dss_dsi1_sdma_reqs[] = {
1034 { .dma_req = 74 + OMAP44XX_DMA_REQ_START },
1037 static struct omap_hwmod_addr_space omap44xx_dss_dsi1_dma_addrs[] = {
1039 .pa_start = 0x58004000,
1040 .pa_end = 0x580041ff,
1041 .flags = ADDR_TYPE_RT
1045 /* l3_main_2 -> dss_dsi1 */
1046 static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_dsi1 = {
1047 .master = &omap44xx_l3_main_2_hwmod,
1048 .slave = &omap44xx_dss_dsi1_hwmod,
1050 .addr = omap44xx_dss_dsi1_dma_addrs,
1051 .addr_cnt = ARRAY_SIZE(omap44xx_dss_dsi1_dma_addrs),
1052 .user = OCP_USER_SDMA,
1055 static struct omap_hwmod_addr_space omap44xx_dss_dsi1_addrs[] = {
1057 .pa_start = 0x48044000,
1058 .pa_end = 0x480441ff,
1059 .flags = ADDR_TYPE_RT
1063 /* l4_per -> dss_dsi1 */
1064 static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_dsi1 = {
1065 .master = &omap44xx_l4_per_hwmod,
1066 .slave = &omap44xx_dss_dsi1_hwmod,
1068 .addr = omap44xx_dss_dsi1_addrs,
1069 .addr_cnt = ARRAY_SIZE(omap44xx_dss_dsi1_addrs),
1070 .user = OCP_USER_MPU,
1073 /* dss_dsi1 slave ports */
1074 static struct omap_hwmod_ocp_if *omap44xx_dss_dsi1_slaves[] = {
1075 &omap44xx_l3_main_2__dss_dsi1,
1076 &omap44xx_l4_per__dss_dsi1,
1079 static struct omap_hwmod omap44xx_dss_dsi1_hwmod = {
1081 .class = &omap44xx_dsi_hwmod_class,
1082 .mpu_irqs = omap44xx_dss_dsi1_irqs,
1083 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_dss_dsi1_irqs),
1084 .sdma_reqs = omap44xx_dss_dsi1_sdma_reqs,
1085 .sdma_reqs_cnt = ARRAY_SIZE(omap44xx_dss_dsi1_sdma_reqs),
1086 .main_clk = "dss_fck",
1089 .clkctrl_reg = OMAP4430_CM_DSS_DSS_CLKCTRL,
1092 .slaves = omap44xx_dss_dsi1_slaves,
1093 .slaves_cnt = ARRAY_SIZE(omap44xx_dss_dsi1_slaves),
1094 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
1098 static struct omap_hwmod omap44xx_dss_dsi2_hwmod;
1099 static struct omap_hwmod_irq_info omap44xx_dss_dsi2_irqs[] = {
1100 { .irq = 84 + OMAP44XX_IRQ_GIC_START },
1103 static struct omap_hwmod_dma_info omap44xx_dss_dsi2_sdma_reqs[] = {
1104 { .dma_req = 83 + OMAP44XX_DMA_REQ_START },
1107 static struct omap_hwmod_addr_space omap44xx_dss_dsi2_dma_addrs[] = {
1109 .pa_start = 0x58005000,
1110 .pa_end = 0x580051ff,
1111 .flags = ADDR_TYPE_RT
1115 /* l3_main_2 -> dss_dsi2 */
1116 static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_dsi2 = {
1117 .master = &omap44xx_l3_main_2_hwmod,
1118 .slave = &omap44xx_dss_dsi2_hwmod,
1120 .addr = omap44xx_dss_dsi2_dma_addrs,
1121 .addr_cnt = ARRAY_SIZE(omap44xx_dss_dsi2_dma_addrs),
1122 .user = OCP_USER_SDMA,
1125 static struct omap_hwmod_addr_space omap44xx_dss_dsi2_addrs[] = {
1127 .pa_start = 0x48045000,
1128 .pa_end = 0x480451ff,
1129 .flags = ADDR_TYPE_RT
1133 /* l4_per -> dss_dsi2 */
1134 static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_dsi2 = {
1135 .master = &omap44xx_l4_per_hwmod,
1136 .slave = &omap44xx_dss_dsi2_hwmod,
1138 .addr = omap44xx_dss_dsi2_addrs,
1139 .addr_cnt = ARRAY_SIZE(omap44xx_dss_dsi2_addrs),
1140 .user = OCP_USER_MPU,
1143 /* dss_dsi2 slave ports */
1144 static struct omap_hwmod_ocp_if *omap44xx_dss_dsi2_slaves[] = {
1145 &omap44xx_l3_main_2__dss_dsi2,
1146 &omap44xx_l4_per__dss_dsi2,
1149 static struct omap_hwmod omap44xx_dss_dsi2_hwmod = {
1151 .class = &omap44xx_dsi_hwmod_class,
1152 .mpu_irqs = omap44xx_dss_dsi2_irqs,
1153 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_dss_dsi2_irqs),
1154 .sdma_reqs = omap44xx_dss_dsi2_sdma_reqs,
1155 .sdma_reqs_cnt = ARRAY_SIZE(omap44xx_dss_dsi2_sdma_reqs),
1156 .main_clk = "dss_fck",
1159 .clkctrl_reg = OMAP4430_CM_DSS_DSS_CLKCTRL,
1162 .slaves = omap44xx_dss_dsi2_slaves,
1163 .slaves_cnt = ARRAY_SIZE(omap44xx_dss_dsi2_slaves),
1164 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
1172 static struct omap_hwmod_class_sysconfig omap44xx_hdmi_sysc = {
1174 .sysc_offs = 0x0010,
1175 .sysc_flags = (SYSC_HAS_RESET_STATUS | SYSC_HAS_SIDLEMODE |
1176 SYSC_HAS_SOFTRESET),
1177 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1179 .sysc_fields = &omap_hwmod_sysc_type2,
1182 static struct omap_hwmod_class omap44xx_hdmi_hwmod_class = {
1184 .sysc = &omap44xx_hdmi_sysc,
1188 static struct omap_hwmod omap44xx_dss_hdmi_hwmod;
1189 static struct omap_hwmod_irq_info omap44xx_dss_hdmi_irqs[] = {
1190 { .irq = 101 + OMAP44XX_IRQ_GIC_START },
1193 static struct omap_hwmod_dma_info omap44xx_dss_hdmi_sdma_reqs[] = {
1194 { .dma_req = 75 + OMAP44XX_DMA_REQ_START },
1197 static struct omap_hwmod_addr_space omap44xx_dss_hdmi_dma_addrs[] = {
1199 .pa_start = 0x58006000,
1200 .pa_end = 0x58006fff,
1201 .flags = ADDR_TYPE_RT
1205 /* l3_main_2 -> dss_hdmi */
1206 static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_hdmi = {
1207 .master = &omap44xx_l3_main_2_hwmod,
1208 .slave = &omap44xx_dss_hdmi_hwmod,
1210 .addr = omap44xx_dss_hdmi_dma_addrs,
1211 .addr_cnt = ARRAY_SIZE(omap44xx_dss_hdmi_dma_addrs),
1212 .user = OCP_USER_SDMA,
1215 static struct omap_hwmod_addr_space omap44xx_dss_hdmi_addrs[] = {
1217 .pa_start = 0x48046000,
1218 .pa_end = 0x48046fff,
1219 .flags = ADDR_TYPE_RT
1223 /* l4_per -> dss_hdmi */
1224 static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_hdmi = {
1225 .master = &omap44xx_l4_per_hwmod,
1226 .slave = &omap44xx_dss_hdmi_hwmod,
1228 .addr = omap44xx_dss_hdmi_addrs,
1229 .addr_cnt = ARRAY_SIZE(omap44xx_dss_hdmi_addrs),
1230 .user = OCP_USER_MPU,
1233 /* dss_hdmi slave ports */
1234 static struct omap_hwmod_ocp_if *omap44xx_dss_hdmi_slaves[] = {
1235 &omap44xx_l3_main_2__dss_hdmi,
1236 &omap44xx_l4_per__dss_hdmi,
1239 static struct omap_hwmod omap44xx_dss_hdmi_hwmod = {
1241 .class = &omap44xx_hdmi_hwmod_class,
1242 .mpu_irqs = omap44xx_dss_hdmi_irqs,
1243 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_dss_hdmi_irqs),
1244 .sdma_reqs = omap44xx_dss_hdmi_sdma_reqs,
1245 .sdma_reqs_cnt = ARRAY_SIZE(omap44xx_dss_hdmi_sdma_reqs),
1246 .main_clk = "dss_fck",
1249 .clkctrl_reg = OMAP4430_CM_DSS_DSS_CLKCTRL,
1252 .slaves = omap44xx_dss_hdmi_slaves,
1253 .slaves_cnt = ARRAY_SIZE(omap44xx_dss_hdmi_slaves),
1254 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
1259 * remote frame buffer interface
1262 static struct omap_hwmod_class_sysconfig omap44xx_rfbi_sysc = {
1264 .sysc_offs = 0x0010,
1265 .syss_offs = 0x0014,
1266 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_SIDLEMODE |
1267 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
1268 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
1269 .sysc_fields = &omap_hwmod_sysc_type1,
1272 static struct omap_hwmod_class omap44xx_rfbi_hwmod_class = {
1274 .sysc = &omap44xx_rfbi_sysc,
1278 static struct omap_hwmod omap44xx_dss_rfbi_hwmod;
1279 static struct omap_hwmod_dma_info omap44xx_dss_rfbi_sdma_reqs[] = {
1280 { .dma_req = 13 + OMAP44XX_DMA_REQ_START },
1283 static struct omap_hwmod_addr_space omap44xx_dss_rfbi_dma_addrs[] = {
1285 .pa_start = 0x58002000,
1286 .pa_end = 0x580020ff,
1287 .flags = ADDR_TYPE_RT
1291 /* l3_main_2 -> dss_rfbi */
1292 static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_rfbi = {
1293 .master = &omap44xx_l3_main_2_hwmod,
1294 .slave = &omap44xx_dss_rfbi_hwmod,
1296 .addr = omap44xx_dss_rfbi_dma_addrs,
1297 .addr_cnt = ARRAY_SIZE(omap44xx_dss_rfbi_dma_addrs),
1298 .user = OCP_USER_SDMA,
1301 static struct omap_hwmod_addr_space omap44xx_dss_rfbi_addrs[] = {
1303 .pa_start = 0x48042000,
1304 .pa_end = 0x480420ff,
1305 .flags = ADDR_TYPE_RT
1309 /* l4_per -> dss_rfbi */
1310 static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_rfbi = {
1311 .master = &omap44xx_l4_per_hwmod,
1312 .slave = &omap44xx_dss_rfbi_hwmod,
1314 .addr = omap44xx_dss_rfbi_addrs,
1315 .addr_cnt = ARRAY_SIZE(omap44xx_dss_rfbi_addrs),
1316 .user = OCP_USER_MPU,
1319 /* dss_rfbi slave ports */
1320 static struct omap_hwmod_ocp_if *omap44xx_dss_rfbi_slaves[] = {
1321 &omap44xx_l3_main_2__dss_rfbi,
1322 &omap44xx_l4_per__dss_rfbi,
1325 static struct omap_hwmod omap44xx_dss_rfbi_hwmod = {
1327 .class = &omap44xx_rfbi_hwmod_class,
1328 .sdma_reqs = omap44xx_dss_rfbi_sdma_reqs,
1329 .sdma_reqs_cnt = ARRAY_SIZE(omap44xx_dss_rfbi_sdma_reqs),
1330 .main_clk = "dss_fck",
1333 .clkctrl_reg = OMAP4430_CM_DSS_DSS_CLKCTRL,
1336 .slaves = omap44xx_dss_rfbi_slaves,
1337 .slaves_cnt = ARRAY_SIZE(omap44xx_dss_rfbi_slaves),
1338 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
1346 static struct omap_hwmod_class omap44xx_venc_hwmod_class = {
1351 static struct omap_hwmod omap44xx_dss_venc_hwmod;
1352 static struct omap_hwmod_addr_space omap44xx_dss_venc_dma_addrs[] = {
1354 .pa_start = 0x58003000,
1355 .pa_end = 0x580030ff,
1356 .flags = ADDR_TYPE_RT
1360 /* l3_main_2 -> dss_venc */
1361 static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_venc = {
1362 .master = &omap44xx_l3_main_2_hwmod,
1363 .slave = &omap44xx_dss_venc_hwmod,
1365 .addr = omap44xx_dss_venc_dma_addrs,
1366 .addr_cnt = ARRAY_SIZE(omap44xx_dss_venc_dma_addrs),
1367 .user = OCP_USER_SDMA,
1370 static struct omap_hwmod_addr_space omap44xx_dss_venc_addrs[] = {
1372 .pa_start = 0x48043000,
1373 .pa_end = 0x480430ff,
1374 .flags = ADDR_TYPE_RT
1378 /* l4_per -> dss_venc */
1379 static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_venc = {
1380 .master = &omap44xx_l4_per_hwmod,
1381 .slave = &omap44xx_dss_venc_hwmod,
1383 .addr = omap44xx_dss_venc_addrs,
1384 .addr_cnt = ARRAY_SIZE(omap44xx_dss_venc_addrs),
1385 .user = OCP_USER_MPU,
1388 /* dss_venc slave ports */
1389 static struct omap_hwmod_ocp_if *omap44xx_dss_venc_slaves[] = {
1390 &omap44xx_l3_main_2__dss_venc,
1391 &omap44xx_l4_per__dss_venc,
1394 static struct omap_hwmod omap44xx_dss_venc_hwmod = {
1396 .class = &omap44xx_venc_hwmod_class,
1397 .main_clk = "dss_fck",
1400 .clkctrl_reg = OMAP4430_CM_DSS_DSS_CLKCTRL,
1403 .slaves = omap44xx_dss_venc_slaves,
1404 .slaves_cnt = ARRAY_SIZE(omap44xx_dss_venc_slaves),
1405 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
1410 * general purpose io module
1413 static struct omap_hwmod_class_sysconfig omap44xx_gpio_sysc = {
1415 .sysc_offs = 0x0010,
1416 .syss_offs = 0x0114,
1417 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_ENAWAKEUP |
1418 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
1419 SYSS_HAS_RESET_STATUS),
1420 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1422 .sysc_fields = &omap_hwmod_sysc_type1,
1425 static struct omap_hwmod_class omap44xx_gpio_hwmod_class = {
1427 .sysc = &omap44xx_gpio_sysc,
1432 static struct omap_gpio_dev_attr gpio_dev_attr = {
1438 static struct omap_hwmod omap44xx_gpio1_hwmod;
1439 static struct omap_hwmod_irq_info omap44xx_gpio1_irqs[] = {
1440 { .irq = 29 + OMAP44XX_IRQ_GIC_START },
1443 static struct omap_hwmod_addr_space omap44xx_gpio1_addrs[] = {
1445 .pa_start = 0x4a310000,
1446 .pa_end = 0x4a3101ff,
1447 .flags = ADDR_TYPE_RT
1451 /* l4_wkup -> gpio1 */
1452 static struct omap_hwmod_ocp_if omap44xx_l4_wkup__gpio1 = {
1453 .master = &omap44xx_l4_wkup_hwmod,
1454 .slave = &omap44xx_gpio1_hwmod,
1455 .clk = "l4_wkup_clk_mux_ck",
1456 .addr = omap44xx_gpio1_addrs,
1457 .addr_cnt = ARRAY_SIZE(omap44xx_gpio1_addrs),
1458 .user = OCP_USER_MPU | OCP_USER_SDMA,
1461 /* gpio1 slave ports */
1462 static struct omap_hwmod_ocp_if *omap44xx_gpio1_slaves[] = {
1463 &omap44xx_l4_wkup__gpio1,
1466 static struct omap_hwmod_opt_clk gpio1_opt_clks[] = {
1467 { .role = "dbclk", .clk = "gpio1_dbclk" },
1470 static struct omap_hwmod omap44xx_gpio1_hwmod = {
1472 .class = &omap44xx_gpio_hwmod_class,
1473 .mpu_irqs = omap44xx_gpio1_irqs,
1474 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_gpio1_irqs),
1475 .main_clk = "gpio1_ick",
1478 .clkctrl_reg = OMAP4430_CM_WKUP_GPIO1_CLKCTRL,
1481 .opt_clks = gpio1_opt_clks,
1482 .opt_clks_cnt = ARRAY_SIZE(gpio1_opt_clks),
1483 .dev_attr = &gpio_dev_attr,
1484 .slaves = omap44xx_gpio1_slaves,
1485 .slaves_cnt = ARRAY_SIZE(omap44xx_gpio1_slaves),
1486 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
1490 static struct omap_hwmod omap44xx_gpio2_hwmod;
1491 static struct omap_hwmod_irq_info omap44xx_gpio2_irqs[] = {
1492 { .irq = 30 + OMAP44XX_IRQ_GIC_START },
1495 static struct omap_hwmod_addr_space omap44xx_gpio2_addrs[] = {
1497 .pa_start = 0x48055000,
1498 .pa_end = 0x480551ff,
1499 .flags = ADDR_TYPE_RT
1503 /* l4_per -> gpio2 */
1504 static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio2 = {
1505 .master = &omap44xx_l4_per_hwmod,
1506 .slave = &omap44xx_gpio2_hwmod,
1508 .addr = omap44xx_gpio2_addrs,
1509 .addr_cnt = ARRAY_SIZE(omap44xx_gpio2_addrs),
1510 .user = OCP_USER_MPU | OCP_USER_SDMA,
1513 /* gpio2 slave ports */
1514 static struct omap_hwmod_ocp_if *omap44xx_gpio2_slaves[] = {
1515 &omap44xx_l4_per__gpio2,
1518 static struct omap_hwmod_opt_clk gpio2_opt_clks[] = {
1519 { .role = "dbclk", .clk = "gpio2_dbclk" },
1522 static struct omap_hwmod omap44xx_gpio2_hwmod = {
1524 .class = &omap44xx_gpio_hwmod_class,
1525 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
1526 .mpu_irqs = omap44xx_gpio2_irqs,
1527 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_gpio2_irqs),
1528 .main_clk = "gpio2_ick",
1531 .clkctrl_reg = OMAP4430_CM_L4PER_GPIO2_CLKCTRL,
1534 .opt_clks = gpio2_opt_clks,
1535 .opt_clks_cnt = ARRAY_SIZE(gpio2_opt_clks),
1536 .dev_attr = &gpio_dev_attr,
1537 .slaves = omap44xx_gpio2_slaves,
1538 .slaves_cnt = ARRAY_SIZE(omap44xx_gpio2_slaves),
1539 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
1543 static struct omap_hwmod omap44xx_gpio3_hwmod;
1544 static struct omap_hwmod_irq_info omap44xx_gpio3_irqs[] = {
1545 { .irq = 31 + OMAP44XX_IRQ_GIC_START },
1548 static struct omap_hwmod_addr_space omap44xx_gpio3_addrs[] = {
1550 .pa_start = 0x48057000,
1551 .pa_end = 0x480571ff,
1552 .flags = ADDR_TYPE_RT
1556 /* l4_per -> gpio3 */
1557 static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio3 = {
1558 .master = &omap44xx_l4_per_hwmod,
1559 .slave = &omap44xx_gpio3_hwmod,
1561 .addr = omap44xx_gpio3_addrs,
1562 .addr_cnt = ARRAY_SIZE(omap44xx_gpio3_addrs),
1563 .user = OCP_USER_MPU | OCP_USER_SDMA,
1566 /* gpio3 slave ports */
1567 static struct omap_hwmod_ocp_if *omap44xx_gpio3_slaves[] = {
1568 &omap44xx_l4_per__gpio3,
1571 static struct omap_hwmod_opt_clk gpio3_opt_clks[] = {
1572 { .role = "dbclk", .clk = "gpio3_dbclk" },
1575 static struct omap_hwmod omap44xx_gpio3_hwmod = {
1577 .class = &omap44xx_gpio_hwmod_class,
1578 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
1579 .mpu_irqs = omap44xx_gpio3_irqs,
1580 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_gpio3_irqs),
1581 .main_clk = "gpio3_ick",
1584 .clkctrl_reg = OMAP4430_CM_L4PER_GPIO3_CLKCTRL,
1587 .opt_clks = gpio3_opt_clks,
1588 .opt_clks_cnt = ARRAY_SIZE(gpio3_opt_clks),
1589 .dev_attr = &gpio_dev_attr,
1590 .slaves = omap44xx_gpio3_slaves,
1591 .slaves_cnt = ARRAY_SIZE(omap44xx_gpio3_slaves),
1592 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
1596 static struct omap_hwmod omap44xx_gpio4_hwmod;
1597 static struct omap_hwmod_irq_info omap44xx_gpio4_irqs[] = {
1598 { .irq = 32 + OMAP44XX_IRQ_GIC_START },
1601 static struct omap_hwmod_addr_space omap44xx_gpio4_addrs[] = {
1603 .pa_start = 0x48059000,
1604 .pa_end = 0x480591ff,
1605 .flags = ADDR_TYPE_RT
1609 /* l4_per -> gpio4 */
1610 static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio4 = {
1611 .master = &omap44xx_l4_per_hwmod,
1612 .slave = &omap44xx_gpio4_hwmod,
1614 .addr = omap44xx_gpio4_addrs,
1615 .addr_cnt = ARRAY_SIZE(omap44xx_gpio4_addrs),
1616 .user = OCP_USER_MPU | OCP_USER_SDMA,
1619 /* gpio4 slave ports */
1620 static struct omap_hwmod_ocp_if *omap44xx_gpio4_slaves[] = {
1621 &omap44xx_l4_per__gpio4,
1624 static struct omap_hwmod_opt_clk gpio4_opt_clks[] = {
1625 { .role = "dbclk", .clk = "gpio4_dbclk" },
1628 static struct omap_hwmod omap44xx_gpio4_hwmod = {
1630 .class = &omap44xx_gpio_hwmod_class,
1631 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
1632 .mpu_irqs = omap44xx_gpio4_irqs,
1633 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_gpio4_irqs),
1634 .main_clk = "gpio4_ick",
1637 .clkctrl_reg = OMAP4430_CM_L4PER_GPIO4_CLKCTRL,
1640 .opt_clks = gpio4_opt_clks,
1641 .opt_clks_cnt = ARRAY_SIZE(gpio4_opt_clks),
1642 .dev_attr = &gpio_dev_attr,
1643 .slaves = omap44xx_gpio4_slaves,
1644 .slaves_cnt = ARRAY_SIZE(omap44xx_gpio4_slaves),
1645 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
1649 static struct omap_hwmod omap44xx_gpio5_hwmod;
1650 static struct omap_hwmod_irq_info omap44xx_gpio5_irqs[] = {
1651 { .irq = 33 + OMAP44XX_IRQ_GIC_START },
1654 static struct omap_hwmod_addr_space omap44xx_gpio5_addrs[] = {
1656 .pa_start = 0x4805b000,
1657 .pa_end = 0x4805b1ff,
1658 .flags = ADDR_TYPE_RT
1662 /* l4_per -> gpio5 */
1663 static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio5 = {
1664 .master = &omap44xx_l4_per_hwmod,
1665 .slave = &omap44xx_gpio5_hwmod,
1667 .addr = omap44xx_gpio5_addrs,
1668 .addr_cnt = ARRAY_SIZE(omap44xx_gpio5_addrs),
1669 .user = OCP_USER_MPU | OCP_USER_SDMA,
1672 /* gpio5 slave ports */
1673 static struct omap_hwmod_ocp_if *omap44xx_gpio5_slaves[] = {
1674 &omap44xx_l4_per__gpio5,
1677 static struct omap_hwmod_opt_clk gpio5_opt_clks[] = {
1678 { .role = "dbclk", .clk = "gpio5_dbclk" },
1681 static struct omap_hwmod omap44xx_gpio5_hwmod = {
1683 .class = &omap44xx_gpio_hwmod_class,
1684 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
1685 .mpu_irqs = omap44xx_gpio5_irqs,
1686 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_gpio5_irqs),
1687 .main_clk = "gpio5_ick",
1690 .clkctrl_reg = OMAP4430_CM_L4PER_GPIO5_CLKCTRL,
1693 .opt_clks = gpio5_opt_clks,
1694 .opt_clks_cnt = ARRAY_SIZE(gpio5_opt_clks),
1695 .dev_attr = &gpio_dev_attr,
1696 .slaves = omap44xx_gpio5_slaves,
1697 .slaves_cnt = ARRAY_SIZE(omap44xx_gpio5_slaves),
1698 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
1702 static struct omap_hwmod omap44xx_gpio6_hwmod;
1703 static struct omap_hwmod_irq_info omap44xx_gpio6_irqs[] = {
1704 { .irq = 34 + OMAP44XX_IRQ_GIC_START },
1707 static struct omap_hwmod_addr_space omap44xx_gpio6_addrs[] = {
1709 .pa_start = 0x4805d000,
1710 .pa_end = 0x4805d1ff,
1711 .flags = ADDR_TYPE_RT
1715 /* l4_per -> gpio6 */
1716 static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio6 = {
1717 .master = &omap44xx_l4_per_hwmod,
1718 .slave = &omap44xx_gpio6_hwmod,
1720 .addr = omap44xx_gpio6_addrs,
1721 .addr_cnt = ARRAY_SIZE(omap44xx_gpio6_addrs),
1722 .user = OCP_USER_MPU | OCP_USER_SDMA,
1725 /* gpio6 slave ports */
1726 static struct omap_hwmod_ocp_if *omap44xx_gpio6_slaves[] = {
1727 &omap44xx_l4_per__gpio6,
1730 static struct omap_hwmod_opt_clk gpio6_opt_clks[] = {
1731 { .role = "dbclk", .clk = "gpio6_dbclk" },
1734 static struct omap_hwmod omap44xx_gpio6_hwmod = {
1736 .class = &omap44xx_gpio_hwmod_class,
1737 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
1738 .mpu_irqs = omap44xx_gpio6_irqs,
1739 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_gpio6_irqs),
1740 .main_clk = "gpio6_ick",
1743 .clkctrl_reg = OMAP4430_CM_L4PER_GPIO6_CLKCTRL,
1746 .opt_clks = gpio6_opt_clks,
1747 .opt_clks_cnt = ARRAY_SIZE(gpio6_opt_clks),
1748 .dev_attr = &gpio_dev_attr,
1749 .slaves = omap44xx_gpio6_slaves,
1750 .slaves_cnt = ARRAY_SIZE(omap44xx_gpio6_slaves),
1751 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
1756 * multimaster high-speed i2c controller
1759 static struct omap_hwmod_class_sysconfig omap44xx_i2c_sysc = {
1760 .sysc_offs = 0x0010,
1761 .syss_offs = 0x0090,
1762 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
1763 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE |
1764 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
1765 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1767 .sysc_fields = &omap_hwmod_sysc_type1,
1770 static struct omap_hwmod_class omap44xx_i2c_hwmod_class = {
1772 .sysc = &omap44xx_i2c_sysc,
1776 static struct omap_hwmod omap44xx_i2c1_hwmod;
1777 static struct omap_hwmod_irq_info omap44xx_i2c1_irqs[] = {
1778 { .irq = 56 + OMAP44XX_IRQ_GIC_START },
1781 static struct omap_hwmod_dma_info omap44xx_i2c1_sdma_reqs[] = {
1782 { .name = "tx", .dma_req = 26 + OMAP44XX_DMA_REQ_START },
1783 { .name = "rx", .dma_req = 27 + OMAP44XX_DMA_REQ_START },
1786 static struct omap_hwmod_addr_space omap44xx_i2c1_addrs[] = {
1788 .pa_start = 0x48070000,
1789 .pa_end = 0x480700ff,
1790 .flags = ADDR_TYPE_RT
1794 /* l4_per -> i2c1 */
1795 static struct omap_hwmod_ocp_if omap44xx_l4_per__i2c1 = {
1796 .master = &omap44xx_l4_per_hwmod,
1797 .slave = &omap44xx_i2c1_hwmod,
1799 .addr = omap44xx_i2c1_addrs,
1800 .addr_cnt = ARRAY_SIZE(omap44xx_i2c1_addrs),
1801 .user = OCP_USER_MPU | OCP_USER_SDMA,
1804 /* i2c1 slave ports */
1805 static struct omap_hwmod_ocp_if *omap44xx_i2c1_slaves[] = {
1806 &omap44xx_l4_per__i2c1,
1809 static struct omap_hwmod omap44xx_i2c1_hwmod = {
1811 .class = &omap44xx_i2c_hwmod_class,
1812 .flags = HWMOD_INIT_NO_RESET,
1813 .mpu_irqs = omap44xx_i2c1_irqs,
1814 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_i2c1_irqs),
1815 .sdma_reqs = omap44xx_i2c1_sdma_reqs,
1816 .sdma_reqs_cnt = ARRAY_SIZE(omap44xx_i2c1_sdma_reqs),
1817 .main_clk = "i2c1_fck",
1820 .clkctrl_reg = OMAP4430_CM_L4PER_I2C1_CLKCTRL,
1823 .slaves = omap44xx_i2c1_slaves,
1824 .slaves_cnt = ARRAY_SIZE(omap44xx_i2c1_slaves),
1825 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
1829 static struct omap_hwmod omap44xx_i2c2_hwmod;
1830 static struct omap_hwmod_irq_info omap44xx_i2c2_irqs[] = {
1831 { .irq = 57 + OMAP44XX_IRQ_GIC_START },
1834 static struct omap_hwmod_dma_info omap44xx_i2c2_sdma_reqs[] = {
1835 { .name = "tx", .dma_req = 28 + OMAP44XX_DMA_REQ_START },
1836 { .name = "rx", .dma_req = 29 + OMAP44XX_DMA_REQ_START },
1839 static struct omap_hwmod_addr_space omap44xx_i2c2_addrs[] = {
1841 .pa_start = 0x48072000,
1842 .pa_end = 0x480720ff,
1843 .flags = ADDR_TYPE_RT
1847 /* l4_per -> i2c2 */
1848 static struct omap_hwmod_ocp_if omap44xx_l4_per__i2c2 = {
1849 .master = &omap44xx_l4_per_hwmod,
1850 .slave = &omap44xx_i2c2_hwmod,
1852 .addr = omap44xx_i2c2_addrs,
1853 .addr_cnt = ARRAY_SIZE(omap44xx_i2c2_addrs),
1854 .user = OCP_USER_MPU | OCP_USER_SDMA,
1857 /* i2c2 slave ports */
1858 static struct omap_hwmod_ocp_if *omap44xx_i2c2_slaves[] = {
1859 &omap44xx_l4_per__i2c2,
1862 static struct omap_hwmod omap44xx_i2c2_hwmod = {
1864 .class = &omap44xx_i2c_hwmod_class,
1865 .flags = HWMOD_INIT_NO_RESET,
1866 .mpu_irqs = omap44xx_i2c2_irqs,
1867 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_i2c2_irqs),
1868 .sdma_reqs = omap44xx_i2c2_sdma_reqs,
1869 .sdma_reqs_cnt = ARRAY_SIZE(omap44xx_i2c2_sdma_reqs),
1870 .main_clk = "i2c2_fck",
1873 .clkctrl_reg = OMAP4430_CM_L4PER_I2C2_CLKCTRL,
1876 .slaves = omap44xx_i2c2_slaves,
1877 .slaves_cnt = ARRAY_SIZE(omap44xx_i2c2_slaves),
1878 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
1882 static struct omap_hwmod omap44xx_i2c3_hwmod;
1883 static struct omap_hwmod_irq_info omap44xx_i2c3_irqs[] = {
1884 { .irq = 61 + OMAP44XX_IRQ_GIC_START },
1887 static struct omap_hwmod_dma_info omap44xx_i2c3_sdma_reqs[] = {
1888 { .name = "tx", .dma_req = 24 + OMAP44XX_DMA_REQ_START },
1889 { .name = "rx", .dma_req = 25 + OMAP44XX_DMA_REQ_START },
1892 static struct omap_hwmod_addr_space omap44xx_i2c3_addrs[] = {
1894 .pa_start = 0x48060000,
1895 .pa_end = 0x480600ff,
1896 .flags = ADDR_TYPE_RT
1900 /* l4_per -> i2c3 */
1901 static struct omap_hwmod_ocp_if omap44xx_l4_per__i2c3 = {
1902 .master = &omap44xx_l4_per_hwmod,
1903 .slave = &omap44xx_i2c3_hwmod,
1905 .addr = omap44xx_i2c3_addrs,
1906 .addr_cnt = ARRAY_SIZE(omap44xx_i2c3_addrs),
1907 .user = OCP_USER_MPU | OCP_USER_SDMA,
1910 /* i2c3 slave ports */
1911 static struct omap_hwmod_ocp_if *omap44xx_i2c3_slaves[] = {
1912 &omap44xx_l4_per__i2c3,
1915 static struct omap_hwmod omap44xx_i2c3_hwmod = {
1917 .class = &omap44xx_i2c_hwmod_class,
1918 .flags = HWMOD_INIT_NO_RESET,
1919 .mpu_irqs = omap44xx_i2c3_irqs,
1920 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_i2c3_irqs),
1921 .sdma_reqs = omap44xx_i2c3_sdma_reqs,
1922 .sdma_reqs_cnt = ARRAY_SIZE(omap44xx_i2c3_sdma_reqs),
1923 .main_clk = "i2c3_fck",
1926 .clkctrl_reg = OMAP4430_CM_L4PER_I2C3_CLKCTRL,
1929 .slaves = omap44xx_i2c3_slaves,
1930 .slaves_cnt = ARRAY_SIZE(omap44xx_i2c3_slaves),
1931 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
1935 static struct omap_hwmod omap44xx_i2c4_hwmod;
1936 static struct omap_hwmod_irq_info omap44xx_i2c4_irqs[] = {
1937 { .irq = 62 + OMAP44XX_IRQ_GIC_START },
1940 static struct omap_hwmod_dma_info omap44xx_i2c4_sdma_reqs[] = {
1941 { .name = "tx", .dma_req = 123 + OMAP44XX_DMA_REQ_START },
1942 { .name = "rx", .dma_req = 124 + OMAP44XX_DMA_REQ_START },
1945 static struct omap_hwmod_addr_space omap44xx_i2c4_addrs[] = {
1947 .pa_start = 0x48350000,
1948 .pa_end = 0x483500ff,
1949 .flags = ADDR_TYPE_RT
1953 /* l4_per -> i2c4 */
1954 static struct omap_hwmod_ocp_if omap44xx_l4_per__i2c4 = {
1955 .master = &omap44xx_l4_per_hwmod,
1956 .slave = &omap44xx_i2c4_hwmod,
1958 .addr = omap44xx_i2c4_addrs,
1959 .addr_cnt = ARRAY_SIZE(omap44xx_i2c4_addrs),
1960 .user = OCP_USER_MPU | OCP_USER_SDMA,
1963 /* i2c4 slave ports */
1964 static struct omap_hwmod_ocp_if *omap44xx_i2c4_slaves[] = {
1965 &omap44xx_l4_per__i2c4,
1968 static struct omap_hwmod omap44xx_i2c4_hwmod = {
1970 .class = &omap44xx_i2c_hwmod_class,
1971 .flags = HWMOD_INIT_NO_RESET,
1972 .mpu_irqs = omap44xx_i2c4_irqs,
1973 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_i2c4_irqs),
1974 .sdma_reqs = omap44xx_i2c4_sdma_reqs,
1975 .sdma_reqs_cnt = ARRAY_SIZE(omap44xx_i2c4_sdma_reqs),
1976 .main_clk = "i2c4_fck",
1979 .clkctrl_reg = OMAP4430_CM_L4PER_I2C4_CLKCTRL,
1982 .slaves = omap44xx_i2c4_slaves,
1983 .slaves_cnt = ARRAY_SIZE(omap44xx_i2c4_slaves),
1984 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
1989 * multi-standard video encoder/decoder hardware accelerator
1992 static struct omap_hwmod_class omap44xx_iva_hwmod_class = {
1997 static struct omap_hwmod_irq_info omap44xx_iva_irqs[] = {
1998 { .name = "sync_1", .irq = 103 + OMAP44XX_IRQ_GIC_START },
1999 { .name = "sync_0", .irq = 104 + OMAP44XX_IRQ_GIC_START },
2000 { .name = "mailbox_0", .irq = 107 + OMAP44XX_IRQ_GIC_START },
2003 static struct omap_hwmod_rst_info omap44xx_iva_resets[] = {
2004 { .name = "logic", .rst_shift = 2 },
2007 static struct omap_hwmod_rst_info omap44xx_iva_seq0_resets[] = {
2008 { .name = "seq0", .rst_shift = 0 },
2011 static struct omap_hwmod_rst_info omap44xx_iva_seq1_resets[] = {
2012 { .name = "seq1", .rst_shift = 1 },
2015 /* iva master ports */
2016 static struct omap_hwmod_ocp_if *omap44xx_iva_masters[] = {
2017 &omap44xx_iva__l3_main_2,
2018 &omap44xx_iva__l3_instr,
2021 static struct omap_hwmod_addr_space omap44xx_iva_addrs[] = {
2023 .pa_start = 0x5a000000,
2024 .pa_end = 0x5a07ffff,
2025 .flags = ADDR_TYPE_RT
2029 /* l3_main_2 -> iva */
2030 static struct omap_hwmod_ocp_if omap44xx_l3_main_2__iva = {
2031 .master = &omap44xx_l3_main_2_hwmod,
2032 .slave = &omap44xx_iva_hwmod,
2034 .addr = omap44xx_iva_addrs,
2035 .addr_cnt = ARRAY_SIZE(omap44xx_iva_addrs),
2036 .user = OCP_USER_MPU,
2039 /* iva slave ports */
2040 static struct omap_hwmod_ocp_if *omap44xx_iva_slaves[] = {
2042 &omap44xx_l3_main_2__iva,
2045 /* Pseudo hwmod for reset control purpose only */
2046 static struct omap_hwmod omap44xx_iva_seq0_hwmod = {
2048 .class = &omap44xx_iva_hwmod_class,
2049 .flags = HWMOD_INIT_NO_RESET,
2050 .rst_lines = omap44xx_iva_seq0_resets,
2051 .rst_lines_cnt = ARRAY_SIZE(omap44xx_iva_seq0_resets),
2054 .rstctrl_reg = OMAP4430_RM_IVAHD_RSTCTRL,
2057 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
2060 /* Pseudo hwmod for reset control purpose only */
2061 static struct omap_hwmod omap44xx_iva_seq1_hwmod = {
2063 .class = &omap44xx_iva_hwmod_class,
2064 .flags = HWMOD_INIT_NO_RESET,
2065 .rst_lines = omap44xx_iva_seq1_resets,
2066 .rst_lines_cnt = ARRAY_SIZE(omap44xx_iva_seq1_resets),
2069 .rstctrl_reg = OMAP4430_RM_IVAHD_RSTCTRL,
2072 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
2075 static struct omap_hwmod omap44xx_iva_hwmod = {
2077 .class = &omap44xx_iva_hwmod_class,
2078 .mpu_irqs = omap44xx_iva_irqs,
2079 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_iva_irqs),
2080 .rst_lines = omap44xx_iva_resets,
2081 .rst_lines_cnt = ARRAY_SIZE(omap44xx_iva_resets),
2082 .main_clk = "iva_fck",
2085 .clkctrl_reg = OMAP4430_CM_IVAHD_IVAHD_CLKCTRL,
2086 .rstctrl_reg = OMAP4430_RM_IVAHD_RSTCTRL,
2089 .slaves = omap44xx_iva_slaves,
2090 .slaves_cnt = ARRAY_SIZE(omap44xx_iva_slaves),
2091 .masters = omap44xx_iva_masters,
2092 .masters_cnt = ARRAY_SIZE(omap44xx_iva_masters),
2093 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
2098 * mailbox module allowing communication between the on-chip processors using a
2099 * queued mailbox-interrupt mechanism.
2102 static struct omap_hwmod_class_sysconfig omap44xx_mailbox_sysc = {
2104 .sysc_offs = 0x0010,
2105 .sysc_flags = (SYSC_HAS_RESET_STATUS | SYSC_HAS_SIDLEMODE |
2106 SYSC_HAS_SOFTRESET),
2107 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
2108 .sysc_fields = &omap_hwmod_sysc_type2,
2111 static struct omap_hwmod_class omap44xx_mailbox_hwmod_class = {
2113 .sysc = &omap44xx_mailbox_sysc,
2117 static struct omap_hwmod omap44xx_mailbox_hwmod;
2118 static struct omap_hwmod_irq_info omap44xx_mailbox_irqs[] = {
2119 { .irq = 26 + OMAP44XX_IRQ_GIC_START },
2122 static struct omap_hwmod_addr_space omap44xx_mailbox_addrs[] = {
2124 .pa_start = 0x4a0f4000,
2125 .pa_end = 0x4a0f41ff,
2126 .flags = ADDR_TYPE_RT
2130 /* l4_cfg -> mailbox */
2131 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__mailbox = {
2132 .master = &omap44xx_l4_cfg_hwmod,
2133 .slave = &omap44xx_mailbox_hwmod,
2135 .addr = omap44xx_mailbox_addrs,
2136 .addr_cnt = ARRAY_SIZE(omap44xx_mailbox_addrs),
2137 .user = OCP_USER_MPU | OCP_USER_SDMA,
2140 /* mailbox slave ports */
2141 static struct omap_hwmod_ocp_if *omap44xx_mailbox_slaves[] = {
2142 &omap44xx_l4_cfg__mailbox,
2145 static struct omap_hwmod omap44xx_mailbox_hwmod = {
2147 .class = &omap44xx_mailbox_hwmod_class,
2148 .mpu_irqs = omap44xx_mailbox_irqs,
2149 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_mailbox_irqs),
2152 .clkctrl_reg = OMAP4430_CM_L4CFG_MAILBOX_CLKCTRL,
2155 .slaves = omap44xx_mailbox_slaves,
2156 .slaves_cnt = ARRAY_SIZE(omap44xx_mailbox_slaves),
2157 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
2162 * multichannel serial port interface (mcspi) / master/slave synchronous serial
2166 static struct omap_hwmod_class_sysconfig omap44xx_mcspi_sysc = {
2168 .sysc_offs = 0x0010,
2169 .sysc_flags = (SYSC_HAS_EMUFREE | SYSC_HAS_RESET_STATUS |
2170 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
2171 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
2173 .sysc_fields = &omap_hwmod_sysc_type2,
2176 static struct omap_hwmod_class omap44xx_mcspi_hwmod_class = {
2178 .sysc = &omap44xx_mcspi_sysc,
2182 static struct omap_hwmod omap44xx_mcspi1_hwmod;
2183 static struct omap_hwmod_irq_info omap44xx_mcspi1_irqs[] = {
2184 { .irq = 65 + OMAP44XX_IRQ_GIC_START },
2187 static struct omap_hwmod_dma_info omap44xx_mcspi1_sdma_reqs[] = {
2188 { .name = "tx0", .dma_req = 34 + OMAP44XX_DMA_REQ_START },
2189 { .name = "rx0", .dma_req = 35 + OMAP44XX_DMA_REQ_START },
2190 { .name = "tx1", .dma_req = 36 + OMAP44XX_DMA_REQ_START },
2191 { .name = "rx1", .dma_req = 37 + OMAP44XX_DMA_REQ_START },
2192 { .name = "tx2", .dma_req = 38 + OMAP44XX_DMA_REQ_START },
2193 { .name = "rx2", .dma_req = 39 + OMAP44XX_DMA_REQ_START },
2194 { .name = "tx3", .dma_req = 40 + OMAP44XX_DMA_REQ_START },
2195 { .name = "rx3", .dma_req = 41 + OMAP44XX_DMA_REQ_START },
2198 static struct omap_hwmod_addr_space omap44xx_mcspi1_addrs[] = {
2200 .pa_start = 0x48098000,
2201 .pa_end = 0x480981ff,
2202 .flags = ADDR_TYPE_RT
2206 /* l4_per -> mcspi1 */
2207 static struct omap_hwmod_ocp_if omap44xx_l4_per__mcspi1 = {
2208 .master = &omap44xx_l4_per_hwmod,
2209 .slave = &omap44xx_mcspi1_hwmod,
2211 .addr = omap44xx_mcspi1_addrs,
2212 .addr_cnt = ARRAY_SIZE(omap44xx_mcspi1_addrs),
2213 .user = OCP_USER_MPU | OCP_USER_SDMA,
2216 /* mcspi1 slave ports */
2217 static struct omap_hwmod_ocp_if *omap44xx_mcspi1_slaves[] = {
2218 &omap44xx_l4_per__mcspi1,
2221 static struct omap_hwmod omap44xx_mcspi1_hwmod = {
2223 .class = &omap44xx_mcspi_hwmod_class,
2224 .mpu_irqs = omap44xx_mcspi1_irqs,
2225 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_mcspi1_irqs),
2226 .sdma_reqs = omap44xx_mcspi1_sdma_reqs,
2227 .sdma_reqs_cnt = ARRAY_SIZE(omap44xx_mcspi1_sdma_reqs),
2228 .main_clk = "mcspi1_fck",
2231 .clkctrl_reg = OMAP4430_CM_L4PER_MCSPI1_CLKCTRL,
2234 .slaves = omap44xx_mcspi1_slaves,
2235 .slaves_cnt = ARRAY_SIZE(omap44xx_mcspi1_slaves),
2236 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
2240 static struct omap_hwmod omap44xx_mcspi2_hwmod;
2241 static struct omap_hwmod_irq_info omap44xx_mcspi2_irqs[] = {
2242 { .irq = 66 + OMAP44XX_IRQ_GIC_START },
2245 static struct omap_hwmod_dma_info omap44xx_mcspi2_sdma_reqs[] = {
2246 { .name = "tx0", .dma_req = 42 + OMAP44XX_DMA_REQ_START },
2247 { .name = "rx0", .dma_req = 43 + OMAP44XX_DMA_REQ_START },
2248 { .name = "tx1", .dma_req = 44 + OMAP44XX_DMA_REQ_START },
2249 { .name = "rx1", .dma_req = 45 + OMAP44XX_DMA_REQ_START },
2252 static struct omap_hwmod_addr_space omap44xx_mcspi2_addrs[] = {
2254 .pa_start = 0x4809a000,
2255 .pa_end = 0x4809a1ff,
2256 .flags = ADDR_TYPE_RT
2260 /* l4_per -> mcspi2 */
2261 static struct omap_hwmod_ocp_if omap44xx_l4_per__mcspi2 = {
2262 .master = &omap44xx_l4_per_hwmod,
2263 .slave = &omap44xx_mcspi2_hwmod,
2265 .addr = omap44xx_mcspi2_addrs,
2266 .addr_cnt = ARRAY_SIZE(omap44xx_mcspi2_addrs),
2267 .user = OCP_USER_MPU | OCP_USER_SDMA,
2270 /* mcspi2 slave ports */
2271 static struct omap_hwmod_ocp_if *omap44xx_mcspi2_slaves[] = {
2272 &omap44xx_l4_per__mcspi2,
2275 static struct omap_hwmod omap44xx_mcspi2_hwmod = {
2277 .class = &omap44xx_mcspi_hwmod_class,
2278 .mpu_irqs = omap44xx_mcspi2_irqs,
2279 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_mcspi2_irqs),
2280 .sdma_reqs = omap44xx_mcspi2_sdma_reqs,
2281 .sdma_reqs_cnt = ARRAY_SIZE(omap44xx_mcspi2_sdma_reqs),
2282 .main_clk = "mcspi2_fck",
2285 .clkctrl_reg = OMAP4430_CM_L4PER_MCSPI2_CLKCTRL,
2288 .slaves = omap44xx_mcspi2_slaves,
2289 .slaves_cnt = ARRAY_SIZE(omap44xx_mcspi2_slaves),
2290 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
2294 static struct omap_hwmod omap44xx_mcspi3_hwmod;
2295 static struct omap_hwmod_irq_info omap44xx_mcspi3_irqs[] = {
2296 { .irq = 91 + OMAP44XX_IRQ_GIC_START },
2299 static struct omap_hwmod_dma_info omap44xx_mcspi3_sdma_reqs[] = {
2300 { .name = "tx0", .dma_req = 14 + OMAP44XX_DMA_REQ_START },
2301 { .name = "rx0", .dma_req = 15 + OMAP44XX_DMA_REQ_START },
2302 { .name = "tx1", .dma_req = 22 + OMAP44XX_DMA_REQ_START },
2303 { .name = "rx1", .dma_req = 23 + OMAP44XX_DMA_REQ_START },
2306 static struct omap_hwmod_addr_space omap44xx_mcspi3_addrs[] = {
2308 .pa_start = 0x480b8000,
2309 .pa_end = 0x480b81ff,
2310 .flags = ADDR_TYPE_RT
2314 /* l4_per -> mcspi3 */
2315 static struct omap_hwmod_ocp_if omap44xx_l4_per__mcspi3 = {
2316 .master = &omap44xx_l4_per_hwmod,
2317 .slave = &omap44xx_mcspi3_hwmod,
2319 .addr = omap44xx_mcspi3_addrs,
2320 .addr_cnt = ARRAY_SIZE(omap44xx_mcspi3_addrs),
2321 .user = OCP_USER_MPU | OCP_USER_SDMA,
2324 /* mcspi3 slave ports */
2325 static struct omap_hwmod_ocp_if *omap44xx_mcspi3_slaves[] = {
2326 &omap44xx_l4_per__mcspi3,
2329 static struct omap_hwmod omap44xx_mcspi3_hwmod = {
2331 .class = &omap44xx_mcspi_hwmod_class,
2332 .mpu_irqs = omap44xx_mcspi3_irqs,
2333 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_mcspi3_irqs),
2334 .sdma_reqs = omap44xx_mcspi3_sdma_reqs,
2335 .sdma_reqs_cnt = ARRAY_SIZE(omap44xx_mcspi3_sdma_reqs),
2336 .main_clk = "mcspi3_fck",
2339 .clkctrl_reg = OMAP4430_CM_L4PER_MCSPI3_CLKCTRL,
2342 .slaves = omap44xx_mcspi3_slaves,
2343 .slaves_cnt = ARRAY_SIZE(omap44xx_mcspi3_slaves),
2344 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
2348 static struct omap_hwmod omap44xx_mcspi4_hwmod;
2349 static struct omap_hwmod_irq_info omap44xx_mcspi4_irqs[] = {
2350 { .irq = 48 + OMAP44XX_IRQ_GIC_START },
2353 static struct omap_hwmod_dma_info omap44xx_mcspi4_sdma_reqs[] = {
2354 { .name = "tx0", .dma_req = 69 + OMAP44XX_DMA_REQ_START },
2355 { .name = "rx0", .dma_req = 70 + OMAP44XX_DMA_REQ_START },
2358 static struct omap_hwmod_addr_space omap44xx_mcspi4_addrs[] = {
2360 .pa_start = 0x480ba000,
2361 .pa_end = 0x480ba1ff,
2362 .flags = ADDR_TYPE_RT
2366 /* l4_per -> mcspi4 */
2367 static struct omap_hwmod_ocp_if omap44xx_l4_per__mcspi4 = {
2368 .master = &omap44xx_l4_per_hwmod,
2369 .slave = &omap44xx_mcspi4_hwmod,
2371 .addr = omap44xx_mcspi4_addrs,
2372 .addr_cnt = ARRAY_SIZE(omap44xx_mcspi4_addrs),
2373 .user = OCP_USER_MPU | OCP_USER_SDMA,
2376 /* mcspi4 slave ports */
2377 static struct omap_hwmod_ocp_if *omap44xx_mcspi4_slaves[] = {
2378 &omap44xx_l4_per__mcspi4,
2381 static struct omap_hwmod omap44xx_mcspi4_hwmod = {
2383 .class = &omap44xx_mcspi_hwmod_class,
2384 .mpu_irqs = omap44xx_mcspi4_irqs,
2385 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_mcspi4_irqs),
2386 .sdma_reqs = omap44xx_mcspi4_sdma_reqs,
2387 .sdma_reqs_cnt = ARRAY_SIZE(omap44xx_mcspi4_sdma_reqs),
2388 .main_clk = "mcspi4_fck",
2391 .clkctrl_reg = OMAP4430_CM_L4PER_MCSPI4_CLKCTRL,
2394 .slaves = omap44xx_mcspi4_slaves,
2395 .slaves_cnt = ARRAY_SIZE(omap44xx_mcspi4_slaves),
2396 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
2404 static struct omap_hwmod_class omap44xx_mpu_hwmod_class = {
2409 static struct omap_hwmod_irq_info omap44xx_mpu_irqs[] = {
2410 { .name = "pl310", .irq = 0 + OMAP44XX_IRQ_GIC_START },
2411 { .name = "cti0", .irq = 1 + OMAP44XX_IRQ_GIC_START },
2412 { .name = "cti1", .irq = 2 + OMAP44XX_IRQ_GIC_START },
2415 /* mpu master ports */
2416 static struct omap_hwmod_ocp_if *omap44xx_mpu_masters[] = {
2417 &omap44xx_mpu__l3_main_1,
2418 &omap44xx_mpu__l4_abe,
2422 static struct omap_hwmod omap44xx_mpu_hwmod = {
2424 .class = &omap44xx_mpu_hwmod_class,
2425 .flags = (HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET),
2426 .mpu_irqs = omap44xx_mpu_irqs,
2427 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_mpu_irqs),
2428 .main_clk = "dpll_mpu_m2_ck",
2431 .clkctrl_reg = OMAP4430_CM_MPU_MPU_CLKCTRL,
2434 .masters = omap44xx_mpu_masters,
2435 .masters_cnt = ARRAY_SIZE(omap44xx_mpu_masters),
2436 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
2440 * 'smartreflex' class
2441 * smartreflex module (monitor silicon performance and outputs a measure of
2442 * performance error)
2445 /* The IP is not compliant to type1 / type2 scheme */
2446 static struct omap_hwmod_sysc_fields omap_hwmod_sysc_type_smartreflex = {
2451 static struct omap_hwmod_class_sysconfig omap44xx_smartreflex_sysc = {
2452 .sysc_offs = 0x0038,
2453 .sysc_flags = (SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE),
2454 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
2456 .sysc_fields = &omap_hwmod_sysc_type_smartreflex,
2459 static struct omap_hwmod_class omap44xx_smartreflex_hwmod_class = {
2460 .name = "smartreflex",
2461 .sysc = &omap44xx_smartreflex_sysc,
2465 /* smartreflex_core */
2466 static struct omap_hwmod omap44xx_smartreflex_core_hwmod;
2467 static struct omap_hwmod_irq_info omap44xx_smartreflex_core_irqs[] = {
2468 { .irq = 19 + OMAP44XX_IRQ_GIC_START },
2471 static struct omap_hwmod_addr_space omap44xx_smartreflex_core_addrs[] = {
2473 .pa_start = 0x4a0dd000,
2474 .pa_end = 0x4a0dd03f,
2475 .flags = ADDR_TYPE_RT
2479 /* l4_cfg -> smartreflex_core */
2480 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__smartreflex_core = {
2481 .master = &omap44xx_l4_cfg_hwmod,
2482 .slave = &omap44xx_smartreflex_core_hwmod,
2484 .addr = omap44xx_smartreflex_core_addrs,
2485 .addr_cnt = ARRAY_SIZE(omap44xx_smartreflex_core_addrs),
2486 .user = OCP_USER_MPU | OCP_USER_SDMA,
2489 /* smartreflex_core slave ports */
2490 static struct omap_hwmod_ocp_if *omap44xx_smartreflex_core_slaves[] = {
2491 &omap44xx_l4_cfg__smartreflex_core,
2494 static struct omap_hwmod omap44xx_smartreflex_core_hwmod = {
2495 .name = "smartreflex_core",
2496 .class = &omap44xx_smartreflex_hwmod_class,
2497 .mpu_irqs = omap44xx_smartreflex_core_irqs,
2498 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_smartreflex_core_irqs),
2499 .main_clk = "smartreflex_core_fck",
2503 .clkctrl_reg = OMAP4430_CM_ALWON_SR_CORE_CLKCTRL,
2506 .slaves = omap44xx_smartreflex_core_slaves,
2507 .slaves_cnt = ARRAY_SIZE(omap44xx_smartreflex_core_slaves),
2508 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
2511 /* smartreflex_iva */
2512 static struct omap_hwmod omap44xx_smartreflex_iva_hwmod;
2513 static struct omap_hwmod_irq_info omap44xx_smartreflex_iva_irqs[] = {
2514 { .irq = 102 + OMAP44XX_IRQ_GIC_START },
2517 static struct omap_hwmod_addr_space omap44xx_smartreflex_iva_addrs[] = {
2519 .pa_start = 0x4a0db000,
2520 .pa_end = 0x4a0db03f,
2521 .flags = ADDR_TYPE_RT
2525 /* l4_cfg -> smartreflex_iva */
2526 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__smartreflex_iva = {
2527 .master = &omap44xx_l4_cfg_hwmod,
2528 .slave = &omap44xx_smartreflex_iva_hwmod,
2530 .addr = omap44xx_smartreflex_iva_addrs,
2531 .addr_cnt = ARRAY_SIZE(omap44xx_smartreflex_iva_addrs),
2532 .user = OCP_USER_MPU | OCP_USER_SDMA,
2535 /* smartreflex_iva slave ports */
2536 static struct omap_hwmod_ocp_if *omap44xx_smartreflex_iva_slaves[] = {
2537 &omap44xx_l4_cfg__smartreflex_iva,
2540 static struct omap_hwmod omap44xx_smartreflex_iva_hwmod = {
2541 .name = "smartreflex_iva",
2542 .class = &omap44xx_smartreflex_hwmod_class,
2543 .mpu_irqs = omap44xx_smartreflex_iva_irqs,
2544 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_smartreflex_iva_irqs),
2545 .main_clk = "smartreflex_iva_fck",
2549 .clkctrl_reg = OMAP4430_CM_ALWON_SR_IVA_CLKCTRL,
2552 .slaves = omap44xx_smartreflex_iva_slaves,
2553 .slaves_cnt = ARRAY_SIZE(omap44xx_smartreflex_iva_slaves),
2554 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
2557 /* smartreflex_mpu */
2558 static struct omap_hwmod omap44xx_smartreflex_mpu_hwmod;
2559 static struct omap_hwmod_irq_info omap44xx_smartreflex_mpu_irqs[] = {
2560 { .irq = 18 + OMAP44XX_IRQ_GIC_START },
2563 static struct omap_hwmod_addr_space omap44xx_smartreflex_mpu_addrs[] = {
2565 .pa_start = 0x4a0d9000,
2566 .pa_end = 0x4a0d903f,
2567 .flags = ADDR_TYPE_RT
2571 /* l4_cfg -> smartreflex_mpu */
2572 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__smartreflex_mpu = {
2573 .master = &omap44xx_l4_cfg_hwmod,
2574 .slave = &omap44xx_smartreflex_mpu_hwmod,
2576 .addr = omap44xx_smartreflex_mpu_addrs,
2577 .addr_cnt = ARRAY_SIZE(omap44xx_smartreflex_mpu_addrs),
2578 .user = OCP_USER_MPU | OCP_USER_SDMA,
2581 /* smartreflex_mpu slave ports */
2582 static struct omap_hwmod_ocp_if *omap44xx_smartreflex_mpu_slaves[] = {
2583 &omap44xx_l4_cfg__smartreflex_mpu,
2586 static struct omap_hwmod omap44xx_smartreflex_mpu_hwmod = {
2587 .name = "smartreflex_mpu",
2588 .class = &omap44xx_smartreflex_hwmod_class,
2589 .mpu_irqs = omap44xx_smartreflex_mpu_irqs,
2590 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_smartreflex_mpu_irqs),
2591 .main_clk = "smartreflex_mpu_fck",
2595 .clkctrl_reg = OMAP4430_CM_ALWON_SR_MPU_CLKCTRL,
2598 .slaves = omap44xx_smartreflex_mpu_slaves,
2599 .slaves_cnt = ARRAY_SIZE(omap44xx_smartreflex_mpu_slaves),
2600 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
2605 * spinlock provides hardware assistance for synchronizing the processes
2606 * running on multiple processors
2609 static struct omap_hwmod_class_sysconfig omap44xx_spinlock_sysc = {
2611 .sysc_offs = 0x0010,
2612 .syss_offs = 0x0014,
2613 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
2614 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE |
2615 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
2616 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
2618 .sysc_fields = &omap_hwmod_sysc_type1,
2621 static struct omap_hwmod_class omap44xx_spinlock_hwmod_class = {
2623 .sysc = &omap44xx_spinlock_sysc,
2627 static struct omap_hwmod omap44xx_spinlock_hwmod;
2628 static struct omap_hwmod_addr_space omap44xx_spinlock_addrs[] = {
2630 .pa_start = 0x4a0f6000,
2631 .pa_end = 0x4a0f6fff,
2632 .flags = ADDR_TYPE_RT
2636 /* l4_cfg -> spinlock */
2637 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__spinlock = {
2638 .master = &omap44xx_l4_cfg_hwmod,
2639 .slave = &omap44xx_spinlock_hwmod,
2641 .addr = omap44xx_spinlock_addrs,
2642 .addr_cnt = ARRAY_SIZE(omap44xx_spinlock_addrs),
2643 .user = OCP_USER_MPU | OCP_USER_SDMA,
2646 /* spinlock slave ports */
2647 static struct omap_hwmod_ocp_if *omap44xx_spinlock_slaves[] = {
2648 &omap44xx_l4_cfg__spinlock,
2651 static struct omap_hwmod omap44xx_spinlock_hwmod = {
2653 .class = &omap44xx_spinlock_hwmod_class,
2656 .clkctrl_reg = OMAP4430_CM_L4CFG_HW_SEM_CLKCTRL,
2659 .slaves = omap44xx_spinlock_slaves,
2660 .slaves_cnt = ARRAY_SIZE(omap44xx_spinlock_slaves),
2661 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
2666 * general purpose timer module with accurate 1ms tick
2667 * This class contains several variants: ['timer_1ms', 'timer']
2670 static struct omap_hwmod_class_sysconfig omap44xx_timer_1ms_sysc = {
2672 .sysc_offs = 0x0010,
2673 .syss_offs = 0x0014,
2674 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
2675 SYSC_HAS_EMUFREE | SYSC_HAS_ENAWAKEUP |
2676 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
2677 SYSS_HAS_RESET_STATUS),
2678 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
2679 .sysc_fields = &omap_hwmod_sysc_type1,
2682 static struct omap_hwmod_class omap44xx_timer_1ms_hwmod_class = {
2684 .sysc = &omap44xx_timer_1ms_sysc,
2687 static struct omap_hwmod_class_sysconfig omap44xx_timer_sysc = {
2689 .sysc_offs = 0x0010,
2690 .sysc_flags = (SYSC_HAS_EMUFREE | SYSC_HAS_RESET_STATUS |
2691 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
2692 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
2694 .sysc_fields = &omap_hwmod_sysc_type2,
2697 static struct omap_hwmod_class omap44xx_timer_hwmod_class = {
2699 .sysc = &omap44xx_timer_sysc,
2703 static struct omap_hwmod omap44xx_timer1_hwmod;
2704 static struct omap_hwmod_irq_info omap44xx_timer1_irqs[] = {
2705 { .irq = 37 + OMAP44XX_IRQ_GIC_START },
2708 static struct omap_hwmod_addr_space omap44xx_timer1_addrs[] = {
2710 .pa_start = 0x4a318000,
2711 .pa_end = 0x4a31807f,
2712 .flags = ADDR_TYPE_RT
2716 /* l4_wkup -> timer1 */
2717 static struct omap_hwmod_ocp_if omap44xx_l4_wkup__timer1 = {
2718 .master = &omap44xx_l4_wkup_hwmod,
2719 .slave = &omap44xx_timer1_hwmod,
2720 .clk = "l4_wkup_clk_mux_ck",
2721 .addr = omap44xx_timer1_addrs,
2722 .addr_cnt = ARRAY_SIZE(omap44xx_timer1_addrs),
2723 .user = OCP_USER_MPU | OCP_USER_SDMA,
2726 /* timer1 slave ports */
2727 static struct omap_hwmod_ocp_if *omap44xx_timer1_slaves[] = {
2728 &omap44xx_l4_wkup__timer1,
2731 static struct omap_hwmod omap44xx_timer1_hwmod = {
2733 .class = &omap44xx_timer_1ms_hwmod_class,
2734 .mpu_irqs = omap44xx_timer1_irqs,
2735 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_timer1_irqs),
2736 .main_clk = "timer1_fck",
2739 .clkctrl_reg = OMAP4430_CM_WKUP_TIMER1_CLKCTRL,
2742 .slaves = omap44xx_timer1_slaves,
2743 .slaves_cnt = ARRAY_SIZE(omap44xx_timer1_slaves),
2744 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
2748 static struct omap_hwmod omap44xx_timer2_hwmod;
2749 static struct omap_hwmod_irq_info omap44xx_timer2_irqs[] = {
2750 { .irq = 38 + OMAP44XX_IRQ_GIC_START },
2753 static struct omap_hwmod_addr_space omap44xx_timer2_addrs[] = {
2755 .pa_start = 0x48032000,
2756 .pa_end = 0x4803207f,
2757 .flags = ADDR_TYPE_RT
2761 /* l4_per -> timer2 */
2762 static struct omap_hwmod_ocp_if omap44xx_l4_per__timer2 = {
2763 .master = &omap44xx_l4_per_hwmod,
2764 .slave = &omap44xx_timer2_hwmod,
2766 .addr = omap44xx_timer2_addrs,
2767 .addr_cnt = ARRAY_SIZE(omap44xx_timer2_addrs),
2768 .user = OCP_USER_MPU | OCP_USER_SDMA,
2771 /* timer2 slave ports */
2772 static struct omap_hwmod_ocp_if *omap44xx_timer2_slaves[] = {
2773 &omap44xx_l4_per__timer2,
2776 static struct omap_hwmod omap44xx_timer2_hwmod = {
2778 .class = &omap44xx_timer_1ms_hwmod_class,
2779 .mpu_irqs = omap44xx_timer2_irqs,
2780 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_timer2_irqs),
2781 .main_clk = "timer2_fck",
2784 .clkctrl_reg = OMAP4430_CM_L4PER_DMTIMER2_CLKCTRL,
2787 .slaves = omap44xx_timer2_slaves,
2788 .slaves_cnt = ARRAY_SIZE(omap44xx_timer2_slaves),
2789 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
2793 static struct omap_hwmod omap44xx_timer3_hwmod;
2794 static struct omap_hwmod_irq_info omap44xx_timer3_irqs[] = {
2795 { .irq = 39 + OMAP44XX_IRQ_GIC_START },
2798 static struct omap_hwmod_addr_space omap44xx_timer3_addrs[] = {
2800 .pa_start = 0x48034000,
2801 .pa_end = 0x4803407f,
2802 .flags = ADDR_TYPE_RT
2806 /* l4_per -> timer3 */
2807 static struct omap_hwmod_ocp_if omap44xx_l4_per__timer3 = {
2808 .master = &omap44xx_l4_per_hwmod,
2809 .slave = &omap44xx_timer3_hwmod,
2811 .addr = omap44xx_timer3_addrs,
2812 .addr_cnt = ARRAY_SIZE(omap44xx_timer3_addrs),
2813 .user = OCP_USER_MPU | OCP_USER_SDMA,
2816 /* timer3 slave ports */
2817 static struct omap_hwmod_ocp_if *omap44xx_timer3_slaves[] = {
2818 &omap44xx_l4_per__timer3,
2821 static struct omap_hwmod omap44xx_timer3_hwmod = {
2823 .class = &omap44xx_timer_hwmod_class,
2824 .mpu_irqs = omap44xx_timer3_irqs,
2825 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_timer3_irqs),
2826 .main_clk = "timer3_fck",
2829 .clkctrl_reg = OMAP4430_CM_L4PER_DMTIMER3_CLKCTRL,
2832 .slaves = omap44xx_timer3_slaves,
2833 .slaves_cnt = ARRAY_SIZE(omap44xx_timer3_slaves),
2834 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
2838 static struct omap_hwmod omap44xx_timer4_hwmod;
2839 static struct omap_hwmod_irq_info omap44xx_timer4_irqs[] = {
2840 { .irq = 40 + OMAP44XX_IRQ_GIC_START },
2843 static struct omap_hwmod_addr_space omap44xx_timer4_addrs[] = {
2845 .pa_start = 0x48036000,
2846 .pa_end = 0x4803607f,
2847 .flags = ADDR_TYPE_RT
2851 /* l4_per -> timer4 */
2852 static struct omap_hwmod_ocp_if omap44xx_l4_per__timer4 = {
2853 .master = &omap44xx_l4_per_hwmod,
2854 .slave = &omap44xx_timer4_hwmod,
2856 .addr = omap44xx_timer4_addrs,
2857 .addr_cnt = ARRAY_SIZE(omap44xx_timer4_addrs),
2858 .user = OCP_USER_MPU | OCP_USER_SDMA,
2861 /* timer4 slave ports */
2862 static struct omap_hwmod_ocp_if *omap44xx_timer4_slaves[] = {
2863 &omap44xx_l4_per__timer4,
2866 static struct omap_hwmod omap44xx_timer4_hwmod = {
2868 .class = &omap44xx_timer_hwmod_class,
2869 .mpu_irqs = omap44xx_timer4_irqs,
2870 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_timer4_irqs),
2871 .main_clk = "timer4_fck",
2874 .clkctrl_reg = OMAP4430_CM_L4PER_DMTIMER4_CLKCTRL,
2877 .slaves = omap44xx_timer4_slaves,
2878 .slaves_cnt = ARRAY_SIZE(omap44xx_timer4_slaves),
2879 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
2883 static struct omap_hwmod omap44xx_timer5_hwmod;
2884 static struct omap_hwmod_irq_info omap44xx_timer5_irqs[] = {
2885 { .irq = 41 + OMAP44XX_IRQ_GIC_START },
2888 static struct omap_hwmod_addr_space omap44xx_timer5_addrs[] = {
2890 .pa_start = 0x40138000,
2891 .pa_end = 0x4013807f,
2892 .flags = ADDR_TYPE_RT
2896 /* l4_abe -> timer5 */
2897 static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer5 = {
2898 .master = &omap44xx_l4_abe_hwmod,
2899 .slave = &omap44xx_timer5_hwmod,
2900 .clk = "ocp_abe_iclk",
2901 .addr = omap44xx_timer5_addrs,
2902 .addr_cnt = ARRAY_SIZE(omap44xx_timer5_addrs),
2903 .user = OCP_USER_MPU,
2906 static struct omap_hwmod_addr_space omap44xx_timer5_dma_addrs[] = {
2908 .pa_start = 0x49038000,
2909 .pa_end = 0x4903807f,
2910 .flags = ADDR_TYPE_RT
2914 /* l4_abe -> timer5 (dma) */
2915 static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer5_dma = {
2916 .master = &omap44xx_l4_abe_hwmod,
2917 .slave = &omap44xx_timer5_hwmod,
2918 .clk = "ocp_abe_iclk",
2919 .addr = omap44xx_timer5_dma_addrs,
2920 .addr_cnt = ARRAY_SIZE(omap44xx_timer5_dma_addrs),
2921 .user = OCP_USER_SDMA,
2924 /* timer5 slave ports */
2925 static struct omap_hwmod_ocp_if *omap44xx_timer5_slaves[] = {
2926 &omap44xx_l4_abe__timer5,
2927 &omap44xx_l4_abe__timer5_dma,
2930 static struct omap_hwmod omap44xx_timer5_hwmod = {
2932 .class = &omap44xx_timer_hwmod_class,
2933 .mpu_irqs = omap44xx_timer5_irqs,
2934 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_timer5_irqs),
2935 .main_clk = "timer5_fck",
2938 .clkctrl_reg = OMAP4430_CM1_ABE_TIMER5_CLKCTRL,
2941 .slaves = omap44xx_timer5_slaves,
2942 .slaves_cnt = ARRAY_SIZE(omap44xx_timer5_slaves),
2943 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
2947 static struct omap_hwmod omap44xx_timer6_hwmod;
2948 static struct omap_hwmod_irq_info omap44xx_timer6_irqs[] = {
2949 { .irq = 42 + OMAP44XX_IRQ_GIC_START },
2952 static struct omap_hwmod_addr_space omap44xx_timer6_addrs[] = {
2954 .pa_start = 0x4013a000,
2955 .pa_end = 0x4013a07f,
2956 .flags = ADDR_TYPE_RT
2960 /* l4_abe -> timer6 */
2961 static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer6 = {
2962 .master = &omap44xx_l4_abe_hwmod,
2963 .slave = &omap44xx_timer6_hwmod,
2964 .clk = "ocp_abe_iclk",
2965 .addr = omap44xx_timer6_addrs,
2966 .addr_cnt = ARRAY_SIZE(omap44xx_timer6_addrs),
2967 .user = OCP_USER_MPU,
2970 static struct omap_hwmod_addr_space omap44xx_timer6_dma_addrs[] = {
2972 .pa_start = 0x4903a000,
2973 .pa_end = 0x4903a07f,
2974 .flags = ADDR_TYPE_RT
2978 /* l4_abe -> timer6 (dma) */
2979 static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer6_dma = {
2980 .master = &omap44xx_l4_abe_hwmod,
2981 .slave = &omap44xx_timer6_hwmod,
2982 .clk = "ocp_abe_iclk",
2983 .addr = omap44xx_timer6_dma_addrs,
2984 .addr_cnt = ARRAY_SIZE(omap44xx_timer6_dma_addrs),
2985 .user = OCP_USER_SDMA,
2988 /* timer6 slave ports */
2989 static struct omap_hwmod_ocp_if *omap44xx_timer6_slaves[] = {
2990 &omap44xx_l4_abe__timer6,
2991 &omap44xx_l4_abe__timer6_dma,
2994 static struct omap_hwmod omap44xx_timer6_hwmod = {
2996 .class = &omap44xx_timer_hwmod_class,
2997 .mpu_irqs = omap44xx_timer6_irqs,
2998 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_timer6_irqs),
2999 .main_clk = "timer6_fck",
3002 .clkctrl_reg = OMAP4430_CM1_ABE_TIMER6_CLKCTRL,
3005 .slaves = omap44xx_timer6_slaves,
3006 .slaves_cnt = ARRAY_SIZE(omap44xx_timer6_slaves),
3007 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
3011 static struct omap_hwmod omap44xx_timer7_hwmod;
3012 static struct omap_hwmod_irq_info omap44xx_timer7_irqs[] = {
3013 { .irq = 43 + OMAP44XX_IRQ_GIC_START },
3016 static struct omap_hwmod_addr_space omap44xx_timer7_addrs[] = {
3018 .pa_start = 0x4013c000,
3019 .pa_end = 0x4013c07f,
3020 .flags = ADDR_TYPE_RT
3024 /* l4_abe -> timer7 */
3025 static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer7 = {
3026 .master = &omap44xx_l4_abe_hwmod,
3027 .slave = &omap44xx_timer7_hwmod,
3028 .clk = "ocp_abe_iclk",
3029 .addr = omap44xx_timer7_addrs,
3030 .addr_cnt = ARRAY_SIZE(omap44xx_timer7_addrs),
3031 .user = OCP_USER_MPU,
3034 static struct omap_hwmod_addr_space omap44xx_timer7_dma_addrs[] = {
3036 .pa_start = 0x4903c000,
3037 .pa_end = 0x4903c07f,
3038 .flags = ADDR_TYPE_RT
3042 /* l4_abe -> timer7 (dma) */
3043 static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer7_dma = {
3044 .master = &omap44xx_l4_abe_hwmod,
3045 .slave = &omap44xx_timer7_hwmod,
3046 .clk = "ocp_abe_iclk",
3047 .addr = omap44xx_timer7_dma_addrs,
3048 .addr_cnt = ARRAY_SIZE(omap44xx_timer7_dma_addrs),
3049 .user = OCP_USER_SDMA,
3052 /* timer7 slave ports */
3053 static struct omap_hwmod_ocp_if *omap44xx_timer7_slaves[] = {
3054 &omap44xx_l4_abe__timer7,
3055 &omap44xx_l4_abe__timer7_dma,
3058 static struct omap_hwmod omap44xx_timer7_hwmod = {
3060 .class = &omap44xx_timer_hwmod_class,
3061 .mpu_irqs = omap44xx_timer7_irqs,
3062 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_timer7_irqs),
3063 .main_clk = "timer7_fck",
3066 .clkctrl_reg = OMAP4430_CM1_ABE_TIMER7_CLKCTRL,
3069 .slaves = omap44xx_timer7_slaves,
3070 .slaves_cnt = ARRAY_SIZE(omap44xx_timer7_slaves),
3071 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
3075 static struct omap_hwmod omap44xx_timer8_hwmod;
3076 static struct omap_hwmod_irq_info omap44xx_timer8_irqs[] = {
3077 { .irq = 44 + OMAP44XX_IRQ_GIC_START },
3080 static struct omap_hwmod_addr_space omap44xx_timer8_addrs[] = {
3082 .pa_start = 0x4013e000,
3083 .pa_end = 0x4013e07f,
3084 .flags = ADDR_TYPE_RT
3088 /* l4_abe -> timer8 */
3089 static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer8 = {
3090 .master = &omap44xx_l4_abe_hwmod,
3091 .slave = &omap44xx_timer8_hwmod,
3092 .clk = "ocp_abe_iclk",
3093 .addr = omap44xx_timer8_addrs,
3094 .addr_cnt = ARRAY_SIZE(omap44xx_timer8_addrs),
3095 .user = OCP_USER_MPU,
3098 static struct omap_hwmod_addr_space omap44xx_timer8_dma_addrs[] = {
3100 .pa_start = 0x4903e000,
3101 .pa_end = 0x4903e07f,
3102 .flags = ADDR_TYPE_RT
3106 /* l4_abe -> timer8 (dma) */
3107 static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer8_dma = {
3108 .master = &omap44xx_l4_abe_hwmod,
3109 .slave = &omap44xx_timer8_hwmod,
3110 .clk = "ocp_abe_iclk",
3111 .addr = omap44xx_timer8_dma_addrs,
3112 .addr_cnt = ARRAY_SIZE(omap44xx_timer8_dma_addrs),
3113 .user = OCP_USER_SDMA,
3116 /* timer8 slave ports */
3117 static struct omap_hwmod_ocp_if *omap44xx_timer8_slaves[] = {
3118 &omap44xx_l4_abe__timer8,
3119 &omap44xx_l4_abe__timer8_dma,
3122 static struct omap_hwmod omap44xx_timer8_hwmod = {
3124 .class = &omap44xx_timer_hwmod_class,
3125 .mpu_irqs = omap44xx_timer8_irqs,
3126 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_timer8_irqs),
3127 .main_clk = "timer8_fck",
3130 .clkctrl_reg = OMAP4430_CM1_ABE_TIMER8_CLKCTRL,
3133 .slaves = omap44xx_timer8_slaves,
3134 .slaves_cnt = ARRAY_SIZE(omap44xx_timer8_slaves),
3135 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
3139 static struct omap_hwmod omap44xx_timer9_hwmod;
3140 static struct omap_hwmod_irq_info omap44xx_timer9_irqs[] = {
3141 { .irq = 45 + OMAP44XX_IRQ_GIC_START },
3144 static struct omap_hwmod_addr_space omap44xx_timer9_addrs[] = {
3146 .pa_start = 0x4803e000,
3147 .pa_end = 0x4803e07f,
3148 .flags = ADDR_TYPE_RT
3152 /* l4_per -> timer9 */
3153 static struct omap_hwmod_ocp_if omap44xx_l4_per__timer9 = {
3154 .master = &omap44xx_l4_per_hwmod,
3155 .slave = &omap44xx_timer9_hwmod,
3157 .addr = omap44xx_timer9_addrs,
3158 .addr_cnt = ARRAY_SIZE(omap44xx_timer9_addrs),
3159 .user = OCP_USER_MPU | OCP_USER_SDMA,
3162 /* timer9 slave ports */
3163 static struct omap_hwmod_ocp_if *omap44xx_timer9_slaves[] = {
3164 &omap44xx_l4_per__timer9,
3167 static struct omap_hwmod omap44xx_timer9_hwmod = {
3169 .class = &omap44xx_timer_hwmod_class,
3170 .mpu_irqs = omap44xx_timer9_irqs,
3171 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_timer9_irqs),
3172 .main_clk = "timer9_fck",
3175 .clkctrl_reg = OMAP4430_CM_L4PER_DMTIMER9_CLKCTRL,
3178 .slaves = omap44xx_timer9_slaves,
3179 .slaves_cnt = ARRAY_SIZE(omap44xx_timer9_slaves),
3180 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
3184 static struct omap_hwmod omap44xx_timer10_hwmod;
3185 static struct omap_hwmod_irq_info omap44xx_timer10_irqs[] = {
3186 { .irq = 46 + OMAP44XX_IRQ_GIC_START },
3189 static struct omap_hwmod_addr_space omap44xx_timer10_addrs[] = {
3191 .pa_start = 0x48086000,
3192 .pa_end = 0x4808607f,
3193 .flags = ADDR_TYPE_RT
3197 /* l4_per -> timer10 */
3198 static struct omap_hwmod_ocp_if omap44xx_l4_per__timer10 = {
3199 .master = &omap44xx_l4_per_hwmod,
3200 .slave = &omap44xx_timer10_hwmod,
3202 .addr = omap44xx_timer10_addrs,
3203 .addr_cnt = ARRAY_SIZE(omap44xx_timer10_addrs),
3204 .user = OCP_USER_MPU | OCP_USER_SDMA,
3207 /* timer10 slave ports */
3208 static struct omap_hwmod_ocp_if *omap44xx_timer10_slaves[] = {
3209 &omap44xx_l4_per__timer10,
3212 static struct omap_hwmod omap44xx_timer10_hwmod = {
3214 .class = &omap44xx_timer_1ms_hwmod_class,
3215 .mpu_irqs = omap44xx_timer10_irqs,
3216 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_timer10_irqs),
3217 .main_clk = "timer10_fck",
3220 .clkctrl_reg = OMAP4430_CM_L4PER_DMTIMER10_CLKCTRL,
3223 .slaves = omap44xx_timer10_slaves,
3224 .slaves_cnt = ARRAY_SIZE(omap44xx_timer10_slaves),
3225 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
3229 static struct omap_hwmod omap44xx_timer11_hwmod;
3230 static struct omap_hwmod_irq_info omap44xx_timer11_irqs[] = {
3231 { .irq = 47 + OMAP44XX_IRQ_GIC_START },
3234 static struct omap_hwmod_addr_space omap44xx_timer11_addrs[] = {
3236 .pa_start = 0x48088000,
3237 .pa_end = 0x4808807f,
3238 .flags = ADDR_TYPE_RT
3242 /* l4_per -> timer11 */
3243 static struct omap_hwmod_ocp_if omap44xx_l4_per__timer11 = {
3244 .master = &omap44xx_l4_per_hwmod,
3245 .slave = &omap44xx_timer11_hwmod,
3247 .addr = omap44xx_timer11_addrs,
3248 .addr_cnt = ARRAY_SIZE(omap44xx_timer11_addrs),
3249 .user = OCP_USER_MPU | OCP_USER_SDMA,
3252 /* timer11 slave ports */
3253 static struct omap_hwmod_ocp_if *omap44xx_timer11_slaves[] = {
3254 &omap44xx_l4_per__timer11,
3257 static struct omap_hwmod omap44xx_timer11_hwmod = {
3259 .class = &omap44xx_timer_hwmod_class,
3260 .mpu_irqs = omap44xx_timer11_irqs,
3261 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_timer11_irqs),
3262 .main_clk = "timer11_fck",
3265 .clkctrl_reg = OMAP4430_CM_L4PER_DMTIMER11_CLKCTRL,
3268 .slaves = omap44xx_timer11_slaves,
3269 .slaves_cnt = ARRAY_SIZE(omap44xx_timer11_slaves),
3270 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
3275 * universal asynchronous receiver/transmitter (uart)
3278 static struct omap_hwmod_class_sysconfig omap44xx_uart_sysc = {
3280 .sysc_offs = 0x0054,
3281 .syss_offs = 0x0058,
3282 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_ENAWAKEUP |
3283 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
3284 SYSS_HAS_RESET_STATUS),
3285 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
3287 .sysc_fields = &omap_hwmod_sysc_type1,
3290 static struct omap_hwmod_class omap44xx_uart_hwmod_class = {
3292 .sysc = &omap44xx_uart_sysc,
3296 static struct omap_hwmod omap44xx_uart1_hwmod;
3297 static struct omap_hwmod_irq_info omap44xx_uart1_irqs[] = {
3298 { .irq = 72 + OMAP44XX_IRQ_GIC_START },
3301 static struct omap_hwmod_dma_info omap44xx_uart1_sdma_reqs[] = {
3302 { .name = "tx", .dma_req = 48 + OMAP44XX_DMA_REQ_START },
3303 { .name = "rx", .dma_req = 49 + OMAP44XX_DMA_REQ_START },
3306 static struct omap_hwmod_addr_space omap44xx_uart1_addrs[] = {
3308 .pa_start = 0x4806a000,
3309 .pa_end = 0x4806a0ff,
3310 .flags = ADDR_TYPE_RT
3314 /* l4_per -> uart1 */
3315 static struct omap_hwmod_ocp_if omap44xx_l4_per__uart1 = {
3316 .master = &omap44xx_l4_per_hwmod,
3317 .slave = &omap44xx_uart1_hwmod,
3319 .addr = omap44xx_uart1_addrs,
3320 .addr_cnt = ARRAY_SIZE(omap44xx_uart1_addrs),
3321 .user = OCP_USER_MPU | OCP_USER_SDMA,
3324 /* uart1 slave ports */
3325 static struct omap_hwmod_ocp_if *omap44xx_uart1_slaves[] = {
3326 &omap44xx_l4_per__uart1,
3329 static struct omap_hwmod omap44xx_uart1_hwmod = {
3331 .class = &omap44xx_uart_hwmod_class,
3332 .mpu_irqs = omap44xx_uart1_irqs,
3333 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_uart1_irqs),
3334 .sdma_reqs = omap44xx_uart1_sdma_reqs,
3335 .sdma_reqs_cnt = ARRAY_SIZE(omap44xx_uart1_sdma_reqs),
3336 .main_clk = "uart1_fck",
3339 .clkctrl_reg = OMAP4430_CM_L4PER_UART1_CLKCTRL,
3342 .slaves = omap44xx_uart1_slaves,
3343 .slaves_cnt = ARRAY_SIZE(omap44xx_uart1_slaves),
3344 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
3348 static struct omap_hwmod omap44xx_uart2_hwmod;
3349 static struct omap_hwmod_irq_info omap44xx_uart2_irqs[] = {
3350 { .irq = 73 + OMAP44XX_IRQ_GIC_START },
3353 static struct omap_hwmod_dma_info omap44xx_uart2_sdma_reqs[] = {
3354 { .name = "tx", .dma_req = 50 + OMAP44XX_DMA_REQ_START },
3355 { .name = "rx", .dma_req = 51 + OMAP44XX_DMA_REQ_START },
3358 static struct omap_hwmod_addr_space omap44xx_uart2_addrs[] = {
3360 .pa_start = 0x4806c000,
3361 .pa_end = 0x4806c0ff,
3362 .flags = ADDR_TYPE_RT
3366 /* l4_per -> uart2 */
3367 static struct omap_hwmod_ocp_if omap44xx_l4_per__uart2 = {
3368 .master = &omap44xx_l4_per_hwmod,
3369 .slave = &omap44xx_uart2_hwmod,
3371 .addr = omap44xx_uart2_addrs,
3372 .addr_cnt = ARRAY_SIZE(omap44xx_uart2_addrs),
3373 .user = OCP_USER_MPU | OCP_USER_SDMA,
3376 /* uart2 slave ports */
3377 static struct omap_hwmod_ocp_if *omap44xx_uart2_slaves[] = {
3378 &omap44xx_l4_per__uart2,
3381 static struct omap_hwmod omap44xx_uart2_hwmod = {
3383 .class = &omap44xx_uart_hwmod_class,
3384 .mpu_irqs = omap44xx_uart2_irqs,
3385 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_uart2_irqs),
3386 .sdma_reqs = omap44xx_uart2_sdma_reqs,
3387 .sdma_reqs_cnt = ARRAY_SIZE(omap44xx_uart2_sdma_reqs),
3388 .main_clk = "uart2_fck",
3391 .clkctrl_reg = OMAP4430_CM_L4PER_UART2_CLKCTRL,
3394 .slaves = omap44xx_uart2_slaves,
3395 .slaves_cnt = ARRAY_SIZE(omap44xx_uart2_slaves),
3396 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
3400 static struct omap_hwmod omap44xx_uart3_hwmod;
3401 static struct omap_hwmod_irq_info omap44xx_uart3_irqs[] = {
3402 { .irq = 74 + OMAP44XX_IRQ_GIC_START },
3405 static struct omap_hwmod_dma_info omap44xx_uart3_sdma_reqs[] = {
3406 { .name = "tx", .dma_req = 52 + OMAP44XX_DMA_REQ_START },
3407 { .name = "rx", .dma_req = 53 + OMAP44XX_DMA_REQ_START },
3410 static struct omap_hwmod_addr_space omap44xx_uart3_addrs[] = {
3412 .pa_start = 0x48020000,
3413 .pa_end = 0x480200ff,
3414 .flags = ADDR_TYPE_RT
3418 /* l4_per -> uart3 */
3419 static struct omap_hwmod_ocp_if omap44xx_l4_per__uart3 = {
3420 .master = &omap44xx_l4_per_hwmod,
3421 .slave = &omap44xx_uart3_hwmod,
3423 .addr = omap44xx_uart3_addrs,
3424 .addr_cnt = ARRAY_SIZE(omap44xx_uart3_addrs),
3425 .user = OCP_USER_MPU | OCP_USER_SDMA,
3428 /* uart3 slave ports */
3429 static struct omap_hwmod_ocp_if *omap44xx_uart3_slaves[] = {
3430 &omap44xx_l4_per__uart3,
3433 static struct omap_hwmod omap44xx_uart3_hwmod = {
3435 .class = &omap44xx_uart_hwmod_class,
3436 .flags = (HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET),
3437 .mpu_irqs = omap44xx_uart3_irqs,
3438 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_uart3_irqs),
3439 .sdma_reqs = omap44xx_uart3_sdma_reqs,
3440 .sdma_reqs_cnt = ARRAY_SIZE(omap44xx_uart3_sdma_reqs),
3441 .main_clk = "uart3_fck",
3444 .clkctrl_reg = OMAP4430_CM_L4PER_UART3_CLKCTRL,
3447 .slaves = omap44xx_uart3_slaves,
3448 .slaves_cnt = ARRAY_SIZE(omap44xx_uart3_slaves),
3449 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
3453 static struct omap_hwmod omap44xx_uart4_hwmod;
3454 static struct omap_hwmod_irq_info omap44xx_uart4_irqs[] = {
3455 { .irq = 70 + OMAP44XX_IRQ_GIC_START },
3458 static struct omap_hwmod_dma_info omap44xx_uart4_sdma_reqs[] = {
3459 { .name = "tx", .dma_req = 54 + OMAP44XX_DMA_REQ_START },
3460 { .name = "rx", .dma_req = 55 + OMAP44XX_DMA_REQ_START },
3463 static struct omap_hwmod_addr_space omap44xx_uart4_addrs[] = {
3465 .pa_start = 0x4806e000,
3466 .pa_end = 0x4806e0ff,
3467 .flags = ADDR_TYPE_RT
3471 /* l4_per -> uart4 */
3472 static struct omap_hwmod_ocp_if omap44xx_l4_per__uart4 = {
3473 .master = &omap44xx_l4_per_hwmod,
3474 .slave = &omap44xx_uart4_hwmod,
3476 .addr = omap44xx_uart4_addrs,
3477 .addr_cnt = ARRAY_SIZE(omap44xx_uart4_addrs),
3478 .user = OCP_USER_MPU | OCP_USER_SDMA,
3481 /* uart4 slave ports */
3482 static struct omap_hwmod_ocp_if *omap44xx_uart4_slaves[] = {
3483 &omap44xx_l4_per__uart4,
3486 static struct omap_hwmod omap44xx_uart4_hwmod = {
3488 .class = &omap44xx_uart_hwmod_class,
3489 .mpu_irqs = omap44xx_uart4_irqs,
3490 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_uart4_irqs),
3491 .sdma_reqs = omap44xx_uart4_sdma_reqs,
3492 .sdma_reqs_cnt = ARRAY_SIZE(omap44xx_uart4_sdma_reqs),
3493 .main_clk = "uart4_fck",
3496 .clkctrl_reg = OMAP4430_CM_L4PER_UART4_CLKCTRL,
3499 .slaves = omap44xx_uart4_slaves,
3500 .slaves_cnt = ARRAY_SIZE(omap44xx_uart4_slaves),
3501 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
3506 * 32-bit watchdog upward counter that generates a pulse on the reset pin on
3507 * overflow condition
3510 static struct omap_hwmod_class_sysconfig omap44xx_wd_timer_sysc = {
3512 .sysc_offs = 0x0010,
3513 .syss_offs = 0x0014,
3514 .sysc_flags = (SYSC_HAS_EMUFREE | SYSC_HAS_SIDLEMODE |
3515 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
3516 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
3518 .sysc_fields = &omap_hwmod_sysc_type1,
3521 static struct omap_hwmod_class omap44xx_wd_timer_hwmod_class = {
3523 .sysc = &omap44xx_wd_timer_sysc,
3524 .pre_shutdown = &omap2_wd_timer_disable,
3528 static struct omap_hwmod omap44xx_wd_timer2_hwmod;
3529 static struct omap_hwmod_irq_info omap44xx_wd_timer2_irqs[] = {
3530 { .irq = 80 + OMAP44XX_IRQ_GIC_START },
3533 static struct omap_hwmod_addr_space omap44xx_wd_timer2_addrs[] = {
3535 .pa_start = 0x4a314000,
3536 .pa_end = 0x4a31407f,
3537 .flags = ADDR_TYPE_RT
3541 /* l4_wkup -> wd_timer2 */
3542 static struct omap_hwmod_ocp_if omap44xx_l4_wkup__wd_timer2 = {
3543 .master = &omap44xx_l4_wkup_hwmod,
3544 .slave = &omap44xx_wd_timer2_hwmod,
3545 .clk = "l4_wkup_clk_mux_ck",
3546 .addr = omap44xx_wd_timer2_addrs,
3547 .addr_cnt = ARRAY_SIZE(omap44xx_wd_timer2_addrs),
3548 .user = OCP_USER_MPU | OCP_USER_SDMA,
3551 /* wd_timer2 slave ports */
3552 static struct omap_hwmod_ocp_if *omap44xx_wd_timer2_slaves[] = {
3553 &omap44xx_l4_wkup__wd_timer2,
3556 static struct omap_hwmod omap44xx_wd_timer2_hwmod = {
3557 .name = "wd_timer2",
3558 .class = &omap44xx_wd_timer_hwmod_class,
3559 .mpu_irqs = omap44xx_wd_timer2_irqs,
3560 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_wd_timer2_irqs),
3561 .main_clk = "wd_timer2_fck",
3564 .clkctrl_reg = OMAP4430_CM_WKUP_WDT2_CLKCTRL,
3567 .slaves = omap44xx_wd_timer2_slaves,
3568 .slaves_cnt = ARRAY_SIZE(omap44xx_wd_timer2_slaves),
3569 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
3573 static struct omap_hwmod omap44xx_wd_timer3_hwmod;
3574 static struct omap_hwmod_irq_info omap44xx_wd_timer3_irqs[] = {
3575 { .irq = 36 + OMAP44XX_IRQ_GIC_START },
3578 static struct omap_hwmod_addr_space omap44xx_wd_timer3_addrs[] = {
3580 .pa_start = 0x40130000,
3581 .pa_end = 0x4013007f,
3582 .flags = ADDR_TYPE_RT
3586 /* l4_abe -> wd_timer3 */
3587 static struct omap_hwmod_ocp_if omap44xx_l4_abe__wd_timer3 = {
3588 .master = &omap44xx_l4_abe_hwmod,
3589 .slave = &omap44xx_wd_timer3_hwmod,
3590 .clk = "ocp_abe_iclk",
3591 .addr = omap44xx_wd_timer3_addrs,
3592 .addr_cnt = ARRAY_SIZE(omap44xx_wd_timer3_addrs),
3593 .user = OCP_USER_MPU,
3596 static struct omap_hwmod_addr_space omap44xx_wd_timer3_dma_addrs[] = {
3598 .pa_start = 0x49030000,
3599 .pa_end = 0x4903007f,
3600 .flags = ADDR_TYPE_RT
3604 /* l4_abe -> wd_timer3 (dma) */
3605 static struct omap_hwmod_ocp_if omap44xx_l4_abe__wd_timer3_dma = {
3606 .master = &omap44xx_l4_abe_hwmod,
3607 .slave = &omap44xx_wd_timer3_hwmod,
3608 .clk = "ocp_abe_iclk",
3609 .addr = omap44xx_wd_timer3_dma_addrs,
3610 .addr_cnt = ARRAY_SIZE(omap44xx_wd_timer3_dma_addrs),
3611 .user = OCP_USER_SDMA,
3614 /* wd_timer3 slave ports */
3615 static struct omap_hwmod_ocp_if *omap44xx_wd_timer3_slaves[] = {
3616 &omap44xx_l4_abe__wd_timer3,
3617 &omap44xx_l4_abe__wd_timer3_dma,
3620 static struct omap_hwmod omap44xx_wd_timer3_hwmod = {
3621 .name = "wd_timer3",
3622 .class = &omap44xx_wd_timer_hwmod_class,
3623 .mpu_irqs = omap44xx_wd_timer3_irqs,
3624 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_wd_timer3_irqs),
3625 .main_clk = "wd_timer3_fck",
3628 .clkctrl_reg = OMAP4430_CM1_ABE_WDT3_CLKCTRL,
3631 .slaves = omap44xx_wd_timer3_slaves,
3632 .slaves_cnt = ARRAY_SIZE(omap44xx_wd_timer3_slaves),
3633 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
3636 static __initdata struct omap_hwmod *omap44xx_hwmods[] = {
3639 &omap44xx_dmm_hwmod,
3642 &omap44xx_emif_fw_hwmod,
3645 &omap44xx_l3_instr_hwmod,
3646 &omap44xx_l3_main_1_hwmod,
3647 &omap44xx_l3_main_2_hwmod,
3648 &omap44xx_l3_main_3_hwmod,
3651 &omap44xx_l4_abe_hwmod,
3652 &omap44xx_l4_cfg_hwmod,
3653 &omap44xx_l4_per_hwmod,
3654 &omap44xx_l4_wkup_hwmod,
3657 &omap44xx_mpu_private_hwmod,
3660 &omap44xx_dma_system_hwmod,
3663 &omap44xx_dmic_hwmod,
3666 &omap44xx_dsp_hwmod,
3667 &omap44xx_dsp_c0_hwmod,
3670 &omap44xx_dss_hwmod,
3671 &omap44xx_dss_dispc_hwmod,
3672 &omap44xx_dss_dsi1_hwmod,
3673 &omap44xx_dss_dsi2_hwmod,
3674 &omap44xx_dss_hdmi_hwmod,
3675 &omap44xx_dss_rfbi_hwmod,
3676 &omap44xx_dss_venc_hwmod,
3679 &omap44xx_gpio1_hwmod,
3680 &omap44xx_gpio2_hwmod,
3681 &omap44xx_gpio3_hwmod,
3682 &omap44xx_gpio4_hwmod,
3683 &omap44xx_gpio5_hwmod,
3684 &omap44xx_gpio6_hwmod,
3687 &omap44xx_i2c1_hwmod,
3688 &omap44xx_i2c2_hwmod,
3689 &omap44xx_i2c3_hwmod,
3690 &omap44xx_i2c4_hwmod,
3693 &omap44xx_iva_hwmod,
3694 &omap44xx_iva_seq0_hwmod,
3695 &omap44xx_iva_seq1_hwmod,
3698 &omap44xx_mailbox_hwmod,
3701 &omap44xx_mcspi1_hwmod,
3702 &omap44xx_mcspi2_hwmod,
3703 &omap44xx_mcspi3_hwmod,
3704 &omap44xx_mcspi4_hwmod,
3707 &omap44xx_mpu_hwmod,
3709 /* smartreflex class */
3710 &omap44xx_smartreflex_core_hwmod,
3711 &omap44xx_smartreflex_iva_hwmod,
3712 &omap44xx_smartreflex_mpu_hwmod,
3714 /* spinlock class */
3715 &omap44xx_spinlock_hwmod,
3718 &omap44xx_timer1_hwmod,
3719 &omap44xx_timer2_hwmod,
3720 &omap44xx_timer3_hwmod,
3721 &omap44xx_timer4_hwmod,
3722 &omap44xx_timer5_hwmod,
3723 &omap44xx_timer6_hwmod,
3724 &omap44xx_timer7_hwmod,
3725 &omap44xx_timer8_hwmod,
3726 &omap44xx_timer9_hwmod,
3727 &omap44xx_timer10_hwmod,
3728 &omap44xx_timer11_hwmod,
3731 &omap44xx_uart1_hwmod,
3732 &omap44xx_uart2_hwmod,
3733 &omap44xx_uart3_hwmod,
3734 &omap44xx_uart4_hwmod,
3736 /* wd_timer class */
3737 &omap44xx_wd_timer2_hwmod,
3738 &omap44xx_wd_timer3_hwmod,
3743 int __init omap44xx_hwmod_init(void)
3745 return omap_hwmod_init(omap44xx_hwmods);