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"
22 #include "omap_hwmod_33xx_43xx_common_data.h"
26 #define CLKCTRL(oh, clkctrl) ((oh).prcm.omap4.clkctrl_offs = (clkctrl))
27 #define RSTCTRL(oh, rstctrl) ((oh).prcm.omap4.rstctrl_offs = (rstctrl))
28 #define RSTST(oh, rstst) ((oh).prcm.omap4.rstst_offs = (rstst))
29 #define PRCM_FLAGS(oh, flag) ((oh).prcm.omap4.flags = (flag))
33 * instance(s): l3_main, l3_s, l3_instr
35 static struct omap_hwmod_class am33xx_l3_hwmod_class = {
39 struct omap_hwmod am33xx_l3_main_hwmod = {
41 .class = &am33xx_l3_hwmod_class,
42 .clkdm_name = "l3_clkdm",
43 .flags = HWMOD_INIT_NO_IDLE,
44 .main_clk = "l3_gclk",
47 .modulemode = MODULEMODE_SWCTRL,
53 struct omap_hwmod am33xx_l3_s_hwmod = {
55 .class = &am33xx_l3_hwmod_class,
56 .clkdm_name = "l3s_clkdm",
60 struct omap_hwmod am33xx_l3_instr_hwmod = {
62 .class = &am33xx_l3_hwmod_class,
63 .clkdm_name = "l3_clkdm",
64 .flags = HWMOD_INIT_NO_IDLE,
65 .main_clk = "l3_gclk",
68 .modulemode = MODULEMODE_SWCTRL,
75 * instance(s): l4_ls, l4_hs, l4_wkup, l4_fw
77 struct omap_hwmod_class am33xx_l4_hwmod_class = {
82 struct omap_hwmod am33xx_l4_ls_hwmod = {
84 .class = &am33xx_l4_hwmod_class,
85 .clkdm_name = "l4ls_clkdm",
86 .flags = HWMOD_INIT_NO_IDLE,
87 .main_clk = "l4ls_gclk",
90 .modulemode = MODULEMODE_SWCTRL,
96 struct omap_hwmod am33xx_l4_wkup_hwmod = {
98 .class = &am33xx_l4_hwmod_class,
99 .clkdm_name = "l4_wkup_clkdm",
100 .flags = HWMOD_INIT_NO_IDLE,
103 .modulemode = MODULEMODE_SWCTRL,
111 static struct omap_hwmod_class am33xx_mpu_hwmod_class = {
115 struct omap_hwmod am33xx_mpu_hwmod = {
117 .class = &am33xx_mpu_hwmod_class,
118 .clkdm_name = "mpu_clkdm",
119 .flags = HWMOD_INIT_NO_IDLE,
120 .main_clk = "dpll_mpu_m2_ck",
123 .modulemode = MODULEMODE_SWCTRL,
130 * Wakeup controller sub-system under wakeup domain
132 struct omap_hwmod_class am33xx_wkup_m3_hwmod_class = {
138 * Programmable Real-Time Unit and Industrial Communication Subsystem
140 static struct omap_hwmod_class am33xx_pruss_hwmod_class = {
144 static struct omap_hwmod_rst_info am33xx_pruss_resets[] = {
145 { .name = "pruss", .rst_shift = 1 },
149 /* Pseudo hwmod for reset control purpose only */
150 struct omap_hwmod am33xx_pruss_hwmod = {
152 .class = &am33xx_pruss_hwmod_class,
153 .clkdm_name = "pruss_ocp_clkdm",
154 .main_clk = "pruss_ocp_gclk",
157 .modulemode = MODULEMODE_SWCTRL,
160 .rst_lines = am33xx_pruss_resets,
161 .rst_lines_cnt = ARRAY_SIZE(am33xx_pruss_resets),
165 /* Pseudo hwmod for reset control purpose only */
166 static struct omap_hwmod_class am33xx_gfx_hwmod_class = {
170 static struct omap_hwmod_rst_info am33xx_gfx_resets[] = {
171 { .name = "gfx", .rst_shift = 0, .st_shift = 0},
174 struct omap_hwmod am33xx_gfx_hwmod = {
176 .class = &am33xx_gfx_hwmod_class,
177 .clkdm_name = "gfx_l3_clkdm",
178 .main_clk = "gfx_fck_div_ck",
181 .modulemode = MODULEMODE_SWCTRL,
184 .rst_lines = am33xx_gfx_resets,
185 .rst_lines_cnt = ARRAY_SIZE(am33xx_gfx_resets),
190 * power and reset manager (whole prcm infrastructure)
192 static struct omap_hwmod_class am33xx_prcm_hwmod_class = {
197 struct omap_hwmod am33xx_prcm_hwmod = {
199 .class = &am33xx_prcm_hwmod_class,
200 .clkdm_name = "l4_wkup_clkdm",
207 static struct omap_hwmod_class_sysconfig am33xx_emif_sysc = {
211 struct omap_hwmod_class am33xx_emif_hwmod_class = {
213 .sysc = &am33xx_emif_sysc,
219 static struct omap_hwmod_class_sysconfig am33xx_aes0_sysc = {
223 .sysc_flags = SYSS_HAS_RESET_STATUS,
226 static struct omap_hwmod_class am33xx_aes0_hwmod_class = {
228 .sysc = &am33xx_aes0_sysc,
231 struct omap_hwmod am33xx_aes0_hwmod = {
233 .class = &am33xx_aes0_hwmod_class,
234 .clkdm_name = "l3_clkdm",
235 .main_clk = "aes0_fck",
238 .modulemode = MODULEMODE_SWCTRL,
243 /* sha0 HIB2 (the 'P' (public) device) */
244 static struct omap_hwmod_class_sysconfig am33xx_sha0_sysc = {
248 .sysc_flags = SYSS_HAS_RESET_STATUS,
251 static struct omap_hwmod_class am33xx_sha0_hwmod_class = {
253 .sysc = &am33xx_sha0_sysc,
256 struct omap_hwmod am33xx_sha0_hwmod = {
258 .class = &am33xx_sha0_hwmod_class,
259 .clkdm_name = "l3_clkdm",
260 .main_clk = "l3_gclk",
263 .modulemode = MODULEMODE_SWCTRL,
269 static struct omap_hwmod_class am33xx_ocmcram_hwmod_class = {
273 struct omap_hwmod am33xx_ocmcram_hwmod = {
275 .class = &am33xx_ocmcram_hwmod_class,
276 .clkdm_name = "l3_clkdm",
277 .flags = HWMOD_INIT_NO_IDLE,
278 .main_clk = "l3_gclk",
281 .modulemode = MODULEMODE_SWCTRL,
286 /* 'smartreflex' class */
287 static struct omap_hwmod_class am33xx_smartreflex_hwmod_class = {
288 .name = "smartreflex",
292 struct omap_hwmod am33xx_smartreflex0_hwmod = {
293 .name = "smartreflex0",
294 .class = &am33xx_smartreflex_hwmod_class,
295 .clkdm_name = "l4_wkup_clkdm",
296 .main_clk = "smartreflex0_fck",
299 .modulemode = MODULEMODE_SWCTRL,
305 struct omap_hwmod am33xx_smartreflex1_hwmod = {
306 .name = "smartreflex1",
307 .class = &am33xx_smartreflex_hwmod_class,
308 .clkdm_name = "l4_wkup_clkdm",
309 .main_clk = "smartreflex1_fck",
312 .modulemode = MODULEMODE_SWCTRL,
318 * 'control' module class
320 struct omap_hwmod_class am33xx_control_hwmod_class = {
327 static struct omap_hwmod_class am33xx_dcan_hwmod_class = {
332 struct omap_hwmod am33xx_dcan0_hwmod = {
334 .class = &am33xx_dcan_hwmod_class,
335 .clkdm_name = "l4ls_clkdm",
336 .main_clk = "dcan0_fck",
339 .modulemode = MODULEMODE_SWCTRL,
345 struct omap_hwmod am33xx_dcan1_hwmod = {
347 .class = &am33xx_dcan_hwmod_class,
348 .clkdm_name = "l4ls_clkdm",
349 .main_clk = "dcan1_fck",
352 .modulemode = MODULEMODE_SWCTRL,
358 static struct omap_hwmod_class_sysconfig am33xx_elm_sysc = {
362 .sysc_flags = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
363 SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE |
364 SYSS_HAS_RESET_STATUS),
365 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
366 .sysc_fields = &omap_hwmod_sysc_type1,
369 static struct omap_hwmod_class am33xx_elm_hwmod_class = {
371 .sysc = &am33xx_elm_sysc,
374 struct omap_hwmod am33xx_elm_hwmod = {
376 .class = &am33xx_elm_hwmod_class,
377 .clkdm_name = "l4ls_clkdm",
378 .main_clk = "l4ls_gclk",
381 .modulemode = MODULEMODE_SWCTRL,
387 static struct omap_hwmod_class_sysconfig am33xx_epwmss_sysc = {
390 .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE),
391 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
392 SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
393 MSTANDBY_SMART | MSTANDBY_SMART_WKUP),
394 .sysc_fields = &omap_hwmod_sysc_type2,
397 struct omap_hwmod_class am33xx_epwmss_hwmod_class = {
399 .sysc = &am33xx_epwmss_sysc,
403 struct omap_hwmod am33xx_epwmss0_hwmod = {
405 .class = &am33xx_epwmss_hwmod_class,
406 .clkdm_name = "l4ls_clkdm",
407 .main_clk = "l4ls_gclk",
410 .modulemode = MODULEMODE_SWCTRL,
416 struct omap_hwmod am33xx_epwmss1_hwmod = {
418 .class = &am33xx_epwmss_hwmod_class,
419 .clkdm_name = "l4ls_clkdm",
420 .main_clk = "l4ls_gclk",
423 .modulemode = MODULEMODE_SWCTRL,
429 struct omap_hwmod am33xx_epwmss2_hwmod = {
431 .class = &am33xx_epwmss_hwmod_class,
432 .clkdm_name = "l4ls_clkdm",
433 .main_clk = "l4ls_gclk",
436 .modulemode = MODULEMODE_SWCTRL,
442 static struct omap_hwmod_class_sysconfig gpmc_sysc = {
446 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_SIDLEMODE |
447 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
448 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
449 .sysc_fields = &omap_hwmod_sysc_type1,
452 static struct omap_hwmod_class am33xx_gpmc_hwmod_class = {
457 struct omap_hwmod am33xx_gpmc_hwmod = {
459 .class = &am33xx_gpmc_hwmod_class,
460 .clkdm_name = "l3s_clkdm",
461 /* Skip reset for CONFIG_OMAP_GPMC_DEBUG for bootloader timings */
462 .flags = DEBUG_OMAP_GPMC_HWMOD_FLAGS,
463 .main_clk = "l3s_gclk",
466 .modulemode = MODULEMODE_SWCTRL,
476 static struct omap_hwmod_class_sysconfig am33xx_rtc_sysc = {
479 .sysc_flags = SYSC_HAS_SIDLEMODE,
480 .idlemodes = (SIDLE_FORCE | SIDLE_NO |
481 SIDLE_SMART | SIDLE_SMART_WKUP),
482 .sysc_fields = &omap_hwmod_sysc_type3,
485 static struct omap_hwmod_class am33xx_rtc_hwmod_class = {
487 .sysc = &am33xx_rtc_sysc,
488 .unlock = &omap_hwmod_rtc_unlock,
489 .lock = &omap_hwmod_rtc_lock,
492 struct omap_hwmod am33xx_rtc_hwmod = {
494 .class = &am33xx_rtc_hwmod_class,
495 .clkdm_name = "l4_rtc_clkdm",
496 .main_clk = "clk_32768_ck",
499 .modulemode = MODULEMODE_SWCTRL,
505 static struct omap_hwmod_class_sysconfig am33xx_mcspi_sysc = {
509 .sysc_flags = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
510 SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE |
511 SYSS_HAS_RESET_STATUS),
512 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
513 .sysc_fields = &omap_hwmod_sysc_type1,
516 struct omap_hwmod_class am33xx_spi_hwmod_class = {
518 .sysc = &am33xx_mcspi_sysc,
522 struct omap_hwmod am33xx_spi0_hwmod = {
524 .class = &am33xx_spi_hwmod_class,
525 .clkdm_name = "l4ls_clkdm",
526 .main_clk = "dpll_per_m2_div4_ck",
529 .modulemode = MODULEMODE_SWCTRL,
535 struct omap_hwmod am33xx_spi1_hwmod = {
537 .class = &am33xx_spi_hwmod_class,
538 .clkdm_name = "l4ls_clkdm",
539 .main_clk = "dpll_per_m2_div4_ck",
542 .modulemode = MODULEMODE_SWCTRL,
549 * spinlock provides hardware assistance for synchronizing the
550 * processes running on multiple processors
553 static struct omap_hwmod_class_sysconfig am33xx_spinlock_sysc = {
557 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
558 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE |
559 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
560 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
561 .sysc_fields = &omap_hwmod_sysc_type1,
564 static struct omap_hwmod_class am33xx_spinlock_hwmod_class = {
566 .sysc = &am33xx_spinlock_sysc,
569 struct omap_hwmod am33xx_spinlock_hwmod = {
571 .class = &am33xx_spinlock_hwmod_class,
572 .clkdm_name = "l4ls_clkdm",
573 .main_clk = "l4ls_gclk",
576 .modulemode = MODULEMODE_SWCTRL,
581 /* 'timer 2-7' class */
582 static struct omap_hwmod_class_sysconfig am33xx_timer_sysc = {
586 .sysc_flags = SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
587 SYSC_HAS_RESET_STATUS,
588 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
590 .sysc_fields = &omap_hwmod_sysc_type2,
593 struct omap_hwmod_class am33xx_timer_hwmod_class = {
595 .sysc = &am33xx_timer_sysc,
599 static struct omap_hwmod_class_sysconfig am33xx_timer1ms_sysc = {
603 .sysc_flags = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
604 SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE |
605 SYSS_HAS_RESET_STATUS),
606 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
607 .sysc_fields = &omap_hwmod_sysc_type1,
610 static struct omap_hwmod_class am33xx_timer1ms_hwmod_class = {
612 .sysc = &am33xx_timer1ms_sysc,
615 struct omap_hwmod am33xx_timer1_hwmod = {
617 .class = &am33xx_timer1ms_hwmod_class,
618 .clkdm_name = "l4_wkup_clkdm",
619 .main_clk = "timer1_fck",
622 .modulemode = MODULEMODE_SWCTRL,
627 struct omap_hwmod am33xx_timer2_hwmod = {
629 .class = &am33xx_timer_hwmod_class,
630 .clkdm_name = "l4ls_clkdm",
631 .main_clk = "timer2_fck",
634 .modulemode = MODULEMODE_SWCTRL,
639 struct omap_hwmod am33xx_timer3_hwmod = {
641 .class = &am33xx_timer_hwmod_class,
642 .clkdm_name = "l4ls_clkdm",
643 .main_clk = "timer3_fck",
646 .modulemode = MODULEMODE_SWCTRL,
651 struct omap_hwmod am33xx_timer4_hwmod = {
653 .class = &am33xx_timer_hwmod_class,
654 .clkdm_name = "l4ls_clkdm",
655 .main_clk = "timer4_fck",
658 .modulemode = MODULEMODE_SWCTRL,
663 struct omap_hwmod am33xx_timer5_hwmod = {
665 .class = &am33xx_timer_hwmod_class,
666 .clkdm_name = "l4ls_clkdm",
667 .main_clk = "timer5_fck",
670 .modulemode = MODULEMODE_SWCTRL,
675 struct omap_hwmod am33xx_timer6_hwmod = {
677 .class = &am33xx_timer_hwmod_class,
678 .clkdm_name = "l4ls_clkdm",
679 .main_clk = "timer6_fck",
682 .modulemode = MODULEMODE_SWCTRL,
687 struct omap_hwmod am33xx_timer7_hwmod = {
689 .class = &am33xx_timer_hwmod_class,
690 .clkdm_name = "l4ls_clkdm",
691 .main_clk = "timer7_fck",
694 .modulemode = MODULEMODE_SWCTRL,
700 static struct omap_hwmod_class am33xx_tpcc_hwmod_class = {
704 struct omap_hwmod am33xx_tpcc_hwmod = {
706 .class = &am33xx_tpcc_hwmod_class,
707 .clkdm_name = "l3_clkdm",
708 .main_clk = "l3_gclk",
711 .modulemode = MODULEMODE_SWCTRL,
716 static struct omap_hwmod_class_sysconfig am33xx_tptc_sysc = {
719 .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
721 .idlemodes = (SIDLE_FORCE | SIDLE_SMART | MSTANDBY_FORCE),
722 .sysc_fields = &omap_hwmod_sysc_type2,
726 static struct omap_hwmod_class am33xx_tptc_hwmod_class = {
728 .sysc = &am33xx_tptc_sysc,
732 struct omap_hwmod am33xx_tptc0_hwmod = {
734 .class = &am33xx_tptc_hwmod_class,
735 .clkdm_name = "l3_clkdm",
736 .flags = HWMOD_SWSUP_SIDLE | HWMOD_SWSUP_MSTANDBY,
737 .main_clk = "l3_gclk",
740 .modulemode = MODULEMODE_SWCTRL,
746 struct omap_hwmod am33xx_tptc1_hwmod = {
748 .class = &am33xx_tptc_hwmod_class,
749 .clkdm_name = "l3_clkdm",
750 .flags = (HWMOD_SWSUP_SIDLE | HWMOD_SWSUP_MSTANDBY),
751 .main_clk = "l3_gclk",
754 .modulemode = MODULEMODE_SWCTRL,
760 struct omap_hwmod am33xx_tptc2_hwmod = {
762 .class = &am33xx_tptc_hwmod_class,
763 .clkdm_name = "l3_clkdm",
764 .flags = (HWMOD_SWSUP_SIDLE | HWMOD_SWSUP_MSTANDBY),
765 .main_clk = "l3_gclk",
768 .modulemode = MODULEMODE_SWCTRL,
773 static void omap_hwmod_am33xx_clkctrl(void)
775 CLKCTRL(am33xx_dcan0_hwmod, AM33XX_CM_PER_DCAN0_CLKCTRL_OFFSET);
776 CLKCTRL(am33xx_dcan1_hwmod, AM33XX_CM_PER_DCAN1_CLKCTRL_OFFSET);
777 CLKCTRL(am33xx_elm_hwmod, AM33XX_CM_PER_ELM_CLKCTRL_OFFSET);
778 CLKCTRL(am33xx_epwmss0_hwmod, AM33XX_CM_PER_EPWMSS0_CLKCTRL_OFFSET);
779 CLKCTRL(am33xx_epwmss1_hwmod, AM33XX_CM_PER_EPWMSS1_CLKCTRL_OFFSET);
780 CLKCTRL(am33xx_epwmss2_hwmod, AM33XX_CM_PER_EPWMSS2_CLKCTRL_OFFSET);
781 CLKCTRL(am33xx_spi0_hwmod, AM33XX_CM_PER_SPI0_CLKCTRL_OFFSET);
782 CLKCTRL(am33xx_spi1_hwmod, AM33XX_CM_PER_SPI1_CLKCTRL_OFFSET);
783 CLKCTRL(am33xx_spinlock_hwmod, AM33XX_CM_PER_SPINLOCK_CLKCTRL_OFFSET);
784 CLKCTRL(am33xx_timer2_hwmod, AM33XX_CM_PER_TIMER2_CLKCTRL_OFFSET);
785 CLKCTRL(am33xx_timer3_hwmod, AM33XX_CM_PER_TIMER3_CLKCTRL_OFFSET);
786 CLKCTRL(am33xx_timer4_hwmod, AM33XX_CM_PER_TIMER4_CLKCTRL_OFFSET);
787 CLKCTRL(am33xx_timer5_hwmod, AM33XX_CM_PER_TIMER5_CLKCTRL_OFFSET);
788 CLKCTRL(am33xx_timer6_hwmod, AM33XX_CM_PER_TIMER6_CLKCTRL_OFFSET);
789 CLKCTRL(am33xx_timer7_hwmod, AM33XX_CM_PER_TIMER7_CLKCTRL_OFFSET);
790 CLKCTRL(am33xx_smartreflex0_hwmod,
791 AM33XX_CM_WKUP_SMARTREFLEX0_CLKCTRL_OFFSET);
792 CLKCTRL(am33xx_smartreflex1_hwmod,
793 AM33XX_CM_WKUP_SMARTREFLEX1_CLKCTRL_OFFSET);
794 CLKCTRL(am33xx_timer1_hwmod, AM33XX_CM_WKUP_TIMER1_CLKCTRL_OFFSET);
795 CLKCTRL(am33xx_rtc_hwmod, AM33XX_CM_RTC_RTC_CLKCTRL_OFFSET);
796 PRCM_FLAGS(am33xx_rtc_hwmod, HWMOD_OMAP4_ZERO_CLKCTRL_OFFSET);
797 CLKCTRL(am33xx_gpmc_hwmod, AM33XX_CM_PER_GPMC_CLKCTRL_OFFSET);
798 CLKCTRL(am33xx_l4_ls_hwmod, AM33XX_CM_PER_L4LS_CLKCTRL_OFFSET);
799 CLKCTRL(am33xx_l4_wkup_hwmod, AM33XX_CM_WKUP_L4WKUP_CLKCTRL_OFFSET);
800 CLKCTRL(am33xx_l3_main_hwmod, AM33XX_CM_PER_L3_CLKCTRL_OFFSET);
801 CLKCTRL(am33xx_tpcc_hwmod, AM33XX_CM_PER_TPCC_CLKCTRL_OFFSET);
802 CLKCTRL(am33xx_tptc0_hwmod, AM33XX_CM_PER_TPTC0_CLKCTRL_OFFSET);
803 CLKCTRL(am33xx_tptc1_hwmod, AM33XX_CM_PER_TPTC1_CLKCTRL_OFFSET);
804 CLKCTRL(am33xx_tptc2_hwmod, AM33XX_CM_PER_TPTC2_CLKCTRL_OFFSET);
805 CLKCTRL(am33xx_gfx_hwmod, AM33XX_CM_GFX_GFX_CLKCTRL_OFFSET);
806 CLKCTRL(am33xx_pruss_hwmod, AM33XX_CM_PER_PRUSS_CLKCTRL_OFFSET);
807 CLKCTRL(am33xx_mpu_hwmod , AM33XX_CM_MPU_MPU_CLKCTRL_OFFSET);
808 CLKCTRL(am33xx_l3_instr_hwmod , AM33XX_CM_PER_L3_INSTR_CLKCTRL_OFFSET);
809 CLKCTRL(am33xx_ocmcram_hwmod , AM33XX_CM_PER_OCMCRAM_CLKCTRL_OFFSET);
810 CLKCTRL(am33xx_sha0_hwmod , AM33XX_CM_PER_SHA0_CLKCTRL_OFFSET);
811 CLKCTRL(am33xx_aes0_hwmod , AM33XX_CM_PER_AES0_CLKCTRL_OFFSET);
814 static void omap_hwmod_am33xx_rst(void)
816 RSTCTRL(am33xx_pruss_hwmod, AM33XX_RM_PER_RSTCTRL_OFFSET);
817 RSTCTRL(am33xx_gfx_hwmod, AM33XX_RM_GFX_RSTCTRL_OFFSET);
818 RSTST(am33xx_gfx_hwmod, AM33XX_RM_GFX_RSTST_OFFSET);
821 void omap_hwmod_am33xx_reg(void)
823 omap_hwmod_am33xx_clkctrl();
824 omap_hwmod_am33xx_rst();
827 static void omap_hwmod_am43xx_clkctrl(void)
829 CLKCTRL(am33xx_dcan0_hwmod, AM43XX_CM_PER_DCAN0_CLKCTRL_OFFSET);
830 CLKCTRL(am33xx_dcan1_hwmod, AM43XX_CM_PER_DCAN1_CLKCTRL_OFFSET);
831 CLKCTRL(am33xx_elm_hwmod, AM43XX_CM_PER_ELM_CLKCTRL_OFFSET);
832 CLKCTRL(am33xx_epwmss0_hwmod, AM43XX_CM_PER_EPWMSS0_CLKCTRL_OFFSET);
833 CLKCTRL(am33xx_epwmss1_hwmod, AM43XX_CM_PER_EPWMSS1_CLKCTRL_OFFSET);
834 CLKCTRL(am33xx_epwmss2_hwmod, AM43XX_CM_PER_EPWMSS2_CLKCTRL_OFFSET);
835 CLKCTRL(am33xx_spi0_hwmod, AM43XX_CM_PER_SPI0_CLKCTRL_OFFSET);
836 CLKCTRL(am33xx_spi1_hwmod, AM43XX_CM_PER_SPI1_CLKCTRL_OFFSET);
837 CLKCTRL(am33xx_spinlock_hwmod, AM43XX_CM_PER_SPINLOCK_CLKCTRL_OFFSET);
838 CLKCTRL(am33xx_timer2_hwmod, AM43XX_CM_PER_TIMER2_CLKCTRL_OFFSET);
839 CLKCTRL(am33xx_timer3_hwmod, AM43XX_CM_PER_TIMER3_CLKCTRL_OFFSET);
840 CLKCTRL(am33xx_timer4_hwmod, AM43XX_CM_PER_TIMER4_CLKCTRL_OFFSET);
841 CLKCTRL(am33xx_timer5_hwmod, AM43XX_CM_PER_TIMER5_CLKCTRL_OFFSET);
842 CLKCTRL(am33xx_timer6_hwmod, AM43XX_CM_PER_TIMER6_CLKCTRL_OFFSET);
843 CLKCTRL(am33xx_timer7_hwmod, AM43XX_CM_PER_TIMER7_CLKCTRL_OFFSET);
844 CLKCTRL(am33xx_smartreflex0_hwmod,
845 AM43XX_CM_WKUP_SMARTREFLEX0_CLKCTRL_OFFSET);
846 CLKCTRL(am33xx_smartreflex1_hwmod,
847 AM43XX_CM_WKUP_SMARTREFLEX1_CLKCTRL_OFFSET);
848 CLKCTRL(am33xx_timer1_hwmod, AM43XX_CM_WKUP_TIMER1_CLKCTRL_OFFSET);
849 CLKCTRL(am33xx_rtc_hwmod, AM43XX_CM_RTC_RTC_CLKCTRL_OFFSET);
850 CLKCTRL(am33xx_gpmc_hwmod, AM43XX_CM_PER_GPMC_CLKCTRL_OFFSET);
851 CLKCTRL(am33xx_l4_ls_hwmod, AM43XX_CM_PER_L4LS_CLKCTRL_OFFSET);
852 CLKCTRL(am33xx_l4_wkup_hwmod, AM43XX_CM_WKUP_L4WKUP_CLKCTRL_OFFSET);
853 CLKCTRL(am33xx_l3_main_hwmod, AM43XX_CM_PER_L3_CLKCTRL_OFFSET);
854 CLKCTRL(am33xx_tpcc_hwmod, AM43XX_CM_PER_TPCC_CLKCTRL_OFFSET);
855 CLKCTRL(am33xx_tptc0_hwmod, AM43XX_CM_PER_TPTC0_CLKCTRL_OFFSET);
856 CLKCTRL(am33xx_tptc1_hwmod, AM43XX_CM_PER_TPTC1_CLKCTRL_OFFSET);
857 CLKCTRL(am33xx_tptc2_hwmod, AM43XX_CM_PER_TPTC2_CLKCTRL_OFFSET);
858 CLKCTRL(am33xx_gfx_hwmod, AM43XX_CM_GFX_GFX_CLKCTRL_OFFSET);
859 CLKCTRL(am33xx_pruss_hwmod, AM43XX_CM_PER_PRUSS_CLKCTRL_OFFSET);
860 CLKCTRL(am33xx_mpu_hwmod , AM43XX_CM_MPU_MPU_CLKCTRL_OFFSET);
861 CLKCTRL(am33xx_l3_instr_hwmod , AM43XX_CM_PER_L3_INSTR_CLKCTRL_OFFSET);
862 CLKCTRL(am33xx_ocmcram_hwmod , AM43XX_CM_PER_OCMCRAM_CLKCTRL_OFFSET);
863 CLKCTRL(am33xx_sha0_hwmod , AM43XX_CM_PER_SHA0_CLKCTRL_OFFSET);
864 CLKCTRL(am33xx_aes0_hwmod , AM43XX_CM_PER_AES0_CLKCTRL_OFFSET);
867 static void omap_hwmod_am43xx_rst(void)
869 RSTCTRL(am33xx_pruss_hwmod, AM43XX_RM_PER_RSTCTRL_OFFSET);
870 RSTCTRL(am33xx_gfx_hwmod, AM43XX_RM_GFX_RSTCTRL_OFFSET);
871 RSTST(am33xx_pruss_hwmod, AM43XX_RM_PER_RSTST_OFFSET);
872 RSTST(am33xx_gfx_hwmod, AM43XX_RM_GFX_RSTST_OFFSET);
875 void omap_hwmod_am43xx_reg(void)
877 omap_hwmod_am43xx_clkctrl();
878 omap_hwmod_am43xx_rst();