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