1 // SPDX-License-Identifier: GPL-2.0-only
3 * Hardware modules present on the OMAP44xx chips
5 * Copyright (C) 2009-2012 Texas Instruments, Inc.
6 * Copyright (C) 2009-2010 Nokia Corporation
11 * This file is automatically generated from the OMAP hardware databases.
12 * We respectfully ask that any modifications to this file be coordinated
14 * authors above to ensure that the autogeneration scripts are kept
15 * up-to-date with the file contents.
16 * Note that this file is currently not in sync with autogeneration scripts.
17 * The above note to be removed, once it is synced up.
22 #include "omap_hwmod.h"
23 #include "omap_hwmod_common_data.h"
27 #include "prm-regbits-44xx.h"
29 /* Base offset for all OMAP4 interrupts external to MPUSS */
30 #define OMAP44XX_IRQ_GIC_START 32
40 static struct omap_hwmod_class omap44xx_dmm_hwmod_class = {
45 static struct omap_hwmod omap44xx_dmm_hwmod = {
47 .class = &omap44xx_dmm_hwmod_class,
48 .clkdm_name = "l3_emif_clkdm",
51 .clkctrl_offs = OMAP4_CM_MEMIF_DMM_CLKCTRL_OFFSET,
52 .context_offs = OMAP4_RM_MEMIF_DMM_CONTEXT_OFFSET,
59 * instance(s): l3_instr, l3_main_1, l3_main_2, l3_main_3
61 static struct omap_hwmod_class omap44xx_l3_hwmod_class = {
66 static struct omap_hwmod omap44xx_l3_instr_hwmod = {
68 .class = &omap44xx_l3_hwmod_class,
69 .clkdm_name = "l3_instr_clkdm",
72 .clkctrl_offs = OMAP4_CM_L3INSTR_L3_INSTR_CLKCTRL_OFFSET,
73 .context_offs = OMAP4_RM_L3INSTR_L3_INSTR_CONTEXT_OFFSET,
74 .modulemode = MODULEMODE_HWCTRL,
80 static struct omap_hwmod omap44xx_l3_main_1_hwmod = {
82 .class = &omap44xx_l3_hwmod_class,
83 .clkdm_name = "l3_1_clkdm",
86 .clkctrl_offs = OMAP4_CM_L3_1_L3_1_CLKCTRL_OFFSET,
87 .context_offs = OMAP4_RM_L3_1_L3_1_CONTEXT_OFFSET,
93 static struct omap_hwmod omap44xx_l3_main_2_hwmod = {
95 .class = &omap44xx_l3_hwmod_class,
96 .clkdm_name = "l3_2_clkdm",
99 .clkctrl_offs = OMAP4_CM_L3_2_L3_2_CLKCTRL_OFFSET,
100 .context_offs = OMAP4_RM_L3_2_L3_2_CONTEXT_OFFSET,
106 static struct omap_hwmod omap44xx_l3_main_3_hwmod = {
108 .class = &omap44xx_l3_hwmod_class,
109 .clkdm_name = "l3_instr_clkdm",
112 .clkctrl_offs = OMAP4_CM_L3INSTR_L3_3_CLKCTRL_OFFSET,
113 .context_offs = OMAP4_RM_L3INSTR_L3_3_CONTEXT_OFFSET,
114 .modulemode = MODULEMODE_HWCTRL,
121 * instance(s): l4_abe, l4_cfg, l4_per, l4_wkup
123 static struct omap_hwmod_class omap44xx_l4_hwmod_class = {
128 static struct omap_hwmod omap44xx_l4_abe_hwmod = {
130 .class = &omap44xx_l4_hwmod_class,
131 .clkdm_name = "abe_clkdm",
134 .clkctrl_offs = OMAP4_CM1_ABE_L4ABE_CLKCTRL_OFFSET,
135 .context_offs = OMAP4_RM_ABE_AESS_CONTEXT_OFFSET,
136 .lostcontext_mask = OMAP4430_LOSTMEM_AESSMEM_MASK,
137 .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
143 static struct omap_hwmod omap44xx_l4_cfg_hwmod = {
145 .class = &omap44xx_l4_hwmod_class,
146 .clkdm_name = "l4_cfg_clkdm",
149 .clkctrl_offs = OMAP4_CM_L4CFG_L4_CFG_CLKCTRL_OFFSET,
150 .context_offs = OMAP4_RM_L4CFG_L4_CFG_CONTEXT_OFFSET,
156 static struct omap_hwmod omap44xx_l4_per_hwmod = {
158 .class = &omap44xx_l4_hwmod_class,
159 .clkdm_name = "l4_per_clkdm",
162 .clkctrl_offs = OMAP4_CM_L4PER_L4PER_CLKCTRL_OFFSET,
163 .context_offs = OMAP4_RM_L4PER_L4_PER_CONTEXT_OFFSET,
169 static struct omap_hwmod omap44xx_l4_wkup_hwmod = {
171 .class = &omap44xx_l4_hwmod_class,
172 .clkdm_name = "l4_wkup_clkdm",
175 .clkctrl_offs = OMAP4_CM_WKUP_L4WKUP_CLKCTRL_OFFSET,
176 .context_offs = OMAP4_RM_WKUP_L4WKUP_CONTEXT_OFFSET,
183 * instance(s): mpu_private
185 static struct omap_hwmod_class omap44xx_mpu_bus_hwmod_class = {
190 static struct omap_hwmod omap44xx_mpu_private_hwmod = {
191 .name = "mpu_private",
192 .class = &omap44xx_mpu_bus_hwmod_class,
193 .clkdm_name = "mpuss_clkdm",
196 .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
203 * instance(s): ocp_wp_noc
205 static struct omap_hwmod_class omap44xx_ocp_wp_noc_hwmod_class = {
206 .name = "ocp_wp_noc",
210 static struct omap_hwmod omap44xx_ocp_wp_noc_hwmod = {
211 .name = "ocp_wp_noc",
212 .class = &omap44xx_ocp_wp_noc_hwmod_class,
213 .clkdm_name = "l3_instr_clkdm",
216 .clkctrl_offs = OMAP4_CM_L3INSTR_OCP_WP1_CLKCTRL_OFFSET,
217 .context_offs = OMAP4_RM_L3INSTR_OCP_WP1_CONTEXT_OFFSET,
218 .modulemode = MODULEMODE_HWCTRL,
224 * Modules omap_hwmod structures
226 * The following IPs are excluded for the moment because:
227 * - They do not need an explicit SW control using omap_hwmod API.
228 * - They still need to be validated with the driver
229 * properly adapted to omap_hwmod / omap_device
235 * 'ctrl_module' class
236 * attila core control module + core pad control module + wkup pad control
237 * module + attila wkup control module
240 static struct omap_hwmod_class_sysconfig omap44xx_ctrl_module_sysc = {
243 .sysc_flags = SYSC_HAS_SIDLEMODE,
244 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
246 .sysc_fields = &omap_hwmod_sysc_type2,
249 static struct omap_hwmod_class omap44xx_ctrl_module_hwmod_class = {
250 .name = "ctrl_module",
251 .sysc = &omap44xx_ctrl_module_sysc,
254 /* ctrl_module_core */
255 static struct omap_hwmod omap44xx_ctrl_module_core_hwmod = {
256 .name = "ctrl_module_core",
257 .class = &omap44xx_ctrl_module_hwmod_class,
258 .clkdm_name = "l4_cfg_clkdm",
261 .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
266 /* ctrl_module_pad_core */
267 static struct omap_hwmod omap44xx_ctrl_module_pad_core_hwmod = {
268 .name = "ctrl_module_pad_core",
269 .class = &omap44xx_ctrl_module_hwmod_class,
270 .clkdm_name = "l4_cfg_clkdm",
273 .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
278 /* ctrl_module_wkup */
279 static struct omap_hwmod omap44xx_ctrl_module_wkup_hwmod = {
280 .name = "ctrl_module_wkup",
281 .class = &omap44xx_ctrl_module_hwmod_class,
282 .clkdm_name = "l4_wkup_clkdm",
285 .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
290 /* ctrl_module_pad_wkup */
291 static struct omap_hwmod omap44xx_ctrl_module_pad_wkup_hwmod = {
292 .name = "ctrl_module_pad_wkup",
293 .class = &omap44xx_ctrl_module_hwmod_class,
294 .clkdm_name = "l4_wkup_clkdm",
297 .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
304 * debug and emulation sub system
307 static struct omap_hwmod_class omap44xx_debugss_hwmod_class = {
312 static struct omap_hwmod omap44xx_debugss_hwmod = {
314 .class = &omap44xx_debugss_hwmod_class,
315 .clkdm_name = "emu_sys_clkdm",
316 .main_clk = "trace_clk_div_ck",
319 .clkctrl_offs = OMAP4_CM_EMU_DEBUGSS_CLKCTRL_OFFSET,
320 .context_offs = OMAP4_RM_EMU_DEBUGSS_CONTEXT_OFFSET,
327 * external memory interface no1
330 static struct omap_hwmod_class_sysconfig omap44xx_emif_sysc = {
334 static struct omap_hwmod_class omap44xx_emif_hwmod_class = {
336 .sysc = &omap44xx_emif_sysc,
340 static struct omap_hwmod omap44xx_emif1_hwmod = {
342 .class = &omap44xx_emif_hwmod_class,
343 .clkdm_name = "l3_emif_clkdm",
344 .flags = HWMOD_INIT_NO_IDLE,
345 .main_clk = "ddrphy_ck",
348 .clkctrl_offs = OMAP4_CM_MEMIF_EMIF_1_CLKCTRL_OFFSET,
349 .context_offs = OMAP4_RM_MEMIF_EMIF_1_CONTEXT_OFFSET,
350 .modulemode = MODULEMODE_HWCTRL,
356 static struct omap_hwmod omap44xx_emif2_hwmod = {
358 .class = &omap44xx_emif_hwmod_class,
359 .clkdm_name = "l3_emif_clkdm",
360 .flags = HWMOD_INIT_NO_IDLE,
361 .main_clk = "ddrphy_ck",
364 .clkctrl_offs = OMAP4_CM_MEMIF_EMIF_2_CLKCTRL_OFFSET,
365 .context_offs = OMAP4_RM_MEMIF_EMIF_2_CONTEXT_OFFSET,
366 .modulemode = MODULEMODE_HWCTRL,
373 * general purpose memory controller
376 static struct omap_hwmod_class_sysconfig omap44xx_gpmc_sysc = {
380 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_SIDLEMODE |
381 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
382 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
383 .sysc_fields = &omap_hwmod_sysc_type1,
386 static struct omap_hwmod_class omap44xx_gpmc_hwmod_class = {
388 .sysc = &omap44xx_gpmc_sysc,
392 static struct omap_hwmod omap44xx_gpmc_hwmod = {
394 .class = &omap44xx_gpmc_hwmod_class,
395 .clkdm_name = "l3_2_clkdm",
396 /* Skip reset for CONFIG_OMAP_GPMC_DEBUG for bootloader timings */
397 .flags = DEBUG_OMAP_GPMC_HWMOD_FLAGS,
400 .clkctrl_offs = OMAP4_CM_L3_2_GPMC_CLKCTRL_OFFSET,
401 .context_offs = OMAP4_RM_L3_2_GPMC_CONTEXT_OFFSET,
402 .modulemode = MODULEMODE_HWCTRL,
409 * external images sensor pixel data processor
412 static struct omap_hwmod_class_sysconfig omap44xx_iss_sysc = {
416 * ISS needs 100 OCP clk cycles delay after a softreset before
417 * accessing sysconfig again.
418 * The lowest frequency at the moment for L3 bus is 100 MHz, so
419 * 1usec delay is needed. Add an x2 margin to be safe (2 usecs).
421 * TODO: Indicate errata when available.
424 .sysc_flags = (SYSC_HAS_MIDLEMODE | SYSC_HAS_RESET_STATUS |
425 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
426 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
427 SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
428 MSTANDBY_SMART | MSTANDBY_SMART_WKUP),
429 .sysc_fields = &omap_hwmod_sysc_type2,
432 static struct omap_hwmod_class omap44xx_iss_hwmod_class = {
434 .sysc = &omap44xx_iss_sysc,
438 static struct omap_hwmod_opt_clk iss_opt_clks[] = {
439 { .role = "ctrlclk", .clk = "iss_ctrlclk" },
442 static struct omap_hwmod omap44xx_iss_hwmod = {
444 .class = &omap44xx_iss_hwmod_class,
445 .clkdm_name = "iss_clkdm",
446 .main_clk = "ducati_clk_mux_ck",
449 .clkctrl_offs = OMAP4_CM_CAM_ISS_CLKCTRL_OFFSET,
450 .context_offs = OMAP4_RM_CAM_ISS_CONTEXT_OFFSET,
451 .modulemode = MODULEMODE_SWCTRL,
454 .opt_clks = iss_opt_clks,
455 .opt_clks_cnt = ARRAY_SIZE(iss_opt_clks),
460 * multi-standard video encoder/decoder hardware accelerator
463 static struct omap_hwmod_class omap44xx_iva_hwmod_class = {
468 static struct omap_hwmod_rst_info omap44xx_iva_resets[] = {
469 { .name = "seq0", .rst_shift = 0 },
470 { .name = "seq1", .rst_shift = 1 },
471 { .name = "logic", .rst_shift = 2 },
474 static struct omap_hwmod omap44xx_iva_hwmod = {
476 .class = &omap44xx_iva_hwmod_class,
477 .clkdm_name = "ivahd_clkdm",
478 .rst_lines = omap44xx_iva_resets,
479 .rst_lines_cnt = ARRAY_SIZE(omap44xx_iva_resets),
480 .main_clk = "dpll_iva_m5x2_ck",
483 .clkctrl_offs = OMAP4_CM_IVAHD_IVAHD_CLKCTRL_OFFSET,
484 .rstctrl_offs = OMAP4_RM_IVAHD_RSTCTRL_OFFSET,
485 .context_offs = OMAP4_RM_IVAHD_IVAHD_CONTEXT_OFFSET,
486 .modulemode = MODULEMODE_HWCTRL,
496 static struct omap_hwmod_class omap44xx_mpu_hwmod_class = {
501 static struct omap_hwmod omap44xx_mpu_hwmod = {
503 .class = &omap44xx_mpu_hwmod_class,
504 .clkdm_name = "mpuss_clkdm",
505 .flags = HWMOD_INIT_NO_IDLE,
506 .main_clk = "dpll_mpu_m2_ck",
509 .clkctrl_offs = OMAP4_CM_MPU_MPU_CLKCTRL_OFFSET,
510 .context_offs = OMAP4_RM_MPU_MPU_CONTEXT_OFFSET,
517 * top-level core on-chip ram
520 static struct omap_hwmod_class omap44xx_ocmc_ram_hwmod_class = {
525 static struct omap_hwmod omap44xx_ocmc_ram_hwmod = {
527 .class = &omap44xx_ocmc_ram_hwmod_class,
528 .clkdm_name = "l3_2_clkdm",
531 .clkctrl_offs = OMAP4_CM_L3_2_OCMC_RAM_CLKCTRL_OFFSET,
532 .context_offs = OMAP4_RM_L3_2_OCMC_RAM_CONTEXT_OFFSET,
540 * power and reset manager (part of the prcm infrastructure) + clock manager 2
541 * + clock manager 1 (in always on power domain) + local prm in mpu
544 static struct omap_hwmod_class omap44xx_prcm_hwmod_class = {
549 static struct omap_hwmod omap44xx_prcm_mpu_hwmod = {
551 .class = &omap44xx_prcm_hwmod_class,
552 .clkdm_name = "l4_wkup_clkdm",
553 .flags = HWMOD_NO_IDLEST,
556 .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
562 static struct omap_hwmod omap44xx_cm_core_aon_hwmod = {
563 .name = "cm_core_aon",
564 .class = &omap44xx_prcm_hwmod_class,
565 .flags = HWMOD_NO_IDLEST,
568 .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
574 static struct omap_hwmod omap44xx_cm_core_hwmod = {
576 .class = &omap44xx_prcm_hwmod_class,
577 .flags = HWMOD_NO_IDLEST,
580 .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
586 static struct omap_hwmod_rst_info omap44xx_prm_resets[] = {
587 { .name = "rst_global_warm_sw", .rst_shift = 0 },
588 { .name = "rst_global_cold_sw", .rst_shift = 1 },
591 static struct omap_hwmod omap44xx_prm_hwmod = {
593 .class = &omap44xx_prcm_hwmod_class,
594 .rst_lines = omap44xx_prm_resets,
595 .rst_lines_cnt = ARRAY_SIZE(omap44xx_prm_resets),
600 * system clock and reset manager
603 static struct omap_hwmod_class omap44xx_scrm_hwmod_class = {
608 static struct omap_hwmod omap44xx_scrm_hwmod = {
610 .class = &omap44xx_scrm_hwmod_class,
611 .clkdm_name = "l4_wkup_clkdm",
614 .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
621 * shared level 2 memory interface
624 static struct omap_hwmod_class omap44xx_sl2if_hwmod_class = {
629 static struct omap_hwmod omap44xx_sl2if_hwmod = {
631 .class = &omap44xx_sl2if_hwmod_class,
632 .clkdm_name = "ivahd_clkdm",
635 .clkctrl_offs = OMAP4_CM_IVAHD_SL2_CLKCTRL_OFFSET,
636 .context_offs = OMAP4_RM_IVAHD_SL2_CONTEXT_OFFSET,
637 .modulemode = MODULEMODE_HWCTRL,
646 /* l3_main_1 -> dmm */
647 static struct omap_hwmod_ocp_if omap44xx_l3_main_1__dmm = {
648 .master = &omap44xx_l3_main_1_hwmod,
649 .slave = &omap44xx_dmm_hwmod,
651 .user = OCP_USER_SDMA,
655 static struct omap_hwmod_ocp_if omap44xx_mpu__dmm = {
656 .master = &omap44xx_mpu_hwmod,
657 .slave = &omap44xx_dmm_hwmod,
659 .user = OCP_USER_MPU,
662 /* iva -> l3_instr */
663 static struct omap_hwmod_ocp_if omap44xx_iva__l3_instr = {
664 .master = &omap44xx_iva_hwmod,
665 .slave = &omap44xx_l3_instr_hwmod,
667 .user = OCP_USER_MPU | OCP_USER_SDMA,
670 /* l3_main_3 -> l3_instr */
671 static struct omap_hwmod_ocp_if omap44xx_l3_main_3__l3_instr = {
672 .master = &omap44xx_l3_main_3_hwmod,
673 .slave = &omap44xx_l3_instr_hwmod,
675 .user = OCP_USER_MPU | OCP_USER_SDMA,
678 /* ocp_wp_noc -> l3_instr */
679 static struct omap_hwmod_ocp_if omap44xx_ocp_wp_noc__l3_instr = {
680 .master = &omap44xx_ocp_wp_noc_hwmod,
681 .slave = &omap44xx_l3_instr_hwmod,
683 .user = OCP_USER_MPU | OCP_USER_SDMA,
686 /* l3_main_2 -> l3_main_1 */
687 static struct omap_hwmod_ocp_if omap44xx_l3_main_2__l3_main_1 = {
688 .master = &omap44xx_l3_main_2_hwmod,
689 .slave = &omap44xx_l3_main_1_hwmod,
691 .user = OCP_USER_MPU | OCP_USER_SDMA,
694 /* l4_cfg -> l3_main_1 */
695 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l3_main_1 = {
696 .master = &omap44xx_l4_cfg_hwmod,
697 .slave = &omap44xx_l3_main_1_hwmod,
699 .user = OCP_USER_MPU | OCP_USER_SDMA,
702 /* mpu -> l3_main_1 */
703 static struct omap_hwmod_ocp_if omap44xx_mpu__l3_main_1 = {
704 .master = &omap44xx_mpu_hwmod,
705 .slave = &omap44xx_l3_main_1_hwmod,
707 .user = OCP_USER_MPU,
710 /* debugss -> l3_main_2 */
711 static struct omap_hwmod_ocp_if omap44xx_debugss__l3_main_2 = {
712 .master = &omap44xx_debugss_hwmod,
713 .slave = &omap44xx_l3_main_2_hwmod,
714 .clk = "dbgclk_mux_ck",
715 .user = OCP_USER_MPU | OCP_USER_SDMA,
718 /* iss -> l3_main_2 */
719 static struct omap_hwmod_ocp_if omap44xx_iss__l3_main_2 = {
720 .master = &omap44xx_iss_hwmod,
721 .slave = &omap44xx_l3_main_2_hwmod,
723 .user = OCP_USER_MPU | OCP_USER_SDMA,
726 /* iva -> l3_main_2 */
727 static struct omap_hwmod_ocp_if omap44xx_iva__l3_main_2 = {
728 .master = &omap44xx_iva_hwmod,
729 .slave = &omap44xx_l3_main_2_hwmod,
731 .user = OCP_USER_MPU | OCP_USER_SDMA,
734 /* l3_main_1 -> l3_main_2 */
735 static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l3_main_2 = {
736 .master = &omap44xx_l3_main_1_hwmod,
737 .slave = &omap44xx_l3_main_2_hwmod,
739 .user = OCP_USER_MPU,
742 /* l4_cfg -> l3_main_2 */
743 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l3_main_2 = {
744 .master = &omap44xx_l4_cfg_hwmod,
745 .slave = &omap44xx_l3_main_2_hwmod,
747 .user = OCP_USER_MPU | OCP_USER_SDMA,
750 /* l3_main_1 -> l3_main_3 */
751 static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l3_main_3 = {
752 .master = &omap44xx_l3_main_1_hwmod,
753 .slave = &omap44xx_l3_main_3_hwmod,
755 .user = OCP_USER_MPU,
758 /* l3_main_2 -> l3_main_3 */
759 static struct omap_hwmod_ocp_if omap44xx_l3_main_2__l3_main_3 = {
760 .master = &omap44xx_l3_main_2_hwmod,
761 .slave = &omap44xx_l3_main_3_hwmod,
763 .user = OCP_USER_MPU | OCP_USER_SDMA,
766 /* l4_cfg -> l3_main_3 */
767 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l3_main_3 = {
768 .master = &omap44xx_l4_cfg_hwmod,
769 .slave = &omap44xx_l3_main_3_hwmod,
771 .user = OCP_USER_MPU | OCP_USER_SDMA,
774 /* l3_main_1 -> l4_abe */
775 static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l4_abe = {
776 .master = &omap44xx_l3_main_1_hwmod,
777 .slave = &omap44xx_l4_abe_hwmod,
779 .user = OCP_USER_MPU | OCP_USER_SDMA,
783 static struct omap_hwmod_ocp_if omap44xx_mpu__l4_abe = {
784 .master = &omap44xx_mpu_hwmod,
785 .slave = &omap44xx_l4_abe_hwmod,
786 .clk = "ocp_abe_iclk",
787 .user = OCP_USER_MPU | OCP_USER_SDMA,
790 /* l3_main_1 -> l4_cfg */
791 static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l4_cfg = {
792 .master = &omap44xx_l3_main_1_hwmod,
793 .slave = &omap44xx_l4_cfg_hwmod,
795 .user = OCP_USER_MPU | OCP_USER_SDMA,
798 /* l3_main_2 -> l4_per */
799 static struct omap_hwmod_ocp_if omap44xx_l3_main_2__l4_per = {
800 .master = &omap44xx_l3_main_2_hwmod,
801 .slave = &omap44xx_l4_per_hwmod,
803 .user = OCP_USER_MPU | OCP_USER_SDMA,
806 /* l4_cfg -> l4_wkup */
807 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l4_wkup = {
808 .master = &omap44xx_l4_cfg_hwmod,
809 .slave = &omap44xx_l4_wkup_hwmod,
811 .user = OCP_USER_MPU | OCP_USER_SDMA,
814 /* mpu -> mpu_private */
815 static struct omap_hwmod_ocp_if omap44xx_mpu__mpu_private = {
816 .master = &omap44xx_mpu_hwmod,
817 .slave = &omap44xx_mpu_private_hwmod,
819 .user = OCP_USER_MPU | OCP_USER_SDMA,
822 /* l4_cfg -> ocp_wp_noc */
823 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__ocp_wp_noc = {
824 .master = &omap44xx_l4_cfg_hwmod,
825 .slave = &omap44xx_ocp_wp_noc_hwmod,
827 .user = OCP_USER_MPU | OCP_USER_SDMA,
830 /* l4_cfg -> ctrl_module_core */
831 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__ctrl_module_core = {
832 .master = &omap44xx_l4_cfg_hwmod,
833 .slave = &omap44xx_ctrl_module_core_hwmod,
835 .user = OCP_USER_MPU | OCP_USER_SDMA,
838 /* l4_cfg -> ctrl_module_pad_core */
839 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__ctrl_module_pad_core = {
840 .master = &omap44xx_l4_cfg_hwmod,
841 .slave = &omap44xx_ctrl_module_pad_core_hwmod,
843 .user = OCP_USER_MPU | OCP_USER_SDMA,
846 /* l4_wkup -> ctrl_module_wkup */
847 static struct omap_hwmod_ocp_if omap44xx_l4_wkup__ctrl_module_wkup = {
848 .master = &omap44xx_l4_wkup_hwmod,
849 .slave = &omap44xx_ctrl_module_wkup_hwmod,
850 .clk = "l4_wkup_clk_mux_ck",
851 .user = OCP_USER_MPU | OCP_USER_SDMA,
854 /* l4_wkup -> ctrl_module_pad_wkup */
855 static struct omap_hwmod_ocp_if omap44xx_l4_wkup__ctrl_module_pad_wkup = {
856 .master = &omap44xx_l4_wkup_hwmod,
857 .slave = &omap44xx_ctrl_module_pad_wkup_hwmod,
858 .clk = "l4_wkup_clk_mux_ck",
859 .user = OCP_USER_MPU | OCP_USER_SDMA,
862 /* l3_instr -> debugss */
863 static struct omap_hwmod_ocp_if omap44xx_l3_instr__debugss = {
864 .master = &omap44xx_l3_instr_hwmod,
865 .slave = &omap44xx_debugss_hwmod,
867 .user = OCP_USER_MPU | OCP_USER_SDMA,
870 /* l3_main_2 -> gpmc */
871 static struct omap_hwmod_ocp_if omap44xx_l3_main_2__gpmc = {
872 .master = &omap44xx_l3_main_2_hwmod,
873 .slave = &omap44xx_gpmc_hwmod,
875 .user = OCP_USER_MPU | OCP_USER_SDMA,
878 /* l3_main_2 -> iss */
879 static struct omap_hwmod_ocp_if omap44xx_l3_main_2__iss = {
880 .master = &omap44xx_l3_main_2_hwmod,
881 .slave = &omap44xx_iss_hwmod,
883 .user = OCP_USER_MPU | OCP_USER_SDMA,
887 static struct omap_hwmod_ocp_if __maybe_unused omap44xx_iva__sl2if = {
888 .master = &omap44xx_iva_hwmod,
889 .slave = &omap44xx_sl2if_hwmod,
890 .clk = "dpll_iva_m5x2_ck",
891 .user = OCP_USER_IVA,
894 /* l3_main_2 -> iva */
895 static struct omap_hwmod_ocp_if omap44xx_l3_main_2__iva = {
896 .master = &omap44xx_l3_main_2_hwmod,
897 .slave = &omap44xx_iva_hwmod,
899 .user = OCP_USER_MPU,
902 /* l3_main_2 -> ocmc_ram */
903 static struct omap_hwmod_ocp_if omap44xx_l3_main_2__ocmc_ram = {
904 .master = &omap44xx_l3_main_2_hwmod,
905 .slave = &omap44xx_ocmc_ram_hwmod,
907 .user = OCP_USER_MPU | OCP_USER_SDMA,
910 /* mpu_private -> prcm_mpu */
911 static struct omap_hwmod_ocp_if omap44xx_mpu_private__prcm_mpu = {
912 .master = &omap44xx_mpu_private_hwmod,
913 .slave = &omap44xx_prcm_mpu_hwmod,
915 .user = OCP_USER_MPU | OCP_USER_SDMA,
918 /* l4_wkup -> cm_core_aon */
919 static struct omap_hwmod_ocp_if omap44xx_l4_wkup__cm_core_aon = {
920 .master = &omap44xx_l4_wkup_hwmod,
921 .slave = &omap44xx_cm_core_aon_hwmod,
922 .clk = "l4_wkup_clk_mux_ck",
923 .user = OCP_USER_MPU | OCP_USER_SDMA,
926 /* l4_cfg -> cm_core */
927 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__cm_core = {
928 .master = &omap44xx_l4_cfg_hwmod,
929 .slave = &omap44xx_cm_core_hwmod,
931 .user = OCP_USER_MPU | OCP_USER_SDMA,
935 static struct omap_hwmod_ocp_if omap44xx_l4_wkup__prm = {
936 .master = &omap44xx_l4_wkup_hwmod,
937 .slave = &omap44xx_prm_hwmod,
938 .clk = "l4_wkup_clk_mux_ck",
939 .user = OCP_USER_MPU | OCP_USER_SDMA,
942 /* l4_wkup -> scrm */
943 static struct omap_hwmod_ocp_if omap44xx_l4_wkup__scrm = {
944 .master = &omap44xx_l4_wkup_hwmod,
945 .slave = &omap44xx_scrm_hwmod,
946 .clk = "l4_wkup_clk_mux_ck",
947 .user = OCP_USER_MPU | OCP_USER_SDMA,
950 /* l3_main_2 -> sl2if */
951 static struct omap_hwmod_ocp_if __maybe_unused omap44xx_l3_main_2__sl2if = {
952 .master = &omap44xx_l3_main_2_hwmod,
953 .slave = &omap44xx_sl2if_hwmod,
955 .user = OCP_USER_MPU | OCP_USER_SDMA,
959 static struct omap_hwmod_ocp_if omap44xx_mpu__emif1 = {
960 .master = &omap44xx_mpu_hwmod,
961 .slave = &omap44xx_emif1_hwmod,
963 .user = OCP_USER_MPU | OCP_USER_SDMA,
967 static struct omap_hwmod_ocp_if omap44xx_mpu__emif2 = {
968 .master = &omap44xx_mpu_hwmod,
969 .slave = &omap44xx_emif2_hwmod,
971 .user = OCP_USER_MPU | OCP_USER_SDMA,
974 static struct omap_hwmod_ocp_if *omap44xx_hwmod_ocp_ifs[] __initdata = {
975 &omap44xx_l3_main_1__dmm,
977 &omap44xx_iva__l3_instr,
978 &omap44xx_l3_main_3__l3_instr,
979 &omap44xx_ocp_wp_noc__l3_instr,
980 &omap44xx_l3_main_2__l3_main_1,
981 &omap44xx_l4_cfg__l3_main_1,
982 &omap44xx_mpu__l3_main_1,
983 &omap44xx_debugss__l3_main_2,
984 &omap44xx_iss__l3_main_2,
985 &omap44xx_iva__l3_main_2,
986 &omap44xx_l3_main_1__l3_main_2,
987 &omap44xx_l4_cfg__l3_main_2,
988 &omap44xx_l3_main_1__l3_main_3,
989 &omap44xx_l3_main_2__l3_main_3,
990 &omap44xx_l4_cfg__l3_main_3,
991 &omap44xx_l3_main_1__l4_abe,
992 &omap44xx_mpu__l4_abe,
993 &omap44xx_l3_main_1__l4_cfg,
994 &omap44xx_l3_main_2__l4_per,
995 &omap44xx_l4_cfg__l4_wkup,
996 &omap44xx_mpu__mpu_private,
997 &omap44xx_l4_cfg__ocp_wp_noc,
998 &omap44xx_l4_cfg__ctrl_module_core,
999 &omap44xx_l4_cfg__ctrl_module_pad_core,
1000 &omap44xx_l4_wkup__ctrl_module_wkup,
1001 &omap44xx_l4_wkup__ctrl_module_pad_wkup,
1002 &omap44xx_l3_instr__debugss,
1003 &omap44xx_l3_main_2__gpmc,
1004 &omap44xx_l3_main_2__iss,
1005 /* &omap44xx_iva__sl2if, */
1006 &omap44xx_l3_main_2__iva,
1007 &omap44xx_l3_main_2__ocmc_ram,
1008 &omap44xx_mpu_private__prcm_mpu,
1009 &omap44xx_l4_wkup__cm_core_aon,
1010 &omap44xx_l4_cfg__cm_core,
1011 &omap44xx_l4_wkup__prm,
1012 &omap44xx_l4_wkup__scrm,
1013 /* &omap44xx_l3_main_2__sl2if, */
1014 &omap44xx_mpu__emif1,
1015 &omap44xx_mpu__emif2,
1019 int __init omap44xx_hwmod_init(void)
1022 return omap_hwmod_register_links(omap44xx_hwmod_ocp_ifs);