aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorBenoit Cousson <b-cousson@ti.com>2011-01-27 06:17:03 -0500
committerBenoit Cousson <b-cousson@ti.com>2011-02-17 12:25:31 -0500
commitd63bd74fbb5fb2161d9cb90cd7a93a2c5db47c63 (patch)
tree2b92109aed62f0c4a97dcde46a2776d1c431cb65 /arch
parent35d1a66a9cc03167ff5266e5fcb0dea639123d84 (diff)
OMAP4: hwmod data: Add DSS, DISPC, DSI1&2, RFBI, HDMI and VENC
Add dss, dispc, dsi1, dsi2, hdmi, rfbi and venc hwmods. In OMAP4 there are severals IPs that can be reached by differents interconnect paths depending of the access initiator (MPU vs. SDMA). In the case of the DSS, both L3 direct path and L4 CFG path can be used to access all the DSS IPs. The two ocp_ip already exists to support the two address spaces. +------------+-- L3_MAIN --+ MPU IP | | +-- L4_CFG --+ L3 main address range is specified first, since it is used by default. dss is also considered as an IP as dispc, rfbi, and named as dss_core. Signed-off-by: Benoit Cousson <b-cousson@ti.com> Signed-off-by: Mayuresh Janorkar <mayur@ti.com> Signed-off-by: Senthilvadivu Guruswamy <svadivu@ti.com> Signed-off-by: Sumit Semwal <sumit.semwal@ti.com> [b-cousson@ti.com: Re-organize structures to match file convention and remove irq entry from dss_hwmod]
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/mach-omap2/omap_hwmod_44xx_data.c612
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 @@
43static struct omap_hwmod omap44xx_dma_system_hwmod; 43static struct omap_hwmod omap44xx_dma_system_hwmod;
44static struct omap_hwmod omap44xx_dmm_hwmod; 44static struct omap_hwmod omap44xx_dmm_hwmod;
45static struct omap_hwmod omap44xx_dsp_hwmod; 45static struct omap_hwmod omap44xx_dsp_hwmod;
46static struct omap_hwmod omap44xx_dss_hwmod;
46static struct omap_hwmod omap44xx_emif_fw_hwmod; 47static struct omap_hwmod omap44xx_emif_fw_hwmod;
47static struct omap_hwmod omap44xx_iva_hwmod; 48static struct omap_hwmod omap44xx_iva_hwmod;
48static struct omap_hwmod omap44xx_l3_instr_hwmod; 49static 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 */
218static 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 */
217static struct omap_hwmod_ocp_if omap44xx_l3_main_2__l3_main_1 = { 226static 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 */
241static struct omap_hwmod_ocp_if *omap44xx_l3_main_1_slaves[] = { 250static 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
741static 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
747static struct omap_hwmod_class omap44xx_dss_hwmod_class = {
748 .name = "dss",
749 .sysc = &omap44xx_dss_sysc,
750};
751
752/* dss */
753/* dss master ports */
754static struct omap_hwmod_ocp_if *omap44xx_dss_masters[] = {
755 &omap44xx_dss__l3_main_1,
756};
757
758static 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 */
767static 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
776static 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 */
785static 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 */
795static struct omap_hwmod_ocp_if *omap44xx_dss_slaves[] = {
796 &omap44xx_l3_main_2__dss,
797 &omap44xx_l4_per__dss,
798};
799
800static 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
807static 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
830static 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
843static struct omap_hwmod_class omap44xx_dispc_hwmod_class = {
844 .name = "dispc",
845 .sysc = &omap44xx_dispc_sysc,
846};
847
848/* dss_dispc */
849static struct omap_hwmod omap44xx_dss_dispc_hwmod;
850static struct omap_hwmod_irq_info omap44xx_dss_dispc_irqs[] = {
851 { .irq = 25 + OMAP44XX_IRQ_GIC_START },
852};
853
854static struct omap_hwmod_dma_info omap44xx_dss_dispc_sdma_reqs[] = {
855 { .dma_req = 5 + OMAP44XX_DMA_REQ_START },
856};
857
858static 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 */
867static 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
876static 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 */
885static 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 */
895static struct omap_hwmod_ocp_if *omap44xx_dss_dispc_slaves[] = {
896 &omap44xx_l3_main_2__dss_dispc,
897 &omap44xx_l4_per__dss_dispc,
898};
899
900static 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
923static 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
934static struct omap_hwmod_class omap44xx_dsi_hwmod_class = {
935 .name = "dsi",
936 .sysc = &omap44xx_dsi_sysc,
937};
938
939/* dss_dsi1 */
940static struct omap_hwmod omap44xx_dss_dsi1_hwmod;
941static struct omap_hwmod_irq_info omap44xx_dss_dsi1_irqs[] = {
942 { .irq = 53 + OMAP44XX_IRQ_GIC_START },
943};
944
945static struct omap_hwmod_dma_info omap44xx_dss_dsi1_sdma_reqs[] = {
946 { .dma_req = 74 + OMAP44XX_DMA_REQ_START },
947};
948
949static 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 */
958static 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
967static 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 */
976static 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 */
986static struct omap_hwmod_ocp_if *omap44xx_dss_dsi1_slaves[] = {
987 &omap44xx_l3_main_2__dss_dsi1,
988 &omap44xx_l4_per__dss_dsi1,
989};
990
991static 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 */
1010static struct omap_hwmod omap44xx_dss_dsi2_hwmod;
1011static struct omap_hwmod_irq_info omap44xx_dss_dsi2_irqs[] = {
1012 { .irq = 84 + OMAP44XX_IRQ_GIC_START },
1013};
1014
1015static struct omap_hwmod_dma_info omap44xx_dss_dsi2_sdma_reqs[] = {
1016 { .dma_req = 83 + OMAP44XX_DMA_REQ_START },
1017};
1018
1019static 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 */
1028static 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
1037static 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 */
1046static 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 */
1056static struct omap_hwmod_ocp_if *omap44xx_dss_dsi2_slaves[] = {
1057 &omap44xx_l3_main_2__dss_dsi2,
1058 &omap44xx_l4_per__dss_dsi2,
1059};
1060
1061static 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
1084static 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
1094static struct omap_hwmod_class omap44xx_hdmi_hwmod_class = {
1095 .name = "hdmi",
1096 .sysc = &omap44xx_hdmi_sysc,
1097};
1098
1099/* dss_hdmi */
1100static struct omap_hwmod omap44xx_dss_hdmi_hwmod;
1101static struct omap_hwmod_irq_info omap44xx_dss_hdmi_irqs[] = {
1102 { .irq = 101 + OMAP44XX_IRQ_GIC_START },
1103};
1104
1105static struct omap_hwmod_dma_info omap44xx_dss_hdmi_sdma_reqs[] = {
1106 { .dma_req = 75 + OMAP44XX_DMA_REQ_START },
1107};
1108
1109static 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 */
1118static 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
1127static 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 */
1136static 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 */
1146static struct omap_hwmod_ocp_if *omap44xx_dss_hdmi_slaves[] = {
1147 &omap44xx_l3_main_2__dss_hdmi,
1148 &omap44xx_l4_per__dss_hdmi,
1149};
1150
1151static 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
1174static 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
1184static struct omap_hwmod_class omap44xx_rfbi_hwmod_class = {
1185 .name = "rfbi",
1186 .sysc = &omap44xx_rfbi_sysc,
1187};
1188
1189/* dss_rfbi */
1190static struct omap_hwmod omap44xx_dss_rfbi_hwmod;
1191static struct omap_hwmod_dma_info omap44xx_dss_rfbi_sdma_reqs[] = {
1192 { .dma_req = 13 + OMAP44XX_DMA_REQ_START },
1193};
1194
1195static 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 */
1204static 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
1213static 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 */
1222static 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 */
1232static struct omap_hwmod_ocp_if *omap44xx_dss_rfbi_slaves[] = {
1233 &omap44xx_l3_main_2__dss_rfbi,
1234 &omap44xx_l4_per__dss_rfbi,
1235};
1236
1237static 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
1258static struct omap_hwmod_class omap44xx_venc_hwmod_class = {
1259 .name = "venc",
1260};
1261
1262/* dss_venc */
1263static struct omap_hwmod omap44xx_dss_venc_hwmod;
1264static 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 */
1273static 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
1282static 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 */
1291static 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 */
1301static struct omap_hwmod_ocp_if *omap44xx_dss_venc_slaves[] = {
1302 &omap44xx_l3_main_2__dss_venc,
1303 &omap44xx_l4_per__dss_venc,
1304};
1305
1306static 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,