18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * omap_hwmod_2420_data.c - hardware modules present on the OMAP2420 chips 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * Copyright (C) 2009-2011 Nokia Corporation 68c2ecf20Sopenharmony_ci * Copyright (C) 2012 Texas Instruments, Inc. 78c2ecf20Sopenharmony_ci * Paul Walmsley 88c2ecf20Sopenharmony_ci * 98c2ecf20Sopenharmony_ci * XXX handle crossbar/shared link difference for L3? 108c2ecf20Sopenharmony_ci * XXX these should be marked initdata for multi-OMAP kernels 118c2ecf20Sopenharmony_ci */ 128c2ecf20Sopenharmony_ci 138c2ecf20Sopenharmony_ci#include <linux/platform_data/i2c-omap.h> 148c2ecf20Sopenharmony_ci 158c2ecf20Sopenharmony_ci#include "omap_hwmod.h" 168c2ecf20Sopenharmony_ci#include "l3_2xxx.h" 178c2ecf20Sopenharmony_ci#include "l4_2xxx.h" 188c2ecf20Sopenharmony_ci 198c2ecf20Sopenharmony_ci#include "omap_hwmod_common_data.h" 208c2ecf20Sopenharmony_ci 218c2ecf20Sopenharmony_ci#include "cm-regbits-24xx.h" 228c2ecf20Sopenharmony_ci#include "prm-regbits-24xx.h" 238c2ecf20Sopenharmony_ci#include "i2c.h" 248c2ecf20Sopenharmony_ci#include "mmc.h" 258c2ecf20Sopenharmony_ci#include "serial.h" 268c2ecf20Sopenharmony_ci#include "wd_timer.h" 278c2ecf20Sopenharmony_ci 288c2ecf20Sopenharmony_ci/* 298c2ecf20Sopenharmony_ci * OMAP2420 hardware module integration data 308c2ecf20Sopenharmony_ci * 318c2ecf20Sopenharmony_ci * All of the data in this section should be autogeneratable from the 328c2ecf20Sopenharmony_ci * TI hardware database or other technical documentation. Data that 338c2ecf20Sopenharmony_ci * is driver-specific or driver-kernel integration-specific belongs 348c2ecf20Sopenharmony_ci * elsewhere. 358c2ecf20Sopenharmony_ci */ 368c2ecf20Sopenharmony_ci 378c2ecf20Sopenharmony_ci/* 388c2ecf20Sopenharmony_ci * IP blocks 398c2ecf20Sopenharmony_ci */ 408c2ecf20Sopenharmony_ci 418c2ecf20Sopenharmony_ci/* IVA1 (IVA1) */ 428c2ecf20Sopenharmony_cistatic struct omap_hwmod_class iva1_hwmod_class = { 438c2ecf20Sopenharmony_ci .name = "iva1", 448c2ecf20Sopenharmony_ci}; 458c2ecf20Sopenharmony_ci 468c2ecf20Sopenharmony_cistatic struct omap_hwmod_rst_info omap2420_iva_resets[] = { 478c2ecf20Sopenharmony_ci { .name = "iva", .rst_shift = 8 }, 488c2ecf20Sopenharmony_ci}; 498c2ecf20Sopenharmony_ci 508c2ecf20Sopenharmony_cistatic struct omap_hwmod omap2420_iva_hwmod = { 518c2ecf20Sopenharmony_ci .name = "iva", 528c2ecf20Sopenharmony_ci .class = &iva1_hwmod_class, 538c2ecf20Sopenharmony_ci .clkdm_name = "iva1_clkdm", 548c2ecf20Sopenharmony_ci .rst_lines = omap2420_iva_resets, 558c2ecf20Sopenharmony_ci .rst_lines_cnt = ARRAY_SIZE(omap2420_iva_resets), 568c2ecf20Sopenharmony_ci .main_clk = "iva1_ifck", 578c2ecf20Sopenharmony_ci}; 588c2ecf20Sopenharmony_ci 598c2ecf20Sopenharmony_ci/* DSP */ 608c2ecf20Sopenharmony_cistatic struct omap_hwmod_class dsp_hwmod_class = { 618c2ecf20Sopenharmony_ci .name = "dsp", 628c2ecf20Sopenharmony_ci}; 638c2ecf20Sopenharmony_ci 648c2ecf20Sopenharmony_cistatic struct omap_hwmod_rst_info omap2420_dsp_resets[] = { 658c2ecf20Sopenharmony_ci { .name = "logic", .rst_shift = 0 }, 668c2ecf20Sopenharmony_ci { .name = "mmu", .rst_shift = 1 }, 678c2ecf20Sopenharmony_ci}; 688c2ecf20Sopenharmony_ci 698c2ecf20Sopenharmony_cistatic struct omap_hwmod omap2420_dsp_hwmod = { 708c2ecf20Sopenharmony_ci .name = "dsp", 718c2ecf20Sopenharmony_ci .class = &dsp_hwmod_class, 728c2ecf20Sopenharmony_ci .clkdm_name = "dsp_clkdm", 738c2ecf20Sopenharmony_ci .rst_lines = omap2420_dsp_resets, 748c2ecf20Sopenharmony_ci .rst_lines_cnt = ARRAY_SIZE(omap2420_dsp_resets), 758c2ecf20Sopenharmony_ci .main_clk = "dsp_fck", 768c2ecf20Sopenharmony_ci}; 778c2ecf20Sopenharmony_ci 788c2ecf20Sopenharmony_ci/* I2C common */ 798c2ecf20Sopenharmony_cistatic struct omap_hwmod_class_sysconfig i2c_sysc = { 808c2ecf20Sopenharmony_ci .rev_offs = 0x00, 818c2ecf20Sopenharmony_ci .sysc_offs = 0x20, 828c2ecf20Sopenharmony_ci .syss_offs = 0x10, 838c2ecf20Sopenharmony_ci .sysc_flags = (SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS), 848c2ecf20Sopenharmony_ci .sysc_fields = &omap_hwmod_sysc_type1, 858c2ecf20Sopenharmony_ci}; 868c2ecf20Sopenharmony_ci 878c2ecf20Sopenharmony_cistatic struct omap_hwmod_class i2c_class = { 888c2ecf20Sopenharmony_ci .name = "i2c", 898c2ecf20Sopenharmony_ci .sysc = &i2c_sysc, 908c2ecf20Sopenharmony_ci .reset = &omap_i2c_reset, 918c2ecf20Sopenharmony_ci}; 928c2ecf20Sopenharmony_ci 938c2ecf20Sopenharmony_ci/* I2C1 */ 948c2ecf20Sopenharmony_cistatic struct omap_hwmod omap2420_i2c1_hwmod = { 958c2ecf20Sopenharmony_ci .name = "i2c1", 968c2ecf20Sopenharmony_ci .main_clk = "i2c1_fck", 978c2ecf20Sopenharmony_ci .prcm = { 988c2ecf20Sopenharmony_ci .omap2 = { 998c2ecf20Sopenharmony_ci .module_offs = CORE_MOD, 1008c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 1018c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP2420_ST_I2C1_SHIFT, 1028c2ecf20Sopenharmony_ci }, 1038c2ecf20Sopenharmony_ci }, 1048c2ecf20Sopenharmony_ci .class = &i2c_class, 1058c2ecf20Sopenharmony_ci /* 1068c2ecf20Sopenharmony_ci * From mach-omap2/pm24xx.c: "Putting MPU into the WFI state 1078c2ecf20Sopenharmony_ci * while a transfer is active seems to cause the I2C block to 1088c2ecf20Sopenharmony_ci * timeout. Why? Good question." 1098c2ecf20Sopenharmony_ci */ 1108c2ecf20Sopenharmony_ci .flags = (HWMOD_16BIT_REG | HWMOD_BLOCK_WFI), 1118c2ecf20Sopenharmony_ci}; 1128c2ecf20Sopenharmony_ci 1138c2ecf20Sopenharmony_ci/* I2C2 */ 1148c2ecf20Sopenharmony_cistatic struct omap_hwmod omap2420_i2c2_hwmod = { 1158c2ecf20Sopenharmony_ci .name = "i2c2", 1168c2ecf20Sopenharmony_ci .main_clk = "i2c2_fck", 1178c2ecf20Sopenharmony_ci .prcm = { 1188c2ecf20Sopenharmony_ci .omap2 = { 1198c2ecf20Sopenharmony_ci .module_offs = CORE_MOD, 1208c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 1218c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP2420_ST_I2C2_SHIFT, 1228c2ecf20Sopenharmony_ci }, 1238c2ecf20Sopenharmony_ci }, 1248c2ecf20Sopenharmony_ci .class = &i2c_class, 1258c2ecf20Sopenharmony_ci .flags = HWMOD_16BIT_REG, 1268c2ecf20Sopenharmony_ci}; 1278c2ecf20Sopenharmony_ci 1288c2ecf20Sopenharmony_ci/* mailbox */ 1298c2ecf20Sopenharmony_cistatic struct omap_hwmod omap2420_mailbox_hwmod = { 1308c2ecf20Sopenharmony_ci .name = "mailbox", 1318c2ecf20Sopenharmony_ci .class = &omap2xxx_mailbox_hwmod_class, 1328c2ecf20Sopenharmony_ci .main_clk = "mailboxes_ick", 1338c2ecf20Sopenharmony_ci .prcm = { 1348c2ecf20Sopenharmony_ci .omap2 = { 1358c2ecf20Sopenharmony_ci .module_offs = CORE_MOD, 1368c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 1378c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP24XX_ST_MAILBOXES_SHIFT, 1388c2ecf20Sopenharmony_ci }, 1398c2ecf20Sopenharmony_ci }, 1408c2ecf20Sopenharmony_ci}; 1418c2ecf20Sopenharmony_ci 1428c2ecf20Sopenharmony_ci/* 1438c2ecf20Sopenharmony_ci * 'mcbsp' class 1448c2ecf20Sopenharmony_ci * multi channel buffered serial port controller 1458c2ecf20Sopenharmony_ci */ 1468c2ecf20Sopenharmony_ci 1478c2ecf20Sopenharmony_cistatic struct omap_hwmod_class omap2420_mcbsp_hwmod_class = { 1488c2ecf20Sopenharmony_ci .name = "mcbsp", 1498c2ecf20Sopenharmony_ci}; 1508c2ecf20Sopenharmony_ci 1518c2ecf20Sopenharmony_cistatic struct omap_hwmod_opt_clk mcbsp_opt_clks[] = { 1528c2ecf20Sopenharmony_ci { .role = "pad_fck", .clk = "mcbsp_clks" }, 1538c2ecf20Sopenharmony_ci { .role = "prcm_fck", .clk = "func_96m_ck" }, 1548c2ecf20Sopenharmony_ci}; 1558c2ecf20Sopenharmony_ci 1568c2ecf20Sopenharmony_ci/* mcbsp1 */ 1578c2ecf20Sopenharmony_cistatic struct omap_hwmod omap2420_mcbsp1_hwmod = { 1588c2ecf20Sopenharmony_ci .name = "mcbsp1", 1598c2ecf20Sopenharmony_ci .class = &omap2420_mcbsp_hwmod_class, 1608c2ecf20Sopenharmony_ci .main_clk = "mcbsp1_fck", 1618c2ecf20Sopenharmony_ci .prcm = { 1628c2ecf20Sopenharmony_ci .omap2 = { 1638c2ecf20Sopenharmony_ci .module_offs = CORE_MOD, 1648c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 1658c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP24XX_ST_MCBSP1_SHIFT, 1668c2ecf20Sopenharmony_ci }, 1678c2ecf20Sopenharmony_ci }, 1688c2ecf20Sopenharmony_ci .opt_clks = mcbsp_opt_clks, 1698c2ecf20Sopenharmony_ci .opt_clks_cnt = ARRAY_SIZE(mcbsp_opt_clks), 1708c2ecf20Sopenharmony_ci}; 1718c2ecf20Sopenharmony_ci 1728c2ecf20Sopenharmony_ci/* mcbsp2 */ 1738c2ecf20Sopenharmony_cistatic struct omap_hwmod omap2420_mcbsp2_hwmod = { 1748c2ecf20Sopenharmony_ci .name = "mcbsp2", 1758c2ecf20Sopenharmony_ci .class = &omap2420_mcbsp_hwmod_class, 1768c2ecf20Sopenharmony_ci .main_clk = "mcbsp2_fck", 1778c2ecf20Sopenharmony_ci .prcm = { 1788c2ecf20Sopenharmony_ci .omap2 = { 1798c2ecf20Sopenharmony_ci .module_offs = CORE_MOD, 1808c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 1818c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP24XX_ST_MCBSP2_SHIFT, 1828c2ecf20Sopenharmony_ci }, 1838c2ecf20Sopenharmony_ci }, 1848c2ecf20Sopenharmony_ci .opt_clks = mcbsp_opt_clks, 1858c2ecf20Sopenharmony_ci .opt_clks_cnt = ARRAY_SIZE(mcbsp_opt_clks), 1868c2ecf20Sopenharmony_ci}; 1878c2ecf20Sopenharmony_ci 1888c2ecf20Sopenharmony_cistatic struct omap_hwmod_class_sysconfig omap2420_msdi_sysc = { 1898c2ecf20Sopenharmony_ci .rev_offs = 0x3c, 1908c2ecf20Sopenharmony_ci .sysc_offs = 0x64, 1918c2ecf20Sopenharmony_ci .syss_offs = 0x68, 1928c2ecf20Sopenharmony_ci .sysc_flags = (SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS), 1938c2ecf20Sopenharmony_ci .sysc_fields = &omap_hwmod_sysc_type1, 1948c2ecf20Sopenharmony_ci}; 1958c2ecf20Sopenharmony_ci 1968c2ecf20Sopenharmony_cistatic struct omap_hwmod_class omap2420_msdi_hwmod_class = { 1978c2ecf20Sopenharmony_ci .name = "msdi", 1988c2ecf20Sopenharmony_ci .sysc = &omap2420_msdi_sysc, 1998c2ecf20Sopenharmony_ci .reset = &omap_msdi_reset, 2008c2ecf20Sopenharmony_ci}; 2018c2ecf20Sopenharmony_ci 2028c2ecf20Sopenharmony_ci/* msdi1 */ 2038c2ecf20Sopenharmony_cistatic struct omap_hwmod omap2420_msdi1_hwmod = { 2048c2ecf20Sopenharmony_ci .name = "msdi1", 2058c2ecf20Sopenharmony_ci .class = &omap2420_msdi_hwmod_class, 2068c2ecf20Sopenharmony_ci .main_clk = "mmc_fck", 2078c2ecf20Sopenharmony_ci .prcm = { 2088c2ecf20Sopenharmony_ci .omap2 = { 2098c2ecf20Sopenharmony_ci .module_offs = CORE_MOD, 2108c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 2118c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP2420_ST_MMC_SHIFT, 2128c2ecf20Sopenharmony_ci }, 2138c2ecf20Sopenharmony_ci }, 2148c2ecf20Sopenharmony_ci .flags = HWMOD_16BIT_REG, 2158c2ecf20Sopenharmony_ci}; 2168c2ecf20Sopenharmony_ci 2178c2ecf20Sopenharmony_ci/* HDQ1W/1-wire */ 2188c2ecf20Sopenharmony_cistatic struct omap_hwmod omap2420_hdq1w_hwmod = { 2198c2ecf20Sopenharmony_ci .name = "hdq1w", 2208c2ecf20Sopenharmony_ci .main_clk = "hdq_fck", 2218c2ecf20Sopenharmony_ci .prcm = { 2228c2ecf20Sopenharmony_ci .omap2 = { 2238c2ecf20Sopenharmony_ci .module_offs = CORE_MOD, 2248c2ecf20Sopenharmony_ci .idlest_reg_id = 1, 2258c2ecf20Sopenharmony_ci .idlest_idle_bit = OMAP24XX_ST_HDQ_SHIFT, 2268c2ecf20Sopenharmony_ci }, 2278c2ecf20Sopenharmony_ci }, 2288c2ecf20Sopenharmony_ci .class = &omap2_hdq1w_class, 2298c2ecf20Sopenharmony_ci}; 2308c2ecf20Sopenharmony_ci 2318c2ecf20Sopenharmony_ci/* 2328c2ecf20Sopenharmony_ci * interfaces 2338c2ecf20Sopenharmony_ci */ 2348c2ecf20Sopenharmony_ci 2358c2ecf20Sopenharmony_ci/* L4 CORE -> I2C1 interface */ 2368c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap2420_l4_core__i2c1 = { 2378c2ecf20Sopenharmony_ci .master = &omap2xxx_l4_core_hwmod, 2388c2ecf20Sopenharmony_ci .slave = &omap2420_i2c1_hwmod, 2398c2ecf20Sopenharmony_ci .clk = "i2c1_ick", 2408c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 2418c2ecf20Sopenharmony_ci}; 2428c2ecf20Sopenharmony_ci 2438c2ecf20Sopenharmony_ci/* L4 CORE -> I2C2 interface */ 2448c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap2420_l4_core__i2c2 = { 2458c2ecf20Sopenharmony_ci .master = &omap2xxx_l4_core_hwmod, 2468c2ecf20Sopenharmony_ci .slave = &omap2420_i2c2_hwmod, 2478c2ecf20Sopenharmony_ci .clk = "i2c2_ick", 2488c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 2498c2ecf20Sopenharmony_ci}; 2508c2ecf20Sopenharmony_ci 2518c2ecf20Sopenharmony_ci/* IVA <- L3 interface */ 2528c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap2420_l3__iva = { 2538c2ecf20Sopenharmony_ci .master = &omap2xxx_l3_main_hwmod, 2548c2ecf20Sopenharmony_ci .slave = &omap2420_iva_hwmod, 2558c2ecf20Sopenharmony_ci .clk = "core_l3_ck", 2568c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 2578c2ecf20Sopenharmony_ci}; 2588c2ecf20Sopenharmony_ci 2598c2ecf20Sopenharmony_ci/* DSP <- L3 interface */ 2608c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap2420_l3__dsp = { 2618c2ecf20Sopenharmony_ci .master = &omap2xxx_l3_main_hwmod, 2628c2ecf20Sopenharmony_ci .slave = &omap2420_dsp_hwmod, 2638c2ecf20Sopenharmony_ci .clk = "dsp_ick", 2648c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 2658c2ecf20Sopenharmony_ci}; 2668c2ecf20Sopenharmony_ci 2678c2ecf20Sopenharmony_ci/* l4_wkup -> wd_timer2 */ 2688c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap2420_l4_wkup__wd_timer2 = { 2698c2ecf20Sopenharmony_ci .master = &omap2xxx_l4_wkup_hwmod, 2708c2ecf20Sopenharmony_ci .slave = &omap2xxx_wd_timer2_hwmod, 2718c2ecf20Sopenharmony_ci .clk = "mpu_wdt_ick", 2728c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 2738c2ecf20Sopenharmony_ci}; 2748c2ecf20Sopenharmony_ci 2758c2ecf20Sopenharmony_ci/* l4_wkup -> gpio1 */ 2768c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap2420_l4_wkup__gpio1 = { 2778c2ecf20Sopenharmony_ci .master = &omap2xxx_l4_wkup_hwmod, 2788c2ecf20Sopenharmony_ci .slave = &omap2xxx_gpio1_hwmod, 2798c2ecf20Sopenharmony_ci .clk = "gpios_ick", 2808c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 2818c2ecf20Sopenharmony_ci}; 2828c2ecf20Sopenharmony_ci 2838c2ecf20Sopenharmony_ci/* l4_wkup -> gpio2 */ 2848c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap2420_l4_wkup__gpio2 = { 2858c2ecf20Sopenharmony_ci .master = &omap2xxx_l4_wkup_hwmod, 2868c2ecf20Sopenharmony_ci .slave = &omap2xxx_gpio2_hwmod, 2878c2ecf20Sopenharmony_ci .clk = "gpios_ick", 2888c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 2898c2ecf20Sopenharmony_ci}; 2908c2ecf20Sopenharmony_ci 2918c2ecf20Sopenharmony_ci/* l4_wkup -> gpio3 */ 2928c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap2420_l4_wkup__gpio3 = { 2938c2ecf20Sopenharmony_ci .master = &omap2xxx_l4_wkup_hwmod, 2948c2ecf20Sopenharmony_ci .slave = &omap2xxx_gpio3_hwmod, 2958c2ecf20Sopenharmony_ci .clk = "gpios_ick", 2968c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 2978c2ecf20Sopenharmony_ci}; 2988c2ecf20Sopenharmony_ci 2998c2ecf20Sopenharmony_ci/* l4_wkup -> gpio4 */ 3008c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap2420_l4_wkup__gpio4 = { 3018c2ecf20Sopenharmony_ci .master = &omap2xxx_l4_wkup_hwmod, 3028c2ecf20Sopenharmony_ci .slave = &omap2xxx_gpio4_hwmod, 3038c2ecf20Sopenharmony_ci .clk = "gpios_ick", 3048c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 3058c2ecf20Sopenharmony_ci}; 3068c2ecf20Sopenharmony_ci 3078c2ecf20Sopenharmony_ci/* l4_core -> mailbox */ 3088c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap2420_l4_core__mailbox = { 3098c2ecf20Sopenharmony_ci .master = &omap2xxx_l4_core_hwmod, 3108c2ecf20Sopenharmony_ci .slave = &omap2420_mailbox_hwmod, 3118c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 3128c2ecf20Sopenharmony_ci}; 3138c2ecf20Sopenharmony_ci 3148c2ecf20Sopenharmony_ci/* l4_core -> mcbsp1 */ 3158c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap2420_l4_core__mcbsp1 = { 3168c2ecf20Sopenharmony_ci .master = &omap2xxx_l4_core_hwmod, 3178c2ecf20Sopenharmony_ci .slave = &omap2420_mcbsp1_hwmod, 3188c2ecf20Sopenharmony_ci .clk = "mcbsp1_ick", 3198c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 3208c2ecf20Sopenharmony_ci}; 3218c2ecf20Sopenharmony_ci 3228c2ecf20Sopenharmony_ci/* l4_core -> mcbsp2 */ 3238c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap2420_l4_core__mcbsp2 = { 3248c2ecf20Sopenharmony_ci .master = &omap2xxx_l4_core_hwmod, 3258c2ecf20Sopenharmony_ci .slave = &omap2420_mcbsp2_hwmod, 3268c2ecf20Sopenharmony_ci .clk = "mcbsp2_ick", 3278c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 3288c2ecf20Sopenharmony_ci}; 3298c2ecf20Sopenharmony_ci 3308c2ecf20Sopenharmony_ci/* l4_core -> msdi1 */ 3318c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap2420_l4_core__msdi1 = { 3328c2ecf20Sopenharmony_ci .master = &omap2xxx_l4_core_hwmod, 3338c2ecf20Sopenharmony_ci .slave = &omap2420_msdi1_hwmod, 3348c2ecf20Sopenharmony_ci .clk = "mmc_ick", 3358c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 3368c2ecf20Sopenharmony_ci}; 3378c2ecf20Sopenharmony_ci 3388c2ecf20Sopenharmony_ci/* l4_core -> hdq1w interface */ 3398c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap2420_l4_core__hdq1w = { 3408c2ecf20Sopenharmony_ci .master = &omap2xxx_l4_core_hwmod, 3418c2ecf20Sopenharmony_ci .slave = &omap2420_hdq1w_hwmod, 3428c2ecf20Sopenharmony_ci .clk = "hdq_ick", 3438c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 3448c2ecf20Sopenharmony_ci .flags = OMAP_FIREWALL_L4 | OCPIF_SWSUP_IDLE, 3458c2ecf20Sopenharmony_ci}; 3468c2ecf20Sopenharmony_ci 3478c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if omap2420_l3__gpmc = { 3488c2ecf20Sopenharmony_ci .master = &omap2xxx_l3_main_hwmod, 3498c2ecf20Sopenharmony_ci .slave = &omap2xxx_gpmc_hwmod, 3508c2ecf20Sopenharmony_ci .clk = "core_l3_ck", 3518c2ecf20Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 3528c2ecf20Sopenharmony_ci}; 3538c2ecf20Sopenharmony_ci 3548c2ecf20Sopenharmony_cistatic struct omap_hwmod_ocp_if *omap2420_hwmod_ocp_ifs[] __initdata = { 3558c2ecf20Sopenharmony_ci &omap2xxx_l3_main__l4_core, 3568c2ecf20Sopenharmony_ci &omap2xxx_mpu__l3_main, 3578c2ecf20Sopenharmony_ci &omap2xxx_dss__l3, 3588c2ecf20Sopenharmony_ci &omap2xxx_l4_core__mcspi1, 3598c2ecf20Sopenharmony_ci &omap2xxx_l4_core__mcspi2, 3608c2ecf20Sopenharmony_ci &omap2xxx_l4_core__l4_wkup, 3618c2ecf20Sopenharmony_ci &omap2_l4_core__uart1, 3628c2ecf20Sopenharmony_ci &omap2_l4_core__uart2, 3638c2ecf20Sopenharmony_ci &omap2_l4_core__uart3, 3648c2ecf20Sopenharmony_ci &omap2420_l4_core__i2c1, 3658c2ecf20Sopenharmony_ci &omap2420_l4_core__i2c2, 3668c2ecf20Sopenharmony_ci &omap2420_l3__iva, 3678c2ecf20Sopenharmony_ci &omap2420_l3__dsp, 3688c2ecf20Sopenharmony_ci &omap2xxx_l4_core__timer3, 3698c2ecf20Sopenharmony_ci &omap2xxx_l4_core__timer4, 3708c2ecf20Sopenharmony_ci &omap2xxx_l4_core__timer5, 3718c2ecf20Sopenharmony_ci &omap2xxx_l4_core__timer6, 3728c2ecf20Sopenharmony_ci &omap2xxx_l4_core__timer7, 3738c2ecf20Sopenharmony_ci &omap2xxx_l4_core__timer8, 3748c2ecf20Sopenharmony_ci &omap2xxx_l4_core__timer9, 3758c2ecf20Sopenharmony_ci &omap2xxx_l4_core__timer10, 3768c2ecf20Sopenharmony_ci &omap2xxx_l4_core__timer11, 3778c2ecf20Sopenharmony_ci &omap2xxx_l4_core__timer12, 3788c2ecf20Sopenharmony_ci &omap2420_l4_wkup__wd_timer2, 3798c2ecf20Sopenharmony_ci &omap2xxx_l4_core__dss, 3808c2ecf20Sopenharmony_ci &omap2xxx_l4_core__dss_dispc, 3818c2ecf20Sopenharmony_ci &omap2xxx_l4_core__dss_rfbi, 3828c2ecf20Sopenharmony_ci &omap2xxx_l4_core__dss_venc, 3838c2ecf20Sopenharmony_ci &omap2420_l4_wkup__gpio1, 3848c2ecf20Sopenharmony_ci &omap2420_l4_wkup__gpio2, 3858c2ecf20Sopenharmony_ci &omap2420_l4_wkup__gpio3, 3868c2ecf20Sopenharmony_ci &omap2420_l4_wkup__gpio4, 3878c2ecf20Sopenharmony_ci &omap2420_l4_core__mailbox, 3888c2ecf20Sopenharmony_ci &omap2420_l4_core__mcbsp1, 3898c2ecf20Sopenharmony_ci &omap2420_l4_core__mcbsp2, 3908c2ecf20Sopenharmony_ci &omap2420_l4_core__msdi1, 3918c2ecf20Sopenharmony_ci &omap2xxx_l4_core__rng, 3928c2ecf20Sopenharmony_ci &omap2xxx_l4_core__sham, 3938c2ecf20Sopenharmony_ci &omap2xxx_l4_core__aes, 3948c2ecf20Sopenharmony_ci &omap2420_l4_core__hdq1w, 3958c2ecf20Sopenharmony_ci &omap2420_l3__gpmc, 3968c2ecf20Sopenharmony_ci NULL, 3978c2ecf20Sopenharmony_ci}; 3988c2ecf20Sopenharmony_ci 3998c2ecf20Sopenharmony_ciint __init omap2420_hwmod_init(void) 4008c2ecf20Sopenharmony_ci{ 4018c2ecf20Sopenharmony_ci omap_hwmod_init(); 4028c2ecf20Sopenharmony_ci return omap_hwmod_register_links(omap2420_hwmod_ocp_ifs); 4038c2ecf20Sopenharmony_ci} 404