aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSuman Anna2013-11-25 11:53:43 -0600
committerSuman Anna2019-03-04 10:02:37 -0600
commit509c339c876419304fddde5091140c4d5d961194 (patch)
tree72210d0a49a1a4a51b9809c8ad81860b84502aab
parent0d0b573ae639239632e0d6c6b28c1f55a2027c67 (diff)
downloadremoteproc-509c339c876419304fddde5091140c4d5d961194.tar.gz
remoteproc-509c339c876419304fddde5091140c4d5d961194.tar.xz
remoteproc-509c339c876419304fddde5091140c4d5d961194.zip
ARM: OMAP5: hwmod_data: add data for IPU & DSP processors
OMAP5, like OMAP4, also has an IPU and a DSP processor subsystems. The relevant hwmod classes and data structures are added for these devices. Do note that these hwmod data strucutures do not have a .modulemode field as the devices are managed together with their corresponding MMUs. Each of the processor subsystem and its MMU are present within the same clock domain and requires the domain be clocked and enabled until the last entity is disabled. The module is disabled properly during the omap_device_idle processing of the MMU hwmod while disabling the MMU. Signed-off-by: Suman Anna <s-anna@ti.com>
-rw-r--r--arch/arm/mach-omap2/omap_hwmod_54xx_data.c79
1 files changed, 79 insertions, 0 deletions
diff --git a/arch/arm/mach-omap2/omap_hwmod_54xx_data.c b/arch/arm/mach-omap2/omap_hwmod_54xx_data.c
index 115473d441cd..9b5dbc017c71 100644
--- a/arch/arm/mach-omap2/omap_hwmod_54xx_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_54xx_data.c
@@ -321,6 +321,36 @@ static struct omap_hwmod omap54xx_dmic_hwmod = {
321}; 321};
322 322
323/* 323/*
324 * 'dsp' class
325 * dsp sub-system
326 */
327
328static struct omap_hwmod_class omap54xx_dsp_hwmod_class = {
329 .name = "dsp",
330};
331
332static struct omap_hwmod_rst_info omap54xx_dsp_resets[] = {
333 { .name = "dsp", .rst_shift = 0 },
334};
335
336/* dsp */
337static struct omap_hwmod omap54xx_dsp_hwmod = {
338 .name = "dsp",
339 .class = &omap54xx_dsp_hwmod_class,
340 .clkdm_name = "dsp_clkdm",
341 .rst_lines = omap54xx_dsp_resets,
342 .rst_lines_cnt = ARRAY_SIZE(omap54xx_dsp_resets),
343 .main_clk = "dpll_iva_h11x2_ck",
344 .prcm = {
345 .omap4 = {
346 .clkctrl_offs = OMAP54XX_CM_DSP_DSP_CLKCTRL_OFFSET,
347 .rstctrl_offs = OMAP54XX_RM_DSP_RSTCTRL_OFFSET,
348 .context_offs = OMAP54XX_RM_DSP_DSP_CONTEXT_OFFSET,
349 },
350 },
351};
352
353/*
324 * 'dss' class 354 * 'dss' class
325 * display sub-system 355 * display sub-system
326 */ 356 */
@@ -903,6 +933,37 @@ static struct omap_hwmod omap54xx_i2c5_hwmod = {
903}; 933};
904 934
905/* 935/*
936 * 'ipu' class
937 * imaging processor unit
938 */
939
940static struct omap_hwmod_class omap54xx_ipu_hwmod_class = {
941 .name = "ipu",
942};
943
944static struct omap_hwmod_rst_info omap54xx_ipu_resets[] = {
945 { .name = "cpu0", .rst_shift = 0 },
946 { .name = "cpu1", .rst_shift = 1 },
947};
948
949/* ipu */
950static struct omap_hwmod omap54xx_ipu_hwmod = {
951 .name = "ipu",
952 .class = &omap54xx_ipu_hwmod_class,
953 .clkdm_name = "ipu_clkdm",
954 .rst_lines = omap54xx_ipu_resets,
955 .rst_lines_cnt = ARRAY_SIZE(omap54xx_ipu_resets),
956 .main_clk = "dpll_core_h22x2_ck",
957 .prcm = {
958 .omap4 = {
959 .clkctrl_offs = OMAP54XX_CM_IPU_IPU_CLKCTRL_OFFSET,
960 .rstctrl_offs = OMAP54XX_RM_IPU_RSTCTRL_OFFSET,
961 .context_offs = OMAP54XX_RM_IPU_IPU_CONTEXT_OFFSET,
962 },
963 },
964};
965
966/*
906 * 'kbd' class 967 * 'kbd' class
907 * keyboard controller 968 * keyboard controller
908 */ 969 */
@@ -2074,6 +2135,14 @@ static struct omap_hwmod_ocp_if omap54xx_l4_cfg__l3_main_1 = {
2074 .user = OCP_USER_MPU | OCP_USER_SDMA, 2135 .user = OCP_USER_MPU | OCP_USER_SDMA,
2075}; 2136};
2076 2137
2138/* dsp -> l3_main_1 */
2139static struct omap_hwmod_ocp_if omap54xx_dsp__l3_main_1 = {
2140 .master = &omap54xx_dsp_hwmod,
2141 .slave = &omap54xx_l3_main_1_hwmod,
2142 .clk = "l3_iclk_div",
2143 .user = OCP_USER_MPU | OCP_USER_SDMA,
2144};
2145
2077/* l4_cfg -> mmu_dsp */ 2146/* l4_cfg -> mmu_dsp */
2078static struct omap_hwmod_ocp_if omap54xx_l4_cfg__mmu_dsp = { 2147static struct omap_hwmod_ocp_if omap54xx_l4_cfg__mmu_dsp = {
2079 .master = &omap54xx_l4_cfg_hwmod, 2148 .master = &omap54xx_l4_cfg_hwmod,
@@ -2106,6 +2175,14 @@ static struct omap_hwmod_ocp_if omap54xx_l4_cfg__l3_main_2 = {
2106 .user = OCP_USER_MPU | OCP_USER_SDMA, 2175 .user = OCP_USER_MPU | OCP_USER_SDMA,
2107}; 2176};
2108 2177
2178/* l3_main_2 -> ipu */
2179static struct omap_hwmod_ocp_if omap54xx_l3_main_2__ipu = {
2180 .master = &omap54xx_l3_main_2_hwmod,
2181 .slave = &omap54xx_ipu_hwmod,
2182 .clk = "l3_iclk_div",
2183 .user = OCP_USER_MPU | OCP_USER_SDMA,
2184};
2185
2109/* l3_main_2 -> mmu_ipu */ 2186/* l3_main_2 -> mmu_ipu */
2110static struct omap_hwmod_ocp_if omap54xx_l3_main_2__mmu_ipu = { 2187static struct omap_hwmod_ocp_if omap54xx_l3_main_2__mmu_ipu = {
2111 .master = &omap54xx_l3_main_2_hwmod, 2188 .master = &omap54xx_l3_main_2_hwmod,
@@ -2695,7 +2772,9 @@ static struct omap_hwmod_ocp_if *omap54xx_hwmod_ocp_ifs[] __initdata = {
2695 &omap54xx_l3_main_3__l3_instr, 2772 &omap54xx_l3_main_3__l3_instr,
2696 &omap54xx_l3_main_2__l3_main_1, 2773 &omap54xx_l3_main_2__l3_main_1,
2697 &omap54xx_l4_cfg__l3_main_1, 2774 &omap54xx_l4_cfg__l3_main_1,
2775 &omap54xx_dsp__l3_main_1,
2698 &omap54xx_mpu__l3_main_1, 2776 &omap54xx_mpu__l3_main_1,
2777 &omap54xx_l3_main_2__ipu,
2699 &omap54xx_l3_main_1__l3_main_2, 2778 &omap54xx_l3_main_1__l3_main_2,
2700 &omap54xx_l4_cfg__l3_main_2, 2779 &omap54xx_l4_cfg__l3_main_2,
2701 &omap54xx_l3_main_1__l3_main_3, 2780 &omap54xx_l3_main_1__l3_main_3,