aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-omap2/omap_hwmod_44xx_data.c')
-rw-r--r--arch/arm/mach-omap2/omap_hwmod_44xx_data.c133
1 files changed, 133 insertions, 0 deletions
diff --git a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
index afcbd483a6c..7274db4de48 100644
--- a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
@@ -453,6 +453,22 @@ static struct omap_hwmod omap44xx_mpu_hwmod = {
453}; 453};
454 454
455/* 455/*
456 * 'wd_timer' class
457 * 32-bit watchdog upward counter that generates a pulse on the reset pin on
458 * overflow condition
459 */
460
461static struct omap_hwmod_class_sysconfig omap44xx_wd_timer_sysc = {
462 .rev_offs = 0x0000,
463 .sysc_offs = 0x0010,
464 .syss_offs = 0x0014,
465 .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_EMUFREE |
466 SYSC_HAS_SOFTRESET),
467 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
468 .sysc_fields = &omap_hwmod_sysc_type1,
469};
470
471/*
456 * 'uart' class 472 * 'uart' class
457 * universal asynchronous receiver/transmitter (uart) 473 * universal asynchronous receiver/transmitter (uart)
458 */ 474 */
@@ -467,6 +483,25 @@ static struct omap_hwmod_class_sysconfig omap44xx_uart_sysc = {
467 .sysc_fields = &omap_hwmod_sysc_type1, 483 .sysc_fields = &omap_hwmod_sysc_type1,
468}; 484};
469 485
486static struct omap_hwmod_class omap44xx_wd_timer_hwmod_class = {
487 .name = "wd_timer",
488 .sysc = &omap44xx_wd_timer_sysc,
489};
490
491/* wd_timer2 */
492static struct omap_hwmod omap44xx_wd_timer2_hwmod;
493static struct omap_hwmod_irq_info omap44xx_wd_timer2_irqs[] = {
494 { .irq = 80 + OMAP44XX_IRQ_GIC_START },
495};
496
497static struct omap_hwmod_addr_space omap44xx_wd_timer2_addrs[] = {
498 {
499 .pa_start = 0x4a314000,
500 .pa_end = 0x4a31407f,
501 .flags = ADDR_TYPE_RT
502 },
503};
504
470static struct omap_hwmod_class omap44xx_uart_hwmod_class = { 505static struct omap_hwmod_class omap44xx_uart_hwmod_class = {
471 .name = "uart", 506 .name = "uart",
472 .sysc = &omap44xx_uart_sysc, 507 .sysc = &omap44xx_uart_sysc,
@@ -543,6 +578,51 @@ static struct omap_hwmod_addr_space omap44xx_uart2_addrs[] = {
543 }, 578 },
544}; 579};
545 580
581/* l4_wkup -> wd_timer2 */
582static struct omap_hwmod_ocp_if omap44xx_l4_wkup__wd_timer2 = {
583 .master = &omap44xx_l4_wkup_hwmod,
584 .slave = &omap44xx_wd_timer2_hwmod,
585 .clk = "l4_wkup_clk_mux_ck",
586 .addr = omap44xx_wd_timer2_addrs,
587 .addr_cnt = ARRAY_SIZE(omap44xx_wd_timer2_addrs),
588 .user = OCP_USER_MPU | OCP_USER_SDMA,
589};
590
591/* wd_timer2 slave ports */
592static struct omap_hwmod_ocp_if *omap44xx_wd_timer2_slaves[] = {
593 &omap44xx_l4_wkup__wd_timer2,
594};
595
596static struct omap_hwmod omap44xx_wd_timer2_hwmod = {
597 .name = "wd_timer2",
598 .class = &omap44xx_wd_timer_hwmod_class,
599 .mpu_irqs = omap44xx_wd_timer2_irqs,
600 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_wd_timer2_irqs),
601 .main_clk = "wd_timer2_fck",
602 .prcm = {
603 .omap4 = {
604 .clkctrl_reg = OMAP4430_CM_WKUP_WDT2_CLKCTRL,
605 },
606 },
607 .slaves = omap44xx_wd_timer2_slaves,
608 .slaves_cnt = ARRAY_SIZE(omap44xx_wd_timer2_slaves),
609 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
610};
611
612/* wd_timer3 */
613static struct omap_hwmod omap44xx_wd_timer3_hwmod;
614static struct omap_hwmod_irq_info omap44xx_wd_timer3_irqs[] = {
615 { .irq = 36 + OMAP44XX_IRQ_GIC_START },
616};
617
618static struct omap_hwmod_addr_space omap44xx_wd_timer3_addrs[] = {
619 {
620 .pa_start = 0x40130000,
621 .pa_end = 0x4013007f,
622 .flags = ADDR_TYPE_RT
623 },
624};
625
546/* l4_per -> uart2 */ 626/* l4_per -> uart2 */
547static struct omap_hwmod_ocp_if omap44xx_l4_per__uart2 = { 627static struct omap_hwmod_ocp_if omap44xx_l4_per__uart2 = {
548 .master = &omap44xx_l4_per_hwmod, 628 .master = &omap44xx_l4_per_hwmod,
@@ -595,6 +675,25 @@ static struct omap_hwmod_addr_space omap44xx_uart3_addrs[] = {
595 }, 675 },
596}; 676};
597 677
678/* l4_abe -> wd_timer3 */
679static struct omap_hwmod_ocp_if omap44xx_l4_abe__wd_timer3 = {
680 .master = &omap44xx_l4_abe_hwmod,
681 .slave = &omap44xx_wd_timer3_hwmod,
682 .clk = "ocp_abe_iclk",
683 .addr = omap44xx_wd_timer3_addrs,
684 .addr_cnt = ARRAY_SIZE(omap44xx_wd_timer3_addrs),
685 .user = OCP_USER_MPU,
686};
687
688/* l4_abe -> wd_timer3 (dma) */
689static struct omap_hwmod_addr_space omap44xx_wd_timer3_dma_addrs[] = {
690 {
691 .pa_start = 0x49030000,
692 .pa_end = 0x4903007f,
693 .flags = ADDR_TYPE_RT
694 },
695};
696
598/* l4_per -> uart3 */ 697/* l4_per -> uart3 */
599static struct omap_hwmod_ocp_if omap44xx_l4_per__uart3 = { 698static struct omap_hwmod_ocp_if omap44xx_l4_per__uart3 = {
600 .master = &omap44xx_l4_per_hwmod, 699 .master = &omap44xx_l4_per_hwmod,
@@ -648,6 +747,37 @@ static struct omap_hwmod_addr_space omap44xx_uart4_addrs[] = {
648 }, 747 },
649}; 748};
650 749
750static struct omap_hwmod_ocp_if omap44xx_l4_abe__wd_timer3_dma = {
751 .master = &omap44xx_l4_abe_hwmod,
752 .slave = &omap44xx_wd_timer3_hwmod,
753 .clk = "ocp_abe_iclk",
754 .addr = omap44xx_wd_timer3_dma_addrs,
755 .addr_cnt = ARRAY_SIZE(omap44xx_wd_timer3_dma_addrs),
756 .user = OCP_USER_SDMA,
757};
758
759/* wd_timer3 slave ports */
760static struct omap_hwmod_ocp_if *omap44xx_wd_timer3_slaves[] = {
761 &omap44xx_l4_abe__wd_timer3,
762 &omap44xx_l4_abe__wd_timer3_dma,
763};
764
765static struct omap_hwmod omap44xx_wd_timer3_hwmod = {
766 .name = "wd_timer3",
767 .class = &omap44xx_wd_timer_hwmod_class,
768 .mpu_irqs = omap44xx_wd_timer3_irqs,
769 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_wd_timer3_irqs),
770 .main_clk = "wd_timer3_fck",
771 .prcm = {
772 .omap4 = {
773 .clkctrl_reg = OMAP4430_CM1_ABE_WDT3_CLKCTRL,
774 },
775 },
776 .slaves = omap44xx_wd_timer3_slaves,
777 .slaves_cnt = ARRAY_SIZE(omap44xx_wd_timer3_slaves),
778 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
779};
780
651/* l4_per -> uart4 */ 781/* l4_per -> uart4 */
652static struct omap_hwmod_ocp_if omap44xx_l4_per__uart4 = { 782static struct omap_hwmod_ocp_if omap44xx_l4_per__uart4 = {
653 .master = &omap44xx_l4_per_hwmod, 783 .master = &omap44xx_l4_per_hwmod,
@@ -701,6 +831,9 @@ static __initdata struct omap_hwmod *omap44xx_hwmods[] = {
701 831
702 /* mpu class */ 832 /* mpu class */
703 &omap44xx_mpu_hwmod, 833 &omap44xx_mpu_hwmod,
834 /* wd_timer class */
835 &omap44xx_wd_timer2_hwmod,
836 &omap44xx_wd_timer3_hwmod,
704 837
705 /* uart class */ 838 /* uart class */
706 &omap44xx_uart1_hwmod, 839 &omap44xx_uart1_hwmod,