2 * omap_hwmod_33xx_data.c: Hardware modules present on the AM33XX chips
4 * Copyright (C) {2012} Texas Instruments Incorporated - http://www.ti.com/
6 * This file is automatically generated from the AM33XX hardware databases.
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License as
9 * published by the Free Software Foundation version 2.
11 * This program is distributed "as is" WITHOUT ANY WARRANTY of any
12 * kind, whether express or implied; without even the implied warranty
13 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
17 #include <linux/i2c-omap.h>
19 #include "omap_hwmod.h"
20 #include <linux/platform_data/gpio-omap.h>
21 #include <linux/platform_data/spi-omap2-mcspi.h>
23 #include "omap_hwmod_common_data.h"
28 #include "prm-regbits-33xx.h"
41 static struct omap_hwmod_class_sysconfig am33xx_emif_sysc
= {
45 static struct omap_hwmod_class am33xx_emif_hwmod_class
= {
47 .sysc
= &am33xx_emif_sysc
,
51 static struct omap_hwmod am33xx_emif_hwmod
= {
53 .class = &am33xx_emif_hwmod_class
,
54 .clkdm_name
= "l3_clkdm",
55 .flags
= (HWMOD_INIT_NO_IDLE
| HWMOD_INIT_NO_RESET
),
56 .main_clk
= "dpll_ddr_m2_div2_ck",
59 .clkctrl_offs
= AM33XX_CM_PER_EMIF_CLKCTRL_OFFSET
,
60 .modulemode
= MODULEMODE_SWCTRL
,
67 * instance(s): l3_main, l3_s, l3_instr
69 static struct omap_hwmod_class am33xx_l3_hwmod_class
= {
73 static struct omap_hwmod am33xx_l3_main_hwmod
= {
75 .class = &am33xx_l3_hwmod_class
,
76 .clkdm_name
= "l3_clkdm",
77 .flags
= (HWMOD_INIT_NO_IDLE
| HWMOD_INIT_NO_RESET
),
78 .main_clk
= "l3_gclk",
81 .clkctrl_offs
= AM33XX_CM_PER_L3_CLKCTRL_OFFSET
,
82 .modulemode
= MODULEMODE_SWCTRL
,
88 static struct omap_hwmod am33xx_l3_s_hwmod
= {
90 .class = &am33xx_l3_hwmod_class
,
91 .clkdm_name
= "l3s_clkdm",
95 static struct omap_hwmod am33xx_l3_instr_hwmod
= {
97 .class = &am33xx_l3_hwmod_class
,
98 .clkdm_name
= "l3_clkdm",
99 .flags
= (HWMOD_INIT_NO_IDLE
| HWMOD_INIT_NO_RESET
),
100 .main_clk
= "l3_gclk",
103 .clkctrl_offs
= AM33XX_CM_PER_L3_INSTR_CLKCTRL_OFFSET
,
104 .modulemode
= MODULEMODE_SWCTRL
,
111 * instance(s): l4_ls, l4_hs, l4_wkup, l4_fw
113 static struct omap_hwmod_class am33xx_l4_hwmod_class
= {
118 static struct omap_hwmod am33xx_l4_ls_hwmod
= {
120 .class = &am33xx_l4_hwmod_class
,
121 .clkdm_name
= "l4ls_clkdm",
122 .flags
= (HWMOD_INIT_NO_IDLE
| HWMOD_INIT_NO_RESET
),
123 .main_clk
= "l4ls_gclk",
126 .clkctrl_offs
= AM33XX_CM_PER_L4LS_CLKCTRL_OFFSET
,
127 .modulemode
= MODULEMODE_SWCTRL
,
133 static struct omap_hwmod am33xx_l4_hs_hwmod
= {
135 .class = &am33xx_l4_hwmod_class
,
136 .clkdm_name
= "l4hs_clkdm",
137 .flags
= (HWMOD_INIT_NO_IDLE
| HWMOD_INIT_NO_RESET
),
138 .main_clk
= "l4hs_gclk",
141 .clkctrl_offs
= AM33XX_CM_PER_L4HS_CLKCTRL_OFFSET
,
142 .modulemode
= MODULEMODE_SWCTRL
,
149 static struct omap_hwmod am33xx_l4_wkup_hwmod
= {
151 .class = &am33xx_l4_hwmod_class
,
152 .clkdm_name
= "l4_wkup_clkdm",
153 .flags
= (HWMOD_INIT_NO_IDLE
| HWMOD_INIT_NO_RESET
),
156 .clkctrl_offs
= AM33XX_CM_WKUP_L4WKUP_CLKCTRL_OFFSET
,
157 .modulemode
= MODULEMODE_SWCTRL
,
165 static struct omap_hwmod_class am33xx_mpu_hwmod_class
= {
169 static struct omap_hwmod am33xx_mpu_hwmod
= {
171 .class = &am33xx_mpu_hwmod_class
,
172 .clkdm_name
= "mpu_clkdm",
173 .flags
= (HWMOD_INIT_NO_IDLE
| HWMOD_INIT_NO_RESET
),
174 .main_clk
= "dpll_mpu_m2_ck",
177 .clkctrl_offs
= AM33XX_CM_MPU_MPU_CLKCTRL_OFFSET
,
178 .modulemode
= MODULEMODE_SWCTRL
,
185 * Wakeup controller sub-system under wakeup domain
187 static struct omap_hwmod_class am33xx_wkup_m3_hwmod_class
= {
191 static struct omap_hwmod_rst_info am33xx_wkup_m3_resets
[] = {
192 { .name
= "wkup_m3", .rst_shift
= 3, .st_shift
= 5 },
196 static struct omap_hwmod am33xx_wkup_m3_hwmod
= {
198 .class = &am33xx_wkup_m3_hwmod_class
,
199 .clkdm_name
= "l4_wkup_aon_clkdm",
200 /* Keep hardreset asserted */
201 .flags
= HWMOD_INIT_NO_RESET
| HWMOD_NO_IDLEST
,
202 .main_clk
= "dpll_core_m4_div2_ck",
205 .clkctrl_offs
= AM33XX_CM_WKUP_WKUP_M3_CLKCTRL_OFFSET
,
206 .rstctrl_offs
= AM33XX_RM_WKUP_RSTCTRL_OFFSET
,
207 .rstst_offs
= AM33XX_RM_WKUP_RSTST_OFFSET
,
208 .modulemode
= MODULEMODE_SWCTRL
,
211 .rst_lines
= am33xx_wkup_m3_resets
,
212 .rst_lines_cnt
= ARRAY_SIZE(am33xx_wkup_m3_resets
),
217 * Programmable Real-Time Unit and Industrial Communication Subsystem
219 static struct omap_hwmod_class am33xx_pruss_hwmod_class
= {
223 static struct omap_hwmod_rst_info am33xx_pruss_resets
[] = {
224 { .name
= "pruss", .rst_shift
= 1 },
228 /* Pseudo hwmod for reset control purpose only */
229 static struct omap_hwmod am33xx_pruss_hwmod
= {
231 .class = &am33xx_pruss_hwmod_class
,
232 .clkdm_name
= "pruss_ocp_clkdm",
233 .main_clk
= "pruss_ocp_gclk",
236 .clkctrl_offs
= AM33XX_CM_PER_PRUSS_CLKCTRL_OFFSET
,
237 .rstctrl_offs
= AM33XX_RM_PER_RSTCTRL_OFFSET
,
238 .modulemode
= MODULEMODE_SWCTRL
,
241 .rst_lines
= am33xx_pruss_resets
,
242 .rst_lines_cnt
= ARRAY_SIZE(am33xx_pruss_resets
),
246 /* Pseudo hwmod for reset control purpose only */
247 static struct omap_hwmod_class am33xx_gfx_hwmod_class
= {
251 static struct omap_hwmod_rst_info am33xx_gfx_resets
[] = {
252 { .name
= "gfx", .rst_shift
= 0, .st_shift
= 0},
255 static struct omap_hwmod am33xx_gfx_hwmod
= {
257 .class = &am33xx_gfx_hwmod_class
,
258 .clkdm_name
= "gfx_l3_clkdm",
259 .main_clk
= "gfx_fck_div_ck",
262 .clkctrl_offs
= AM33XX_CM_GFX_GFX_CLKCTRL_OFFSET
,
263 .rstctrl_offs
= AM33XX_RM_GFX_RSTCTRL_OFFSET
,
264 .rstst_offs
= AM33XX_RM_GFX_RSTST_OFFSET
,
265 .modulemode
= MODULEMODE_SWCTRL
,
268 .rst_lines
= am33xx_gfx_resets
,
269 .rst_lines_cnt
= ARRAY_SIZE(am33xx_gfx_resets
),
274 * power and reset manager (whole prcm infrastructure)
276 static struct omap_hwmod_class am33xx_prcm_hwmod_class
= {
281 static struct omap_hwmod am33xx_prcm_hwmod
= {
283 .class = &am33xx_prcm_hwmod_class
,
284 .clkdm_name
= "l4_wkup_clkdm",
289 * TouchScreen Controller (Anolog-To-Digital Converter)
291 static struct omap_hwmod_class_sysconfig am33xx_adc_tsc_sysc
= {
294 .sysc_flags
= SYSC_HAS_SIDLEMODE
,
295 .idlemodes
= (SIDLE_FORCE
| SIDLE_NO
| SIDLE_SMART
|
297 .sysc_fields
= &omap_hwmod_sysc_type2
,
300 static struct omap_hwmod_class am33xx_adc_tsc_hwmod_class
= {
302 .sysc
= &am33xx_adc_tsc_sysc
,
305 static struct omap_hwmod am33xx_adc_tsc_hwmod
= {
307 .class = &am33xx_adc_tsc_hwmod_class
,
308 .clkdm_name
= "l4_wkup_clkdm",
309 .main_clk
= "adc_tsc_fck",
312 .clkctrl_offs
= AM33XX_CM_WKUP_ADC_TSC_CLKCTRL_OFFSET
,
313 .modulemode
= MODULEMODE_SWCTRL
,
319 * Modules omap_hwmod structures
321 * The following IPs are excluded for the moment because:
322 * - They do not need an explicit SW control using omap_hwmod API.
323 * - They still need to be validated with the driver
324 * properly adapted to omap_hwmod / omap_device
326 * - cEFUSE (doesn't fall under any ocp_if)
334 static struct omap_hwmod_class am33xx_cefuse_hwmod_class
= {
338 static struct omap_hwmod am33xx_cefuse_hwmod
= {
340 .class = &am33xx_cefuse_hwmod_class
,
341 .clkdm_name
= "l4_cefuse_clkdm",
342 .main_clk
= "cefuse_fck",
345 .clkctrl_offs
= AM33XX_CM_CEFUSE_CEFUSE_CLKCTRL_OFFSET
,
346 .modulemode
= MODULEMODE_SWCTRL
,
354 static struct omap_hwmod_class am33xx_clkdiv32k_hwmod_class
= {
358 static struct omap_hwmod am33xx_clkdiv32k_hwmod
= {
360 .class = &am33xx_clkdiv32k_hwmod_class
,
361 .clkdm_name
= "clk_24mhz_clkdm",
362 .main_clk
= "clkdiv32k_ick",
365 .clkctrl_offs
= AM33XX_CM_PER_CLKDIV32K_CLKCTRL_OFFSET
,
366 .modulemode
= MODULEMODE_SWCTRL
,
372 static struct omap_hwmod_class am33xx_ocpwp_hwmod_class
= {
376 static struct omap_hwmod am33xx_ocpwp_hwmod
= {
378 .class = &am33xx_ocpwp_hwmod_class
,
379 .clkdm_name
= "l4ls_clkdm",
380 .main_clk
= "l4ls_gclk",
383 .clkctrl_offs
= AM33XX_CM_PER_OCPWP_CLKCTRL_OFFSET
,
384 .modulemode
= MODULEMODE_SWCTRL
,
393 static struct omap_hwmod_class_sysconfig am33xx_aes0_sysc
= {
397 .sysc_flags
= SYSS_HAS_RESET_STATUS
,
400 static struct omap_hwmod_class am33xx_aes0_hwmod_class
= {
402 .sysc
= &am33xx_aes0_sysc
,
405 static struct omap_hwmod am33xx_aes0_hwmod
= {
407 .class = &am33xx_aes0_hwmod_class
,
408 .clkdm_name
= "l3_clkdm",
409 .main_clk
= "aes0_fck",
412 .clkctrl_offs
= AM33XX_CM_PER_AES0_CLKCTRL_OFFSET
,
413 .modulemode
= MODULEMODE_SWCTRL
,
418 /* sha0 HIB2 (the 'P' (public) device) */
419 static struct omap_hwmod_class_sysconfig am33xx_sha0_sysc
= {
423 .sysc_flags
= SYSS_HAS_RESET_STATUS
,
426 static struct omap_hwmod_class am33xx_sha0_hwmod_class
= {
428 .sysc
= &am33xx_sha0_sysc
,
431 static struct omap_hwmod am33xx_sha0_hwmod
= {
433 .class = &am33xx_sha0_hwmod_class
,
434 .clkdm_name
= "l3_clkdm",
435 .main_clk
= "l3_gclk",
438 .clkctrl_offs
= AM33XX_CM_PER_SHA0_CLKCTRL_OFFSET
,
439 .modulemode
= MODULEMODE_SWCTRL
,
445 static struct omap_hwmod_class am33xx_ocmcram_hwmod_class
= {
449 static struct omap_hwmod am33xx_ocmcram_hwmod
= {
451 .class = &am33xx_ocmcram_hwmod_class
,
452 .clkdm_name
= "l3_clkdm",
453 .flags
= (HWMOD_INIT_NO_IDLE
| HWMOD_INIT_NO_RESET
),
454 .main_clk
= "l3_gclk",
457 .clkctrl_offs
= AM33XX_CM_PER_OCMCRAM_CLKCTRL_OFFSET
,
458 .modulemode
= MODULEMODE_SWCTRL
,
467 static struct omap_hwmod_opt_clk debugss_opt_clks
[] = {
468 { .role
= "dbg_sysclk", .clk
= "dbg_sysclk_ck" },
469 { .role
= "dbg_clka", .clk
= "dbg_clka_ck" },
472 static struct omap_hwmod_class am33xx_debugss_hwmod_class
= {
476 static struct omap_hwmod am33xx_debugss_hwmod
= {
478 .class = &am33xx_debugss_hwmod_class
,
479 .clkdm_name
= "l3_aon_clkdm",
480 .main_clk
= "trace_clk_div_ck",
483 .clkctrl_offs
= AM33XX_CM_WKUP_DEBUGSS_CLKCTRL_OFFSET
,
484 .modulemode
= MODULEMODE_SWCTRL
,
487 .opt_clks
= debugss_opt_clks
,
488 .opt_clks_cnt
= ARRAY_SIZE(debugss_opt_clks
),
491 /* 'smartreflex' class */
492 static struct omap_hwmod_class am33xx_smartreflex_hwmod_class
= {
493 .name
= "smartreflex",
497 static struct omap_hwmod am33xx_smartreflex0_hwmod
= {
498 .name
= "smartreflex0",
499 .class = &am33xx_smartreflex_hwmod_class
,
500 .clkdm_name
= "l4_wkup_clkdm",
501 .main_clk
= "smartreflex0_fck",
504 .clkctrl_offs
= AM33XX_CM_WKUP_SMARTREFLEX0_CLKCTRL_OFFSET
,
505 .modulemode
= MODULEMODE_SWCTRL
,
511 static struct omap_hwmod am33xx_smartreflex1_hwmod
= {
512 .name
= "smartreflex1",
513 .class = &am33xx_smartreflex_hwmod_class
,
514 .clkdm_name
= "l4_wkup_clkdm",
515 .main_clk
= "smartreflex1_fck",
518 .clkctrl_offs
= AM33XX_CM_WKUP_SMARTREFLEX1_CLKCTRL_OFFSET
,
519 .modulemode
= MODULEMODE_SWCTRL
,
525 * 'control' module class
527 static struct omap_hwmod_class am33xx_control_hwmod_class
= {
531 static struct omap_hwmod am33xx_control_hwmod
= {
533 .class = &am33xx_control_hwmod_class
,
534 .clkdm_name
= "l4_wkup_clkdm",
535 .flags
= (HWMOD_INIT_NO_IDLE
| HWMOD_INIT_NO_RESET
),
536 .main_clk
= "dpll_core_m4_div2_ck",
539 .clkctrl_offs
= AM33XX_CM_WKUP_CONTROL_CLKCTRL_OFFSET
,
540 .modulemode
= MODULEMODE_SWCTRL
,
547 * cpsw/cpgmac sub system
549 static struct omap_hwmod_class_sysconfig am33xx_cpgmac_sysc
= {
553 .sysc_flags
= (SYSC_HAS_SIDLEMODE
| SYSC_HAS_MIDLEMODE
|
554 SYSS_HAS_RESET_STATUS
),
555 .idlemodes
= (SIDLE_FORCE
| SIDLE_NO
| MSTANDBY_FORCE
|
557 .sysc_fields
= &omap_hwmod_sysc_type3
,
560 static struct omap_hwmod_class am33xx_cpgmac0_hwmod_class
= {
562 .sysc
= &am33xx_cpgmac_sysc
,
565 static struct omap_hwmod am33xx_cpgmac0_hwmod
= {
567 .class = &am33xx_cpgmac0_hwmod_class
,
568 .clkdm_name
= "cpsw_125mhz_clkdm",
569 .flags
= (HWMOD_SWSUP_SIDLE
| HWMOD_SWSUP_MSTANDBY
),
570 .main_clk
= "cpsw_125mhz_gclk",
574 .clkctrl_offs
= AM33XX_CM_PER_CPGMAC0_CLKCTRL_OFFSET
,
575 .modulemode
= MODULEMODE_SWCTRL
,
583 static struct omap_hwmod_class am33xx_mdio_hwmod_class
= {
584 .name
= "davinci_mdio",
587 static struct omap_hwmod am33xx_mdio_hwmod
= {
588 .name
= "davinci_mdio",
589 .class = &am33xx_mdio_hwmod_class
,
590 .clkdm_name
= "cpsw_125mhz_clkdm",
591 .main_clk
= "cpsw_125mhz_gclk",
597 static struct omap_hwmod_class am33xx_dcan_hwmod_class
= {
602 static struct omap_hwmod am33xx_dcan0_hwmod
= {
604 .class = &am33xx_dcan_hwmod_class
,
605 .clkdm_name
= "l4ls_clkdm",
606 .main_clk
= "dcan0_fck",
609 .clkctrl_offs
= AM33XX_CM_PER_DCAN0_CLKCTRL_OFFSET
,
610 .modulemode
= MODULEMODE_SWCTRL
,
616 static struct omap_hwmod am33xx_dcan1_hwmod
= {
618 .class = &am33xx_dcan_hwmod_class
,
619 .clkdm_name
= "l4ls_clkdm",
620 .main_clk
= "dcan1_fck",
623 .clkctrl_offs
= AM33XX_CM_PER_DCAN1_CLKCTRL_OFFSET
,
624 .modulemode
= MODULEMODE_SWCTRL
,
630 static struct omap_hwmod_class_sysconfig am33xx_elm_sysc
= {
634 .sysc_flags
= (SYSC_HAS_CLOCKACTIVITY
| SYSC_HAS_SIDLEMODE
|
635 SYSC_HAS_SOFTRESET
| SYSC_HAS_AUTOIDLE
|
636 SYSS_HAS_RESET_STATUS
),
637 .idlemodes
= (SIDLE_FORCE
| SIDLE_NO
| SIDLE_SMART
),
638 .sysc_fields
= &omap_hwmod_sysc_type1
,
641 static struct omap_hwmod_class am33xx_elm_hwmod_class
= {
643 .sysc
= &am33xx_elm_sysc
,
646 static struct omap_hwmod am33xx_elm_hwmod
= {
648 .class = &am33xx_elm_hwmod_class
,
649 .clkdm_name
= "l4ls_clkdm",
650 .main_clk
= "l4ls_gclk",
653 .clkctrl_offs
= AM33XX_CM_PER_ELM_CLKCTRL_OFFSET
,
654 .modulemode
= MODULEMODE_SWCTRL
,
660 static struct omap_hwmod_class_sysconfig am33xx_epwmss_sysc
= {
663 .sysc_flags
= (SYSC_HAS_SIDLEMODE
| SYSC_HAS_MIDLEMODE
),
664 .idlemodes
= (SIDLE_FORCE
| SIDLE_NO
| SIDLE_SMART
|
665 SIDLE_SMART_WKUP
| MSTANDBY_FORCE
| MSTANDBY_NO
|
666 MSTANDBY_SMART
| MSTANDBY_SMART_WKUP
),
667 .sysc_fields
= &omap_hwmod_sysc_type2
,
670 static struct omap_hwmod_class am33xx_epwmss_hwmod_class
= {
672 .sysc
= &am33xx_epwmss_sysc
,
675 static struct omap_hwmod_class am33xx_ecap_hwmod_class
= {
679 static struct omap_hwmod_class am33xx_eqep_hwmod_class
= {
683 static struct omap_hwmod_class am33xx_ehrpwm_hwmod_class
= {
688 static struct omap_hwmod am33xx_epwmss0_hwmod
= {
690 .class = &am33xx_epwmss_hwmod_class
,
691 .clkdm_name
= "l4ls_clkdm",
692 .main_clk
= "l4ls_gclk",
695 .clkctrl_offs
= AM33XX_CM_PER_EPWMSS0_CLKCTRL_OFFSET
,
696 .modulemode
= MODULEMODE_SWCTRL
,
702 static struct omap_hwmod am33xx_ecap0_hwmod
= {
704 .class = &am33xx_ecap_hwmod_class
,
705 .clkdm_name
= "l4ls_clkdm",
706 .main_clk
= "l4ls_gclk",
710 static struct omap_hwmod am33xx_eqep0_hwmod
= {
712 .class = &am33xx_eqep_hwmod_class
,
713 .clkdm_name
= "l4ls_clkdm",
714 .main_clk
= "l4ls_gclk",
718 static struct omap_hwmod am33xx_ehrpwm0_hwmod
= {
720 .class = &am33xx_ehrpwm_hwmod_class
,
721 .clkdm_name
= "l4ls_clkdm",
722 .main_clk
= "l4ls_gclk",
726 static struct omap_hwmod am33xx_epwmss1_hwmod
= {
728 .class = &am33xx_epwmss_hwmod_class
,
729 .clkdm_name
= "l4ls_clkdm",
730 .main_clk
= "l4ls_gclk",
733 .clkctrl_offs
= AM33XX_CM_PER_EPWMSS1_CLKCTRL_OFFSET
,
734 .modulemode
= MODULEMODE_SWCTRL
,
740 static struct omap_hwmod am33xx_ecap1_hwmod
= {
742 .class = &am33xx_ecap_hwmod_class
,
743 .clkdm_name
= "l4ls_clkdm",
744 .main_clk
= "l4ls_gclk",
748 static struct omap_hwmod am33xx_eqep1_hwmod
= {
750 .class = &am33xx_eqep_hwmod_class
,
751 .clkdm_name
= "l4ls_clkdm",
752 .main_clk
= "l4ls_gclk",
756 static struct omap_hwmod am33xx_ehrpwm1_hwmod
= {
758 .class = &am33xx_ehrpwm_hwmod_class
,
759 .clkdm_name
= "l4ls_clkdm",
760 .main_clk
= "l4ls_gclk",
764 static struct omap_hwmod am33xx_epwmss2_hwmod
= {
766 .class = &am33xx_epwmss_hwmod_class
,
767 .clkdm_name
= "l4ls_clkdm",
768 .main_clk
= "l4ls_gclk",
771 .clkctrl_offs
= AM33XX_CM_PER_EPWMSS2_CLKCTRL_OFFSET
,
772 .modulemode
= MODULEMODE_SWCTRL
,
778 static struct omap_hwmod am33xx_ecap2_hwmod
= {
780 .class = &am33xx_ecap_hwmod_class
,
781 .clkdm_name
= "l4ls_clkdm",
782 .main_clk
= "l4ls_gclk",
786 static struct omap_hwmod am33xx_eqep2_hwmod
= {
788 .class = &am33xx_eqep_hwmod_class
,
789 .clkdm_name
= "l4ls_clkdm",
790 .main_clk
= "l4ls_gclk",
794 static struct omap_hwmod am33xx_ehrpwm2_hwmod
= {
796 .class = &am33xx_ehrpwm_hwmod_class
,
797 .clkdm_name
= "l4ls_clkdm",
798 .main_clk
= "l4ls_gclk",
802 * 'gpio' class: for gpio 0,1,2,3
804 static struct omap_hwmod_class_sysconfig am33xx_gpio_sysc
= {
808 .sysc_flags
= (SYSC_HAS_AUTOIDLE
| SYSC_HAS_ENAWAKEUP
|
809 SYSC_HAS_SIDLEMODE
| SYSC_HAS_SOFTRESET
|
810 SYSS_HAS_RESET_STATUS
),
811 .idlemodes
= (SIDLE_FORCE
| SIDLE_NO
| SIDLE_SMART
|
813 .sysc_fields
= &omap_hwmod_sysc_type1
,
816 static struct omap_hwmod_class am33xx_gpio_hwmod_class
= {
818 .sysc
= &am33xx_gpio_sysc
,
822 static struct omap_gpio_dev_attr gpio_dev_attr
= {
828 static struct omap_hwmod_opt_clk gpio0_opt_clks
[] = {
829 { .role
= "dbclk", .clk
= "gpio0_dbclk" },
832 static struct omap_hwmod am33xx_gpio0_hwmod
= {
834 .class = &am33xx_gpio_hwmod_class
,
835 .clkdm_name
= "l4_wkup_clkdm",
836 .flags
= HWMOD_CONTROL_OPT_CLKS_IN_RESET
,
837 .main_clk
= "dpll_core_m4_div2_ck",
840 .clkctrl_offs
= AM33XX_CM_WKUP_GPIO0_CLKCTRL_OFFSET
,
841 .modulemode
= MODULEMODE_SWCTRL
,
844 .opt_clks
= gpio0_opt_clks
,
845 .opt_clks_cnt
= ARRAY_SIZE(gpio0_opt_clks
),
846 .dev_attr
= &gpio_dev_attr
,
850 static struct omap_hwmod_opt_clk gpio1_opt_clks
[] = {
851 { .role
= "dbclk", .clk
= "gpio1_dbclk" },
854 static struct omap_hwmod am33xx_gpio1_hwmod
= {
856 .class = &am33xx_gpio_hwmod_class
,
857 .clkdm_name
= "l4ls_clkdm",
858 .flags
= HWMOD_CONTROL_OPT_CLKS_IN_RESET
,
859 .main_clk
= "l4ls_gclk",
862 .clkctrl_offs
= AM33XX_CM_PER_GPIO1_CLKCTRL_OFFSET
,
863 .modulemode
= MODULEMODE_SWCTRL
,
866 .opt_clks
= gpio1_opt_clks
,
867 .opt_clks_cnt
= ARRAY_SIZE(gpio1_opt_clks
),
868 .dev_attr
= &gpio_dev_attr
,
872 static struct omap_hwmod_opt_clk gpio2_opt_clks
[] = {
873 { .role
= "dbclk", .clk
= "gpio2_dbclk" },
876 static struct omap_hwmod am33xx_gpio2_hwmod
= {
878 .class = &am33xx_gpio_hwmod_class
,
879 .clkdm_name
= "l4ls_clkdm",
880 .flags
= HWMOD_CONTROL_OPT_CLKS_IN_RESET
,
881 .main_clk
= "l4ls_gclk",
884 .clkctrl_offs
= AM33XX_CM_PER_GPIO2_CLKCTRL_OFFSET
,
885 .modulemode
= MODULEMODE_SWCTRL
,
888 .opt_clks
= gpio2_opt_clks
,
889 .opt_clks_cnt
= ARRAY_SIZE(gpio2_opt_clks
),
890 .dev_attr
= &gpio_dev_attr
,
894 static struct omap_hwmod_opt_clk gpio3_opt_clks
[] = {
895 { .role
= "dbclk", .clk
= "gpio3_dbclk" },
898 static struct omap_hwmod am33xx_gpio3_hwmod
= {
900 .class = &am33xx_gpio_hwmod_class
,
901 .clkdm_name
= "l4ls_clkdm",
902 .flags
= HWMOD_CONTROL_OPT_CLKS_IN_RESET
,
903 .main_clk
= "l4ls_gclk",
906 .clkctrl_offs
= AM33XX_CM_PER_GPIO3_CLKCTRL_OFFSET
,
907 .modulemode
= MODULEMODE_SWCTRL
,
910 .opt_clks
= gpio3_opt_clks
,
911 .opt_clks_cnt
= ARRAY_SIZE(gpio3_opt_clks
),
912 .dev_attr
= &gpio_dev_attr
,
916 static struct omap_hwmod_class_sysconfig gpmc_sysc
= {
920 .sysc_flags
= (SYSC_HAS_AUTOIDLE
| SYSC_HAS_SIDLEMODE
|
921 SYSC_HAS_SOFTRESET
| SYSS_HAS_RESET_STATUS
),
922 .idlemodes
= (SIDLE_FORCE
| SIDLE_NO
| SIDLE_SMART
),
923 .sysc_fields
= &omap_hwmod_sysc_type1
,
926 static struct omap_hwmod_class am33xx_gpmc_hwmod_class
= {
931 static struct omap_hwmod am33xx_gpmc_hwmod
= {
933 .class = &am33xx_gpmc_hwmod_class
,
934 .clkdm_name
= "l3s_clkdm",
935 .flags
= (HWMOD_INIT_NO_IDLE
| HWMOD_INIT_NO_RESET
),
936 .main_clk
= "l3s_gclk",
939 .clkctrl_offs
= AM33XX_CM_PER_GPMC_CLKCTRL_OFFSET
,
940 .modulemode
= MODULEMODE_SWCTRL
,
946 static struct omap_hwmod_class_sysconfig am33xx_i2c_sysc
= {
949 .sysc_flags
= (SYSC_HAS_AUTOIDLE
| SYSC_HAS_CLOCKACTIVITY
|
950 SYSC_HAS_ENAWAKEUP
| SYSC_HAS_SIDLEMODE
|
951 SYSC_HAS_SOFTRESET
| SYSS_HAS_RESET_STATUS
),
952 .idlemodes
= (SIDLE_FORCE
| SIDLE_NO
| SIDLE_SMART
|
954 .sysc_fields
= &omap_hwmod_sysc_type1
,
957 static struct omap_hwmod_class i2c_class
= {
959 .sysc
= &am33xx_i2c_sysc
,
960 .rev
= OMAP_I2C_IP_VERSION_2
,
961 .reset
= &omap_i2c_reset
,
964 static struct omap_i2c_dev_attr i2c_dev_attr
= {
965 .flags
= OMAP_I2C_FLAG_BUS_SHIFT_NONE
,
969 static struct omap_hwmod am33xx_i2c1_hwmod
= {
972 .clkdm_name
= "l4_wkup_clkdm",
973 .flags
= HWMOD_16BIT_REG
| HWMOD_SET_DEFAULT_CLOCKACT
,
974 .main_clk
= "dpll_per_m2_div4_wkupdm_ck",
977 .clkctrl_offs
= AM33XX_CM_WKUP_I2C0_CLKCTRL_OFFSET
,
978 .modulemode
= MODULEMODE_SWCTRL
,
981 .dev_attr
= &i2c_dev_attr
,
985 static struct omap_hwmod am33xx_i2c2_hwmod
= {
988 .clkdm_name
= "l4ls_clkdm",
989 .flags
= HWMOD_16BIT_REG
| HWMOD_SET_DEFAULT_CLOCKACT
,
990 .main_clk
= "dpll_per_m2_div4_ck",
993 .clkctrl_offs
= AM33XX_CM_PER_I2C1_CLKCTRL_OFFSET
,
994 .modulemode
= MODULEMODE_SWCTRL
,
997 .dev_attr
= &i2c_dev_attr
,
1001 static struct omap_hwmod am33xx_i2c3_hwmod
= {
1003 .class = &i2c_class
,
1004 .clkdm_name
= "l4ls_clkdm",
1005 .flags
= HWMOD_16BIT_REG
| HWMOD_SET_DEFAULT_CLOCKACT
,
1006 .main_clk
= "dpll_per_m2_div4_ck",
1009 .clkctrl_offs
= AM33XX_CM_PER_I2C2_CLKCTRL_OFFSET
,
1010 .modulemode
= MODULEMODE_SWCTRL
,
1013 .dev_attr
= &i2c_dev_attr
,
1018 static struct omap_hwmod_class_sysconfig lcdc_sysc
= {
1021 .sysc_flags
= (SYSC_HAS_SIDLEMODE
| SYSC_HAS_MIDLEMODE
),
1022 .idlemodes
= (SIDLE_FORCE
| SIDLE_NO
| SIDLE_SMART
),
1023 .sysc_fields
= &omap_hwmod_sysc_type2
,
1026 static struct omap_hwmod_class am33xx_lcdc_hwmod_class
= {
1031 static struct omap_hwmod am33xx_lcdc_hwmod
= {
1033 .class = &am33xx_lcdc_hwmod_class
,
1034 .clkdm_name
= "lcdc_clkdm",
1035 .flags
= HWMOD_SWSUP_SIDLE
| HWMOD_SWSUP_MSTANDBY
,
1036 .main_clk
= "lcd_gclk",
1039 .clkctrl_offs
= AM33XX_CM_PER_LCDC_CLKCTRL_OFFSET
,
1040 .modulemode
= MODULEMODE_SWCTRL
,
1047 * mailbox module allowing communication between the on-chip processors using a
1048 * queued mailbox-interrupt mechanism.
1050 static struct omap_hwmod_class_sysconfig am33xx_mailbox_sysc
= {
1052 .sysc_offs
= 0x0010,
1053 .sysc_flags
= (SYSC_HAS_RESET_STATUS
| SYSC_HAS_SIDLEMODE
|
1054 SYSC_HAS_SOFTRESET
),
1055 .idlemodes
= (SIDLE_FORCE
| SIDLE_NO
| SIDLE_SMART
),
1056 .sysc_fields
= &omap_hwmod_sysc_type2
,
1059 static struct omap_hwmod_class am33xx_mailbox_hwmod_class
= {
1061 .sysc
= &am33xx_mailbox_sysc
,
1064 static struct omap_hwmod am33xx_mailbox_hwmod
= {
1066 .class = &am33xx_mailbox_hwmod_class
,
1067 .clkdm_name
= "l4ls_clkdm",
1068 .main_clk
= "l4ls_gclk",
1071 .clkctrl_offs
= AM33XX_CM_PER_MAILBOX0_CLKCTRL_OFFSET
,
1072 .modulemode
= MODULEMODE_SWCTRL
,
1080 static struct omap_hwmod_class_sysconfig am33xx_mcasp_sysc
= {
1083 .sysc_flags
= SYSC_HAS_SIDLEMODE
,
1084 .idlemodes
= (SIDLE_FORCE
| SIDLE_NO
| SIDLE_SMART
),
1085 .sysc_fields
= &omap_hwmod_sysc_type3
,
1088 static struct omap_hwmod_class am33xx_mcasp_hwmod_class
= {
1090 .sysc
= &am33xx_mcasp_sysc
,
1094 static struct omap_hwmod am33xx_mcasp0_hwmod
= {
1096 .class = &am33xx_mcasp_hwmod_class
,
1097 .clkdm_name
= "l3s_clkdm",
1098 .main_clk
= "mcasp0_fck",
1101 .clkctrl_offs
= AM33XX_CM_PER_MCASP0_CLKCTRL_OFFSET
,
1102 .modulemode
= MODULEMODE_SWCTRL
,
1108 static struct omap_hwmod am33xx_mcasp1_hwmod
= {
1110 .class = &am33xx_mcasp_hwmod_class
,
1111 .clkdm_name
= "l3s_clkdm",
1112 .main_clk
= "mcasp1_fck",
1115 .clkctrl_offs
= AM33XX_CM_PER_MCASP1_CLKCTRL_OFFSET
,
1116 .modulemode
= MODULEMODE_SWCTRL
,
1122 static struct omap_hwmod_class_sysconfig am33xx_mmc_sysc
= {
1126 .sysc_flags
= (SYSC_HAS_CLOCKACTIVITY
| SYSC_HAS_SIDLEMODE
|
1127 SYSC_HAS_ENAWAKEUP
| SYSC_HAS_SOFTRESET
|
1128 SYSC_HAS_AUTOIDLE
| SYSS_HAS_RESET_STATUS
),
1129 .idlemodes
= (SIDLE_FORCE
| SIDLE_NO
| SIDLE_SMART
),
1130 .sysc_fields
= &omap_hwmod_sysc_type1
,
1133 static struct omap_hwmod_class am33xx_mmc_hwmod_class
= {
1135 .sysc
= &am33xx_mmc_sysc
,
1139 static struct omap_mmc_dev_attr am33xx_mmc0_dev_attr
= {
1140 .flags
= OMAP_HSMMC_SUPPORTS_DUAL_VOLT
,
1143 static struct omap_hwmod am33xx_mmc0_hwmod
= {
1145 .class = &am33xx_mmc_hwmod_class
,
1146 .clkdm_name
= "l4ls_clkdm",
1147 .main_clk
= "mmc_clk",
1150 .clkctrl_offs
= AM33XX_CM_PER_MMC0_CLKCTRL_OFFSET
,
1151 .modulemode
= MODULEMODE_SWCTRL
,
1154 .dev_attr
= &am33xx_mmc0_dev_attr
,
1158 static struct omap_mmc_dev_attr am33xx_mmc1_dev_attr
= {
1159 .flags
= OMAP_HSMMC_SUPPORTS_DUAL_VOLT
,
1162 static struct omap_hwmod am33xx_mmc1_hwmod
= {
1164 .class = &am33xx_mmc_hwmod_class
,
1165 .clkdm_name
= "l4ls_clkdm",
1166 .main_clk
= "mmc_clk",
1169 .clkctrl_offs
= AM33XX_CM_PER_MMC1_CLKCTRL_OFFSET
,
1170 .modulemode
= MODULEMODE_SWCTRL
,
1173 .dev_attr
= &am33xx_mmc1_dev_attr
,
1177 static struct omap_mmc_dev_attr am33xx_mmc2_dev_attr
= {
1178 .flags
= OMAP_HSMMC_SUPPORTS_DUAL_VOLT
,
1180 static struct omap_hwmod am33xx_mmc2_hwmod
= {
1182 .class = &am33xx_mmc_hwmod_class
,
1183 .clkdm_name
= "l3s_clkdm",
1184 .main_clk
= "mmc_clk",
1187 .clkctrl_offs
= AM33XX_CM_PER_MMC2_CLKCTRL_OFFSET
,
1188 .modulemode
= MODULEMODE_SWCTRL
,
1191 .dev_attr
= &am33xx_mmc2_dev_attr
,
1198 static struct omap_hwmod_class_sysconfig am33xx_rtc_sysc
= {
1200 .sysc_offs
= 0x0078,
1201 .sysc_flags
= SYSC_HAS_SIDLEMODE
,
1202 .idlemodes
= (SIDLE_FORCE
| SIDLE_NO
|
1203 SIDLE_SMART
| SIDLE_SMART_WKUP
),
1204 .sysc_fields
= &omap_hwmod_sysc_type3
,
1207 static struct omap_hwmod_class am33xx_rtc_hwmod_class
= {
1209 .sysc
= &am33xx_rtc_sysc
,
1212 static struct omap_hwmod am33xx_rtc_hwmod
= {
1214 .class = &am33xx_rtc_hwmod_class
,
1215 .clkdm_name
= "l4_rtc_clkdm",
1216 .main_clk
= "clk_32768_ck",
1219 .clkctrl_offs
= AM33XX_CM_RTC_RTC_CLKCTRL_OFFSET
,
1220 .modulemode
= MODULEMODE_SWCTRL
,
1226 static struct omap_hwmod_class_sysconfig am33xx_mcspi_sysc
= {
1228 .sysc_offs
= 0x0110,
1229 .syss_offs
= 0x0114,
1230 .sysc_flags
= (SYSC_HAS_CLOCKACTIVITY
| SYSC_HAS_SIDLEMODE
|
1231 SYSC_HAS_SOFTRESET
| SYSC_HAS_AUTOIDLE
|
1232 SYSS_HAS_RESET_STATUS
),
1233 .idlemodes
= (SIDLE_FORCE
| SIDLE_NO
| SIDLE_SMART
),
1234 .sysc_fields
= &omap_hwmod_sysc_type1
,
1237 static struct omap_hwmod_class am33xx_spi_hwmod_class
= {
1239 .sysc
= &am33xx_mcspi_sysc
,
1240 .rev
= OMAP4_MCSPI_REV
,
1244 static struct omap2_mcspi_dev_attr mcspi_attrib
= {
1245 .num_chipselect
= 2,
1247 static struct omap_hwmod am33xx_spi0_hwmod
= {
1249 .class = &am33xx_spi_hwmod_class
,
1250 .clkdm_name
= "l4ls_clkdm",
1251 .main_clk
= "dpll_per_m2_div4_ck",
1254 .clkctrl_offs
= AM33XX_CM_PER_SPI0_CLKCTRL_OFFSET
,
1255 .modulemode
= MODULEMODE_SWCTRL
,
1258 .dev_attr
= &mcspi_attrib
,
1262 static struct omap_hwmod am33xx_spi1_hwmod
= {
1264 .class = &am33xx_spi_hwmod_class
,
1265 .clkdm_name
= "l4ls_clkdm",
1266 .main_clk
= "dpll_per_m2_div4_ck",
1269 .clkctrl_offs
= AM33XX_CM_PER_SPI1_CLKCTRL_OFFSET
,
1270 .modulemode
= MODULEMODE_SWCTRL
,
1273 .dev_attr
= &mcspi_attrib
,
1278 * spinlock provides hardware assistance for synchronizing the
1279 * processes running on multiple processors
1281 static struct omap_hwmod_class am33xx_spinlock_hwmod_class
= {
1285 static struct omap_hwmod am33xx_spinlock_hwmod
= {
1287 .class = &am33xx_spinlock_hwmod_class
,
1288 .clkdm_name
= "l4ls_clkdm",
1289 .main_clk
= "l4ls_gclk",
1292 .clkctrl_offs
= AM33XX_CM_PER_SPINLOCK_CLKCTRL_OFFSET
,
1293 .modulemode
= MODULEMODE_SWCTRL
,
1298 /* 'timer 2-7' class */
1299 static struct omap_hwmod_class_sysconfig am33xx_timer_sysc
= {
1301 .sysc_offs
= 0x0010,
1302 .syss_offs
= 0x0014,
1303 .sysc_flags
= (SYSC_HAS_SIDLEMODE
| SYSC_HAS_SOFTRESET
),
1304 .idlemodes
= (SIDLE_FORCE
| SIDLE_NO
| SIDLE_SMART
|
1306 .sysc_fields
= &omap_hwmod_sysc_type2
,
1309 static struct omap_hwmod_class am33xx_timer_hwmod_class
= {
1311 .sysc
= &am33xx_timer_sysc
,
1315 static struct omap_hwmod_class_sysconfig am33xx_timer1ms_sysc
= {
1317 .sysc_offs
= 0x0010,
1318 .syss_offs
= 0x0014,
1319 .sysc_flags
= (SYSC_HAS_CLOCKACTIVITY
| SYSC_HAS_SIDLEMODE
|
1320 SYSC_HAS_SOFTRESET
| SYSC_HAS_AUTOIDLE
|
1321 SYSS_HAS_RESET_STATUS
),
1322 .idlemodes
= (SIDLE_FORCE
| SIDLE_NO
| SIDLE_SMART
),
1323 .sysc_fields
= &omap_hwmod_sysc_type1
,
1326 static struct omap_hwmod_class am33xx_timer1ms_hwmod_class
= {
1328 .sysc
= &am33xx_timer1ms_sysc
,
1331 static struct omap_hwmod am33xx_timer1_hwmod
= {
1333 .class = &am33xx_timer1ms_hwmod_class
,
1334 .clkdm_name
= "l4_wkup_clkdm",
1335 .main_clk
= "timer1_fck",
1338 .clkctrl_offs
= AM33XX_CM_WKUP_TIMER1_CLKCTRL_OFFSET
,
1339 .modulemode
= MODULEMODE_SWCTRL
,
1344 static struct omap_hwmod am33xx_timer2_hwmod
= {
1346 .class = &am33xx_timer_hwmod_class
,
1347 .clkdm_name
= "l4ls_clkdm",
1348 .main_clk
= "timer2_fck",
1351 .clkctrl_offs
= AM33XX_CM_PER_TIMER2_CLKCTRL_OFFSET
,
1352 .modulemode
= MODULEMODE_SWCTRL
,
1357 static struct omap_hwmod am33xx_timer3_hwmod
= {
1359 .class = &am33xx_timer_hwmod_class
,
1360 .clkdm_name
= "l4ls_clkdm",
1361 .main_clk
= "timer3_fck",
1364 .clkctrl_offs
= AM33XX_CM_PER_TIMER3_CLKCTRL_OFFSET
,
1365 .modulemode
= MODULEMODE_SWCTRL
,
1370 static struct omap_hwmod am33xx_timer4_hwmod
= {
1372 .class = &am33xx_timer_hwmod_class
,
1373 .clkdm_name
= "l4ls_clkdm",
1374 .main_clk
= "timer4_fck",
1377 .clkctrl_offs
= AM33XX_CM_PER_TIMER4_CLKCTRL_OFFSET
,
1378 .modulemode
= MODULEMODE_SWCTRL
,
1383 static struct omap_hwmod am33xx_timer5_hwmod
= {
1385 .class = &am33xx_timer_hwmod_class
,
1386 .clkdm_name
= "l4ls_clkdm",
1387 .main_clk
= "timer5_fck",
1390 .clkctrl_offs
= AM33XX_CM_PER_TIMER5_CLKCTRL_OFFSET
,
1391 .modulemode
= MODULEMODE_SWCTRL
,
1396 static struct omap_hwmod am33xx_timer6_hwmod
= {
1398 .class = &am33xx_timer_hwmod_class
,
1399 .clkdm_name
= "l4ls_clkdm",
1400 .main_clk
= "timer6_fck",
1403 .clkctrl_offs
= AM33XX_CM_PER_TIMER6_CLKCTRL_OFFSET
,
1404 .modulemode
= MODULEMODE_SWCTRL
,
1409 static struct omap_hwmod am33xx_timer7_hwmod
= {
1411 .class = &am33xx_timer_hwmod_class
,
1412 .clkdm_name
= "l4ls_clkdm",
1413 .main_clk
= "timer7_fck",
1416 .clkctrl_offs
= AM33XX_CM_PER_TIMER7_CLKCTRL_OFFSET
,
1417 .modulemode
= MODULEMODE_SWCTRL
,
1423 static struct omap_hwmod_class am33xx_tpcc_hwmod_class
= {
1427 static struct omap_hwmod am33xx_tpcc_hwmod
= {
1429 .class = &am33xx_tpcc_hwmod_class
,
1430 .clkdm_name
= "l3_clkdm",
1431 .main_clk
= "l3_gclk",
1434 .clkctrl_offs
= AM33XX_CM_PER_TPCC_CLKCTRL_OFFSET
,
1435 .modulemode
= MODULEMODE_SWCTRL
,
1440 static struct omap_hwmod_class_sysconfig am33xx_tptc_sysc
= {
1443 .sysc_flags
= (SYSC_HAS_SIDLEMODE
| SYSC_HAS_SOFTRESET
|
1444 SYSC_HAS_MIDLEMODE
),
1445 .idlemodes
= (SIDLE_FORCE
| SIDLE_SMART
| MSTANDBY_FORCE
),
1446 .sysc_fields
= &omap_hwmod_sysc_type2
,
1450 static struct omap_hwmod_class am33xx_tptc_hwmod_class
= {
1452 .sysc
= &am33xx_tptc_sysc
,
1456 static struct omap_hwmod am33xx_tptc0_hwmod
= {
1458 .class = &am33xx_tptc_hwmod_class
,
1459 .clkdm_name
= "l3_clkdm",
1460 .flags
= HWMOD_SWSUP_SIDLE
| HWMOD_SWSUP_MSTANDBY
,
1461 .main_clk
= "l3_gclk",
1464 .clkctrl_offs
= AM33XX_CM_PER_TPTC0_CLKCTRL_OFFSET
,
1465 .modulemode
= MODULEMODE_SWCTRL
,
1471 static struct omap_hwmod am33xx_tptc1_hwmod
= {
1473 .class = &am33xx_tptc_hwmod_class
,
1474 .clkdm_name
= "l3_clkdm",
1475 .flags
= (HWMOD_SWSUP_SIDLE
| HWMOD_SWSUP_MSTANDBY
),
1476 .main_clk
= "l3_gclk",
1479 .clkctrl_offs
= AM33XX_CM_PER_TPTC1_CLKCTRL_OFFSET
,
1480 .modulemode
= MODULEMODE_SWCTRL
,
1486 static struct omap_hwmod am33xx_tptc2_hwmod
= {
1488 .class = &am33xx_tptc_hwmod_class
,
1489 .clkdm_name
= "l3_clkdm",
1490 .flags
= (HWMOD_SWSUP_SIDLE
| HWMOD_SWSUP_MSTANDBY
),
1491 .main_clk
= "l3_gclk",
1494 .clkctrl_offs
= AM33XX_CM_PER_TPTC2_CLKCTRL_OFFSET
,
1495 .modulemode
= MODULEMODE_SWCTRL
,
1501 static struct omap_hwmod_class_sysconfig uart_sysc
= {
1505 .sysc_flags
= (SYSC_HAS_SIDLEMODE
| SYSC_HAS_ENAWAKEUP
|
1506 SYSC_HAS_SOFTRESET
| SYSC_HAS_AUTOIDLE
),
1507 .idlemodes
= (SIDLE_FORCE
| SIDLE_NO
| SIDLE_SMART
|
1509 .sysc_fields
= &omap_hwmod_sysc_type1
,
1512 static struct omap_hwmod_class uart_class
= {
1518 static struct omap_hwmod am33xx_uart1_hwmod
= {
1520 .class = &uart_class
,
1521 .clkdm_name
= "l4_wkup_clkdm",
1522 .flags
= DEBUG_AM33XXUART1_FLAGS
| HWMOD_SWSUP_SIDLE_ACT
,
1523 .main_clk
= "dpll_per_m2_div4_wkupdm_ck",
1526 .clkctrl_offs
= AM33XX_CM_WKUP_UART0_CLKCTRL_OFFSET
,
1527 .modulemode
= MODULEMODE_SWCTRL
,
1532 static struct omap_hwmod am33xx_uart2_hwmod
= {
1534 .class = &uart_class
,
1535 .clkdm_name
= "l4ls_clkdm",
1536 .flags
= HWMOD_SWSUP_SIDLE_ACT
,
1537 .main_clk
= "dpll_per_m2_div4_ck",
1540 .clkctrl_offs
= AM33XX_CM_PER_UART1_CLKCTRL_OFFSET
,
1541 .modulemode
= MODULEMODE_SWCTRL
,
1547 static struct omap_hwmod am33xx_uart3_hwmod
= {
1549 .class = &uart_class
,
1550 .clkdm_name
= "l4ls_clkdm",
1551 .flags
= HWMOD_SWSUP_SIDLE_ACT
,
1552 .main_clk
= "dpll_per_m2_div4_ck",
1555 .clkctrl_offs
= AM33XX_CM_PER_UART2_CLKCTRL_OFFSET
,
1556 .modulemode
= MODULEMODE_SWCTRL
,
1561 static struct omap_hwmod am33xx_uart4_hwmod
= {
1563 .class = &uart_class
,
1564 .clkdm_name
= "l4ls_clkdm",
1565 .flags
= HWMOD_SWSUP_SIDLE_ACT
,
1566 .main_clk
= "dpll_per_m2_div4_ck",
1569 .clkctrl_offs
= AM33XX_CM_PER_UART3_CLKCTRL_OFFSET
,
1570 .modulemode
= MODULEMODE_SWCTRL
,
1575 static struct omap_hwmod am33xx_uart5_hwmod
= {
1577 .class = &uart_class
,
1578 .clkdm_name
= "l4ls_clkdm",
1579 .flags
= HWMOD_SWSUP_SIDLE_ACT
,
1580 .main_clk
= "dpll_per_m2_div4_ck",
1583 .clkctrl_offs
= AM33XX_CM_PER_UART4_CLKCTRL_OFFSET
,
1584 .modulemode
= MODULEMODE_SWCTRL
,
1589 static struct omap_hwmod am33xx_uart6_hwmod
= {
1591 .class = &uart_class
,
1592 .clkdm_name
= "l4ls_clkdm",
1593 .flags
= HWMOD_SWSUP_SIDLE_ACT
,
1594 .main_clk
= "dpll_per_m2_div4_ck",
1597 .clkctrl_offs
= AM33XX_CM_PER_UART5_CLKCTRL_OFFSET
,
1598 .modulemode
= MODULEMODE_SWCTRL
,
1603 /* 'wd_timer' class */
1604 static struct omap_hwmod_class_sysconfig wdt_sysc
= {
1608 .sysc_flags
= (SYSC_HAS_EMUFREE
| SYSC_HAS_SIDLEMODE
|
1609 SYSC_HAS_SOFTRESET
| SYSS_HAS_RESET_STATUS
),
1610 .idlemodes
= (SIDLE_FORCE
| SIDLE_NO
| SIDLE_SMART
|
1612 .sysc_fields
= &omap_hwmod_sysc_type1
,
1615 static struct omap_hwmod_class am33xx_wd_timer_hwmod_class
= {
1618 .pre_shutdown
= &omap2_wd_timer_disable
,
1622 * XXX: device.c file uses hardcoded name for watchdog timer
1623 * driver "wd_timer2, so we are also using same name as of now...
1625 static struct omap_hwmod am33xx_wd_timer1_hwmod
= {
1626 .name
= "wd_timer2",
1627 .class = &am33xx_wd_timer_hwmod_class
,
1628 .clkdm_name
= "l4_wkup_clkdm",
1629 .flags
= HWMOD_SWSUP_SIDLE
,
1630 .main_clk
= "wdt1_fck",
1633 .clkctrl_offs
= AM33XX_CM_WKUP_WDT1_CLKCTRL_OFFSET
,
1634 .modulemode
= MODULEMODE_SWCTRL
,
1641 * high-speed on-the-go universal serial bus (usb_otg) controller
1643 static struct omap_hwmod_class_sysconfig am33xx_usbhsotg_sysc
= {
1646 .sysc_flags
= (SYSC_HAS_SIDLEMODE
| SYSC_HAS_MIDLEMODE
),
1647 .idlemodes
= (SIDLE_FORCE
| SIDLE_NO
| SIDLE_SMART
|
1648 MSTANDBY_FORCE
| MSTANDBY_NO
| MSTANDBY_SMART
),
1649 .sysc_fields
= &omap_hwmod_sysc_type2
,
1652 static struct omap_hwmod_class am33xx_usbotg_class
= {
1654 .sysc
= &am33xx_usbhsotg_sysc
,
1657 static struct omap_hwmod am33xx_usbss_hwmod
= {
1658 .name
= "usb_otg_hs",
1659 .class = &am33xx_usbotg_class
,
1660 .clkdm_name
= "l3s_clkdm",
1661 .flags
= HWMOD_SWSUP_SIDLE
| HWMOD_SWSUP_MSTANDBY
,
1662 .main_clk
= "usbotg_fck",
1665 .clkctrl_offs
= AM33XX_CM_PER_USB0_CLKCTRL_OFFSET
,
1666 .modulemode
= MODULEMODE_SWCTRL
,
1676 static struct omap_hwmod_addr_space am33xx_emif_addrs
[] = {
1678 .pa_start
= 0x4c000000,
1679 .pa_end
= 0x4c000fff,
1680 .flags
= ADDR_TYPE_RT
1684 /* l3 main -> emif */
1685 static struct omap_hwmod_ocp_if am33xx_l3_main__emif
= {
1686 .master
= &am33xx_l3_main_hwmod
,
1687 .slave
= &am33xx_emif_hwmod
,
1688 .clk
= "dpll_core_m4_ck",
1689 .addr
= am33xx_emif_addrs
,
1690 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
1693 /* mpu -> l3 main */
1694 static struct omap_hwmod_ocp_if am33xx_mpu__l3_main
= {
1695 .master
= &am33xx_mpu_hwmod
,
1696 .slave
= &am33xx_l3_main_hwmod
,
1697 .clk
= "dpll_mpu_m2_ck",
1698 .user
= OCP_USER_MPU
,
1701 /* l3 main -> l4 hs */
1702 static struct omap_hwmod_ocp_if am33xx_l3_main__l4_hs
= {
1703 .master
= &am33xx_l3_main_hwmod
,
1704 .slave
= &am33xx_l4_hs_hwmod
,
1706 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
1709 /* l3 main -> l3 s */
1710 static struct omap_hwmod_ocp_if am33xx_l3_main__l3_s
= {
1711 .master
= &am33xx_l3_main_hwmod
,
1712 .slave
= &am33xx_l3_s_hwmod
,
1714 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
1717 /* l3 s -> l4 per/ls */
1718 static struct omap_hwmod_ocp_if am33xx_l3_s__l4_ls
= {
1719 .master
= &am33xx_l3_s_hwmod
,
1720 .slave
= &am33xx_l4_ls_hwmod
,
1722 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
1725 /* l3 s -> l4 wkup */
1726 static struct omap_hwmod_ocp_if am33xx_l3_s__l4_wkup
= {
1727 .master
= &am33xx_l3_s_hwmod
,
1728 .slave
= &am33xx_l4_wkup_hwmod
,
1730 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
1733 /* l3 main -> l3 instr */
1734 static struct omap_hwmod_ocp_if am33xx_l3_main__l3_instr
= {
1735 .master
= &am33xx_l3_main_hwmod
,
1736 .slave
= &am33xx_l3_instr_hwmod
,
1738 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
1742 static struct omap_hwmod_ocp_if am33xx_mpu__prcm
= {
1743 .master
= &am33xx_mpu_hwmod
,
1744 .slave
= &am33xx_prcm_hwmod
,
1745 .clk
= "dpll_mpu_m2_ck",
1746 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
1749 /* l3 s -> l3 main*/
1750 static struct omap_hwmod_ocp_if am33xx_l3_s__l3_main
= {
1751 .master
= &am33xx_l3_s_hwmod
,
1752 .slave
= &am33xx_l3_main_hwmod
,
1754 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
1757 /* pru-icss -> l3 main */
1758 static struct omap_hwmod_ocp_if am33xx_pruss__l3_main
= {
1759 .master
= &am33xx_pruss_hwmod
,
1760 .slave
= &am33xx_l3_main_hwmod
,
1762 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
1765 /* wkup m3 -> l4 wkup */
1766 static struct omap_hwmod_ocp_if am33xx_wkup_m3__l4_wkup
= {
1767 .master
= &am33xx_wkup_m3_hwmod
,
1768 .slave
= &am33xx_l4_wkup_hwmod
,
1769 .clk
= "dpll_core_m4_div2_ck",
1770 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
1773 /* gfx -> l3 main */
1774 static struct omap_hwmod_ocp_if am33xx_gfx__l3_main
= {
1775 .master
= &am33xx_gfx_hwmod
,
1776 .slave
= &am33xx_l3_main_hwmod
,
1777 .clk
= "dpll_core_m4_ck",
1778 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
1781 /* l4 wkup -> wkup m3 */
1782 static struct omap_hwmod_ocp_if am33xx_l4_wkup__wkup_m3
= {
1783 .master
= &am33xx_l4_wkup_hwmod
,
1784 .slave
= &am33xx_wkup_m3_hwmod
,
1785 .clk
= "dpll_core_m4_div2_ck",
1786 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
1789 /* l4 hs -> pru-icss */
1790 static struct omap_hwmod_ocp_if am33xx_l4_hs__pruss
= {
1791 .master
= &am33xx_l4_hs_hwmod
,
1792 .slave
= &am33xx_pruss_hwmod
,
1793 .clk
= "dpll_core_m4_ck",
1794 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
1797 /* l3 main -> gfx */
1798 static struct omap_hwmod_ocp_if am33xx_l3_main__gfx
= {
1799 .master
= &am33xx_l3_main_hwmod
,
1800 .slave
= &am33xx_gfx_hwmod
,
1801 .clk
= "dpll_core_m4_ck",
1802 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
1805 /* l3_main -> debugss */
1806 static struct omap_hwmod_addr_space am33xx_debugss_addrs
[] = {
1808 .pa_start
= 0x4b000000,
1809 .pa_end
= 0x4b000000 + SZ_16M
- 1,
1810 .flags
= ADDR_TYPE_RT
1815 static struct omap_hwmod_ocp_if am33xx_l3_main__debugss
= {
1816 .master
= &am33xx_l3_main_hwmod
,
1817 .slave
= &am33xx_debugss_hwmod
,
1818 .clk
= "dpll_core_m4_ck",
1819 .addr
= am33xx_debugss_addrs
,
1820 .user
= OCP_USER_MPU
,
1823 /* l4 wkup -> smartreflex0 */
1824 static struct omap_hwmod_ocp_if am33xx_l4_wkup__smartreflex0
= {
1825 .master
= &am33xx_l4_wkup_hwmod
,
1826 .slave
= &am33xx_smartreflex0_hwmod
,
1827 .clk
= "dpll_core_m4_div2_ck",
1828 .user
= OCP_USER_MPU
,
1831 /* l4 wkup -> smartreflex1 */
1832 static struct omap_hwmod_ocp_if am33xx_l4_wkup__smartreflex1
= {
1833 .master
= &am33xx_l4_wkup_hwmod
,
1834 .slave
= &am33xx_smartreflex1_hwmod
,
1835 .clk
= "dpll_core_m4_div2_ck",
1836 .user
= OCP_USER_MPU
,
1839 /* l4 wkup -> control */
1840 static struct omap_hwmod_ocp_if am33xx_l4_wkup__control
= {
1841 .master
= &am33xx_l4_wkup_hwmod
,
1842 .slave
= &am33xx_control_hwmod
,
1843 .clk
= "dpll_core_m4_div2_ck",
1844 .user
= OCP_USER_MPU
,
1847 /* l4 wkup -> rtc */
1848 static struct omap_hwmod_ocp_if am33xx_l4_wkup__rtc
= {
1849 .master
= &am33xx_l4_wkup_hwmod
,
1850 .slave
= &am33xx_rtc_hwmod
,
1851 .clk
= "clkdiv32k_ick",
1852 .user
= OCP_USER_MPU
,
1855 /* l4 per/ls -> DCAN0 */
1856 static struct omap_hwmod_ocp_if am33xx_l4_per__dcan0
= {
1857 .master
= &am33xx_l4_ls_hwmod
,
1858 .slave
= &am33xx_dcan0_hwmod
,
1860 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
1863 /* l4 per/ls -> DCAN1 */
1864 static struct omap_hwmod_ocp_if am33xx_l4_per__dcan1
= {
1865 .master
= &am33xx_l4_ls_hwmod
,
1866 .slave
= &am33xx_dcan1_hwmod
,
1868 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
1871 /* l4 per/ls -> GPIO2 */
1872 static struct omap_hwmod_ocp_if am33xx_l4_per__gpio1
= {
1873 .master
= &am33xx_l4_ls_hwmod
,
1874 .slave
= &am33xx_gpio1_hwmod
,
1876 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
1879 /* l4 per/ls -> gpio3 */
1880 static struct omap_hwmod_ocp_if am33xx_l4_per__gpio2
= {
1881 .master
= &am33xx_l4_ls_hwmod
,
1882 .slave
= &am33xx_gpio2_hwmod
,
1884 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
1887 /* l4 per/ls -> gpio4 */
1888 static struct omap_hwmod_ocp_if am33xx_l4_per__gpio3
= {
1889 .master
= &am33xx_l4_ls_hwmod
,
1890 .slave
= &am33xx_gpio3_hwmod
,
1892 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
1895 /* L4 WKUP -> I2C1 */
1896 static struct omap_hwmod_ocp_if am33xx_l4_wkup__i2c1
= {
1897 .master
= &am33xx_l4_wkup_hwmod
,
1898 .slave
= &am33xx_i2c1_hwmod
,
1899 .clk
= "dpll_core_m4_div2_ck",
1900 .user
= OCP_USER_MPU
,
1903 /* L4 WKUP -> GPIO1 */
1904 static struct omap_hwmod_ocp_if am33xx_l4_wkup__gpio0
= {
1905 .master
= &am33xx_l4_wkup_hwmod
,
1906 .slave
= &am33xx_gpio0_hwmod
,
1907 .clk
= "dpll_core_m4_div2_ck",
1908 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
1911 /* L4 WKUP -> ADC_TSC */
1912 static struct omap_hwmod_addr_space am33xx_adc_tsc_addrs
[] = {
1914 .pa_start
= 0x44E0D000,
1915 .pa_end
= 0x44E0D000 + SZ_8K
- 1,
1916 .flags
= ADDR_TYPE_RT
1921 static struct omap_hwmod_ocp_if am33xx_l4_wkup__adc_tsc
= {
1922 .master
= &am33xx_l4_wkup_hwmod
,
1923 .slave
= &am33xx_adc_tsc_hwmod
,
1924 .clk
= "dpll_core_m4_div2_ck",
1925 .addr
= am33xx_adc_tsc_addrs
,
1926 .user
= OCP_USER_MPU
,
1929 static struct omap_hwmod_ocp_if am33xx_l4_hs__cpgmac0
= {
1930 .master
= &am33xx_l4_hs_hwmod
,
1931 .slave
= &am33xx_cpgmac0_hwmod
,
1932 .clk
= "cpsw_125mhz_gclk",
1933 .user
= OCP_USER_MPU
,
1936 static struct omap_hwmod_ocp_if am33xx_cpgmac0__mdio
= {
1937 .master
= &am33xx_cpgmac0_hwmod
,
1938 .slave
= &am33xx_mdio_hwmod
,
1939 .user
= OCP_USER_MPU
,
1942 static struct omap_hwmod_addr_space am33xx_elm_addr_space
[] = {
1944 .pa_start
= 0x48080000,
1945 .pa_end
= 0x48080000 + SZ_8K
- 1,
1946 .flags
= ADDR_TYPE_RT
1951 static struct omap_hwmod_ocp_if am33xx_l4_ls__elm
= {
1952 .master
= &am33xx_l4_ls_hwmod
,
1953 .slave
= &am33xx_elm_hwmod
,
1955 .addr
= am33xx_elm_addr_space
,
1956 .user
= OCP_USER_MPU
,
1959 static struct omap_hwmod_addr_space am33xx_epwmss0_addr_space
[] = {
1961 .pa_start
= 0x48300000,
1962 .pa_end
= 0x48300000 + SZ_16
- 1,
1963 .flags
= ADDR_TYPE_RT
1968 static struct omap_hwmod_ocp_if am33xx_l4_ls__epwmss0
= {
1969 .master
= &am33xx_l4_ls_hwmod
,
1970 .slave
= &am33xx_epwmss0_hwmod
,
1972 .addr
= am33xx_epwmss0_addr_space
,
1973 .user
= OCP_USER_MPU
,
1976 static struct omap_hwmod_ocp_if am33xx_epwmss0__ecap0
= {
1977 .master
= &am33xx_epwmss0_hwmod
,
1978 .slave
= &am33xx_ecap0_hwmod
,
1980 .user
= OCP_USER_MPU
,
1983 static struct omap_hwmod_ocp_if am33xx_epwmss0__eqep0
= {
1984 .master
= &am33xx_epwmss0_hwmod
,
1985 .slave
= &am33xx_eqep0_hwmod
,
1987 .user
= OCP_USER_MPU
,
1990 static struct omap_hwmod_ocp_if am33xx_epwmss0__ehrpwm0
= {
1991 .master
= &am33xx_epwmss0_hwmod
,
1992 .slave
= &am33xx_ehrpwm0_hwmod
,
1994 .user
= OCP_USER_MPU
,
1998 static struct omap_hwmod_addr_space am33xx_epwmss1_addr_space
[] = {
2000 .pa_start
= 0x48302000,
2001 .pa_end
= 0x48302000 + SZ_16
- 1,
2002 .flags
= ADDR_TYPE_RT
2007 static struct omap_hwmod_ocp_if am33xx_l4_ls__epwmss1
= {
2008 .master
= &am33xx_l4_ls_hwmod
,
2009 .slave
= &am33xx_epwmss1_hwmod
,
2011 .addr
= am33xx_epwmss1_addr_space
,
2012 .user
= OCP_USER_MPU
,
2015 static struct omap_hwmod_ocp_if am33xx_epwmss1__ecap1
= {
2016 .master
= &am33xx_epwmss1_hwmod
,
2017 .slave
= &am33xx_ecap1_hwmod
,
2019 .user
= OCP_USER_MPU
,
2022 static struct omap_hwmod_ocp_if am33xx_epwmss1__eqep1
= {
2023 .master
= &am33xx_epwmss1_hwmod
,
2024 .slave
= &am33xx_eqep1_hwmod
,
2026 .user
= OCP_USER_MPU
,
2029 static struct omap_hwmod_ocp_if am33xx_epwmss1__ehrpwm1
= {
2030 .master
= &am33xx_epwmss1_hwmod
,
2031 .slave
= &am33xx_ehrpwm1_hwmod
,
2033 .user
= OCP_USER_MPU
,
2036 static struct omap_hwmod_addr_space am33xx_epwmss2_addr_space
[] = {
2038 .pa_start
= 0x48304000,
2039 .pa_end
= 0x48304000 + SZ_16
- 1,
2040 .flags
= ADDR_TYPE_RT
2045 static struct omap_hwmod_ocp_if am33xx_l4_ls__epwmss2
= {
2046 .master
= &am33xx_l4_ls_hwmod
,
2047 .slave
= &am33xx_epwmss2_hwmod
,
2049 .addr
= am33xx_epwmss2_addr_space
,
2050 .user
= OCP_USER_MPU
,
2053 static struct omap_hwmod_ocp_if am33xx_epwmss2__ecap2
= {
2054 .master
= &am33xx_epwmss2_hwmod
,
2055 .slave
= &am33xx_ecap2_hwmod
,
2057 .user
= OCP_USER_MPU
,
2060 static struct omap_hwmod_ocp_if am33xx_epwmss2__eqep2
= {
2061 .master
= &am33xx_epwmss2_hwmod
,
2062 .slave
= &am33xx_eqep2_hwmod
,
2064 .user
= OCP_USER_MPU
,
2067 static struct omap_hwmod_ocp_if am33xx_epwmss2__ehrpwm2
= {
2068 .master
= &am33xx_epwmss2_hwmod
,
2069 .slave
= &am33xx_ehrpwm2_hwmod
,
2071 .user
= OCP_USER_MPU
,
2074 /* l3s cfg -> gpmc */
2075 static struct omap_hwmod_addr_space am33xx_gpmc_addr_space
[] = {
2077 .pa_start
= 0x50000000,
2078 .pa_end
= 0x50000000 + SZ_8K
- 1,
2079 .flags
= ADDR_TYPE_RT
,
2084 static struct omap_hwmod_ocp_if am33xx_l3_s__gpmc
= {
2085 .master
= &am33xx_l3_s_hwmod
,
2086 .slave
= &am33xx_gpmc_hwmod
,
2088 .addr
= am33xx_gpmc_addr_space
,
2089 .user
= OCP_USER_MPU
,
2093 static struct omap_hwmod_ocp_if am33xx_l4_per__i2c2
= {
2094 .master
= &am33xx_l4_ls_hwmod
,
2095 .slave
= &am33xx_i2c2_hwmod
,
2097 .user
= OCP_USER_MPU
,
2100 static struct omap_hwmod_ocp_if am33xx_l4_per__i2c3
= {
2101 .master
= &am33xx_l4_ls_hwmod
,
2102 .slave
= &am33xx_i2c3_hwmod
,
2104 .user
= OCP_USER_MPU
,
2107 static struct omap_hwmod_addr_space am33xx_lcdc_addr_space
[] = {
2109 .pa_start
= 0x4830E000,
2110 .pa_end
= 0x4830E000 + SZ_8K
- 1,
2111 .flags
= ADDR_TYPE_RT
,
2116 static struct omap_hwmod_ocp_if am33xx_l3_main__lcdc
= {
2117 .master
= &am33xx_l3_main_hwmod
,
2118 .slave
= &am33xx_lcdc_hwmod
,
2119 .clk
= "dpll_core_m4_ck",
2120 .addr
= am33xx_lcdc_addr_space
,
2121 .user
= OCP_USER_MPU
,
2124 static struct omap_hwmod_addr_space am33xx_mailbox_addrs
[] = {
2126 .pa_start
= 0x480C8000,
2127 .pa_end
= 0x480C8000 + (SZ_4K
- 1),
2128 .flags
= ADDR_TYPE_RT
2133 /* l4 ls -> mailbox */
2134 static struct omap_hwmod_ocp_if am33xx_l4_per__mailbox
= {
2135 .master
= &am33xx_l4_ls_hwmod
,
2136 .slave
= &am33xx_mailbox_hwmod
,
2138 .addr
= am33xx_mailbox_addrs
,
2139 .user
= OCP_USER_MPU
,
2142 /* l4 ls -> spinlock */
2143 static struct omap_hwmod_ocp_if am33xx_l4_ls__spinlock
= {
2144 .master
= &am33xx_l4_ls_hwmod
,
2145 .slave
= &am33xx_spinlock_hwmod
,
2147 .user
= OCP_USER_MPU
,
2150 /* l4 ls -> mcasp0 */
2151 static struct omap_hwmod_addr_space am33xx_mcasp0_addr_space
[] = {
2153 .pa_start
= 0x48038000,
2154 .pa_end
= 0x48038000 + SZ_8K
- 1,
2155 .flags
= ADDR_TYPE_RT
2160 static struct omap_hwmod_ocp_if am33xx_l4_ls__mcasp0
= {
2161 .master
= &am33xx_l4_ls_hwmod
,
2162 .slave
= &am33xx_mcasp0_hwmod
,
2164 .addr
= am33xx_mcasp0_addr_space
,
2165 .user
= OCP_USER_MPU
,
2168 /* l4 ls -> mcasp1 */
2169 static struct omap_hwmod_addr_space am33xx_mcasp1_addr_space
[] = {
2171 .pa_start
= 0x4803C000,
2172 .pa_end
= 0x4803C000 + SZ_8K
- 1,
2173 .flags
= ADDR_TYPE_RT
2178 static struct omap_hwmod_ocp_if am33xx_l4_ls__mcasp1
= {
2179 .master
= &am33xx_l4_ls_hwmod
,
2180 .slave
= &am33xx_mcasp1_hwmod
,
2182 .addr
= am33xx_mcasp1_addr_space
,
2183 .user
= OCP_USER_MPU
,
2187 static struct omap_hwmod_addr_space am33xx_mmc0_addr_space
[] = {
2189 .pa_start
= 0x48060100,
2190 .pa_end
= 0x48060100 + SZ_4K
- 1,
2191 .flags
= ADDR_TYPE_RT
,
2196 static struct omap_hwmod_ocp_if am33xx_l4_ls__mmc0
= {
2197 .master
= &am33xx_l4_ls_hwmod
,
2198 .slave
= &am33xx_mmc0_hwmod
,
2200 .addr
= am33xx_mmc0_addr_space
,
2201 .user
= OCP_USER_MPU
,
2205 static struct omap_hwmod_addr_space am33xx_mmc1_addr_space
[] = {
2207 .pa_start
= 0x481d8100,
2208 .pa_end
= 0x481d8100 + SZ_4K
- 1,
2209 .flags
= ADDR_TYPE_RT
,
2214 static struct omap_hwmod_ocp_if am33xx_l4_ls__mmc1
= {
2215 .master
= &am33xx_l4_ls_hwmod
,
2216 .slave
= &am33xx_mmc1_hwmod
,
2218 .addr
= am33xx_mmc1_addr_space
,
2219 .user
= OCP_USER_MPU
,
2223 static struct omap_hwmod_addr_space am33xx_mmc2_addr_space
[] = {
2225 .pa_start
= 0x47810100,
2226 .pa_end
= 0x47810100 + SZ_64K
- 1,
2227 .flags
= ADDR_TYPE_RT
,
2232 static struct omap_hwmod_ocp_if am33xx_l3_s__mmc2
= {
2233 .master
= &am33xx_l3_s_hwmod
,
2234 .slave
= &am33xx_mmc2_hwmod
,
2236 .addr
= am33xx_mmc2_addr_space
,
2237 .user
= OCP_USER_MPU
,
2240 /* l4 ls -> mcspi0 */
2241 static struct omap_hwmod_ocp_if am33xx_l4_ls__mcspi0
= {
2242 .master
= &am33xx_l4_ls_hwmod
,
2243 .slave
= &am33xx_spi0_hwmod
,
2245 .user
= OCP_USER_MPU
,
2248 /* l4 ls -> mcspi1 */
2249 static struct omap_hwmod_ocp_if am33xx_l4_ls__mcspi1
= {
2250 .master
= &am33xx_l4_ls_hwmod
,
2251 .slave
= &am33xx_spi1_hwmod
,
2253 .user
= OCP_USER_MPU
,
2256 /* l4 wkup -> timer1 */
2257 static struct omap_hwmod_ocp_if am33xx_l4_wkup__timer1
= {
2258 .master
= &am33xx_l4_wkup_hwmod
,
2259 .slave
= &am33xx_timer1_hwmod
,
2260 .clk
= "dpll_core_m4_div2_ck",
2261 .user
= OCP_USER_MPU
,
2264 /* l4 per -> timer2 */
2265 static struct omap_hwmod_ocp_if am33xx_l4_ls__timer2
= {
2266 .master
= &am33xx_l4_ls_hwmod
,
2267 .slave
= &am33xx_timer2_hwmod
,
2269 .user
= OCP_USER_MPU
,
2272 /* l4 per -> timer3 */
2273 static struct omap_hwmod_ocp_if am33xx_l4_ls__timer3
= {
2274 .master
= &am33xx_l4_ls_hwmod
,
2275 .slave
= &am33xx_timer3_hwmod
,
2277 .user
= OCP_USER_MPU
,
2280 /* l4 per -> timer4 */
2281 static struct omap_hwmod_ocp_if am33xx_l4_ls__timer4
= {
2282 .master
= &am33xx_l4_ls_hwmod
,
2283 .slave
= &am33xx_timer4_hwmod
,
2285 .user
= OCP_USER_MPU
,
2288 /* l4 per -> timer5 */
2289 static struct omap_hwmod_ocp_if am33xx_l4_ls__timer5
= {
2290 .master
= &am33xx_l4_ls_hwmod
,
2291 .slave
= &am33xx_timer5_hwmod
,
2293 .user
= OCP_USER_MPU
,
2296 /* l4 per -> timer6 */
2297 static struct omap_hwmod_ocp_if am33xx_l4_ls__timer6
= {
2298 .master
= &am33xx_l4_ls_hwmod
,
2299 .slave
= &am33xx_timer6_hwmod
,
2301 .user
= OCP_USER_MPU
,
2304 /* l4 per -> timer7 */
2305 static struct omap_hwmod_ocp_if am33xx_l4_ls__timer7
= {
2306 .master
= &am33xx_l4_ls_hwmod
,
2307 .slave
= &am33xx_timer7_hwmod
,
2309 .user
= OCP_USER_MPU
,
2312 /* l3 main -> tpcc */
2313 static struct omap_hwmod_ocp_if am33xx_l3_main__tpcc
= {
2314 .master
= &am33xx_l3_main_hwmod
,
2315 .slave
= &am33xx_tpcc_hwmod
,
2317 .user
= OCP_USER_MPU
,
2320 /* l3 main -> tpcc0 */
2321 static struct omap_hwmod_addr_space am33xx_tptc0_addr_space
[] = {
2323 .pa_start
= 0x49800000,
2324 .pa_end
= 0x49800000 + SZ_8K
- 1,
2325 .flags
= ADDR_TYPE_RT
,
2330 static struct omap_hwmod_ocp_if am33xx_l3_main__tptc0
= {
2331 .master
= &am33xx_l3_main_hwmod
,
2332 .slave
= &am33xx_tptc0_hwmod
,
2334 .addr
= am33xx_tptc0_addr_space
,
2335 .user
= OCP_USER_MPU
,
2338 /* l3 main -> tpcc1 */
2339 static struct omap_hwmod_addr_space am33xx_tptc1_addr_space
[] = {
2341 .pa_start
= 0x49900000,
2342 .pa_end
= 0x49900000 + SZ_8K
- 1,
2343 .flags
= ADDR_TYPE_RT
,
2348 static struct omap_hwmod_ocp_if am33xx_l3_main__tptc1
= {
2349 .master
= &am33xx_l3_main_hwmod
,
2350 .slave
= &am33xx_tptc1_hwmod
,
2352 .addr
= am33xx_tptc1_addr_space
,
2353 .user
= OCP_USER_MPU
,
2356 /* l3 main -> tpcc2 */
2357 static struct omap_hwmod_addr_space am33xx_tptc2_addr_space
[] = {
2359 .pa_start
= 0x49a00000,
2360 .pa_end
= 0x49a00000 + SZ_8K
- 1,
2361 .flags
= ADDR_TYPE_RT
,
2366 static struct omap_hwmod_ocp_if am33xx_l3_main__tptc2
= {
2367 .master
= &am33xx_l3_main_hwmod
,
2368 .slave
= &am33xx_tptc2_hwmod
,
2370 .addr
= am33xx_tptc2_addr_space
,
2371 .user
= OCP_USER_MPU
,
2374 /* l4 wkup -> uart1 */
2375 static struct omap_hwmod_ocp_if am33xx_l4_wkup__uart1
= {
2376 .master
= &am33xx_l4_wkup_hwmod
,
2377 .slave
= &am33xx_uart1_hwmod
,
2378 .clk
= "dpll_core_m4_div2_ck",
2379 .user
= OCP_USER_MPU
,
2382 /* l4 ls -> uart2 */
2383 static struct omap_hwmod_ocp_if am33xx_l4_ls__uart2
= {
2384 .master
= &am33xx_l4_ls_hwmod
,
2385 .slave
= &am33xx_uart2_hwmod
,
2387 .user
= OCP_USER_MPU
,
2390 /* l4 ls -> uart3 */
2391 static struct omap_hwmod_ocp_if am33xx_l4_ls__uart3
= {
2392 .master
= &am33xx_l4_ls_hwmod
,
2393 .slave
= &am33xx_uart3_hwmod
,
2395 .user
= OCP_USER_MPU
,
2398 /* l4 ls -> uart4 */
2399 static struct omap_hwmod_ocp_if am33xx_l4_ls__uart4
= {
2400 .master
= &am33xx_l4_ls_hwmod
,
2401 .slave
= &am33xx_uart4_hwmod
,
2403 .user
= OCP_USER_MPU
,
2406 /* l4 ls -> uart5 */
2407 static struct omap_hwmod_ocp_if am33xx_l4_ls__uart5
= {
2408 .master
= &am33xx_l4_ls_hwmod
,
2409 .slave
= &am33xx_uart5_hwmod
,
2411 .user
= OCP_USER_MPU
,
2414 /* l4 ls -> uart6 */
2415 static struct omap_hwmod_ocp_if am33xx_l4_ls__uart6
= {
2416 .master
= &am33xx_l4_ls_hwmod
,
2417 .slave
= &am33xx_uart6_hwmod
,
2419 .user
= OCP_USER_MPU
,
2422 /* l4 wkup -> wd_timer1 */
2423 static struct omap_hwmod_ocp_if am33xx_l4_wkup__wd_timer1
= {
2424 .master
= &am33xx_l4_wkup_hwmod
,
2425 .slave
= &am33xx_wd_timer1_hwmod
,
2426 .clk
= "dpll_core_m4_div2_ck",
2427 .user
= OCP_USER_MPU
,
2431 /* l3 s -> USBSS interface */
2432 static struct omap_hwmod_ocp_if am33xx_l3_s__usbss
= {
2433 .master
= &am33xx_l3_s_hwmod
,
2434 .slave
= &am33xx_usbss_hwmod
,
2436 .user
= OCP_USER_MPU
,
2437 .flags
= OCPIF_SWSUP_IDLE
,
2440 /* l3 main -> ocmc */
2441 static struct omap_hwmod_ocp_if am33xx_l3_main__ocmc
= {
2442 .master
= &am33xx_l3_main_hwmod
,
2443 .slave
= &am33xx_ocmcram_hwmod
,
2444 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
2447 /* l3 main -> sha0 HIB2 */
2448 static struct omap_hwmod_addr_space am33xx_sha0_addrs
[] = {
2450 .pa_start
= 0x53100000,
2451 .pa_end
= 0x53100000 + SZ_512
- 1,
2452 .flags
= ADDR_TYPE_RT
2457 static struct omap_hwmod_ocp_if am33xx_l3_main__sha0
= {
2458 .master
= &am33xx_l3_main_hwmod
,
2459 .slave
= &am33xx_sha0_hwmod
,
2461 .addr
= am33xx_sha0_addrs
,
2462 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
2465 /* l3 main -> AES0 HIB2 */
2466 static struct omap_hwmod_addr_space am33xx_aes0_addrs
[] = {
2468 .pa_start
= 0x53500000,
2469 .pa_end
= 0x53500000 + SZ_1M
- 1,
2470 .flags
= ADDR_TYPE_RT
2475 static struct omap_hwmod_ocp_if am33xx_l3_main__aes0
= {
2476 .master
= &am33xx_l3_main_hwmod
,
2477 .slave
= &am33xx_aes0_hwmod
,
2479 .addr
= am33xx_aes0_addrs
,
2480 .user
= OCP_USER_MPU
| OCP_USER_SDMA
,
2483 static struct omap_hwmod_ocp_if
*am33xx_hwmod_ocp_ifs
[] __initdata
= {
2484 &am33xx_l3_main__emif
,
2485 &am33xx_mpu__l3_main
,
2487 &am33xx_l3_s__l4_ls
,
2488 &am33xx_l3_s__l4_wkup
,
2489 &am33xx_l3_main__l4_hs
,
2490 &am33xx_l3_main__l3_s
,
2491 &am33xx_l3_main__l3_instr
,
2492 &am33xx_l3_main__gfx
,
2493 &am33xx_l3_s__l3_main
,
2494 &am33xx_pruss__l3_main
,
2495 &am33xx_wkup_m3__l4_wkup
,
2496 &am33xx_gfx__l3_main
,
2497 &am33xx_l3_main__debugss
,
2498 &am33xx_l4_wkup__wkup_m3
,
2499 &am33xx_l4_wkup__control
,
2500 &am33xx_l4_wkup__smartreflex0
,
2501 &am33xx_l4_wkup__smartreflex1
,
2502 &am33xx_l4_wkup__uart1
,
2503 &am33xx_l4_wkup__timer1
,
2504 &am33xx_l4_wkup__rtc
,
2505 &am33xx_l4_wkup__i2c1
,
2506 &am33xx_l4_wkup__gpio0
,
2507 &am33xx_l4_wkup__adc_tsc
,
2508 &am33xx_l4_wkup__wd_timer1
,
2509 &am33xx_l4_hs__pruss
,
2510 &am33xx_l4_per__dcan0
,
2511 &am33xx_l4_per__dcan1
,
2512 &am33xx_l4_per__gpio1
,
2513 &am33xx_l4_per__gpio2
,
2514 &am33xx_l4_per__gpio3
,
2515 &am33xx_l4_per__i2c2
,
2516 &am33xx_l4_per__i2c3
,
2517 &am33xx_l4_per__mailbox
,
2518 &am33xx_l4_ls__mcasp0
,
2519 &am33xx_l4_ls__mcasp1
,
2520 &am33xx_l4_ls__mmc0
,
2521 &am33xx_l4_ls__mmc1
,
2523 &am33xx_l4_ls__timer2
,
2524 &am33xx_l4_ls__timer3
,
2525 &am33xx_l4_ls__timer4
,
2526 &am33xx_l4_ls__timer5
,
2527 &am33xx_l4_ls__timer6
,
2528 &am33xx_l4_ls__timer7
,
2529 &am33xx_l3_main__tpcc
,
2530 &am33xx_l4_ls__uart2
,
2531 &am33xx_l4_ls__uart3
,
2532 &am33xx_l4_ls__uart4
,
2533 &am33xx_l4_ls__uart5
,
2534 &am33xx_l4_ls__uart6
,
2535 &am33xx_l4_ls__spinlock
,
2537 &am33xx_l4_ls__epwmss0
,
2538 &am33xx_epwmss0__ecap0
,
2539 &am33xx_epwmss0__eqep0
,
2540 &am33xx_epwmss0__ehrpwm0
,
2541 &am33xx_l4_ls__epwmss1
,
2542 &am33xx_epwmss1__ecap1
,
2543 &am33xx_epwmss1__eqep1
,
2544 &am33xx_epwmss1__ehrpwm1
,
2545 &am33xx_l4_ls__epwmss2
,
2546 &am33xx_epwmss2__ecap2
,
2547 &am33xx_epwmss2__eqep2
,
2548 &am33xx_epwmss2__ehrpwm2
,
2550 &am33xx_l3_main__lcdc
,
2551 &am33xx_l4_ls__mcspi0
,
2552 &am33xx_l4_ls__mcspi1
,
2553 &am33xx_l3_main__tptc0
,
2554 &am33xx_l3_main__tptc1
,
2555 &am33xx_l3_main__tptc2
,
2556 &am33xx_l3_main__ocmc
,
2557 &am33xx_l3_s__usbss
,
2558 &am33xx_l4_hs__cpgmac0
,
2559 &am33xx_cpgmac0__mdio
,
2560 &am33xx_l3_main__sha0
,
2561 &am33xx_l3_main__aes0
,
2565 int __init
am33xx_hwmod_init(void)
2568 return omap_hwmod_register_links(am33xx_hwmod_ocp_ifs
);