blob: c51ef84ff64dc5b573672441ec9ecebc9b120fe4 [file] [log] [blame]
Thomas Gleixnerd2912cb2019-06-04 10:11:33 +02001// SPDX-License-Identifier: GPL-2.0-only
Paul Walmsley02bfc0302009-09-03 20:14:05 +03002/*
Paul Walmsley73591542010-02-22 22:09:32 -07003 * omap_hwmod_2430_data.c - hardware modules present on the OMAP2430 chips
Paul Walmsley02bfc0302009-09-03 20:14:05 +03004 *
Paul Walmsley78183f32011-07-09 19:14:05 -06005 * Copyright (C) 2009-2011 Nokia Corporation
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06006 * Copyright (C) 2012 Texas Instruments, Inc.
Paul Walmsley02bfc0302009-09-03 20:14:05 +03007 * Paul Walmsley
8 *
Paul Walmsley02bfc0302009-09-03 20:14:05 +03009 * XXX handle crossbar/shared link difference for L3?
Paul Walmsley73591542010-02-22 22:09:32 -070010 * XXX these should be marked initdata for multi-OMAP kernels
Paul Walmsley02bfc0302009-09-03 20:14:05 +030011 */
Tony Lindgren3a8761c2012-10-08 09:11:22 -070012
Wolfram Sang79fc5402018-04-19 22:00:10 +020013#include <linux/platform_data/i2c-omap.h>
Andreas Fenkart551434382014-11-08 15:33:09 +010014#include <linux/platform_data/hsmmc-omap.h>
Tony Lindgren45c3eb72012-11-30 08:41:50 -080015#include <linux/omap-dma.h>
Tony Lindgren2a296c82012-10-02 17:41:35 -070016
17#include "omap_hwmod.h"
Tony Lindgren1e0f51a2012-09-20 11:42:02 -070018#include "l3_2xxx.h"
Paul Walmsley02bfc0302009-09-03 20:14:05 +030019
Tony Lindgrendbc04162012-08-31 10:59:07 -070020#include "soc.h"
Paul Walmsley43b40992010-02-22 22:09:34 -070021#include "omap_hwmod_common_data.h"
Paul Walmsley02bfc0302009-09-03 20:14:05 +030022#include "prm-regbits-24xx.h"
Varadarajan, Charulatha165e2162010-09-23 20:02:40 +053023#include "cm-regbits-24xx.h"
Tony Lindgren3a8761c2012-10-08 09:11:22 -070024#include "i2c.h"
Paul Walmsleyff2516f2010-12-21 15:39:15 -070025#include "wd_timer.h"
Paul Walmsley02bfc0302009-09-03 20:14:05 +030026
Paul Walmsley73591542010-02-22 22:09:32 -070027/*
28 * OMAP2430 hardware module integration data
29 *
Paul Walmsley844a3b62012-04-19 04:04:33 -060030 * All of the data in this section should be autogeneratable from the
Paul Walmsley73591542010-02-22 22:09:32 -070031 * TI hardware database or other technical documentation. Data that
32 * is driver-specific or driver-kernel integration-specific belongs
33 * elsewhere.
34 */
35
Paul Walmsley844a3b62012-04-19 04:04:33 -060036/*
37 * IP blocks
38 */
Senthilvadivu Guruswamyde56dbb2011-02-22 09:51:15 +020039
Paul Walmsley844a3b62012-04-19 04:04:33 -060040/* IVA2 (IVA2) */
Paul Walmsley3af35fb2012-04-19 04:04:38 -060041static struct omap_hwmod_rst_info omap2430_iva_resets[] = {
42 { .name = "logic", .rst_shift = 0 },
43 { .name = "mmu", .rst_shift = 1 },
44};
45
Paul Walmsley08072ac2010-07-26 16:34:33 -060046static struct omap_hwmod omap2430_iva_hwmod = {
47 .name = "iva",
48 .class = &iva_hwmod_class,
Paul Walmsley3af35fb2012-04-19 04:04:38 -060049 .clkdm_name = "dsp_clkdm",
50 .rst_lines = omap2430_iva_resets,
51 .rst_lines_cnt = ARRAY_SIZE(omap2430_iva_resets),
52 .main_clk = "dsp_fck",
Paul Walmsley08072ac2010-07-26 16:34:33 -060053};
54
Paul Walmsley20042902010-09-30 02:40:12 +053055/* I2C common */
56static struct omap_hwmod_class_sysconfig i2c_sysc = {
57 .rev_offs = 0x00,
58 .sysc_offs = 0x20,
59 .syss_offs = 0x10,
Avinash.H.Md73d65f2011-03-03 14:22:46 -070060 .sysc_flags = (SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE |
61 SYSS_HAS_RESET_STATUS),
Paul Walmsley20042902010-09-30 02:40:12 +053062 .sysc_fields = &omap_hwmod_sysc_type1,
63};
64
65static struct omap_hwmod_class i2c_class = {
66 .name = "i2c",
67 .sysc = &i2c_sysc,
Avinash.H.M6d3c55f2011-07-10 05:27:16 -060068 .reset = &omap_i2c_reset,
Paul Walmsley20042902010-09-30 02:40:12 +053069};
70
Benoit Cousson50ebb772010-12-21 21:08:34 -070071/* I2C1 */
Paul Walmsley20042902010-09-30 02:40:12 +053072static struct omap_hwmod omap2430_i2c1_hwmod = {
73 .name = "i2c1",
Andy Green3e600522011-07-10 05:27:14 -060074 .flags = HWMOD_16BIT_REG,
Paul Walmsley20042902010-09-30 02:40:12 +053075 .main_clk = "i2chs1_fck",
76 .prcm = {
77 .omap2 = {
78 /*
79 * NOTE: The CM_FCLKEN* and CM_ICLKEN* for
80 * I2CHS IP's do not follow the usual pattern.
81 * prcm_reg_id alone cannot be used to program
82 * the iclk and fclk. Needs to be handled using
Lucas De Marchi25985ed2011-03-30 22:57:33 -030083 * additional flags when clk handling is moved
Paul Walmsley20042902010-09-30 02:40:12 +053084 * to hwmod framework.
85 */
86 .module_offs = CORE_MOD,
Paul Walmsley20042902010-09-30 02:40:12 +053087 .idlest_reg_id = 1,
88 .idlest_idle_bit = OMAP2430_ST_I2CHS1_SHIFT,
89 },
90 },
Paul Walmsley20042902010-09-30 02:40:12 +053091 .class = &i2c_class,
Paul Walmsley20042902010-09-30 02:40:12 +053092};
93
94/* I2C2 */
Paul Walmsley20042902010-09-30 02:40:12 +053095static struct omap_hwmod omap2430_i2c2_hwmod = {
96 .name = "i2c2",
Andy Green3e600522011-07-10 05:27:14 -060097 .flags = HWMOD_16BIT_REG,
Paul Walmsley20042902010-09-30 02:40:12 +053098 .main_clk = "i2chs2_fck",
99 .prcm = {
100 .omap2 = {
101 .module_offs = CORE_MOD,
Paul Walmsley20042902010-09-30 02:40:12 +0530102 .idlest_reg_id = 1,
103 .idlest_idle_bit = OMAP2430_ST_I2CHS2_SHIFT,
104 },
105 },
Paul Walmsley20042902010-09-30 02:40:12 +0530106 .class = &i2c_class,
Paul Walmsley20042902010-09-30 02:40:12 +0530107};
108
Varadarajan, Charulathaaeac0e42010-12-07 16:26:56 -0800109/* gpio5 */
Varadarajan, Charulathaaeac0e42010-12-07 16:26:56 -0800110static struct omap_hwmod omap2430_gpio5_hwmod = {
111 .name = "gpio5",
Avinash.H.Mf95440c2011-04-05 21:10:15 +0530112 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
Varadarajan, Charulathaaeac0e42010-12-07 16:26:56 -0800113 .main_clk = "gpio5_fck",
114 .prcm = {
115 .omap2 = {
Varadarajan, Charulathaaeac0e42010-12-07 16:26:56 -0800116 .module_offs = CORE_MOD,
117 .idlest_reg_id = 2,
118 .idlest_idle_bit = OMAP2430_ST_GPIO5_SHIFT,
119 },
120 },
Paul Walmsley273b9462011-07-09 19:14:08 -0600121 .class = &omap2xxx_gpio_hwmod_class,
Varadarajan, Charulathaaeac0e42010-12-07 16:26:56 -0800122};
123
G, Manjunath Kondaiah82cbd1a2010-12-20 18:27:18 -0800124/* dma attributes */
125static struct omap_dma_dev_attr dma_dev_attr = {
126 .dev_caps = RESERVE_CHANNEL | DMA_LINKED_LCH | GLOBAL_PRIORITY |
127 IS_CSSA_32 | IS_CDSA_32 | IS_RW_PRIORITY,
128 .lch_count = 32,
129};
130
G, Manjunath Kondaiah82cbd1a2010-12-20 18:27:18 -0800131static struct omap_hwmod omap2430_dma_system_hwmod = {
132 .name = "dma",
Paul Walmsley273b9462011-07-09 19:14:08 -0600133 .class = &omap2xxx_dma_hwmod_class,
G, Manjunath Kondaiah82cbd1a2010-12-20 18:27:18 -0800134 .main_clk = "core_l3_ck",
G, Manjunath Kondaiah82cbd1a2010-12-20 18:27:18 -0800135 .dev_attr = &dma_dev_attr,
G, Manjunath Kondaiah82cbd1a2010-12-20 18:27:18 -0800136 .flags = HWMOD_NO_IDLEST,
137};
138
Omar Ramirez Lunafca1ab52011-02-24 12:51:32 -0800139/* mailbox */
Omar Ramirez Lunafca1ab52011-02-24 12:51:32 -0800140static struct omap_hwmod omap2430_mailbox_hwmod = {
141 .name = "mailbox",
Paul Walmsley273b9462011-07-09 19:14:08 -0600142 .class = &omap2xxx_mailbox_hwmod_class,
Omar Ramirez Lunafca1ab52011-02-24 12:51:32 -0800143 .main_clk = "mailboxes_ick",
144 .prcm = {
145 .omap2 = {
Omar Ramirez Lunafca1ab52011-02-24 12:51:32 -0800146 .module_offs = CORE_MOD,
147 .idlest_reg_id = 1,
148 .idlest_idle_bit = OMAP24XX_ST_MAILBOXES_SHIFT,
149 },
150 },
Omar Ramirez Lunafca1ab52011-02-24 12:51:32 -0800151};
152
Charulatha V7f904c72011-02-17 09:53:10 -0800153/* mcspi3 */
Charulatha V7f904c72011-02-17 09:53:10 -0800154static struct omap_hwmod omap2430_mcspi3_hwmod = {
Paul Walmsleybec93812012-04-19 04:03:50 -0600155 .name = "mcspi3",
Charulatha V7f904c72011-02-17 09:53:10 -0800156 .main_clk = "mcspi3_fck",
157 .prcm = {
158 .omap2 = {
159 .module_offs = CORE_MOD,
Charulatha V7f904c72011-02-17 09:53:10 -0800160 .idlest_reg_id = 2,
161 .idlest_idle_bit = OMAP2430_ST_MCSPI3_SHIFT,
162 },
163 },
Paul Walmsley273b9462011-07-09 19:14:08 -0600164 .class = &omap2xxx_mcspi_class,
Charulatha V7f904c72011-02-17 09:53:10 -0800165};
166
Paul Walmsley844a3b62012-04-19 04:04:33 -0600167/* usbhsotg */
Hema HK44d02ac2011-02-17 12:07:17 +0530168static struct omap_hwmod_class_sysconfig omap2430_usbhsotg_sysc = {
169 .rev_offs = 0x0400,
170 .sysc_offs = 0x0404,
171 .syss_offs = 0x0408,
172 .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE|
173 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
174 SYSC_HAS_AUTOIDLE),
175 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
176 MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
177 .sysc_fields = &omap_hwmod_sysc_type1,
178};
179
180static struct omap_hwmod_class usbotg_class = {
181 .name = "usbotg",
182 .sysc = &omap2430_usbhsotg_sysc,
183};
184
185/* usb_otg_hs */
Hema HK44d02ac2011-02-17 12:07:17 +0530186static struct omap_hwmod omap2430_usbhsotg_hwmod = {
187 .name = "usb_otg_hs",
Hema HK44d02ac2011-02-17 12:07:17 +0530188 .main_clk = "usbhs_ick",
189 .prcm = {
190 .omap2 = {
Hema HK44d02ac2011-02-17 12:07:17 +0530191 .module_offs = CORE_MOD,
192 .idlest_reg_id = 1,
193 .idlest_idle_bit = OMAP2430_ST_USBHS_SHIFT,
194 },
195 },
Hema HK44d02ac2011-02-17 12:07:17 +0530196 .class = &usbotg_class,
197 /*
198 * Erratum ID: i479 idle_req / idle_ack mechanism potentially
199 * broken when autoidle is enabled
200 * workaround is to disable the autoidle bit at module level.
201 */
202 .flags = HWMOD_NO_OCP_AUTOIDLE | HWMOD_SWSUP_SIDLE
203 | HWMOD_SWSUP_MSTANDBY,
Hema HK44d02ac2011-02-17 12:07:17 +0530204};
205
Charulatha V37801b32011-02-24 12:51:46 -0800206/*
207 * 'mcbsp' class
208 * multi channel buffered serial port controller
209 */
Tony Lindgren04aa67d2011-02-22 10:54:12 -0800210
Charulatha V37801b32011-02-24 12:51:46 -0800211static struct omap_hwmod_class_sysconfig omap2430_mcbsp_sysc = {
212 .rev_offs = 0x007C,
213 .sysc_offs = 0x008C,
214 .sysc_flags = (SYSC_HAS_SOFTRESET),
215 .sysc_fields = &omap_hwmod_sysc_type1,
216};
217
218static struct omap_hwmod_class omap2430_mcbsp_hwmod_class = {
219 .name = "mcbsp",
220 .sysc = &omap2430_mcbsp_sysc,
Charulatha V37801b32011-02-24 12:51:46 -0800221};
222
Peter Ujfalusidb382a82012-06-18 16:18:43 -0600223static struct omap_hwmod_opt_clk mcbsp_opt_clks[] = {
224 { .role = "pad_fck", .clk = "mcbsp_clks" },
225 { .role = "prcm_fck", .clk = "func_96m_ck" },
226};
227
Charulatha V37801b32011-02-24 12:51:46 -0800228/* mcbsp1 */
Charulatha V37801b32011-02-24 12:51:46 -0800229static struct omap_hwmod omap2430_mcbsp1_hwmod = {
230 .name = "mcbsp1",
231 .class = &omap2430_mcbsp_hwmod_class,
Charulatha V37801b32011-02-24 12:51:46 -0800232 .main_clk = "mcbsp1_fck",
233 .prcm = {
234 .omap2 = {
Charulatha V37801b32011-02-24 12:51:46 -0800235 .module_offs = CORE_MOD,
236 .idlest_reg_id = 1,
237 .idlest_idle_bit = OMAP24XX_ST_MCBSP1_SHIFT,
238 },
239 },
Peter Ujfalusidb382a82012-06-18 16:18:43 -0600240 .opt_clks = mcbsp_opt_clks,
241 .opt_clks_cnt = ARRAY_SIZE(mcbsp_opt_clks),
Charulatha V37801b32011-02-24 12:51:46 -0800242};
243
244/* mcbsp2 */
Charulatha V37801b32011-02-24 12:51:46 -0800245static struct omap_hwmod omap2430_mcbsp2_hwmod = {
246 .name = "mcbsp2",
247 .class = &omap2430_mcbsp_hwmod_class,
Charulatha V37801b32011-02-24 12:51:46 -0800248 .main_clk = "mcbsp2_fck",
249 .prcm = {
250 .omap2 = {
Charulatha V37801b32011-02-24 12:51:46 -0800251 .module_offs = CORE_MOD,
252 .idlest_reg_id = 1,
253 .idlest_idle_bit = OMAP24XX_ST_MCBSP2_SHIFT,
254 },
255 },
Peter Ujfalusidb382a82012-06-18 16:18:43 -0600256 .opt_clks = mcbsp_opt_clks,
257 .opt_clks_cnt = ARRAY_SIZE(mcbsp_opt_clks),
Charulatha V37801b32011-02-24 12:51:46 -0800258};
259
260/* mcbsp3 */
Charulatha V37801b32011-02-24 12:51:46 -0800261static struct omap_hwmod omap2430_mcbsp3_hwmod = {
262 .name = "mcbsp3",
263 .class = &omap2430_mcbsp_hwmod_class,
Charulatha V37801b32011-02-24 12:51:46 -0800264 .main_clk = "mcbsp3_fck",
265 .prcm = {
266 .omap2 = {
Charulatha V37801b32011-02-24 12:51:46 -0800267 .module_offs = CORE_MOD,
268 .idlest_reg_id = 2,
269 .idlest_idle_bit = OMAP2430_ST_MCBSP3_SHIFT,
270 },
271 },
Peter Ujfalusidb382a82012-06-18 16:18:43 -0600272 .opt_clks = mcbsp_opt_clks,
273 .opt_clks_cnt = ARRAY_SIZE(mcbsp_opt_clks),
Charulatha V37801b32011-02-24 12:51:46 -0800274};
275
276/* mcbsp4 */
Charulatha V37801b32011-02-24 12:51:46 -0800277static struct omap_hwmod omap2430_mcbsp4_hwmod = {
278 .name = "mcbsp4",
279 .class = &omap2430_mcbsp_hwmod_class,
Charulatha V37801b32011-02-24 12:51:46 -0800280 .main_clk = "mcbsp4_fck",
281 .prcm = {
282 .omap2 = {
Charulatha V37801b32011-02-24 12:51:46 -0800283 .module_offs = CORE_MOD,
284 .idlest_reg_id = 2,
285 .idlest_idle_bit = OMAP2430_ST_MCBSP4_SHIFT,
286 },
287 },
Peter Ujfalusidb382a82012-06-18 16:18:43 -0600288 .opt_clks = mcbsp_opt_clks,
289 .opt_clks_cnt = ARRAY_SIZE(mcbsp_opt_clks),
Charulatha V37801b32011-02-24 12:51:46 -0800290};
291
292/* mcbsp5 */
Charulatha V37801b32011-02-24 12:51:46 -0800293static struct omap_hwmod omap2430_mcbsp5_hwmod = {
294 .name = "mcbsp5",
295 .class = &omap2430_mcbsp_hwmod_class,
Charulatha V37801b32011-02-24 12:51:46 -0800296 .main_clk = "mcbsp5_fck",
297 .prcm = {
298 .omap2 = {
Charulatha V37801b32011-02-24 12:51:46 -0800299 .module_offs = CORE_MOD,
300 .idlest_reg_id = 2,
301 .idlest_idle_bit = OMAP2430_ST_MCBSP5_SHIFT,
302 },
303 },
Peter Ujfalusidb382a82012-06-18 16:18:43 -0600304 .opt_clks = mcbsp_opt_clks,
305 .opt_clks_cnt = ARRAY_SIZE(mcbsp_opt_clks),
Charulatha V37801b32011-02-24 12:51:46 -0800306};
Tony Lindgren04aa67d2011-02-22 10:54:12 -0800307
Paul Walmsleybce06f32011-03-01 13:12:55 -0800308/* MMC/SD/SDIO common */
Paul Walmsleybce06f32011-03-01 13:12:55 -0800309static struct omap_hwmod_class_sysconfig omap2430_mmc_sysc = {
310 .rev_offs = 0x1fc,
311 .sysc_offs = 0x10,
312 .syss_offs = 0x14,
313 .sysc_flags = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
314 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
315 SYSC_HAS_AUTOIDLE | SYSS_HAS_RESET_STATUS),
316 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
317 .sysc_fields = &omap_hwmod_sysc_type1,
318};
319
320static struct omap_hwmod_class omap2430_mmc_class = {
321 .name = "mmc",
322 .sysc = &omap2430_mmc_sysc,
323};
324
325/* MMC/SD/SDIO1 */
Paul Walmsleybce06f32011-03-01 13:12:55 -0800326static struct omap_hwmod_opt_clk omap2430_mmc1_opt_clks[] = {
327 { .role = "dbck", .clk = "mmchsdb1_fck" },
328};
329
Andreas Fenkart551434382014-11-08 15:33:09 +0100330static struct omap_hsmmc_dev_attr mmc1_dev_attr = {
Kishore Kadiyala6ab89462011-03-01 13:12:56 -0800331 .flags = OMAP_HSMMC_SUPPORTS_DUAL_VOLT,
332};
333
Paul Walmsleybce06f32011-03-01 13:12:55 -0800334static struct omap_hwmod omap2430_mmc1_hwmod = {
335 .name = "mmc1",
336 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
Paul Walmsleybce06f32011-03-01 13:12:55 -0800337 .opt_clks = omap2430_mmc1_opt_clks,
338 .opt_clks_cnt = ARRAY_SIZE(omap2430_mmc1_opt_clks),
339 .main_clk = "mmchs1_fck",
340 .prcm = {
341 .omap2 = {
342 .module_offs = CORE_MOD,
Paul Walmsleybce06f32011-03-01 13:12:55 -0800343 .idlest_reg_id = 2,
344 .idlest_idle_bit = OMAP2430_ST_MMCHS1_SHIFT,
345 },
346 },
Kishore Kadiyala6ab89462011-03-01 13:12:56 -0800347 .dev_attr = &mmc1_dev_attr,
Paul Walmsleybce06f32011-03-01 13:12:55 -0800348 .class = &omap2430_mmc_class,
Paul Walmsleybce06f32011-03-01 13:12:55 -0800349};
350
351/* MMC/SD/SDIO2 */
Paul Walmsleybce06f32011-03-01 13:12:55 -0800352static struct omap_hwmod_opt_clk omap2430_mmc2_opt_clks[] = {
353 { .role = "dbck", .clk = "mmchsdb2_fck" },
354};
355
Paul Walmsleybce06f32011-03-01 13:12:55 -0800356static struct omap_hwmod omap2430_mmc2_hwmod = {
357 .name = "mmc2",
358 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
Paul Walmsleybce06f32011-03-01 13:12:55 -0800359 .opt_clks = omap2430_mmc2_opt_clks,
360 .opt_clks_cnt = ARRAY_SIZE(omap2430_mmc2_opt_clks),
361 .main_clk = "mmchs2_fck",
362 .prcm = {
363 .omap2 = {
364 .module_offs = CORE_MOD,
Paul Walmsleybce06f32011-03-01 13:12:55 -0800365 .idlest_reg_id = 2,
366 .idlest_idle_bit = OMAP2430_ST_MMCHS2_SHIFT,
367 },
368 },
Paul Walmsleybce06f32011-03-01 13:12:55 -0800369 .class = &omap2430_mmc_class,
Paul Walmsleybce06f32011-03-01 13:12:55 -0800370};
Kevin Hilman046465b2010-09-27 20:19:30 +0530371
Paul Walmsleyf32bd772012-05-08 11:34:28 -0600372/* HDQ1W/1-wire */
373static struct omap_hwmod omap2430_hdq1w_hwmod = {
374 .name = "hdq1w",
Paul Walmsleyf32bd772012-05-08 11:34:28 -0600375 .main_clk = "hdq_fck",
376 .prcm = {
377 .omap2 = {
378 .module_offs = CORE_MOD,
Paul Walmsleyf32bd772012-05-08 11:34:28 -0600379 .idlest_reg_id = 1,
380 .idlest_idle_bit = OMAP24XX_ST_HDQ_SHIFT,
381 },
382 },
383 .class = &omap2_hdq1w_class,
384};
385
Paul Walmsley844a3b62012-04-19 04:04:33 -0600386/*
387 * interfaces
388 */
389
390/* L3 -> L4_CORE interface */
Paul Walmsley844a3b62012-04-19 04:04:33 -0600391/* l3_core -> usbhsotg interface */
392static struct omap_hwmod_ocp_if omap2430_usbhsotg__l3 = {
393 .master = &omap2430_usbhsotg_hwmod,
Paul Walmsleycb484272012-04-19 04:04:33 -0600394 .slave = &omap2xxx_l3_main_hwmod,
Paul Walmsley844a3b62012-04-19 04:04:33 -0600395 .clk = "core_l3_ck",
396 .user = OCP_USER_MPU,
397};
398
399/* L4 CORE -> I2C1 interface */
400static struct omap_hwmod_ocp_if omap2430_l4_core__i2c1 = {
Paul Walmsleycb484272012-04-19 04:04:33 -0600401 .master = &omap2xxx_l4_core_hwmod,
Paul Walmsley844a3b62012-04-19 04:04:33 -0600402 .slave = &omap2430_i2c1_hwmod,
403 .clk = "i2c1_ick",
Paul Walmsley844a3b62012-04-19 04:04:33 -0600404 .user = OCP_USER_MPU | OCP_USER_SDMA,
405};
406
407/* L4 CORE -> I2C2 interface */
408static struct omap_hwmod_ocp_if omap2430_l4_core__i2c2 = {
Paul Walmsleycb484272012-04-19 04:04:33 -0600409 .master = &omap2xxx_l4_core_hwmod,
Paul Walmsley844a3b62012-04-19 04:04:33 -0600410 .slave = &omap2430_i2c2_hwmod,
411 .clk = "i2c2_ick",
Paul Walmsley844a3b62012-04-19 04:04:33 -0600412 .user = OCP_USER_MPU | OCP_USER_SDMA,
413};
414
Paul Walmsley844a3b62012-04-19 04:04:33 -0600415/* l4_core ->usbhsotg interface */
416static struct omap_hwmod_ocp_if omap2430_l4_core__usbhsotg = {
Paul Walmsleycb484272012-04-19 04:04:33 -0600417 .master = &omap2xxx_l4_core_hwmod,
Paul Walmsley844a3b62012-04-19 04:04:33 -0600418 .slave = &omap2430_usbhsotg_hwmod,
419 .clk = "usb_l4_ick",
Paul Walmsley844a3b62012-04-19 04:04:33 -0600420 .user = OCP_USER_MPU,
421};
422
423/* L4 CORE -> MMC1 interface */
424static struct omap_hwmod_ocp_if omap2430_l4_core__mmc1 = {
Paul Walmsleycb484272012-04-19 04:04:33 -0600425 .master = &omap2xxx_l4_core_hwmod,
Paul Walmsley844a3b62012-04-19 04:04:33 -0600426 .slave = &omap2430_mmc1_hwmod,
427 .clk = "mmchs1_ick",
Paul Walmsley844a3b62012-04-19 04:04:33 -0600428 .user = OCP_USER_MPU | OCP_USER_SDMA,
429};
430
431/* L4 CORE -> MMC2 interface */
432static struct omap_hwmod_ocp_if omap2430_l4_core__mmc2 = {
Paul Walmsleycb484272012-04-19 04:04:33 -0600433 .master = &omap2xxx_l4_core_hwmod,
Paul Walmsley844a3b62012-04-19 04:04:33 -0600434 .slave = &omap2430_mmc2_hwmod,
435 .clk = "mmchs2_ick",
Paul Walmsley844a3b62012-04-19 04:04:33 -0600436 .user = OCP_USER_MPU | OCP_USER_SDMA,
437};
438
Paul Walmsley844a3b62012-04-19 04:04:33 -0600439/* l4 core -> mcspi3 interface */
440static struct omap_hwmod_ocp_if omap2430_l4_core__mcspi3 = {
Paul Walmsleycb484272012-04-19 04:04:33 -0600441 .master = &omap2xxx_l4_core_hwmod,
Paul Walmsley844a3b62012-04-19 04:04:33 -0600442 .slave = &omap2430_mcspi3_hwmod,
443 .clk = "mcspi3_ick",
Paul Walmsley844a3b62012-04-19 04:04:33 -0600444 .user = OCP_USER_MPU | OCP_USER_SDMA,
445};
446
447/* IVA2 <- L3 interface */
448static struct omap_hwmod_ocp_if omap2430_l3__iva = {
Paul Walmsleycb484272012-04-19 04:04:33 -0600449 .master = &omap2xxx_l3_main_hwmod,
Paul Walmsley844a3b62012-04-19 04:04:33 -0600450 .slave = &omap2430_iva_hwmod,
Paul Walmsley3af35fb2012-04-19 04:04:38 -0600451 .clk = "core_l3_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -0600452 .user = OCP_USER_MPU | OCP_USER_SDMA,
453};
454
Paul Walmsley844a3b62012-04-19 04:04:33 -0600455/* l4_wkup -> timer1 */
456static struct omap_hwmod_ocp_if omap2430_l4_wkup__timer1 = {
Paul Walmsleycb484272012-04-19 04:04:33 -0600457 .master = &omap2xxx_l4_wkup_hwmod,
458 .slave = &omap2xxx_timer1_hwmod,
Paul Walmsley844a3b62012-04-19 04:04:33 -0600459 .clk = "gpt1_ick",
Paul Walmsley844a3b62012-04-19 04:04:33 -0600460 .user = OCP_USER_MPU | OCP_USER_SDMA,
461};
462
Paul Walmsley844a3b62012-04-19 04:04:33 -0600463/* l4_wkup -> wd_timer2 */
Paul Walmsley844a3b62012-04-19 04:04:33 -0600464static struct omap_hwmod_ocp_if omap2430_l4_wkup__wd_timer2 = {
Paul Walmsleycb484272012-04-19 04:04:33 -0600465 .master = &omap2xxx_l4_wkup_hwmod,
466 .slave = &omap2xxx_wd_timer2_hwmod,
Paul Walmsley844a3b62012-04-19 04:04:33 -0600467 .clk = "mpu_wdt_ick",
Paul Walmsley844a3b62012-04-19 04:04:33 -0600468 .user = OCP_USER_MPU | OCP_USER_SDMA,
469};
470
Paul Walmsley844a3b62012-04-19 04:04:33 -0600471/* l4_wkup -> gpio1 */
Paul Walmsley844a3b62012-04-19 04:04:33 -0600472static struct omap_hwmod_ocp_if omap2430_l4_wkup__gpio1 = {
Paul Walmsleycb484272012-04-19 04:04:33 -0600473 .master = &omap2xxx_l4_wkup_hwmod,
474 .slave = &omap2xxx_gpio1_hwmod,
Paul Walmsley844a3b62012-04-19 04:04:33 -0600475 .clk = "gpios_ick",
Paul Walmsley844a3b62012-04-19 04:04:33 -0600476 .user = OCP_USER_MPU | OCP_USER_SDMA,
477};
478
479/* l4_wkup -> gpio2 */
Paul Walmsley844a3b62012-04-19 04:04:33 -0600480static struct omap_hwmod_ocp_if omap2430_l4_wkup__gpio2 = {
Paul Walmsleycb484272012-04-19 04:04:33 -0600481 .master = &omap2xxx_l4_wkup_hwmod,
482 .slave = &omap2xxx_gpio2_hwmod,
Paul Walmsley844a3b62012-04-19 04:04:33 -0600483 .clk = "gpios_ick",
Paul Walmsley844a3b62012-04-19 04:04:33 -0600484 .user = OCP_USER_MPU | OCP_USER_SDMA,
485};
486
487/* l4_wkup -> gpio3 */
Paul Walmsley844a3b62012-04-19 04:04:33 -0600488static struct omap_hwmod_ocp_if omap2430_l4_wkup__gpio3 = {
Paul Walmsleycb484272012-04-19 04:04:33 -0600489 .master = &omap2xxx_l4_wkup_hwmod,
490 .slave = &omap2xxx_gpio3_hwmod,
Paul Walmsley844a3b62012-04-19 04:04:33 -0600491 .clk = "gpios_ick",
Paul Walmsley844a3b62012-04-19 04:04:33 -0600492 .user = OCP_USER_MPU | OCP_USER_SDMA,
493};
494
495/* l4_wkup -> gpio4 */
Paul Walmsley844a3b62012-04-19 04:04:33 -0600496static struct omap_hwmod_ocp_if omap2430_l4_wkup__gpio4 = {
Paul Walmsleycb484272012-04-19 04:04:33 -0600497 .master = &omap2xxx_l4_wkup_hwmod,
498 .slave = &omap2xxx_gpio4_hwmod,
Paul Walmsley844a3b62012-04-19 04:04:33 -0600499 .clk = "gpios_ick",
Paul Walmsley844a3b62012-04-19 04:04:33 -0600500 .user = OCP_USER_MPU | OCP_USER_SDMA,
501};
502
503/* l4_core -> gpio5 */
Paul Walmsley844a3b62012-04-19 04:04:33 -0600504static struct omap_hwmod_ocp_if omap2430_l4_core__gpio5 = {
Paul Walmsleycb484272012-04-19 04:04:33 -0600505 .master = &omap2xxx_l4_core_hwmod,
Paul Walmsley844a3b62012-04-19 04:04:33 -0600506 .slave = &omap2430_gpio5_hwmod,
507 .clk = "gpio5_ick",
Paul Walmsley844a3b62012-04-19 04:04:33 -0600508 .user = OCP_USER_MPU | OCP_USER_SDMA,
509};
510
511/* dma_system -> L3 */
512static struct omap_hwmod_ocp_if omap2430_dma_system__l3 = {
513 .master = &omap2430_dma_system_hwmod,
Paul Walmsleycb484272012-04-19 04:04:33 -0600514 .slave = &omap2xxx_l3_main_hwmod,
Paul Walmsley844a3b62012-04-19 04:04:33 -0600515 .clk = "core_l3_ck",
516 .user = OCP_USER_MPU | OCP_USER_SDMA,
517};
518
519/* l4_core -> dma_system */
520static struct omap_hwmod_ocp_if omap2430_l4_core__dma_system = {
Paul Walmsleycb484272012-04-19 04:04:33 -0600521 .master = &omap2xxx_l4_core_hwmod,
Paul Walmsley844a3b62012-04-19 04:04:33 -0600522 .slave = &omap2430_dma_system_hwmod,
523 .clk = "sdma_ick",
Paul Walmsley844a3b62012-04-19 04:04:33 -0600524 .user = OCP_USER_MPU | OCP_USER_SDMA,
525};
526
527/* l4_core -> mailbox */
528static struct omap_hwmod_ocp_if omap2430_l4_core__mailbox = {
Paul Walmsleycb484272012-04-19 04:04:33 -0600529 .master = &omap2xxx_l4_core_hwmod,
Paul Walmsley844a3b62012-04-19 04:04:33 -0600530 .slave = &omap2430_mailbox_hwmod,
Paul Walmsley844a3b62012-04-19 04:04:33 -0600531 .user = OCP_USER_MPU | OCP_USER_SDMA,
532};
533
534/* l4_core -> mcbsp1 */
535static struct omap_hwmod_ocp_if omap2430_l4_core__mcbsp1 = {
Paul Walmsleycb484272012-04-19 04:04:33 -0600536 .master = &omap2xxx_l4_core_hwmod,
Paul Walmsley844a3b62012-04-19 04:04:33 -0600537 .slave = &omap2430_mcbsp1_hwmod,
538 .clk = "mcbsp1_ick",
Paul Walmsley844a3b62012-04-19 04:04:33 -0600539 .user = OCP_USER_MPU | OCP_USER_SDMA,
540};
541
542/* l4_core -> mcbsp2 */
543static struct omap_hwmod_ocp_if omap2430_l4_core__mcbsp2 = {
Paul Walmsleycb484272012-04-19 04:04:33 -0600544 .master = &omap2xxx_l4_core_hwmod,
Paul Walmsley844a3b62012-04-19 04:04:33 -0600545 .slave = &omap2430_mcbsp2_hwmod,
546 .clk = "mcbsp2_ick",
Paul Walmsley844a3b62012-04-19 04:04:33 -0600547 .user = OCP_USER_MPU | OCP_USER_SDMA,
548};
549
Paul Walmsley844a3b62012-04-19 04:04:33 -0600550/* l4_core -> mcbsp3 */
551static struct omap_hwmod_ocp_if omap2430_l4_core__mcbsp3 = {
Paul Walmsleycb484272012-04-19 04:04:33 -0600552 .master = &omap2xxx_l4_core_hwmod,
Paul Walmsley844a3b62012-04-19 04:04:33 -0600553 .slave = &omap2430_mcbsp3_hwmod,
554 .clk = "mcbsp3_ick",
Paul Walmsley844a3b62012-04-19 04:04:33 -0600555 .user = OCP_USER_MPU | OCP_USER_SDMA,
556};
557
Paul Walmsley844a3b62012-04-19 04:04:33 -0600558/* l4_core -> mcbsp4 */
559static struct omap_hwmod_ocp_if omap2430_l4_core__mcbsp4 = {
Paul Walmsleycb484272012-04-19 04:04:33 -0600560 .master = &omap2xxx_l4_core_hwmod,
Paul Walmsley844a3b62012-04-19 04:04:33 -0600561 .slave = &omap2430_mcbsp4_hwmod,
562 .clk = "mcbsp4_ick",
Paul Walmsley844a3b62012-04-19 04:04:33 -0600563 .user = OCP_USER_MPU | OCP_USER_SDMA,
564};
565
Paul Walmsley844a3b62012-04-19 04:04:33 -0600566/* l4_core -> mcbsp5 */
567static struct omap_hwmod_ocp_if omap2430_l4_core__mcbsp5 = {
Paul Walmsleycb484272012-04-19 04:04:33 -0600568 .master = &omap2xxx_l4_core_hwmod,
Paul Walmsley844a3b62012-04-19 04:04:33 -0600569 .slave = &omap2430_mcbsp5_hwmod,
570 .clk = "mcbsp5_ick",
Paul Walmsley844a3b62012-04-19 04:04:33 -0600571 .user = OCP_USER_MPU | OCP_USER_SDMA,
572};
573
Paul Walmsleyf32bd772012-05-08 11:34:28 -0600574/* l4_core -> hdq1w */
575static struct omap_hwmod_ocp_if omap2430_l4_core__hdq1w = {
576 .master = &omap2xxx_l4_core_hwmod,
577 .slave = &omap2430_hdq1w_hwmod,
578 .clk = "hdq_ick",
Paul Walmsleyf32bd772012-05-08 11:34:28 -0600579 .user = OCP_USER_MPU | OCP_USER_SDMA,
580 .flags = OMAP_FIREWALL_L4 | OCPIF_SWSUP_IDLE,
581};
582
Vaibhav Hiremathc8d82ff2012-05-08 11:34:30 -0600583/* l4_wkup -> 32ksync_counter */
Vaibhav Hiremathc8d82ff2012-05-08 11:34:30 -0600584static struct omap_hwmod_ocp_if omap2430_l4_wkup__counter_32k = {
585 .master = &omap2xxx_l4_wkup_hwmod,
586 .slave = &omap2xxx_counter_32k_hwmod,
587 .clk = "sync_32k_ick",
Vaibhav Hiremathc8d82ff2012-05-08 11:34:30 -0600588 .user = OCP_USER_MPU | OCP_USER_SDMA,
589};
590
Afzal Mohammed49484a62012-09-23 17:28:24 -0600591static struct omap_hwmod_ocp_if omap2430_l3__gpmc = {
592 .master = &omap2xxx_l3_main_hwmod,
593 .slave = &omap2xxx_gpmc_hwmod,
594 .clk = "core_l3_ck",
Afzal Mohammed49484a62012-09-23 17:28:24 -0600595 .user = OCP_USER_MPU | OCP_USER_SDMA,
596};
597
Paul Walmsley0a78c5c2012-04-19 04:04:31 -0600598static struct omap_hwmod_ocp_if *omap2430_hwmod_ocp_ifs[] __initdata = {
Paul Walmsley6a297552012-04-19 04:04:34 -0600599 &omap2xxx_l3_main__l4_core,
600 &omap2xxx_mpu__l3_main,
601 &omap2xxx_dss__l3,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -0600602 &omap2430_usbhsotg__l3,
603 &omap2430_l4_core__i2c1,
604 &omap2430_l4_core__i2c2,
Paul Walmsley6a297552012-04-19 04:04:34 -0600605 &omap2xxx_l4_core__l4_wkup,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -0600606 &omap2_l4_core__uart1,
607 &omap2_l4_core__uart2,
608 &omap2_l4_core__uart3,
609 &omap2430_l4_core__usbhsotg,
610 &omap2430_l4_core__mmc1,
611 &omap2430_l4_core__mmc2,
Paul Walmsley6a297552012-04-19 04:04:34 -0600612 &omap2xxx_l4_core__mcspi1,
613 &omap2xxx_l4_core__mcspi2,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -0600614 &omap2430_l4_core__mcspi3,
615 &omap2430_l3__iva,
616 &omap2430_l4_wkup__timer1,
Paul Walmsley6a297552012-04-19 04:04:34 -0600617 &omap2xxx_l4_core__timer2,
618 &omap2xxx_l4_core__timer3,
619 &omap2xxx_l4_core__timer4,
620 &omap2xxx_l4_core__timer5,
621 &omap2xxx_l4_core__timer6,
622 &omap2xxx_l4_core__timer7,
623 &omap2xxx_l4_core__timer8,
624 &omap2xxx_l4_core__timer9,
625 &omap2xxx_l4_core__timer10,
626 &omap2xxx_l4_core__timer11,
627 &omap2xxx_l4_core__timer12,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -0600628 &omap2430_l4_wkup__wd_timer2,
Paul Walmsley6a297552012-04-19 04:04:34 -0600629 &omap2xxx_l4_core__dss,
630 &omap2xxx_l4_core__dss_dispc,
631 &omap2xxx_l4_core__dss_rfbi,
632 &omap2xxx_l4_core__dss_venc,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -0600633 &omap2430_l4_wkup__gpio1,
634 &omap2430_l4_wkup__gpio2,
635 &omap2430_l4_wkup__gpio3,
636 &omap2430_l4_wkup__gpio4,
637 &omap2430_l4_core__gpio5,
638 &omap2430_dma_system__l3,
639 &omap2430_l4_core__dma_system,
640 &omap2430_l4_core__mailbox,
641 &omap2430_l4_core__mcbsp1,
642 &omap2430_l4_core__mcbsp2,
643 &omap2430_l4_core__mcbsp3,
644 &omap2430_l4_core__mcbsp4,
645 &omap2430_l4_core__mcbsp5,
Paul Walmsleyf32bd772012-05-08 11:34:28 -0600646 &omap2430_l4_core__hdq1w,
Paul Walmsleye9b0a2f2012-09-23 17:28:25 -0600647 &omap2xxx_l4_core__rng,
Mark A. Greere569e992013-03-30 15:49:19 -0600648 &omap2xxx_l4_core__sham,
Mark A. Greer660ffd62012-12-21 09:28:09 -0700649 &omap2xxx_l4_core__aes,
Vaibhav Hiremathc8d82ff2012-05-08 11:34:30 -0600650 &omap2430_l4_wkup__counter_32k,
Afzal Mohammed49484a62012-09-23 17:28:24 -0600651 &omap2430_l3__gpmc,
Paul Walmsley02bfc0302009-09-03 20:14:05 +0300652 NULL,
653};
654
Paul Walmsley73591542010-02-22 22:09:32 -0700655int __init omap2430_hwmod_init(void)
656{
Kevin Hilman9ebfd282012-06-18 12:12:23 -0600657 omap_hwmod_init();
Paul Walmsley0a78c5c2012-04-19 04:04:31 -0600658 return omap_hwmod_register_links(omap2430_hwmod_ocp_ifs);
Paul Walmsley73591542010-02-22 22:09:32 -0700659}