3 * Copyright (C) 2013 Texas Instruments Incorporated
5 * Hwmod common for AM335x and AM43x
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/types.h>
19 #include "omap_hwmod.h"
23 #include "omap_hwmod_33xx_43xx_common_data.h"
27 #define CLKCTRL(oh, clkctrl) ((oh).prcm.omap4.clkctrl_offs = (clkctrl))
28 #define RSTCTRL(oh, rstctrl) ((oh).prcm.omap4.rstctrl_offs = (rstctrl))
29 #define RSTST(oh, rstst) ((oh).prcm.omap4.rstst_offs = (rstst))
30 #define PRCM_FLAGS(oh, flag) ((oh).prcm.omap4.flags = (flag))
34 * instance(s): l3_main, l3_s, l3_instr
36 static struct omap_hwmod_class am33xx_l3_hwmod_class = {
40 struct omap_hwmod am33xx_l3_main_hwmod = {
42 .class = &am33xx_l3_hwmod_class,
43 .clkdm_name = "l3_clkdm",
44 .flags = HWMOD_INIT_NO_IDLE,
45 .main_clk = "l3_gclk",
48 .modulemode = MODULEMODE_SWCTRL,
54 struct omap_hwmod am33xx_l3_s_hwmod = {
56 .class = &am33xx_l3_hwmod_class,
57 .clkdm_name = "l3s_clkdm",
61 struct omap_hwmod am33xx_l3_instr_hwmod = {
63 .class = &am33xx_l3_hwmod_class,
64 .clkdm_name = "l3_clkdm",
65 .flags = HWMOD_INIT_NO_IDLE,
66 .main_clk = "l3_gclk",
69 .modulemode = MODULEMODE_SWCTRL,
76 * instance(s): l4_ls, l4_hs, l4_wkup, l4_fw
78 struct omap_hwmod_class am33xx_l4_hwmod_class = {
83 struct omap_hwmod am33xx_l4_ls_hwmod = {
85 .class = &am33xx_l4_hwmod_class,
86 .clkdm_name = "l4ls_clkdm",
87 .flags = HWMOD_INIT_NO_IDLE,
88 .main_clk = "l4ls_gclk",
91 .modulemode = MODULEMODE_SWCTRL,
97 struct omap_hwmod am33xx_l4_wkup_hwmod = {
99 .class = &am33xx_l4_hwmod_class,
100 .clkdm_name = "l4_wkup_clkdm",
101 .flags = HWMOD_INIT_NO_IDLE,
104 .modulemode = MODULEMODE_SWCTRL,
112 static struct omap_hwmod_class am33xx_mpu_hwmod_class = {
116 struct omap_hwmod am33xx_mpu_hwmod = {
118 .class = &am33xx_mpu_hwmod_class,
119 .clkdm_name = "mpu_clkdm",
120 .flags = HWMOD_INIT_NO_IDLE,
121 .main_clk = "dpll_mpu_m2_ck",
124 .modulemode = MODULEMODE_SWCTRL,
131 * Wakeup controller sub-system under wakeup domain
133 struct omap_hwmod_class am33xx_wkup_m3_hwmod_class = {
139 * Programmable Real-Time Unit and Industrial Communication Subsystem
141 static struct omap_hwmod_class am33xx_pruss_hwmod_class = {
145 static struct omap_hwmod_rst_info am33xx_pruss_resets[] = {
146 { .name = "pruss", .rst_shift = 1 },
150 /* Pseudo hwmod for reset control purpose only */
151 struct omap_hwmod am33xx_pruss_hwmod = {
153 .class = &am33xx_pruss_hwmod_class,
154 .clkdm_name = "pruss_ocp_clkdm",
155 .main_clk = "pruss_ocp_gclk",
158 .modulemode = MODULEMODE_SWCTRL,
161 .rst_lines = am33xx_pruss_resets,
162 .rst_lines_cnt = ARRAY_SIZE(am33xx_pruss_resets),
166 /* Pseudo hwmod for reset control purpose only */
167 static struct omap_hwmod_class am33xx_gfx_hwmod_class = {
171 static struct omap_hwmod_rst_info am33xx_gfx_resets[] = {
172 { .name = "gfx", .rst_shift = 0, .st_shift = 0},
175 struct omap_hwmod am33xx_gfx_hwmod = {
177 .class = &am33xx_gfx_hwmod_class,
178 .clkdm_name = "gfx_l3_clkdm",
179 .main_clk = "gfx_fck_div_ck",
182 .modulemode = MODULEMODE_SWCTRL,
185 .rst_lines = am33xx_gfx_resets,
186 .rst_lines_cnt = ARRAY_SIZE(am33xx_gfx_resets),
191 * power and reset manager (whole prcm infrastructure)
193 static struct omap_hwmod_class am33xx_prcm_hwmod_class = {
198 struct omap_hwmod am33xx_prcm_hwmod = {
200 .class = &am33xx_prcm_hwmod_class,
201 .clkdm_name = "l4_wkup_clkdm",
208 static struct omap_hwmod_class_sysconfig am33xx_emif_sysc = {
212 struct omap_hwmod_class am33xx_emif_hwmod_class = {
214 .sysc = &am33xx_emif_sysc,
220 static struct omap_hwmod_class_sysconfig am33xx_aes0_sysc = {
224 .sysc_flags = SYSS_HAS_RESET_STATUS,
227 static struct omap_hwmod_class am33xx_aes0_hwmod_class = {
229 .sysc = &am33xx_aes0_sysc,
232 struct omap_hwmod am33xx_aes0_hwmod = {
234 .class = &am33xx_aes0_hwmod_class,
235 .clkdm_name = "l3_clkdm",
236 .main_clk = "aes0_fck",
239 .modulemode = MODULEMODE_SWCTRL,
244 /* sha0 HIB2 (the 'P' (public) device) */
245 static struct omap_hwmod_class_sysconfig am33xx_sha0_sysc = {
249 .sysc_flags = SYSS_HAS_RESET_STATUS,
252 static struct omap_hwmod_class am33xx_sha0_hwmod_class = {
254 .sysc = &am33xx_sha0_sysc,
257 struct omap_hwmod am33xx_sha0_hwmod = {
259 .class = &am33xx_sha0_hwmod_class,
260 .clkdm_name = "l3_clkdm",
261 .main_clk = "l3_gclk",
264 .modulemode = MODULEMODE_SWCTRL,
270 static struct omap_hwmod_class_sysconfig am33xx_rng_sysc = {
273 .sysc_flags = SYSC_HAS_AUTOIDLE | SYSC_HAS_SIDLEMODE,
274 .idlemodes = SIDLE_FORCE | SIDLE_NO,
275 .sysc_fields = &omap_hwmod_sysc_type1,
278 static struct omap_hwmod_class am33xx_rng_hwmod_class = {
280 .sysc = &am33xx_rng_sysc,
283 struct omap_hwmod am33xx_rng_hwmod = {
285 .class = &am33xx_rng_hwmod_class,
286 .clkdm_name = "l4ls_clkdm",
287 .flags = HWMOD_SWSUP_SIDLE,
288 .main_clk = "rng_fck",
291 .modulemode = MODULEMODE_SWCTRL,
297 static struct omap_hwmod_class am33xx_ocmcram_hwmod_class = {
301 struct omap_hwmod am33xx_ocmcram_hwmod = {
303 .class = &am33xx_ocmcram_hwmod_class,
304 .clkdm_name = "l3_clkdm",
305 .flags = HWMOD_INIT_NO_IDLE,
306 .main_clk = "l3_gclk",
309 .modulemode = MODULEMODE_SWCTRL,
314 /* 'smartreflex' class */
315 static struct omap_hwmod_class am33xx_smartreflex_hwmod_class = {
316 .name = "smartreflex",
320 struct omap_hwmod am33xx_smartreflex0_hwmod = {
321 .name = "smartreflex0",
322 .class = &am33xx_smartreflex_hwmod_class,
323 .clkdm_name = "l4_wkup_clkdm",
324 .main_clk = "smartreflex0_fck",
327 .modulemode = MODULEMODE_SWCTRL,
333 struct omap_hwmod am33xx_smartreflex1_hwmod = {
334 .name = "smartreflex1",
335 .class = &am33xx_smartreflex_hwmod_class,
336 .clkdm_name = "l4_wkup_clkdm",
337 .main_clk = "smartreflex1_fck",
340 .modulemode = MODULEMODE_SWCTRL,
346 * 'control' module class
348 struct omap_hwmod_class am33xx_control_hwmod_class = {
355 static struct omap_hwmod_class am33xx_dcan_hwmod_class = {
360 struct omap_hwmod am33xx_dcan0_hwmod = {
362 .class = &am33xx_dcan_hwmod_class,
363 .clkdm_name = "l4ls_clkdm",
364 .main_clk = "dcan0_fck",
367 .modulemode = MODULEMODE_SWCTRL,
373 struct omap_hwmod am33xx_dcan1_hwmod = {
375 .class = &am33xx_dcan_hwmod_class,
376 .clkdm_name = "l4ls_clkdm",
377 .main_clk = "dcan1_fck",
380 .modulemode = MODULEMODE_SWCTRL,
386 static struct omap_hwmod_class_sysconfig am33xx_elm_sysc = {
390 .sysc_flags = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
391 SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE |
392 SYSS_HAS_RESET_STATUS),
393 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
394 .sysc_fields = &omap_hwmod_sysc_type1,
397 static struct omap_hwmod_class am33xx_elm_hwmod_class = {
399 .sysc = &am33xx_elm_sysc,
402 struct omap_hwmod am33xx_elm_hwmod = {
404 .class = &am33xx_elm_hwmod_class,
405 .clkdm_name = "l4ls_clkdm",
406 .main_clk = "l4ls_gclk",
409 .modulemode = MODULEMODE_SWCTRL,
415 static struct omap_hwmod_class_sysconfig am33xx_epwmss_sysc = {
418 .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE),
419 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
420 SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
421 MSTANDBY_SMART | MSTANDBY_SMART_WKUP),
422 .sysc_fields = &omap_hwmod_sysc_type2,
425 struct omap_hwmod_class am33xx_epwmss_hwmod_class = {
427 .sysc = &am33xx_epwmss_sysc,
431 struct omap_hwmod am33xx_epwmss0_hwmod = {
433 .class = &am33xx_epwmss_hwmod_class,
434 .clkdm_name = "l4ls_clkdm",
435 .main_clk = "l4ls_gclk",
438 .modulemode = MODULEMODE_SWCTRL,
444 struct omap_hwmod am33xx_epwmss1_hwmod = {
446 .class = &am33xx_epwmss_hwmod_class,
447 .clkdm_name = "l4ls_clkdm",
448 .main_clk = "l4ls_gclk",
451 .modulemode = MODULEMODE_SWCTRL,
457 struct omap_hwmod am33xx_epwmss2_hwmod = {
459 .class = &am33xx_epwmss_hwmod_class,
460 .clkdm_name = "l4ls_clkdm",
461 .main_clk = "l4ls_gclk",
464 .modulemode = MODULEMODE_SWCTRL,
470 static struct omap_hwmod_class_sysconfig gpmc_sysc = {
474 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_SIDLEMODE |
475 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
476 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
477 .sysc_fields = &omap_hwmod_sysc_type1,
480 static struct omap_hwmod_class am33xx_gpmc_hwmod_class = {
485 struct omap_hwmod am33xx_gpmc_hwmod = {
487 .class = &am33xx_gpmc_hwmod_class,
488 .clkdm_name = "l3s_clkdm",
489 /* Skip reset for CONFIG_OMAP_GPMC_DEBUG for bootloader timings */
490 .flags = DEBUG_OMAP_GPMC_HWMOD_FLAGS,
491 .main_clk = "l3s_gclk",
494 .modulemode = MODULEMODE_SWCTRL,
501 * mailbox module allowing communication between the on-chip processors using a
502 * queued mailbox-interrupt mechanism.
504 static struct omap_hwmod_class_sysconfig am33xx_mailbox_sysc = {
507 .sysc_flags = (SYSC_HAS_RESET_STATUS | SYSC_HAS_SIDLEMODE |
509 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
510 .sysc_fields = &omap_hwmod_sysc_type2,
513 static struct omap_hwmod_class am33xx_mailbox_hwmod_class = {
515 .sysc = &am33xx_mailbox_sysc,
518 struct omap_hwmod am33xx_mailbox_hwmod = {
520 .class = &am33xx_mailbox_hwmod_class,
521 .clkdm_name = "l4ls_clkdm",
522 .main_clk = "l4ls_gclk",
525 .modulemode = MODULEMODE_SWCTRL,
533 static struct omap_hwmod_class_sysconfig am33xx_mcasp_sysc = {
536 .sysc_flags = SYSC_HAS_SIDLEMODE,
537 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
538 .sysc_fields = &omap_hwmod_sysc_type3,
541 static struct omap_hwmod_class am33xx_mcasp_hwmod_class = {
543 .sysc = &am33xx_mcasp_sysc,
547 struct omap_hwmod am33xx_mcasp0_hwmod = {
549 .class = &am33xx_mcasp_hwmod_class,
550 .clkdm_name = "l3s_clkdm",
551 .main_clk = "mcasp0_fck",
554 .modulemode = MODULEMODE_SWCTRL,
560 struct omap_hwmod am33xx_mcasp1_hwmod = {
562 .class = &am33xx_mcasp_hwmod_class,
563 .clkdm_name = "l3s_clkdm",
564 .main_clk = "mcasp1_fck",
567 .modulemode = MODULEMODE_SWCTRL,
576 static struct omap_hwmod_class_sysconfig am33xx_rtc_sysc = {
579 .sysc_flags = SYSC_HAS_SIDLEMODE,
580 .idlemodes = (SIDLE_FORCE | SIDLE_NO |
581 SIDLE_SMART | SIDLE_SMART_WKUP),
582 .sysc_fields = &omap_hwmod_sysc_type3,
585 static struct omap_hwmod_class am33xx_rtc_hwmod_class = {
587 .sysc = &am33xx_rtc_sysc,
588 .unlock = &omap_hwmod_rtc_unlock,
589 .lock = &omap_hwmod_rtc_lock,
592 struct omap_hwmod am33xx_rtc_hwmod = {
594 .class = &am33xx_rtc_hwmod_class,
595 .clkdm_name = "l4_rtc_clkdm",
596 .main_clk = "clk_32768_ck",
599 .modulemode = MODULEMODE_SWCTRL,
605 static struct omap_hwmod_class_sysconfig am33xx_mcspi_sysc = {
609 .sysc_flags = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
610 SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE |
611 SYSS_HAS_RESET_STATUS),
612 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
613 .sysc_fields = &omap_hwmod_sysc_type1,
616 struct omap_hwmod_class am33xx_spi_hwmod_class = {
618 .sysc = &am33xx_mcspi_sysc,
622 struct omap_hwmod am33xx_spi0_hwmod = {
624 .class = &am33xx_spi_hwmod_class,
625 .clkdm_name = "l4ls_clkdm",
626 .main_clk = "dpll_per_m2_div4_ck",
629 .modulemode = MODULEMODE_SWCTRL,
635 struct omap_hwmod am33xx_spi1_hwmod = {
637 .class = &am33xx_spi_hwmod_class,
638 .clkdm_name = "l4ls_clkdm",
639 .main_clk = "dpll_per_m2_div4_ck",
642 .modulemode = MODULEMODE_SWCTRL,
649 * spinlock provides hardware assistance for synchronizing the
650 * processes running on multiple processors
653 static struct omap_hwmod_class_sysconfig am33xx_spinlock_sysc = {
657 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
658 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE |
659 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
660 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
661 .sysc_fields = &omap_hwmod_sysc_type1,
664 static struct omap_hwmod_class am33xx_spinlock_hwmod_class = {
666 .sysc = &am33xx_spinlock_sysc,
669 struct omap_hwmod am33xx_spinlock_hwmod = {
671 .class = &am33xx_spinlock_hwmod_class,
672 .clkdm_name = "l4ls_clkdm",
673 .main_clk = "l4ls_gclk",
676 .modulemode = MODULEMODE_SWCTRL,
681 /* 'timer 2-7' class */
682 static struct omap_hwmod_class_sysconfig am33xx_timer_sysc = {
686 .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
687 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
689 .sysc_fields = &omap_hwmod_sysc_type2,
692 struct omap_hwmod_class am33xx_timer_hwmod_class = {
694 .sysc = &am33xx_timer_sysc,
698 static struct omap_hwmod_class_sysconfig am33xx_timer1ms_sysc = {
702 .sysc_flags = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
703 SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE |
704 SYSS_HAS_RESET_STATUS),
705 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
706 .sysc_fields = &omap_hwmod_sysc_type1,
709 static struct omap_hwmod_class am33xx_timer1ms_hwmod_class = {
711 .sysc = &am33xx_timer1ms_sysc,
714 struct omap_hwmod am33xx_timer1_hwmod = {
716 .class = &am33xx_timer1ms_hwmod_class,
717 .clkdm_name = "l4_wkup_clkdm",
718 .main_clk = "timer1_fck",
721 .modulemode = MODULEMODE_SWCTRL,
726 struct omap_hwmod am33xx_timer2_hwmod = {
728 .class = &am33xx_timer_hwmod_class,
729 .clkdm_name = "l4ls_clkdm",
730 .main_clk = "timer2_fck",
733 .modulemode = MODULEMODE_SWCTRL,
738 struct omap_hwmod am33xx_timer3_hwmod = {
740 .class = &am33xx_timer_hwmod_class,
741 .clkdm_name = "l4ls_clkdm",
742 .main_clk = "timer3_fck",
745 .modulemode = MODULEMODE_SWCTRL,
750 struct omap_hwmod am33xx_timer4_hwmod = {
752 .class = &am33xx_timer_hwmod_class,
753 .clkdm_name = "l4ls_clkdm",
754 .main_clk = "timer4_fck",
757 .modulemode = MODULEMODE_SWCTRL,
762 struct omap_hwmod am33xx_timer5_hwmod = {
764 .class = &am33xx_timer_hwmod_class,
765 .clkdm_name = "l4ls_clkdm",
766 .main_clk = "timer5_fck",
769 .modulemode = MODULEMODE_SWCTRL,
774 struct omap_hwmod am33xx_timer6_hwmod = {
776 .class = &am33xx_timer_hwmod_class,
777 .clkdm_name = "l4ls_clkdm",
778 .main_clk = "timer6_fck",
781 .modulemode = MODULEMODE_SWCTRL,
786 struct omap_hwmod am33xx_timer7_hwmod = {
788 .class = &am33xx_timer_hwmod_class,
789 .clkdm_name = "l4ls_clkdm",
790 .main_clk = "timer7_fck",
793 .modulemode = MODULEMODE_SWCTRL,
799 static struct omap_hwmod_class am33xx_tpcc_hwmod_class = {
803 struct omap_hwmod am33xx_tpcc_hwmod = {
805 .class = &am33xx_tpcc_hwmod_class,
806 .clkdm_name = "l3_clkdm",
807 .main_clk = "l3_gclk",
810 .modulemode = MODULEMODE_SWCTRL,
815 static struct omap_hwmod_class_sysconfig am33xx_tptc_sysc = {
818 .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
820 .idlemodes = (SIDLE_FORCE | SIDLE_SMART | MSTANDBY_FORCE),
821 .sysc_fields = &omap_hwmod_sysc_type2,
825 static struct omap_hwmod_class am33xx_tptc_hwmod_class = {
827 .sysc = &am33xx_tptc_sysc,
831 struct omap_hwmod am33xx_tptc0_hwmod = {
833 .class = &am33xx_tptc_hwmod_class,
834 .clkdm_name = "l3_clkdm",
835 .flags = HWMOD_SWSUP_SIDLE | HWMOD_SWSUP_MSTANDBY,
836 .main_clk = "l3_gclk",
839 .modulemode = MODULEMODE_SWCTRL,
845 struct omap_hwmod am33xx_tptc1_hwmod = {
847 .class = &am33xx_tptc_hwmod_class,
848 .clkdm_name = "l3_clkdm",
849 .flags = (HWMOD_SWSUP_SIDLE | HWMOD_SWSUP_MSTANDBY),
850 .main_clk = "l3_gclk",
853 .modulemode = MODULEMODE_SWCTRL,
859 struct omap_hwmod am33xx_tptc2_hwmod = {
861 .class = &am33xx_tptc_hwmod_class,
862 .clkdm_name = "l3_clkdm",
863 .flags = (HWMOD_SWSUP_SIDLE | HWMOD_SWSUP_MSTANDBY),
864 .main_clk = "l3_gclk",
867 .modulemode = MODULEMODE_SWCTRL,
872 /* 'wd_timer' class */
873 static struct omap_hwmod_class_sysconfig wdt_sysc = {
877 .sysc_flags = (SYSC_HAS_EMUFREE | SYSC_HAS_SIDLEMODE |
878 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
879 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
881 .sysc_fields = &omap_hwmod_sysc_type1,
884 static struct omap_hwmod_class am33xx_wd_timer_hwmod_class = {
887 .pre_shutdown = &omap2_wd_timer_disable,
891 * XXX: device.c file uses hardcoded name for watchdog timer
892 * driver "wd_timer2, so we are also using same name as of now...
894 struct omap_hwmod am33xx_wd_timer1_hwmod = {
896 .class = &am33xx_wd_timer_hwmod_class,
897 .clkdm_name = "l4_wkup_clkdm",
898 .flags = HWMOD_SWSUP_SIDLE,
899 .main_clk = "wdt1_fck",
902 .modulemode = MODULEMODE_SWCTRL,
907 static void omap_hwmod_am33xx_clkctrl(void)
909 CLKCTRL(am33xx_dcan0_hwmod, AM33XX_CM_PER_DCAN0_CLKCTRL_OFFSET);
910 CLKCTRL(am33xx_dcan1_hwmod, AM33XX_CM_PER_DCAN1_CLKCTRL_OFFSET);
911 CLKCTRL(am33xx_elm_hwmod, AM33XX_CM_PER_ELM_CLKCTRL_OFFSET);
912 CLKCTRL(am33xx_epwmss0_hwmod, AM33XX_CM_PER_EPWMSS0_CLKCTRL_OFFSET);
913 CLKCTRL(am33xx_epwmss1_hwmod, AM33XX_CM_PER_EPWMSS1_CLKCTRL_OFFSET);
914 CLKCTRL(am33xx_epwmss2_hwmod, AM33XX_CM_PER_EPWMSS2_CLKCTRL_OFFSET);
915 CLKCTRL(am33xx_mailbox_hwmod, AM33XX_CM_PER_MAILBOX0_CLKCTRL_OFFSET);
916 CLKCTRL(am33xx_mcasp0_hwmod, AM33XX_CM_PER_MCASP0_CLKCTRL_OFFSET);
917 CLKCTRL(am33xx_mcasp1_hwmod, AM33XX_CM_PER_MCASP1_CLKCTRL_OFFSET);
918 CLKCTRL(am33xx_spi0_hwmod, AM33XX_CM_PER_SPI0_CLKCTRL_OFFSET);
919 CLKCTRL(am33xx_spi1_hwmod, AM33XX_CM_PER_SPI1_CLKCTRL_OFFSET);
920 CLKCTRL(am33xx_spinlock_hwmod, AM33XX_CM_PER_SPINLOCK_CLKCTRL_OFFSET);
921 CLKCTRL(am33xx_timer2_hwmod, AM33XX_CM_PER_TIMER2_CLKCTRL_OFFSET);
922 CLKCTRL(am33xx_timer3_hwmod, AM33XX_CM_PER_TIMER3_CLKCTRL_OFFSET);
923 CLKCTRL(am33xx_timer4_hwmod, AM33XX_CM_PER_TIMER4_CLKCTRL_OFFSET);
924 CLKCTRL(am33xx_timer5_hwmod, AM33XX_CM_PER_TIMER5_CLKCTRL_OFFSET);
925 CLKCTRL(am33xx_timer6_hwmod, AM33XX_CM_PER_TIMER6_CLKCTRL_OFFSET);
926 CLKCTRL(am33xx_timer7_hwmod, AM33XX_CM_PER_TIMER7_CLKCTRL_OFFSET);
927 CLKCTRL(am33xx_smartreflex0_hwmod,
928 AM33XX_CM_WKUP_SMARTREFLEX0_CLKCTRL_OFFSET);
929 CLKCTRL(am33xx_smartreflex1_hwmod,
930 AM33XX_CM_WKUP_SMARTREFLEX1_CLKCTRL_OFFSET);
931 CLKCTRL(am33xx_timer1_hwmod, AM33XX_CM_WKUP_TIMER1_CLKCTRL_OFFSET);
932 CLKCTRL(am33xx_wd_timer1_hwmod, AM33XX_CM_WKUP_WDT1_CLKCTRL_OFFSET);
933 CLKCTRL(am33xx_rtc_hwmod, AM33XX_CM_RTC_RTC_CLKCTRL_OFFSET);
934 PRCM_FLAGS(am33xx_rtc_hwmod, HWMOD_OMAP4_ZERO_CLKCTRL_OFFSET);
935 CLKCTRL(am33xx_gpmc_hwmod, AM33XX_CM_PER_GPMC_CLKCTRL_OFFSET);
936 CLKCTRL(am33xx_l4_ls_hwmod, AM33XX_CM_PER_L4LS_CLKCTRL_OFFSET);
937 CLKCTRL(am33xx_l4_wkup_hwmod, AM33XX_CM_WKUP_L4WKUP_CLKCTRL_OFFSET);
938 CLKCTRL(am33xx_l3_main_hwmod, AM33XX_CM_PER_L3_CLKCTRL_OFFSET);
939 CLKCTRL(am33xx_tpcc_hwmod, AM33XX_CM_PER_TPCC_CLKCTRL_OFFSET);
940 CLKCTRL(am33xx_tptc0_hwmod, AM33XX_CM_PER_TPTC0_CLKCTRL_OFFSET);
941 CLKCTRL(am33xx_tptc1_hwmod, AM33XX_CM_PER_TPTC1_CLKCTRL_OFFSET);
942 CLKCTRL(am33xx_tptc2_hwmod, AM33XX_CM_PER_TPTC2_CLKCTRL_OFFSET);
943 CLKCTRL(am33xx_gfx_hwmod, AM33XX_CM_GFX_GFX_CLKCTRL_OFFSET);
944 CLKCTRL(am33xx_pruss_hwmod, AM33XX_CM_PER_PRUSS_CLKCTRL_OFFSET);
945 CLKCTRL(am33xx_mpu_hwmod , AM33XX_CM_MPU_MPU_CLKCTRL_OFFSET);
946 CLKCTRL(am33xx_l3_instr_hwmod , AM33XX_CM_PER_L3_INSTR_CLKCTRL_OFFSET);
947 CLKCTRL(am33xx_ocmcram_hwmod , AM33XX_CM_PER_OCMCRAM_CLKCTRL_OFFSET);
948 CLKCTRL(am33xx_sha0_hwmod , AM33XX_CM_PER_SHA0_CLKCTRL_OFFSET);
949 CLKCTRL(am33xx_aes0_hwmod , AM33XX_CM_PER_AES0_CLKCTRL_OFFSET);
950 CLKCTRL(am33xx_rng_hwmod, AM33XX_CM_PER_RNG_CLKCTRL_OFFSET);
953 static void omap_hwmod_am33xx_rst(void)
955 RSTCTRL(am33xx_pruss_hwmod, AM33XX_RM_PER_RSTCTRL_OFFSET);
956 RSTCTRL(am33xx_gfx_hwmod, AM33XX_RM_GFX_RSTCTRL_OFFSET);
957 RSTST(am33xx_gfx_hwmod, AM33XX_RM_GFX_RSTST_OFFSET);
960 void omap_hwmod_am33xx_reg(void)
962 omap_hwmod_am33xx_clkctrl();
963 omap_hwmod_am33xx_rst();
966 static void omap_hwmod_am43xx_clkctrl(void)
968 CLKCTRL(am33xx_dcan0_hwmod, AM43XX_CM_PER_DCAN0_CLKCTRL_OFFSET);
969 CLKCTRL(am33xx_dcan1_hwmod, AM43XX_CM_PER_DCAN1_CLKCTRL_OFFSET);
970 CLKCTRL(am33xx_elm_hwmod, AM43XX_CM_PER_ELM_CLKCTRL_OFFSET);
971 CLKCTRL(am33xx_epwmss0_hwmod, AM43XX_CM_PER_EPWMSS0_CLKCTRL_OFFSET);
972 CLKCTRL(am33xx_epwmss1_hwmod, AM43XX_CM_PER_EPWMSS1_CLKCTRL_OFFSET);
973 CLKCTRL(am33xx_epwmss2_hwmod, AM43XX_CM_PER_EPWMSS2_CLKCTRL_OFFSET);
974 CLKCTRL(am33xx_mailbox_hwmod, AM43XX_CM_PER_MAILBOX0_CLKCTRL_OFFSET);
975 CLKCTRL(am33xx_mcasp0_hwmod, AM43XX_CM_PER_MCASP0_CLKCTRL_OFFSET);
976 CLKCTRL(am33xx_mcasp1_hwmod, AM43XX_CM_PER_MCASP1_CLKCTRL_OFFSET);
977 CLKCTRL(am33xx_spi0_hwmod, AM43XX_CM_PER_SPI0_CLKCTRL_OFFSET);
978 CLKCTRL(am33xx_spi1_hwmod, AM43XX_CM_PER_SPI1_CLKCTRL_OFFSET);
979 CLKCTRL(am33xx_spinlock_hwmod, AM43XX_CM_PER_SPINLOCK_CLKCTRL_OFFSET);
980 CLKCTRL(am33xx_timer2_hwmod, AM43XX_CM_PER_TIMER2_CLKCTRL_OFFSET);
981 CLKCTRL(am33xx_timer3_hwmod, AM43XX_CM_PER_TIMER3_CLKCTRL_OFFSET);
982 CLKCTRL(am33xx_timer4_hwmod, AM43XX_CM_PER_TIMER4_CLKCTRL_OFFSET);
983 CLKCTRL(am33xx_timer5_hwmod, AM43XX_CM_PER_TIMER5_CLKCTRL_OFFSET);
984 CLKCTRL(am33xx_timer6_hwmod, AM43XX_CM_PER_TIMER6_CLKCTRL_OFFSET);
985 CLKCTRL(am33xx_timer7_hwmod, AM43XX_CM_PER_TIMER7_CLKCTRL_OFFSET);
986 CLKCTRL(am33xx_smartreflex0_hwmod,
987 AM43XX_CM_WKUP_SMARTREFLEX0_CLKCTRL_OFFSET);
988 CLKCTRL(am33xx_smartreflex1_hwmod,
989 AM43XX_CM_WKUP_SMARTREFLEX1_CLKCTRL_OFFSET);
990 CLKCTRL(am33xx_timer1_hwmod, AM43XX_CM_WKUP_TIMER1_CLKCTRL_OFFSET);
991 CLKCTRL(am33xx_wd_timer1_hwmod, AM43XX_CM_WKUP_WDT1_CLKCTRL_OFFSET);
992 CLKCTRL(am33xx_rtc_hwmod, AM43XX_CM_RTC_RTC_CLKCTRL_OFFSET);
993 CLKCTRL(am33xx_gpmc_hwmod, AM43XX_CM_PER_GPMC_CLKCTRL_OFFSET);
994 CLKCTRL(am33xx_l4_ls_hwmod, AM43XX_CM_PER_L4LS_CLKCTRL_OFFSET);
995 CLKCTRL(am33xx_l4_wkup_hwmod, AM43XX_CM_WKUP_L4WKUP_CLKCTRL_OFFSET);
996 CLKCTRL(am33xx_l3_main_hwmod, AM43XX_CM_PER_L3_CLKCTRL_OFFSET);
997 CLKCTRL(am33xx_tpcc_hwmod, AM43XX_CM_PER_TPCC_CLKCTRL_OFFSET);
998 CLKCTRL(am33xx_tptc0_hwmod, AM43XX_CM_PER_TPTC0_CLKCTRL_OFFSET);
999 CLKCTRL(am33xx_tptc1_hwmod, AM43XX_CM_PER_TPTC1_CLKCTRL_OFFSET);
1000 CLKCTRL(am33xx_tptc2_hwmod, AM43XX_CM_PER_TPTC2_CLKCTRL_OFFSET);
1001 CLKCTRL(am33xx_gfx_hwmod, AM43XX_CM_GFX_GFX_CLKCTRL_OFFSET);
1002 CLKCTRL(am33xx_pruss_hwmod, AM43XX_CM_PER_PRUSS_CLKCTRL_OFFSET);
1003 CLKCTRL(am33xx_mpu_hwmod , AM43XX_CM_MPU_MPU_CLKCTRL_OFFSET);
1004 CLKCTRL(am33xx_l3_instr_hwmod , AM43XX_CM_PER_L3_INSTR_CLKCTRL_OFFSET);
1005 CLKCTRL(am33xx_ocmcram_hwmod , AM43XX_CM_PER_OCMCRAM_CLKCTRL_OFFSET);
1006 CLKCTRL(am33xx_sha0_hwmod , AM43XX_CM_PER_SHA0_CLKCTRL_OFFSET);
1007 CLKCTRL(am33xx_aes0_hwmod , AM43XX_CM_PER_AES0_CLKCTRL_OFFSET);
1008 CLKCTRL(am33xx_rng_hwmod, AM43XX_CM_PER_RNG_CLKCTRL_OFFSET);
1011 static void omap_hwmod_am43xx_rst(void)
1013 RSTCTRL(am33xx_pruss_hwmod, AM43XX_RM_PER_RSTCTRL_OFFSET);
1014 RSTCTRL(am33xx_gfx_hwmod, AM43XX_RM_GFX_RSTCTRL_OFFSET);
1015 RSTST(am33xx_pruss_hwmod, AM43XX_RM_PER_RSTST_OFFSET);
1016 RSTST(am33xx_gfx_hwmod, AM43XX_RM_GFX_RSTST_OFFSET);
1019 void omap_hwmod_am43xx_reg(void)
1021 omap_hwmod_am43xx_clkctrl();
1022 omap_hwmod_am43xx_rst();