162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * omap_hwmod_2420_data.c - hardware modules present on the OMAP2420 chips 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Copyright (C) 2009-2011 Nokia Corporation 662306a36Sopenharmony_ci * Copyright (C) 2012 Texas Instruments, Inc. 762306a36Sopenharmony_ci * Paul Walmsley 862306a36Sopenharmony_ci * 962306a36Sopenharmony_ci * XXX handle crossbar/shared link difference for L3? 1062306a36Sopenharmony_ci * XXX these should be marked initdata for multi-OMAP kernels 1162306a36Sopenharmony_ci */ 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ci#include <linux/platform_data/i2c-omap.h> 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_ci#include "omap_hwmod.h" 1662306a36Sopenharmony_ci#include "l3_2xxx.h" 1762306a36Sopenharmony_ci#include "l4_2xxx.h" 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ci#include "omap_hwmod_common_data.h" 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_ci#include "cm-regbits-24xx.h" 2262306a36Sopenharmony_ci#include "prm-regbits-24xx.h" 2362306a36Sopenharmony_ci#include "i2c.h" 2462306a36Sopenharmony_ci#include "mmc.h" 2562306a36Sopenharmony_ci#include "wd_timer.h" 2662306a36Sopenharmony_ci 2762306a36Sopenharmony_ci/* 2862306a36Sopenharmony_ci * OMAP2420 hardware module integration data 2962306a36Sopenharmony_ci * 3062306a36Sopenharmony_ci * All of the data in this section should be autogeneratable from the 3162306a36Sopenharmony_ci * TI hardware database or other technical documentation. Data that 3262306a36Sopenharmony_ci * is driver-specific or driver-kernel integration-specific belongs 3362306a36Sopenharmony_ci * elsewhere. 3462306a36Sopenharmony_ci */ 3562306a36Sopenharmony_ci 3662306a36Sopenharmony_ci/* 3762306a36Sopenharmony_ci * IP blocks 3862306a36Sopenharmony_ci */ 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_ci/* IVA1 (IVA1) */ 4162306a36Sopenharmony_cistatic struct omap_hwmod_class iva1_hwmod_class = { 4262306a36Sopenharmony_ci .name = "iva1", 4362306a36Sopenharmony_ci}; 4462306a36Sopenharmony_ci 4562306a36Sopenharmony_cistatic struct omap_hwmod_rst_info omap2420_iva_resets[] = { 4662306a36Sopenharmony_ci { .name = "iva", .rst_shift = 8 }, 4762306a36Sopenharmony_ci}; 4862306a36Sopenharmony_ci 4962306a36Sopenharmony_cistatic struct omap_hwmod omap2420_iva_hwmod = { 5062306a36Sopenharmony_ci .name = "iva", 5162306a36Sopenharmony_ci .class = &iva1_hwmod_class, 5262306a36Sopenharmony_ci .clkdm_name = "iva1_clkdm", 5362306a36Sopenharmony_ci .rst_lines = omap2420_iva_resets, 5462306a36Sopenharmony_ci .rst_lines_cnt = ARRAY_SIZE(omap2420_iva_resets), 5562306a36Sopenharmony_ci .main_clk = "iva1_ifck", 5662306a36Sopenharmony_ci}; 5762306a36Sopenharmony_ci 5862306a36Sopenharmony_ci/* DSP */ 5962306a36Sopenharmony_cistatic struct omap_hwmod_class dsp_hwmod_class = { 6062306a36Sopenharmony_ci .name = "dsp", 6162306a36Sopenharmony_ci}; 6262306a36Sopenharmony_ci 6362306a36Sopenharmony_cistatic struct omap_hwmod_rst_info omap2420_dsp_resets[] = { 6462306a36Sopenharmony_ci { .name = "logic", .rst_shift = 0 }, 6562306a36Sopenharmony_ci { .name = "mmu", .rst_shift = 1 }, 6662306a36Sopenharmony_ci}; 6762306a36Sopenharmony_ci 6862306a36Sopenharmony_cistatic struct omap_hwmod omap2420_dsp_hwmod = { 6962306a36Sopenharmony_ci .name = "dsp", 7062306a36Sopenharmony_ci .class = &dsp_hwmod_class, 7162306a36Sopenharmony_ci .clkdm_name = "dsp_clkdm", 7262306a36Sopenharmony_ci .rst_lines = omap2420_dsp_resets, 7362306a36Sopenharmony_ci .rst_lines_cnt = ARRAY_SIZE(omap2420_dsp_resets), 7462306a36Sopenharmony_ci .main_clk = "dsp_fck", 7562306a36Sopenharmony_ci}; 7662306a36Sopenharmony_ci 7762306a36Sopenharmony_ci/* I2C common */ 7862306a36Sopenharmony_cistatic struct omap_hwmod_class_sysconfig i2c_sysc = { 7962306a36Sopenharmony_ci .rev_offs = 0x00, 8062306a36Sopenharmony_ci .sysc_offs = 0x20, 8162306a36Sopenharmony_ci .syss_offs = 0x10, 8262306a36Sopenharmony_ci .sysc_flags = (SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS), 8362306a36Sopenharmony_ci .sysc_fields = &omap_hwmod_sysc_type1, 8462306a36Sopenharmony_ci}; 8562306a36Sopenharmony_ci 8662306a36Sopenharmony_cistatic struct omap_hwmod_class i2c_class = { 8762306a36Sopenharmony_ci .name = "i2c", 8862306a36Sopenharmony_ci .sysc = &i2c_sysc, 8962306a36Sopenharmony_ci .reset = &omap_i2c_reset, 9062306a36Sopenharmony_ci}; 9162306a36Sopenharmony_ci 9262306a36Sopenharmony_ci/* I2C1 */ 9362306a36Sopenharmony_cistatic struct omap_hwmod omap2420_i2c1_hwmod = { 9462306a36Sopenharmony_ci .name = "i2c1", 9562306a36Sopenharmony_ci .main_clk = "i2c1_fck", 9662306a36Sopenharmony_ci .prcm = { 9762306a36Sopenharmony_ci .omap2 = { 9862306a36Sopenharmony_ci .module_offs = CORE_MOD, 9962306a36Sopenharmony_ci .idlest_reg_id = 1, 10062306a36Sopenharmony_ci .idlest_idle_bit = OMAP2420_ST_I2C1_SHIFT, 10162306a36Sopenharmony_ci }, 10262306a36Sopenharmony_ci }, 10362306a36Sopenharmony_ci .class = &i2c_class, 10462306a36Sopenharmony_ci /* 10562306a36Sopenharmony_ci * From mach-omap2/pm24xx.c: "Putting MPU into the WFI state 10662306a36Sopenharmony_ci * while a transfer is active seems to cause the I2C block to 10762306a36Sopenharmony_ci * timeout. Why? Good question." 10862306a36Sopenharmony_ci */ 10962306a36Sopenharmony_ci .flags = (HWMOD_16BIT_REG | HWMOD_BLOCK_WFI), 11062306a36Sopenharmony_ci}; 11162306a36Sopenharmony_ci 11262306a36Sopenharmony_ci/* I2C2 */ 11362306a36Sopenharmony_cistatic struct omap_hwmod omap2420_i2c2_hwmod = { 11462306a36Sopenharmony_ci .name = "i2c2", 11562306a36Sopenharmony_ci .main_clk = "i2c2_fck", 11662306a36Sopenharmony_ci .prcm = { 11762306a36Sopenharmony_ci .omap2 = { 11862306a36Sopenharmony_ci .module_offs = CORE_MOD, 11962306a36Sopenharmony_ci .idlest_reg_id = 1, 12062306a36Sopenharmony_ci .idlest_idle_bit = OMAP2420_ST_I2C2_SHIFT, 12162306a36Sopenharmony_ci }, 12262306a36Sopenharmony_ci }, 12362306a36Sopenharmony_ci .class = &i2c_class, 12462306a36Sopenharmony_ci .flags = HWMOD_16BIT_REG, 12562306a36Sopenharmony_ci}; 12662306a36Sopenharmony_ci 12762306a36Sopenharmony_ci/* mailbox */ 12862306a36Sopenharmony_cistatic struct omap_hwmod omap2420_mailbox_hwmod = { 12962306a36Sopenharmony_ci .name = "mailbox", 13062306a36Sopenharmony_ci .class = &omap2xxx_mailbox_hwmod_class, 13162306a36Sopenharmony_ci .main_clk = "mailboxes_ick", 13262306a36Sopenharmony_ci .prcm = { 13362306a36Sopenharmony_ci .omap2 = { 13462306a36Sopenharmony_ci .module_offs = CORE_MOD, 13562306a36Sopenharmony_ci .idlest_reg_id = 1, 13662306a36Sopenharmony_ci .idlest_idle_bit = OMAP24XX_ST_MAILBOXES_SHIFT, 13762306a36Sopenharmony_ci }, 13862306a36Sopenharmony_ci }, 13962306a36Sopenharmony_ci}; 14062306a36Sopenharmony_ci 14162306a36Sopenharmony_ci/* 14262306a36Sopenharmony_ci * 'mcbsp' class 14362306a36Sopenharmony_ci * multi channel buffered serial port controller 14462306a36Sopenharmony_ci */ 14562306a36Sopenharmony_ci 14662306a36Sopenharmony_cistatic struct omap_hwmod_class omap2420_mcbsp_hwmod_class = { 14762306a36Sopenharmony_ci .name = "mcbsp", 14862306a36Sopenharmony_ci}; 14962306a36Sopenharmony_ci 15062306a36Sopenharmony_cistatic struct omap_hwmod_opt_clk mcbsp_opt_clks[] = { 15162306a36Sopenharmony_ci { .role = "pad_fck", .clk = "mcbsp_clks" }, 15262306a36Sopenharmony_ci { .role = "prcm_fck", .clk = "func_96m_ck" }, 15362306a36Sopenharmony_ci}; 15462306a36Sopenharmony_ci 15562306a36Sopenharmony_ci/* mcbsp1 */ 15662306a36Sopenharmony_cistatic struct omap_hwmod omap2420_mcbsp1_hwmod = { 15762306a36Sopenharmony_ci .name = "mcbsp1", 15862306a36Sopenharmony_ci .class = &omap2420_mcbsp_hwmod_class, 15962306a36Sopenharmony_ci .main_clk = "mcbsp1_fck", 16062306a36Sopenharmony_ci .prcm = { 16162306a36Sopenharmony_ci .omap2 = { 16262306a36Sopenharmony_ci .module_offs = CORE_MOD, 16362306a36Sopenharmony_ci .idlest_reg_id = 1, 16462306a36Sopenharmony_ci .idlest_idle_bit = OMAP24XX_ST_MCBSP1_SHIFT, 16562306a36Sopenharmony_ci }, 16662306a36Sopenharmony_ci }, 16762306a36Sopenharmony_ci .opt_clks = mcbsp_opt_clks, 16862306a36Sopenharmony_ci .opt_clks_cnt = ARRAY_SIZE(mcbsp_opt_clks), 16962306a36Sopenharmony_ci}; 17062306a36Sopenharmony_ci 17162306a36Sopenharmony_ci/* mcbsp2 */ 17262306a36Sopenharmony_cistatic struct omap_hwmod omap2420_mcbsp2_hwmod = { 17362306a36Sopenharmony_ci .name = "mcbsp2", 17462306a36Sopenharmony_ci .class = &omap2420_mcbsp_hwmod_class, 17562306a36Sopenharmony_ci .main_clk = "mcbsp2_fck", 17662306a36Sopenharmony_ci .prcm = { 17762306a36Sopenharmony_ci .omap2 = { 17862306a36Sopenharmony_ci .module_offs = CORE_MOD, 17962306a36Sopenharmony_ci .idlest_reg_id = 1, 18062306a36Sopenharmony_ci .idlest_idle_bit = OMAP24XX_ST_MCBSP2_SHIFT, 18162306a36Sopenharmony_ci }, 18262306a36Sopenharmony_ci }, 18362306a36Sopenharmony_ci .opt_clks = mcbsp_opt_clks, 18462306a36Sopenharmony_ci .opt_clks_cnt = ARRAY_SIZE(mcbsp_opt_clks), 18562306a36Sopenharmony_ci}; 18662306a36Sopenharmony_ci 18762306a36Sopenharmony_cistatic struct omap_hwmod_class_sysconfig omap2420_msdi_sysc = { 18862306a36Sopenharmony_ci .rev_offs = 0x3c, 18962306a36Sopenharmony_ci .sysc_offs = 0x64, 19062306a36Sopenharmony_ci .syss_offs = 0x68, 19162306a36Sopenharmony_ci .sysc_flags = (SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS), 19262306a36Sopenharmony_ci .sysc_fields = &omap_hwmod_sysc_type1, 19362306a36Sopenharmony_ci}; 19462306a36Sopenharmony_ci 19562306a36Sopenharmony_cistatic struct omap_hwmod_class omap2420_msdi_hwmod_class = { 19662306a36Sopenharmony_ci .name = "msdi", 19762306a36Sopenharmony_ci .sysc = &omap2420_msdi_sysc, 19862306a36Sopenharmony_ci .reset = &omap_msdi_reset, 19962306a36Sopenharmony_ci}; 20062306a36Sopenharmony_ci 20162306a36Sopenharmony_ci/* msdi1 */ 20262306a36Sopenharmony_cistatic struct omap_hwmod omap2420_msdi1_hwmod = { 20362306a36Sopenharmony_ci .name = "msdi1", 20462306a36Sopenharmony_ci .class = &omap2420_msdi_hwmod_class, 20562306a36Sopenharmony_ci .main_clk = "mmc_fck", 20662306a36Sopenharmony_ci .prcm = { 20762306a36Sopenharmony_ci .omap2 = { 20862306a36Sopenharmony_ci .module_offs = CORE_MOD, 20962306a36Sopenharmony_ci .idlest_reg_id = 1, 21062306a36Sopenharmony_ci .idlest_idle_bit = OMAP2420_ST_MMC_SHIFT, 21162306a36Sopenharmony_ci }, 21262306a36Sopenharmony_ci }, 21362306a36Sopenharmony_ci .flags = HWMOD_16BIT_REG, 21462306a36Sopenharmony_ci}; 21562306a36Sopenharmony_ci 21662306a36Sopenharmony_ci/* HDQ1W/1-wire */ 21762306a36Sopenharmony_cistatic struct omap_hwmod omap2420_hdq1w_hwmod = { 21862306a36Sopenharmony_ci .name = "hdq1w", 21962306a36Sopenharmony_ci .main_clk = "hdq_fck", 22062306a36Sopenharmony_ci .prcm = { 22162306a36Sopenharmony_ci .omap2 = { 22262306a36Sopenharmony_ci .module_offs = CORE_MOD, 22362306a36Sopenharmony_ci .idlest_reg_id = 1, 22462306a36Sopenharmony_ci .idlest_idle_bit = OMAP24XX_ST_HDQ_SHIFT, 22562306a36Sopenharmony_ci }, 22662306a36Sopenharmony_ci }, 22762306a36Sopenharmony_ci .class = &omap2_hdq1w_class, 22862306a36Sopenharmony_ci}; 22962306a36Sopenharmony_ci 23062306a36Sopenharmony_ci/* 23162306a36Sopenharmony_ci * interfaces 23262306a36Sopenharmony_ci */ 23362306a36Sopenharmony_ci 23462306a36Sopenharmony_ci/* L4 CORE -> I2C1 interface */ 23562306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if omap2420_l4_core__i2c1 = { 23662306a36Sopenharmony_ci .master = &omap2xxx_l4_core_hwmod, 23762306a36Sopenharmony_ci .slave = &omap2420_i2c1_hwmod, 23862306a36Sopenharmony_ci .clk = "i2c1_ick", 23962306a36Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 24062306a36Sopenharmony_ci}; 24162306a36Sopenharmony_ci 24262306a36Sopenharmony_ci/* L4 CORE -> I2C2 interface */ 24362306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if omap2420_l4_core__i2c2 = { 24462306a36Sopenharmony_ci .master = &omap2xxx_l4_core_hwmod, 24562306a36Sopenharmony_ci .slave = &omap2420_i2c2_hwmod, 24662306a36Sopenharmony_ci .clk = "i2c2_ick", 24762306a36Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 24862306a36Sopenharmony_ci}; 24962306a36Sopenharmony_ci 25062306a36Sopenharmony_ci/* IVA <- L3 interface */ 25162306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if omap2420_l3__iva = { 25262306a36Sopenharmony_ci .master = &omap2xxx_l3_main_hwmod, 25362306a36Sopenharmony_ci .slave = &omap2420_iva_hwmod, 25462306a36Sopenharmony_ci .clk = "core_l3_ck", 25562306a36Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 25662306a36Sopenharmony_ci}; 25762306a36Sopenharmony_ci 25862306a36Sopenharmony_ci/* DSP <- L3 interface */ 25962306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if omap2420_l3__dsp = { 26062306a36Sopenharmony_ci .master = &omap2xxx_l3_main_hwmod, 26162306a36Sopenharmony_ci .slave = &omap2420_dsp_hwmod, 26262306a36Sopenharmony_ci .clk = "dsp_ick", 26362306a36Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 26462306a36Sopenharmony_ci}; 26562306a36Sopenharmony_ci 26662306a36Sopenharmony_ci/* l4_wkup -> wd_timer2 */ 26762306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if omap2420_l4_wkup__wd_timer2 = { 26862306a36Sopenharmony_ci .master = &omap2xxx_l4_wkup_hwmod, 26962306a36Sopenharmony_ci .slave = &omap2xxx_wd_timer2_hwmod, 27062306a36Sopenharmony_ci .clk = "mpu_wdt_ick", 27162306a36Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 27262306a36Sopenharmony_ci}; 27362306a36Sopenharmony_ci 27462306a36Sopenharmony_ci/* l4_wkup -> gpio1 */ 27562306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if omap2420_l4_wkup__gpio1 = { 27662306a36Sopenharmony_ci .master = &omap2xxx_l4_wkup_hwmod, 27762306a36Sopenharmony_ci .slave = &omap2xxx_gpio1_hwmod, 27862306a36Sopenharmony_ci .clk = "gpios_ick", 27962306a36Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 28062306a36Sopenharmony_ci}; 28162306a36Sopenharmony_ci 28262306a36Sopenharmony_ci/* l4_wkup -> gpio2 */ 28362306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if omap2420_l4_wkup__gpio2 = { 28462306a36Sopenharmony_ci .master = &omap2xxx_l4_wkup_hwmod, 28562306a36Sopenharmony_ci .slave = &omap2xxx_gpio2_hwmod, 28662306a36Sopenharmony_ci .clk = "gpios_ick", 28762306a36Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 28862306a36Sopenharmony_ci}; 28962306a36Sopenharmony_ci 29062306a36Sopenharmony_ci/* l4_wkup -> gpio3 */ 29162306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if omap2420_l4_wkup__gpio3 = { 29262306a36Sopenharmony_ci .master = &omap2xxx_l4_wkup_hwmod, 29362306a36Sopenharmony_ci .slave = &omap2xxx_gpio3_hwmod, 29462306a36Sopenharmony_ci .clk = "gpios_ick", 29562306a36Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 29662306a36Sopenharmony_ci}; 29762306a36Sopenharmony_ci 29862306a36Sopenharmony_ci/* l4_wkup -> gpio4 */ 29962306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if omap2420_l4_wkup__gpio4 = { 30062306a36Sopenharmony_ci .master = &omap2xxx_l4_wkup_hwmod, 30162306a36Sopenharmony_ci .slave = &omap2xxx_gpio4_hwmod, 30262306a36Sopenharmony_ci .clk = "gpios_ick", 30362306a36Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 30462306a36Sopenharmony_ci}; 30562306a36Sopenharmony_ci 30662306a36Sopenharmony_ci/* l4_core -> mailbox */ 30762306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if omap2420_l4_core__mailbox = { 30862306a36Sopenharmony_ci .master = &omap2xxx_l4_core_hwmod, 30962306a36Sopenharmony_ci .slave = &omap2420_mailbox_hwmod, 31062306a36Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 31162306a36Sopenharmony_ci}; 31262306a36Sopenharmony_ci 31362306a36Sopenharmony_ci/* l4_core -> mcbsp1 */ 31462306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if omap2420_l4_core__mcbsp1 = { 31562306a36Sopenharmony_ci .master = &omap2xxx_l4_core_hwmod, 31662306a36Sopenharmony_ci .slave = &omap2420_mcbsp1_hwmod, 31762306a36Sopenharmony_ci .clk = "mcbsp1_ick", 31862306a36Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 31962306a36Sopenharmony_ci}; 32062306a36Sopenharmony_ci 32162306a36Sopenharmony_ci/* l4_core -> mcbsp2 */ 32262306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if omap2420_l4_core__mcbsp2 = { 32362306a36Sopenharmony_ci .master = &omap2xxx_l4_core_hwmod, 32462306a36Sopenharmony_ci .slave = &omap2420_mcbsp2_hwmod, 32562306a36Sopenharmony_ci .clk = "mcbsp2_ick", 32662306a36Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 32762306a36Sopenharmony_ci}; 32862306a36Sopenharmony_ci 32962306a36Sopenharmony_ci/* l4_core -> msdi1 */ 33062306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if omap2420_l4_core__msdi1 = { 33162306a36Sopenharmony_ci .master = &omap2xxx_l4_core_hwmod, 33262306a36Sopenharmony_ci .slave = &omap2420_msdi1_hwmod, 33362306a36Sopenharmony_ci .clk = "mmc_ick", 33462306a36Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 33562306a36Sopenharmony_ci}; 33662306a36Sopenharmony_ci 33762306a36Sopenharmony_ci/* l4_core -> hdq1w interface */ 33862306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if omap2420_l4_core__hdq1w = { 33962306a36Sopenharmony_ci .master = &omap2xxx_l4_core_hwmod, 34062306a36Sopenharmony_ci .slave = &omap2420_hdq1w_hwmod, 34162306a36Sopenharmony_ci .clk = "hdq_ick", 34262306a36Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 34362306a36Sopenharmony_ci .flags = OMAP_FIREWALL_L4 | OCPIF_SWSUP_IDLE, 34462306a36Sopenharmony_ci}; 34562306a36Sopenharmony_ci 34662306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if omap2420_l3__gpmc = { 34762306a36Sopenharmony_ci .master = &omap2xxx_l3_main_hwmod, 34862306a36Sopenharmony_ci .slave = &omap2xxx_gpmc_hwmod, 34962306a36Sopenharmony_ci .clk = "core_l3_ck", 35062306a36Sopenharmony_ci .user = OCP_USER_MPU | OCP_USER_SDMA, 35162306a36Sopenharmony_ci}; 35262306a36Sopenharmony_ci 35362306a36Sopenharmony_cistatic struct omap_hwmod_ocp_if *omap2420_hwmod_ocp_ifs[] __initdata = { 35462306a36Sopenharmony_ci &omap2xxx_l3_main__l4_core, 35562306a36Sopenharmony_ci &omap2xxx_mpu__l3_main, 35662306a36Sopenharmony_ci &omap2xxx_dss__l3, 35762306a36Sopenharmony_ci &omap2xxx_l4_core__mcspi1, 35862306a36Sopenharmony_ci &omap2xxx_l4_core__mcspi2, 35962306a36Sopenharmony_ci &omap2xxx_l4_core__l4_wkup, 36062306a36Sopenharmony_ci &omap2_l4_core__uart1, 36162306a36Sopenharmony_ci &omap2_l4_core__uart2, 36262306a36Sopenharmony_ci &omap2_l4_core__uart3, 36362306a36Sopenharmony_ci &omap2420_l4_core__i2c1, 36462306a36Sopenharmony_ci &omap2420_l4_core__i2c2, 36562306a36Sopenharmony_ci &omap2420_l3__iva, 36662306a36Sopenharmony_ci &omap2420_l3__dsp, 36762306a36Sopenharmony_ci &omap2xxx_l4_core__timer3, 36862306a36Sopenharmony_ci &omap2xxx_l4_core__timer4, 36962306a36Sopenharmony_ci &omap2xxx_l4_core__timer5, 37062306a36Sopenharmony_ci &omap2xxx_l4_core__timer6, 37162306a36Sopenharmony_ci &omap2xxx_l4_core__timer7, 37262306a36Sopenharmony_ci &omap2xxx_l4_core__timer8, 37362306a36Sopenharmony_ci &omap2xxx_l4_core__timer9, 37462306a36Sopenharmony_ci &omap2xxx_l4_core__timer10, 37562306a36Sopenharmony_ci &omap2xxx_l4_core__timer11, 37662306a36Sopenharmony_ci &omap2xxx_l4_core__timer12, 37762306a36Sopenharmony_ci &omap2420_l4_wkup__wd_timer2, 37862306a36Sopenharmony_ci &omap2xxx_l4_core__dss, 37962306a36Sopenharmony_ci &omap2xxx_l4_core__dss_dispc, 38062306a36Sopenharmony_ci &omap2xxx_l4_core__dss_rfbi, 38162306a36Sopenharmony_ci &omap2xxx_l4_core__dss_venc, 38262306a36Sopenharmony_ci &omap2420_l4_wkup__gpio1, 38362306a36Sopenharmony_ci &omap2420_l4_wkup__gpio2, 38462306a36Sopenharmony_ci &omap2420_l4_wkup__gpio3, 38562306a36Sopenharmony_ci &omap2420_l4_wkup__gpio4, 38662306a36Sopenharmony_ci &omap2420_l4_core__mailbox, 38762306a36Sopenharmony_ci &omap2420_l4_core__mcbsp1, 38862306a36Sopenharmony_ci &omap2420_l4_core__mcbsp2, 38962306a36Sopenharmony_ci &omap2420_l4_core__msdi1, 39062306a36Sopenharmony_ci &omap2xxx_l4_core__rng, 39162306a36Sopenharmony_ci &omap2xxx_l4_core__sham, 39262306a36Sopenharmony_ci &omap2xxx_l4_core__aes, 39362306a36Sopenharmony_ci &omap2420_l4_core__hdq1w, 39462306a36Sopenharmony_ci &omap2420_l3__gpmc, 39562306a36Sopenharmony_ci NULL, 39662306a36Sopenharmony_ci}; 39762306a36Sopenharmony_ci 39862306a36Sopenharmony_ciint __init omap2420_hwmod_init(void) 39962306a36Sopenharmony_ci{ 40062306a36Sopenharmony_ci omap_hwmod_init(); 40162306a36Sopenharmony_ci return omap_hwmod_register_links(omap2420_hwmod_ocp_ifs); 40262306a36Sopenharmony_ci} 403