diff options
author | Senthilvadivu Guruswamy <svadivu@ti.com> | 2011-02-22 02:51:15 -0500 |
---|---|---|
committer | Tomi Valkeinen <tomi.valkeinen@ti.com> | 2011-02-23 02:19:06 -0500 |
commit | de56dbb6c1f8de1f54b09111eb50d8f9b8b073b2 (patch) | |
tree | 73bf45910134019692220d68469cdca7b119065a /arch/arm | |
parent | 996746ca127d722c279325552cdcc48b20079a61 (diff) |
OMAP2430: hwmod data: add DSS DISPC RFBI VENC
Hwmod needs database of all IPs in a system. This patch generates the hwmod
database for OMAP2430 Display Sub System. Since DSS is also considered as an
IP as DISPC, RFBI, name it as dss_core.
Acked-by: Benoit Cousson <b-cousson@ti.com>
Reviewed-by: Kevin Hilman <khilman@ti.com>
Tested-by: Kevin Hilman <khilman@ti.com>
Signed-off-by: Sumit Semwal <sumit.semwal@ti.com>
Signed-off-by: Senthilvadivu Guruswamy <svadivu@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Diffstat (limited to 'arch/arm')
-rw-r--r-- | arch/arm/mach-omap2/omap_hwmod_2430_data.c | 284 |
1 files changed, 284 insertions, 0 deletions
diff --git a/arch/arm/mach-omap2/omap_hwmod_2430_data.c b/arch/arm/mach-omap2/omap_hwmod_2430_data.c index 7ba688a1c840..de0015d38433 100644 --- a/arch/arm/mach-omap2/omap_hwmod_2430_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_2430_data.c | |||
@@ -19,6 +19,7 @@ | |||
19 | #include <plat/i2c.h> | 19 | #include <plat/i2c.h> |
20 | #include <plat/gpio.h> | 20 | #include <plat/gpio.h> |
21 | #include <plat/mcspi.h> | 21 | #include <plat/mcspi.h> |
22 | #include <plat/l3_2xxx.h> | ||
22 | 23 | ||
23 | #include "omap_hwmod_common_data.h" | 24 | #include "omap_hwmod_common_data.h" |
24 | 25 | ||
@@ -39,6 +40,10 @@ static struct omap_hwmod omap2430_mpu_hwmod; | |||
39 | static struct omap_hwmod omap2430_iva_hwmod; | 40 | static struct omap_hwmod omap2430_iva_hwmod; |
40 | static struct omap_hwmod omap2430_l3_main_hwmod; | 41 | static struct omap_hwmod omap2430_l3_main_hwmod; |
41 | static struct omap_hwmod omap2430_l4_core_hwmod; | 42 | static struct omap_hwmod omap2430_l4_core_hwmod; |
43 | static struct omap_hwmod omap2430_dss_core_hwmod; | ||
44 | static struct omap_hwmod omap2430_dss_dispc_hwmod; | ||
45 | static struct omap_hwmod omap2430_dss_rfbi_hwmod; | ||
46 | static struct omap_hwmod omap2430_dss_venc_hwmod; | ||
42 | static struct omap_hwmod omap2430_wd_timer2_hwmod; | 47 | static struct omap_hwmod omap2430_wd_timer2_hwmod; |
43 | static struct omap_hwmod omap2430_gpio1_hwmod; | 48 | static struct omap_hwmod omap2430_gpio1_hwmod; |
44 | static struct omap_hwmod omap2430_gpio2_hwmod; | 49 | static struct omap_hwmod omap2430_gpio2_hwmod; |
@@ -69,6 +74,19 @@ static struct omap_hwmod_ocp_if *omap2430_l3_main_slaves[] = { | |||
69 | &omap2430_mpu__l3_main, | 74 | &omap2430_mpu__l3_main, |
70 | }; | 75 | }; |
71 | 76 | ||
77 | /* DSS -> l3 */ | ||
78 | static struct omap_hwmod_ocp_if omap2430_dss__l3 = { | ||
79 | .master = &omap2430_dss_core_hwmod, | ||
80 | .slave = &omap2430_l3_main_hwmod, | ||
81 | .fw = { | ||
82 | .omap2 = { | ||
83 | .l3_perm_bit = OMAP2_L3_CORE_FW_CONNID_DSS, | ||
84 | .flags = OMAP_FIREWALL_L3, | ||
85 | } | ||
86 | }, | ||
87 | .user = OCP_USER_MPU | OCP_USER_SDMA, | ||
88 | }; | ||
89 | |||
72 | /* Master interfaces on the L3 interconnect */ | 90 | /* Master interfaces on the L3 interconnect */ |
73 | static struct omap_hwmod_ocp_if *omap2430_l3_main_masters[] = { | 91 | static struct omap_hwmod_ocp_if *omap2430_l3_main_masters[] = { |
74 | &omap2430_l3_main__l4_core, | 92 | &omap2430_l3_main__l4_core, |
@@ -566,6 +584,266 @@ static struct omap_hwmod omap2430_uart3_hwmod = { | |||
566 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430), | 584 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430), |
567 | }; | 585 | }; |
568 | 586 | ||
587 | /* | ||
588 | * 'dss' class | ||
589 | * display sub-system | ||
590 | */ | ||
591 | |||
592 | static struct omap_hwmod_class_sysconfig omap2430_dss_sysc = { | ||
593 | .rev_offs = 0x0000, | ||
594 | .sysc_offs = 0x0010, | ||
595 | .syss_offs = 0x0014, | ||
596 | .sysc_flags = (SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE), | ||
597 | .sysc_fields = &omap_hwmod_sysc_type1, | ||
598 | }; | ||
599 | |||
600 | static struct omap_hwmod_class omap2430_dss_hwmod_class = { | ||
601 | .name = "dss", | ||
602 | .sysc = &omap2430_dss_sysc, | ||
603 | }; | ||
604 | |||
605 | /* dss */ | ||
606 | static struct omap_hwmod_irq_info omap2430_dss_irqs[] = { | ||
607 | { .irq = 25 }, | ||
608 | }; | ||
609 | static struct omap_hwmod_dma_info omap2430_dss_sdma_chs[] = { | ||
610 | { .name = "dispc", .dma_req = 5 }, | ||
611 | }; | ||
612 | |||
613 | /* dss */ | ||
614 | /* dss master ports */ | ||
615 | static struct omap_hwmod_ocp_if *omap2430_dss_masters[] = { | ||
616 | &omap2430_dss__l3, | ||
617 | }; | ||
618 | |||
619 | static struct omap_hwmod_addr_space omap2430_dss_addrs[] = { | ||
620 | { | ||
621 | .pa_start = 0x48050000, | ||
622 | .pa_end = 0x480503FF, | ||
623 | .flags = ADDR_TYPE_RT | ||
624 | }, | ||
625 | }; | ||
626 | |||
627 | /* l4_core -> dss */ | ||
628 | static struct omap_hwmod_ocp_if omap2430_l4_core__dss = { | ||
629 | .master = &omap2430_l4_core_hwmod, | ||
630 | .slave = &omap2430_dss_core_hwmod, | ||
631 | .clk = "dss_ick", | ||
632 | .addr = omap2430_dss_addrs, | ||
633 | .addr_cnt = ARRAY_SIZE(omap2430_dss_addrs), | ||
634 | .user = OCP_USER_MPU | OCP_USER_SDMA, | ||
635 | }; | ||
636 | |||
637 | /* dss slave ports */ | ||
638 | static struct omap_hwmod_ocp_if *omap2430_dss_slaves[] = { | ||
639 | &omap2430_l4_core__dss, | ||
640 | }; | ||
641 | |||
642 | static struct omap_hwmod_opt_clk dss_opt_clks[] = { | ||
643 | { .role = "tv_clk", .clk = "dss_54m_fck" }, | ||
644 | { .role = "sys_clk", .clk = "dss2_fck" }, | ||
645 | }; | ||
646 | |||
647 | static struct omap_hwmod omap2430_dss_core_hwmod = { | ||
648 | .name = "dss_core", | ||
649 | .class = &omap2430_dss_hwmod_class, | ||
650 | .main_clk = "dss1_fck", /* instead of dss_fck */ | ||
651 | .mpu_irqs = omap2430_dss_irqs, | ||
652 | .mpu_irqs_cnt = ARRAY_SIZE(omap2430_dss_irqs), | ||
653 | .sdma_reqs = omap2430_dss_sdma_chs, | ||
654 | .sdma_reqs_cnt = ARRAY_SIZE(omap2430_dss_sdma_chs), | ||
655 | .prcm = { | ||
656 | .omap2 = { | ||
657 | .prcm_reg_id = 1, | ||
658 | .module_bit = OMAP24XX_EN_DSS1_SHIFT, | ||
659 | .module_offs = CORE_MOD, | ||
660 | .idlest_reg_id = 1, | ||
661 | .idlest_stdby_bit = OMAP24XX_ST_DSS_SHIFT, | ||
662 | }, | ||
663 | }, | ||
664 | .opt_clks = dss_opt_clks, | ||
665 | .opt_clks_cnt = ARRAY_SIZE(dss_opt_clks), | ||
666 | .slaves = omap2430_dss_slaves, | ||
667 | .slaves_cnt = ARRAY_SIZE(omap2430_dss_slaves), | ||
668 | .masters = omap2430_dss_masters, | ||
669 | .masters_cnt = ARRAY_SIZE(omap2430_dss_masters), | ||
670 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430), | ||
671 | .flags = HWMOD_NO_IDLEST, | ||
672 | }; | ||
673 | |||
674 | /* | ||
675 | * 'dispc' class | ||
676 | * display controller | ||
677 | */ | ||
678 | |||
679 | static struct omap_hwmod_class_sysconfig omap2430_dispc_sysc = { | ||
680 | .rev_offs = 0x0000, | ||
681 | .sysc_offs = 0x0010, | ||
682 | .syss_offs = 0x0014, | ||
683 | .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE | | ||
684 | SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE), | ||
685 | .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | | ||
686 | MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART), | ||
687 | .sysc_fields = &omap_hwmod_sysc_type1, | ||
688 | }; | ||
689 | |||
690 | static struct omap_hwmod_class omap2430_dispc_hwmod_class = { | ||
691 | .name = "dispc", | ||
692 | .sysc = &omap2430_dispc_sysc, | ||
693 | }; | ||
694 | |||
695 | static struct omap_hwmod_addr_space omap2430_dss_dispc_addrs[] = { | ||
696 | { | ||
697 | .pa_start = 0x48050400, | ||
698 | .pa_end = 0x480507FF, | ||
699 | .flags = ADDR_TYPE_RT | ||
700 | }, | ||
701 | }; | ||
702 | |||
703 | /* l4_core -> dss_dispc */ | ||
704 | static struct omap_hwmod_ocp_if omap2430_l4_core__dss_dispc = { | ||
705 | .master = &omap2430_l4_core_hwmod, | ||
706 | .slave = &omap2430_dss_dispc_hwmod, | ||
707 | .clk = "dss_ick", | ||
708 | .addr = omap2430_dss_dispc_addrs, | ||
709 | .addr_cnt = ARRAY_SIZE(omap2430_dss_dispc_addrs), | ||
710 | .user = OCP_USER_MPU | OCP_USER_SDMA, | ||
711 | }; | ||
712 | |||
713 | /* dss_dispc slave ports */ | ||
714 | static struct omap_hwmod_ocp_if *omap2430_dss_dispc_slaves[] = { | ||
715 | &omap2430_l4_core__dss_dispc, | ||
716 | }; | ||
717 | |||
718 | static struct omap_hwmod omap2430_dss_dispc_hwmod = { | ||
719 | .name = "dss_dispc", | ||
720 | .class = &omap2430_dispc_hwmod_class, | ||
721 | .main_clk = "dss1_fck", | ||
722 | .prcm = { | ||
723 | .omap2 = { | ||
724 | .prcm_reg_id = 1, | ||
725 | .module_bit = OMAP24XX_EN_DSS1_SHIFT, | ||
726 | .module_offs = CORE_MOD, | ||
727 | .idlest_reg_id = 1, | ||
728 | .idlest_stdby_bit = OMAP24XX_ST_DSS_SHIFT, | ||
729 | }, | ||
730 | }, | ||
731 | .slaves = omap2430_dss_dispc_slaves, | ||
732 | .slaves_cnt = ARRAY_SIZE(omap2430_dss_dispc_slaves), | ||
733 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430), | ||
734 | .flags = HWMOD_NO_IDLEST, | ||
735 | }; | ||
736 | |||
737 | /* | ||
738 | * 'rfbi' class | ||
739 | * remote frame buffer interface | ||
740 | */ | ||
741 | |||
742 | static struct omap_hwmod_class_sysconfig omap2430_rfbi_sysc = { | ||
743 | .rev_offs = 0x0000, | ||
744 | .sysc_offs = 0x0010, | ||
745 | .syss_offs = 0x0014, | ||
746 | .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET | | ||
747 | SYSC_HAS_AUTOIDLE), | ||
748 | .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), | ||
749 | .sysc_fields = &omap_hwmod_sysc_type1, | ||
750 | }; | ||
751 | |||
752 | static struct omap_hwmod_class omap2430_rfbi_hwmod_class = { | ||
753 | .name = "rfbi", | ||
754 | .sysc = &omap2430_rfbi_sysc, | ||
755 | }; | ||
756 | |||
757 | static struct omap_hwmod_addr_space omap2430_dss_rfbi_addrs[] = { | ||
758 | { | ||
759 | .pa_start = 0x48050800, | ||
760 | .pa_end = 0x48050BFF, | ||
761 | .flags = ADDR_TYPE_RT | ||
762 | }, | ||
763 | }; | ||
764 | |||
765 | /* l4_core -> dss_rfbi */ | ||
766 | static struct omap_hwmod_ocp_if omap2430_l4_core__dss_rfbi = { | ||
767 | .master = &omap2430_l4_core_hwmod, | ||
768 | .slave = &omap2430_dss_rfbi_hwmod, | ||
769 | .clk = "dss_ick", | ||
770 | .addr = omap2430_dss_rfbi_addrs, | ||
771 | .addr_cnt = ARRAY_SIZE(omap2430_dss_rfbi_addrs), | ||
772 | .user = OCP_USER_MPU | OCP_USER_SDMA, | ||
773 | }; | ||
774 | |||
775 | /* dss_rfbi slave ports */ | ||
776 | static struct omap_hwmod_ocp_if *omap2430_dss_rfbi_slaves[] = { | ||
777 | &omap2430_l4_core__dss_rfbi, | ||
778 | }; | ||
779 | |||
780 | static struct omap_hwmod omap2430_dss_rfbi_hwmod = { | ||
781 | .name = "dss_rfbi", | ||
782 | .class = &omap2430_rfbi_hwmod_class, | ||
783 | .main_clk = "dss1_fck", | ||
784 | .prcm = { | ||
785 | .omap2 = { | ||
786 | .prcm_reg_id = 1, | ||
787 | .module_bit = OMAP24XX_EN_DSS1_SHIFT, | ||
788 | .module_offs = CORE_MOD, | ||
789 | }, | ||
790 | }, | ||
791 | .slaves = omap2430_dss_rfbi_slaves, | ||
792 | .slaves_cnt = ARRAY_SIZE(omap2430_dss_rfbi_slaves), | ||
793 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430), | ||
794 | .flags = HWMOD_NO_IDLEST, | ||
795 | }; | ||
796 | |||
797 | /* | ||
798 | * 'venc' class | ||
799 | * video encoder | ||
800 | */ | ||
801 | |||
802 | static struct omap_hwmod_class omap2430_venc_hwmod_class = { | ||
803 | .name = "venc", | ||
804 | }; | ||
805 | |||
806 | /* dss_venc */ | ||
807 | static struct omap_hwmod_addr_space omap2430_dss_venc_addrs[] = { | ||
808 | { | ||
809 | .pa_start = 0x48050C00, | ||
810 | .pa_end = 0x48050FFF, | ||
811 | .flags = ADDR_TYPE_RT | ||
812 | }, | ||
813 | }; | ||
814 | |||
815 | /* l4_core -> dss_venc */ | ||
816 | static struct omap_hwmod_ocp_if omap2430_l4_core__dss_venc = { | ||
817 | .master = &omap2430_l4_core_hwmod, | ||
818 | .slave = &omap2430_dss_venc_hwmod, | ||
819 | .clk = "dss_54m_fck", | ||
820 | .addr = omap2430_dss_venc_addrs, | ||
821 | .addr_cnt = ARRAY_SIZE(omap2430_dss_venc_addrs), | ||
822 | .user = OCP_USER_MPU | OCP_USER_SDMA, | ||
823 | }; | ||
824 | |||
825 | /* dss_venc slave ports */ | ||
826 | static struct omap_hwmod_ocp_if *omap2430_dss_venc_slaves[] = { | ||
827 | &omap2430_l4_core__dss_venc, | ||
828 | }; | ||
829 | |||
830 | static struct omap_hwmod omap2430_dss_venc_hwmod = { | ||
831 | .name = "dss_venc", | ||
832 | .class = &omap2430_venc_hwmod_class, | ||
833 | .main_clk = "dss1_fck", | ||
834 | .prcm = { | ||
835 | .omap2 = { | ||
836 | .prcm_reg_id = 1, | ||
837 | .module_bit = OMAP24XX_EN_DSS1_SHIFT, | ||
838 | .module_offs = CORE_MOD, | ||
839 | }, | ||
840 | }, | ||
841 | .slaves = omap2430_dss_venc_slaves, | ||
842 | .slaves_cnt = ARRAY_SIZE(omap2430_dss_venc_slaves), | ||
843 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430), | ||
844 | .flags = HWMOD_NO_IDLEST, | ||
845 | }; | ||
846 | |||
569 | /* I2C common */ | 847 | /* I2C common */ |
570 | static struct omap_hwmod_class_sysconfig i2c_sysc = { | 848 | static struct omap_hwmod_class_sysconfig i2c_sysc = { |
571 | .rev_offs = 0x00, | 849 | .rev_offs = 0x00, |
@@ -1240,6 +1518,12 @@ static __initdata struct omap_hwmod *omap2430_hwmods[] = { | |||
1240 | &omap2430_uart1_hwmod, | 1518 | &omap2430_uart1_hwmod, |
1241 | &omap2430_uart2_hwmod, | 1519 | &omap2430_uart2_hwmod, |
1242 | &omap2430_uart3_hwmod, | 1520 | &omap2430_uart3_hwmod, |
1521 | /* dss class */ | ||
1522 | &omap2430_dss_core_hwmod, | ||
1523 | &omap2430_dss_dispc_hwmod, | ||
1524 | &omap2430_dss_rfbi_hwmod, | ||
1525 | &omap2430_dss_venc_hwmod, | ||
1526 | /* i2c class */ | ||
1243 | &omap2430_i2c1_hwmod, | 1527 | &omap2430_i2c1_hwmod, |
1244 | &omap2430_i2c2_hwmod, | 1528 | &omap2430_i2c2_hwmod, |
1245 | 1529 | ||