xref: /OK3568_Linux_fs/kernel/arch/arm/mach-omap2/omap_hwmod_2420_data.c (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun // SPDX-License-Identifier: GPL-2.0-only
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * omap_hwmod_2420_data.c - hardware modules present on the OMAP2420 chips
4*4882a593Smuzhiyun  *
5*4882a593Smuzhiyun  * Copyright (C) 2009-2011 Nokia Corporation
6*4882a593Smuzhiyun  * Copyright (C) 2012 Texas Instruments, Inc.
7*4882a593Smuzhiyun  * Paul Walmsley
8*4882a593Smuzhiyun  *
9*4882a593Smuzhiyun  * XXX handle crossbar/shared link difference for L3?
10*4882a593Smuzhiyun  * XXX these should be marked initdata for multi-OMAP kernels
11*4882a593Smuzhiyun  */
12*4882a593Smuzhiyun 
13*4882a593Smuzhiyun #include <linux/platform_data/i2c-omap.h>
14*4882a593Smuzhiyun 
15*4882a593Smuzhiyun #include "omap_hwmod.h"
16*4882a593Smuzhiyun #include "l3_2xxx.h"
17*4882a593Smuzhiyun #include "l4_2xxx.h"
18*4882a593Smuzhiyun 
19*4882a593Smuzhiyun #include "omap_hwmod_common_data.h"
20*4882a593Smuzhiyun 
21*4882a593Smuzhiyun #include "cm-regbits-24xx.h"
22*4882a593Smuzhiyun #include "prm-regbits-24xx.h"
23*4882a593Smuzhiyun #include "i2c.h"
24*4882a593Smuzhiyun #include "mmc.h"
25*4882a593Smuzhiyun #include "serial.h"
26*4882a593Smuzhiyun #include "wd_timer.h"
27*4882a593Smuzhiyun 
28*4882a593Smuzhiyun /*
29*4882a593Smuzhiyun  * OMAP2420 hardware module integration data
30*4882a593Smuzhiyun  *
31*4882a593Smuzhiyun  * All of the data in this section should be autogeneratable from the
32*4882a593Smuzhiyun  * TI hardware database or other technical documentation.  Data that
33*4882a593Smuzhiyun  * is driver-specific or driver-kernel integration-specific belongs
34*4882a593Smuzhiyun  * elsewhere.
35*4882a593Smuzhiyun  */
36*4882a593Smuzhiyun 
37*4882a593Smuzhiyun /*
38*4882a593Smuzhiyun  * IP blocks
39*4882a593Smuzhiyun  */
40*4882a593Smuzhiyun 
41*4882a593Smuzhiyun /* IVA1 (IVA1) */
42*4882a593Smuzhiyun static struct omap_hwmod_class iva1_hwmod_class = {
43*4882a593Smuzhiyun 	.name		= "iva1",
44*4882a593Smuzhiyun };
45*4882a593Smuzhiyun 
46*4882a593Smuzhiyun static struct omap_hwmod_rst_info omap2420_iva_resets[] = {
47*4882a593Smuzhiyun 	{ .name = "iva", .rst_shift = 8 },
48*4882a593Smuzhiyun };
49*4882a593Smuzhiyun 
50*4882a593Smuzhiyun static struct omap_hwmod omap2420_iva_hwmod = {
51*4882a593Smuzhiyun 	.name		= "iva",
52*4882a593Smuzhiyun 	.class		= &iva1_hwmod_class,
53*4882a593Smuzhiyun 	.clkdm_name	= "iva1_clkdm",
54*4882a593Smuzhiyun 	.rst_lines	= omap2420_iva_resets,
55*4882a593Smuzhiyun 	.rst_lines_cnt	= ARRAY_SIZE(omap2420_iva_resets),
56*4882a593Smuzhiyun 	.main_clk	= "iva1_ifck",
57*4882a593Smuzhiyun };
58*4882a593Smuzhiyun 
59*4882a593Smuzhiyun /* DSP */
60*4882a593Smuzhiyun static struct omap_hwmod_class dsp_hwmod_class = {
61*4882a593Smuzhiyun 	.name		= "dsp",
62*4882a593Smuzhiyun };
63*4882a593Smuzhiyun 
64*4882a593Smuzhiyun static struct omap_hwmod_rst_info omap2420_dsp_resets[] = {
65*4882a593Smuzhiyun 	{ .name = "logic", .rst_shift = 0 },
66*4882a593Smuzhiyun 	{ .name = "mmu", .rst_shift = 1 },
67*4882a593Smuzhiyun };
68*4882a593Smuzhiyun 
69*4882a593Smuzhiyun static struct omap_hwmod omap2420_dsp_hwmod = {
70*4882a593Smuzhiyun 	.name		= "dsp",
71*4882a593Smuzhiyun 	.class		= &dsp_hwmod_class,
72*4882a593Smuzhiyun 	.clkdm_name	= "dsp_clkdm",
73*4882a593Smuzhiyun 	.rst_lines	= omap2420_dsp_resets,
74*4882a593Smuzhiyun 	.rst_lines_cnt	= ARRAY_SIZE(omap2420_dsp_resets),
75*4882a593Smuzhiyun 	.main_clk	= "dsp_fck",
76*4882a593Smuzhiyun };
77*4882a593Smuzhiyun 
78*4882a593Smuzhiyun /* I2C common */
79*4882a593Smuzhiyun static struct omap_hwmod_class_sysconfig i2c_sysc = {
80*4882a593Smuzhiyun 	.rev_offs	= 0x00,
81*4882a593Smuzhiyun 	.sysc_offs	= 0x20,
82*4882a593Smuzhiyun 	.syss_offs	= 0x10,
83*4882a593Smuzhiyun 	.sysc_flags	= (SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
84*4882a593Smuzhiyun 	.sysc_fields	= &omap_hwmod_sysc_type1,
85*4882a593Smuzhiyun };
86*4882a593Smuzhiyun 
87*4882a593Smuzhiyun static struct omap_hwmod_class i2c_class = {
88*4882a593Smuzhiyun 	.name		= "i2c",
89*4882a593Smuzhiyun 	.sysc		= &i2c_sysc,
90*4882a593Smuzhiyun 	.reset		= &omap_i2c_reset,
91*4882a593Smuzhiyun };
92*4882a593Smuzhiyun 
93*4882a593Smuzhiyun /* I2C1 */
94*4882a593Smuzhiyun static struct omap_hwmod omap2420_i2c1_hwmod = {
95*4882a593Smuzhiyun 	.name		= "i2c1",
96*4882a593Smuzhiyun 	.main_clk	= "i2c1_fck",
97*4882a593Smuzhiyun 	.prcm		= {
98*4882a593Smuzhiyun 		.omap2 = {
99*4882a593Smuzhiyun 			.module_offs = CORE_MOD,
100*4882a593Smuzhiyun 			.idlest_reg_id = 1,
101*4882a593Smuzhiyun 			.idlest_idle_bit = OMAP2420_ST_I2C1_SHIFT,
102*4882a593Smuzhiyun 		},
103*4882a593Smuzhiyun 	},
104*4882a593Smuzhiyun 	.class		= &i2c_class,
105*4882a593Smuzhiyun 	/*
106*4882a593Smuzhiyun 	 * From mach-omap2/pm24xx.c: "Putting MPU into the WFI state
107*4882a593Smuzhiyun 	 * while a transfer is active seems to cause the I2C block to
108*4882a593Smuzhiyun 	 * timeout. Why? Good question."
109*4882a593Smuzhiyun 	 */
110*4882a593Smuzhiyun 	.flags		= (HWMOD_16BIT_REG | HWMOD_BLOCK_WFI),
111*4882a593Smuzhiyun };
112*4882a593Smuzhiyun 
113*4882a593Smuzhiyun /* I2C2 */
114*4882a593Smuzhiyun static struct omap_hwmod omap2420_i2c2_hwmod = {
115*4882a593Smuzhiyun 	.name		= "i2c2",
116*4882a593Smuzhiyun 	.main_clk	= "i2c2_fck",
117*4882a593Smuzhiyun 	.prcm		= {
118*4882a593Smuzhiyun 		.omap2 = {
119*4882a593Smuzhiyun 			.module_offs = CORE_MOD,
120*4882a593Smuzhiyun 			.idlest_reg_id = 1,
121*4882a593Smuzhiyun 			.idlest_idle_bit = OMAP2420_ST_I2C2_SHIFT,
122*4882a593Smuzhiyun 		},
123*4882a593Smuzhiyun 	},
124*4882a593Smuzhiyun 	.class		= &i2c_class,
125*4882a593Smuzhiyun 	.flags		= HWMOD_16BIT_REG,
126*4882a593Smuzhiyun };
127*4882a593Smuzhiyun 
128*4882a593Smuzhiyun /* mailbox */
129*4882a593Smuzhiyun static struct omap_hwmod omap2420_mailbox_hwmod = {
130*4882a593Smuzhiyun 	.name		= "mailbox",
131*4882a593Smuzhiyun 	.class		= &omap2xxx_mailbox_hwmod_class,
132*4882a593Smuzhiyun 	.main_clk	= "mailboxes_ick",
133*4882a593Smuzhiyun 	.prcm		= {
134*4882a593Smuzhiyun 		.omap2 = {
135*4882a593Smuzhiyun 			.module_offs = CORE_MOD,
136*4882a593Smuzhiyun 			.idlest_reg_id = 1,
137*4882a593Smuzhiyun 			.idlest_idle_bit = OMAP24XX_ST_MAILBOXES_SHIFT,
138*4882a593Smuzhiyun 		},
139*4882a593Smuzhiyun 	},
140*4882a593Smuzhiyun };
141*4882a593Smuzhiyun 
142*4882a593Smuzhiyun /*
143*4882a593Smuzhiyun  * 'mcbsp' class
144*4882a593Smuzhiyun  * multi channel buffered serial port controller
145*4882a593Smuzhiyun  */
146*4882a593Smuzhiyun 
147*4882a593Smuzhiyun static struct omap_hwmod_class omap2420_mcbsp_hwmod_class = {
148*4882a593Smuzhiyun 	.name = "mcbsp",
149*4882a593Smuzhiyun };
150*4882a593Smuzhiyun 
151*4882a593Smuzhiyun static struct omap_hwmod_opt_clk mcbsp_opt_clks[] = {
152*4882a593Smuzhiyun 	{ .role = "pad_fck", .clk = "mcbsp_clks" },
153*4882a593Smuzhiyun 	{ .role = "prcm_fck", .clk = "func_96m_ck" },
154*4882a593Smuzhiyun };
155*4882a593Smuzhiyun 
156*4882a593Smuzhiyun /* mcbsp1 */
157*4882a593Smuzhiyun static struct omap_hwmod omap2420_mcbsp1_hwmod = {
158*4882a593Smuzhiyun 	.name		= "mcbsp1",
159*4882a593Smuzhiyun 	.class		= &omap2420_mcbsp_hwmod_class,
160*4882a593Smuzhiyun 	.main_clk	= "mcbsp1_fck",
161*4882a593Smuzhiyun 	.prcm		= {
162*4882a593Smuzhiyun 		.omap2 = {
163*4882a593Smuzhiyun 			.module_offs = CORE_MOD,
164*4882a593Smuzhiyun 			.idlest_reg_id = 1,
165*4882a593Smuzhiyun 			.idlest_idle_bit = OMAP24XX_ST_MCBSP1_SHIFT,
166*4882a593Smuzhiyun 		},
167*4882a593Smuzhiyun 	},
168*4882a593Smuzhiyun 	.opt_clks	= mcbsp_opt_clks,
169*4882a593Smuzhiyun 	.opt_clks_cnt	= ARRAY_SIZE(mcbsp_opt_clks),
170*4882a593Smuzhiyun };
171*4882a593Smuzhiyun 
172*4882a593Smuzhiyun /* mcbsp2 */
173*4882a593Smuzhiyun static struct omap_hwmod omap2420_mcbsp2_hwmod = {
174*4882a593Smuzhiyun 	.name		= "mcbsp2",
175*4882a593Smuzhiyun 	.class		= &omap2420_mcbsp_hwmod_class,
176*4882a593Smuzhiyun 	.main_clk	= "mcbsp2_fck",
177*4882a593Smuzhiyun 	.prcm		= {
178*4882a593Smuzhiyun 		.omap2 = {
179*4882a593Smuzhiyun 			.module_offs = CORE_MOD,
180*4882a593Smuzhiyun 			.idlest_reg_id = 1,
181*4882a593Smuzhiyun 			.idlest_idle_bit = OMAP24XX_ST_MCBSP2_SHIFT,
182*4882a593Smuzhiyun 		},
183*4882a593Smuzhiyun 	},
184*4882a593Smuzhiyun 	.opt_clks	= mcbsp_opt_clks,
185*4882a593Smuzhiyun 	.opt_clks_cnt	= ARRAY_SIZE(mcbsp_opt_clks),
186*4882a593Smuzhiyun };
187*4882a593Smuzhiyun 
188*4882a593Smuzhiyun static struct omap_hwmod_class_sysconfig omap2420_msdi_sysc = {
189*4882a593Smuzhiyun 	.rev_offs	= 0x3c,
190*4882a593Smuzhiyun 	.sysc_offs	= 0x64,
191*4882a593Smuzhiyun 	.syss_offs	= 0x68,
192*4882a593Smuzhiyun 	.sysc_flags	= (SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
193*4882a593Smuzhiyun 	.sysc_fields	= &omap_hwmod_sysc_type1,
194*4882a593Smuzhiyun };
195*4882a593Smuzhiyun 
196*4882a593Smuzhiyun static struct omap_hwmod_class omap2420_msdi_hwmod_class = {
197*4882a593Smuzhiyun 	.name	= "msdi",
198*4882a593Smuzhiyun 	.sysc	= &omap2420_msdi_sysc,
199*4882a593Smuzhiyun 	.reset	= &omap_msdi_reset,
200*4882a593Smuzhiyun };
201*4882a593Smuzhiyun 
202*4882a593Smuzhiyun /* msdi1 */
203*4882a593Smuzhiyun static struct omap_hwmod omap2420_msdi1_hwmod = {
204*4882a593Smuzhiyun 	.name		= "msdi1",
205*4882a593Smuzhiyun 	.class		= &omap2420_msdi_hwmod_class,
206*4882a593Smuzhiyun 	.main_clk	= "mmc_fck",
207*4882a593Smuzhiyun 	.prcm		= {
208*4882a593Smuzhiyun 		.omap2 = {
209*4882a593Smuzhiyun 			.module_offs = CORE_MOD,
210*4882a593Smuzhiyun 			.idlest_reg_id = 1,
211*4882a593Smuzhiyun 			.idlest_idle_bit = OMAP2420_ST_MMC_SHIFT,
212*4882a593Smuzhiyun 		},
213*4882a593Smuzhiyun 	},
214*4882a593Smuzhiyun 	.flags		= HWMOD_16BIT_REG,
215*4882a593Smuzhiyun };
216*4882a593Smuzhiyun 
217*4882a593Smuzhiyun /* HDQ1W/1-wire */
218*4882a593Smuzhiyun static struct omap_hwmod omap2420_hdq1w_hwmod = {
219*4882a593Smuzhiyun 	.name		= "hdq1w",
220*4882a593Smuzhiyun 	.main_clk	= "hdq_fck",
221*4882a593Smuzhiyun 	.prcm		= {
222*4882a593Smuzhiyun 		.omap2 = {
223*4882a593Smuzhiyun 			.module_offs = CORE_MOD,
224*4882a593Smuzhiyun 			.idlest_reg_id = 1,
225*4882a593Smuzhiyun 			.idlest_idle_bit = OMAP24XX_ST_HDQ_SHIFT,
226*4882a593Smuzhiyun 		},
227*4882a593Smuzhiyun 	},
228*4882a593Smuzhiyun 	.class		= &omap2_hdq1w_class,
229*4882a593Smuzhiyun };
230*4882a593Smuzhiyun 
231*4882a593Smuzhiyun /*
232*4882a593Smuzhiyun  * interfaces
233*4882a593Smuzhiyun  */
234*4882a593Smuzhiyun 
235*4882a593Smuzhiyun /* L4 CORE -> I2C1 interface */
236*4882a593Smuzhiyun static struct omap_hwmod_ocp_if omap2420_l4_core__i2c1 = {
237*4882a593Smuzhiyun 	.master		= &omap2xxx_l4_core_hwmod,
238*4882a593Smuzhiyun 	.slave		= &omap2420_i2c1_hwmod,
239*4882a593Smuzhiyun 	.clk		= "i2c1_ick",
240*4882a593Smuzhiyun 	.user		= OCP_USER_MPU | OCP_USER_SDMA,
241*4882a593Smuzhiyun };
242*4882a593Smuzhiyun 
243*4882a593Smuzhiyun /* L4 CORE -> I2C2 interface */
244*4882a593Smuzhiyun static struct omap_hwmod_ocp_if omap2420_l4_core__i2c2 = {
245*4882a593Smuzhiyun 	.master		= &omap2xxx_l4_core_hwmod,
246*4882a593Smuzhiyun 	.slave		= &omap2420_i2c2_hwmod,
247*4882a593Smuzhiyun 	.clk		= "i2c2_ick",
248*4882a593Smuzhiyun 	.user		= OCP_USER_MPU | OCP_USER_SDMA,
249*4882a593Smuzhiyun };
250*4882a593Smuzhiyun 
251*4882a593Smuzhiyun /* IVA <- L3 interface */
252*4882a593Smuzhiyun static struct omap_hwmod_ocp_if omap2420_l3__iva = {
253*4882a593Smuzhiyun 	.master		= &omap2xxx_l3_main_hwmod,
254*4882a593Smuzhiyun 	.slave		= &omap2420_iva_hwmod,
255*4882a593Smuzhiyun 	.clk		= "core_l3_ck",
256*4882a593Smuzhiyun 	.user		= OCP_USER_MPU | OCP_USER_SDMA,
257*4882a593Smuzhiyun };
258*4882a593Smuzhiyun 
259*4882a593Smuzhiyun /* DSP <- L3 interface */
260*4882a593Smuzhiyun static struct omap_hwmod_ocp_if omap2420_l3__dsp = {
261*4882a593Smuzhiyun 	.master		= &omap2xxx_l3_main_hwmod,
262*4882a593Smuzhiyun 	.slave		= &omap2420_dsp_hwmod,
263*4882a593Smuzhiyun 	.clk		= "dsp_ick",
264*4882a593Smuzhiyun 	.user		= OCP_USER_MPU | OCP_USER_SDMA,
265*4882a593Smuzhiyun };
266*4882a593Smuzhiyun 
267*4882a593Smuzhiyun /* l4_wkup -> wd_timer2 */
268*4882a593Smuzhiyun static struct omap_hwmod_ocp_if omap2420_l4_wkup__wd_timer2 = {
269*4882a593Smuzhiyun 	.master		= &omap2xxx_l4_wkup_hwmod,
270*4882a593Smuzhiyun 	.slave		= &omap2xxx_wd_timer2_hwmod,
271*4882a593Smuzhiyun 	.clk		= "mpu_wdt_ick",
272*4882a593Smuzhiyun 	.user		= OCP_USER_MPU | OCP_USER_SDMA,
273*4882a593Smuzhiyun };
274*4882a593Smuzhiyun 
275*4882a593Smuzhiyun /* l4_wkup -> gpio1 */
276*4882a593Smuzhiyun static struct omap_hwmod_ocp_if omap2420_l4_wkup__gpio1 = {
277*4882a593Smuzhiyun 	.master		= &omap2xxx_l4_wkup_hwmod,
278*4882a593Smuzhiyun 	.slave		= &omap2xxx_gpio1_hwmod,
279*4882a593Smuzhiyun 	.clk		= "gpios_ick",
280*4882a593Smuzhiyun 	.user		= OCP_USER_MPU | OCP_USER_SDMA,
281*4882a593Smuzhiyun };
282*4882a593Smuzhiyun 
283*4882a593Smuzhiyun /* l4_wkup -> gpio2 */
284*4882a593Smuzhiyun static struct omap_hwmod_ocp_if omap2420_l4_wkup__gpio2 = {
285*4882a593Smuzhiyun 	.master		= &omap2xxx_l4_wkup_hwmod,
286*4882a593Smuzhiyun 	.slave		= &omap2xxx_gpio2_hwmod,
287*4882a593Smuzhiyun 	.clk		= "gpios_ick",
288*4882a593Smuzhiyun 	.user		= OCP_USER_MPU | OCP_USER_SDMA,
289*4882a593Smuzhiyun };
290*4882a593Smuzhiyun 
291*4882a593Smuzhiyun /* l4_wkup -> gpio3 */
292*4882a593Smuzhiyun static struct omap_hwmod_ocp_if omap2420_l4_wkup__gpio3 = {
293*4882a593Smuzhiyun 	.master		= &omap2xxx_l4_wkup_hwmod,
294*4882a593Smuzhiyun 	.slave		= &omap2xxx_gpio3_hwmod,
295*4882a593Smuzhiyun 	.clk		= "gpios_ick",
296*4882a593Smuzhiyun 	.user		= OCP_USER_MPU | OCP_USER_SDMA,
297*4882a593Smuzhiyun };
298*4882a593Smuzhiyun 
299*4882a593Smuzhiyun /* l4_wkup -> gpio4 */
300*4882a593Smuzhiyun static struct omap_hwmod_ocp_if omap2420_l4_wkup__gpio4 = {
301*4882a593Smuzhiyun 	.master		= &omap2xxx_l4_wkup_hwmod,
302*4882a593Smuzhiyun 	.slave		= &omap2xxx_gpio4_hwmod,
303*4882a593Smuzhiyun 	.clk		= "gpios_ick",
304*4882a593Smuzhiyun 	.user		= OCP_USER_MPU | OCP_USER_SDMA,
305*4882a593Smuzhiyun };
306*4882a593Smuzhiyun 
307*4882a593Smuzhiyun /* l4_core -> mailbox */
308*4882a593Smuzhiyun static struct omap_hwmod_ocp_if omap2420_l4_core__mailbox = {
309*4882a593Smuzhiyun 	.master		= &omap2xxx_l4_core_hwmod,
310*4882a593Smuzhiyun 	.slave		= &omap2420_mailbox_hwmod,
311*4882a593Smuzhiyun 	.user		= OCP_USER_MPU | OCP_USER_SDMA,
312*4882a593Smuzhiyun };
313*4882a593Smuzhiyun 
314*4882a593Smuzhiyun /* l4_core -> mcbsp1 */
315*4882a593Smuzhiyun static struct omap_hwmod_ocp_if omap2420_l4_core__mcbsp1 = {
316*4882a593Smuzhiyun 	.master		= &omap2xxx_l4_core_hwmod,
317*4882a593Smuzhiyun 	.slave		= &omap2420_mcbsp1_hwmod,
318*4882a593Smuzhiyun 	.clk		= "mcbsp1_ick",
319*4882a593Smuzhiyun 	.user		= OCP_USER_MPU | OCP_USER_SDMA,
320*4882a593Smuzhiyun };
321*4882a593Smuzhiyun 
322*4882a593Smuzhiyun /* l4_core -> mcbsp2 */
323*4882a593Smuzhiyun static struct omap_hwmod_ocp_if omap2420_l4_core__mcbsp2 = {
324*4882a593Smuzhiyun 	.master		= &omap2xxx_l4_core_hwmod,
325*4882a593Smuzhiyun 	.slave		= &omap2420_mcbsp2_hwmod,
326*4882a593Smuzhiyun 	.clk		= "mcbsp2_ick",
327*4882a593Smuzhiyun 	.user		= OCP_USER_MPU | OCP_USER_SDMA,
328*4882a593Smuzhiyun };
329*4882a593Smuzhiyun 
330*4882a593Smuzhiyun /* l4_core -> msdi1 */
331*4882a593Smuzhiyun static struct omap_hwmod_ocp_if omap2420_l4_core__msdi1 = {
332*4882a593Smuzhiyun 	.master		= &omap2xxx_l4_core_hwmod,
333*4882a593Smuzhiyun 	.slave		= &omap2420_msdi1_hwmod,
334*4882a593Smuzhiyun 	.clk		= "mmc_ick",
335*4882a593Smuzhiyun 	.user		= OCP_USER_MPU | OCP_USER_SDMA,
336*4882a593Smuzhiyun };
337*4882a593Smuzhiyun 
338*4882a593Smuzhiyun /* l4_core -> hdq1w interface */
339*4882a593Smuzhiyun static struct omap_hwmod_ocp_if omap2420_l4_core__hdq1w = {
340*4882a593Smuzhiyun 	.master		= &omap2xxx_l4_core_hwmod,
341*4882a593Smuzhiyun 	.slave		= &omap2420_hdq1w_hwmod,
342*4882a593Smuzhiyun 	.clk		= "hdq_ick",
343*4882a593Smuzhiyun 	.user		= OCP_USER_MPU | OCP_USER_SDMA,
344*4882a593Smuzhiyun 	.flags		= OMAP_FIREWALL_L4 | OCPIF_SWSUP_IDLE,
345*4882a593Smuzhiyun };
346*4882a593Smuzhiyun 
347*4882a593Smuzhiyun static struct omap_hwmod_ocp_if omap2420_l3__gpmc = {
348*4882a593Smuzhiyun 	.master		= &omap2xxx_l3_main_hwmod,
349*4882a593Smuzhiyun 	.slave		= &omap2xxx_gpmc_hwmod,
350*4882a593Smuzhiyun 	.clk		= "core_l3_ck",
351*4882a593Smuzhiyun 	.user		= OCP_USER_MPU | OCP_USER_SDMA,
352*4882a593Smuzhiyun };
353*4882a593Smuzhiyun 
354*4882a593Smuzhiyun static struct omap_hwmod_ocp_if *omap2420_hwmod_ocp_ifs[] __initdata = {
355*4882a593Smuzhiyun 	&omap2xxx_l3_main__l4_core,
356*4882a593Smuzhiyun 	&omap2xxx_mpu__l3_main,
357*4882a593Smuzhiyun 	&omap2xxx_dss__l3,
358*4882a593Smuzhiyun 	&omap2xxx_l4_core__mcspi1,
359*4882a593Smuzhiyun 	&omap2xxx_l4_core__mcspi2,
360*4882a593Smuzhiyun 	&omap2xxx_l4_core__l4_wkup,
361*4882a593Smuzhiyun 	&omap2_l4_core__uart1,
362*4882a593Smuzhiyun 	&omap2_l4_core__uart2,
363*4882a593Smuzhiyun 	&omap2_l4_core__uart3,
364*4882a593Smuzhiyun 	&omap2420_l4_core__i2c1,
365*4882a593Smuzhiyun 	&omap2420_l4_core__i2c2,
366*4882a593Smuzhiyun 	&omap2420_l3__iva,
367*4882a593Smuzhiyun 	&omap2420_l3__dsp,
368*4882a593Smuzhiyun 	&omap2xxx_l4_core__timer3,
369*4882a593Smuzhiyun 	&omap2xxx_l4_core__timer4,
370*4882a593Smuzhiyun 	&omap2xxx_l4_core__timer5,
371*4882a593Smuzhiyun 	&omap2xxx_l4_core__timer6,
372*4882a593Smuzhiyun 	&omap2xxx_l4_core__timer7,
373*4882a593Smuzhiyun 	&omap2xxx_l4_core__timer8,
374*4882a593Smuzhiyun 	&omap2xxx_l4_core__timer9,
375*4882a593Smuzhiyun 	&omap2xxx_l4_core__timer10,
376*4882a593Smuzhiyun 	&omap2xxx_l4_core__timer11,
377*4882a593Smuzhiyun 	&omap2xxx_l4_core__timer12,
378*4882a593Smuzhiyun 	&omap2420_l4_wkup__wd_timer2,
379*4882a593Smuzhiyun 	&omap2xxx_l4_core__dss,
380*4882a593Smuzhiyun 	&omap2xxx_l4_core__dss_dispc,
381*4882a593Smuzhiyun 	&omap2xxx_l4_core__dss_rfbi,
382*4882a593Smuzhiyun 	&omap2xxx_l4_core__dss_venc,
383*4882a593Smuzhiyun 	&omap2420_l4_wkup__gpio1,
384*4882a593Smuzhiyun 	&omap2420_l4_wkup__gpio2,
385*4882a593Smuzhiyun 	&omap2420_l4_wkup__gpio3,
386*4882a593Smuzhiyun 	&omap2420_l4_wkup__gpio4,
387*4882a593Smuzhiyun 	&omap2420_l4_core__mailbox,
388*4882a593Smuzhiyun 	&omap2420_l4_core__mcbsp1,
389*4882a593Smuzhiyun 	&omap2420_l4_core__mcbsp2,
390*4882a593Smuzhiyun 	&omap2420_l4_core__msdi1,
391*4882a593Smuzhiyun 	&omap2xxx_l4_core__rng,
392*4882a593Smuzhiyun 	&omap2xxx_l4_core__sham,
393*4882a593Smuzhiyun 	&omap2xxx_l4_core__aes,
394*4882a593Smuzhiyun 	&omap2420_l4_core__hdq1w,
395*4882a593Smuzhiyun 	&omap2420_l3__gpmc,
396*4882a593Smuzhiyun 	NULL,
397*4882a593Smuzhiyun };
398*4882a593Smuzhiyun 
omap2420_hwmod_init(void)399*4882a593Smuzhiyun int __init omap2420_hwmod_init(void)
400*4882a593Smuzhiyun {
401*4882a593Smuzhiyun 	omap_hwmod_init();
402*4882a593Smuzhiyun 	return omap_hwmod_register_links(omap2420_hwmod_ocp_ifs);
403*4882a593Smuzhiyun }
404