diff options
-rw-r--r-- | arch/arm/mach-omap2/omap_hwmod_44xx_data.c | 612 |
1 files changed, 604 insertions, 8 deletions
diff --git a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c index 37b30246a063..aafe60dc711a 100644 --- a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * Hardware modules present on the OMAP44xx chips | 2 | * Hardware modules present on the OMAP44xx chips |
3 | * | 3 | * |
4 | * Copyright (C) 2009-2010 Texas Instruments, Inc. | 4 | * Copyright (C) 2009-2011 Texas Instruments, Inc. |
5 | * Copyright (C) 2009-2010 Nokia Corporation | 5 | * Copyright (C) 2009-2010 Nokia Corporation |
6 | * | 6 | * |
7 | * Paul Walmsley | 7 | * Paul Walmsley |
@@ -43,6 +43,7 @@ | |||
43 | static struct omap_hwmod omap44xx_dma_system_hwmod; | 43 | static struct omap_hwmod omap44xx_dma_system_hwmod; |
44 | static struct omap_hwmod omap44xx_dmm_hwmod; | 44 | static struct omap_hwmod omap44xx_dmm_hwmod; |
45 | static struct omap_hwmod omap44xx_dsp_hwmod; | 45 | static struct omap_hwmod omap44xx_dsp_hwmod; |
46 | static struct omap_hwmod omap44xx_dss_hwmod; | ||
46 | static struct omap_hwmod omap44xx_emif_fw_hwmod; | 47 | static struct omap_hwmod omap44xx_emif_fw_hwmod; |
47 | static struct omap_hwmod omap44xx_iva_hwmod; | 48 | static struct omap_hwmod omap44xx_iva_hwmod; |
48 | static struct omap_hwmod omap44xx_l3_instr_hwmod; | 49 | static struct omap_hwmod omap44xx_l3_instr_hwmod; |
@@ -213,6 +214,14 @@ static struct omap_hwmod_ocp_if omap44xx_dsp__l3_main_1 = { | |||
213 | .user = OCP_USER_MPU | OCP_USER_SDMA, | 214 | .user = OCP_USER_MPU | OCP_USER_SDMA, |
214 | }; | 215 | }; |
215 | 216 | ||
217 | /* dss -> l3_main_1 */ | ||
218 | static struct omap_hwmod_ocp_if omap44xx_dss__l3_main_1 = { | ||
219 | .master = &omap44xx_dss_hwmod, | ||
220 | .slave = &omap44xx_l3_main_1_hwmod, | ||
221 | .clk = "l3_div_ck", | ||
222 | .user = OCP_USER_MPU | OCP_USER_SDMA, | ||
223 | }; | ||
224 | |||
216 | /* l3_main_2 -> l3_main_1 */ | 225 | /* l3_main_2 -> l3_main_1 */ |
217 | static struct omap_hwmod_ocp_if omap44xx_l3_main_2__l3_main_1 = { | 226 | static struct omap_hwmod_ocp_if omap44xx_l3_main_2__l3_main_1 = { |
218 | .master = &omap44xx_l3_main_2_hwmod, | 227 | .master = &omap44xx_l3_main_2_hwmod, |
@@ -240,6 +249,7 @@ static struct omap_hwmod_ocp_if omap44xx_mpu__l3_main_1 = { | |||
240 | /* l3_main_1 slave ports */ | 249 | /* l3_main_1 slave ports */ |
241 | static struct omap_hwmod_ocp_if *omap44xx_l3_main_1_slaves[] = { | 250 | static struct omap_hwmod_ocp_if *omap44xx_l3_main_1_slaves[] = { |
242 | &omap44xx_dsp__l3_main_1, | 251 | &omap44xx_dsp__l3_main_1, |
252 | &omap44xx_dss__l3_main_1, | ||
243 | &omap44xx_l3_main_2__l3_main_1, | 253 | &omap44xx_l3_main_2__l3_main_1, |
244 | &omap44xx_l4_cfg__l3_main_1, | 254 | &omap44xx_l4_cfg__l3_main_1, |
245 | &omap44xx_mpu__l3_main_1, | 255 | &omap44xx_mpu__l3_main_1, |
@@ -507,13 +517,6 @@ static struct omap_hwmod omap44xx_mpu_private_hwmod = { | |||
507 | * ctrl_module_wkup | 517 | * ctrl_module_wkup |
508 | * debugss | 518 | * debugss |
509 | * dmic | 519 | * dmic |
510 | * dss | ||
511 | * dss_dispc | ||
512 | * dss_dsi1 | ||
513 | * dss_dsi2 | ||
514 | * dss_hdmi | ||
515 | * dss_rfbi | ||
516 | * dss_venc | ||
517 | * efuse_ctrl_cust | 520 | * efuse_ctrl_cust |
518 | * efuse_ctrl_std | 521 | * efuse_ctrl_std |
519 | * elm | 522 | * elm |
@@ -731,6 +734,590 @@ static struct omap_hwmod omap44xx_dsp_hwmod = { | |||
731 | }; | 734 | }; |
732 | 735 | ||
733 | /* | 736 | /* |
737 | * 'dss' class | ||
738 | * display sub-system | ||
739 | */ | ||
740 | |||
741 | static struct omap_hwmod_class_sysconfig omap44xx_dss_sysc = { | ||
742 | .rev_offs = 0x0000, | ||
743 | .syss_offs = 0x0014, | ||
744 | .sysc_flags = SYSS_HAS_RESET_STATUS, | ||
745 | }; | ||
746 | |||
747 | static struct omap_hwmod_class omap44xx_dss_hwmod_class = { | ||
748 | .name = "dss", | ||
749 | .sysc = &omap44xx_dss_sysc, | ||
750 | }; | ||
751 | |||
752 | /* dss */ | ||
753 | /* dss master ports */ | ||
754 | static struct omap_hwmod_ocp_if *omap44xx_dss_masters[] = { | ||
755 | &omap44xx_dss__l3_main_1, | ||
756 | }; | ||
757 | |||
758 | static struct omap_hwmod_addr_space omap44xx_dss_dma_addrs[] = { | ||
759 | { | ||
760 | .pa_start = 0x58000000, | ||
761 | .pa_end = 0x5800007f, | ||
762 | .flags = ADDR_TYPE_RT | ||
763 | }, | ||
764 | }; | ||
765 | |||
766 | /* l3_main_2 -> dss */ | ||
767 | static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss = { | ||
768 | .master = &omap44xx_l3_main_2_hwmod, | ||
769 | .slave = &omap44xx_dss_hwmod, | ||
770 | .clk = "l3_div_ck", | ||
771 | .addr = omap44xx_dss_dma_addrs, | ||
772 | .addr_cnt = ARRAY_SIZE(omap44xx_dss_dma_addrs), | ||
773 | .user = OCP_USER_SDMA, | ||
774 | }; | ||
775 | |||
776 | static struct omap_hwmod_addr_space omap44xx_dss_addrs[] = { | ||
777 | { | ||
778 | .pa_start = 0x48040000, | ||
779 | .pa_end = 0x4804007f, | ||
780 | .flags = ADDR_TYPE_RT | ||
781 | }, | ||
782 | }; | ||
783 | |||
784 | /* l4_per -> dss */ | ||
785 | static struct omap_hwmod_ocp_if omap44xx_l4_per__dss = { | ||
786 | .master = &omap44xx_l4_per_hwmod, | ||
787 | .slave = &omap44xx_dss_hwmod, | ||
788 | .clk = "l4_div_ck", | ||
789 | .addr = omap44xx_dss_addrs, | ||
790 | .addr_cnt = ARRAY_SIZE(omap44xx_dss_addrs), | ||
791 | .user = OCP_USER_MPU, | ||
792 | }; | ||
793 | |||
794 | /* dss slave ports */ | ||
795 | static struct omap_hwmod_ocp_if *omap44xx_dss_slaves[] = { | ||
796 | &omap44xx_l3_main_2__dss, | ||
797 | &omap44xx_l4_per__dss, | ||
798 | }; | ||
799 | |||
800 | static struct omap_hwmod_opt_clk dss_opt_clks[] = { | ||
801 | { .role = "sys_clk", .clk = "dss_sys_clk" }, | ||
802 | { .role = "tv_clk", .clk = "dss_tv_clk" }, | ||
803 | { .role = "dss_clk", .clk = "dss_dss_clk" }, | ||
804 | { .role = "video_clk", .clk = "dss_48mhz_clk" }, | ||
805 | }; | ||
806 | |||
807 | static struct omap_hwmod omap44xx_dss_hwmod = { | ||
808 | .name = "dss_core", | ||
809 | .class = &omap44xx_dss_hwmod_class, | ||
810 | .main_clk = "dss_fck", | ||
811 | .prcm = { | ||
812 | .omap4 = { | ||
813 | .clkctrl_reg = OMAP4430_CM_DSS_DSS_CLKCTRL, | ||
814 | }, | ||
815 | }, | ||
816 | .opt_clks = dss_opt_clks, | ||
817 | .opt_clks_cnt = ARRAY_SIZE(dss_opt_clks), | ||
818 | .slaves = omap44xx_dss_slaves, | ||
819 | .slaves_cnt = ARRAY_SIZE(omap44xx_dss_slaves), | ||
820 | .masters = omap44xx_dss_masters, | ||
821 | .masters_cnt = ARRAY_SIZE(omap44xx_dss_masters), | ||
822 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430), | ||
823 | }; | ||
824 | |||
825 | /* | ||
826 | * 'dispc' class | ||
827 | * display controller | ||
828 | */ | ||
829 | |||
830 | static struct omap_hwmod_class_sysconfig omap44xx_dispc_sysc = { | ||
831 | .rev_offs = 0x0000, | ||
832 | .sysc_offs = 0x0010, | ||
833 | .syss_offs = 0x0014, | ||
834 | .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY | | ||
835 | SYSC_HAS_ENAWAKEUP | SYSC_HAS_MIDLEMODE | | ||
836 | SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET | | ||
837 | SYSS_HAS_RESET_STATUS), | ||
838 | .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | | ||
839 | MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART), | ||
840 | .sysc_fields = &omap_hwmod_sysc_type1, | ||
841 | }; | ||
842 | |||
843 | static struct omap_hwmod_class omap44xx_dispc_hwmod_class = { | ||
844 | .name = "dispc", | ||
845 | .sysc = &omap44xx_dispc_sysc, | ||
846 | }; | ||
847 | |||
848 | /* dss_dispc */ | ||
849 | static struct omap_hwmod omap44xx_dss_dispc_hwmod; | ||
850 | static struct omap_hwmod_irq_info omap44xx_dss_dispc_irqs[] = { | ||
851 | { .irq = 25 + OMAP44XX_IRQ_GIC_START }, | ||
852 | }; | ||
853 | |||
854 | static struct omap_hwmod_dma_info omap44xx_dss_dispc_sdma_reqs[] = { | ||
855 | { .dma_req = 5 + OMAP44XX_DMA_REQ_START }, | ||
856 | }; | ||
857 | |||
858 | static struct omap_hwmod_addr_space omap44xx_dss_dispc_dma_addrs[] = { | ||
859 | { | ||
860 | .pa_start = 0x58001000, | ||
861 | .pa_end = 0x58001fff, | ||
862 | .flags = ADDR_TYPE_RT | ||
863 | }, | ||
864 | }; | ||
865 | |||
866 | /* l3_main_2 -> dss_dispc */ | ||
867 | static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_dispc = { | ||
868 | .master = &omap44xx_l3_main_2_hwmod, | ||
869 | .slave = &omap44xx_dss_dispc_hwmod, | ||
870 | .clk = "l3_div_ck", | ||
871 | .addr = omap44xx_dss_dispc_dma_addrs, | ||
872 | .addr_cnt = ARRAY_SIZE(omap44xx_dss_dispc_dma_addrs), | ||
873 | .user = OCP_USER_SDMA, | ||
874 | }; | ||
875 | |||
876 | static struct omap_hwmod_addr_space omap44xx_dss_dispc_addrs[] = { | ||
877 | { | ||
878 | .pa_start = 0x48041000, | ||
879 | .pa_end = 0x48041fff, | ||
880 | .flags = ADDR_TYPE_RT | ||
881 | }, | ||
882 | }; | ||
883 | |||
884 | /* l4_per -> dss_dispc */ | ||
885 | static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_dispc = { | ||
886 | .master = &omap44xx_l4_per_hwmod, | ||
887 | .slave = &omap44xx_dss_dispc_hwmod, | ||
888 | .clk = "l4_div_ck", | ||
889 | .addr = omap44xx_dss_dispc_addrs, | ||
890 | .addr_cnt = ARRAY_SIZE(omap44xx_dss_dispc_addrs), | ||
891 | .user = OCP_USER_MPU, | ||
892 | }; | ||
893 | |||
894 | /* dss_dispc slave ports */ | ||
895 | static struct omap_hwmod_ocp_if *omap44xx_dss_dispc_slaves[] = { | ||
896 | &omap44xx_l3_main_2__dss_dispc, | ||
897 | &omap44xx_l4_per__dss_dispc, | ||
898 | }; | ||
899 | |||
900 | static struct omap_hwmod omap44xx_dss_dispc_hwmod = { | ||
901 | .name = "dss_dispc", | ||
902 | .class = &omap44xx_dispc_hwmod_class, | ||
903 | .mpu_irqs = omap44xx_dss_dispc_irqs, | ||
904 | .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_dss_dispc_irqs), | ||
905 | .sdma_reqs = omap44xx_dss_dispc_sdma_reqs, | ||
906 | .sdma_reqs_cnt = ARRAY_SIZE(omap44xx_dss_dispc_sdma_reqs), | ||
907 | .main_clk = "dss_fck", | ||
908 | .prcm = { | ||
909 | .omap4 = { | ||
910 | .clkctrl_reg = OMAP4430_CM_DSS_DSS_CLKCTRL, | ||
911 | }, | ||
912 | }, | ||
913 | .slaves = omap44xx_dss_dispc_slaves, | ||
914 | .slaves_cnt = ARRAY_SIZE(omap44xx_dss_dispc_slaves), | ||
915 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430), | ||
916 | }; | ||
917 | |||
918 | /* | ||
919 | * 'dsi' class | ||
920 | * display serial interface controller | ||
921 | */ | ||
922 | |||
923 | static struct omap_hwmod_class_sysconfig omap44xx_dsi_sysc = { | ||
924 | .rev_offs = 0x0000, | ||
925 | .sysc_offs = 0x0010, | ||
926 | .syss_offs = 0x0014, | ||
927 | .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY | | ||
928 | SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE | | ||
929 | SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS), | ||
930 | .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), | ||
931 | .sysc_fields = &omap_hwmod_sysc_type1, | ||
932 | }; | ||
933 | |||
934 | static struct omap_hwmod_class omap44xx_dsi_hwmod_class = { | ||
935 | .name = "dsi", | ||
936 | .sysc = &omap44xx_dsi_sysc, | ||
937 | }; | ||
938 | |||
939 | /* dss_dsi1 */ | ||
940 | static struct omap_hwmod omap44xx_dss_dsi1_hwmod; | ||
941 | static struct omap_hwmod_irq_info omap44xx_dss_dsi1_irqs[] = { | ||
942 | { .irq = 53 + OMAP44XX_IRQ_GIC_START }, | ||
943 | }; | ||
944 | |||
945 | static struct omap_hwmod_dma_info omap44xx_dss_dsi1_sdma_reqs[] = { | ||
946 | { .dma_req = 74 + OMAP44XX_DMA_REQ_START }, | ||
947 | }; | ||
948 | |||
949 | static struct omap_hwmod_addr_space omap44xx_dss_dsi1_dma_addrs[] = { | ||
950 | { | ||
951 | .pa_start = 0x58004000, | ||
952 | .pa_end = 0x580041ff, | ||
953 | .flags = ADDR_TYPE_RT | ||
954 | }, | ||
955 | }; | ||
956 | |||
957 | /* l3_main_2 -> dss_dsi1 */ | ||
958 | static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_dsi1 = { | ||
959 | .master = &omap44xx_l3_main_2_hwmod, | ||
960 | .slave = &omap44xx_dss_dsi1_hwmod, | ||
961 | .clk = "l3_div_ck", | ||
962 | .addr = omap44xx_dss_dsi1_dma_addrs, | ||
963 | .addr_cnt = ARRAY_SIZE(omap44xx_dss_dsi1_dma_addrs), | ||
964 | .user = OCP_USER_SDMA, | ||
965 | }; | ||
966 | |||
967 | static struct omap_hwmod_addr_space omap44xx_dss_dsi1_addrs[] = { | ||
968 | { | ||
969 | .pa_start = 0x48044000, | ||
970 | .pa_end = 0x480441ff, | ||
971 | .flags = ADDR_TYPE_RT | ||
972 | }, | ||
973 | }; | ||
974 | |||
975 | /* l4_per -> dss_dsi1 */ | ||
976 | static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_dsi1 = { | ||
977 | .master = &omap44xx_l4_per_hwmod, | ||
978 | .slave = &omap44xx_dss_dsi1_hwmod, | ||
979 | .clk = "l4_div_ck", | ||
980 | .addr = omap44xx_dss_dsi1_addrs, | ||
981 | .addr_cnt = ARRAY_SIZE(omap44xx_dss_dsi1_addrs), | ||
982 | .user = OCP_USER_MPU, | ||
983 | }; | ||
984 | |||
985 | /* dss_dsi1 slave ports */ | ||
986 | static struct omap_hwmod_ocp_if *omap44xx_dss_dsi1_slaves[] = { | ||
987 | &omap44xx_l3_main_2__dss_dsi1, | ||
988 | &omap44xx_l4_per__dss_dsi1, | ||
989 | }; | ||
990 | |||
991 | static struct omap_hwmod omap44xx_dss_dsi1_hwmod = { | ||
992 | .name = "dss_dsi1", | ||
993 | .class = &omap44xx_dsi_hwmod_class, | ||
994 | .mpu_irqs = omap44xx_dss_dsi1_irqs, | ||
995 | .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_dss_dsi1_irqs), | ||
996 | .sdma_reqs = omap44xx_dss_dsi1_sdma_reqs, | ||
997 | .sdma_reqs_cnt = ARRAY_SIZE(omap44xx_dss_dsi1_sdma_reqs), | ||
998 | .main_clk = "dss_fck", | ||
999 | .prcm = { | ||
1000 | .omap4 = { | ||
1001 | .clkctrl_reg = OMAP4430_CM_DSS_DSS_CLKCTRL, | ||
1002 | }, | ||
1003 | }, | ||
1004 | .slaves = omap44xx_dss_dsi1_slaves, | ||
1005 | .slaves_cnt = ARRAY_SIZE(omap44xx_dss_dsi1_slaves), | ||
1006 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430), | ||
1007 | }; | ||
1008 | |||
1009 | /* dss_dsi2 */ | ||
1010 | static struct omap_hwmod omap44xx_dss_dsi2_hwmod; | ||
1011 | static struct omap_hwmod_irq_info omap44xx_dss_dsi2_irqs[] = { | ||
1012 | { .irq = 84 + OMAP44XX_IRQ_GIC_START }, | ||
1013 | }; | ||
1014 | |||
1015 | static struct omap_hwmod_dma_info omap44xx_dss_dsi2_sdma_reqs[] = { | ||
1016 | { .dma_req = 83 + OMAP44XX_DMA_REQ_START }, | ||
1017 | }; | ||
1018 | |||
1019 | static struct omap_hwmod_addr_space omap44xx_dss_dsi2_dma_addrs[] = { | ||
1020 | { | ||
1021 | .pa_start = 0x58005000, | ||
1022 | .pa_end = 0x580051ff, | ||
1023 | .flags = ADDR_TYPE_RT | ||
1024 | }, | ||
1025 | }; | ||
1026 | |||
1027 | /* l3_main_2 -> dss_dsi2 */ | ||
1028 | static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_dsi2 = { | ||
1029 | .master = &omap44xx_l3_main_2_hwmod, | ||
1030 | .slave = &omap44xx_dss_dsi2_hwmod, | ||
1031 | .clk = "l3_div_ck", | ||
1032 | .addr = omap44xx_dss_dsi2_dma_addrs, | ||
1033 | .addr_cnt = ARRAY_SIZE(omap44xx_dss_dsi2_dma_addrs), | ||
1034 | .user = OCP_USER_SDMA, | ||
1035 | }; | ||
1036 | |||
1037 | static struct omap_hwmod_addr_space omap44xx_dss_dsi2_addrs[] = { | ||
1038 | { | ||
1039 | .pa_start = 0x48045000, | ||
1040 | .pa_end = 0x480451ff, | ||
1041 | .flags = ADDR_TYPE_RT | ||
1042 | }, | ||
1043 | }; | ||
1044 | |||
1045 | /* l4_per -> dss_dsi2 */ | ||
1046 | static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_dsi2 = { | ||
1047 | .master = &omap44xx_l4_per_hwmod, | ||
1048 | .slave = &omap44xx_dss_dsi2_hwmod, | ||
1049 | .clk = "l4_div_ck", | ||
1050 | .addr = omap44xx_dss_dsi2_addrs, | ||
1051 | .addr_cnt = ARRAY_SIZE(omap44xx_dss_dsi2_addrs), | ||
1052 | .user = OCP_USER_MPU, | ||
1053 | }; | ||
1054 | |||
1055 | /* dss_dsi2 slave ports */ | ||
1056 | static struct omap_hwmod_ocp_if *omap44xx_dss_dsi2_slaves[] = { | ||
1057 | &omap44xx_l3_main_2__dss_dsi2, | ||
1058 | &omap44xx_l4_per__dss_dsi2, | ||
1059 | }; | ||
1060 | |||
1061 | static struct omap_hwmod omap44xx_dss_dsi2_hwmod = { | ||
1062 | .name = "dss_dsi2", | ||
1063 | .class = &omap44xx_dsi_hwmod_class, | ||
1064 | .mpu_irqs = omap44xx_dss_dsi2_irqs, | ||
1065 | .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_dss_dsi2_irqs), | ||
1066 | .sdma_reqs = omap44xx_dss_dsi2_sdma_reqs, | ||
1067 | .sdma_reqs_cnt = ARRAY_SIZE(omap44xx_dss_dsi2_sdma_reqs), | ||
1068 | .main_clk = "dss_fck", | ||
1069 | .prcm = { | ||
1070 | .omap4 = { | ||
1071 | .clkctrl_reg = OMAP4430_CM_DSS_DSS_CLKCTRL, | ||
1072 | }, | ||
1073 | }, | ||
1074 | .slaves = omap44xx_dss_dsi2_slaves, | ||
1075 | .slaves_cnt = ARRAY_SIZE(omap44xx_dss_dsi2_slaves), | ||
1076 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430), | ||
1077 | }; | ||
1078 | |||
1079 | /* | ||
1080 | * 'hdmi' class | ||
1081 | * hdmi controller | ||
1082 | */ | ||
1083 | |||
1084 | static struct omap_hwmod_class_sysconfig omap44xx_hdmi_sysc = { | ||
1085 | .rev_offs = 0x0000, | ||
1086 | .sysc_offs = 0x0010, | ||
1087 | .sysc_flags = (SYSC_HAS_RESET_STATUS | SYSC_HAS_SIDLEMODE | | ||
1088 | SYSC_HAS_SOFTRESET), | ||
1089 | .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | | ||
1090 | SIDLE_SMART_WKUP), | ||
1091 | .sysc_fields = &omap_hwmod_sysc_type2, | ||
1092 | }; | ||
1093 | |||
1094 | static struct omap_hwmod_class omap44xx_hdmi_hwmod_class = { | ||
1095 | .name = "hdmi", | ||
1096 | .sysc = &omap44xx_hdmi_sysc, | ||
1097 | }; | ||
1098 | |||
1099 | /* dss_hdmi */ | ||
1100 | static struct omap_hwmod omap44xx_dss_hdmi_hwmod; | ||
1101 | static struct omap_hwmod_irq_info omap44xx_dss_hdmi_irqs[] = { | ||
1102 | { .irq = 101 + OMAP44XX_IRQ_GIC_START }, | ||
1103 | }; | ||
1104 | |||
1105 | static struct omap_hwmod_dma_info omap44xx_dss_hdmi_sdma_reqs[] = { | ||
1106 | { .dma_req = 75 + OMAP44XX_DMA_REQ_START }, | ||
1107 | }; | ||
1108 | |||
1109 | static struct omap_hwmod_addr_space omap44xx_dss_hdmi_dma_addrs[] = { | ||
1110 | { | ||
1111 | .pa_start = 0x58006000, | ||
1112 | .pa_end = 0x58006fff, | ||
1113 | .flags = ADDR_TYPE_RT | ||
1114 | }, | ||
1115 | }; | ||
1116 | |||
1117 | /* l3_main_2 -> dss_hdmi */ | ||
1118 | static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_hdmi = { | ||
1119 | .master = &omap44xx_l3_main_2_hwmod, | ||
1120 | .slave = &omap44xx_dss_hdmi_hwmod, | ||
1121 | .clk = "l3_div_ck", | ||
1122 | .addr = omap44xx_dss_hdmi_dma_addrs, | ||
1123 | .addr_cnt = ARRAY_SIZE(omap44xx_dss_hdmi_dma_addrs), | ||
1124 | .user = OCP_USER_SDMA, | ||
1125 | }; | ||
1126 | |||
1127 | static struct omap_hwmod_addr_space omap44xx_dss_hdmi_addrs[] = { | ||
1128 | { | ||
1129 | .pa_start = 0x48046000, | ||
1130 | .pa_end = 0x48046fff, | ||
1131 | .flags = ADDR_TYPE_RT | ||
1132 | }, | ||
1133 | }; | ||
1134 | |||
1135 | /* l4_per -> dss_hdmi */ | ||
1136 | static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_hdmi = { | ||
1137 | .master = &omap44xx_l4_per_hwmod, | ||
1138 | .slave = &omap44xx_dss_hdmi_hwmod, | ||
1139 | .clk = "l4_div_ck", | ||
1140 | .addr = omap44xx_dss_hdmi_addrs, | ||
1141 | .addr_cnt = ARRAY_SIZE(omap44xx_dss_hdmi_addrs), | ||
1142 | .user = OCP_USER_MPU, | ||
1143 | }; | ||
1144 | |||
1145 | /* dss_hdmi slave ports */ | ||
1146 | static struct omap_hwmod_ocp_if *omap44xx_dss_hdmi_slaves[] = { | ||
1147 | &omap44xx_l3_main_2__dss_hdmi, | ||
1148 | &omap44xx_l4_per__dss_hdmi, | ||
1149 | }; | ||
1150 | |||
1151 | static struct omap_hwmod omap44xx_dss_hdmi_hwmod = { | ||
1152 | .name = "dss_hdmi", | ||
1153 | .class = &omap44xx_hdmi_hwmod_class, | ||
1154 | .mpu_irqs = omap44xx_dss_hdmi_irqs, | ||
1155 | .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_dss_hdmi_irqs), | ||
1156 | .sdma_reqs = omap44xx_dss_hdmi_sdma_reqs, | ||
1157 | .sdma_reqs_cnt = ARRAY_SIZE(omap44xx_dss_hdmi_sdma_reqs), | ||
1158 | .main_clk = "dss_fck", | ||
1159 | .prcm = { | ||
1160 | .omap4 = { | ||
1161 | .clkctrl_reg = OMAP4430_CM_DSS_DSS_CLKCTRL, | ||
1162 | }, | ||
1163 | }, | ||
1164 | .slaves = omap44xx_dss_hdmi_slaves, | ||
1165 | .slaves_cnt = ARRAY_SIZE(omap44xx_dss_hdmi_slaves), | ||
1166 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430), | ||
1167 | }; | ||
1168 | |||
1169 | /* | ||
1170 | * 'rfbi' class | ||
1171 | * remote frame buffer interface | ||
1172 | */ | ||
1173 | |||
1174 | static struct omap_hwmod_class_sysconfig omap44xx_rfbi_sysc = { | ||
1175 | .rev_offs = 0x0000, | ||
1176 | .sysc_offs = 0x0010, | ||
1177 | .syss_offs = 0x0014, | ||
1178 | .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_SIDLEMODE | | ||
1179 | SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS), | ||
1180 | .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), | ||
1181 | .sysc_fields = &omap_hwmod_sysc_type1, | ||
1182 | }; | ||
1183 | |||
1184 | static struct omap_hwmod_class omap44xx_rfbi_hwmod_class = { | ||
1185 | .name = "rfbi", | ||
1186 | .sysc = &omap44xx_rfbi_sysc, | ||
1187 | }; | ||
1188 | |||
1189 | /* dss_rfbi */ | ||
1190 | static struct omap_hwmod omap44xx_dss_rfbi_hwmod; | ||
1191 | static struct omap_hwmod_dma_info omap44xx_dss_rfbi_sdma_reqs[] = { | ||
1192 | { .dma_req = 13 + OMAP44XX_DMA_REQ_START }, | ||
1193 | }; | ||
1194 | |||
1195 | static struct omap_hwmod_addr_space omap44xx_dss_rfbi_dma_addrs[] = { | ||
1196 | { | ||
1197 | .pa_start = 0x58002000, | ||
1198 | .pa_end = 0x580020ff, | ||
1199 | .flags = ADDR_TYPE_RT | ||
1200 | }, | ||
1201 | }; | ||
1202 | |||
1203 | /* l3_main_2 -> dss_rfbi */ | ||
1204 | static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_rfbi = { | ||
1205 | .master = &omap44xx_l3_main_2_hwmod, | ||
1206 | .slave = &omap44xx_dss_rfbi_hwmod, | ||
1207 | .clk = "l3_div_ck", | ||
1208 | .addr = omap44xx_dss_rfbi_dma_addrs, | ||
1209 | .addr_cnt = ARRAY_SIZE(omap44xx_dss_rfbi_dma_addrs), | ||
1210 | .user = OCP_USER_SDMA, | ||
1211 | }; | ||
1212 | |||
1213 | static struct omap_hwmod_addr_space omap44xx_dss_rfbi_addrs[] = { | ||
1214 | { | ||
1215 | .pa_start = 0x48042000, | ||
1216 | .pa_end = 0x480420ff, | ||
1217 | .flags = ADDR_TYPE_RT | ||
1218 | }, | ||
1219 | }; | ||
1220 | |||
1221 | /* l4_per -> dss_rfbi */ | ||
1222 | static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_rfbi = { | ||
1223 | .master = &omap44xx_l4_per_hwmod, | ||
1224 | .slave = &omap44xx_dss_rfbi_hwmod, | ||
1225 | .clk = "l4_div_ck", | ||
1226 | .addr = omap44xx_dss_rfbi_addrs, | ||
1227 | .addr_cnt = ARRAY_SIZE(omap44xx_dss_rfbi_addrs), | ||
1228 | .user = OCP_USER_MPU, | ||
1229 | }; | ||
1230 | |||
1231 | /* dss_rfbi slave ports */ | ||
1232 | static struct omap_hwmod_ocp_if *omap44xx_dss_rfbi_slaves[] = { | ||
1233 | &omap44xx_l3_main_2__dss_rfbi, | ||
1234 | &omap44xx_l4_per__dss_rfbi, | ||
1235 | }; | ||
1236 | |||
1237 | static struct omap_hwmod omap44xx_dss_rfbi_hwmod = { | ||
1238 | .name = "dss_rfbi", | ||
1239 | .class = &omap44xx_rfbi_hwmod_class, | ||
1240 | .sdma_reqs = omap44xx_dss_rfbi_sdma_reqs, | ||
1241 | .sdma_reqs_cnt = ARRAY_SIZE(omap44xx_dss_rfbi_sdma_reqs), | ||
1242 | .main_clk = "dss_fck", | ||
1243 | .prcm = { | ||
1244 | .omap4 = { | ||
1245 | .clkctrl_reg = OMAP4430_CM_DSS_DSS_CLKCTRL, | ||
1246 | }, | ||
1247 | }, | ||
1248 | .slaves = omap44xx_dss_rfbi_slaves, | ||
1249 | .slaves_cnt = ARRAY_SIZE(omap44xx_dss_rfbi_slaves), | ||
1250 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430), | ||
1251 | }; | ||
1252 | |||
1253 | /* | ||
1254 | * 'venc' class | ||
1255 | * video encoder | ||
1256 | */ | ||
1257 | |||
1258 | static struct omap_hwmod_class omap44xx_venc_hwmod_class = { | ||
1259 | .name = "venc", | ||
1260 | }; | ||
1261 | |||
1262 | /* dss_venc */ | ||
1263 | static struct omap_hwmod omap44xx_dss_venc_hwmod; | ||
1264 | static struct omap_hwmod_addr_space omap44xx_dss_venc_dma_addrs[] = { | ||
1265 | { | ||
1266 | .pa_start = 0x58003000, | ||
1267 | .pa_end = 0x580030ff, | ||
1268 | .flags = ADDR_TYPE_RT | ||
1269 | }, | ||
1270 | }; | ||
1271 | |||
1272 | /* l3_main_2 -> dss_venc */ | ||
1273 | static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_venc = { | ||
1274 | .master = &omap44xx_l3_main_2_hwmod, | ||
1275 | .slave = &omap44xx_dss_venc_hwmod, | ||
1276 | .clk = "l3_div_ck", | ||
1277 | .addr = omap44xx_dss_venc_dma_addrs, | ||
1278 | .addr_cnt = ARRAY_SIZE(omap44xx_dss_venc_dma_addrs), | ||
1279 | .user = OCP_USER_SDMA, | ||
1280 | }; | ||
1281 | |||
1282 | static struct omap_hwmod_addr_space omap44xx_dss_venc_addrs[] = { | ||
1283 | { | ||
1284 | .pa_start = 0x48043000, | ||
1285 | .pa_end = 0x480430ff, | ||
1286 | .flags = ADDR_TYPE_RT | ||
1287 | }, | ||
1288 | }; | ||
1289 | |||
1290 | /* l4_per -> dss_venc */ | ||
1291 | static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_venc = { | ||
1292 | .master = &omap44xx_l4_per_hwmod, | ||
1293 | .slave = &omap44xx_dss_venc_hwmod, | ||
1294 | .clk = "l4_div_ck", | ||
1295 | .addr = omap44xx_dss_venc_addrs, | ||
1296 | .addr_cnt = ARRAY_SIZE(omap44xx_dss_venc_addrs), | ||
1297 | .user = OCP_USER_MPU, | ||
1298 | }; | ||
1299 | |||
1300 | /* dss_venc slave ports */ | ||
1301 | static struct omap_hwmod_ocp_if *omap44xx_dss_venc_slaves[] = { | ||
1302 | &omap44xx_l3_main_2__dss_venc, | ||
1303 | &omap44xx_l4_per__dss_venc, | ||
1304 | }; | ||
1305 | |||
1306 | static struct omap_hwmod omap44xx_dss_venc_hwmod = { | ||
1307 | .name = "dss_venc", | ||
1308 | .class = &omap44xx_venc_hwmod_class, | ||
1309 | .main_clk = "dss_fck", | ||
1310 | .prcm = { | ||
1311 | .omap4 = { | ||
1312 | .clkctrl_reg = OMAP4430_CM_DSS_DSS_CLKCTRL, | ||
1313 | }, | ||
1314 | }, | ||
1315 | .slaves = omap44xx_dss_venc_slaves, | ||
1316 | .slaves_cnt = ARRAY_SIZE(omap44xx_dss_venc_slaves), | ||
1317 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430), | ||
1318 | }; | ||
1319 | |||
1320 | /* | ||
734 | * 'gpio' class | 1321 | * 'gpio' class |
735 | * general purpose io module | 1322 | * general purpose io module |
736 | */ | 1323 | */ |
@@ -2924,6 +3511,15 @@ static __initdata struct omap_hwmod *omap44xx_hwmods[] = { | |||
2924 | &omap44xx_dsp_hwmod, | 3511 | &omap44xx_dsp_hwmod, |
2925 | &omap44xx_dsp_c0_hwmod, | 3512 | &omap44xx_dsp_c0_hwmod, |
2926 | 3513 | ||
3514 | /* dss class */ | ||
3515 | &omap44xx_dss_hwmod, | ||
3516 | &omap44xx_dss_dispc_hwmod, | ||
3517 | &omap44xx_dss_dsi1_hwmod, | ||
3518 | &omap44xx_dss_dsi2_hwmod, | ||
3519 | &omap44xx_dss_hdmi_hwmod, | ||
3520 | &omap44xx_dss_rfbi_hwmod, | ||
3521 | &omap44xx_dss_venc_hwmod, | ||
3522 | |||
2927 | /* gpio class */ | 3523 | /* gpio class */ |
2928 | &omap44xx_gpio1_hwmod, | 3524 | &omap44xx_gpio1_hwmod, |
2929 | &omap44xx_gpio2_hwmod, | 3525 | &omap44xx_gpio2_hwmod, |