diff options
Diffstat (limited to 'arch/arm/mach-omap2/omap_hwmod_44xx_data.c')
-rw-r--r-- | arch/arm/mach-omap2/omap_hwmod_44xx_data.c | 133 |
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 | |||
461 | static 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 | ||
486 | static struct omap_hwmod_class omap44xx_wd_timer_hwmod_class = { | ||
487 | .name = "wd_timer", | ||
488 | .sysc = &omap44xx_wd_timer_sysc, | ||
489 | }; | ||
490 | |||
491 | /* wd_timer2 */ | ||
492 | static struct omap_hwmod omap44xx_wd_timer2_hwmod; | ||
493 | static struct omap_hwmod_irq_info omap44xx_wd_timer2_irqs[] = { | ||
494 | { .irq = 80 + OMAP44XX_IRQ_GIC_START }, | ||
495 | }; | ||
496 | |||
497 | static 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 | |||
470 | static struct omap_hwmod_class omap44xx_uart_hwmod_class = { | 505 | static 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 */ | ||
582 | static 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 */ | ||
592 | static struct omap_hwmod_ocp_if *omap44xx_wd_timer2_slaves[] = { | ||
593 | &omap44xx_l4_wkup__wd_timer2, | ||
594 | }; | ||
595 | |||
596 | static 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 */ | ||
613 | static struct omap_hwmod omap44xx_wd_timer3_hwmod; | ||
614 | static struct omap_hwmod_irq_info omap44xx_wd_timer3_irqs[] = { | ||
615 | { .irq = 36 + OMAP44XX_IRQ_GIC_START }, | ||
616 | }; | ||
617 | |||
618 | static 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 */ |
547 | static struct omap_hwmod_ocp_if omap44xx_l4_per__uart2 = { | 627 | static 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 */ | ||
679 | static 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) */ | ||
689 | static 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 */ |
599 | static struct omap_hwmod_ocp_if omap44xx_l4_per__uart3 = { | 698 | static 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 | ||
750 | static 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 */ | ||
760 | static struct omap_hwmod_ocp_if *omap44xx_wd_timer3_slaves[] = { | ||
761 | &omap44xx_l4_abe__wd_timer3, | ||
762 | &omap44xx_l4_abe__wd_timer3_dma, | ||
763 | }; | ||
764 | |||
765 | static 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 */ |
652 | static struct omap_hwmod_ocp_if omap44xx_l4_per__uart4 = { | 782 | static 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, |