blob: 46fd80c29a02f94c1bcafcfebc219fb6e6a0b6e6 [file] [log] [blame]
Benoit Cousson55d2cb02010-05-12 17:54:36 +02001/*
2 * Hardware modules present on the OMAP44xx chips
3 *
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004 * Copyright (C) 2009-2012 Texas Instruments, Inc.
Benoit Cousson55d2cb02010-05-12 17:54:36 +02005 * Copyright (C) 2009-2010 Nokia Corporation
6 *
7 * Paul Walmsley
8 * Benoit Cousson
9 *
10 * This file is automatically generated from the OMAP hardware databases.
11 * We respectfully ask that any modifications to this file be coordinated
12 * with the public linux-omap@vger.kernel.org mailing list and the
13 * authors above to ensure that the autogeneration scripts are kept
14 * up-to-date with the file contents.
15 *
16 * This program is free software; you can redistribute it and/or modify
17 * it under the terms of the GNU General Public License version 2 as
18 * published by the Free Software Foundation.
19 */
20
21#include <linux/io.h>
Tony Lindgren4b254082012-08-30 15:37:24 -070022#include <linux/platform_data/gpio-omap.h>
Jean Pihetb86aeaf2012-04-25 16:06:20 +053023#include <linux/power/smartreflex.h>
Benoit Cousson55d2cb02010-05-12 17:54:36 +020024
25#include <plat/omap_hwmod.h>
Avinash.H.M6d3c55f2011-07-10 05:27:16 -060026#include <plat/i2c.h>
Benoit Cousson531ce0d2010-12-20 18:27:19 -080027#include <plat/dma.h>
Benoit Cousson905a74d2011-02-18 14:01:06 +010028#include <plat/mcspi.h>
Kishon Vijay Abraham Icb7e9de2011-02-24 15:16:50 +053029#include <plat/mcbsp.h>
Kishore Kadiyala6ab89462011-03-01 13:12:56 -080030#include <plat/mmc.h>
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +053031#include <plat/dmtimer.h>
Tomi Valkeinen13662dc2011-11-08 03:16:13 -070032#include <plat/common.h>
Omar Ramirez Luna230844d2012-09-23 17:28:24 -060033#include <plat/iommu.h>
Benoit Cousson55d2cb02010-05-12 17:54:36 +020034
35#include "omap_hwmod_common_data.h"
Paul Walmsleyd198b512010-12-21 15:30:54 -070036#include "cm1_44xx.h"
37#include "cm2_44xx.h"
38#include "prm44xx.h"
Benoit Cousson55d2cb02010-05-12 17:54:36 +020039#include "prm-regbits-44xx.h"
Paul Walmsleyff2516f2010-12-21 15:39:15 -070040#include "wd_timer.h"
Benoit Cousson55d2cb02010-05-12 17:54:36 +020041
42/* Base offset for all OMAP4 interrupts external to MPUSS */
43#define OMAP44XX_IRQ_GIC_START 32
44
45/* Base offset for all OMAP4 dma requests */
Paul Walmsley844a3b62012-04-19 04:04:33 -060046#define OMAP44XX_DMA_REQ_START 1
Benoit Cousson55d2cb02010-05-12 17:54:36 +020047
48/*
Paul Walmsley844a3b62012-04-19 04:04:33 -060049 * IP blocks
Benoit Cousson55d2cb02010-05-12 17:54:36 +020050 */
51
52/*
Paul Walmsley42b9e382012-04-19 13:33:54 -060053 * 'c2c_target_fw' class
54 * instance(s): c2c_target_fw
55 */
56static struct omap_hwmod_class omap44xx_c2c_target_fw_hwmod_class = {
57 .name = "c2c_target_fw",
58};
59
60/* c2c_target_fw */
61static struct omap_hwmod omap44xx_c2c_target_fw_hwmod = {
62 .name = "c2c_target_fw",
63 .class = &omap44xx_c2c_target_fw_hwmod_class,
64 .clkdm_name = "d2d_clkdm",
65 .prcm = {
66 .omap4 = {
67 .clkctrl_offs = OMAP4_CM_D2D_SAD2D_FW_CLKCTRL_OFFSET,
68 .context_offs = OMAP4_RM_D2D_SAD2D_FW_CONTEXT_OFFSET,
69 },
70 },
71};
72
73/*
Benoit Cousson55d2cb02010-05-12 17:54:36 +020074 * 'dmm' class
75 * instance(s): dmm
76 */
77static struct omap_hwmod_class omap44xx_dmm_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +000078 .name = "dmm",
Benoit Cousson55d2cb02010-05-12 17:54:36 +020079};
80
Benoit Cousson7e69ed92011-07-09 19:14:28 -060081/* dmm */
82static struct omap_hwmod_irq_info omap44xx_dmm_irqs[] = {
83 { .irq = 113 + OMAP44XX_IRQ_GIC_START },
84 { .irq = -1 }
85};
86
Benoit Cousson55d2cb02010-05-12 17:54:36 +020087static struct omap_hwmod omap44xx_dmm_hwmod = {
88 .name = "dmm",
89 .class = &omap44xx_dmm_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -060090 .clkdm_name = "l3_emif_clkdm",
Paul Walmsley844a3b62012-04-19 04:04:33 -060091 .mpu_irqs = omap44xx_dmm_irqs,
Benoit Coussond0f06312011-07-10 05:56:30 -060092 .prcm = {
93 .omap4 = {
94 .clkctrl_offs = OMAP4_CM_MEMIF_DMM_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -060095 .context_offs = OMAP4_RM_MEMIF_DMM_CONTEXT_OFFSET,
Benoit Coussond0f06312011-07-10 05:56:30 -060096 },
97 },
Benoit Cousson55d2cb02010-05-12 17:54:36 +020098};
99
100/*
101 * 'emif_fw' class
102 * instance(s): emif_fw
103 */
104static struct omap_hwmod_class omap44xx_emif_fw_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +0000105 .name = "emif_fw",
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200106};
107
Benoit Cousson7e69ed92011-07-09 19:14:28 -0600108/* emif_fw */
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200109static struct omap_hwmod omap44xx_emif_fw_hwmod = {
110 .name = "emif_fw",
111 .class = &omap44xx_emif_fw_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600112 .clkdm_name = "l3_emif_clkdm",
Benoit Coussond0f06312011-07-10 05:56:30 -0600113 .prcm = {
114 .omap4 = {
115 .clkctrl_offs = OMAP4_CM_MEMIF_EMIF_FW_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600116 .context_offs = OMAP4_RM_MEMIF_EMIF_FW_CONTEXT_OFFSET,
Benoit Coussond0f06312011-07-10 05:56:30 -0600117 },
118 },
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200119};
120
121/*
122 * 'l3' class
123 * instance(s): l3_instr, l3_main_1, l3_main_2, l3_main_3
124 */
125static struct omap_hwmod_class omap44xx_l3_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +0000126 .name = "l3",
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200127};
128
Benoit Cousson7e69ed92011-07-09 19:14:28 -0600129/* l3_instr */
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200130static struct omap_hwmod omap44xx_l3_instr_hwmod = {
131 .name = "l3_instr",
132 .class = &omap44xx_l3_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600133 .clkdm_name = "l3_instr_clkdm",
Benoit Coussond0f06312011-07-10 05:56:30 -0600134 .prcm = {
135 .omap4 = {
136 .clkctrl_offs = OMAP4_CM_L3INSTR_L3_INSTR_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600137 .context_offs = OMAP4_RM_L3INSTR_L3_INSTR_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -0600138 .modulemode = MODULEMODE_HWCTRL,
Benoit Coussond0f06312011-07-10 05:56:30 -0600139 },
140 },
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200141};
142
Benoit Cousson7e69ed92011-07-09 19:14:28 -0600143/* l3_main_1 */
Benoit Cousson9b4021b2011-07-09 19:14:27 -0600144static struct omap_hwmod_irq_info omap44xx_l3_main_1_irqs[] = {
145 { .name = "dbg_err", .irq = 9 + OMAP44XX_IRQ_GIC_START },
146 { .name = "app_err", .irq = 10 + OMAP44XX_IRQ_GIC_START },
147 { .irq = -1 }
148};
149
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200150static struct omap_hwmod omap44xx_l3_main_1_hwmod = {
151 .name = "l3_main_1",
152 .class = &omap44xx_l3_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600153 .clkdm_name = "l3_1_clkdm",
Benoit Cousson7e69ed92011-07-09 19:14:28 -0600154 .mpu_irqs = omap44xx_l3_main_1_irqs,
Benoit Coussond0f06312011-07-10 05:56:30 -0600155 .prcm = {
156 .omap4 = {
157 .clkctrl_offs = OMAP4_CM_L3_1_L3_1_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600158 .context_offs = OMAP4_RM_L3_1_L3_1_CONTEXT_OFFSET,
Benoit Coussond0f06312011-07-10 05:56:30 -0600159 },
160 },
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200161};
162
Benoit Cousson7e69ed92011-07-09 19:14:28 -0600163/* l3_main_2 */
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200164static struct omap_hwmod omap44xx_l3_main_2_hwmod = {
165 .name = "l3_main_2",
166 .class = &omap44xx_l3_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600167 .clkdm_name = "l3_2_clkdm",
Benoit Coussond0f06312011-07-10 05:56:30 -0600168 .prcm = {
169 .omap4 = {
170 .clkctrl_offs = OMAP4_CM_L3_2_L3_2_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600171 .context_offs = OMAP4_RM_L3_2_L3_2_CONTEXT_OFFSET,
Benoit Coussond0f06312011-07-10 05:56:30 -0600172 },
173 },
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200174};
175
Benoit Cousson7e69ed92011-07-09 19:14:28 -0600176/* l3_main_3 */
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200177static struct omap_hwmod omap44xx_l3_main_3_hwmod = {
178 .name = "l3_main_3",
179 .class = &omap44xx_l3_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600180 .clkdm_name = "l3_instr_clkdm",
Benoit Coussond0f06312011-07-10 05:56:30 -0600181 .prcm = {
182 .omap4 = {
183 .clkctrl_offs = OMAP4_CM_L3INSTR_L3_3_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600184 .context_offs = OMAP4_RM_L3INSTR_L3_3_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -0600185 .modulemode = MODULEMODE_HWCTRL,
Benoit Coussond0f06312011-07-10 05:56:30 -0600186 },
187 },
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200188};
189
190/*
191 * 'l4' class
192 * instance(s): l4_abe, l4_cfg, l4_per, l4_wkup
193 */
194static struct omap_hwmod_class omap44xx_l4_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +0000195 .name = "l4",
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200196};
197
Benoit Cousson7e69ed92011-07-09 19:14:28 -0600198/* l4_abe */
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200199static struct omap_hwmod omap44xx_l4_abe_hwmod = {
200 .name = "l4_abe",
201 .class = &omap44xx_l4_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600202 .clkdm_name = "abe_clkdm",
Benoit Coussond0f06312011-07-10 05:56:30 -0600203 .prcm = {
204 .omap4 = {
205 .clkctrl_offs = OMAP4_CM1_ABE_L4ABE_CLKCTRL_OFFSET,
Tero Kristoce809792012-09-23 17:28:19 -0600206 .context_offs = OMAP4_RM_ABE_AESS_CONTEXT_OFFSET,
207 .lostcontext_mask = OMAP4430_LOSTMEM_AESSMEM_MASK,
Tero Kristo46b3af22012-09-23 17:28:20 -0600208 .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
Benoit Coussond0f06312011-07-10 05:56:30 -0600209 },
210 },
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200211};
212
Benoit Cousson7e69ed92011-07-09 19:14:28 -0600213/* l4_cfg */
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200214static struct omap_hwmod omap44xx_l4_cfg_hwmod = {
215 .name = "l4_cfg",
216 .class = &omap44xx_l4_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600217 .clkdm_name = "l4_cfg_clkdm",
Benoit Coussond0f06312011-07-10 05:56:30 -0600218 .prcm = {
219 .omap4 = {
220 .clkctrl_offs = OMAP4_CM_L4CFG_L4_CFG_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600221 .context_offs = OMAP4_RM_L4CFG_L4_CFG_CONTEXT_OFFSET,
Benoit Coussond0f06312011-07-10 05:56:30 -0600222 },
223 },
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200224};
225
Benoit Cousson7e69ed92011-07-09 19:14:28 -0600226/* l4_per */
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200227static struct omap_hwmod omap44xx_l4_per_hwmod = {
228 .name = "l4_per",
229 .class = &omap44xx_l4_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600230 .clkdm_name = "l4_per_clkdm",
Benoit Coussond0f06312011-07-10 05:56:30 -0600231 .prcm = {
232 .omap4 = {
233 .clkctrl_offs = OMAP4_CM_L4PER_L4PER_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600234 .context_offs = OMAP4_RM_L4PER_L4_PER_CONTEXT_OFFSET,
Benoit Coussond0f06312011-07-10 05:56:30 -0600235 },
236 },
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200237};
238
Benoit Cousson7e69ed92011-07-09 19:14:28 -0600239/* l4_wkup */
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200240static struct omap_hwmod omap44xx_l4_wkup_hwmod = {
241 .name = "l4_wkup",
242 .class = &omap44xx_l4_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600243 .clkdm_name = "l4_wkup_clkdm",
Benoit Coussond0f06312011-07-10 05:56:30 -0600244 .prcm = {
245 .omap4 = {
246 .clkctrl_offs = OMAP4_CM_WKUP_L4WKUP_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600247 .context_offs = OMAP4_RM_WKUP_L4WKUP_CONTEXT_OFFSET,
Benoit Coussond0f06312011-07-10 05:56:30 -0600248 },
249 },
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200250};
251
252/*
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700253 * 'mpu_bus' class
254 * instance(s): mpu_private
255 */
256static struct omap_hwmod_class omap44xx_mpu_bus_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +0000257 .name = "mpu_bus",
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700258};
259
Benoit Cousson7e69ed92011-07-09 19:14:28 -0600260/* mpu_private */
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700261static struct omap_hwmod omap44xx_mpu_private_hwmod = {
262 .name = "mpu_private",
263 .class = &omap44xx_mpu_bus_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600264 .clkdm_name = "mpuss_clkdm",
Tero Kristo46b3af22012-09-23 17:28:20 -0600265 .prcm = {
266 .omap4 = {
267 .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
268 },
269 },
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700270};
271
272/*
Benoît Cousson9a817bc2012-04-19 13:33:56 -0600273 * 'ocp_wp_noc' class
274 * instance(s): ocp_wp_noc
275 */
276static struct omap_hwmod_class omap44xx_ocp_wp_noc_hwmod_class = {
277 .name = "ocp_wp_noc",
278};
279
280/* ocp_wp_noc */
281static struct omap_hwmod omap44xx_ocp_wp_noc_hwmod = {
282 .name = "ocp_wp_noc",
283 .class = &omap44xx_ocp_wp_noc_hwmod_class,
284 .clkdm_name = "l3_instr_clkdm",
285 .prcm = {
286 .omap4 = {
287 .clkctrl_offs = OMAP4_CM_L3INSTR_OCP_WP1_CLKCTRL_OFFSET,
288 .context_offs = OMAP4_RM_L3INSTR_OCP_WP1_CONTEXT_OFFSET,
289 .modulemode = MODULEMODE_HWCTRL,
290 },
291 },
292};
293
294/*
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700295 * Modules omap_hwmod structures
296 *
297 * The following IPs are excluded for the moment because:
298 * - They do not need an explicit SW control using omap_hwmod API.
299 * - They still need to be validated with the driver
300 * properly adapted to omap_hwmod / omap_device
301 *
Benoît Cousson96566042012-04-19 13:33:59 -0600302 * usim
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700303 */
304
305/*
Benoit Cousson407a6882011-02-15 22:39:48 +0100306 * 'aess' class
307 * audio engine sub system
308 */
309
310static struct omap_hwmod_class_sysconfig omap44xx_aess_sysc = {
311 .rev_offs = 0x0000,
312 .sysc_offs = 0x0010,
313 .sysc_flags = (SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE),
314 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
Benoit Coussonc614ebf2011-07-01 22:54:01 +0200315 MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART |
316 MSTANDBY_SMART_WKUP),
Benoit Cousson407a6882011-02-15 22:39:48 +0100317 .sysc_fields = &omap_hwmod_sysc_type2,
318};
319
320static struct omap_hwmod_class omap44xx_aess_hwmod_class = {
321 .name = "aess",
322 .sysc = &omap44xx_aess_sysc,
323};
324
325/* aess */
326static struct omap_hwmod_irq_info omap44xx_aess_irqs[] = {
327 { .irq = 99 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -0600328 { .irq = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +0100329};
330
331static struct omap_hwmod_dma_info omap44xx_aess_sdma_reqs[] = {
332 { .name = "fifo0", .dma_req = 100 + OMAP44XX_DMA_REQ_START },
333 { .name = "fifo1", .dma_req = 101 + OMAP44XX_DMA_REQ_START },
334 { .name = "fifo2", .dma_req = 102 + OMAP44XX_DMA_REQ_START },
335 { .name = "fifo3", .dma_req = 103 + OMAP44XX_DMA_REQ_START },
336 { .name = "fifo4", .dma_req = 104 + OMAP44XX_DMA_REQ_START },
337 { .name = "fifo5", .dma_req = 105 + OMAP44XX_DMA_REQ_START },
338 { .name = "fifo6", .dma_req = 106 + OMAP44XX_DMA_REQ_START },
339 { .name = "fifo7", .dma_req = 107 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -0600340 { .dma_req = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +0100341};
342
Benoit Cousson407a6882011-02-15 22:39:48 +0100343static struct omap_hwmod omap44xx_aess_hwmod = {
344 .name = "aess",
345 .class = &omap44xx_aess_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600346 .clkdm_name = "abe_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +0100347 .mpu_irqs = omap44xx_aess_irqs,
Benoit Cousson407a6882011-02-15 22:39:48 +0100348 .sdma_reqs = omap44xx_aess_sdma_reqs,
Benoit Cousson407a6882011-02-15 22:39:48 +0100349 .main_clk = "aess_fck",
Benoit Cousson00fe6102011-07-09 19:14:28 -0600350 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +0100351 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600352 .clkctrl_offs = OMAP4_CM1_ABE_AESS_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600353 .context_offs = OMAP4_RM_ABE_AESS_CONTEXT_OFFSET,
Tero Kristoce809792012-09-23 17:28:19 -0600354 .lostcontext_mask = OMAP4430_LOSTCONTEXT_DFF_MASK,
Benoit Cousson03fdefe52011-07-10 05:56:32 -0600355 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +0100356 },
357 },
Benoit Cousson407a6882011-02-15 22:39:48 +0100358};
359
360/*
Paul Walmsley42b9e382012-04-19 13:33:54 -0600361 * 'c2c' class
362 * chip 2 chip interface used to plug the ape soc (omap) with an external modem
363 * soc
364 */
365
366static struct omap_hwmod_class omap44xx_c2c_hwmod_class = {
367 .name = "c2c",
368};
369
370/* c2c */
371static struct omap_hwmod_irq_info omap44xx_c2c_irqs[] = {
372 { .irq = 88 + OMAP44XX_IRQ_GIC_START },
373 { .irq = -1 }
374};
375
376static struct omap_hwmod_dma_info omap44xx_c2c_sdma_reqs[] = {
377 { .dma_req = 68 + OMAP44XX_DMA_REQ_START },
378 { .dma_req = -1 }
379};
380
381static struct omap_hwmod omap44xx_c2c_hwmod = {
382 .name = "c2c",
383 .class = &omap44xx_c2c_hwmod_class,
384 .clkdm_name = "d2d_clkdm",
385 .mpu_irqs = omap44xx_c2c_irqs,
386 .sdma_reqs = omap44xx_c2c_sdma_reqs,
387 .prcm = {
388 .omap4 = {
389 .clkctrl_offs = OMAP4_CM_D2D_SAD2D_CLKCTRL_OFFSET,
390 .context_offs = OMAP4_RM_D2D_SAD2D_CONTEXT_OFFSET,
391 },
392 },
393};
394
395/*
Benoit Cousson407a6882011-02-15 22:39:48 +0100396 * 'counter' class
397 * 32-bit ordinary counter, clocked by the falling edge of the 32 khz clock
398 */
399
400static struct omap_hwmod_class_sysconfig omap44xx_counter_sysc = {
401 .rev_offs = 0x0000,
402 .sysc_offs = 0x0004,
403 .sysc_flags = SYSC_HAS_SIDLEMODE,
Paul Walmsley252a4c52012-06-17 11:57:51 -0600404 .idlemodes = (SIDLE_FORCE | SIDLE_NO),
Benoit Cousson407a6882011-02-15 22:39:48 +0100405 .sysc_fields = &omap_hwmod_sysc_type1,
406};
407
408static struct omap_hwmod_class omap44xx_counter_hwmod_class = {
409 .name = "counter",
410 .sysc = &omap44xx_counter_sysc,
411};
412
413/* counter_32k */
Benoit Cousson407a6882011-02-15 22:39:48 +0100414static struct omap_hwmod omap44xx_counter_32k_hwmod = {
415 .name = "counter_32k",
416 .class = &omap44xx_counter_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600417 .clkdm_name = "l4_wkup_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +0100418 .flags = HWMOD_SWSUP_SIDLE,
419 .main_clk = "sys_32k_ck",
Benoit Cousson00fe6102011-07-09 19:14:28 -0600420 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +0100421 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600422 .clkctrl_offs = OMAP4_CM_WKUP_SYNCTIMER_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600423 .context_offs = OMAP4_RM_WKUP_SYNCTIMER_CONTEXT_OFFSET,
Benoit Cousson407a6882011-02-15 22:39:48 +0100424 },
425 },
Benoit Cousson407a6882011-02-15 22:39:48 +0100426};
427
428/*
Paul Walmsleya0b5d812012-04-19 13:33:57 -0600429 * 'ctrl_module' class
430 * attila core control module + core pad control module + wkup pad control
431 * module + attila wkup control module
432 */
433
434static struct omap_hwmod_class_sysconfig omap44xx_ctrl_module_sysc = {
435 .rev_offs = 0x0000,
436 .sysc_offs = 0x0010,
437 .sysc_flags = SYSC_HAS_SIDLEMODE,
438 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
439 SIDLE_SMART_WKUP),
440 .sysc_fields = &omap_hwmod_sysc_type2,
441};
442
443static struct omap_hwmod_class omap44xx_ctrl_module_hwmod_class = {
444 .name = "ctrl_module",
445 .sysc = &omap44xx_ctrl_module_sysc,
446};
447
448/* ctrl_module_core */
449static struct omap_hwmod_irq_info omap44xx_ctrl_module_core_irqs[] = {
450 { .irq = 8 + OMAP44XX_IRQ_GIC_START },
451 { .irq = -1 }
452};
453
454static struct omap_hwmod omap44xx_ctrl_module_core_hwmod = {
455 .name = "ctrl_module_core",
456 .class = &omap44xx_ctrl_module_hwmod_class,
457 .clkdm_name = "l4_cfg_clkdm",
458 .mpu_irqs = omap44xx_ctrl_module_core_irqs,
Tero Kristo46b3af22012-09-23 17:28:20 -0600459 .prcm = {
460 .omap4 = {
461 .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
462 },
463 },
Paul Walmsleya0b5d812012-04-19 13:33:57 -0600464};
465
466/* ctrl_module_pad_core */
467static struct omap_hwmod omap44xx_ctrl_module_pad_core_hwmod = {
468 .name = "ctrl_module_pad_core",
469 .class = &omap44xx_ctrl_module_hwmod_class,
470 .clkdm_name = "l4_cfg_clkdm",
Tero Kristo46b3af22012-09-23 17:28:20 -0600471 .prcm = {
472 .omap4 = {
473 .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
474 },
475 },
Paul Walmsleya0b5d812012-04-19 13:33:57 -0600476};
477
478/* ctrl_module_wkup */
479static struct omap_hwmod omap44xx_ctrl_module_wkup_hwmod = {
480 .name = "ctrl_module_wkup",
481 .class = &omap44xx_ctrl_module_hwmod_class,
482 .clkdm_name = "l4_wkup_clkdm",
Tero Kristo46b3af22012-09-23 17:28:20 -0600483 .prcm = {
484 .omap4 = {
485 .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
486 },
487 },
Paul Walmsleya0b5d812012-04-19 13:33:57 -0600488};
489
490/* ctrl_module_pad_wkup */
491static struct omap_hwmod omap44xx_ctrl_module_pad_wkup_hwmod = {
492 .name = "ctrl_module_pad_wkup",
493 .class = &omap44xx_ctrl_module_hwmod_class,
494 .clkdm_name = "l4_wkup_clkdm",
Tero Kristo46b3af22012-09-23 17:28:20 -0600495 .prcm = {
496 .omap4 = {
497 .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
498 },
499 },
Paul Walmsleya0b5d812012-04-19 13:33:57 -0600500};
501
502/*
Benoît Cousson96566042012-04-19 13:33:59 -0600503 * 'debugss' class
504 * debug and emulation sub system
505 */
506
507static struct omap_hwmod_class omap44xx_debugss_hwmod_class = {
508 .name = "debugss",
509};
510
511/* debugss */
512static struct omap_hwmod omap44xx_debugss_hwmod = {
513 .name = "debugss",
514 .class = &omap44xx_debugss_hwmod_class,
515 .clkdm_name = "emu_sys_clkdm",
516 .main_clk = "trace_clk_div_ck",
517 .prcm = {
518 .omap4 = {
519 .clkctrl_offs = OMAP4_CM_EMU_DEBUGSS_CLKCTRL_OFFSET,
520 .context_offs = OMAP4_RM_EMU_DEBUGSS_CONTEXT_OFFSET,
521 },
522 },
523};
524
525/*
Benoit Coussond7cf5f32010-12-23 22:30:31 +0000526 * 'dma' class
527 * dma controller for data exchange between memory to memory (i.e. internal or
528 * external memory) and gp peripherals to memory or memory to gp peripherals
529 */
530
531static struct omap_hwmod_class_sysconfig omap44xx_dma_sysc = {
532 .rev_offs = 0x0000,
533 .sysc_offs = 0x002c,
534 .syss_offs = 0x0028,
535 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
536 SYSC_HAS_EMUFREE | SYSC_HAS_MIDLEMODE |
537 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
538 SYSS_HAS_RESET_STATUS),
539 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
540 MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
541 .sysc_fields = &omap_hwmod_sysc_type1,
542};
543
544static struct omap_hwmod_class omap44xx_dma_hwmod_class = {
545 .name = "dma",
546 .sysc = &omap44xx_dma_sysc,
547};
548
549/* dma dev_attr */
550static struct omap_dma_dev_attr dma_dev_attr = {
551 .dev_caps = RESERVE_CHANNEL | DMA_LINKED_LCH | GLOBAL_PRIORITY |
552 IS_CSSA_32 | IS_CDSA_32 | IS_RW_PRIORITY,
553 .lch_count = 32,
554};
555
556/* dma_system */
557static struct omap_hwmod_irq_info omap44xx_dma_system_irqs[] = {
558 { .name = "0", .irq = 12 + OMAP44XX_IRQ_GIC_START },
559 { .name = "1", .irq = 13 + OMAP44XX_IRQ_GIC_START },
560 { .name = "2", .irq = 14 + OMAP44XX_IRQ_GIC_START },
561 { .name = "3", .irq = 15 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -0600562 { .irq = -1 }
Benoit Coussond7cf5f32010-12-23 22:30:31 +0000563};
564
Benoit Coussond7cf5f32010-12-23 22:30:31 +0000565static struct omap_hwmod omap44xx_dma_system_hwmod = {
566 .name = "dma_system",
567 .class = &omap44xx_dma_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600568 .clkdm_name = "l3_dma_clkdm",
Benoit Coussond7cf5f32010-12-23 22:30:31 +0000569 .mpu_irqs = omap44xx_dma_system_irqs,
Benoit Coussond7cf5f32010-12-23 22:30:31 +0000570 .main_clk = "l3_div_ck",
571 .prcm = {
572 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600573 .clkctrl_offs = OMAP4_CM_SDMA_SDMA_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600574 .context_offs = OMAP4_RM_SDMA_SDMA_CONTEXT_OFFSET,
Benoit Coussond7cf5f32010-12-23 22:30:31 +0000575 },
576 },
577 .dev_attr = &dma_dev_attr,
Benoit Coussond7cf5f32010-12-23 22:30:31 +0000578};
579
580/*
Benoit Cousson8ca476d2011-01-25 22:01:00 +0000581 * 'dmic' class
582 * digital microphone controller
583 */
584
585static struct omap_hwmod_class_sysconfig omap44xx_dmic_sysc = {
586 .rev_offs = 0x0000,
587 .sysc_offs = 0x0010,
588 .sysc_flags = (SYSC_HAS_EMUFREE | SYSC_HAS_RESET_STATUS |
589 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
590 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
591 SIDLE_SMART_WKUP),
592 .sysc_fields = &omap_hwmod_sysc_type2,
593};
594
595static struct omap_hwmod_class omap44xx_dmic_hwmod_class = {
596 .name = "dmic",
597 .sysc = &omap44xx_dmic_sysc,
598};
599
600/* dmic */
Benoit Cousson8ca476d2011-01-25 22:01:00 +0000601static struct omap_hwmod_irq_info omap44xx_dmic_irqs[] = {
602 { .irq = 114 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -0600603 { .irq = -1 }
Benoit Cousson8ca476d2011-01-25 22:01:00 +0000604};
605
606static struct omap_hwmod_dma_info omap44xx_dmic_sdma_reqs[] = {
607 { .dma_req = 66 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -0600608 { .dma_req = -1 }
Benoit Cousson8ca476d2011-01-25 22:01:00 +0000609};
610
Benoit Cousson8ca476d2011-01-25 22:01:00 +0000611static struct omap_hwmod omap44xx_dmic_hwmod = {
612 .name = "dmic",
613 .class = &omap44xx_dmic_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600614 .clkdm_name = "abe_clkdm",
Benoit Cousson8ca476d2011-01-25 22:01:00 +0000615 .mpu_irqs = omap44xx_dmic_irqs,
Benoit Cousson8ca476d2011-01-25 22:01:00 +0000616 .sdma_reqs = omap44xx_dmic_sdma_reqs,
Benoit Cousson8ca476d2011-01-25 22:01:00 +0000617 .main_clk = "dmic_fck",
Benoit Cousson00fe6102011-07-09 19:14:28 -0600618 .prcm = {
Benoit Cousson8ca476d2011-01-25 22:01:00 +0000619 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600620 .clkctrl_offs = OMAP4_CM1_ABE_DMIC_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600621 .context_offs = OMAP4_RM_ABE_DMIC_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -0600622 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson8ca476d2011-01-25 22:01:00 +0000623 },
624 },
Benoit Cousson8ca476d2011-01-25 22:01:00 +0000625};
626
627/*
Benoit Cousson8f25bdc2010-12-21 21:08:34 -0700628 * 'dsp' class
629 * dsp sub-system
630 */
631
632static struct omap_hwmod_class omap44xx_dsp_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +0000633 .name = "dsp",
Benoit Cousson8f25bdc2010-12-21 21:08:34 -0700634};
635
636/* dsp */
637static struct omap_hwmod_irq_info omap44xx_dsp_irqs[] = {
638 { .irq = 28 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -0600639 { .irq = -1 }
Benoit Cousson8f25bdc2010-12-21 21:08:34 -0700640};
641
642static struct omap_hwmod_rst_info omap44xx_dsp_resets[] = {
Benoit Cousson8f25bdc2010-12-21 21:08:34 -0700643 { .name = "dsp", .rst_shift = 0 },
644};
645
Benoit Cousson8f25bdc2010-12-21 21:08:34 -0700646static struct omap_hwmod omap44xx_dsp_hwmod = {
647 .name = "dsp",
648 .class = &omap44xx_dsp_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600649 .clkdm_name = "tesla_clkdm",
Benoit Cousson8f25bdc2010-12-21 21:08:34 -0700650 .mpu_irqs = omap44xx_dsp_irqs,
Benoit Cousson8f25bdc2010-12-21 21:08:34 -0700651 .rst_lines = omap44xx_dsp_resets,
652 .rst_lines_cnt = ARRAY_SIZE(omap44xx_dsp_resets),
653 .main_clk = "dsp_fck",
654 .prcm = {
655 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600656 .clkctrl_offs = OMAP4_CM_TESLA_TESLA_CLKCTRL_OFFSET,
Benoit Coussoneaac3292011-07-10 05:56:31 -0600657 .rstctrl_offs = OMAP4_RM_TESLA_RSTCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600658 .context_offs = OMAP4_RM_TESLA_TESLA_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -0600659 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson8f25bdc2010-12-21 21:08:34 -0700660 },
661 },
Benoit Cousson8f25bdc2010-12-21 21:08:34 -0700662};
663
664/*
Benoit Coussond63bd742011-01-27 11:17:03 +0000665 * 'dss' class
666 * display sub-system
667 */
668
669static struct omap_hwmod_class_sysconfig omap44xx_dss_sysc = {
670 .rev_offs = 0x0000,
671 .syss_offs = 0x0014,
672 .sysc_flags = SYSS_HAS_RESET_STATUS,
673};
674
675static struct omap_hwmod_class omap44xx_dss_hwmod_class = {
676 .name = "dss",
677 .sysc = &omap44xx_dss_sysc,
Tomi Valkeinen13662dc2011-11-08 03:16:13 -0700678 .reset = omap_dss_reset,
Benoit Coussond63bd742011-01-27 11:17:03 +0000679};
680
681/* dss */
Benoit Coussond63bd742011-01-27 11:17:03 +0000682static struct omap_hwmod_opt_clk dss_opt_clks[] = {
683 { .role = "sys_clk", .clk = "dss_sys_clk" },
684 { .role = "tv_clk", .clk = "dss_tv_clk" },
Tomi Valkeinen4d0698d2011-11-08 03:16:12 -0700685 { .role = "hdmi_clk", .clk = "dss_48mhz_clk" },
Benoit Coussond63bd742011-01-27 11:17:03 +0000686};
687
688static struct omap_hwmod omap44xx_dss_hwmod = {
689 .name = "dss_core",
Tomi Valkeinen37ad0852011-11-08 03:16:11 -0700690 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
Benoit Coussond63bd742011-01-27 11:17:03 +0000691 .class = &omap44xx_dss_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600692 .clkdm_name = "l3_dss_clkdm",
Tomi Valkeinenda7cdfa2011-07-09 20:39:45 -0600693 .main_clk = "dss_dss_clk",
Benoit Coussond63bd742011-01-27 11:17:03 +0000694 .prcm = {
695 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600696 .clkctrl_offs = OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600697 .context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET,
Benoit Coussond63bd742011-01-27 11:17:03 +0000698 },
699 },
700 .opt_clks = dss_opt_clks,
701 .opt_clks_cnt = ARRAY_SIZE(dss_opt_clks),
Benoit Coussond63bd742011-01-27 11:17:03 +0000702};
703
704/*
705 * 'dispc' class
706 * display controller
707 */
708
709static struct omap_hwmod_class_sysconfig omap44xx_dispc_sysc = {
710 .rev_offs = 0x0000,
711 .sysc_offs = 0x0010,
712 .syss_offs = 0x0014,
713 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
714 SYSC_HAS_ENAWAKEUP | SYSC_HAS_MIDLEMODE |
715 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
716 SYSS_HAS_RESET_STATUS),
717 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
718 MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
719 .sysc_fields = &omap_hwmod_sysc_type1,
720};
721
722static struct omap_hwmod_class omap44xx_dispc_hwmod_class = {
723 .name = "dispc",
724 .sysc = &omap44xx_dispc_sysc,
725};
726
727/* dss_dispc */
Benoit Coussond63bd742011-01-27 11:17:03 +0000728static struct omap_hwmod_irq_info omap44xx_dss_dispc_irqs[] = {
729 { .irq = 25 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -0600730 { .irq = -1 }
Benoit Coussond63bd742011-01-27 11:17:03 +0000731};
732
733static struct omap_hwmod_dma_info omap44xx_dss_dispc_sdma_reqs[] = {
734 { .dma_req = 5 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -0600735 { .dma_req = -1 }
Benoit Coussond63bd742011-01-27 11:17:03 +0000736};
737
Archit Tanejab923d402011-10-06 18:04:08 -0600738static struct omap_dss_dispc_dev_attr omap44xx_dss_dispc_dev_attr = {
739 .manager_count = 3,
740 .has_framedonetv_irq = 1
741};
742
Benoit Coussond63bd742011-01-27 11:17:03 +0000743static struct omap_hwmod omap44xx_dss_dispc_hwmod = {
744 .name = "dss_dispc",
745 .class = &omap44xx_dispc_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600746 .clkdm_name = "l3_dss_clkdm",
Benoit Coussond63bd742011-01-27 11:17:03 +0000747 .mpu_irqs = omap44xx_dss_dispc_irqs,
Benoit Coussond63bd742011-01-27 11:17:03 +0000748 .sdma_reqs = omap44xx_dss_dispc_sdma_reqs,
Tomi Valkeinenda7cdfa2011-07-09 20:39:45 -0600749 .main_clk = "dss_dss_clk",
Benoit Coussond63bd742011-01-27 11:17:03 +0000750 .prcm = {
751 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600752 .clkctrl_offs = OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600753 .context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET,
Benoit Coussond63bd742011-01-27 11:17:03 +0000754 },
755 },
Archit Tanejab923d402011-10-06 18:04:08 -0600756 .dev_attr = &omap44xx_dss_dispc_dev_attr
Benoit Coussond63bd742011-01-27 11:17:03 +0000757};
758
759/*
760 * 'dsi' class
761 * display serial interface controller
762 */
763
764static struct omap_hwmod_class_sysconfig omap44xx_dsi_sysc = {
765 .rev_offs = 0x0000,
766 .sysc_offs = 0x0010,
767 .syss_offs = 0x0014,
768 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
769 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE |
770 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
771 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
772 .sysc_fields = &omap_hwmod_sysc_type1,
773};
774
775static struct omap_hwmod_class omap44xx_dsi_hwmod_class = {
776 .name = "dsi",
777 .sysc = &omap44xx_dsi_sysc,
778};
779
780/* dss_dsi1 */
Benoit Coussond63bd742011-01-27 11:17:03 +0000781static struct omap_hwmod_irq_info omap44xx_dss_dsi1_irqs[] = {
782 { .irq = 53 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -0600783 { .irq = -1 }
Benoit Coussond63bd742011-01-27 11:17:03 +0000784};
785
786static struct omap_hwmod_dma_info omap44xx_dss_dsi1_sdma_reqs[] = {
787 { .dma_req = 74 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -0600788 { .dma_req = -1 }
Benoit Coussond63bd742011-01-27 11:17:03 +0000789};
790
Tomi Valkeinen3a23aaf2011-07-09 20:39:44 -0600791static struct omap_hwmod_opt_clk dss_dsi1_opt_clks[] = {
792 { .role = "sys_clk", .clk = "dss_sys_clk" },
793};
794
Benoit Coussond63bd742011-01-27 11:17:03 +0000795static struct omap_hwmod omap44xx_dss_dsi1_hwmod = {
796 .name = "dss_dsi1",
797 .class = &omap44xx_dsi_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600798 .clkdm_name = "l3_dss_clkdm",
Benoit Coussond63bd742011-01-27 11:17:03 +0000799 .mpu_irqs = omap44xx_dss_dsi1_irqs,
Benoit Coussond63bd742011-01-27 11:17:03 +0000800 .sdma_reqs = omap44xx_dss_dsi1_sdma_reqs,
Tomi Valkeinenda7cdfa2011-07-09 20:39:45 -0600801 .main_clk = "dss_dss_clk",
Benoit Coussond63bd742011-01-27 11:17:03 +0000802 .prcm = {
803 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600804 .clkctrl_offs = OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600805 .context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET,
Benoit Coussond63bd742011-01-27 11:17:03 +0000806 },
807 },
Tomi Valkeinen3a23aaf2011-07-09 20:39:44 -0600808 .opt_clks = dss_dsi1_opt_clks,
809 .opt_clks_cnt = ARRAY_SIZE(dss_dsi1_opt_clks),
Benoit Coussond63bd742011-01-27 11:17:03 +0000810};
811
812/* dss_dsi2 */
Benoit Coussond63bd742011-01-27 11:17:03 +0000813static struct omap_hwmod_irq_info omap44xx_dss_dsi2_irqs[] = {
814 { .irq = 84 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -0600815 { .irq = -1 }
Benoit Coussond63bd742011-01-27 11:17:03 +0000816};
817
818static struct omap_hwmod_dma_info omap44xx_dss_dsi2_sdma_reqs[] = {
819 { .dma_req = 83 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -0600820 { .dma_req = -1 }
Benoit Coussond63bd742011-01-27 11:17:03 +0000821};
822
Tomi Valkeinen3a23aaf2011-07-09 20:39:44 -0600823static struct omap_hwmod_opt_clk dss_dsi2_opt_clks[] = {
824 { .role = "sys_clk", .clk = "dss_sys_clk" },
825};
826
Benoit Coussond63bd742011-01-27 11:17:03 +0000827static struct omap_hwmod omap44xx_dss_dsi2_hwmod = {
828 .name = "dss_dsi2",
829 .class = &omap44xx_dsi_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600830 .clkdm_name = "l3_dss_clkdm",
Benoit Coussond63bd742011-01-27 11:17:03 +0000831 .mpu_irqs = omap44xx_dss_dsi2_irqs,
Benoit Coussond63bd742011-01-27 11:17:03 +0000832 .sdma_reqs = omap44xx_dss_dsi2_sdma_reqs,
Tomi Valkeinenda7cdfa2011-07-09 20:39:45 -0600833 .main_clk = "dss_dss_clk",
Benoit Coussond63bd742011-01-27 11:17:03 +0000834 .prcm = {
835 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600836 .clkctrl_offs = OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600837 .context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET,
Benoit Coussond63bd742011-01-27 11:17:03 +0000838 },
839 },
Tomi Valkeinen3a23aaf2011-07-09 20:39:44 -0600840 .opt_clks = dss_dsi2_opt_clks,
841 .opt_clks_cnt = ARRAY_SIZE(dss_dsi2_opt_clks),
Benoit Coussond63bd742011-01-27 11:17:03 +0000842};
843
844/*
845 * 'hdmi' class
846 * hdmi controller
847 */
848
849static struct omap_hwmod_class_sysconfig omap44xx_hdmi_sysc = {
850 .rev_offs = 0x0000,
851 .sysc_offs = 0x0010,
852 .sysc_flags = (SYSC_HAS_RESET_STATUS | SYSC_HAS_SIDLEMODE |
853 SYSC_HAS_SOFTRESET),
854 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
855 SIDLE_SMART_WKUP),
856 .sysc_fields = &omap_hwmod_sysc_type2,
857};
858
859static struct omap_hwmod_class omap44xx_hdmi_hwmod_class = {
860 .name = "hdmi",
861 .sysc = &omap44xx_hdmi_sysc,
862};
863
864/* dss_hdmi */
Benoit Coussond63bd742011-01-27 11:17:03 +0000865static struct omap_hwmod_irq_info omap44xx_dss_hdmi_irqs[] = {
866 { .irq = 101 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -0600867 { .irq = -1 }
Benoit Coussond63bd742011-01-27 11:17:03 +0000868};
869
870static struct omap_hwmod_dma_info omap44xx_dss_hdmi_sdma_reqs[] = {
871 { .dma_req = 75 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -0600872 { .dma_req = -1 }
Benoit Coussond63bd742011-01-27 11:17:03 +0000873};
874
Tomi Valkeinen3a23aaf2011-07-09 20:39:44 -0600875static struct omap_hwmod_opt_clk dss_hdmi_opt_clks[] = {
876 { .role = "sys_clk", .clk = "dss_sys_clk" },
877};
878
Benoit Coussond63bd742011-01-27 11:17:03 +0000879static struct omap_hwmod omap44xx_dss_hdmi_hwmod = {
880 .name = "dss_hdmi",
881 .class = &omap44xx_hdmi_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600882 .clkdm_name = "l3_dss_clkdm",
Ricardo Neridc57aef2012-06-21 10:08:53 +0200883 /*
884 * HDMI audio requires to use no-idle mode. Hence,
885 * set idle mode by software.
886 */
887 .flags = HWMOD_SWSUP_SIDLE,
Benoit Coussond63bd742011-01-27 11:17:03 +0000888 .mpu_irqs = omap44xx_dss_hdmi_irqs,
Benoit Coussond63bd742011-01-27 11:17:03 +0000889 .sdma_reqs = omap44xx_dss_hdmi_sdma_reqs,
Tomi Valkeinen4d0698d2011-11-08 03:16:12 -0700890 .main_clk = "dss_48mhz_clk",
Benoit Coussond63bd742011-01-27 11:17:03 +0000891 .prcm = {
892 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600893 .clkctrl_offs = OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600894 .context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET,
Benoit Coussond63bd742011-01-27 11:17:03 +0000895 },
896 },
Tomi Valkeinen3a23aaf2011-07-09 20:39:44 -0600897 .opt_clks = dss_hdmi_opt_clks,
898 .opt_clks_cnt = ARRAY_SIZE(dss_hdmi_opt_clks),
Benoit Coussond63bd742011-01-27 11:17:03 +0000899};
900
901/*
902 * 'rfbi' class
903 * remote frame buffer interface
904 */
905
906static struct omap_hwmod_class_sysconfig omap44xx_rfbi_sysc = {
907 .rev_offs = 0x0000,
908 .sysc_offs = 0x0010,
909 .syss_offs = 0x0014,
910 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_SIDLEMODE |
911 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
912 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
913 .sysc_fields = &omap_hwmod_sysc_type1,
914};
915
916static struct omap_hwmod_class omap44xx_rfbi_hwmod_class = {
917 .name = "rfbi",
918 .sysc = &omap44xx_rfbi_sysc,
919};
920
921/* dss_rfbi */
Benoit Coussond63bd742011-01-27 11:17:03 +0000922static struct omap_hwmod_dma_info omap44xx_dss_rfbi_sdma_reqs[] = {
923 { .dma_req = 13 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -0600924 { .dma_req = -1 }
Benoit Coussond63bd742011-01-27 11:17:03 +0000925};
926
Tomi Valkeinen3a23aaf2011-07-09 20:39:44 -0600927static struct omap_hwmod_opt_clk dss_rfbi_opt_clks[] = {
928 { .role = "ick", .clk = "dss_fck" },
929};
930
Benoit Coussond63bd742011-01-27 11:17:03 +0000931static struct omap_hwmod omap44xx_dss_rfbi_hwmod = {
932 .name = "dss_rfbi",
933 .class = &omap44xx_rfbi_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600934 .clkdm_name = "l3_dss_clkdm",
Benoit Coussond63bd742011-01-27 11:17:03 +0000935 .sdma_reqs = omap44xx_dss_rfbi_sdma_reqs,
Tomi Valkeinenda7cdfa2011-07-09 20:39:45 -0600936 .main_clk = "dss_dss_clk",
Benoit Coussond63bd742011-01-27 11:17:03 +0000937 .prcm = {
938 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600939 .clkctrl_offs = OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600940 .context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET,
Benoit Coussond63bd742011-01-27 11:17:03 +0000941 },
942 },
Tomi Valkeinen3a23aaf2011-07-09 20:39:44 -0600943 .opt_clks = dss_rfbi_opt_clks,
944 .opt_clks_cnt = ARRAY_SIZE(dss_rfbi_opt_clks),
Benoit Coussond63bd742011-01-27 11:17:03 +0000945};
946
947/*
948 * 'venc' class
949 * video encoder
950 */
951
952static struct omap_hwmod_class omap44xx_venc_hwmod_class = {
953 .name = "venc",
954};
955
956/* dss_venc */
Benoit Coussond63bd742011-01-27 11:17:03 +0000957static struct omap_hwmod omap44xx_dss_venc_hwmod = {
958 .name = "dss_venc",
959 .class = &omap44xx_venc_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600960 .clkdm_name = "l3_dss_clkdm",
Tomi Valkeinen4d0698d2011-11-08 03:16:12 -0700961 .main_clk = "dss_tv_clk",
Benoit Coussond63bd742011-01-27 11:17:03 +0000962 .prcm = {
963 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600964 .clkctrl_offs = OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600965 .context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET,
Benoit Coussond63bd742011-01-27 11:17:03 +0000966 },
967 },
Benoit Coussond63bd742011-01-27 11:17:03 +0000968};
969
970/*
Paul Walmsley42b9e382012-04-19 13:33:54 -0600971 * 'elm' class
972 * bch error location module
973 */
974
975static struct omap_hwmod_class_sysconfig omap44xx_elm_sysc = {
976 .rev_offs = 0x0000,
977 .sysc_offs = 0x0010,
978 .syss_offs = 0x0014,
979 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
980 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
981 SYSS_HAS_RESET_STATUS),
982 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
983 .sysc_fields = &omap_hwmod_sysc_type1,
984};
985
986static struct omap_hwmod_class omap44xx_elm_hwmod_class = {
987 .name = "elm",
988 .sysc = &omap44xx_elm_sysc,
989};
990
991/* elm */
992static struct omap_hwmod_irq_info omap44xx_elm_irqs[] = {
993 { .irq = 4 + OMAP44XX_IRQ_GIC_START },
994 { .irq = -1 }
995};
996
997static struct omap_hwmod omap44xx_elm_hwmod = {
998 .name = "elm",
999 .class = &omap44xx_elm_hwmod_class,
1000 .clkdm_name = "l4_per_clkdm",
1001 .mpu_irqs = omap44xx_elm_irqs,
1002 .prcm = {
1003 .omap4 = {
1004 .clkctrl_offs = OMAP4_CM_L4PER_ELM_CLKCTRL_OFFSET,
1005 .context_offs = OMAP4_RM_L4PER_ELM_CONTEXT_OFFSET,
1006 },
1007 },
1008};
1009
1010/*
Paul Walmsleybf30f952012-04-19 13:33:52 -06001011 * 'emif' class
1012 * external memory interface no1
1013 */
1014
1015static struct omap_hwmod_class_sysconfig omap44xx_emif_sysc = {
1016 .rev_offs = 0x0000,
1017};
1018
1019static struct omap_hwmod_class omap44xx_emif_hwmod_class = {
1020 .name = "emif",
1021 .sysc = &omap44xx_emif_sysc,
1022};
1023
1024/* emif1 */
1025static struct omap_hwmod_irq_info omap44xx_emif1_irqs[] = {
1026 { .irq = 110 + OMAP44XX_IRQ_GIC_START },
1027 { .irq = -1 }
1028};
1029
1030static struct omap_hwmod omap44xx_emif1_hwmod = {
1031 .name = "emif1",
1032 .class = &omap44xx_emif_hwmod_class,
1033 .clkdm_name = "l3_emif_clkdm",
1034 .flags = HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET,
1035 .mpu_irqs = omap44xx_emif1_irqs,
1036 .main_clk = "ddrphy_ck",
1037 .prcm = {
1038 .omap4 = {
1039 .clkctrl_offs = OMAP4_CM_MEMIF_EMIF_1_CLKCTRL_OFFSET,
1040 .context_offs = OMAP4_RM_MEMIF_EMIF_1_CONTEXT_OFFSET,
1041 .modulemode = MODULEMODE_HWCTRL,
1042 },
1043 },
1044};
1045
1046/* emif2 */
1047static struct omap_hwmod_irq_info omap44xx_emif2_irqs[] = {
1048 { .irq = 111 + OMAP44XX_IRQ_GIC_START },
1049 { .irq = -1 }
1050};
1051
1052static struct omap_hwmod omap44xx_emif2_hwmod = {
1053 .name = "emif2",
1054 .class = &omap44xx_emif_hwmod_class,
1055 .clkdm_name = "l3_emif_clkdm",
1056 .flags = HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET,
1057 .mpu_irqs = omap44xx_emif2_irqs,
1058 .main_clk = "ddrphy_ck",
1059 .prcm = {
1060 .omap4 = {
1061 .clkctrl_offs = OMAP4_CM_MEMIF_EMIF_2_CLKCTRL_OFFSET,
1062 .context_offs = OMAP4_RM_MEMIF_EMIF_2_CONTEXT_OFFSET,
1063 .modulemode = MODULEMODE_HWCTRL,
1064 },
1065 },
1066};
1067
1068/*
Ming Leib050f682012-04-19 13:33:50 -06001069 * 'fdif' class
1070 * face detection hw accelerator module
1071 */
1072
1073static struct omap_hwmod_class_sysconfig omap44xx_fdif_sysc = {
1074 .rev_offs = 0x0000,
1075 .sysc_offs = 0x0010,
1076 /*
1077 * FDIF needs 100 OCP clk cycles delay after a softreset before
1078 * accessing sysconfig again.
1079 * The lowest frequency at the moment for L3 bus is 100 MHz, so
1080 * 1usec delay is needed. Add an x2 margin to be safe (2 usecs).
1081 *
1082 * TODO: Indicate errata when available.
1083 */
1084 .srst_udelay = 2,
1085 .sysc_flags = (SYSC_HAS_MIDLEMODE | SYSC_HAS_RESET_STATUS |
1086 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
1087 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1088 MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
1089 .sysc_fields = &omap_hwmod_sysc_type2,
1090};
1091
1092static struct omap_hwmod_class omap44xx_fdif_hwmod_class = {
1093 .name = "fdif",
1094 .sysc = &omap44xx_fdif_sysc,
1095};
1096
1097/* fdif */
1098static struct omap_hwmod_irq_info omap44xx_fdif_irqs[] = {
1099 { .irq = 69 + OMAP44XX_IRQ_GIC_START },
1100 { .irq = -1 }
1101};
1102
1103static struct omap_hwmod omap44xx_fdif_hwmod = {
1104 .name = "fdif",
1105 .class = &omap44xx_fdif_hwmod_class,
1106 .clkdm_name = "iss_clkdm",
1107 .mpu_irqs = omap44xx_fdif_irqs,
1108 .main_clk = "fdif_fck",
1109 .prcm = {
1110 .omap4 = {
1111 .clkctrl_offs = OMAP4_CM_CAM_FDIF_CLKCTRL_OFFSET,
1112 .context_offs = OMAP4_RM_CAM_FDIF_CONTEXT_OFFSET,
1113 .modulemode = MODULEMODE_SWCTRL,
1114 },
1115 },
1116};
1117
1118/*
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001119 * 'gpio' class
1120 * general purpose io module
1121 */
1122
1123static struct omap_hwmod_class_sysconfig omap44xx_gpio_sysc = {
1124 .rev_offs = 0x0000,
1125 .sysc_offs = 0x0010,
1126 .syss_offs = 0x0114,
Benoit Cousson0cfe8752010-12-21 21:08:33 -07001127 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_ENAWAKEUP |
1128 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
1129 SYSS_HAS_RESET_STATUS),
Benoit Cousson7cffa6b2010-12-21 21:31:28 -07001130 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1131 SIDLE_SMART_WKUP),
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001132 .sysc_fields = &omap_hwmod_sysc_type1,
1133};
1134
1135static struct omap_hwmod_class omap44xx_gpio_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +00001136 .name = "gpio",
1137 .sysc = &omap44xx_gpio_sysc,
1138 .rev = 2,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001139};
1140
1141/* gpio dev_attr */
1142static struct omap_gpio_dev_attr gpio_dev_attr = {
Benoit Coussonfe134712010-12-23 22:30:32 +00001143 .bank_width = 32,
1144 .dbck_flag = true,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001145};
1146
1147/* gpio1 */
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001148static struct omap_hwmod_irq_info omap44xx_gpio1_irqs[] = {
1149 { .irq = 29 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001150 { .irq = -1 }
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001151};
1152
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001153static struct omap_hwmod_opt_clk gpio1_opt_clks[] = {
Benoit Coussonb399bca2010-12-21 21:08:34 -07001154 { .role = "dbclk", .clk = "gpio1_dbclk" },
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001155};
1156
1157static struct omap_hwmod omap44xx_gpio1_hwmod = {
1158 .name = "gpio1",
1159 .class = &omap44xx_gpio_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001160 .clkdm_name = "l4_wkup_clkdm",
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001161 .mpu_irqs = omap44xx_gpio1_irqs,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001162 .main_clk = "gpio1_ick",
1163 .prcm = {
1164 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001165 .clkctrl_offs = OMAP4_CM_WKUP_GPIO1_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001166 .context_offs = OMAP4_RM_WKUP_GPIO1_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001167 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001168 },
1169 },
1170 .opt_clks = gpio1_opt_clks,
1171 .opt_clks_cnt = ARRAY_SIZE(gpio1_opt_clks),
1172 .dev_attr = &gpio_dev_attr,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001173};
1174
1175/* gpio2 */
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001176static struct omap_hwmod_irq_info omap44xx_gpio2_irqs[] = {
1177 { .irq = 30 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001178 { .irq = -1 }
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001179};
1180
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001181static struct omap_hwmod_opt_clk gpio2_opt_clks[] = {
Benoit Coussonb399bca2010-12-21 21:08:34 -07001182 { .role = "dbclk", .clk = "gpio2_dbclk" },
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001183};
1184
1185static struct omap_hwmod omap44xx_gpio2_hwmod = {
1186 .name = "gpio2",
1187 .class = &omap44xx_gpio_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001188 .clkdm_name = "l4_per_clkdm",
Benoit Coussonb399bca2010-12-21 21:08:34 -07001189 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001190 .mpu_irqs = omap44xx_gpio2_irqs,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001191 .main_clk = "gpio2_ick",
1192 .prcm = {
1193 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001194 .clkctrl_offs = OMAP4_CM_L4PER_GPIO2_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001195 .context_offs = OMAP4_RM_L4PER_GPIO2_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001196 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001197 },
1198 },
1199 .opt_clks = gpio2_opt_clks,
1200 .opt_clks_cnt = ARRAY_SIZE(gpio2_opt_clks),
1201 .dev_attr = &gpio_dev_attr,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001202};
1203
1204/* gpio3 */
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001205static struct omap_hwmod_irq_info omap44xx_gpio3_irqs[] = {
1206 { .irq = 31 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001207 { .irq = -1 }
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001208};
1209
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001210static struct omap_hwmod_opt_clk gpio3_opt_clks[] = {
Benoit Coussonb399bca2010-12-21 21:08:34 -07001211 { .role = "dbclk", .clk = "gpio3_dbclk" },
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001212};
1213
1214static struct omap_hwmod omap44xx_gpio3_hwmod = {
1215 .name = "gpio3",
1216 .class = &omap44xx_gpio_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001217 .clkdm_name = "l4_per_clkdm",
Benoit Coussonb399bca2010-12-21 21:08:34 -07001218 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001219 .mpu_irqs = omap44xx_gpio3_irqs,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001220 .main_clk = "gpio3_ick",
1221 .prcm = {
1222 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001223 .clkctrl_offs = OMAP4_CM_L4PER_GPIO3_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001224 .context_offs = OMAP4_RM_L4PER_GPIO3_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001225 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001226 },
1227 },
1228 .opt_clks = gpio3_opt_clks,
1229 .opt_clks_cnt = ARRAY_SIZE(gpio3_opt_clks),
1230 .dev_attr = &gpio_dev_attr,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001231};
1232
1233/* gpio4 */
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001234static struct omap_hwmod_irq_info omap44xx_gpio4_irqs[] = {
1235 { .irq = 32 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001236 { .irq = -1 }
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001237};
1238
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001239static struct omap_hwmod_opt_clk gpio4_opt_clks[] = {
Benoit Coussonb399bca2010-12-21 21:08:34 -07001240 { .role = "dbclk", .clk = "gpio4_dbclk" },
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001241};
1242
1243static struct omap_hwmod omap44xx_gpio4_hwmod = {
1244 .name = "gpio4",
1245 .class = &omap44xx_gpio_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001246 .clkdm_name = "l4_per_clkdm",
Benoit Coussonb399bca2010-12-21 21:08:34 -07001247 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001248 .mpu_irqs = omap44xx_gpio4_irqs,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001249 .main_clk = "gpio4_ick",
1250 .prcm = {
1251 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001252 .clkctrl_offs = OMAP4_CM_L4PER_GPIO4_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001253 .context_offs = OMAP4_RM_L4PER_GPIO4_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001254 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001255 },
1256 },
1257 .opt_clks = gpio4_opt_clks,
1258 .opt_clks_cnt = ARRAY_SIZE(gpio4_opt_clks),
1259 .dev_attr = &gpio_dev_attr,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001260};
1261
1262/* gpio5 */
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001263static struct omap_hwmod_irq_info omap44xx_gpio5_irqs[] = {
1264 { .irq = 33 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001265 { .irq = -1 }
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001266};
1267
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001268static struct omap_hwmod_opt_clk gpio5_opt_clks[] = {
Benoit Coussonb399bca2010-12-21 21:08:34 -07001269 { .role = "dbclk", .clk = "gpio5_dbclk" },
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001270};
1271
1272static struct omap_hwmod omap44xx_gpio5_hwmod = {
1273 .name = "gpio5",
1274 .class = &omap44xx_gpio_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001275 .clkdm_name = "l4_per_clkdm",
Benoit Coussonb399bca2010-12-21 21:08:34 -07001276 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001277 .mpu_irqs = omap44xx_gpio5_irqs,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001278 .main_clk = "gpio5_ick",
1279 .prcm = {
1280 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001281 .clkctrl_offs = OMAP4_CM_L4PER_GPIO5_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001282 .context_offs = OMAP4_RM_L4PER_GPIO5_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001283 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001284 },
1285 },
1286 .opt_clks = gpio5_opt_clks,
1287 .opt_clks_cnt = ARRAY_SIZE(gpio5_opt_clks),
1288 .dev_attr = &gpio_dev_attr,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001289};
1290
1291/* gpio6 */
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001292static struct omap_hwmod_irq_info omap44xx_gpio6_irqs[] = {
1293 { .irq = 34 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001294 { .irq = -1 }
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001295};
1296
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001297static struct omap_hwmod_opt_clk gpio6_opt_clks[] = {
Benoit Coussonb399bca2010-12-21 21:08:34 -07001298 { .role = "dbclk", .clk = "gpio6_dbclk" },
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001299};
1300
1301static struct omap_hwmod omap44xx_gpio6_hwmod = {
1302 .name = "gpio6",
1303 .class = &omap44xx_gpio_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001304 .clkdm_name = "l4_per_clkdm",
Benoit Coussonb399bca2010-12-21 21:08:34 -07001305 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001306 .mpu_irqs = omap44xx_gpio6_irqs,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001307 .main_clk = "gpio6_ick",
1308 .prcm = {
1309 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001310 .clkctrl_offs = OMAP4_CM_L4PER_GPIO6_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001311 .context_offs = OMAP4_RM_L4PER_GPIO6_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001312 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001313 },
1314 },
1315 .opt_clks = gpio6_opt_clks,
1316 .opt_clks_cnt = ARRAY_SIZE(gpio6_opt_clks),
1317 .dev_attr = &gpio_dev_attr,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001318};
1319
1320/*
Benoît Coussoneb42b5d2012-04-19 13:33:51 -06001321 * 'gpmc' class
1322 * general purpose memory controller
1323 */
1324
1325static struct omap_hwmod_class_sysconfig omap44xx_gpmc_sysc = {
1326 .rev_offs = 0x0000,
1327 .sysc_offs = 0x0010,
1328 .syss_offs = 0x0014,
1329 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_SIDLEMODE |
1330 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
1331 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
1332 .sysc_fields = &omap_hwmod_sysc_type1,
1333};
1334
1335static struct omap_hwmod_class omap44xx_gpmc_hwmod_class = {
1336 .name = "gpmc",
1337 .sysc = &omap44xx_gpmc_sysc,
1338};
1339
1340/* gpmc */
1341static struct omap_hwmod_irq_info omap44xx_gpmc_irqs[] = {
1342 { .irq = 20 + OMAP44XX_IRQ_GIC_START },
1343 { .irq = -1 }
1344};
1345
1346static struct omap_hwmod_dma_info omap44xx_gpmc_sdma_reqs[] = {
1347 { .dma_req = 3 + OMAP44XX_DMA_REQ_START },
1348 { .dma_req = -1 }
1349};
1350
1351static struct omap_hwmod omap44xx_gpmc_hwmod = {
1352 .name = "gpmc",
1353 .class = &omap44xx_gpmc_hwmod_class,
1354 .clkdm_name = "l3_2_clkdm",
Afzal Mohammed49484a62012-09-23 17:28:24 -06001355 /*
1356 * XXX HWMOD_INIT_NO_RESET should not be needed for this IP
1357 * block. It is not being added due to any known bugs with
1358 * resetting the GPMC IP block, but rather because any timings
1359 * set by the bootloader are not being correctly programmed by
1360 * the kernel from the board file or DT data.
1361 * HWMOD_INIT_NO_RESET should be removed ASAP.
1362 */
Benoît Coussoneb42b5d2012-04-19 13:33:51 -06001363 .flags = HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET,
1364 .mpu_irqs = omap44xx_gpmc_irqs,
1365 .sdma_reqs = omap44xx_gpmc_sdma_reqs,
1366 .prcm = {
1367 .omap4 = {
1368 .clkctrl_offs = OMAP4_CM_L3_2_GPMC_CLKCTRL_OFFSET,
1369 .context_offs = OMAP4_RM_L3_2_GPMC_CONTEXT_OFFSET,
1370 .modulemode = MODULEMODE_HWCTRL,
1371 },
1372 },
1373};
1374
1375/*
Paul Walmsley9def3902012-04-19 13:33:53 -06001376 * 'gpu' class
1377 * 2d/3d graphics accelerator
1378 */
1379
1380static struct omap_hwmod_class_sysconfig omap44xx_gpu_sysc = {
1381 .rev_offs = 0x1fc00,
1382 .sysc_offs = 0x1fc10,
1383 .sysc_flags = (SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE),
1384 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1385 SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
1386 MSTANDBY_SMART | MSTANDBY_SMART_WKUP),
1387 .sysc_fields = &omap_hwmod_sysc_type2,
1388};
1389
1390static struct omap_hwmod_class omap44xx_gpu_hwmod_class = {
1391 .name = "gpu",
1392 .sysc = &omap44xx_gpu_sysc,
1393};
1394
1395/* gpu */
1396static struct omap_hwmod_irq_info omap44xx_gpu_irqs[] = {
1397 { .irq = 21 + OMAP44XX_IRQ_GIC_START },
1398 { .irq = -1 }
1399};
1400
1401static struct omap_hwmod omap44xx_gpu_hwmod = {
1402 .name = "gpu",
1403 .class = &omap44xx_gpu_hwmod_class,
1404 .clkdm_name = "l3_gfx_clkdm",
1405 .mpu_irqs = omap44xx_gpu_irqs,
1406 .main_clk = "gpu_fck",
1407 .prcm = {
1408 .omap4 = {
1409 .clkctrl_offs = OMAP4_CM_GFX_GFX_CLKCTRL_OFFSET,
1410 .context_offs = OMAP4_RM_GFX_GFX_CONTEXT_OFFSET,
1411 .modulemode = MODULEMODE_SWCTRL,
1412 },
1413 },
1414};
1415
1416/*
Paul Walmsleya091c082012-04-19 13:33:50 -06001417 * 'hdq1w' class
1418 * hdq / 1-wire serial interface controller
1419 */
1420
1421static struct omap_hwmod_class_sysconfig omap44xx_hdq1w_sysc = {
1422 .rev_offs = 0x0000,
1423 .sysc_offs = 0x0014,
1424 .syss_offs = 0x0018,
1425 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_SOFTRESET |
1426 SYSS_HAS_RESET_STATUS),
1427 .sysc_fields = &omap_hwmod_sysc_type1,
1428};
1429
1430static struct omap_hwmod_class omap44xx_hdq1w_hwmod_class = {
1431 .name = "hdq1w",
1432 .sysc = &omap44xx_hdq1w_sysc,
1433};
1434
1435/* hdq1w */
1436static struct omap_hwmod_irq_info omap44xx_hdq1w_irqs[] = {
1437 { .irq = 58 + OMAP44XX_IRQ_GIC_START },
1438 { .irq = -1 }
1439};
1440
1441static struct omap_hwmod omap44xx_hdq1w_hwmod = {
1442 .name = "hdq1w",
1443 .class = &omap44xx_hdq1w_hwmod_class,
1444 .clkdm_name = "l4_per_clkdm",
1445 .flags = HWMOD_INIT_NO_RESET, /* XXX temporary */
1446 .mpu_irqs = omap44xx_hdq1w_irqs,
1447 .main_clk = "hdq1w_fck",
1448 .prcm = {
1449 .omap4 = {
1450 .clkctrl_offs = OMAP4_CM_L4PER_HDQ1W_CLKCTRL_OFFSET,
1451 .context_offs = OMAP4_RM_L4PER_HDQ1W_CONTEXT_OFFSET,
1452 .modulemode = MODULEMODE_SWCTRL,
1453 },
1454 },
1455};
1456
1457/*
Benoit Cousson407a6882011-02-15 22:39:48 +01001458 * 'hsi' class
1459 * mipi high-speed synchronous serial interface (multichannel and full-duplex
1460 * serial if)
1461 */
1462
1463static struct omap_hwmod_class_sysconfig omap44xx_hsi_sysc = {
1464 .rev_offs = 0x0000,
1465 .sysc_offs = 0x0010,
1466 .syss_offs = 0x0014,
1467 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_EMUFREE |
1468 SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE |
1469 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
1470 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1471 SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
Benoit Coussonc614ebf2011-07-01 22:54:01 +02001472 MSTANDBY_SMART | MSTANDBY_SMART_WKUP),
Benoit Cousson407a6882011-02-15 22:39:48 +01001473 .sysc_fields = &omap_hwmod_sysc_type1,
1474};
1475
1476static struct omap_hwmod_class omap44xx_hsi_hwmod_class = {
1477 .name = "hsi",
1478 .sysc = &omap44xx_hsi_sysc,
1479};
1480
1481/* hsi */
1482static struct omap_hwmod_irq_info omap44xx_hsi_irqs[] = {
1483 { .name = "mpu_p1", .irq = 67 + OMAP44XX_IRQ_GIC_START },
1484 { .name = "mpu_p2", .irq = 68 + OMAP44XX_IRQ_GIC_START },
1485 { .name = "mpu_dma", .irq = 71 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001486 { .irq = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01001487};
1488
Benoit Cousson407a6882011-02-15 22:39:48 +01001489static struct omap_hwmod omap44xx_hsi_hwmod = {
1490 .name = "hsi",
1491 .class = &omap44xx_hsi_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001492 .clkdm_name = "l3_init_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +01001493 .mpu_irqs = omap44xx_hsi_irqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01001494 .main_clk = "hsi_fck",
Benoit Cousson00fe6102011-07-09 19:14:28 -06001495 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01001496 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001497 .clkctrl_offs = OMAP4_CM_L3INIT_HSI_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001498 .context_offs = OMAP4_RM_L3INIT_HSI_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001499 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01001500 },
1501 },
Benoit Cousson407a6882011-02-15 22:39:48 +01001502};
1503
1504/*
Benoit Coussonf7764712010-09-21 19:37:14 +05301505 * 'i2c' class
1506 * multimaster high-speed i2c controller
1507 */
1508
1509static struct omap_hwmod_class_sysconfig omap44xx_i2c_sysc = {
1510 .sysc_offs = 0x0010,
1511 .syss_offs = 0x0090,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001512 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
1513 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE |
Benoit Cousson0cfe8752010-12-21 21:08:33 -07001514 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
Benoit Cousson7cffa6b2010-12-21 21:31:28 -07001515 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1516 SIDLE_SMART_WKUP),
Shubhrajyoti D3e47dc62011-12-13 16:25:54 +05301517 .clockact = CLOCKACT_TEST_ICLK,
Benoit Coussonf7764712010-09-21 19:37:14 +05301518 .sysc_fields = &omap_hwmod_sysc_type1,
1519};
1520
1521static struct omap_hwmod_class omap44xx_i2c_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +00001522 .name = "i2c",
1523 .sysc = &omap44xx_i2c_sysc,
Andy Greendb791a72011-07-10 05:27:15 -06001524 .rev = OMAP_I2C_IP_VERSION_2,
Avinash.H.M6d3c55f2011-07-10 05:27:16 -06001525 .reset = &omap_i2c_reset,
Benoit Coussonf7764712010-09-21 19:37:14 +05301526};
1527
Andy Green4d4441a2011-07-10 05:27:16 -06001528static struct omap_i2c_dev_attr i2c_dev_attr = {
Shubhrajyoti Daa8f6ce2012-05-08 11:34:29 -06001529 .flags = OMAP_I2C_FLAG_BUS_SHIFT_NONE |
1530 OMAP_I2C_FLAG_RESET_REGS_POSTIDLE,
Andy Green4d4441a2011-07-10 05:27:16 -06001531};
1532
Benoit Coussonf7764712010-09-21 19:37:14 +05301533/* i2c1 */
Benoit Coussonf7764712010-09-21 19:37:14 +05301534static struct omap_hwmod_irq_info omap44xx_i2c1_irqs[] = {
1535 { .irq = 56 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001536 { .irq = -1 }
Benoit Coussonf7764712010-09-21 19:37:14 +05301537};
1538
1539static struct omap_hwmod_dma_info omap44xx_i2c1_sdma_reqs[] = {
1540 { .name = "tx", .dma_req = 26 + OMAP44XX_DMA_REQ_START },
1541 { .name = "rx", .dma_req = 27 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06001542 { .dma_req = -1 }
Benoit Coussonf7764712010-09-21 19:37:14 +05301543};
1544
Benoit Coussonf7764712010-09-21 19:37:14 +05301545static struct omap_hwmod omap44xx_i2c1_hwmod = {
1546 .name = "i2c1",
1547 .class = &omap44xx_i2c_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001548 .clkdm_name = "l4_per_clkdm",
Shubhrajyoti D3e47dc62011-12-13 16:25:54 +05301549 .flags = HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT,
Benoit Coussonf7764712010-09-21 19:37:14 +05301550 .mpu_irqs = omap44xx_i2c1_irqs,
Benoit Coussonf7764712010-09-21 19:37:14 +05301551 .sdma_reqs = omap44xx_i2c1_sdma_reqs,
Benoit Coussonf7764712010-09-21 19:37:14 +05301552 .main_clk = "i2c1_fck",
1553 .prcm = {
1554 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001555 .clkctrl_offs = OMAP4_CM_L4PER_I2C1_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001556 .context_offs = OMAP4_RM_L4PER_I2C1_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001557 .modulemode = MODULEMODE_SWCTRL,
Benoit Coussonf7764712010-09-21 19:37:14 +05301558 },
1559 },
Andy Green4d4441a2011-07-10 05:27:16 -06001560 .dev_attr = &i2c_dev_attr,
Benoit Coussonf7764712010-09-21 19:37:14 +05301561};
1562
1563/* i2c2 */
Benoit Coussonf7764712010-09-21 19:37:14 +05301564static struct omap_hwmod_irq_info omap44xx_i2c2_irqs[] = {
1565 { .irq = 57 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001566 { .irq = -1 }
Benoit Coussonf7764712010-09-21 19:37:14 +05301567};
1568
1569static struct omap_hwmod_dma_info omap44xx_i2c2_sdma_reqs[] = {
1570 { .name = "tx", .dma_req = 28 + OMAP44XX_DMA_REQ_START },
1571 { .name = "rx", .dma_req = 29 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06001572 { .dma_req = -1 }
Benoit Coussonf7764712010-09-21 19:37:14 +05301573};
1574
Benoit Coussonf7764712010-09-21 19:37:14 +05301575static struct omap_hwmod omap44xx_i2c2_hwmod = {
1576 .name = "i2c2",
1577 .class = &omap44xx_i2c_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001578 .clkdm_name = "l4_per_clkdm",
Shubhrajyoti D3e47dc62011-12-13 16:25:54 +05301579 .flags = HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT,
Benoit Coussonf7764712010-09-21 19:37:14 +05301580 .mpu_irqs = omap44xx_i2c2_irqs,
Benoit Coussonf7764712010-09-21 19:37:14 +05301581 .sdma_reqs = omap44xx_i2c2_sdma_reqs,
Benoit Coussonf7764712010-09-21 19:37:14 +05301582 .main_clk = "i2c2_fck",
1583 .prcm = {
1584 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001585 .clkctrl_offs = OMAP4_CM_L4PER_I2C2_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001586 .context_offs = OMAP4_RM_L4PER_I2C2_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001587 .modulemode = MODULEMODE_SWCTRL,
Benoit Coussonf7764712010-09-21 19:37:14 +05301588 },
1589 },
Andy Green4d4441a2011-07-10 05:27:16 -06001590 .dev_attr = &i2c_dev_attr,
Benoit Coussonf7764712010-09-21 19:37:14 +05301591};
1592
1593/* i2c3 */
Benoit Coussonf7764712010-09-21 19:37:14 +05301594static struct omap_hwmod_irq_info omap44xx_i2c3_irqs[] = {
1595 { .irq = 61 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001596 { .irq = -1 }
Benoit Coussonf7764712010-09-21 19:37:14 +05301597};
1598
1599static struct omap_hwmod_dma_info omap44xx_i2c3_sdma_reqs[] = {
1600 { .name = "tx", .dma_req = 24 + OMAP44XX_DMA_REQ_START },
1601 { .name = "rx", .dma_req = 25 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06001602 { .dma_req = -1 }
Benoit Coussonf7764712010-09-21 19:37:14 +05301603};
1604
Benoit Coussonf7764712010-09-21 19:37:14 +05301605static struct omap_hwmod omap44xx_i2c3_hwmod = {
1606 .name = "i2c3",
1607 .class = &omap44xx_i2c_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001608 .clkdm_name = "l4_per_clkdm",
Shubhrajyoti D3e47dc62011-12-13 16:25:54 +05301609 .flags = HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT,
Benoit Coussonf7764712010-09-21 19:37:14 +05301610 .mpu_irqs = omap44xx_i2c3_irqs,
Benoit Coussonf7764712010-09-21 19:37:14 +05301611 .sdma_reqs = omap44xx_i2c3_sdma_reqs,
Benoit Coussonf7764712010-09-21 19:37:14 +05301612 .main_clk = "i2c3_fck",
1613 .prcm = {
1614 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001615 .clkctrl_offs = OMAP4_CM_L4PER_I2C3_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001616 .context_offs = OMAP4_RM_L4PER_I2C3_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001617 .modulemode = MODULEMODE_SWCTRL,
Benoit Coussonf7764712010-09-21 19:37:14 +05301618 },
1619 },
Andy Green4d4441a2011-07-10 05:27:16 -06001620 .dev_attr = &i2c_dev_attr,
Benoit Coussonf7764712010-09-21 19:37:14 +05301621};
1622
1623/* i2c4 */
Benoit Coussonf7764712010-09-21 19:37:14 +05301624static struct omap_hwmod_irq_info omap44xx_i2c4_irqs[] = {
1625 { .irq = 62 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001626 { .irq = -1 }
Benoit Coussonf7764712010-09-21 19:37:14 +05301627};
1628
1629static struct omap_hwmod_dma_info omap44xx_i2c4_sdma_reqs[] = {
1630 { .name = "tx", .dma_req = 123 + OMAP44XX_DMA_REQ_START },
1631 { .name = "rx", .dma_req = 124 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06001632 { .dma_req = -1 }
Benoit Coussonf7764712010-09-21 19:37:14 +05301633};
1634
Benoit Coussonf7764712010-09-21 19:37:14 +05301635static struct omap_hwmod omap44xx_i2c4_hwmod = {
1636 .name = "i2c4",
1637 .class = &omap44xx_i2c_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001638 .clkdm_name = "l4_per_clkdm",
Shubhrajyoti D3e47dc62011-12-13 16:25:54 +05301639 .flags = HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT,
Benoit Coussonf7764712010-09-21 19:37:14 +05301640 .mpu_irqs = omap44xx_i2c4_irqs,
Benoit Coussonf7764712010-09-21 19:37:14 +05301641 .sdma_reqs = omap44xx_i2c4_sdma_reqs,
Benoit Coussonf7764712010-09-21 19:37:14 +05301642 .main_clk = "i2c4_fck",
1643 .prcm = {
1644 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001645 .clkctrl_offs = OMAP4_CM_L4PER_I2C4_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001646 .context_offs = OMAP4_RM_L4PER_I2C4_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001647 .modulemode = MODULEMODE_SWCTRL,
Benoit Coussonf7764712010-09-21 19:37:14 +05301648 },
1649 },
Andy Green4d4441a2011-07-10 05:27:16 -06001650 .dev_attr = &i2c_dev_attr,
Benoit Coussonf7764712010-09-21 19:37:14 +05301651};
1652
1653/*
Benoit Cousson407a6882011-02-15 22:39:48 +01001654 * 'ipu' class
1655 * imaging processor unit
1656 */
1657
1658static struct omap_hwmod_class omap44xx_ipu_hwmod_class = {
1659 .name = "ipu",
1660};
1661
1662/* ipu */
1663static struct omap_hwmod_irq_info omap44xx_ipu_irqs[] = {
1664 { .irq = 100 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001665 { .irq = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01001666};
1667
Benoit Cousson407a6882011-02-15 22:39:48 +01001668static struct omap_hwmod_rst_info omap44xx_ipu_resets[] = {
Paul Walmsleyf2f57362012-04-18 19:10:02 -06001669 { .name = "cpu0", .rst_shift = 0 },
1670 { .name = "cpu1", .rst_shift = 1 },
Benoit Cousson407a6882011-02-15 22:39:48 +01001671};
1672
Benoit Cousson407a6882011-02-15 22:39:48 +01001673static struct omap_hwmod omap44xx_ipu_hwmod = {
1674 .name = "ipu",
1675 .class = &omap44xx_ipu_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001676 .clkdm_name = "ducati_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +01001677 .mpu_irqs = omap44xx_ipu_irqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01001678 .rst_lines = omap44xx_ipu_resets,
1679 .rst_lines_cnt = ARRAY_SIZE(omap44xx_ipu_resets),
1680 .main_clk = "ipu_fck",
Benoit Cousson00fe6102011-07-09 19:14:28 -06001681 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01001682 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001683 .clkctrl_offs = OMAP4_CM_DUCATI_DUCATI_CLKCTRL_OFFSET,
Benoit Coussoneaac3292011-07-10 05:56:31 -06001684 .rstctrl_offs = OMAP4_RM_DUCATI_RSTCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001685 .context_offs = OMAP4_RM_DUCATI_DUCATI_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001686 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01001687 },
1688 },
Benoit Cousson407a6882011-02-15 22:39:48 +01001689};
1690
1691/*
1692 * 'iss' class
1693 * external images sensor pixel data processor
1694 */
1695
1696static struct omap_hwmod_class_sysconfig omap44xx_iss_sysc = {
1697 .rev_offs = 0x0000,
1698 .sysc_offs = 0x0010,
Fernando Guzman Lugod99de7f2012-04-13 05:08:03 -06001699 /*
1700 * ISS needs 100 OCP clk cycles delay after a softreset before
1701 * accessing sysconfig again.
1702 * The lowest frequency at the moment for L3 bus is 100 MHz, so
1703 * 1usec delay is needed. Add an x2 margin to be safe (2 usecs).
1704 *
1705 * TODO: Indicate errata when available.
1706 */
1707 .srst_udelay = 2,
Benoit Cousson407a6882011-02-15 22:39:48 +01001708 .sysc_flags = (SYSC_HAS_MIDLEMODE | SYSC_HAS_RESET_STATUS |
1709 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
1710 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1711 SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
Benoit Coussonc614ebf2011-07-01 22:54:01 +02001712 MSTANDBY_SMART | MSTANDBY_SMART_WKUP),
Benoit Cousson407a6882011-02-15 22:39:48 +01001713 .sysc_fields = &omap_hwmod_sysc_type2,
1714};
1715
1716static struct omap_hwmod_class omap44xx_iss_hwmod_class = {
1717 .name = "iss",
1718 .sysc = &omap44xx_iss_sysc,
1719};
1720
1721/* iss */
1722static struct omap_hwmod_irq_info omap44xx_iss_irqs[] = {
1723 { .irq = 24 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001724 { .irq = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01001725};
1726
1727static struct omap_hwmod_dma_info omap44xx_iss_sdma_reqs[] = {
1728 { .name = "1", .dma_req = 8 + OMAP44XX_DMA_REQ_START },
1729 { .name = "2", .dma_req = 9 + OMAP44XX_DMA_REQ_START },
1730 { .name = "3", .dma_req = 11 + OMAP44XX_DMA_REQ_START },
1731 { .name = "4", .dma_req = 12 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06001732 { .dma_req = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01001733};
1734
Benoit Cousson407a6882011-02-15 22:39:48 +01001735static struct omap_hwmod_opt_clk iss_opt_clks[] = {
1736 { .role = "ctrlclk", .clk = "iss_ctrlclk" },
1737};
1738
1739static struct omap_hwmod omap44xx_iss_hwmod = {
1740 .name = "iss",
1741 .class = &omap44xx_iss_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001742 .clkdm_name = "iss_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +01001743 .mpu_irqs = omap44xx_iss_irqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01001744 .sdma_reqs = omap44xx_iss_sdma_reqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01001745 .main_clk = "iss_fck",
Benoit Cousson00fe6102011-07-09 19:14:28 -06001746 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01001747 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001748 .clkctrl_offs = OMAP4_CM_CAM_ISS_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001749 .context_offs = OMAP4_RM_CAM_ISS_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001750 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01001751 },
1752 },
1753 .opt_clks = iss_opt_clks,
1754 .opt_clks_cnt = ARRAY_SIZE(iss_opt_clks),
Benoit Cousson407a6882011-02-15 22:39:48 +01001755};
1756
1757/*
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001758 * 'iva' class
1759 * multi-standard video encoder/decoder hardware accelerator
1760 */
1761
1762static struct omap_hwmod_class omap44xx_iva_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +00001763 .name = "iva",
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001764};
1765
1766/* iva */
1767static struct omap_hwmod_irq_info omap44xx_iva_irqs[] = {
1768 { .name = "sync_1", .irq = 103 + OMAP44XX_IRQ_GIC_START },
1769 { .name = "sync_0", .irq = 104 + OMAP44XX_IRQ_GIC_START },
1770 { .name = "mailbox_0", .irq = 107 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001771 { .irq = -1 }
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001772};
1773
1774static struct omap_hwmod_rst_info omap44xx_iva_resets[] = {
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001775 { .name = "seq0", .rst_shift = 0 },
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001776 { .name = "seq1", .rst_shift = 1 },
Paul Walmsleyf2f57362012-04-18 19:10:02 -06001777 { .name = "logic", .rst_shift = 2 },
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001778};
1779
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001780static struct omap_hwmod omap44xx_iva_hwmod = {
1781 .name = "iva",
1782 .class = &omap44xx_iva_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001783 .clkdm_name = "ivahd_clkdm",
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001784 .mpu_irqs = omap44xx_iva_irqs,
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001785 .rst_lines = omap44xx_iva_resets,
1786 .rst_lines_cnt = ARRAY_SIZE(omap44xx_iva_resets),
1787 .main_clk = "iva_fck",
1788 .prcm = {
1789 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001790 .clkctrl_offs = OMAP4_CM_IVAHD_IVAHD_CLKCTRL_OFFSET,
Benoit Coussoneaac3292011-07-10 05:56:31 -06001791 .rstctrl_offs = OMAP4_RM_IVAHD_RSTCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001792 .context_offs = OMAP4_RM_IVAHD_IVAHD_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001793 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001794 },
1795 },
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001796};
1797
1798/*
Benoit Cousson407a6882011-02-15 22:39:48 +01001799 * 'kbd' class
1800 * keyboard controller
1801 */
1802
1803static struct omap_hwmod_class_sysconfig omap44xx_kbd_sysc = {
1804 .rev_offs = 0x0000,
1805 .sysc_offs = 0x0010,
1806 .syss_offs = 0x0014,
1807 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
1808 SYSC_HAS_EMUFREE | SYSC_HAS_ENAWAKEUP |
1809 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
1810 SYSS_HAS_RESET_STATUS),
1811 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
1812 .sysc_fields = &omap_hwmod_sysc_type1,
1813};
1814
1815static struct omap_hwmod_class omap44xx_kbd_hwmod_class = {
1816 .name = "kbd",
1817 .sysc = &omap44xx_kbd_sysc,
1818};
1819
1820/* kbd */
Benoit Cousson407a6882011-02-15 22:39:48 +01001821static struct omap_hwmod_irq_info omap44xx_kbd_irqs[] = {
1822 { .irq = 120 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001823 { .irq = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01001824};
1825
Benoit Cousson407a6882011-02-15 22:39:48 +01001826static struct omap_hwmod omap44xx_kbd_hwmod = {
1827 .name = "kbd",
1828 .class = &omap44xx_kbd_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001829 .clkdm_name = "l4_wkup_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +01001830 .mpu_irqs = omap44xx_kbd_irqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01001831 .main_clk = "kbd_fck",
Benoit Cousson00fe6102011-07-09 19:14:28 -06001832 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01001833 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001834 .clkctrl_offs = OMAP4_CM_WKUP_KEYBOARD_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001835 .context_offs = OMAP4_RM_WKUP_KEYBOARD_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001836 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01001837 },
1838 },
Benoit Cousson407a6882011-02-15 22:39:48 +01001839};
1840
1841/*
Benoit Coussonec5df922011-02-02 19:27:21 +00001842 * 'mailbox' class
1843 * mailbox module allowing communication between the on-chip processors using a
1844 * queued mailbox-interrupt mechanism.
1845 */
1846
1847static struct omap_hwmod_class_sysconfig omap44xx_mailbox_sysc = {
1848 .rev_offs = 0x0000,
1849 .sysc_offs = 0x0010,
1850 .sysc_flags = (SYSC_HAS_RESET_STATUS | SYSC_HAS_SIDLEMODE |
1851 SYSC_HAS_SOFTRESET),
1852 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
1853 .sysc_fields = &omap_hwmod_sysc_type2,
1854};
1855
1856static struct omap_hwmod_class omap44xx_mailbox_hwmod_class = {
1857 .name = "mailbox",
1858 .sysc = &omap44xx_mailbox_sysc,
1859};
1860
1861/* mailbox */
Benoit Coussonec5df922011-02-02 19:27:21 +00001862static struct omap_hwmod_irq_info omap44xx_mailbox_irqs[] = {
1863 { .irq = 26 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001864 { .irq = -1 }
Benoit Coussonec5df922011-02-02 19:27:21 +00001865};
1866
Benoit Coussonec5df922011-02-02 19:27:21 +00001867static struct omap_hwmod omap44xx_mailbox_hwmod = {
1868 .name = "mailbox",
1869 .class = &omap44xx_mailbox_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001870 .clkdm_name = "l4_cfg_clkdm",
Benoit Coussonec5df922011-02-02 19:27:21 +00001871 .mpu_irqs = omap44xx_mailbox_irqs,
Benoit Cousson00fe6102011-07-09 19:14:28 -06001872 .prcm = {
Benoit Coussonec5df922011-02-02 19:27:21 +00001873 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001874 .clkctrl_offs = OMAP4_CM_L4CFG_MAILBOX_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001875 .context_offs = OMAP4_RM_L4CFG_MAILBOX_CONTEXT_OFFSET,
Benoit Coussonec5df922011-02-02 19:27:21 +00001876 },
1877 },
Benoit Coussonec5df922011-02-02 19:27:21 +00001878};
1879
1880/*
Benoît Cousson896d4e92012-04-19 13:33:54 -06001881 * 'mcasp' class
1882 * multi-channel audio serial port controller
1883 */
1884
1885/* The IP is not compliant to type1 / type2 scheme */
1886static struct omap_hwmod_sysc_fields omap_hwmod_sysc_type_mcasp = {
1887 .sidle_shift = 0,
1888};
1889
1890static struct omap_hwmod_class_sysconfig omap44xx_mcasp_sysc = {
1891 .sysc_offs = 0x0004,
1892 .sysc_flags = SYSC_HAS_SIDLEMODE,
1893 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1894 SIDLE_SMART_WKUP),
1895 .sysc_fields = &omap_hwmod_sysc_type_mcasp,
1896};
1897
1898static struct omap_hwmod_class omap44xx_mcasp_hwmod_class = {
1899 .name = "mcasp",
1900 .sysc = &omap44xx_mcasp_sysc,
1901};
1902
1903/* mcasp */
1904static struct omap_hwmod_irq_info omap44xx_mcasp_irqs[] = {
1905 { .name = "arevt", .irq = 108 + OMAP44XX_IRQ_GIC_START },
1906 { .name = "axevt", .irq = 109 + OMAP44XX_IRQ_GIC_START },
1907 { .irq = -1 }
1908};
1909
1910static struct omap_hwmod_dma_info omap44xx_mcasp_sdma_reqs[] = {
1911 { .name = "axevt", .dma_req = 7 + OMAP44XX_DMA_REQ_START },
1912 { .name = "arevt", .dma_req = 10 + OMAP44XX_DMA_REQ_START },
1913 { .dma_req = -1 }
1914};
1915
1916static struct omap_hwmod omap44xx_mcasp_hwmod = {
1917 .name = "mcasp",
1918 .class = &omap44xx_mcasp_hwmod_class,
1919 .clkdm_name = "abe_clkdm",
1920 .mpu_irqs = omap44xx_mcasp_irqs,
1921 .sdma_reqs = omap44xx_mcasp_sdma_reqs,
1922 .main_clk = "mcasp_fck",
1923 .prcm = {
1924 .omap4 = {
1925 .clkctrl_offs = OMAP4_CM1_ABE_MCASP_CLKCTRL_OFFSET,
1926 .context_offs = OMAP4_RM_ABE_MCASP_CONTEXT_OFFSET,
1927 .modulemode = MODULEMODE_SWCTRL,
1928 },
1929 },
1930};
1931
1932/*
Benoit Cousson4ddff492011-01-31 14:50:30 +00001933 * 'mcbsp' class
1934 * multi channel buffered serial port controller
1935 */
1936
1937static struct omap_hwmod_class_sysconfig omap44xx_mcbsp_sysc = {
1938 .sysc_offs = 0x008c,
1939 .sysc_flags = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_ENAWAKEUP |
1940 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
1941 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
1942 .sysc_fields = &omap_hwmod_sysc_type1,
1943};
1944
1945static struct omap_hwmod_class omap44xx_mcbsp_hwmod_class = {
1946 .name = "mcbsp",
1947 .sysc = &omap44xx_mcbsp_sysc,
Kishon Vijay Abraham Icb7e9de2011-02-24 15:16:50 +05301948 .rev = MCBSP_CONFIG_TYPE4,
Benoit Cousson4ddff492011-01-31 14:50:30 +00001949};
1950
1951/* mcbsp1 */
Benoit Cousson4ddff492011-01-31 14:50:30 +00001952static struct omap_hwmod_irq_info omap44xx_mcbsp1_irqs[] = {
Peter Ujfalusi437e8972012-05-08 11:34:29 -06001953 { .name = "common", .irq = 17 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001954 { .irq = -1 }
Benoit Cousson4ddff492011-01-31 14:50:30 +00001955};
1956
1957static struct omap_hwmod_dma_info omap44xx_mcbsp1_sdma_reqs[] = {
1958 { .name = "tx", .dma_req = 32 + OMAP44XX_DMA_REQ_START },
1959 { .name = "rx", .dma_req = 33 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06001960 { .dma_req = -1 }
Benoit Cousson4ddff492011-01-31 14:50:30 +00001961};
1962
Paul Walmsley503d0ea2012-04-04 09:11:48 -06001963static struct omap_hwmod_opt_clk mcbsp1_opt_clks[] = {
1964 { .role = "pad_fck", .clk = "pad_clks_ck" },
Benoit Coussond7a0b512012-07-04 06:55:29 -06001965 { .role = "prcm_fck", .clk = "mcbsp1_sync_mux_ck" },
Paul Walmsley503d0ea2012-04-04 09:11:48 -06001966};
1967
Benoit Cousson4ddff492011-01-31 14:50:30 +00001968static struct omap_hwmod omap44xx_mcbsp1_hwmod = {
1969 .name = "mcbsp1",
1970 .class = &omap44xx_mcbsp_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001971 .clkdm_name = "abe_clkdm",
Benoit Cousson4ddff492011-01-31 14:50:30 +00001972 .mpu_irqs = omap44xx_mcbsp1_irqs,
Benoit Cousson4ddff492011-01-31 14:50:30 +00001973 .sdma_reqs = omap44xx_mcbsp1_sdma_reqs,
Benoit Cousson4ddff492011-01-31 14:50:30 +00001974 .main_clk = "mcbsp1_fck",
1975 .prcm = {
1976 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001977 .clkctrl_offs = OMAP4_CM1_ABE_MCBSP1_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001978 .context_offs = OMAP4_RM_ABE_MCBSP1_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001979 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson4ddff492011-01-31 14:50:30 +00001980 },
1981 },
Paul Walmsley503d0ea2012-04-04 09:11:48 -06001982 .opt_clks = mcbsp1_opt_clks,
1983 .opt_clks_cnt = ARRAY_SIZE(mcbsp1_opt_clks),
Benoit Cousson4ddff492011-01-31 14:50:30 +00001984};
1985
1986/* mcbsp2 */
Benoit Cousson4ddff492011-01-31 14:50:30 +00001987static struct omap_hwmod_irq_info omap44xx_mcbsp2_irqs[] = {
Peter Ujfalusi437e8972012-05-08 11:34:29 -06001988 { .name = "common", .irq = 22 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001989 { .irq = -1 }
Benoit Cousson4ddff492011-01-31 14:50:30 +00001990};
1991
1992static struct omap_hwmod_dma_info omap44xx_mcbsp2_sdma_reqs[] = {
1993 { .name = "tx", .dma_req = 16 + OMAP44XX_DMA_REQ_START },
1994 { .name = "rx", .dma_req = 17 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06001995 { .dma_req = -1 }
Benoit Cousson4ddff492011-01-31 14:50:30 +00001996};
1997
Paul Walmsley503d0ea2012-04-04 09:11:48 -06001998static struct omap_hwmod_opt_clk mcbsp2_opt_clks[] = {
1999 { .role = "pad_fck", .clk = "pad_clks_ck" },
Benoit Coussond7a0b512012-07-04 06:55:29 -06002000 { .role = "prcm_fck", .clk = "mcbsp2_sync_mux_ck" },
Paul Walmsley503d0ea2012-04-04 09:11:48 -06002001};
2002
Benoit Cousson4ddff492011-01-31 14:50:30 +00002003static struct omap_hwmod omap44xx_mcbsp2_hwmod = {
2004 .name = "mcbsp2",
2005 .class = &omap44xx_mcbsp_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002006 .clkdm_name = "abe_clkdm",
Benoit Cousson4ddff492011-01-31 14:50:30 +00002007 .mpu_irqs = omap44xx_mcbsp2_irqs,
Benoit Cousson4ddff492011-01-31 14:50:30 +00002008 .sdma_reqs = omap44xx_mcbsp2_sdma_reqs,
Benoit Cousson4ddff492011-01-31 14:50:30 +00002009 .main_clk = "mcbsp2_fck",
2010 .prcm = {
2011 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002012 .clkctrl_offs = OMAP4_CM1_ABE_MCBSP2_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002013 .context_offs = OMAP4_RM_ABE_MCBSP2_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002014 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson4ddff492011-01-31 14:50:30 +00002015 },
2016 },
Paul Walmsley503d0ea2012-04-04 09:11:48 -06002017 .opt_clks = mcbsp2_opt_clks,
2018 .opt_clks_cnt = ARRAY_SIZE(mcbsp2_opt_clks),
Benoit Cousson4ddff492011-01-31 14:50:30 +00002019};
2020
2021/* mcbsp3 */
Benoit Cousson4ddff492011-01-31 14:50:30 +00002022static struct omap_hwmod_irq_info omap44xx_mcbsp3_irqs[] = {
Peter Ujfalusi437e8972012-05-08 11:34:29 -06002023 { .name = "common", .irq = 23 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002024 { .irq = -1 }
Benoit Cousson4ddff492011-01-31 14:50:30 +00002025};
2026
2027static struct omap_hwmod_dma_info omap44xx_mcbsp3_sdma_reqs[] = {
2028 { .name = "tx", .dma_req = 18 + OMAP44XX_DMA_REQ_START },
2029 { .name = "rx", .dma_req = 19 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06002030 { .dma_req = -1 }
Benoit Cousson4ddff492011-01-31 14:50:30 +00002031};
2032
Paul Walmsley503d0ea2012-04-04 09:11:48 -06002033static struct omap_hwmod_opt_clk mcbsp3_opt_clks[] = {
2034 { .role = "pad_fck", .clk = "pad_clks_ck" },
Benoit Coussond7a0b512012-07-04 06:55:29 -06002035 { .role = "prcm_fck", .clk = "mcbsp3_sync_mux_ck" },
Paul Walmsley503d0ea2012-04-04 09:11:48 -06002036};
2037
Benoit Cousson4ddff492011-01-31 14:50:30 +00002038static struct omap_hwmod omap44xx_mcbsp3_hwmod = {
2039 .name = "mcbsp3",
2040 .class = &omap44xx_mcbsp_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002041 .clkdm_name = "abe_clkdm",
Benoit Cousson4ddff492011-01-31 14:50:30 +00002042 .mpu_irqs = omap44xx_mcbsp3_irqs,
Benoit Cousson4ddff492011-01-31 14:50:30 +00002043 .sdma_reqs = omap44xx_mcbsp3_sdma_reqs,
Benoit Cousson4ddff492011-01-31 14:50:30 +00002044 .main_clk = "mcbsp3_fck",
2045 .prcm = {
2046 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002047 .clkctrl_offs = OMAP4_CM1_ABE_MCBSP3_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002048 .context_offs = OMAP4_RM_ABE_MCBSP3_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002049 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson4ddff492011-01-31 14:50:30 +00002050 },
2051 },
Paul Walmsley503d0ea2012-04-04 09:11:48 -06002052 .opt_clks = mcbsp3_opt_clks,
2053 .opt_clks_cnt = ARRAY_SIZE(mcbsp3_opt_clks),
Benoit Cousson4ddff492011-01-31 14:50:30 +00002054};
2055
2056/* mcbsp4 */
Benoit Cousson4ddff492011-01-31 14:50:30 +00002057static struct omap_hwmod_irq_info omap44xx_mcbsp4_irqs[] = {
Peter Ujfalusi437e8972012-05-08 11:34:29 -06002058 { .name = "common", .irq = 16 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002059 { .irq = -1 }
Benoit Cousson4ddff492011-01-31 14:50:30 +00002060};
2061
2062static struct omap_hwmod_dma_info omap44xx_mcbsp4_sdma_reqs[] = {
2063 { .name = "tx", .dma_req = 30 + OMAP44XX_DMA_REQ_START },
2064 { .name = "rx", .dma_req = 31 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06002065 { .dma_req = -1 }
Benoit Cousson4ddff492011-01-31 14:50:30 +00002066};
2067
Paul Walmsley503d0ea2012-04-04 09:11:48 -06002068static struct omap_hwmod_opt_clk mcbsp4_opt_clks[] = {
2069 { .role = "pad_fck", .clk = "pad_clks_ck" },
Benoit Coussond7a0b512012-07-04 06:55:29 -06002070 { .role = "prcm_fck", .clk = "mcbsp4_sync_mux_ck" },
Paul Walmsley503d0ea2012-04-04 09:11:48 -06002071};
2072
Benoit Cousson4ddff492011-01-31 14:50:30 +00002073static struct omap_hwmod omap44xx_mcbsp4_hwmod = {
2074 .name = "mcbsp4",
2075 .class = &omap44xx_mcbsp_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002076 .clkdm_name = "l4_per_clkdm",
Benoit Cousson4ddff492011-01-31 14:50:30 +00002077 .mpu_irqs = omap44xx_mcbsp4_irqs,
Benoit Cousson4ddff492011-01-31 14:50:30 +00002078 .sdma_reqs = omap44xx_mcbsp4_sdma_reqs,
Benoit Cousson4ddff492011-01-31 14:50:30 +00002079 .main_clk = "mcbsp4_fck",
2080 .prcm = {
2081 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002082 .clkctrl_offs = OMAP4_CM_L4PER_MCBSP4_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002083 .context_offs = OMAP4_RM_L4PER_MCBSP4_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002084 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson4ddff492011-01-31 14:50:30 +00002085 },
2086 },
Paul Walmsley503d0ea2012-04-04 09:11:48 -06002087 .opt_clks = mcbsp4_opt_clks,
2088 .opt_clks_cnt = ARRAY_SIZE(mcbsp4_opt_clks),
Benoit Cousson4ddff492011-01-31 14:50:30 +00002089};
2090
2091/*
Benoit Cousson407a6882011-02-15 22:39:48 +01002092 * 'mcpdm' class
2093 * multi channel pdm controller (proprietary interface with phoenix power
2094 * ic)
2095 */
2096
2097static struct omap_hwmod_class_sysconfig omap44xx_mcpdm_sysc = {
2098 .rev_offs = 0x0000,
2099 .sysc_offs = 0x0010,
2100 .sysc_flags = (SYSC_HAS_EMUFREE | SYSC_HAS_RESET_STATUS |
2101 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
2102 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
2103 SIDLE_SMART_WKUP),
2104 .sysc_fields = &omap_hwmod_sysc_type2,
2105};
2106
2107static struct omap_hwmod_class omap44xx_mcpdm_hwmod_class = {
2108 .name = "mcpdm",
2109 .sysc = &omap44xx_mcpdm_sysc,
2110};
2111
2112/* mcpdm */
Benoit Cousson407a6882011-02-15 22:39:48 +01002113static struct omap_hwmod_irq_info omap44xx_mcpdm_irqs[] = {
2114 { .irq = 112 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002115 { .irq = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01002116};
2117
2118static struct omap_hwmod_dma_info omap44xx_mcpdm_sdma_reqs[] = {
2119 { .name = "up_link", .dma_req = 64 + OMAP44XX_DMA_REQ_START },
2120 { .name = "dn_link", .dma_req = 65 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06002121 { .dma_req = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01002122};
2123
Benoit Cousson407a6882011-02-15 22:39:48 +01002124static struct omap_hwmod omap44xx_mcpdm_hwmod = {
2125 .name = "mcpdm",
2126 .class = &omap44xx_mcpdm_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002127 .clkdm_name = "abe_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +01002128 .mpu_irqs = omap44xx_mcpdm_irqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01002129 .sdma_reqs = omap44xx_mcpdm_sdma_reqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01002130 .main_clk = "mcpdm_fck",
Benoit Cousson00fe6102011-07-09 19:14:28 -06002131 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01002132 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002133 .clkctrl_offs = OMAP4_CM1_ABE_PDM_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002134 .context_offs = OMAP4_RM_ABE_PDM_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002135 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01002136 },
2137 },
Benoit Cousson407a6882011-02-15 22:39:48 +01002138};
2139
2140/*
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302141 * 'mcspi' class
2142 * multichannel serial port interface (mcspi) / master/slave synchronous serial
2143 * bus
2144 */
2145
2146static struct omap_hwmod_class_sysconfig omap44xx_mcspi_sysc = {
2147 .rev_offs = 0x0000,
2148 .sysc_offs = 0x0010,
2149 .sysc_flags = (SYSC_HAS_EMUFREE | SYSC_HAS_RESET_STATUS |
2150 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
2151 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
2152 SIDLE_SMART_WKUP),
2153 .sysc_fields = &omap_hwmod_sysc_type2,
2154};
2155
2156static struct omap_hwmod_class omap44xx_mcspi_hwmod_class = {
2157 .name = "mcspi",
2158 .sysc = &omap44xx_mcspi_sysc,
Benoit Cousson905a74d2011-02-18 14:01:06 +01002159 .rev = OMAP4_MCSPI_REV,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302160};
2161
2162/* mcspi1 */
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302163static struct omap_hwmod_irq_info omap44xx_mcspi1_irqs[] = {
2164 { .irq = 65 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002165 { .irq = -1 }
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302166};
2167
2168static struct omap_hwmod_dma_info omap44xx_mcspi1_sdma_reqs[] = {
2169 { .name = "tx0", .dma_req = 34 + OMAP44XX_DMA_REQ_START },
2170 { .name = "rx0", .dma_req = 35 + OMAP44XX_DMA_REQ_START },
2171 { .name = "tx1", .dma_req = 36 + OMAP44XX_DMA_REQ_START },
2172 { .name = "rx1", .dma_req = 37 + OMAP44XX_DMA_REQ_START },
2173 { .name = "tx2", .dma_req = 38 + OMAP44XX_DMA_REQ_START },
2174 { .name = "rx2", .dma_req = 39 + OMAP44XX_DMA_REQ_START },
2175 { .name = "tx3", .dma_req = 40 + OMAP44XX_DMA_REQ_START },
2176 { .name = "rx3", .dma_req = 41 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06002177 { .dma_req = -1 }
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302178};
2179
Benoit Cousson905a74d2011-02-18 14:01:06 +01002180/* mcspi1 dev_attr */
2181static struct omap2_mcspi_dev_attr mcspi1_dev_attr = {
2182 .num_chipselect = 4,
2183};
2184
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302185static struct omap_hwmod omap44xx_mcspi1_hwmod = {
2186 .name = "mcspi1",
2187 .class = &omap44xx_mcspi_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002188 .clkdm_name = "l4_per_clkdm",
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302189 .mpu_irqs = omap44xx_mcspi1_irqs,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302190 .sdma_reqs = omap44xx_mcspi1_sdma_reqs,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302191 .main_clk = "mcspi1_fck",
2192 .prcm = {
2193 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002194 .clkctrl_offs = OMAP4_CM_L4PER_MCSPI1_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002195 .context_offs = OMAP4_RM_L4PER_MCSPI1_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002196 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302197 },
2198 },
Benoit Cousson905a74d2011-02-18 14:01:06 +01002199 .dev_attr = &mcspi1_dev_attr,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302200};
2201
2202/* mcspi2 */
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302203static struct omap_hwmod_irq_info omap44xx_mcspi2_irqs[] = {
2204 { .irq = 66 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002205 { .irq = -1 }
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302206};
2207
2208static struct omap_hwmod_dma_info omap44xx_mcspi2_sdma_reqs[] = {
2209 { .name = "tx0", .dma_req = 42 + OMAP44XX_DMA_REQ_START },
2210 { .name = "rx0", .dma_req = 43 + OMAP44XX_DMA_REQ_START },
2211 { .name = "tx1", .dma_req = 44 + OMAP44XX_DMA_REQ_START },
2212 { .name = "rx1", .dma_req = 45 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06002213 { .dma_req = -1 }
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302214};
2215
Benoit Cousson905a74d2011-02-18 14:01:06 +01002216/* mcspi2 dev_attr */
2217static struct omap2_mcspi_dev_attr mcspi2_dev_attr = {
2218 .num_chipselect = 2,
2219};
2220
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302221static struct omap_hwmod omap44xx_mcspi2_hwmod = {
2222 .name = "mcspi2",
2223 .class = &omap44xx_mcspi_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002224 .clkdm_name = "l4_per_clkdm",
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302225 .mpu_irqs = omap44xx_mcspi2_irqs,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302226 .sdma_reqs = omap44xx_mcspi2_sdma_reqs,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302227 .main_clk = "mcspi2_fck",
2228 .prcm = {
2229 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002230 .clkctrl_offs = OMAP4_CM_L4PER_MCSPI2_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002231 .context_offs = OMAP4_RM_L4PER_MCSPI2_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002232 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302233 },
2234 },
Benoit Cousson905a74d2011-02-18 14:01:06 +01002235 .dev_attr = &mcspi2_dev_attr,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302236};
2237
2238/* mcspi3 */
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302239static struct omap_hwmod_irq_info omap44xx_mcspi3_irqs[] = {
2240 { .irq = 91 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002241 { .irq = -1 }
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302242};
2243
2244static struct omap_hwmod_dma_info omap44xx_mcspi3_sdma_reqs[] = {
2245 { .name = "tx0", .dma_req = 14 + OMAP44XX_DMA_REQ_START },
2246 { .name = "rx0", .dma_req = 15 + OMAP44XX_DMA_REQ_START },
2247 { .name = "tx1", .dma_req = 22 + OMAP44XX_DMA_REQ_START },
2248 { .name = "rx1", .dma_req = 23 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06002249 { .dma_req = -1 }
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302250};
2251
Benoit Cousson905a74d2011-02-18 14:01:06 +01002252/* mcspi3 dev_attr */
2253static struct omap2_mcspi_dev_attr mcspi3_dev_attr = {
2254 .num_chipselect = 2,
2255};
2256
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302257static struct omap_hwmod omap44xx_mcspi3_hwmod = {
2258 .name = "mcspi3",
2259 .class = &omap44xx_mcspi_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002260 .clkdm_name = "l4_per_clkdm",
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302261 .mpu_irqs = omap44xx_mcspi3_irqs,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302262 .sdma_reqs = omap44xx_mcspi3_sdma_reqs,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302263 .main_clk = "mcspi3_fck",
2264 .prcm = {
2265 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002266 .clkctrl_offs = OMAP4_CM_L4PER_MCSPI3_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002267 .context_offs = OMAP4_RM_L4PER_MCSPI3_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002268 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302269 },
2270 },
Benoit Cousson905a74d2011-02-18 14:01:06 +01002271 .dev_attr = &mcspi3_dev_attr,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302272};
2273
2274/* mcspi4 */
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302275static struct omap_hwmod_irq_info omap44xx_mcspi4_irqs[] = {
2276 { .irq = 48 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002277 { .irq = -1 }
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302278};
2279
2280static struct omap_hwmod_dma_info omap44xx_mcspi4_sdma_reqs[] = {
2281 { .name = "tx0", .dma_req = 69 + OMAP44XX_DMA_REQ_START },
2282 { .name = "rx0", .dma_req = 70 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06002283 { .dma_req = -1 }
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302284};
2285
Benoit Cousson905a74d2011-02-18 14:01:06 +01002286/* mcspi4 dev_attr */
2287static struct omap2_mcspi_dev_attr mcspi4_dev_attr = {
2288 .num_chipselect = 1,
2289};
2290
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302291static struct omap_hwmod omap44xx_mcspi4_hwmod = {
2292 .name = "mcspi4",
2293 .class = &omap44xx_mcspi_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002294 .clkdm_name = "l4_per_clkdm",
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302295 .mpu_irqs = omap44xx_mcspi4_irqs,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302296 .sdma_reqs = omap44xx_mcspi4_sdma_reqs,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302297 .main_clk = "mcspi4_fck",
2298 .prcm = {
2299 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002300 .clkctrl_offs = OMAP4_CM_L4PER_MCSPI4_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002301 .context_offs = OMAP4_RM_L4PER_MCSPI4_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002302 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302303 },
2304 },
Benoit Cousson905a74d2011-02-18 14:01:06 +01002305 .dev_attr = &mcspi4_dev_attr,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302306};
2307
2308/*
Benoit Cousson407a6882011-02-15 22:39:48 +01002309 * 'mmc' class
2310 * multimedia card high-speed/sd/sdio (mmc/sd/sdio) host controller
2311 */
2312
2313static struct omap_hwmod_class_sysconfig omap44xx_mmc_sysc = {
2314 .rev_offs = 0x0000,
2315 .sysc_offs = 0x0010,
2316 .sysc_flags = (SYSC_HAS_EMUFREE | SYSC_HAS_MIDLEMODE |
2317 SYSC_HAS_RESET_STATUS | SYSC_HAS_SIDLEMODE |
2318 SYSC_HAS_SOFTRESET),
2319 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
2320 SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
Benoit Coussonc614ebf2011-07-01 22:54:01 +02002321 MSTANDBY_SMART | MSTANDBY_SMART_WKUP),
Benoit Cousson407a6882011-02-15 22:39:48 +01002322 .sysc_fields = &omap_hwmod_sysc_type2,
2323};
2324
2325static struct omap_hwmod_class omap44xx_mmc_hwmod_class = {
2326 .name = "mmc",
2327 .sysc = &omap44xx_mmc_sysc,
2328};
2329
2330/* mmc1 */
2331static struct omap_hwmod_irq_info omap44xx_mmc1_irqs[] = {
2332 { .irq = 83 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002333 { .irq = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01002334};
2335
2336static struct omap_hwmod_dma_info omap44xx_mmc1_sdma_reqs[] = {
2337 { .name = "tx", .dma_req = 60 + OMAP44XX_DMA_REQ_START },
2338 { .name = "rx", .dma_req = 61 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06002339 { .dma_req = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01002340};
2341
Kishore Kadiyala6ab89462011-03-01 13:12:56 -08002342/* mmc1 dev_attr */
2343static struct omap_mmc_dev_attr mmc1_dev_attr = {
2344 .flags = OMAP_HSMMC_SUPPORTS_DUAL_VOLT,
2345};
2346
Benoit Cousson407a6882011-02-15 22:39:48 +01002347static struct omap_hwmod omap44xx_mmc1_hwmod = {
2348 .name = "mmc1",
2349 .class = &omap44xx_mmc_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002350 .clkdm_name = "l3_init_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +01002351 .mpu_irqs = omap44xx_mmc1_irqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01002352 .sdma_reqs = omap44xx_mmc1_sdma_reqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01002353 .main_clk = "mmc1_fck",
Benoit Cousson00fe6102011-07-09 19:14:28 -06002354 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01002355 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002356 .clkctrl_offs = OMAP4_CM_L3INIT_MMC1_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002357 .context_offs = OMAP4_RM_L3INIT_MMC1_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002358 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01002359 },
2360 },
Kishore Kadiyala6ab89462011-03-01 13:12:56 -08002361 .dev_attr = &mmc1_dev_attr,
Benoit Cousson407a6882011-02-15 22:39:48 +01002362};
2363
2364/* mmc2 */
2365static struct omap_hwmod_irq_info omap44xx_mmc2_irqs[] = {
2366 { .irq = 86 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002367 { .irq = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01002368};
2369
2370static struct omap_hwmod_dma_info omap44xx_mmc2_sdma_reqs[] = {
2371 { .name = "tx", .dma_req = 46 + OMAP44XX_DMA_REQ_START },
2372 { .name = "rx", .dma_req = 47 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06002373 { .dma_req = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01002374};
2375
Benoit Cousson407a6882011-02-15 22:39:48 +01002376static struct omap_hwmod omap44xx_mmc2_hwmod = {
2377 .name = "mmc2",
2378 .class = &omap44xx_mmc_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002379 .clkdm_name = "l3_init_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +01002380 .mpu_irqs = omap44xx_mmc2_irqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01002381 .sdma_reqs = omap44xx_mmc2_sdma_reqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01002382 .main_clk = "mmc2_fck",
Benoit Cousson00fe6102011-07-09 19:14:28 -06002383 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01002384 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002385 .clkctrl_offs = OMAP4_CM_L3INIT_MMC2_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002386 .context_offs = OMAP4_RM_L3INIT_MMC2_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002387 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01002388 },
2389 },
Benoit Cousson407a6882011-02-15 22:39:48 +01002390};
2391
2392/* mmc3 */
Benoit Cousson407a6882011-02-15 22:39:48 +01002393static struct omap_hwmod_irq_info omap44xx_mmc3_irqs[] = {
2394 { .irq = 94 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002395 { .irq = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01002396};
2397
2398static struct omap_hwmod_dma_info omap44xx_mmc3_sdma_reqs[] = {
2399 { .name = "tx", .dma_req = 76 + OMAP44XX_DMA_REQ_START },
2400 { .name = "rx", .dma_req = 77 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06002401 { .dma_req = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01002402};
2403
Benoit Cousson407a6882011-02-15 22:39:48 +01002404static struct omap_hwmod omap44xx_mmc3_hwmod = {
2405 .name = "mmc3",
2406 .class = &omap44xx_mmc_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002407 .clkdm_name = "l4_per_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +01002408 .mpu_irqs = omap44xx_mmc3_irqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01002409 .sdma_reqs = omap44xx_mmc3_sdma_reqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01002410 .main_clk = "mmc3_fck",
Benoit Cousson00fe6102011-07-09 19:14:28 -06002411 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01002412 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002413 .clkctrl_offs = OMAP4_CM_L4PER_MMCSD3_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002414 .context_offs = OMAP4_RM_L4PER_MMCSD3_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002415 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01002416 },
2417 },
Benoit Cousson407a6882011-02-15 22:39:48 +01002418};
2419
2420/* mmc4 */
Benoit Cousson407a6882011-02-15 22:39:48 +01002421static struct omap_hwmod_irq_info omap44xx_mmc4_irqs[] = {
2422 { .irq = 96 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002423 { .irq = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01002424};
2425
2426static struct omap_hwmod_dma_info omap44xx_mmc4_sdma_reqs[] = {
2427 { .name = "tx", .dma_req = 56 + OMAP44XX_DMA_REQ_START },
2428 { .name = "rx", .dma_req = 57 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06002429 { .dma_req = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01002430};
2431
Benoit Cousson407a6882011-02-15 22:39:48 +01002432static struct omap_hwmod omap44xx_mmc4_hwmod = {
2433 .name = "mmc4",
2434 .class = &omap44xx_mmc_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002435 .clkdm_name = "l4_per_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +01002436 .mpu_irqs = omap44xx_mmc4_irqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01002437 .sdma_reqs = omap44xx_mmc4_sdma_reqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01002438 .main_clk = "mmc4_fck",
Benoit Cousson00fe6102011-07-09 19:14:28 -06002439 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01002440 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002441 .clkctrl_offs = OMAP4_CM_L4PER_MMCSD4_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002442 .context_offs = OMAP4_RM_L4PER_MMCSD4_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002443 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01002444 },
2445 },
Benoit Cousson407a6882011-02-15 22:39:48 +01002446};
2447
2448/* mmc5 */
Benoit Cousson407a6882011-02-15 22:39:48 +01002449static struct omap_hwmod_irq_info omap44xx_mmc5_irqs[] = {
2450 { .irq = 59 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002451 { .irq = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01002452};
2453
2454static struct omap_hwmod_dma_info omap44xx_mmc5_sdma_reqs[] = {
2455 { .name = "tx", .dma_req = 58 + OMAP44XX_DMA_REQ_START },
2456 { .name = "rx", .dma_req = 59 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06002457 { .dma_req = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01002458};
2459
Benoit Cousson407a6882011-02-15 22:39:48 +01002460static struct omap_hwmod omap44xx_mmc5_hwmod = {
2461 .name = "mmc5",
2462 .class = &omap44xx_mmc_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002463 .clkdm_name = "l4_per_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +01002464 .mpu_irqs = omap44xx_mmc5_irqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01002465 .sdma_reqs = omap44xx_mmc5_sdma_reqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01002466 .main_clk = "mmc5_fck",
Benoit Cousson00fe6102011-07-09 19:14:28 -06002467 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01002468 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002469 .clkctrl_offs = OMAP4_CM_L4PER_MMCSD5_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002470 .context_offs = OMAP4_RM_L4PER_MMCSD5_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002471 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01002472 },
2473 },
Benoit Cousson407a6882011-02-15 22:39:48 +01002474};
2475
2476/*
Omar Ramirez Luna230844d2012-09-23 17:28:24 -06002477 * 'mmu' class
2478 * The memory management unit performs virtual to physical address translation
2479 * for its requestors.
2480 */
2481
2482static struct omap_hwmod_class_sysconfig mmu_sysc = {
2483 .rev_offs = 0x000,
2484 .sysc_offs = 0x010,
2485 .syss_offs = 0x014,
2486 .sysc_flags = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
2487 SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE),
2488 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
2489 .sysc_fields = &omap_hwmod_sysc_type1,
2490};
2491
2492static struct omap_hwmod_class omap44xx_mmu_hwmod_class = {
2493 .name = "mmu",
2494 .sysc = &mmu_sysc,
2495};
2496
2497/* mmu ipu */
2498
2499static struct omap_mmu_dev_attr mmu_ipu_dev_attr = {
2500 .da_start = 0x0,
2501 .da_end = 0xfffff000,
2502 .nr_tlb_entries = 32,
2503};
2504
2505static struct omap_hwmod omap44xx_mmu_ipu_hwmod;
2506static struct omap_hwmod_irq_info omap44xx_mmu_ipu_irqs[] = {
2507 { .irq = 100 + OMAP44XX_IRQ_GIC_START, },
2508 { .irq = -1 }
2509};
2510
2511static struct omap_hwmod_rst_info omap44xx_mmu_ipu_resets[] = {
2512 { .name = "mmu_cache", .rst_shift = 2 },
2513};
2514
2515static struct omap_hwmod_addr_space omap44xx_mmu_ipu_addrs[] = {
2516 {
2517 .pa_start = 0x55082000,
2518 .pa_end = 0x550820ff,
2519 .flags = ADDR_TYPE_RT,
2520 },
2521 { }
2522};
2523
2524/* l3_main_2 -> mmu_ipu */
2525static struct omap_hwmod_ocp_if omap44xx_l3_main_2__mmu_ipu = {
2526 .master = &omap44xx_l3_main_2_hwmod,
2527 .slave = &omap44xx_mmu_ipu_hwmod,
2528 .clk = "l3_div_ck",
2529 .addr = omap44xx_mmu_ipu_addrs,
2530 .user = OCP_USER_MPU | OCP_USER_SDMA,
2531};
2532
2533static struct omap_hwmod omap44xx_mmu_ipu_hwmod = {
2534 .name = "mmu_ipu",
2535 .class = &omap44xx_mmu_hwmod_class,
2536 .clkdm_name = "ducati_clkdm",
2537 .mpu_irqs = omap44xx_mmu_ipu_irqs,
2538 .rst_lines = omap44xx_mmu_ipu_resets,
2539 .rst_lines_cnt = ARRAY_SIZE(omap44xx_mmu_ipu_resets),
2540 .main_clk = "ducati_clk_mux_ck",
2541 .prcm = {
2542 .omap4 = {
2543 .clkctrl_offs = OMAP4_CM_DUCATI_DUCATI_CLKCTRL_OFFSET,
2544 .rstctrl_offs = OMAP4_RM_DUCATI_RSTCTRL_OFFSET,
2545 .context_offs = OMAP4_RM_DUCATI_DUCATI_CONTEXT_OFFSET,
2546 .modulemode = MODULEMODE_HWCTRL,
2547 },
2548 },
2549 .dev_attr = &mmu_ipu_dev_attr,
2550};
2551
2552/* mmu dsp */
2553
2554static struct omap_mmu_dev_attr mmu_dsp_dev_attr = {
2555 .da_start = 0x0,
2556 .da_end = 0xfffff000,
2557 .nr_tlb_entries = 32,
2558};
2559
2560static struct omap_hwmod omap44xx_mmu_dsp_hwmod;
2561static struct omap_hwmod_irq_info omap44xx_mmu_dsp_irqs[] = {
2562 { .irq = 28 + OMAP44XX_IRQ_GIC_START },
2563 { .irq = -1 }
2564};
2565
2566static struct omap_hwmod_rst_info omap44xx_mmu_dsp_resets[] = {
2567 { .name = "mmu_cache", .rst_shift = 1 },
2568};
2569
2570static struct omap_hwmod_addr_space omap44xx_mmu_dsp_addrs[] = {
2571 {
2572 .pa_start = 0x4a066000,
2573 .pa_end = 0x4a0660ff,
2574 .flags = ADDR_TYPE_RT,
2575 },
2576 { }
2577};
2578
2579/* l4_cfg -> dsp */
2580static struct omap_hwmod_ocp_if omap44xx_l4_cfg__mmu_dsp = {
2581 .master = &omap44xx_l4_cfg_hwmod,
2582 .slave = &omap44xx_mmu_dsp_hwmod,
2583 .clk = "l4_div_ck",
2584 .addr = omap44xx_mmu_dsp_addrs,
2585 .user = OCP_USER_MPU | OCP_USER_SDMA,
2586};
2587
2588static struct omap_hwmod omap44xx_mmu_dsp_hwmod = {
2589 .name = "mmu_dsp",
2590 .class = &omap44xx_mmu_hwmod_class,
2591 .clkdm_name = "tesla_clkdm",
2592 .mpu_irqs = omap44xx_mmu_dsp_irqs,
2593 .rst_lines = omap44xx_mmu_dsp_resets,
2594 .rst_lines_cnt = ARRAY_SIZE(omap44xx_mmu_dsp_resets),
2595 .main_clk = "dpll_iva_m4x2_ck",
2596 .prcm = {
2597 .omap4 = {
2598 .clkctrl_offs = OMAP4_CM_TESLA_TESLA_CLKCTRL_OFFSET,
2599 .rstctrl_offs = OMAP4_RM_TESLA_RSTCTRL_OFFSET,
2600 .context_offs = OMAP4_RM_TESLA_TESLA_CONTEXT_OFFSET,
2601 .modulemode = MODULEMODE_HWCTRL,
2602 },
2603 },
2604 .dev_attr = &mmu_dsp_dev_attr,
2605};
2606
2607/*
Benoit Cousson55d2cb02010-05-12 17:54:36 +02002608 * 'mpu' class
2609 * mpu sub-system
2610 */
2611
2612static struct omap_hwmod_class omap44xx_mpu_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +00002613 .name = "mpu",
Benoit Cousson55d2cb02010-05-12 17:54:36 +02002614};
2615
2616/* mpu */
2617static struct omap_hwmod_irq_info omap44xx_mpu_irqs[] = {
2618 { .name = "pl310", .irq = 0 + OMAP44XX_IRQ_GIC_START },
2619 { .name = "cti0", .irq = 1 + OMAP44XX_IRQ_GIC_START },
2620 { .name = "cti1", .irq = 2 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002621 { .irq = -1 }
Benoit Cousson55d2cb02010-05-12 17:54:36 +02002622};
2623
Benoit Cousson55d2cb02010-05-12 17:54:36 +02002624static struct omap_hwmod omap44xx_mpu_hwmod = {
2625 .name = "mpu",
2626 .class = &omap44xx_mpu_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002627 .clkdm_name = "mpuss_clkdm",
Benoit Cousson7ecc53732011-07-09 19:14:28 -06002628 .flags = HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET,
Benoit Cousson55d2cb02010-05-12 17:54:36 +02002629 .mpu_irqs = omap44xx_mpu_irqs,
Benoit Cousson55d2cb02010-05-12 17:54:36 +02002630 .main_clk = "dpll_mpu_m2_ck",
2631 .prcm = {
2632 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002633 .clkctrl_offs = OMAP4_CM_MPU_MPU_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002634 .context_offs = OMAP4_RM_MPU_MPU_CONTEXT_OFFSET,
Benoit Cousson55d2cb02010-05-12 17:54:36 +02002635 },
2636 },
Benoit Cousson55d2cb02010-05-12 17:54:36 +02002637};
2638
Benoit Cousson92b18d12010-09-23 20:02:41 +05302639/*
Paul Walmsleye17f18c2012-04-19 13:33:56 -06002640 * 'ocmc_ram' class
2641 * top-level core on-chip ram
2642 */
2643
2644static struct omap_hwmod_class omap44xx_ocmc_ram_hwmod_class = {
2645 .name = "ocmc_ram",
2646};
2647
2648/* ocmc_ram */
2649static struct omap_hwmod omap44xx_ocmc_ram_hwmod = {
2650 .name = "ocmc_ram",
2651 .class = &omap44xx_ocmc_ram_hwmod_class,
2652 .clkdm_name = "l3_2_clkdm",
2653 .prcm = {
2654 .omap4 = {
2655 .clkctrl_offs = OMAP4_CM_L3_2_OCMC_RAM_CLKCTRL_OFFSET,
2656 .context_offs = OMAP4_RM_L3_2_OCMC_RAM_CONTEXT_OFFSET,
2657 },
2658 },
2659};
2660
2661/*
Benoît Cousson0c668872012-04-19 13:33:55 -06002662 * 'ocp2scp' class
2663 * bridge to transform ocp interface protocol to scp (serial control port)
2664 * protocol
2665 */
2666
Benoit Cousson33c976e2012-09-23 17:28:21 -06002667static struct omap_hwmod_class_sysconfig omap44xx_ocp2scp_sysc = {
2668 .rev_offs = 0x0000,
2669 .sysc_offs = 0x0010,
2670 .syss_offs = 0x0014,
2671 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_SIDLEMODE |
2672 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
2673 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
2674 .sysc_fields = &omap_hwmod_sysc_type1,
2675};
2676
Benoît Cousson0c668872012-04-19 13:33:55 -06002677static struct omap_hwmod_class omap44xx_ocp2scp_hwmod_class = {
2678 .name = "ocp2scp",
Benoit Cousson33c976e2012-09-23 17:28:21 -06002679 .sysc = &omap44xx_ocp2scp_sysc,
Benoît Cousson0c668872012-04-19 13:33:55 -06002680};
2681
2682/* ocp2scp_usb_phy */
Benoît Cousson0c668872012-04-19 13:33:55 -06002683static struct omap_hwmod omap44xx_ocp2scp_usb_phy_hwmod = {
2684 .name = "ocp2scp_usb_phy",
2685 .class = &omap44xx_ocp2scp_hwmod_class,
2686 .clkdm_name = "l3_init_clkdm",
Kishon Vijay Abraham I1b024d22012-09-23 17:28:22 -06002687 .main_clk = "ocp2scp_usb_phy_phy_48m",
Benoît Cousson0c668872012-04-19 13:33:55 -06002688 .prcm = {
2689 .omap4 = {
2690 .clkctrl_offs = OMAP4_CM_L3INIT_USBPHYOCP2SCP_CLKCTRL_OFFSET,
2691 .context_offs = OMAP4_RM_L3INIT_USBPHYOCP2SCP_CONTEXT_OFFSET,
2692 .modulemode = MODULEMODE_HWCTRL,
2693 },
2694 },
Benoît Cousson0c668872012-04-19 13:33:55 -06002695};
2696
2697/*
Paul Walmsley794b4802012-04-19 13:33:58 -06002698 * 'prcm' class
2699 * power and reset manager (part of the prcm infrastructure) + clock manager 2
2700 * + clock manager 1 (in always on power domain) + local prm in mpu
2701 */
2702
2703static struct omap_hwmod_class omap44xx_prcm_hwmod_class = {
2704 .name = "prcm",
2705};
2706
2707/* prcm_mpu */
2708static struct omap_hwmod omap44xx_prcm_mpu_hwmod = {
2709 .name = "prcm_mpu",
2710 .class = &omap44xx_prcm_hwmod_class,
2711 .clkdm_name = "l4_wkup_clkdm",
Paul Walmsley53cce972012-09-23 17:28:22 -06002712 .flags = HWMOD_NO_IDLEST,
Tero Kristo46b3af22012-09-23 17:28:20 -06002713 .prcm = {
2714 .omap4 = {
2715 .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
2716 },
2717 },
Paul Walmsley794b4802012-04-19 13:33:58 -06002718};
2719
2720/* cm_core_aon */
2721static struct omap_hwmod omap44xx_cm_core_aon_hwmod = {
2722 .name = "cm_core_aon",
2723 .class = &omap44xx_prcm_hwmod_class,
Paul Walmsley53cce972012-09-23 17:28:22 -06002724 .flags = HWMOD_NO_IDLEST,
Tero Kristo46b3af22012-09-23 17:28:20 -06002725 .prcm = {
2726 .omap4 = {
2727 .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
2728 },
2729 },
Paul Walmsley794b4802012-04-19 13:33:58 -06002730};
2731
2732/* cm_core */
2733static struct omap_hwmod omap44xx_cm_core_hwmod = {
2734 .name = "cm_core",
2735 .class = &omap44xx_prcm_hwmod_class,
Paul Walmsley53cce972012-09-23 17:28:22 -06002736 .flags = HWMOD_NO_IDLEST,
Tero Kristo46b3af22012-09-23 17:28:20 -06002737 .prcm = {
2738 .omap4 = {
2739 .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
2740 },
2741 },
Paul Walmsley794b4802012-04-19 13:33:58 -06002742};
2743
2744/* prm */
2745static struct omap_hwmod_irq_info omap44xx_prm_irqs[] = {
2746 { .irq = 11 + OMAP44XX_IRQ_GIC_START },
2747 { .irq = -1 }
2748};
2749
2750static struct omap_hwmod_rst_info omap44xx_prm_resets[] = {
2751 { .name = "rst_global_warm_sw", .rst_shift = 0 },
2752 { .name = "rst_global_cold_sw", .rst_shift = 1 },
2753};
2754
2755static struct omap_hwmod omap44xx_prm_hwmod = {
2756 .name = "prm",
2757 .class = &omap44xx_prcm_hwmod_class,
Paul Walmsley794b4802012-04-19 13:33:58 -06002758 .mpu_irqs = omap44xx_prm_irqs,
2759 .rst_lines = omap44xx_prm_resets,
2760 .rst_lines_cnt = ARRAY_SIZE(omap44xx_prm_resets),
2761};
2762
2763/*
2764 * 'scrm' class
2765 * system clock and reset manager
2766 */
2767
2768static struct omap_hwmod_class omap44xx_scrm_hwmod_class = {
2769 .name = "scrm",
2770};
2771
2772/* scrm */
2773static struct omap_hwmod omap44xx_scrm_hwmod = {
2774 .name = "scrm",
2775 .class = &omap44xx_scrm_hwmod_class,
2776 .clkdm_name = "l4_wkup_clkdm",
Tero Kristo46b3af22012-09-23 17:28:20 -06002777 .prcm = {
2778 .omap4 = {
2779 .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
2780 },
2781 },
Paul Walmsley794b4802012-04-19 13:33:58 -06002782};
2783
2784/*
Paul Walmsley42b9e382012-04-19 13:33:54 -06002785 * 'sl2if' class
2786 * shared level 2 memory interface
2787 */
2788
2789static struct omap_hwmod_class omap44xx_sl2if_hwmod_class = {
2790 .name = "sl2if",
2791};
2792
2793/* sl2if */
2794static struct omap_hwmod omap44xx_sl2if_hwmod = {
2795 .name = "sl2if",
2796 .class = &omap44xx_sl2if_hwmod_class,
2797 .clkdm_name = "ivahd_clkdm",
2798 .prcm = {
2799 .omap4 = {
2800 .clkctrl_offs = OMAP4_CM_IVAHD_SL2_CLKCTRL_OFFSET,
2801 .context_offs = OMAP4_RM_IVAHD_SL2_CONTEXT_OFFSET,
2802 .modulemode = MODULEMODE_HWCTRL,
2803 },
2804 },
2805};
2806
2807/*
Benoît Cousson1e3b5e592012-04-19 13:33:53 -06002808 * 'slimbus' class
2809 * bidirectional, multi-drop, multi-channel two-line serial interface between
2810 * the device and external components
2811 */
2812
2813static struct omap_hwmod_class_sysconfig omap44xx_slimbus_sysc = {
2814 .rev_offs = 0x0000,
2815 .sysc_offs = 0x0010,
2816 .sysc_flags = (SYSC_HAS_RESET_STATUS | SYSC_HAS_SIDLEMODE |
2817 SYSC_HAS_SOFTRESET),
2818 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
2819 SIDLE_SMART_WKUP),
2820 .sysc_fields = &omap_hwmod_sysc_type2,
2821};
2822
2823static struct omap_hwmod_class omap44xx_slimbus_hwmod_class = {
2824 .name = "slimbus",
2825 .sysc = &omap44xx_slimbus_sysc,
2826};
2827
2828/* slimbus1 */
2829static struct omap_hwmod_irq_info omap44xx_slimbus1_irqs[] = {
2830 { .irq = 97 + OMAP44XX_IRQ_GIC_START },
2831 { .irq = -1 }
2832};
2833
2834static struct omap_hwmod_dma_info omap44xx_slimbus1_sdma_reqs[] = {
2835 { .name = "tx0", .dma_req = 84 + OMAP44XX_DMA_REQ_START },
2836 { .name = "tx1", .dma_req = 85 + OMAP44XX_DMA_REQ_START },
2837 { .name = "tx2", .dma_req = 86 + OMAP44XX_DMA_REQ_START },
2838 { .name = "tx3", .dma_req = 87 + OMAP44XX_DMA_REQ_START },
2839 { .name = "rx0", .dma_req = 88 + OMAP44XX_DMA_REQ_START },
2840 { .name = "rx1", .dma_req = 89 + OMAP44XX_DMA_REQ_START },
2841 { .name = "rx2", .dma_req = 90 + OMAP44XX_DMA_REQ_START },
2842 { .name = "rx3", .dma_req = 91 + OMAP44XX_DMA_REQ_START },
2843 { .dma_req = -1 }
2844};
2845
2846static struct omap_hwmod_opt_clk slimbus1_opt_clks[] = {
2847 { .role = "fclk_1", .clk = "slimbus1_fclk_1" },
2848 { .role = "fclk_0", .clk = "slimbus1_fclk_0" },
2849 { .role = "fclk_2", .clk = "slimbus1_fclk_2" },
2850 { .role = "slimbus_clk", .clk = "slimbus1_slimbus_clk" },
2851};
2852
2853static struct omap_hwmod omap44xx_slimbus1_hwmod = {
2854 .name = "slimbus1",
2855 .class = &omap44xx_slimbus_hwmod_class,
2856 .clkdm_name = "abe_clkdm",
2857 .mpu_irqs = omap44xx_slimbus1_irqs,
2858 .sdma_reqs = omap44xx_slimbus1_sdma_reqs,
2859 .prcm = {
2860 .omap4 = {
2861 .clkctrl_offs = OMAP4_CM1_ABE_SLIMBUS_CLKCTRL_OFFSET,
2862 .context_offs = OMAP4_RM_ABE_SLIMBUS_CONTEXT_OFFSET,
2863 .modulemode = MODULEMODE_SWCTRL,
2864 },
2865 },
2866 .opt_clks = slimbus1_opt_clks,
2867 .opt_clks_cnt = ARRAY_SIZE(slimbus1_opt_clks),
2868};
2869
2870/* slimbus2 */
2871static struct omap_hwmod_irq_info omap44xx_slimbus2_irqs[] = {
2872 { .irq = 98 + OMAP44XX_IRQ_GIC_START },
2873 { .irq = -1 }
2874};
2875
2876static struct omap_hwmod_dma_info omap44xx_slimbus2_sdma_reqs[] = {
2877 { .name = "tx0", .dma_req = 92 + OMAP44XX_DMA_REQ_START },
2878 { .name = "tx1", .dma_req = 93 + OMAP44XX_DMA_REQ_START },
2879 { .name = "tx2", .dma_req = 94 + OMAP44XX_DMA_REQ_START },
2880 { .name = "tx3", .dma_req = 95 + OMAP44XX_DMA_REQ_START },
2881 { .name = "rx0", .dma_req = 96 + OMAP44XX_DMA_REQ_START },
2882 { .name = "rx1", .dma_req = 97 + OMAP44XX_DMA_REQ_START },
2883 { .name = "rx2", .dma_req = 98 + OMAP44XX_DMA_REQ_START },
2884 { .name = "rx3", .dma_req = 99 + OMAP44XX_DMA_REQ_START },
2885 { .dma_req = -1 }
2886};
2887
2888static struct omap_hwmod_opt_clk slimbus2_opt_clks[] = {
2889 { .role = "fclk_1", .clk = "slimbus2_fclk_1" },
2890 { .role = "fclk_0", .clk = "slimbus2_fclk_0" },
2891 { .role = "slimbus_clk", .clk = "slimbus2_slimbus_clk" },
2892};
2893
2894static struct omap_hwmod omap44xx_slimbus2_hwmod = {
2895 .name = "slimbus2",
2896 .class = &omap44xx_slimbus_hwmod_class,
2897 .clkdm_name = "l4_per_clkdm",
2898 .mpu_irqs = omap44xx_slimbus2_irqs,
2899 .sdma_reqs = omap44xx_slimbus2_sdma_reqs,
2900 .prcm = {
2901 .omap4 = {
2902 .clkctrl_offs = OMAP4_CM_L4PER_SLIMBUS2_CLKCTRL_OFFSET,
2903 .context_offs = OMAP4_RM_L4PER_SLIMBUS2_CONTEXT_OFFSET,
2904 .modulemode = MODULEMODE_SWCTRL,
2905 },
2906 },
2907 .opt_clks = slimbus2_opt_clks,
2908 .opt_clks_cnt = ARRAY_SIZE(slimbus2_opt_clks),
2909};
2910
2911/*
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002912 * 'smartreflex' class
2913 * smartreflex module (monitor silicon performance and outputs a measure of
2914 * performance error)
2915 */
2916
2917/* The IP is not compliant to type1 / type2 scheme */
2918static struct omap_hwmod_sysc_fields omap_hwmod_sysc_type_smartreflex = {
2919 .sidle_shift = 24,
2920 .enwkup_shift = 26,
2921};
2922
2923static struct omap_hwmod_class_sysconfig omap44xx_smartreflex_sysc = {
2924 .sysc_offs = 0x0038,
2925 .sysc_flags = (SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE),
2926 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
2927 SIDLE_SMART_WKUP),
2928 .sysc_fields = &omap_hwmod_sysc_type_smartreflex,
2929};
2930
2931static struct omap_hwmod_class omap44xx_smartreflex_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +00002932 .name = "smartreflex",
2933 .sysc = &omap44xx_smartreflex_sysc,
2934 .rev = 2,
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002935};
2936
2937/* smartreflex_core */
Shweta Gulaticea6b942012-02-29 23:33:37 +01002938static struct omap_smartreflex_dev_attr smartreflex_core_dev_attr = {
2939 .sensor_voltdm_name = "core",
2940};
2941
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002942static struct omap_hwmod_irq_info omap44xx_smartreflex_core_irqs[] = {
2943 { .irq = 19 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002944 { .irq = -1 }
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002945};
2946
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002947static struct omap_hwmod omap44xx_smartreflex_core_hwmod = {
2948 .name = "smartreflex_core",
2949 .class = &omap44xx_smartreflex_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002950 .clkdm_name = "l4_ao_clkdm",
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002951 .mpu_irqs = omap44xx_smartreflex_core_irqs,
Paul Walmsley212738a2011-07-09 19:14:06 -06002952
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002953 .main_clk = "smartreflex_core_fck",
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002954 .prcm = {
2955 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002956 .clkctrl_offs = OMAP4_CM_ALWON_SR_CORE_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002957 .context_offs = OMAP4_RM_ALWON_SR_CORE_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002958 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002959 },
2960 },
Shweta Gulaticea6b942012-02-29 23:33:37 +01002961 .dev_attr = &smartreflex_core_dev_attr,
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002962};
2963
2964/* smartreflex_iva */
Shweta Gulaticea6b942012-02-29 23:33:37 +01002965static struct omap_smartreflex_dev_attr smartreflex_iva_dev_attr = {
2966 .sensor_voltdm_name = "iva",
2967};
2968
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002969static struct omap_hwmod_irq_info omap44xx_smartreflex_iva_irqs[] = {
2970 { .irq = 102 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002971 { .irq = -1 }
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002972};
2973
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002974static struct omap_hwmod omap44xx_smartreflex_iva_hwmod = {
2975 .name = "smartreflex_iva",
2976 .class = &omap44xx_smartreflex_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002977 .clkdm_name = "l4_ao_clkdm",
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002978 .mpu_irqs = omap44xx_smartreflex_iva_irqs,
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002979 .main_clk = "smartreflex_iva_fck",
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002980 .prcm = {
2981 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002982 .clkctrl_offs = OMAP4_CM_ALWON_SR_IVA_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002983 .context_offs = OMAP4_RM_ALWON_SR_IVA_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002984 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002985 },
2986 },
Shweta Gulaticea6b942012-02-29 23:33:37 +01002987 .dev_attr = &smartreflex_iva_dev_attr,
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002988};
2989
2990/* smartreflex_mpu */
Shweta Gulaticea6b942012-02-29 23:33:37 +01002991static struct omap_smartreflex_dev_attr smartreflex_mpu_dev_attr = {
2992 .sensor_voltdm_name = "mpu",
2993};
2994
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002995static struct omap_hwmod_irq_info omap44xx_smartreflex_mpu_irqs[] = {
2996 { .irq = 18 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002997 { .irq = -1 }
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002998};
2999
Benoit Cousson1f6a7172010-12-23 22:30:30 +00003000static struct omap_hwmod omap44xx_smartreflex_mpu_hwmod = {
3001 .name = "smartreflex_mpu",
3002 .class = &omap44xx_smartreflex_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06003003 .clkdm_name = "l4_ao_clkdm",
Benoit Cousson1f6a7172010-12-23 22:30:30 +00003004 .mpu_irqs = omap44xx_smartreflex_mpu_irqs,
Benoit Cousson1f6a7172010-12-23 22:30:30 +00003005 .main_clk = "smartreflex_mpu_fck",
Benoit Cousson1f6a7172010-12-23 22:30:30 +00003006 .prcm = {
3007 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06003008 .clkctrl_offs = OMAP4_CM_ALWON_SR_MPU_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06003009 .context_offs = OMAP4_RM_ALWON_SR_MPU_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06003010 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson1f6a7172010-12-23 22:30:30 +00003011 },
3012 },
Shweta Gulaticea6b942012-02-29 23:33:37 +01003013 .dev_attr = &smartreflex_mpu_dev_attr,
Benoit Cousson1f6a7172010-12-23 22:30:30 +00003014};
3015
3016/*
Benoit Coussond11c2172011-02-02 12:04:36 +00003017 * 'spinlock' class
3018 * spinlock provides hardware assistance for synchronizing the processes
3019 * running on multiple processors
3020 */
3021
3022static struct omap_hwmod_class_sysconfig omap44xx_spinlock_sysc = {
3023 .rev_offs = 0x0000,
3024 .sysc_offs = 0x0010,
3025 .syss_offs = 0x0014,
3026 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
3027 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE |
3028 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
3029 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
3030 SIDLE_SMART_WKUP),
3031 .sysc_fields = &omap_hwmod_sysc_type1,
3032};
3033
3034static struct omap_hwmod_class omap44xx_spinlock_hwmod_class = {
3035 .name = "spinlock",
3036 .sysc = &omap44xx_spinlock_sysc,
3037};
3038
3039/* spinlock */
Benoit Coussond11c2172011-02-02 12:04:36 +00003040static struct omap_hwmod omap44xx_spinlock_hwmod = {
3041 .name = "spinlock",
3042 .class = &omap44xx_spinlock_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06003043 .clkdm_name = "l4_cfg_clkdm",
Benoit Coussond11c2172011-02-02 12:04:36 +00003044 .prcm = {
3045 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06003046 .clkctrl_offs = OMAP4_CM_L4CFG_HW_SEM_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06003047 .context_offs = OMAP4_RM_L4CFG_HW_SEM_CONTEXT_OFFSET,
Benoit Coussond11c2172011-02-02 12:04:36 +00003048 },
3049 },
Benoit Coussond11c2172011-02-02 12:04:36 +00003050};
3051
3052/*
Benoit Cousson35d1a662011-02-11 11:17:14 +00003053 * 'timer' class
3054 * general purpose timer module with accurate 1ms tick
3055 * This class contains several variants: ['timer_1ms', 'timer']
3056 */
3057
3058static struct omap_hwmod_class_sysconfig omap44xx_timer_1ms_sysc = {
3059 .rev_offs = 0x0000,
3060 .sysc_offs = 0x0010,
3061 .syss_offs = 0x0014,
3062 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
3063 SYSC_HAS_EMUFREE | SYSC_HAS_ENAWAKEUP |
3064 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
3065 SYSS_HAS_RESET_STATUS),
3066 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
3067 .sysc_fields = &omap_hwmod_sysc_type1,
3068};
3069
3070static struct omap_hwmod_class omap44xx_timer_1ms_hwmod_class = {
3071 .name = "timer",
3072 .sysc = &omap44xx_timer_1ms_sysc,
3073};
3074
3075static struct omap_hwmod_class_sysconfig omap44xx_timer_sysc = {
3076 .rev_offs = 0x0000,
3077 .sysc_offs = 0x0010,
3078 .sysc_flags = (SYSC_HAS_EMUFREE | SYSC_HAS_RESET_STATUS |
3079 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
3080 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
3081 SIDLE_SMART_WKUP),
3082 .sysc_fields = &omap_hwmod_sysc_type2,
3083};
3084
3085static struct omap_hwmod_class omap44xx_timer_hwmod_class = {
3086 .name = "timer",
3087 .sysc = &omap44xx_timer_sysc,
3088};
3089
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +05303090/* always-on timers dev attribute */
3091static struct omap_timer_capability_dev_attr capability_alwon_dev_attr = {
3092 .timer_capability = OMAP_TIMER_ALWON,
3093};
3094
3095/* pwm timers dev attribute */
3096static struct omap_timer_capability_dev_attr capability_pwm_dev_attr = {
3097 .timer_capability = OMAP_TIMER_HAS_PWM,
3098};
3099
Benoit Cousson35d1a662011-02-11 11:17:14 +00003100/* timer1 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00003101static struct omap_hwmod_irq_info omap44xx_timer1_irqs[] = {
3102 { .irq = 37 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06003103 { .irq = -1 }
Benoit Cousson35d1a662011-02-11 11:17:14 +00003104};
3105
Benoit Cousson35d1a662011-02-11 11:17:14 +00003106static struct omap_hwmod omap44xx_timer1_hwmod = {
3107 .name = "timer1",
3108 .class = &omap44xx_timer_1ms_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06003109 .clkdm_name = "l4_wkup_clkdm",
Benoit Cousson35d1a662011-02-11 11:17:14 +00003110 .mpu_irqs = omap44xx_timer1_irqs,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003111 .main_clk = "timer1_fck",
3112 .prcm = {
3113 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06003114 .clkctrl_offs = OMAP4_CM_WKUP_TIMER1_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06003115 .context_offs = OMAP4_RM_WKUP_TIMER1_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06003116 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003117 },
3118 },
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +05303119 .dev_attr = &capability_alwon_dev_attr,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003120};
3121
3122/* timer2 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00003123static struct omap_hwmod_irq_info omap44xx_timer2_irqs[] = {
3124 { .irq = 38 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06003125 { .irq = -1 }
Benoit Cousson35d1a662011-02-11 11:17:14 +00003126};
3127
Benoit Cousson35d1a662011-02-11 11:17:14 +00003128static struct omap_hwmod omap44xx_timer2_hwmod = {
3129 .name = "timer2",
3130 .class = &omap44xx_timer_1ms_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06003131 .clkdm_name = "l4_per_clkdm",
Benoit Cousson35d1a662011-02-11 11:17:14 +00003132 .mpu_irqs = omap44xx_timer2_irqs,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003133 .main_clk = "timer2_fck",
3134 .prcm = {
3135 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06003136 .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER2_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06003137 .context_offs = OMAP4_RM_L4PER_DMTIMER2_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06003138 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003139 },
3140 },
Benoit Cousson35d1a662011-02-11 11:17:14 +00003141};
3142
3143/* timer3 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00003144static struct omap_hwmod_irq_info omap44xx_timer3_irqs[] = {
3145 { .irq = 39 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06003146 { .irq = -1 }
Benoit Cousson35d1a662011-02-11 11:17:14 +00003147};
3148
Benoit Cousson35d1a662011-02-11 11:17:14 +00003149static struct omap_hwmod omap44xx_timer3_hwmod = {
3150 .name = "timer3",
3151 .class = &omap44xx_timer_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06003152 .clkdm_name = "l4_per_clkdm",
Benoit Cousson35d1a662011-02-11 11:17:14 +00003153 .mpu_irqs = omap44xx_timer3_irqs,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003154 .main_clk = "timer3_fck",
3155 .prcm = {
3156 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06003157 .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER3_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06003158 .context_offs = OMAP4_RM_L4PER_DMTIMER3_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06003159 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003160 },
3161 },
Benoit Cousson35d1a662011-02-11 11:17:14 +00003162};
3163
3164/* timer4 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00003165static struct omap_hwmod_irq_info omap44xx_timer4_irqs[] = {
3166 { .irq = 40 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06003167 { .irq = -1 }
Benoit Cousson35d1a662011-02-11 11:17:14 +00003168};
3169
Benoit Cousson35d1a662011-02-11 11:17:14 +00003170static struct omap_hwmod omap44xx_timer4_hwmod = {
3171 .name = "timer4",
3172 .class = &omap44xx_timer_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06003173 .clkdm_name = "l4_per_clkdm",
Benoit Cousson35d1a662011-02-11 11:17:14 +00003174 .mpu_irqs = omap44xx_timer4_irqs,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003175 .main_clk = "timer4_fck",
3176 .prcm = {
3177 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06003178 .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER4_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06003179 .context_offs = OMAP4_RM_L4PER_DMTIMER4_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06003180 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003181 },
3182 },
Benoit Cousson35d1a662011-02-11 11:17:14 +00003183};
3184
3185/* timer5 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00003186static struct omap_hwmod_irq_info omap44xx_timer5_irqs[] = {
3187 { .irq = 41 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06003188 { .irq = -1 }
Benoit Cousson35d1a662011-02-11 11:17:14 +00003189};
3190
Benoit Cousson35d1a662011-02-11 11:17:14 +00003191static struct omap_hwmod omap44xx_timer5_hwmod = {
3192 .name = "timer5",
3193 .class = &omap44xx_timer_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06003194 .clkdm_name = "abe_clkdm",
Benoit Cousson35d1a662011-02-11 11:17:14 +00003195 .mpu_irqs = omap44xx_timer5_irqs,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003196 .main_clk = "timer5_fck",
3197 .prcm = {
3198 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06003199 .clkctrl_offs = OMAP4_CM1_ABE_TIMER5_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06003200 .context_offs = OMAP4_RM_ABE_TIMER5_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06003201 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003202 },
3203 },
Benoit Cousson35d1a662011-02-11 11:17:14 +00003204};
3205
3206/* timer6 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00003207static struct omap_hwmod_irq_info omap44xx_timer6_irqs[] = {
3208 { .irq = 42 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06003209 { .irq = -1 }
Benoit Cousson35d1a662011-02-11 11:17:14 +00003210};
3211
Benoit Cousson35d1a662011-02-11 11:17:14 +00003212static struct omap_hwmod omap44xx_timer6_hwmod = {
3213 .name = "timer6",
3214 .class = &omap44xx_timer_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06003215 .clkdm_name = "abe_clkdm",
Benoit Cousson35d1a662011-02-11 11:17:14 +00003216 .mpu_irqs = omap44xx_timer6_irqs,
Paul Walmsley212738a2011-07-09 19:14:06 -06003217
Benoit Cousson35d1a662011-02-11 11:17:14 +00003218 .main_clk = "timer6_fck",
3219 .prcm = {
3220 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06003221 .clkctrl_offs = OMAP4_CM1_ABE_TIMER6_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06003222 .context_offs = OMAP4_RM_ABE_TIMER6_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06003223 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003224 },
3225 },
Benoit Cousson35d1a662011-02-11 11:17:14 +00003226};
3227
3228/* timer7 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00003229static struct omap_hwmod_irq_info omap44xx_timer7_irqs[] = {
3230 { .irq = 43 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06003231 { .irq = -1 }
Benoit Cousson35d1a662011-02-11 11:17:14 +00003232};
3233
Benoit Cousson35d1a662011-02-11 11:17:14 +00003234static struct omap_hwmod omap44xx_timer7_hwmod = {
3235 .name = "timer7",
3236 .class = &omap44xx_timer_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06003237 .clkdm_name = "abe_clkdm",
Benoit Cousson35d1a662011-02-11 11:17:14 +00003238 .mpu_irqs = omap44xx_timer7_irqs,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003239 .main_clk = "timer7_fck",
3240 .prcm = {
3241 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06003242 .clkctrl_offs = OMAP4_CM1_ABE_TIMER7_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06003243 .context_offs = OMAP4_RM_ABE_TIMER7_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06003244 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003245 },
3246 },
Benoit Cousson35d1a662011-02-11 11:17:14 +00003247};
3248
3249/* timer8 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00003250static struct omap_hwmod_irq_info omap44xx_timer8_irqs[] = {
3251 { .irq = 44 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06003252 { .irq = -1 }
Benoit Cousson35d1a662011-02-11 11:17:14 +00003253};
3254
Benoit Cousson35d1a662011-02-11 11:17:14 +00003255static struct omap_hwmod omap44xx_timer8_hwmod = {
3256 .name = "timer8",
3257 .class = &omap44xx_timer_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06003258 .clkdm_name = "abe_clkdm",
Benoit Cousson35d1a662011-02-11 11:17:14 +00003259 .mpu_irqs = omap44xx_timer8_irqs,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003260 .main_clk = "timer8_fck",
3261 .prcm = {
3262 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06003263 .clkctrl_offs = OMAP4_CM1_ABE_TIMER8_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06003264 .context_offs = OMAP4_RM_ABE_TIMER8_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06003265 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003266 },
3267 },
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +05303268 .dev_attr = &capability_pwm_dev_attr,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003269};
3270
3271/* timer9 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00003272static struct omap_hwmod_irq_info omap44xx_timer9_irqs[] = {
3273 { .irq = 45 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06003274 { .irq = -1 }
Benoit Cousson35d1a662011-02-11 11:17:14 +00003275};
3276
Benoit Cousson35d1a662011-02-11 11:17:14 +00003277static struct omap_hwmod omap44xx_timer9_hwmod = {
3278 .name = "timer9",
3279 .class = &omap44xx_timer_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06003280 .clkdm_name = "l4_per_clkdm",
Benoit Cousson35d1a662011-02-11 11:17:14 +00003281 .mpu_irqs = omap44xx_timer9_irqs,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003282 .main_clk = "timer9_fck",
3283 .prcm = {
3284 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06003285 .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER9_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06003286 .context_offs = OMAP4_RM_L4PER_DMTIMER9_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06003287 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003288 },
3289 },
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +05303290 .dev_attr = &capability_pwm_dev_attr,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003291};
3292
3293/* timer10 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00003294static struct omap_hwmod_irq_info omap44xx_timer10_irqs[] = {
3295 { .irq = 46 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06003296 { .irq = -1 }
Benoit Cousson35d1a662011-02-11 11:17:14 +00003297};
3298
Benoit Cousson35d1a662011-02-11 11:17:14 +00003299static struct omap_hwmod omap44xx_timer10_hwmod = {
3300 .name = "timer10",
3301 .class = &omap44xx_timer_1ms_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06003302 .clkdm_name = "l4_per_clkdm",
Benoit Cousson35d1a662011-02-11 11:17:14 +00003303 .mpu_irqs = omap44xx_timer10_irqs,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003304 .main_clk = "timer10_fck",
3305 .prcm = {
3306 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06003307 .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER10_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06003308 .context_offs = OMAP4_RM_L4PER_DMTIMER10_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06003309 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003310 },
3311 },
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +05303312 .dev_attr = &capability_pwm_dev_attr,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003313};
3314
3315/* timer11 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00003316static struct omap_hwmod_irq_info omap44xx_timer11_irqs[] = {
3317 { .irq = 47 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06003318 { .irq = -1 }
Benoit Cousson35d1a662011-02-11 11:17:14 +00003319};
3320
Benoit Cousson35d1a662011-02-11 11:17:14 +00003321static struct omap_hwmod omap44xx_timer11_hwmod = {
3322 .name = "timer11",
3323 .class = &omap44xx_timer_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06003324 .clkdm_name = "l4_per_clkdm",
Benoit Cousson35d1a662011-02-11 11:17:14 +00003325 .mpu_irqs = omap44xx_timer11_irqs,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003326 .main_clk = "timer11_fck",
3327 .prcm = {
3328 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06003329 .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER11_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06003330 .context_offs = OMAP4_RM_L4PER_DMTIMER11_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06003331 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003332 },
3333 },
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +05303334 .dev_attr = &capability_pwm_dev_attr,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003335};
3336
3337/*
Benoit Coussondb12ba52010-09-27 20:19:19 +05303338 * 'uart' class
3339 * universal asynchronous receiver/transmitter (uart)
3340 */
3341
3342static struct omap_hwmod_class_sysconfig omap44xx_uart_sysc = {
3343 .rev_offs = 0x0050,
3344 .sysc_offs = 0x0054,
3345 .syss_offs = 0x0058,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07003346 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_ENAWAKEUP |
Benoit Cousson0cfe8752010-12-21 21:08:33 -07003347 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
3348 SYSS_HAS_RESET_STATUS),
Benoit Cousson7cffa6b2010-12-21 21:31:28 -07003349 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
3350 SIDLE_SMART_WKUP),
Benoit Coussondb12ba52010-09-27 20:19:19 +05303351 .sysc_fields = &omap_hwmod_sysc_type1,
3352};
3353
3354static struct omap_hwmod_class omap44xx_uart_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +00003355 .name = "uart",
3356 .sysc = &omap44xx_uart_sysc,
Benoit Coussondb12ba52010-09-27 20:19:19 +05303357};
3358
3359/* uart1 */
Benoit Coussondb12ba52010-09-27 20:19:19 +05303360static struct omap_hwmod_irq_info omap44xx_uart1_irqs[] = {
3361 { .irq = 72 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06003362 { .irq = -1 }
Benoit Coussondb12ba52010-09-27 20:19:19 +05303363};
3364
3365static struct omap_hwmod_dma_info omap44xx_uart1_sdma_reqs[] = {
3366 { .name = "tx", .dma_req = 48 + OMAP44XX_DMA_REQ_START },
3367 { .name = "rx", .dma_req = 49 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06003368 { .dma_req = -1 }
Benoit Coussondb12ba52010-09-27 20:19:19 +05303369};
3370
Benoit Coussondb12ba52010-09-27 20:19:19 +05303371static struct omap_hwmod omap44xx_uart1_hwmod = {
3372 .name = "uart1",
3373 .class = &omap44xx_uart_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06003374 .clkdm_name = "l4_per_clkdm",
Benoit Coussondb12ba52010-09-27 20:19:19 +05303375 .mpu_irqs = omap44xx_uart1_irqs,
Benoit Coussondb12ba52010-09-27 20:19:19 +05303376 .sdma_reqs = omap44xx_uart1_sdma_reqs,
Benoit Coussondb12ba52010-09-27 20:19:19 +05303377 .main_clk = "uart1_fck",
3378 .prcm = {
3379 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06003380 .clkctrl_offs = OMAP4_CM_L4PER_UART1_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06003381 .context_offs = OMAP4_RM_L4PER_UART1_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06003382 .modulemode = MODULEMODE_SWCTRL,
Benoit Coussondb12ba52010-09-27 20:19:19 +05303383 },
3384 },
Benoit Coussondb12ba52010-09-27 20:19:19 +05303385};
3386
3387/* uart2 */
Benoit Coussondb12ba52010-09-27 20:19:19 +05303388static struct omap_hwmod_irq_info omap44xx_uart2_irqs[] = {
3389 { .irq = 73 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06003390 { .irq = -1 }
Benoit Coussondb12ba52010-09-27 20:19:19 +05303391};
3392
3393static struct omap_hwmod_dma_info omap44xx_uart2_sdma_reqs[] = {
3394 { .name = "tx", .dma_req = 50 + OMAP44XX_DMA_REQ_START },
3395 { .name = "rx", .dma_req = 51 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06003396 { .dma_req = -1 }
Benoit Coussondb12ba52010-09-27 20:19:19 +05303397};
3398
Benoit Coussondb12ba52010-09-27 20:19:19 +05303399static struct omap_hwmod omap44xx_uart2_hwmod = {
3400 .name = "uart2",
3401 .class = &omap44xx_uart_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06003402 .clkdm_name = "l4_per_clkdm",
Benoit Coussondb12ba52010-09-27 20:19:19 +05303403 .mpu_irqs = omap44xx_uart2_irqs,
Benoit Coussondb12ba52010-09-27 20:19:19 +05303404 .sdma_reqs = omap44xx_uart2_sdma_reqs,
Benoit Coussondb12ba52010-09-27 20:19:19 +05303405 .main_clk = "uart2_fck",
3406 .prcm = {
3407 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06003408 .clkctrl_offs = OMAP4_CM_L4PER_UART2_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06003409 .context_offs = OMAP4_RM_L4PER_UART2_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06003410 .modulemode = MODULEMODE_SWCTRL,
Benoit Coussondb12ba52010-09-27 20:19:19 +05303411 },
3412 },
Benoit Coussondb12ba52010-09-27 20:19:19 +05303413};
3414
3415/* uart3 */
Benoit Coussondb12ba52010-09-27 20:19:19 +05303416static struct omap_hwmod_irq_info omap44xx_uart3_irqs[] = {
3417 { .irq = 74 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06003418 { .irq = -1 }
Benoit Coussondb12ba52010-09-27 20:19:19 +05303419};
3420
3421static struct omap_hwmod_dma_info omap44xx_uart3_sdma_reqs[] = {
3422 { .name = "tx", .dma_req = 52 + OMAP44XX_DMA_REQ_START },
3423 { .name = "rx", .dma_req = 53 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06003424 { .dma_req = -1 }
Benoit Coussondb12ba52010-09-27 20:19:19 +05303425};
3426
Benoit Coussondb12ba52010-09-27 20:19:19 +05303427static struct omap_hwmod omap44xx_uart3_hwmod = {
3428 .name = "uart3",
3429 .class = &omap44xx_uart_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06003430 .clkdm_name = "l4_per_clkdm",
Benoit Cousson7ecc53732011-07-09 19:14:28 -06003431 .flags = HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET,
Benoit Coussondb12ba52010-09-27 20:19:19 +05303432 .mpu_irqs = omap44xx_uart3_irqs,
Benoit Coussondb12ba52010-09-27 20:19:19 +05303433 .sdma_reqs = omap44xx_uart3_sdma_reqs,
Benoit Coussondb12ba52010-09-27 20:19:19 +05303434 .main_clk = "uart3_fck",
3435 .prcm = {
3436 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06003437 .clkctrl_offs = OMAP4_CM_L4PER_UART3_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06003438 .context_offs = OMAP4_RM_L4PER_UART3_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06003439 .modulemode = MODULEMODE_SWCTRL,
Benoit Coussondb12ba52010-09-27 20:19:19 +05303440 },
3441 },
Benoit Coussondb12ba52010-09-27 20:19:19 +05303442};
3443
3444/* uart4 */
Benoit Coussondb12ba52010-09-27 20:19:19 +05303445static struct omap_hwmod_irq_info omap44xx_uart4_irqs[] = {
3446 { .irq = 70 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06003447 { .irq = -1 }
Benoit Coussondb12ba52010-09-27 20:19:19 +05303448};
3449
3450static struct omap_hwmod_dma_info omap44xx_uart4_sdma_reqs[] = {
3451 { .name = "tx", .dma_req = 54 + OMAP44XX_DMA_REQ_START },
3452 { .name = "rx", .dma_req = 55 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06003453 { .dma_req = -1 }
Benoit Coussondb12ba52010-09-27 20:19:19 +05303454};
3455
Benoit Coussondb12ba52010-09-27 20:19:19 +05303456static struct omap_hwmod omap44xx_uart4_hwmod = {
3457 .name = "uart4",
3458 .class = &omap44xx_uart_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06003459 .clkdm_name = "l4_per_clkdm",
Benoit Coussondb12ba52010-09-27 20:19:19 +05303460 .mpu_irqs = omap44xx_uart4_irqs,
Benoit Coussondb12ba52010-09-27 20:19:19 +05303461 .sdma_reqs = omap44xx_uart4_sdma_reqs,
Benoit Coussondb12ba52010-09-27 20:19:19 +05303462 .main_clk = "uart4_fck",
3463 .prcm = {
3464 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06003465 .clkctrl_offs = OMAP4_CM_L4PER_UART4_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06003466 .context_offs = OMAP4_RM_L4PER_UART4_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06003467 .modulemode = MODULEMODE_SWCTRL,
Benoit Coussondb12ba52010-09-27 20:19:19 +05303468 },
3469 },
Benoit Coussondb12ba52010-09-27 20:19:19 +05303470};
3471
Benoit Cousson9780a9c2010-12-07 16:26:57 -08003472/*
Benoît Cousson0c668872012-04-19 13:33:55 -06003473 * 'usb_host_fs' class
3474 * full-speed usb host controller
3475 */
3476
3477/* The IP is not compliant to type1 / type2 scheme */
3478static struct omap_hwmod_sysc_fields omap_hwmod_sysc_type_usb_host_fs = {
3479 .midle_shift = 4,
3480 .sidle_shift = 2,
3481 .srst_shift = 1,
3482};
3483
3484static struct omap_hwmod_class_sysconfig omap44xx_usb_host_fs_sysc = {
3485 .rev_offs = 0x0000,
3486 .sysc_offs = 0x0210,
3487 .sysc_flags = (SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE |
3488 SYSC_HAS_SOFTRESET),
3489 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
3490 SIDLE_SMART_WKUP),
3491 .sysc_fields = &omap_hwmod_sysc_type_usb_host_fs,
3492};
3493
3494static struct omap_hwmod_class omap44xx_usb_host_fs_hwmod_class = {
3495 .name = "usb_host_fs",
3496 .sysc = &omap44xx_usb_host_fs_sysc,
3497};
3498
3499/* usb_host_fs */
3500static struct omap_hwmod_irq_info omap44xx_usb_host_fs_irqs[] = {
3501 { .name = "std", .irq = 89 + OMAP44XX_IRQ_GIC_START },
3502 { .name = "smi", .irq = 90 + OMAP44XX_IRQ_GIC_START },
3503 { .irq = -1 }
3504};
3505
3506static struct omap_hwmod omap44xx_usb_host_fs_hwmod = {
3507 .name = "usb_host_fs",
3508 .class = &omap44xx_usb_host_fs_hwmod_class,
3509 .clkdm_name = "l3_init_clkdm",
3510 .mpu_irqs = omap44xx_usb_host_fs_irqs,
3511 .main_clk = "usb_host_fs_fck",
3512 .prcm = {
3513 .omap4 = {
3514 .clkctrl_offs = OMAP4_CM_L3INIT_USB_HOST_FS_CLKCTRL_OFFSET,
3515 .context_offs = OMAP4_RM_L3INIT_USB_HOST_FS_CONTEXT_OFFSET,
3516 .modulemode = MODULEMODE_SWCTRL,
3517 },
3518 },
3519};
3520
3521/*
Benoit Coussonaf88fa92011-12-15 23:15:18 -07003522 * 'usb_host_hs' class
3523 * high-speed multi-port usb host controller
3524 */
Benoit Coussonaf88fa92011-12-15 23:15:18 -07003525
3526static struct omap_hwmod_class_sysconfig omap44xx_usb_host_hs_sysc = {
3527 .rev_offs = 0x0000,
3528 .sysc_offs = 0x0010,
3529 .syss_offs = 0x0014,
3530 .sysc_flags = (SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE |
3531 SYSC_HAS_SOFTRESET),
3532 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
3533 SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
3534 MSTANDBY_SMART | MSTANDBY_SMART_WKUP),
3535 .sysc_fields = &omap_hwmod_sysc_type2,
3536};
3537
3538static struct omap_hwmod_class omap44xx_usb_host_hs_hwmod_class = {
Paul Walmsley844a3b62012-04-19 04:04:33 -06003539 .name = "usb_host_hs",
3540 .sysc = &omap44xx_usb_host_hs_sysc,
Benoit Coussonaf88fa92011-12-15 23:15:18 -07003541};
3542
Paul Walmsley844a3b62012-04-19 04:04:33 -06003543/* usb_host_hs */
Benoit Coussonaf88fa92011-12-15 23:15:18 -07003544static struct omap_hwmod_irq_info omap44xx_usb_host_hs_irqs[] = {
3545 { .name = "ohci-irq", .irq = 76 + OMAP44XX_IRQ_GIC_START },
3546 { .name = "ehci-irq", .irq = 77 + OMAP44XX_IRQ_GIC_START },
3547 { .irq = -1 }
3548};
3549
Benoit Coussonaf88fa92011-12-15 23:15:18 -07003550static struct omap_hwmod omap44xx_usb_host_hs_hwmod = {
3551 .name = "usb_host_hs",
3552 .class = &omap44xx_usb_host_hs_hwmod_class,
3553 .clkdm_name = "l3_init_clkdm",
3554 .main_clk = "usb_host_hs_fck",
3555 .prcm = {
3556 .omap4 = {
3557 .clkctrl_offs = OMAP4_CM_L3INIT_USB_HOST_CLKCTRL_OFFSET,
3558 .context_offs = OMAP4_RM_L3INIT_USB_HOST_CONTEXT_OFFSET,
3559 .modulemode = MODULEMODE_SWCTRL,
3560 },
3561 },
3562 .mpu_irqs = omap44xx_usb_host_hs_irqs,
Benoit Coussonaf88fa92011-12-15 23:15:18 -07003563
3564 /*
3565 * Errata: USBHOST Configured In Smart-Idle Can Lead To a Deadlock
3566 * id: i660
3567 *
3568 * Description:
3569 * In the following configuration :
3570 * - USBHOST module is set to smart-idle mode
3571 * - PRCM asserts idle_req to the USBHOST module ( This typically
3572 * happens when the system is going to a low power mode : all ports
3573 * have been suspended, the master part of the USBHOST module has
3574 * entered the standby state, and SW has cut the functional clocks)
3575 * - an USBHOST interrupt occurs before the module is able to answer
3576 * idle_ack, typically a remote wakeup IRQ.
3577 * Then the USB HOST module will enter a deadlock situation where it
3578 * is no more accessible nor functional.
3579 *
3580 * Workaround:
3581 * Don't use smart idle; use only force idle, hence HWMOD_SWSUP_SIDLE
3582 */
3583
3584 /*
3585 * Errata: USB host EHCI may stall when entering smart-standby mode
3586 * Id: i571
3587 *
3588 * Description:
3589 * When the USBHOST module is set to smart-standby mode, and when it is
3590 * ready to enter the standby state (i.e. all ports are suspended and
3591 * all attached devices are in suspend mode), then it can wrongly assert
3592 * the Mstandby signal too early while there are still some residual OCP
3593 * transactions ongoing. If this condition occurs, the internal state
3594 * machine may go to an undefined state and the USB link may be stuck
3595 * upon the next resume.
3596 *
3597 * Workaround:
3598 * Don't use smart standby; use only force standby,
3599 * hence HWMOD_SWSUP_MSTANDBY
3600 */
3601
3602 /*
3603 * During system boot; If the hwmod framework resets the module
3604 * the module will have smart idle settings; which can lead to deadlock
3605 * (above Errata Id:i660); so, dont reset the module during boot;
3606 * Use HWMOD_INIT_NO_RESET.
3607 */
3608
3609 .flags = HWMOD_SWSUP_SIDLE | HWMOD_SWSUP_MSTANDBY |
3610 HWMOD_INIT_NO_RESET,
3611};
3612
3613/*
Paul Walmsley844a3b62012-04-19 04:04:33 -06003614 * 'usb_otg_hs' class
3615 * high-speed on-the-go universal serial bus (usb_otg_hs) controller
3616 */
3617
3618static struct omap_hwmod_class_sysconfig omap44xx_usb_otg_hs_sysc = {
3619 .rev_offs = 0x0400,
3620 .sysc_offs = 0x0404,
3621 .syss_offs = 0x0408,
3622 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_ENAWAKEUP |
3623 SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE |
3624 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
3625 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
3626 SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
3627 MSTANDBY_SMART),
3628 .sysc_fields = &omap_hwmod_sysc_type1,
3629};
3630
3631static struct omap_hwmod_class omap44xx_usb_otg_hs_hwmod_class = {
3632 .name = "usb_otg_hs",
3633 .sysc = &omap44xx_usb_otg_hs_sysc,
3634};
3635
3636/* usb_otg_hs */
3637static struct omap_hwmod_irq_info omap44xx_usb_otg_hs_irqs[] = {
3638 { .name = "mc", .irq = 92 + OMAP44XX_IRQ_GIC_START },
3639 { .name = "dma", .irq = 93 + OMAP44XX_IRQ_GIC_START },
3640 { .irq = -1 }
3641};
3642
3643static struct omap_hwmod_opt_clk usb_otg_hs_opt_clks[] = {
3644 { .role = "xclk", .clk = "usb_otg_hs_xclk" },
3645};
3646
3647static struct omap_hwmod omap44xx_usb_otg_hs_hwmod = {
3648 .name = "usb_otg_hs",
3649 .class = &omap44xx_usb_otg_hs_hwmod_class,
3650 .clkdm_name = "l3_init_clkdm",
3651 .flags = HWMOD_SWSUP_SIDLE | HWMOD_SWSUP_MSTANDBY,
3652 .mpu_irqs = omap44xx_usb_otg_hs_irqs,
3653 .main_clk = "usb_otg_hs_ick",
3654 .prcm = {
3655 .omap4 = {
3656 .clkctrl_offs = OMAP4_CM_L3INIT_USB_OTG_CLKCTRL_OFFSET,
3657 .context_offs = OMAP4_RM_L3INIT_USB_OTG_CONTEXT_OFFSET,
3658 .modulemode = MODULEMODE_HWCTRL,
3659 },
3660 },
3661 .opt_clks = usb_otg_hs_opt_clks,
3662 .opt_clks_cnt = ARRAY_SIZE(usb_otg_hs_opt_clks),
3663};
3664
3665/*
Benoit Coussonaf88fa92011-12-15 23:15:18 -07003666 * 'usb_tll_hs' class
3667 * usb_tll_hs module is the adapter on the usb_host_hs ports
3668 */
Paul Walmsley844a3b62012-04-19 04:04:33 -06003669
Benoit Coussonaf88fa92011-12-15 23:15:18 -07003670static struct omap_hwmod_class_sysconfig omap44xx_usb_tll_hs_sysc = {
3671 .rev_offs = 0x0000,
3672 .sysc_offs = 0x0010,
3673 .syss_offs = 0x0014,
3674 .sysc_flags = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
3675 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
3676 SYSC_HAS_AUTOIDLE),
3677 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
3678 .sysc_fields = &omap_hwmod_sysc_type1,
3679};
3680
3681static struct omap_hwmod_class omap44xx_usb_tll_hs_hwmod_class = {
Paul Walmsley844a3b62012-04-19 04:04:33 -06003682 .name = "usb_tll_hs",
3683 .sysc = &omap44xx_usb_tll_hs_sysc,
Benoit Coussonaf88fa92011-12-15 23:15:18 -07003684};
3685
3686static struct omap_hwmod_irq_info omap44xx_usb_tll_hs_irqs[] = {
3687 { .name = "tll-irq", .irq = 78 + OMAP44XX_IRQ_GIC_START },
3688 { .irq = -1 }
3689};
3690
Paul Walmsley844a3b62012-04-19 04:04:33 -06003691static struct omap_hwmod omap44xx_usb_tll_hs_hwmod = {
3692 .name = "usb_tll_hs",
3693 .class = &omap44xx_usb_tll_hs_hwmod_class,
3694 .clkdm_name = "l3_init_clkdm",
3695 .mpu_irqs = omap44xx_usb_tll_hs_irqs,
3696 .main_clk = "usb_tll_hs_ick",
3697 .prcm = {
3698 .omap4 = {
3699 .clkctrl_offs = OMAP4_CM_L3INIT_USB_TLL_CLKCTRL_OFFSET,
3700 .context_offs = OMAP4_RM_L3INIT_USB_TLL_CONTEXT_OFFSET,
3701 .modulemode = MODULEMODE_HWCTRL,
3702 },
3703 },
3704};
3705
3706/*
3707 * 'wd_timer' class
3708 * 32-bit watchdog upward counter that generates a pulse on the reset pin on
3709 * overflow condition
3710 */
3711
3712static struct omap_hwmod_class_sysconfig omap44xx_wd_timer_sysc = {
3713 .rev_offs = 0x0000,
3714 .sysc_offs = 0x0010,
3715 .syss_offs = 0x0014,
3716 .sysc_flags = (SYSC_HAS_EMUFREE | SYSC_HAS_SIDLEMODE |
3717 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
3718 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
3719 SIDLE_SMART_WKUP),
3720 .sysc_fields = &omap_hwmod_sysc_type1,
3721};
3722
3723static struct omap_hwmod_class omap44xx_wd_timer_hwmod_class = {
3724 .name = "wd_timer",
3725 .sysc = &omap44xx_wd_timer_sysc,
3726 .pre_shutdown = &omap2_wd_timer_disable,
Kevin Hilman414e4122012-05-08 11:34:30 -06003727 .reset = &omap2_wd_timer_reset,
Paul Walmsley844a3b62012-04-19 04:04:33 -06003728};
3729
3730/* wd_timer2 */
3731static struct omap_hwmod_irq_info omap44xx_wd_timer2_irqs[] = {
3732 { .irq = 80 + OMAP44XX_IRQ_GIC_START },
3733 { .irq = -1 }
3734};
3735
3736static struct omap_hwmod omap44xx_wd_timer2_hwmod = {
3737 .name = "wd_timer2",
3738 .class = &omap44xx_wd_timer_hwmod_class,
3739 .clkdm_name = "l4_wkup_clkdm",
3740 .mpu_irqs = omap44xx_wd_timer2_irqs,
3741 .main_clk = "wd_timer2_fck",
3742 .prcm = {
3743 .omap4 = {
3744 .clkctrl_offs = OMAP4_CM_WKUP_WDT2_CLKCTRL_OFFSET,
3745 .context_offs = OMAP4_RM_WKUP_WDT2_CONTEXT_OFFSET,
3746 .modulemode = MODULEMODE_SWCTRL,
3747 },
3748 },
3749};
3750
3751/* wd_timer3 */
3752static struct omap_hwmod_irq_info omap44xx_wd_timer3_irqs[] = {
3753 { .irq = 36 + OMAP44XX_IRQ_GIC_START },
3754 { .irq = -1 }
3755};
3756
3757static struct omap_hwmod omap44xx_wd_timer3_hwmod = {
3758 .name = "wd_timer3",
3759 .class = &omap44xx_wd_timer_hwmod_class,
3760 .clkdm_name = "abe_clkdm",
3761 .mpu_irqs = omap44xx_wd_timer3_irqs,
3762 .main_clk = "wd_timer3_fck",
3763 .prcm = {
3764 .omap4 = {
3765 .clkctrl_offs = OMAP4_CM1_ABE_WDT3_CLKCTRL_OFFSET,
3766 .context_offs = OMAP4_RM_ABE_WDT3_CONTEXT_OFFSET,
3767 .modulemode = MODULEMODE_SWCTRL,
3768 },
3769 },
3770};
3771
3772
3773/*
3774 * interfaces
3775 */
3776
Paul Walmsley42b9e382012-04-19 13:33:54 -06003777static struct omap_hwmod_addr_space omap44xx_c2c_target_fw_addrs[] = {
3778 {
3779 .pa_start = 0x4a204000,
3780 .pa_end = 0x4a2040ff,
3781 .flags = ADDR_TYPE_RT
3782 },
3783 { }
3784};
3785
3786/* c2c -> c2c_target_fw */
3787static struct omap_hwmod_ocp_if omap44xx_c2c__c2c_target_fw = {
3788 .master = &omap44xx_c2c_hwmod,
3789 .slave = &omap44xx_c2c_target_fw_hwmod,
3790 .clk = "div_core_ck",
3791 .addr = omap44xx_c2c_target_fw_addrs,
3792 .user = OCP_USER_MPU,
3793};
3794
3795/* l4_cfg -> c2c_target_fw */
3796static struct omap_hwmod_ocp_if omap44xx_l4_cfg__c2c_target_fw = {
3797 .master = &omap44xx_l4_cfg_hwmod,
3798 .slave = &omap44xx_c2c_target_fw_hwmod,
3799 .clk = "l4_div_ck",
3800 .user = OCP_USER_MPU | OCP_USER_SDMA,
3801};
3802
Paul Walmsley844a3b62012-04-19 04:04:33 -06003803/* l3_main_1 -> dmm */
3804static struct omap_hwmod_ocp_if omap44xx_l3_main_1__dmm = {
3805 .master = &omap44xx_l3_main_1_hwmod,
3806 .slave = &omap44xx_dmm_hwmod,
3807 .clk = "l3_div_ck",
3808 .user = OCP_USER_SDMA,
3809};
3810
3811static struct omap_hwmod_addr_space omap44xx_dmm_addrs[] = {
3812 {
3813 .pa_start = 0x4e000000,
3814 .pa_end = 0x4e0007ff,
3815 .flags = ADDR_TYPE_RT
3816 },
3817 { }
3818};
3819
3820/* mpu -> dmm */
3821static struct omap_hwmod_ocp_if omap44xx_mpu__dmm = {
3822 .master = &omap44xx_mpu_hwmod,
3823 .slave = &omap44xx_dmm_hwmod,
3824 .clk = "l3_div_ck",
3825 .addr = omap44xx_dmm_addrs,
3826 .user = OCP_USER_MPU,
3827};
3828
Paul Walmsley42b9e382012-04-19 13:33:54 -06003829/* c2c -> emif_fw */
3830static struct omap_hwmod_ocp_if omap44xx_c2c__emif_fw = {
3831 .master = &omap44xx_c2c_hwmod,
3832 .slave = &omap44xx_emif_fw_hwmod,
3833 .clk = "div_core_ck",
3834 .user = OCP_USER_MPU | OCP_USER_SDMA,
3835};
3836
Paul Walmsley844a3b62012-04-19 04:04:33 -06003837/* dmm -> emif_fw */
3838static struct omap_hwmod_ocp_if omap44xx_dmm__emif_fw = {
3839 .master = &omap44xx_dmm_hwmod,
3840 .slave = &omap44xx_emif_fw_hwmod,
3841 .clk = "l3_div_ck",
3842 .user = OCP_USER_MPU | OCP_USER_SDMA,
3843};
3844
3845static struct omap_hwmod_addr_space omap44xx_emif_fw_addrs[] = {
3846 {
3847 .pa_start = 0x4a20c000,
3848 .pa_end = 0x4a20c0ff,
3849 .flags = ADDR_TYPE_RT
3850 },
3851 { }
3852};
3853
3854/* l4_cfg -> emif_fw */
3855static struct omap_hwmod_ocp_if omap44xx_l4_cfg__emif_fw = {
3856 .master = &omap44xx_l4_cfg_hwmod,
3857 .slave = &omap44xx_emif_fw_hwmod,
3858 .clk = "l4_div_ck",
3859 .addr = omap44xx_emif_fw_addrs,
3860 .user = OCP_USER_MPU,
3861};
3862
3863/* iva -> l3_instr */
3864static struct omap_hwmod_ocp_if omap44xx_iva__l3_instr = {
3865 .master = &omap44xx_iva_hwmod,
3866 .slave = &omap44xx_l3_instr_hwmod,
3867 .clk = "l3_div_ck",
3868 .user = OCP_USER_MPU | OCP_USER_SDMA,
3869};
3870
3871/* l3_main_3 -> l3_instr */
3872static struct omap_hwmod_ocp_if omap44xx_l3_main_3__l3_instr = {
3873 .master = &omap44xx_l3_main_3_hwmod,
3874 .slave = &omap44xx_l3_instr_hwmod,
3875 .clk = "l3_div_ck",
3876 .user = OCP_USER_MPU | OCP_USER_SDMA,
3877};
3878
Benoît Cousson9a817bc2012-04-19 13:33:56 -06003879/* ocp_wp_noc -> l3_instr */
3880static struct omap_hwmod_ocp_if omap44xx_ocp_wp_noc__l3_instr = {
3881 .master = &omap44xx_ocp_wp_noc_hwmod,
3882 .slave = &omap44xx_l3_instr_hwmod,
3883 .clk = "l3_div_ck",
3884 .user = OCP_USER_MPU | OCP_USER_SDMA,
3885};
3886
Paul Walmsley844a3b62012-04-19 04:04:33 -06003887/* dsp -> l3_main_1 */
3888static struct omap_hwmod_ocp_if omap44xx_dsp__l3_main_1 = {
3889 .master = &omap44xx_dsp_hwmod,
3890 .slave = &omap44xx_l3_main_1_hwmod,
3891 .clk = "l3_div_ck",
3892 .user = OCP_USER_MPU | OCP_USER_SDMA,
3893};
3894
3895/* dss -> l3_main_1 */
3896static struct omap_hwmod_ocp_if omap44xx_dss__l3_main_1 = {
3897 .master = &omap44xx_dss_hwmod,
3898 .slave = &omap44xx_l3_main_1_hwmod,
3899 .clk = "l3_div_ck",
3900 .user = OCP_USER_MPU | OCP_USER_SDMA,
3901};
3902
3903/* l3_main_2 -> l3_main_1 */
3904static struct omap_hwmod_ocp_if omap44xx_l3_main_2__l3_main_1 = {
3905 .master = &omap44xx_l3_main_2_hwmod,
3906 .slave = &omap44xx_l3_main_1_hwmod,
3907 .clk = "l3_div_ck",
3908 .user = OCP_USER_MPU | OCP_USER_SDMA,
3909};
3910
3911/* l4_cfg -> l3_main_1 */
3912static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l3_main_1 = {
3913 .master = &omap44xx_l4_cfg_hwmod,
3914 .slave = &omap44xx_l3_main_1_hwmod,
3915 .clk = "l4_div_ck",
3916 .user = OCP_USER_MPU | OCP_USER_SDMA,
3917};
3918
3919/* mmc1 -> l3_main_1 */
3920static struct omap_hwmod_ocp_if omap44xx_mmc1__l3_main_1 = {
3921 .master = &omap44xx_mmc1_hwmod,
3922 .slave = &omap44xx_l3_main_1_hwmod,
3923 .clk = "l3_div_ck",
3924 .user = OCP_USER_MPU | OCP_USER_SDMA,
3925};
3926
3927/* mmc2 -> l3_main_1 */
3928static struct omap_hwmod_ocp_if omap44xx_mmc2__l3_main_1 = {
3929 .master = &omap44xx_mmc2_hwmod,
3930 .slave = &omap44xx_l3_main_1_hwmod,
3931 .clk = "l3_div_ck",
3932 .user = OCP_USER_MPU | OCP_USER_SDMA,
3933};
3934
3935static struct omap_hwmod_addr_space omap44xx_l3_main_1_addrs[] = {
3936 {
3937 .pa_start = 0x44000000,
3938 .pa_end = 0x44000fff,
3939 .flags = ADDR_TYPE_RT
3940 },
3941 { }
3942};
3943
3944/* mpu -> l3_main_1 */
3945static struct omap_hwmod_ocp_if omap44xx_mpu__l3_main_1 = {
3946 .master = &omap44xx_mpu_hwmod,
3947 .slave = &omap44xx_l3_main_1_hwmod,
3948 .clk = "l3_div_ck",
3949 .addr = omap44xx_l3_main_1_addrs,
3950 .user = OCP_USER_MPU,
3951};
3952
Paul Walmsley42b9e382012-04-19 13:33:54 -06003953/* c2c_target_fw -> l3_main_2 */
3954static struct omap_hwmod_ocp_if omap44xx_c2c_target_fw__l3_main_2 = {
3955 .master = &omap44xx_c2c_target_fw_hwmod,
3956 .slave = &omap44xx_l3_main_2_hwmod,
3957 .clk = "l3_div_ck",
3958 .user = OCP_USER_MPU | OCP_USER_SDMA,
3959};
3960
Benoît Cousson96566042012-04-19 13:33:59 -06003961/* debugss -> l3_main_2 */
3962static struct omap_hwmod_ocp_if omap44xx_debugss__l3_main_2 = {
3963 .master = &omap44xx_debugss_hwmod,
3964 .slave = &omap44xx_l3_main_2_hwmod,
3965 .clk = "dbgclk_mux_ck",
3966 .user = OCP_USER_MPU | OCP_USER_SDMA,
3967};
3968
Paul Walmsley844a3b62012-04-19 04:04:33 -06003969/* dma_system -> l3_main_2 */
3970static struct omap_hwmod_ocp_if omap44xx_dma_system__l3_main_2 = {
3971 .master = &omap44xx_dma_system_hwmod,
3972 .slave = &omap44xx_l3_main_2_hwmod,
3973 .clk = "l3_div_ck",
3974 .user = OCP_USER_MPU | OCP_USER_SDMA,
3975};
3976
Ming Leib050f682012-04-19 13:33:50 -06003977/* fdif -> l3_main_2 */
3978static struct omap_hwmod_ocp_if omap44xx_fdif__l3_main_2 = {
3979 .master = &omap44xx_fdif_hwmod,
3980 .slave = &omap44xx_l3_main_2_hwmod,
3981 .clk = "l3_div_ck",
3982 .user = OCP_USER_MPU | OCP_USER_SDMA,
3983};
3984
Paul Walmsley9def3902012-04-19 13:33:53 -06003985/* gpu -> l3_main_2 */
3986static struct omap_hwmod_ocp_if omap44xx_gpu__l3_main_2 = {
3987 .master = &omap44xx_gpu_hwmod,
3988 .slave = &omap44xx_l3_main_2_hwmod,
3989 .clk = "l3_div_ck",
3990 .user = OCP_USER_MPU | OCP_USER_SDMA,
3991};
3992
Paul Walmsley844a3b62012-04-19 04:04:33 -06003993/* hsi -> l3_main_2 */
3994static struct omap_hwmod_ocp_if omap44xx_hsi__l3_main_2 = {
3995 .master = &omap44xx_hsi_hwmod,
3996 .slave = &omap44xx_l3_main_2_hwmod,
3997 .clk = "l3_div_ck",
3998 .user = OCP_USER_MPU | OCP_USER_SDMA,
3999};
4000
4001/* ipu -> l3_main_2 */
4002static struct omap_hwmod_ocp_if omap44xx_ipu__l3_main_2 = {
4003 .master = &omap44xx_ipu_hwmod,
4004 .slave = &omap44xx_l3_main_2_hwmod,
4005 .clk = "l3_div_ck",
4006 .user = OCP_USER_MPU | OCP_USER_SDMA,
4007};
4008
4009/* iss -> l3_main_2 */
4010static struct omap_hwmod_ocp_if omap44xx_iss__l3_main_2 = {
4011 .master = &omap44xx_iss_hwmod,
4012 .slave = &omap44xx_l3_main_2_hwmod,
4013 .clk = "l3_div_ck",
4014 .user = OCP_USER_MPU | OCP_USER_SDMA,
4015};
4016
4017/* iva -> l3_main_2 */
4018static struct omap_hwmod_ocp_if omap44xx_iva__l3_main_2 = {
4019 .master = &omap44xx_iva_hwmod,
4020 .slave = &omap44xx_l3_main_2_hwmod,
4021 .clk = "l3_div_ck",
4022 .user = OCP_USER_MPU | OCP_USER_SDMA,
4023};
4024
4025static struct omap_hwmod_addr_space omap44xx_l3_main_2_addrs[] = {
4026 {
4027 .pa_start = 0x44800000,
4028 .pa_end = 0x44801fff,
4029 .flags = ADDR_TYPE_RT
4030 },
4031 { }
4032};
4033
4034/* l3_main_1 -> l3_main_2 */
4035static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l3_main_2 = {
4036 .master = &omap44xx_l3_main_1_hwmod,
4037 .slave = &omap44xx_l3_main_2_hwmod,
4038 .clk = "l3_div_ck",
4039 .addr = omap44xx_l3_main_2_addrs,
4040 .user = OCP_USER_MPU,
4041};
4042
4043/* l4_cfg -> l3_main_2 */
4044static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l3_main_2 = {
4045 .master = &omap44xx_l4_cfg_hwmod,
4046 .slave = &omap44xx_l3_main_2_hwmod,
4047 .clk = "l4_div_ck",
4048 .user = OCP_USER_MPU | OCP_USER_SDMA,
4049};
4050
Benoît Cousson0c668872012-04-19 13:33:55 -06004051/* usb_host_fs -> l3_main_2 */
Paul Walmsleyb0a70cc2012-07-04 06:55:29 -06004052static struct omap_hwmod_ocp_if __maybe_unused omap44xx_usb_host_fs__l3_main_2 = {
Benoît Cousson0c668872012-04-19 13:33:55 -06004053 .master = &omap44xx_usb_host_fs_hwmod,
4054 .slave = &omap44xx_l3_main_2_hwmod,
4055 .clk = "l3_div_ck",
4056 .user = OCP_USER_MPU | OCP_USER_SDMA,
4057};
4058
Paul Walmsley844a3b62012-04-19 04:04:33 -06004059/* usb_host_hs -> l3_main_2 */
4060static struct omap_hwmod_ocp_if omap44xx_usb_host_hs__l3_main_2 = {
4061 .master = &omap44xx_usb_host_hs_hwmod,
4062 .slave = &omap44xx_l3_main_2_hwmod,
4063 .clk = "l3_div_ck",
4064 .user = OCP_USER_MPU | OCP_USER_SDMA,
4065};
4066
4067/* usb_otg_hs -> l3_main_2 */
4068static struct omap_hwmod_ocp_if omap44xx_usb_otg_hs__l3_main_2 = {
4069 .master = &omap44xx_usb_otg_hs_hwmod,
4070 .slave = &omap44xx_l3_main_2_hwmod,
4071 .clk = "l3_div_ck",
4072 .user = OCP_USER_MPU | OCP_USER_SDMA,
4073};
4074
4075static struct omap_hwmod_addr_space omap44xx_l3_main_3_addrs[] = {
4076 {
4077 .pa_start = 0x45000000,
4078 .pa_end = 0x45000fff,
4079 .flags = ADDR_TYPE_RT
4080 },
4081 { }
4082};
4083
4084/* l3_main_1 -> l3_main_3 */
4085static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l3_main_3 = {
4086 .master = &omap44xx_l3_main_1_hwmod,
4087 .slave = &omap44xx_l3_main_3_hwmod,
4088 .clk = "l3_div_ck",
4089 .addr = omap44xx_l3_main_3_addrs,
4090 .user = OCP_USER_MPU,
4091};
4092
4093/* l3_main_2 -> l3_main_3 */
4094static struct omap_hwmod_ocp_if omap44xx_l3_main_2__l3_main_3 = {
4095 .master = &omap44xx_l3_main_2_hwmod,
4096 .slave = &omap44xx_l3_main_3_hwmod,
4097 .clk = "l3_div_ck",
4098 .user = OCP_USER_MPU | OCP_USER_SDMA,
4099};
4100
4101/* l4_cfg -> l3_main_3 */
4102static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l3_main_3 = {
4103 .master = &omap44xx_l4_cfg_hwmod,
4104 .slave = &omap44xx_l3_main_3_hwmod,
4105 .clk = "l4_div_ck",
4106 .user = OCP_USER_MPU | OCP_USER_SDMA,
4107};
4108
4109/* aess -> l4_abe */
Paul Walmsleyb0a70cc2012-07-04 06:55:29 -06004110static struct omap_hwmod_ocp_if __maybe_unused omap44xx_aess__l4_abe = {
Paul Walmsley844a3b62012-04-19 04:04:33 -06004111 .master = &omap44xx_aess_hwmod,
4112 .slave = &omap44xx_l4_abe_hwmod,
4113 .clk = "ocp_abe_iclk",
4114 .user = OCP_USER_MPU | OCP_USER_SDMA,
4115};
4116
4117/* dsp -> l4_abe */
4118static struct omap_hwmod_ocp_if omap44xx_dsp__l4_abe = {
4119 .master = &omap44xx_dsp_hwmod,
4120 .slave = &omap44xx_l4_abe_hwmod,
4121 .clk = "ocp_abe_iclk",
4122 .user = OCP_USER_MPU | OCP_USER_SDMA,
4123};
4124
4125/* l3_main_1 -> l4_abe */
4126static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l4_abe = {
4127 .master = &omap44xx_l3_main_1_hwmod,
4128 .slave = &omap44xx_l4_abe_hwmod,
4129 .clk = "l3_div_ck",
4130 .user = OCP_USER_MPU | OCP_USER_SDMA,
4131};
4132
4133/* mpu -> l4_abe */
4134static struct omap_hwmod_ocp_if omap44xx_mpu__l4_abe = {
4135 .master = &omap44xx_mpu_hwmod,
4136 .slave = &omap44xx_l4_abe_hwmod,
4137 .clk = "ocp_abe_iclk",
4138 .user = OCP_USER_MPU | OCP_USER_SDMA,
4139};
4140
4141/* l3_main_1 -> l4_cfg */
4142static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l4_cfg = {
4143 .master = &omap44xx_l3_main_1_hwmod,
4144 .slave = &omap44xx_l4_cfg_hwmod,
4145 .clk = "l3_div_ck",
4146 .user = OCP_USER_MPU | OCP_USER_SDMA,
4147};
4148
4149/* l3_main_2 -> l4_per */
4150static struct omap_hwmod_ocp_if omap44xx_l3_main_2__l4_per = {
4151 .master = &omap44xx_l3_main_2_hwmod,
4152 .slave = &omap44xx_l4_per_hwmod,
4153 .clk = "l3_div_ck",
4154 .user = OCP_USER_MPU | OCP_USER_SDMA,
4155};
4156
4157/* l4_cfg -> l4_wkup */
4158static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l4_wkup = {
4159 .master = &omap44xx_l4_cfg_hwmod,
4160 .slave = &omap44xx_l4_wkup_hwmod,
4161 .clk = "l4_div_ck",
4162 .user = OCP_USER_MPU | OCP_USER_SDMA,
4163};
4164
4165/* mpu -> mpu_private */
4166static struct omap_hwmod_ocp_if omap44xx_mpu__mpu_private = {
4167 .master = &omap44xx_mpu_hwmod,
4168 .slave = &omap44xx_mpu_private_hwmod,
4169 .clk = "l3_div_ck",
4170 .user = OCP_USER_MPU | OCP_USER_SDMA,
4171};
4172
Benoît Cousson9a817bc2012-04-19 13:33:56 -06004173static struct omap_hwmod_addr_space omap44xx_ocp_wp_noc_addrs[] = {
4174 {
4175 .pa_start = 0x4a102000,
4176 .pa_end = 0x4a10207f,
4177 .flags = ADDR_TYPE_RT
4178 },
4179 { }
4180};
4181
4182/* l4_cfg -> ocp_wp_noc */
4183static struct omap_hwmod_ocp_if omap44xx_l4_cfg__ocp_wp_noc = {
4184 .master = &omap44xx_l4_cfg_hwmod,
4185 .slave = &omap44xx_ocp_wp_noc_hwmod,
4186 .clk = "l4_div_ck",
4187 .addr = omap44xx_ocp_wp_noc_addrs,
4188 .user = OCP_USER_MPU | OCP_USER_SDMA,
4189};
4190
Paul Walmsley844a3b62012-04-19 04:04:33 -06004191static struct omap_hwmod_addr_space omap44xx_aess_addrs[] = {
4192 {
4193 .pa_start = 0x401f1000,
4194 .pa_end = 0x401f13ff,
4195 .flags = ADDR_TYPE_RT
4196 },
4197 { }
4198};
4199
4200/* l4_abe -> aess */
Paul Walmsleyb0a70cc2012-07-04 06:55:29 -06004201static struct omap_hwmod_ocp_if __maybe_unused omap44xx_l4_abe__aess = {
Paul Walmsley844a3b62012-04-19 04:04:33 -06004202 .master = &omap44xx_l4_abe_hwmod,
4203 .slave = &omap44xx_aess_hwmod,
4204 .clk = "ocp_abe_iclk",
4205 .addr = omap44xx_aess_addrs,
4206 .user = OCP_USER_MPU,
4207};
4208
4209static struct omap_hwmod_addr_space omap44xx_aess_dma_addrs[] = {
4210 {
4211 .pa_start = 0x490f1000,
4212 .pa_end = 0x490f13ff,
4213 .flags = ADDR_TYPE_RT
4214 },
4215 { }
4216};
4217
4218/* l4_abe -> aess (dma) */
Paul Walmsleyb0a70cc2012-07-04 06:55:29 -06004219static struct omap_hwmod_ocp_if __maybe_unused omap44xx_l4_abe__aess_dma = {
Paul Walmsley844a3b62012-04-19 04:04:33 -06004220 .master = &omap44xx_l4_abe_hwmod,
4221 .slave = &omap44xx_aess_hwmod,
4222 .clk = "ocp_abe_iclk",
4223 .addr = omap44xx_aess_dma_addrs,
4224 .user = OCP_USER_SDMA,
4225};
4226
Paul Walmsley42b9e382012-04-19 13:33:54 -06004227/* l3_main_2 -> c2c */
4228static struct omap_hwmod_ocp_if omap44xx_l3_main_2__c2c = {
4229 .master = &omap44xx_l3_main_2_hwmod,
4230 .slave = &omap44xx_c2c_hwmod,
4231 .clk = "l3_div_ck",
4232 .user = OCP_USER_MPU | OCP_USER_SDMA,
4233};
4234
Paul Walmsley844a3b62012-04-19 04:04:33 -06004235static struct omap_hwmod_addr_space omap44xx_counter_32k_addrs[] = {
4236 {
4237 .pa_start = 0x4a304000,
4238 .pa_end = 0x4a30401f,
4239 .flags = ADDR_TYPE_RT
4240 },
4241 { }
4242};
4243
4244/* l4_wkup -> counter_32k */
4245static struct omap_hwmod_ocp_if omap44xx_l4_wkup__counter_32k = {
4246 .master = &omap44xx_l4_wkup_hwmod,
4247 .slave = &omap44xx_counter_32k_hwmod,
4248 .clk = "l4_wkup_clk_mux_ck",
4249 .addr = omap44xx_counter_32k_addrs,
4250 .user = OCP_USER_MPU | OCP_USER_SDMA,
4251};
4252
Paul Walmsleya0b5d812012-04-19 13:33:57 -06004253static struct omap_hwmod_addr_space omap44xx_ctrl_module_core_addrs[] = {
4254 {
4255 .pa_start = 0x4a002000,
4256 .pa_end = 0x4a0027ff,
4257 .flags = ADDR_TYPE_RT
4258 },
4259 { }
4260};
4261
4262/* l4_cfg -> ctrl_module_core */
4263static struct omap_hwmod_ocp_if omap44xx_l4_cfg__ctrl_module_core = {
4264 .master = &omap44xx_l4_cfg_hwmod,
4265 .slave = &omap44xx_ctrl_module_core_hwmod,
4266 .clk = "l4_div_ck",
4267 .addr = omap44xx_ctrl_module_core_addrs,
4268 .user = OCP_USER_MPU | OCP_USER_SDMA,
4269};
4270
4271static struct omap_hwmod_addr_space omap44xx_ctrl_module_pad_core_addrs[] = {
4272 {
4273 .pa_start = 0x4a100000,
4274 .pa_end = 0x4a1007ff,
4275 .flags = ADDR_TYPE_RT
4276 },
4277 { }
4278};
4279
4280/* l4_cfg -> ctrl_module_pad_core */
4281static struct omap_hwmod_ocp_if omap44xx_l4_cfg__ctrl_module_pad_core = {
4282 .master = &omap44xx_l4_cfg_hwmod,
4283 .slave = &omap44xx_ctrl_module_pad_core_hwmod,
4284 .clk = "l4_div_ck",
4285 .addr = omap44xx_ctrl_module_pad_core_addrs,
4286 .user = OCP_USER_MPU | OCP_USER_SDMA,
4287};
4288
4289static struct omap_hwmod_addr_space omap44xx_ctrl_module_wkup_addrs[] = {
4290 {
4291 .pa_start = 0x4a30c000,
4292 .pa_end = 0x4a30c7ff,
4293 .flags = ADDR_TYPE_RT
4294 },
4295 { }
4296};
4297
4298/* l4_wkup -> ctrl_module_wkup */
4299static struct omap_hwmod_ocp_if omap44xx_l4_wkup__ctrl_module_wkup = {
4300 .master = &omap44xx_l4_wkup_hwmod,
4301 .slave = &omap44xx_ctrl_module_wkup_hwmod,
4302 .clk = "l4_wkup_clk_mux_ck",
4303 .addr = omap44xx_ctrl_module_wkup_addrs,
4304 .user = OCP_USER_MPU | OCP_USER_SDMA,
4305};
4306
4307static struct omap_hwmod_addr_space omap44xx_ctrl_module_pad_wkup_addrs[] = {
4308 {
4309 .pa_start = 0x4a31e000,
4310 .pa_end = 0x4a31e7ff,
4311 .flags = ADDR_TYPE_RT
4312 },
4313 { }
4314};
4315
4316/* l4_wkup -> ctrl_module_pad_wkup */
4317static struct omap_hwmod_ocp_if omap44xx_l4_wkup__ctrl_module_pad_wkup = {
4318 .master = &omap44xx_l4_wkup_hwmod,
4319 .slave = &omap44xx_ctrl_module_pad_wkup_hwmod,
4320 .clk = "l4_wkup_clk_mux_ck",
4321 .addr = omap44xx_ctrl_module_pad_wkup_addrs,
4322 .user = OCP_USER_MPU | OCP_USER_SDMA,
4323};
4324
Benoît Cousson96566042012-04-19 13:33:59 -06004325static struct omap_hwmod_addr_space omap44xx_debugss_addrs[] = {
4326 {
4327 .pa_start = 0x54160000,
4328 .pa_end = 0x54167fff,
4329 .flags = ADDR_TYPE_RT
4330 },
4331 { }
4332};
4333
4334/* l3_instr -> debugss */
4335static struct omap_hwmod_ocp_if omap44xx_l3_instr__debugss = {
4336 .master = &omap44xx_l3_instr_hwmod,
4337 .slave = &omap44xx_debugss_hwmod,
4338 .clk = "l3_div_ck",
4339 .addr = omap44xx_debugss_addrs,
4340 .user = OCP_USER_MPU | OCP_USER_SDMA,
4341};
4342
Paul Walmsley844a3b62012-04-19 04:04:33 -06004343static struct omap_hwmod_addr_space omap44xx_dma_system_addrs[] = {
4344 {
4345 .pa_start = 0x4a056000,
4346 .pa_end = 0x4a056fff,
4347 .flags = ADDR_TYPE_RT
4348 },
4349 { }
4350};
4351
4352/* l4_cfg -> dma_system */
4353static struct omap_hwmod_ocp_if omap44xx_l4_cfg__dma_system = {
4354 .master = &omap44xx_l4_cfg_hwmod,
4355 .slave = &omap44xx_dma_system_hwmod,
4356 .clk = "l4_div_ck",
4357 .addr = omap44xx_dma_system_addrs,
4358 .user = OCP_USER_MPU | OCP_USER_SDMA,
4359};
4360
4361static struct omap_hwmod_addr_space omap44xx_dmic_addrs[] = {
4362 {
4363 .name = "mpu",
4364 .pa_start = 0x4012e000,
4365 .pa_end = 0x4012e07f,
4366 .flags = ADDR_TYPE_RT
4367 },
4368 { }
4369};
4370
4371/* l4_abe -> dmic */
4372static struct omap_hwmod_ocp_if omap44xx_l4_abe__dmic = {
4373 .master = &omap44xx_l4_abe_hwmod,
4374 .slave = &omap44xx_dmic_hwmod,
4375 .clk = "ocp_abe_iclk",
4376 .addr = omap44xx_dmic_addrs,
4377 .user = OCP_USER_MPU,
4378};
4379
4380static struct omap_hwmod_addr_space omap44xx_dmic_dma_addrs[] = {
4381 {
4382 .name = "dma",
4383 .pa_start = 0x4902e000,
4384 .pa_end = 0x4902e07f,
4385 .flags = ADDR_TYPE_RT
4386 },
4387 { }
4388};
4389
4390/* l4_abe -> dmic (dma) */
4391static struct omap_hwmod_ocp_if omap44xx_l4_abe__dmic_dma = {
4392 .master = &omap44xx_l4_abe_hwmod,
4393 .slave = &omap44xx_dmic_hwmod,
4394 .clk = "ocp_abe_iclk",
4395 .addr = omap44xx_dmic_dma_addrs,
4396 .user = OCP_USER_SDMA,
4397};
4398
4399/* dsp -> iva */
4400static struct omap_hwmod_ocp_if omap44xx_dsp__iva = {
4401 .master = &omap44xx_dsp_hwmod,
4402 .slave = &omap44xx_iva_hwmod,
4403 .clk = "dpll_iva_m5x2_ck",
4404 .user = OCP_USER_DSP,
4405};
4406
Paul Walmsley42b9e382012-04-19 13:33:54 -06004407/* dsp -> sl2if */
Tero Kristob3601242012-09-03 11:50:53 -06004408static struct omap_hwmod_ocp_if __maybe_unused omap44xx_dsp__sl2if = {
Paul Walmsley42b9e382012-04-19 13:33:54 -06004409 .master = &omap44xx_dsp_hwmod,
4410 .slave = &omap44xx_sl2if_hwmod,
4411 .clk = "dpll_iva_m5x2_ck",
4412 .user = OCP_USER_DSP,
4413};
4414
Paul Walmsley844a3b62012-04-19 04:04:33 -06004415/* l4_cfg -> dsp */
4416static struct omap_hwmod_ocp_if omap44xx_l4_cfg__dsp = {
4417 .master = &omap44xx_l4_cfg_hwmod,
4418 .slave = &omap44xx_dsp_hwmod,
4419 .clk = "l4_div_ck",
4420 .user = OCP_USER_MPU | OCP_USER_SDMA,
4421};
4422
4423static struct omap_hwmod_addr_space omap44xx_dss_dma_addrs[] = {
4424 {
4425 .pa_start = 0x58000000,
4426 .pa_end = 0x5800007f,
4427 .flags = ADDR_TYPE_RT
4428 },
4429 { }
4430};
4431
4432/* l3_main_2 -> dss */
4433static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss = {
4434 .master = &omap44xx_l3_main_2_hwmod,
4435 .slave = &omap44xx_dss_hwmod,
4436 .clk = "dss_fck",
4437 .addr = omap44xx_dss_dma_addrs,
4438 .user = OCP_USER_SDMA,
4439};
4440
4441static struct omap_hwmod_addr_space omap44xx_dss_addrs[] = {
4442 {
4443 .pa_start = 0x48040000,
4444 .pa_end = 0x4804007f,
4445 .flags = ADDR_TYPE_RT
4446 },
4447 { }
4448};
4449
4450/* l4_per -> dss */
4451static struct omap_hwmod_ocp_if omap44xx_l4_per__dss = {
4452 .master = &omap44xx_l4_per_hwmod,
4453 .slave = &omap44xx_dss_hwmod,
4454 .clk = "l4_div_ck",
4455 .addr = omap44xx_dss_addrs,
4456 .user = OCP_USER_MPU,
4457};
4458
4459static struct omap_hwmod_addr_space omap44xx_dss_dispc_dma_addrs[] = {
4460 {
4461 .pa_start = 0x58001000,
4462 .pa_end = 0x58001fff,
4463 .flags = ADDR_TYPE_RT
4464 },
4465 { }
4466};
4467
4468/* l3_main_2 -> dss_dispc */
4469static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_dispc = {
4470 .master = &omap44xx_l3_main_2_hwmod,
4471 .slave = &omap44xx_dss_dispc_hwmod,
4472 .clk = "dss_fck",
4473 .addr = omap44xx_dss_dispc_dma_addrs,
4474 .user = OCP_USER_SDMA,
4475};
4476
4477static struct omap_hwmod_addr_space omap44xx_dss_dispc_addrs[] = {
4478 {
4479 .pa_start = 0x48041000,
4480 .pa_end = 0x48041fff,
4481 .flags = ADDR_TYPE_RT
4482 },
4483 { }
4484};
4485
4486/* l4_per -> dss_dispc */
4487static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_dispc = {
4488 .master = &omap44xx_l4_per_hwmod,
4489 .slave = &omap44xx_dss_dispc_hwmod,
4490 .clk = "l4_div_ck",
4491 .addr = omap44xx_dss_dispc_addrs,
4492 .user = OCP_USER_MPU,
4493};
4494
4495static struct omap_hwmod_addr_space omap44xx_dss_dsi1_dma_addrs[] = {
4496 {
4497 .pa_start = 0x58004000,
4498 .pa_end = 0x580041ff,
4499 .flags = ADDR_TYPE_RT
4500 },
4501 { }
4502};
4503
4504/* l3_main_2 -> dss_dsi1 */
4505static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_dsi1 = {
4506 .master = &omap44xx_l3_main_2_hwmod,
4507 .slave = &omap44xx_dss_dsi1_hwmod,
4508 .clk = "dss_fck",
4509 .addr = omap44xx_dss_dsi1_dma_addrs,
4510 .user = OCP_USER_SDMA,
4511};
4512
4513static struct omap_hwmod_addr_space omap44xx_dss_dsi1_addrs[] = {
4514 {
4515 .pa_start = 0x48044000,
4516 .pa_end = 0x480441ff,
4517 .flags = ADDR_TYPE_RT
4518 },
4519 { }
4520};
4521
4522/* l4_per -> dss_dsi1 */
4523static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_dsi1 = {
4524 .master = &omap44xx_l4_per_hwmod,
4525 .slave = &omap44xx_dss_dsi1_hwmod,
4526 .clk = "l4_div_ck",
4527 .addr = omap44xx_dss_dsi1_addrs,
4528 .user = OCP_USER_MPU,
4529};
4530
4531static struct omap_hwmod_addr_space omap44xx_dss_dsi2_dma_addrs[] = {
4532 {
4533 .pa_start = 0x58005000,
4534 .pa_end = 0x580051ff,
4535 .flags = ADDR_TYPE_RT
4536 },
4537 { }
4538};
4539
4540/* l3_main_2 -> dss_dsi2 */
4541static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_dsi2 = {
4542 .master = &omap44xx_l3_main_2_hwmod,
4543 .slave = &omap44xx_dss_dsi2_hwmod,
4544 .clk = "dss_fck",
4545 .addr = omap44xx_dss_dsi2_dma_addrs,
4546 .user = OCP_USER_SDMA,
4547};
4548
4549static struct omap_hwmod_addr_space omap44xx_dss_dsi2_addrs[] = {
4550 {
4551 .pa_start = 0x48045000,
4552 .pa_end = 0x480451ff,
4553 .flags = ADDR_TYPE_RT
4554 },
4555 { }
4556};
4557
4558/* l4_per -> dss_dsi2 */
4559static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_dsi2 = {
4560 .master = &omap44xx_l4_per_hwmod,
4561 .slave = &omap44xx_dss_dsi2_hwmod,
4562 .clk = "l4_div_ck",
4563 .addr = omap44xx_dss_dsi2_addrs,
4564 .user = OCP_USER_MPU,
4565};
4566
4567static struct omap_hwmod_addr_space omap44xx_dss_hdmi_dma_addrs[] = {
4568 {
4569 .pa_start = 0x58006000,
4570 .pa_end = 0x58006fff,
4571 .flags = ADDR_TYPE_RT
4572 },
4573 { }
4574};
4575
4576/* l3_main_2 -> dss_hdmi */
4577static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_hdmi = {
4578 .master = &omap44xx_l3_main_2_hwmod,
4579 .slave = &omap44xx_dss_hdmi_hwmod,
4580 .clk = "dss_fck",
4581 .addr = omap44xx_dss_hdmi_dma_addrs,
4582 .user = OCP_USER_SDMA,
4583};
4584
4585static struct omap_hwmod_addr_space omap44xx_dss_hdmi_addrs[] = {
4586 {
4587 .pa_start = 0x48046000,
4588 .pa_end = 0x48046fff,
4589 .flags = ADDR_TYPE_RT
4590 },
4591 { }
4592};
4593
4594/* l4_per -> dss_hdmi */
4595static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_hdmi = {
4596 .master = &omap44xx_l4_per_hwmod,
4597 .slave = &omap44xx_dss_hdmi_hwmod,
4598 .clk = "l4_div_ck",
4599 .addr = omap44xx_dss_hdmi_addrs,
4600 .user = OCP_USER_MPU,
4601};
4602
4603static struct omap_hwmod_addr_space omap44xx_dss_rfbi_dma_addrs[] = {
4604 {
4605 .pa_start = 0x58002000,
4606 .pa_end = 0x580020ff,
4607 .flags = ADDR_TYPE_RT
4608 },
4609 { }
4610};
4611
4612/* l3_main_2 -> dss_rfbi */
4613static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_rfbi = {
4614 .master = &omap44xx_l3_main_2_hwmod,
4615 .slave = &omap44xx_dss_rfbi_hwmod,
4616 .clk = "dss_fck",
4617 .addr = omap44xx_dss_rfbi_dma_addrs,
4618 .user = OCP_USER_SDMA,
4619};
4620
4621static struct omap_hwmod_addr_space omap44xx_dss_rfbi_addrs[] = {
4622 {
4623 .pa_start = 0x48042000,
4624 .pa_end = 0x480420ff,
4625 .flags = ADDR_TYPE_RT
4626 },
4627 { }
4628};
4629
4630/* l4_per -> dss_rfbi */
4631static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_rfbi = {
4632 .master = &omap44xx_l4_per_hwmod,
4633 .slave = &omap44xx_dss_rfbi_hwmod,
4634 .clk = "l4_div_ck",
4635 .addr = omap44xx_dss_rfbi_addrs,
4636 .user = OCP_USER_MPU,
4637};
4638
4639static struct omap_hwmod_addr_space omap44xx_dss_venc_dma_addrs[] = {
4640 {
4641 .pa_start = 0x58003000,
4642 .pa_end = 0x580030ff,
4643 .flags = ADDR_TYPE_RT
4644 },
4645 { }
4646};
4647
4648/* l3_main_2 -> dss_venc */
4649static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_venc = {
4650 .master = &omap44xx_l3_main_2_hwmod,
4651 .slave = &omap44xx_dss_venc_hwmod,
4652 .clk = "dss_fck",
4653 .addr = omap44xx_dss_venc_dma_addrs,
4654 .user = OCP_USER_SDMA,
4655};
4656
4657static struct omap_hwmod_addr_space omap44xx_dss_venc_addrs[] = {
4658 {
4659 .pa_start = 0x48043000,
4660 .pa_end = 0x480430ff,
4661 .flags = ADDR_TYPE_RT
4662 },
4663 { }
4664};
4665
4666/* l4_per -> dss_venc */
4667static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_venc = {
4668 .master = &omap44xx_l4_per_hwmod,
4669 .slave = &omap44xx_dss_venc_hwmod,
4670 .clk = "l4_div_ck",
4671 .addr = omap44xx_dss_venc_addrs,
4672 .user = OCP_USER_MPU,
4673};
4674
Paul Walmsley42b9e382012-04-19 13:33:54 -06004675static struct omap_hwmod_addr_space omap44xx_elm_addrs[] = {
4676 {
4677 .pa_start = 0x48078000,
4678 .pa_end = 0x48078fff,
4679 .flags = ADDR_TYPE_RT
4680 },
4681 { }
4682};
4683
4684/* l4_per -> elm */
4685static struct omap_hwmod_ocp_if omap44xx_l4_per__elm = {
4686 .master = &omap44xx_l4_per_hwmod,
4687 .slave = &omap44xx_elm_hwmod,
4688 .clk = "l4_div_ck",
4689 .addr = omap44xx_elm_addrs,
4690 .user = OCP_USER_MPU | OCP_USER_SDMA,
4691};
4692
Paul Walmsleybf30f952012-04-19 13:33:52 -06004693static struct omap_hwmod_addr_space omap44xx_emif1_addrs[] = {
4694 {
4695 .pa_start = 0x4c000000,
4696 .pa_end = 0x4c0000ff,
4697 .flags = ADDR_TYPE_RT
4698 },
4699 { }
4700};
4701
4702/* emif_fw -> emif1 */
4703static struct omap_hwmod_ocp_if omap44xx_emif_fw__emif1 = {
4704 .master = &omap44xx_emif_fw_hwmod,
4705 .slave = &omap44xx_emif1_hwmod,
4706 .clk = "l3_div_ck",
4707 .addr = omap44xx_emif1_addrs,
4708 .user = OCP_USER_MPU | OCP_USER_SDMA,
4709};
4710
4711static struct omap_hwmod_addr_space omap44xx_emif2_addrs[] = {
4712 {
4713 .pa_start = 0x4d000000,
4714 .pa_end = 0x4d0000ff,
4715 .flags = ADDR_TYPE_RT
4716 },
4717 { }
4718};
4719
4720/* emif_fw -> emif2 */
4721static struct omap_hwmod_ocp_if omap44xx_emif_fw__emif2 = {
4722 .master = &omap44xx_emif_fw_hwmod,
4723 .slave = &omap44xx_emif2_hwmod,
4724 .clk = "l3_div_ck",
4725 .addr = omap44xx_emif2_addrs,
4726 .user = OCP_USER_MPU | OCP_USER_SDMA,
4727};
4728
Ming Leib050f682012-04-19 13:33:50 -06004729static struct omap_hwmod_addr_space omap44xx_fdif_addrs[] = {
4730 {
4731 .pa_start = 0x4a10a000,
4732 .pa_end = 0x4a10a1ff,
4733 .flags = ADDR_TYPE_RT
4734 },
4735 { }
4736};
4737
4738/* l4_cfg -> fdif */
4739static struct omap_hwmod_ocp_if omap44xx_l4_cfg__fdif = {
4740 .master = &omap44xx_l4_cfg_hwmod,
4741 .slave = &omap44xx_fdif_hwmod,
4742 .clk = "l4_div_ck",
4743 .addr = omap44xx_fdif_addrs,
4744 .user = OCP_USER_MPU | OCP_USER_SDMA,
4745};
4746
Paul Walmsley844a3b62012-04-19 04:04:33 -06004747static struct omap_hwmod_addr_space omap44xx_gpio1_addrs[] = {
4748 {
4749 .pa_start = 0x4a310000,
4750 .pa_end = 0x4a3101ff,
4751 .flags = ADDR_TYPE_RT
4752 },
4753 { }
4754};
4755
4756/* l4_wkup -> gpio1 */
4757static struct omap_hwmod_ocp_if omap44xx_l4_wkup__gpio1 = {
4758 .master = &omap44xx_l4_wkup_hwmod,
4759 .slave = &omap44xx_gpio1_hwmod,
4760 .clk = "l4_wkup_clk_mux_ck",
4761 .addr = omap44xx_gpio1_addrs,
4762 .user = OCP_USER_MPU | OCP_USER_SDMA,
4763};
4764
4765static struct omap_hwmod_addr_space omap44xx_gpio2_addrs[] = {
4766 {
4767 .pa_start = 0x48055000,
4768 .pa_end = 0x480551ff,
4769 .flags = ADDR_TYPE_RT
4770 },
4771 { }
4772};
4773
4774/* l4_per -> gpio2 */
4775static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio2 = {
4776 .master = &omap44xx_l4_per_hwmod,
4777 .slave = &omap44xx_gpio2_hwmod,
4778 .clk = "l4_div_ck",
4779 .addr = omap44xx_gpio2_addrs,
4780 .user = OCP_USER_MPU | OCP_USER_SDMA,
4781};
4782
4783static struct omap_hwmod_addr_space omap44xx_gpio3_addrs[] = {
4784 {
4785 .pa_start = 0x48057000,
4786 .pa_end = 0x480571ff,
4787 .flags = ADDR_TYPE_RT
4788 },
4789 { }
4790};
4791
4792/* l4_per -> gpio3 */
4793static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio3 = {
4794 .master = &omap44xx_l4_per_hwmod,
4795 .slave = &omap44xx_gpio3_hwmod,
4796 .clk = "l4_div_ck",
4797 .addr = omap44xx_gpio3_addrs,
4798 .user = OCP_USER_MPU | OCP_USER_SDMA,
4799};
4800
4801static struct omap_hwmod_addr_space omap44xx_gpio4_addrs[] = {
4802 {
4803 .pa_start = 0x48059000,
4804 .pa_end = 0x480591ff,
4805 .flags = ADDR_TYPE_RT
4806 },
4807 { }
4808};
4809
4810/* l4_per -> gpio4 */
4811static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio4 = {
4812 .master = &omap44xx_l4_per_hwmod,
4813 .slave = &omap44xx_gpio4_hwmod,
4814 .clk = "l4_div_ck",
4815 .addr = omap44xx_gpio4_addrs,
4816 .user = OCP_USER_MPU | OCP_USER_SDMA,
4817};
4818
4819static struct omap_hwmod_addr_space omap44xx_gpio5_addrs[] = {
4820 {
4821 .pa_start = 0x4805b000,
4822 .pa_end = 0x4805b1ff,
4823 .flags = ADDR_TYPE_RT
4824 },
4825 { }
4826};
4827
4828/* l4_per -> gpio5 */
4829static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio5 = {
4830 .master = &omap44xx_l4_per_hwmod,
4831 .slave = &omap44xx_gpio5_hwmod,
4832 .clk = "l4_div_ck",
4833 .addr = omap44xx_gpio5_addrs,
4834 .user = OCP_USER_MPU | OCP_USER_SDMA,
4835};
4836
4837static struct omap_hwmod_addr_space omap44xx_gpio6_addrs[] = {
4838 {
4839 .pa_start = 0x4805d000,
4840 .pa_end = 0x4805d1ff,
4841 .flags = ADDR_TYPE_RT
4842 },
4843 { }
4844};
4845
4846/* l4_per -> gpio6 */
4847static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio6 = {
4848 .master = &omap44xx_l4_per_hwmod,
4849 .slave = &omap44xx_gpio6_hwmod,
4850 .clk = "l4_div_ck",
4851 .addr = omap44xx_gpio6_addrs,
4852 .user = OCP_USER_MPU | OCP_USER_SDMA,
4853};
4854
Benoît Coussoneb42b5d2012-04-19 13:33:51 -06004855static struct omap_hwmod_addr_space omap44xx_gpmc_addrs[] = {
4856 {
4857 .pa_start = 0x50000000,
4858 .pa_end = 0x500003ff,
4859 .flags = ADDR_TYPE_RT
4860 },
4861 { }
4862};
4863
4864/* l3_main_2 -> gpmc */
4865static struct omap_hwmod_ocp_if omap44xx_l3_main_2__gpmc = {
4866 .master = &omap44xx_l3_main_2_hwmod,
4867 .slave = &omap44xx_gpmc_hwmod,
4868 .clk = "l3_div_ck",
4869 .addr = omap44xx_gpmc_addrs,
4870 .user = OCP_USER_MPU | OCP_USER_SDMA,
4871};
4872
Paul Walmsley9def3902012-04-19 13:33:53 -06004873static struct omap_hwmod_addr_space omap44xx_gpu_addrs[] = {
4874 {
4875 .pa_start = 0x56000000,
4876 .pa_end = 0x5600ffff,
4877 .flags = ADDR_TYPE_RT
4878 },
4879 { }
4880};
4881
4882/* l3_main_2 -> gpu */
4883static struct omap_hwmod_ocp_if omap44xx_l3_main_2__gpu = {
4884 .master = &omap44xx_l3_main_2_hwmod,
4885 .slave = &omap44xx_gpu_hwmod,
4886 .clk = "l3_div_ck",
4887 .addr = omap44xx_gpu_addrs,
4888 .user = OCP_USER_MPU | OCP_USER_SDMA,
4889};
4890
Paul Walmsleya091c082012-04-19 13:33:50 -06004891static struct omap_hwmod_addr_space omap44xx_hdq1w_addrs[] = {
4892 {
4893 .pa_start = 0x480b2000,
4894 .pa_end = 0x480b201f,
4895 .flags = ADDR_TYPE_RT
4896 },
4897 { }
4898};
4899
4900/* l4_per -> hdq1w */
4901static struct omap_hwmod_ocp_if omap44xx_l4_per__hdq1w = {
4902 .master = &omap44xx_l4_per_hwmod,
4903 .slave = &omap44xx_hdq1w_hwmod,
4904 .clk = "l4_div_ck",
4905 .addr = omap44xx_hdq1w_addrs,
4906 .user = OCP_USER_MPU | OCP_USER_SDMA,
4907};
4908
Paul Walmsley844a3b62012-04-19 04:04:33 -06004909static struct omap_hwmod_addr_space omap44xx_hsi_addrs[] = {
4910 {
4911 .pa_start = 0x4a058000,
4912 .pa_end = 0x4a05bfff,
4913 .flags = ADDR_TYPE_RT
4914 },
4915 { }
4916};
4917
4918/* l4_cfg -> hsi */
4919static struct omap_hwmod_ocp_if omap44xx_l4_cfg__hsi = {
4920 .master = &omap44xx_l4_cfg_hwmod,
4921 .slave = &omap44xx_hsi_hwmod,
4922 .clk = "l4_div_ck",
4923 .addr = omap44xx_hsi_addrs,
4924 .user = OCP_USER_MPU | OCP_USER_SDMA,
4925};
4926
4927static struct omap_hwmod_addr_space omap44xx_i2c1_addrs[] = {
4928 {
4929 .pa_start = 0x48070000,
4930 .pa_end = 0x480700ff,
4931 .flags = ADDR_TYPE_RT
4932 },
4933 { }
4934};
4935
4936/* l4_per -> i2c1 */
4937static struct omap_hwmod_ocp_if omap44xx_l4_per__i2c1 = {
4938 .master = &omap44xx_l4_per_hwmod,
4939 .slave = &omap44xx_i2c1_hwmod,
4940 .clk = "l4_div_ck",
4941 .addr = omap44xx_i2c1_addrs,
4942 .user = OCP_USER_MPU | OCP_USER_SDMA,
4943};
4944
4945static struct omap_hwmod_addr_space omap44xx_i2c2_addrs[] = {
4946 {
4947 .pa_start = 0x48072000,
4948 .pa_end = 0x480720ff,
4949 .flags = ADDR_TYPE_RT
4950 },
4951 { }
4952};
4953
4954/* l4_per -> i2c2 */
4955static struct omap_hwmod_ocp_if omap44xx_l4_per__i2c2 = {
4956 .master = &omap44xx_l4_per_hwmod,
4957 .slave = &omap44xx_i2c2_hwmod,
4958 .clk = "l4_div_ck",
4959 .addr = omap44xx_i2c2_addrs,
4960 .user = OCP_USER_MPU | OCP_USER_SDMA,
4961};
4962
4963static struct omap_hwmod_addr_space omap44xx_i2c3_addrs[] = {
4964 {
4965 .pa_start = 0x48060000,
4966 .pa_end = 0x480600ff,
4967 .flags = ADDR_TYPE_RT
4968 },
4969 { }
4970};
4971
4972/* l4_per -> i2c3 */
4973static struct omap_hwmod_ocp_if omap44xx_l4_per__i2c3 = {
4974 .master = &omap44xx_l4_per_hwmod,
4975 .slave = &omap44xx_i2c3_hwmod,
4976 .clk = "l4_div_ck",
4977 .addr = omap44xx_i2c3_addrs,
4978 .user = OCP_USER_MPU | OCP_USER_SDMA,
4979};
4980
4981static struct omap_hwmod_addr_space omap44xx_i2c4_addrs[] = {
4982 {
4983 .pa_start = 0x48350000,
4984 .pa_end = 0x483500ff,
4985 .flags = ADDR_TYPE_RT
4986 },
4987 { }
4988};
4989
4990/* l4_per -> i2c4 */
4991static struct omap_hwmod_ocp_if omap44xx_l4_per__i2c4 = {
4992 .master = &omap44xx_l4_per_hwmod,
4993 .slave = &omap44xx_i2c4_hwmod,
4994 .clk = "l4_div_ck",
4995 .addr = omap44xx_i2c4_addrs,
4996 .user = OCP_USER_MPU | OCP_USER_SDMA,
4997};
4998
4999/* l3_main_2 -> ipu */
5000static struct omap_hwmod_ocp_if omap44xx_l3_main_2__ipu = {
5001 .master = &omap44xx_l3_main_2_hwmod,
5002 .slave = &omap44xx_ipu_hwmod,
5003 .clk = "l3_div_ck",
5004 .user = OCP_USER_MPU | OCP_USER_SDMA,
5005};
5006
5007static struct omap_hwmod_addr_space omap44xx_iss_addrs[] = {
5008 {
5009 .pa_start = 0x52000000,
5010 .pa_end = 0x520000ff,
5011 .flags = ADDR_TYPE_RT
5012 },
5013 { }
5014};
5015
5016/* l3_main_2 -> iss */
5017static struct omap_hwmod_ocp_if omap44xx_l3_main_2__iss = {
5018 .master = &omap44xx_l3_main_2_hwmod,
5019 .slave = &omap44xx_iss_hwmod,
5020 .clk = "l3_div_ck",
5021 .addr = omap44xx_iss_addrs,
5022 .user = OCP_USER_MPU | OCP_USER_SDMA,
5023};
5024
Paul Walmsley42b9e382012-04-19 13:33:54 -06005025/* iva -> sl2if */
Tero Kristob3601242012-09-03 11:50:53 -06005026static struct omap_hwmod_ocp_if __maybe_unused omap44xx_iva__sl2if = {
Paul Walmsley42b9e382012-04-19 13:33:54 -06005027 .master = &omap44xx_iva_hwmod,
5028 .slave = &omap44xx_sl2if_hwmod,
5029 .clk = "dpll_iva_m5x2_ck",
5030 .user = OCP_USER_IVA,
5031};
5032
Paul Walmsley844a3b62012-04-19 04:04:33 -06005033static struct omap_hwmod_addr_space omap44xx_iva_addrs[] = {
5034 {
5035 .pa_start = 0x5a000000,
5036 .pa_end = 0x5a07ffff,
5037 .flags = ADDR_TYPE_RT
5038 },
5039 { }
5040};
5041
5042/* l3_main_2 -> iva */
5043static struct omap_hwmod_ocp_if omap44xx_l3_main_2__iva = {
5044 .master = &omap44xx_l3_main_2_hwmod,
5045 .slave = &omap44xx_iva_hwmod,
5046 .clk = "l3_div_ck",
5047 .addr = omap44xx_iva_addrs,
5048 .user = OCP_USER_MPU,
5049};
5050
5051static struct omap_hwmod_addr_space omap44xx_kbd_addrs[] = {
5052 {
5053 .pa_start = 0x4a31c000,
5054 .pa_end = 0x4a31c07f,
5055 .flags = ADDR_TYPE_RT
5056 },
5057 { }
5058};
5059
5060/* l4_wkup -> kbd */
5061static struct omap_hwmod_ocp_if omap44xx_l4_wkup__kbd = {
5062 .master = &omap44xx_l4_wkup_hwmod,
5063 .slave = &omap44xx_kbd_hwmod,
5064 .clk = "l4_wkup_clk_mux_ck",
5065 .addr = omap44xx_kbd_addrs,
5066 .user = OCP_USER_MPU | OCP_USER_SDMA,
5067};
5068
5069static struct omap_hwmod_addr_space omap44xx_mailbox_addrs[] = {
5070 {
5071 .pa_start = 0x4a0f4000,
5072 .pa_end = 0x4a0f41ff,
5073 .flags = ADDR_TYPE_RT
5074 },
5075 { }
5076};
5077
5078/* l4_cfg -> mailbox */
5079static struct omap_hwmod_ocp_if omap44xx_l4_cfg__mailbox = {
5080 .master = &omap44xx_l4_cfg_hwmod,
5081 .slave = &omap44xx_mailbox_hwmod,
5082 .clk = "l4_div_ck",
5083 .addr = omap44xx_mailbox_addrs,
5084 .user = OCP_USER_MPU | OCP_USER_SDMA,
5085};
5086
Benoît Cousson896d4e92012-04-19 13:33:54 -06005087static struct omap_hwmod_addr_space omap44xx_mcasp_addrs[] = {
5088 {
5089 .pa_start = 0x40128000,
5090 .pa_end = 0x401283ff,
5091 .flags = ADDR_TYPE_RT
5092 },
5093 { }
5094};
5095
5096/* l4_abe -> mcasp */
5097static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcasp = {
5098 .master = &omap44xx_l4_abe_hwmod,
5099 .slave = &omap44xx_mcasp_hwmod,
5100 .clk = "ocp_abe_iclk",
5101 .addr = omap44xx_mcasp_addrs,
5102 .user = OCP_USER_MPU,
5103};
5104
5105static struct omap_hwmod_addr_space omap44xx_mcasp_dma_addrs[] = {
5106 {
5107 .pa_start = 0x49028000,
5108 .pa_end = 0x490283ff,
5109 .flags = ADDR_TYPE_RT
5110 },
5111 { }
5112};
5113
5114/* l4_abe -> mcasp (dma) */
5115static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcasp_dma = {
5116 .master = &omap44xx_l4_abe_hwmod,
5117 .slave = &omap44xx_mcasp_hwmod,
5118 .clk = "ocp_abe_iclk",
5119 .addr = omap44xx_mcasp_dma_addrs,
5120 .user = OCP_USER_SDMA,
5121};
5122
Paul Walmsley844a3b62012-04-19 04:04:33 -06005123static struct omap_hwmod_addr_space omap44xx_mcbsp1_addrs[] = {
5124 {
5125 .name = "mpu",
5126 .pa_start = 0x40122000,
5127 .pa_end = 0x401220ff,
5128 .flags = ADDR_TYPE_RT
5129 },
5130 { }
5131};
5132
5133/* l4_abe -> mcbsp1 */
5134static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp1 = {
5135 .master = &omap44xx_l4_abe_hwmod,
5136 .slave = &omap44xx_mcbsp1_hwmod,
5137 .clk = "ocp_abe_iclk",
5138 .addr = omap44xx_mcbsp1_addrs,
5139 .user = OCP_USER_MPU,
5140};
5141
5142static struct omap_hwmod_addr_space omap44xx_mcbsp1_dma_addrs[] = {
5143 {
5144 .name = "dma",
5145 .pa_start = 0x49022000,
5146 .pa_end = 0x490220ff,
5147 .flags = ADDR_TYPE_RT
5148 },
5149 { }
5150};
5151
5152/* l4_abe -> mcbsp1 (dma) */
5153static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp1_dma = {
5154 .master = &omap44xx_l4_abe_hwmod,
5155 .slave = &omap44xx_mcbsp1_hwmod,
5156 .clk = "ocp_abe_iclk",
5157 .addr = omap44xx_mcbsp1_dma_addrs,
5158 .user = OCP_USER_SDMA,
5159};
5160
5161static struct omap_hwmod_addr_space omap44xx_mcbsp2_addrs[] = {
5162 {
5163 .name = "mpu",
5164 .pa_start = 0x40124000,
5165 .pa_end = 0x401240ff,
5166 .flags = ADDR_TYPE_RT
5167 },
5168 { }
5169};
5170
5171/* l4_abe -> mcbsp2 */
5172static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp2 = {
5173 .master = &omap44xx_l4_abe_hwmod,
5174 .slave = &omap44xx_mcbsp2_hwmod,
5175 .clk = "ocp_abe_iclk",
5176 .addr = omap44xx_mcbsp2_addrs,
5177 .user = OCP_USER_MPU,
5178};
5179
5180static struct omap_hwmod_addr_space omap44xx_mcbsp2_dma_addrs[] = {
5181 {
5182 .name = "dma",
5183 .pa_start = 0x49024000,
5184 .pa_end = 0x490240ff,
5185 .flags = ADDR_TYPE_RT
5186 },
5187 { }
5188};
5189
5190/* l4_abe -> mcbsp2 (dma) */
5191static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp2_dma = {
5192 .master = &omap44xx_l4_abe_hwmod,
5193 .slave = &omap44xx_mcbsp2_hwmod,
5194 .clk = "ocp_abe_iclk",
5195 .addr = omap44xx_mcbsp2_dma_addrs,
5196 .user = OCP_USER_SDMA,
5197};
5198
5199static struct omap_hwmod_addr_space omap44xx_mcbsp3_addrs[] = {
5200 {
5201 .name = "mpu",
5202 .pa_start = 0x40126000,
5203 .pa_end = 0x401260ff,
5204 .flags = ADDR_TYPE_RT
5205 },
5206 { }
5207};
5208
5209/* l4_abe -> mcbsp3 */
5210static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp3 = {
5211 .master = &omap44xx_l4_abe_hwmod,
5212 .slave = &omap44xx_mcbsp3_hwmod,
5213 .clk = "ocp_abe_iclk",
5214 .addr = omap44xx_mcbsp3_addrs,
5215 .user = OCP_USER_MPU,
5216};
5217
5218static struct omap_hwmod_addr_space omap44xx_mcbsp3_dma_addrs[] = {
5219 {
5220 .name = "dma",
5221 .pa_start = 0x49026000,
5222 .pa_end = 0x490260ff,
5223 .flags = ADDR_TYPE_RT
5224 },
5225 { }
5226};
5227
5228/* l4_abe -> mcbsp3 (dma) */
5229static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp3_dma = {
5230 .master = &omap44xx_l4_abe_hwmod,
5231 .slave = &omap44xx_mcbsp3_hwmod,
5232 .clk = "ocp_abe_iclk",
5233 .addr = omap44xx_mcbsp3_dma_addrs,
5234 .user = OCP_USER_SDMA,
5235};
5236
5237static struct omap_hwmod_addr_space omap44xx_mcbsp4_addrs[] = {
5238 {
5239 .pa_start = 0x48096000,
5240 .pa_end = 0x480960ff,
5241 .flags = ADDR_TYPE_RT
5242 },
5243 { }
5244};
5245
5246/* l4_per -> mcbsp4 */
5247static struct omap_hwmod_ocp_if omap44xx_l4_per__mcbsp4 = {
5248 .master = &omap44xx_l4_per_hwmod,
5249 .slave = &omap44xx_mcbsp4_hwmod,
5250 .clk = "l4_div_ck",
5251 .addr = omap44xx_mcbsp4_addrs,
5252 .user = OCP_USER_MPU | OCP_USER_SDMA,
5253};
5254
5255static struct omap_hwmod_addr_space omap44xx_mcpdm_addrs[] = {
5256 {
5257 .pa_start = 0x40132000,
5258 .pa_end = 0x4013207f,
5259 .flags = ADDR_TYPE_RT
5260 },
5261 { }
5262};
5263
5264/* l4_abe -> mcpdm */
5265static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcpdm = {
5266 .master = &omap44xx_l4_abe_hwmod,
5267 .slave = &omap44xx_mcpdm_hwmod,
5268 .clk = "ocp_abe_iclk",
5269 .addr = omap44xx_mcpdm_addrs,
5270 .user = OCP_USER_MPU,
5271};
5272
5273static struct omap_hwmod_addr_space omap44xx_mcpdm_dma_addrs[] = {
5274 {
5275 .pa_start = 0x49032000,
5276 .pa_end = 0x4903207f,
5277 .flags = ADDR_TYPE_RT
5278 },
5279 { }
5280};
5281
5282/* l4_abe -> mcpdm (dma) */
5283static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcpdm_dma = {
5284 .master = &omap44xx_l4_abe_hwmod,
5285 .slave = &omap44xx_mcpdm_hwmod,
5286 .clk = "ocp_abe_iclk",
5287 .addr = omap44xx_mcpdm_dma_addrs,
5288 .user = OCP_USER_SDMA,
5289};
5290
5291static struct omap_hwmod_addr_space omap44xx_mcspi1_addrs[] = {
5292 {
5293 .pa_start = 0x48098000,
5294 .pa_end = 0x480981ff,
5295 .flags = ADDR_TYPE_RT
5296 },
5297 { }
5298};
5299
5300/* l4_per -> mcspi1 */
5301static struct omap_hwmod_ocp_if omap44xx_l4_per__mcspi1 = {
5302 .master = &omap44xx_l4_per_hwmod,
5303 .slave = &omap44xx_mcspi1_hwmod,
5304 .clk = "l4_div_ck",
5305 .addr = omap44xx_mcspi1_addrs,
5306 .user = OCP_USER_MPU | OCP_USER_SDMA,
5307};
5308
5309static struct omap_hwmod_addr_space omap44xx_mcspi2_addrs[] = {
5310 {
5311 .pa_start = 0x4809a000,
5312 .pa_end = 0x4809a1ff,
5313 .flags = ADDR_TYPE_RT
5314 },
5315 { }
5316};
5317
5318/* l4_per -> mcspi2 */
5319static struct omap_hwmod_ocp_if omap44xx_l4_per__mcspi2 = {
5320 .master = &omap44xx_l4_per_hwmod,
5321 .slave = &omap44xx_mcspi2_hwmod,
5322 .clk = "l4_div_ck",
5323 .addr = omap44xx_mcspi2_addrs,
5324 .user = OCP_USER_MPU | OCP_USER_SDMA,
5325};
5326
5327static struct omap_hwmod_addr_space omap44xx_mcspi3_addrs[] = {
5328 {
5329 .pa_start = 0x480b8000,
5330 .pa_end = 0x480b81ff,
5331 .flags = ADDR_TYPE_RT
5332 },
5333 { }
5334};
5335
5336/* l4_per -> mcspi3 */
5337static struct omap_hwmod_ocp_if omap44xx_l4_per__mcspi3 = {
5338 .master = &omap44xx_l4_per_hwmod,
5339 .slave = &omap44xx_mcspi3_hwmod,
5340 .clk = "l4_div_ck",
5341 .addr = omap44xx_mcspi3_addrs,
5342 .user = OCP_USER_MPU | OCP_USER_SDMA,
5343};
5344
5345static struct omap_hwmod_addr_space omap44xx_mcspi4_addrs[] = {
5346 {
5347 .pa_start = 0x480ba000,
5348 .pa_end = 0x480ba1ff,
5349 .flags = ADDR_TYPE_RT
5350 },
5351 { }
5352};
5353
5354/* l4_per -> mcspi4 */
5355static struct omap_hwmod_ocp_if omap44xx_l4_per__mcspi4 = {
5356 .master = &omap44xx_l4_per_hwmod,
5357 .slave = &omap44xx_mcspi4_hwmod,
5358 .clk = "l4_div_ck",
5359 .addr = omap44xx_mcspi4_addrs,
5360 .user = OCP_USER_MPU | OCP_USER_SDMA,
5361};
5362
5363static struct omap_hwmod_addr_space omap44xx_mmc1_addrs[] = {
5364 {
5365 .pa_start = 0x4809c000,
5366 .pa_end = 0x4809c3ff,
5367 .flags = ADDR_TYPE_RT
5368 },
5369 { }
5370};
5371
5372/* l4_per -> mmc1 */
5373static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc1 = {
5374 .master = &omap44xx_l4_per_hwmod,
5375 .slave = &omap44xx_mmc1_hwmod,
5376 .clk = "l4_div_ck",
5377 .addr = omap44xx_mmc1_addrs,
5378 .user = OCP_USER_MPU | OCP_USER_SDMA,
5379};
5380
5381static struct omap_hwmod_addr_space omap44xx_mmc2_addrs[] = {
5382 {
5383 .pa_start = 0x480b4000,
5384 .pa_end = 0x480b43ff,
5385 .flags = ADDR_TYPE_RT
5386 },
5387 { }
5388};
5389
5390/* l4_per -> mmc2 */
5391static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc2 = {
5392 .master = &omap44xx_l4_per_hwmod,
5393 .slave = &omap44xx_mmc2_hwmod,
5394 .clk = "l4_div_ck",
5395 .addr = omap44xx_mmc2_addrs,
5396 .user = OCP_USER_MPU | OCP_USER_SDMA,
5397};
5398
5399static struct omap_hwmod_addr_space omap44xx_mmc3_addrs[] = {
5400 {
5401 .pa_start = 0x480ad000,
5402 .pa_end = 0x480ad3ff,
5403 .flags = ADDR_TYPE_RT
5404 },
5405 { }
5406};
5407
5408/* l4_per -> mmc3 */
5409static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc3 = {
5410 .master = &omap44xx_l4_per_hwmod,
5411 .slave = &omap44xx_mmc3_hwmod,
5412 .clk = "l4_div_ck",
5413 .addr = omap44xx_mmc3_addrs,
5414 .user = OCP_USER_MPU | OCP_USER_SDMA,
5415};
5416
5417static struct omap_hwmod_addr_space omap44xx_mmc4_addrs[] = {
5418 {
5419 .pa_start = 0x480d1000,
5420 .pa_end = 0x480d13ff,
5421 .flags = ADDR_TYPE_RT
5422 },
5423 { }
5424};
5425
5426/* l4_per -> mmc4 */
5427static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc4 = {
5428 .master = &omap44xx_l4_per_hwmod,
5429 .slave = &omap44xx_mmc4_hwmod,
5430 .clk = "l4_div_ck",
5431 .addr = omap44xx_mmc4_addrs,
5432 .user = OCP_USER_MPU | OCP_USER_SDMA,
5433};
5434
5435static struct omap_hwmod_addr_space omap44xx_mmc5_addrs[] = {
5436 {
5437 .pa_start = 0x480d5000,
5438 .pa_end = 0x480d53ff,
5439 .flags = ADDR_TYPE_RT
5440 },
5441 { }
5442};
5443
5444/* l4_per -> mmc5 */
5445static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc5 = {
5446 .master = &omap44xx_l4_per_hwmod,
5447 .slave = &omap44xx_mmc5_hwmod,
5448 .clk = "l4_div_ck",
5449 .addr = omap44xx_mmc5_addrs,
5450 .user = OCP_USER_MPU | OCP_USER_SDMA,
5451};
5452
Paul Walmsleye17f18c2012-04-19 13:33:56 -06005453/* l3_main_2 -> ocmc_ram */
5454static struct omap_hwmod_ocp_if omap44xx_l3_main_2__ocmc_ram = {
5455 .master = &omap44xx_l3_main_2_hwmod,
5456 .slave = &omap44xx_ocmc_ram_hwmod,
5457 .clk = "l3_div_ck",
5458 .user = OCP_USER_MPU | OCP_USER_SDMA,
5459};
5460
Benoit Cousson33c976e2012-09-23 17:28:21 -06005461static struct omap_hwmod_addr_space omap44xx_ocp2scp_usb_phy_addrs[] = {
5462 {
5463 .pa_start = 0x4a0ad000,
5464 .pa_end = 0x4a0ad01f,
5465 .flags = ADDR_TYPE_RT
5466 },
5467 { }
5468};
5469
Benoît Cousson0c668872012-04-19 13:33:55 -06005470/* l4_cfg -> ocp2scp_usb_phy */
5471static struct omap_hwmod_ocp_if omap44xx_l4_cfg__ocp2scp_usb_phy = {
5472 .master = &omap44xx_l4_cfg_hwmod,
5473 .slave = &omap44xx_ocp2scp_usb_phy_hwmod,
5474 .clk = "l4_div_ck",
Benoit Cousson33c976e2012-09-23 17:28:21 -06005475 .addr = omap44xx_ocp2scp_usb_phy_addrs,
Benoît Cousson0c668872012-04-19 13:33:55 -06005476 .user = OCP_USER_MPU | OCP_USER_SDMA,
5477};
5478
Paul Walmsley794b4802012-04-19 13:33:58 -06005479static struct omap_hwmod_addr_space omap44xx_prcm_mpu_addrs[] = {
5480 {
5481 .pa_start = 0x48243000,
5482 .pa_end = 0x48243fff,
5483 .flags = ADDR_TYPE_RT
5484 },
5485 { }
5486};
5487
5488/* mpu_private -> prcm_mpu */
5489static struct omap_hwmod_ocp_if omap44xx_mpu_private__prcm_mpu = {
5490 .master = &omap44xx_mpu_private_hwmod,
5491 .slave = &omap44xx_prcm_mpu_hwmod,
5492 .clk = "l3_div_ck",
5493 .addr = omap44xx_prcm_mpu_addrs,
5494 .user = OCP_USER_MPU | OCP_USER_SDMA,
5495};
5496
5497static struct omap_hwmod_addr_space omap44xx_cm_core_aon_addrs[] = {
5498 {
5499 .pa_start = 0x4a004000,
5500 .pa_end = 0x4a004fff,
5501 .flags = ADDR_TYPE_RT
5502 },
5503 { }
5504};
5505
5506/* l4_wkup -> cm_core_aon */
5507static struct omap_hwmod_ocp_if omap44xx_l4_wkup__cm_core_aon = {
5508 .master = &omap44xx_l4_wkup_hwmod,
5509 .slave = &omap44xx_cm_core_aon_hwmod,
5510 .clk = "l4_wkup_clk_mux_ck",
5511 .addr = omap44xx_cm_core_aon_addrs,
5512 .user = OCP_USER_MPU | OCP_USER_SDMA,
5513};
5514
5515static struct omap_hwmod_addr_space omap44xx_cm_core_addrs[] = {
5516 {
5517 .pa_start = 0x4a008000,
5518 .pa_end = 0x4a009fff,
5519 .flags = ADDR_TYPE_RT
5520 },
5521 { }
5522};
5523
5524/* l4_cfg -> cm_core */
5525static struct omap_hwmod_ocp_if omap44xx_l4_cfg__cm_core = {
5526 .master = &omap44xx_l4_cfg_hwmod,
5527 .slave = &omap44xx_cm_core_hwmod,
5528 .clk = "l4_div_ck",
5529 .addr = omap44xx_cm_core_addrs,
5530 .user = OCP_USER_MPU | OCP_USER_SDMA,
5531};
5532
5533static struct omap_hwmod_addr_space omap44xx_prm_addrs[] = {
5534 {
5535 .pa_start = 0x4a306000,
5536 .pa_end = 0x4a307fff,
5537 .flags = ADDR_TYPE_RT
5538 },
5539 { }
5540};
5541
5542/* l4_wkup -> prm */
5543static struct omap_hwmod_ocp_if omap44xx_l4_wkup__prm = {
5544 .master = &omap44xx_l4_wkup_hwmod,
5545 .slave = &omap44xx_prm_hwmod,
5546 .clk = "l4_wkup_clk_mux_ck",
5547 .addr = omap44xx_prm_addrs,
5548 .user = OCP_USER_MPU | OCP_USER_SDMA,
5549};
5550
5551static struct omap_hwmod_addr_space omap44xx_scrm_addrs[] = {
5552 {
5553 .pa_start = 0x4a30a000,
5554 .pa_end = 0x4a30a7ff,
5555 .flags = ADDR_TYPE_RT
5556 },
5557 { }
5558};
5559
5560/* l4_wkup -> scrm */
5561static struct omap_hwmod_ocp_if omap44xx_l4_wkup__scrm = {
5562 .master = &omap44xx_l4_wkup_hwmod,
5563 .slave = &omap44xx_scrm_hwmod,
5564 .clk = "l4_wkup_clk_mux_ck",
5565 .addr = omap44xx_scrm_addrs,
5566 .user = OCP_USER_MPU | OCP_USER_SDMA,
5567};
5568
Paul Walmsley42b9e382012-04-19 13:33:54 -06005569/* l3_main_2 -> sl2if */
Tero Kristob3601242012-09-03 11:50:53 -06005570static struct omap_hwmod_ocp_if __maybe_unused omap44xx_l3_main_2__sl2if = {
Paul Walmsley42b9e382012-04-19 13:33:54 -06005571 .master = &omap44xx_l3_main_2_hwmod,
5572 .slave = &omap44xx_sl2if_hwmod,
5573 .clk = "l3_div_ck",
5574 .user = OCP_USER_MPU | OCP_USER_SDMA,
5575};
5576
Benoît Cousson1e3b5e592012-04-19 13:33:53 -06005577static struct omap_hwmod_addr_space omap44xx_slimbus1_addrs[] = {
5578 {
5579 .pa_start = 0x4012c000,
5580 .pa_end = 0x4012c3ff,
5581 .flags = ADDR_TYPE_RT
5582 },
5583 { }
5584};
5585
5586/* l4_abe -> slimbus1 */
5587static struct omap_hwmod_ocp_if omap44xx_l4_abe__slimbus1 = {
5588 .master = &omap44xx_l4_abe_hwmod,
5589 .slave = &omap44xx_slimbus1_hwmod,
5590 .clk = "ocp_abe_iclk",
5591 .addr = omap44xx_slimbus1_addrs,
5592 .user = OCP_USER_MPU,
5593};
5594
5595static struct omap_hwmod_addr_space omap44xx_slimbus1_dma_addrs[] = {
5596 {
5597 .pa_start = 0x4902c000,
5598 .pa_end = 0x4902c3ff,
5599 .flags = ADDR_TYPE_RT
5600 },
5601 { }
5602};
5603
5604/* l4_abe -> slimbus1 (dma) */
5605static struct omap_hwmod_ocp_if omap44xx_l4_abe__slimbus1_dma = {
5606 .master = &omap44xx_l4_abe_hwmod,
5607 .slave = &omap44xx_slimbus1_hwmod,
5608 .clk = "ocp_abe_iclk",
5609 .addr = omap44xx_slimbus1_dma_addrs,
5610 .user = OCP_USER_SDMA,
5611};
5612
5613static struct omap_hwmod_addr_space omap44xx_slimbus2_addrs[] = {
5614 {
5615 .pa_start = 0x48076000,
5616 .pa_end = 0x480763ff,
5617 .flags = ADDR_TYPE_RT
5618 },
5619 { }
5620};
5621
5622/* l4_per -> slimbus2 */
5623static struct omap_hwmod_ocp_if omap44xx_l4_per__slimbus2 = {
5624 .master = &omap44xx_l4_per_hwmod,
5625 .slave = &omap44xx_slimbus2_hwmod,
5626 .clk = "l4_div_ck",
5627 .addr = omap44xx_slimbus2_addrs,
5628 .user = OCP_USER_MPU | OCP_USER_SDMA,
5629};
5630
Paul Walmsley844a3b62012-04-19 04:04:33 -06005631static struct omap_hwmod_addr_space omap44xx_smartreflex_core_addrs[] = {
5632 {
5633 .pa_start = 0x4a0dd000,
5634 .pa_end = 0x4a0dd03f,
5635 .flags = ADDR_TYPE_RT
5636 },
5637 { }
5638};
5639
5640/* l4_cfg -> smartreflex_core */
5641static struct omap_hwmod_ocp_if omap44xx_l4_cfg__smartreflex_core = {
5642 .master = &omap44xx_l4_cfg_hwmod,
5643 .slave = &omap44xx_smartreflex_core_hwmod,
5644 .clk = "l4_div_ck",
5645 .addr = omap44xx_smartreflex_core_addrs,
5646 .user = OCP_USER_MPU | OCP_USER_SDMA,
5647};
5648
5649static struct omap_hwmod_addr_space omap44xx_smartreflex_iva_addrs[] = {
5650 {
5651 .pa_start = 0x4a0db000,
5652 .pa_end = 0x4a0db03f,
5653 .flags = ADDR_TYPE_RT
5654 },
5655 { }
5656};
5657
5658/* l4_cfg -> smartreflex_iva */
5659static struct omap_hwmod_ocp_if omap44xx_l4_cfg__smartreflex_iva = {
5660 .master = &omap44xx_l4_cfg_hwmod,
5661 .slave = &omap44xx_smartreflex_iva_hwmod,
5662 .clk = "l4_div_ck",
5663 .addr = omap44xx_smartreflex_iva_addrs,
5664 .user = OCP_USER_MPU | OCP_USER_SDMA,
5665};
5666
5667static struct omap_hwmod_addr_space omap44xx_smartreflex_mpu_addrs[] = {
5668 {
5669 .pa_start = 0x4a0d9000,
5670 .pa_end = 0x4a0d903f,
5671 .flags = ADDR_TYPE_RT
5672 },
5673 { }
5674};
5675
5676/* l4_cfg -> smartreflex_mpu */
5677static struct omap_hwmod_ocp_if omap44xx_l4_cfg__smartreflex_mpu = {
5678 .master = &omap44xx_l4_cfg_hwmod,
5679 .slave = &omap44xx_smartreflex_mpu_hwmod,
5680 .clk = "l4_div_ck",
5681 .addr = omap44xx_smartreflex_mpu_addrs,
5682 .user = OCP_USER_MPU | OCP_USER_SDMA,
5683};
5684
5685static struct omap_hwmod_addr_space omap44xx_spinlock_addrs[] = {
5686 {
5687 .pa_start = 0x4a0f6000,
5688 .pa_end = 0x4a0f6fff,
5689 .flags = ADDR_TYPE_RT
5690 },
5691 { }
5692};
5693
5694/* l4_cfg -> spinlock */
5695static struct omap_hwmod_ocp_if omap44xx_l4_cfg__spinlock = {
5696 .master = &omap44xx_l4_cfg_hwmod,
5697 .slave = &omap44xx_spinlock_hwmod,
5698 .clk = "l4_div_ck",
5699 .addr = omap44xx_spinlock_addrs,
5700 .user = OCP_USER_MPU | OCP_USER_SDMA,
5701};
5702
5703static struct omap_hwmod_addr_space omap44xx_timer1_addrs[] = {
5704 {
5705 .pa_start = 0x4a318000,
5706 .pa_end = 0x4a31807f,
5707 .flags = ADDR_TYPE_RT
5708 },
5709 { }
5710};
5711
5712/* l4_wkup -> timer1 */
5713static struct omap_hwmod_ocp_if omap44xx_l4_wkup__timer1 = {
5714 .master = &omap44xx_l4_wkup_hwmod,
5715 .slave = &omap44xx_timer1_hwmod,
5716 .clk = "l4_wkup_clk_mux_ck",
5717 .addr = omap44xx_timer1_addrs,
5718 .user = OCP_USER_MPU | OCP_USER_SDMA,
5719};
5720
5721static struct omap_hwmod_addr_space omap44xx_timer2_addrs[] = {
5722 {
5723 .pa_start = 0x48032000,
5724 .pa_end = 0x4803207f,
5725 .flags = ADDR_TYPE_RT
5726 },
5727 { }
5728};
5729
5730/* l4_per -> timer2 */
5731static struct omap_hwmod_ocp_if omap44xx_l4_per__timer2 = {
5732 .master = &omap44xx_l4_per_hwmod,
5733 .slave = &omap44xx_timer2_hwmod,
5734 .clk = "l4_div_ck",
5735 .addr = omap44xx_timer2_addrs,
5736 .user = OCP_USER_MPU | OCP_USER_SDMA,
5737};
5738
5739static struct omap_hwmod_addr_space omap44xx_timer3_addrs[] = {
5740 {
5741 .pa_start = 0x48034000,
5742 .pa_end = 0x4803407f,
5743 .flags = ADDR_TYPE_RT
5744 },
5745 { }
5746};
5747
5748/* l4_per -> timer3 */
5749static struct omap_hwmod_ocp_if omap44xx_l4_per__timer3 = {
5750 .master = &omap44xx_l4_per_hwmod,
5751 .slave = &omap44xx_timer3_hwmod,
5752 .clk = "l4_div_ck",
5753 .addr = omap44xx_timer3_addrs,
5754 .user = OCP_USER_MPU | OCP_USER_SDMA,
5755};
5756
5757static struct omap_hwmod_addr_space omap44xx_timer4_addrs[] = {
5758 {
5759 .pa_start = 0x48036000,
5760 .pa_end = 0x4803607f,
5761 .flags = ADDR_TYPE_RT
5762 },
5763 { }
5764};
5765
5766/* l4_per -> timer4 */
5767static struct omap_hwmod_ocp_if omap44xx_l4_per__timer4 = {
5768 .master = &omap44xx_l4_per_hwmod,
5769 .slave = &omap44xx_timer4_hwmod,
5770 .clk = "l4_div_ck",
5771 .addr = omap44xx_timer4_addrs,
5772 .user = OCP_USER_MPU | OCP_USER_SDMA,
5773};
5774
5775static struct omap_hwmod_addr_space omap44xx_timer5_addrs[] = {
5776 {
5777 .pa_start = 0x40138000,
5778 .pa_end = 0x4013807f,
5779 .flags = ADDR_TYPE_RT
5780 },
5781 { }
5782};
5783
5784/* l4_abe -> timer5 */
5785static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer5 = {
5786 .master = &omap44xx_l4_abe_hwmod,
5787 .slave = &omap44xx_timer5_hwmod,
5788 .clk = "ocp_abe_iclk",
5789 .addr = omap44xx_timer5_addrs,
5790 .user = OCP_USER_MPU,
5791};
5792
5793static struct omap_hwmod_addr_space omap44xx_timer5_dma_addrs[] = {
5794 {
5795 .pa_start = 0x49038000,
5796 .pa_end = 0x4903807f,
5797 .flags = ADDR_TYPE_RT
5798 },
5799 { }
5800};
5801
5802/* l4_abe -> timer5 (dma) */
5803static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer5_dma = {
5804 .master = &omap44xx_l4_abe_hwmod,
5805 .slave = &omap44xx_timer5_hwmod,
5806 .clk = "ocp_abe_iclk",
5807 .addr = omap44xx_timer5_dma_addrs,
5808 .user = OCP_USER_SDMA,
5809};
5810
5811static struct omap_hwmod_addr_space omap44xx_timer6_addrs[] = {
5812 {
5813 .pa_start = 0x4013a000,
5814 .pa_end = 0x4013a07f,
5815 .flags = ADDR_TYPE_RT
5816 },
5817 { }
5818};
5819
5820/* l4_abe -> timer6 */
5821static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer6 = {
5822 .master = &omap44xx_l4_abe_hwmod,
5823 .slave = &omap44xx_timer6_hwmod,
5824 .clk = "ocp_abe_iclk",
5825 .addr = omap44xx_timer6_addrs,
5826 .user = OCP_USER_MPU,
5827};
5828
5829static struct omap_hwmod_addr_space omap44xx_timer6_dma_addrs[] = {
5830 {
5831 .pa_start = 0x4903a000,
5832 .pa_end = 0x4903a07f,
5833 .flags = ADDR_TYPE_RT
5834 },
5835 { }
5836};
5837
5838/* l4_abe -> timer6 (dma) */
5839static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer6_dma = {
5840 .master = &omap44xx_l4_abe_hwmod,
5841 .slave = &omap44xx_timer6_hwmod,
5842 .clk = "ocp_abe_iclk",
5843 .addr = omap44xx_timer6_dma_addrs,
5844 .user = OCP_USER_SDMA,
5845};
5846
5847static struct omap_hwmod_addr_space omap44xx_timer7_addrs[] = {
5848 {
5849 .pa_start = 0x4013c000,
5850 .pa_end = 0x4013c07f,
5851 .flags = ADDR_TYPE_RT
5852 },
5853 { }
5854};
5855
5856/* l4_abe -> timer7 */
5857static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer7 = {
5858 .master = &omap44xx_l4_abe_hwmod,
5859 .slave = &omap44xx_timer7_hwmod,
5860 .clk = "ocp_abe_iclk",
5861 .addr = omap44xx_timer7_addrs,
5862 .user = OCP_USER_MPU,
5863};
5864
5865static struct omap_hwmod_addr_space omap44xx_timer7_dma_addrs[] = {
5866 {
5867 .pa_start = 0x4903c000,
5868 .pa_end = 0x4903c07f,
5869 .flags = ADDR_TYPE_RT
5870 },
5871 { }
5872};
5873
5874/* l4_abe -> timer7 (dma) */
5875static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer7_dma = {
5876 .master = &omap44xx_l4_abe_hwmod,
5877 .slave = &omap44xx_timer7_hwmod,
5878 .clk = "ocp_abe_iclk",
5879 .addr = omap44xx_timer7_dma_addrs,
5880 .user = OCP_USER_SDMA,
5881};
5882
5883static struct omap_hwmod_addr_space omap44xx_timer8_addrs[] = {
5884 {
5885 .pa_start = 0x4013e000,
5886 .pa_end = 0x4013e07f,
5887 .flags = ADDR_TYPE_RT
5888 },
5889 { }
5890};
5891
5892/* l4_abe -> timer8 */
5893static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer8 = {
5894 .master = &omap44xx_l4_abe_hwmod,
5895 .slave = &omap44xx_timer8_hwmod,
5896 .clk = "ocp_abe_iclk",
5897 .addr = omap44xx_timer8_addrs,
5898 .user = OCP_USER_MPU,
5899};
5900
5901static struct omap_hwmod_addr_space omap44xx_timer8_dma_addrs[] = {
5902 {
5903 .pa_start = 0x4903e000,
5904 .pa_end = 0x4903e07f,
5905 .flags = ADDR_TYPE_RT
5906 },
5907 { }
5908};
5909
5910/* l4_abe -> timer8 (dma) */
5911static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer8_dma = {
5912 .master = &omap44xx_l4_abe_hwmod,
5913 .slave = &omap44xx_timer8_hwmod,
5914 .clk = "ocp_abe_iclk",
5915 .addr = omap44xx_timer8_dma_addrs,
5916 .user = OCP_USER_SDMA,
5917};
5918
5919static struct omap_hwmod_addr_space omap44xx_timer9_addrs[] = {
5920 {
5921 .pa_start = 0x4803e000,
5922 .pa_end = 0x4803e07f,
5923 .flags = ADDR_TYPE_RT
5924 },
5925 { }
5926};
5927
5928/* l4_per -> timer9 */
5929static struct omap_hwmod_ocp_if omap44xx_l4_per__timer9 = {
5930 .master = &omap44xx_l4_per_hwmod,
5931 .slave = &omap44xx_timer9_hwmod,
5932 .clk = "l4_div_ck",
5933 .addr = omap44xx_timer9_addrs,
5934 .user = OCP_USER_MPU | OCP_USER_SDMA,
5935};
5936
5937static struct omap_hwmod_addr_space omap44xx_timer10_addrs[] = {
5938 {
5939 .pa_start = 0x48086000,
5940 .pa_end = 0x4808607f,
5941 .flags = ADDR_TYPE_RT
5942 },
5943 { }
5944};
5945
5946/* l4_per -> timer10 */
5947static struct omap_hwmod_ocp_if omap44xx_l4_per__timer10 = {
5948 .master = &omap44xx_l4_per_hwmod,
5949 .slave = &omap44xx_timer10_hwmod,
5950 .clk = "l4_div_ck",
5951 .addr = omap44xx_timer10_addrs,
5952 .user = OCP_USER_MPU | OCP_USER_SDMA,
5953};
5954
5955static struct omap_hwmod_addr_space omap44xx_timer11_addrs[] = {
5956 {
5957 .pa_start = 0x48088000,
5958 .pa_end = 0x4808807f,
5959 .flags = ADDR_TYPE_RT
5960 },
5961 { }
5962};
5963
5964/* l4_per -> timer11 */
5965static struct omap_hwmod_ocp_if omap44xx_l4_per__timer11 = {
5966 .master = &omap44xx_l4_per_hwmod,
5967 .slave = &omap44xx_timer11_hwmod,
5968 .clk = "l4_div_ck",
5969 .addr = omap44xx_timer11_addrs,
5970 .user = OCP_USER_MPU | OCP_USER_SDMA,
5971};
5972
5973static struct omap_hwmod_addr_space omap44xx_uart1_addrs[] = {
5974 {
5975 .pa_start = 0x4806a000,
5976 .pa_end = 0x4806a0ff,
5977 .flags = ADDR_TYPE_RT
5978 },
5979 { }
5980};
5981
5982/* l4_per -> uart1 */
5983static struct omap_hwmod_ocp_if omap44xx_l4_per__uart1 = {
5984 .master = &omap44xx_l4_per_hwmod,
5985 .slave = &omap44xx_uart1_hwmod,
5986 .clk = "l4_div_ck",
5987 .addr = omap44xx_uart1_addrs,
5988 .user = OCP_USER_MPU | OCP_USER_SDMA,
5989};
5990
5991static struct omap_hwmod_addr_space omap44xx_uart2_addrs[] = {
5992 {
5993 .pa_start = 0x4806c000,
5994 .pa_end = 0x4806c0ff,
5995 .flags = ADDR_TYPE_RT
5996 },
5997 { }
5998};
5999
6000/* l4_per -> uart2 */
6001static struct omap_hwmod_ocp_if omap44xx_l4_per__uart2 = {
6002 .master = &omap44xx_l4_per_hwmod,
6003 .slave = &omap44xx_uart2_hwmod,
6004 .clk = "l4_div_ck",
6005 .addr = omap44xx_uart2_addrs,
6006 .user = OCP_USER_MPU | OCP_USER_SDMA,
6007};
6008
6009static struct omap_hwmod_addr_space omap44xx_uart3_addrs[] = {
6010 {
6011 .pa_start = 0x48020000,
6012 .pa_end = 0x480200ff,
6013 .flags = ADDR_TYPE_RT
6014 },
6015 { }
6016};
6017
6018/* l4_per -> uart3 */
6019static struct omap_hwmod_ocp_if omap44xx_l4_per__uart3 = {
6020 .master = &omap44xx_l4_per_hwmod,
6021 .slave = &omap44xx_uart3_hwmod,
6022 .clk = "l4_div_ck",
6023 .addr = omap44xx_uart3_addrs,
6024 .user = OCP_USER_MPU | OCP_USER_SDMA,
6025};
6026
6027static struct omap_hwmod_addr_space omap44xx_uart4_addrs[] = {
6028 {
6029 .pa_start = 0x4806e000,
6030 .pa_end = 0x4806e0ff,
6031 .flags = ADDR_TYPE_RT
6032 },
6033 { }
6034};
6035
6036/* l4_per -> uart4 */
6037static struct omap_hwmod_ocp_if omap44xx_l4_per__uart4 = {
6038 .master = &omap44xx_l4_per_hwmod,
6039 .slave = &omap44xx_uart4_hwmod,
6040 .clk = "l4_div_ck",
6041 .addr = omap44xx_uart4_addrs,
6042 .user = OCP_USER_MPU | OCP_USER_SDMA,
6043};
6044
Benoît Cousson0c668872012-04-19 13:33:55 -06006045static struct omap_hwmod_addr_space omap44xx_usb_host_fs_addrs[] = {
6046 {
6047 .pa_start = 0x4a0a9000,
6048 .pa_end = 0x4a0a93ff,
6049 .flags = ADDR_TYPE_RT
6050 },
6051 { }
6052};
6053
6054/* l4_cfg -> usb_host_fs */
Paul Walmsleyb0a70cc2012-07-04 06:55:29 -06006055static struct omap_hwmod_ocp_if __maybe_unused omap44xx_l4_cfg__usb_host_fs = {
Benoît Cousson0c668872012-04-19 13:33:55 -06006056 .master = &omap44xx_l4_cfg_hwmod,
6057 .slave = &omap44xx_usb_host_fs_hwmod,
6058 .clk = "l4_div_ck",
6059 .addr = omap44xx_usb_host_fs_addrs,
6060 .user = OCP_USER_MPU | OCP_USER_SDMA,
6061};
6062
Paul Walmsley844a3b62012-04-19 04:04:33 -06006063static struct omap_hwmod_addr_space omap44xx_usb_host_hs_addrs[] = {
6064 {
6065 .name = "uhh",
6066 .pa_start = 0x4a064000,
6067 .pa_end = 0x4a0647ff,
6068 .flags = ADDR_TYPE_RT
6069 },
6070 {
6071 .name = "ohci",
6072 .pa_start = 0x4a064800,
6073 .pa_end = 0x4a064bff,
6074 },
6075 {
6076 .name = "ehci",
6077 .pa_start = 0x4a064c00,
6078 .pa_end = 0x4a064fff,
6079 },
6080 {}
6081};
6082
6083/* l4_cfg -> usb_host_hs */
6084static struct omap_hwmod_ocp_if omap44xx_l4_cfg__usb_host_hs = {
6085 .master = &omap44xx_l4_cfg_hwmod,
6086 .slave = &omap44xx_usb_host_hs_hwmod,
6087 .clk = "l4_div_ck",
6088 .addr = omap44xx_usb_host_hs_addrs,
6089 .user = OCP_USER_MPU | OCP_USER_SDMA,
6090};
6091
6092static struct omap_hwmod_addr_space omap44xx_usb_otg_hs_addrs[] = {
6093 {
6094 .pa_start = 0x4a0ab000,
Benoit Cousson33c976e2012-09-23 17:28:21 -06006095 .pa_end = 0x4a0ab7ff,
Paul Walmsley844a3b62012-04-19 04:04:33 -06006096 .flags = ADDR_TYPE_RT
6097 },
6098 { }
6099};
6100
6101/* l4_cfg -> usb_otg_hs */
6102static struct omap_hwmod_ocp_if omap44xx_l4_cfg__usb_otg_hs = {
6103 .master = &omap44xx_l4_cfg_hwmod,
6104 .slave = &omap44xx_usb_otg_hs_hwmod,
6105 .clk = "l4_div_ck",
6106 .addr = omap44xx_usb_otg_hs_addrs,
6107 .user = OCP_USER_MPU | OCP_USER_SDMA,
6108};
6109
Benoit Coussonaf88fa92011-12-15 23:15:18 -07006110static struct omap_hwmod_addr_space omap44xx_usb_tll_hs_addrs[] = {
6111 {
6112 .name = "tll",
6113 .pa_start = 0x4a062000,
6114 .pa_end = 0x4a063fff,
6115 .flags = ADDR_TYPE_RT
6116 },
6117 {}
6118};
6119
Paul Walmsley844a3b62012-04-19 04:04:33 -06006120/* l4_cfg -> usb_tll_hs */
Benoit Coussonaf88fa92011-12-15 23:15:18 -07006121static struct omap_hwmod_ocp_if omap44xx_l4_cfg__usb_tll_hs = {
6122 .master = &omap44xx_l4_cfg_hwmod,
6123 .slave = &omap44xx_usb_tll_hs_hwmod,
6124 .clk = "l4_div_ck",
6125 .addr = omap44xx_usb_tll_hs_addrs,
6126 .user = OCP_USER_MPU | OCP_USER_SDMA,
6127};
6128
Paul Walmsley844a3b62012-04-19 04:04:33 -06006129static struct omap_hwmod_addr_space omap44xx_wd_timer2_addrs[] = {
6130 {
6131 .pa_start = 0x4a314000,
6132 .pa_end = 0x4a31407f,
6133 .flags = ADDR_TYPE_RT
Benoit Coussonaf88fa92011-12-15 23:15:18 -07006134 },
Paul Walmsley844a3b62012-04-19 04:04:33 -06006135 { }
6136};
6137
6138/* l4_wkup -> wd_timer2 */
6139static struct omap_hwmod_ocp_if omap44xx_l4_wkup__wd_timer2 = {
6140 .master = &omap44xx_l4_wkup_hwmod,
6141 .slave = &omap44xx_wd_timer2_hwmod,
6142 .clk = "l4_wkup_clk_mux_ck",
6143 .addr = omap44xx_wd_timer2_addrs,
6144 .user = OCP_USER_MPU | OCP_USER_SDMA,
6145};
6146
6147static struct omap_hwmod_addr_space omap44xx_wd_timer3_addrs[] = {
6148 {
6149 .pa_start = 0x40130000,
6150 .pa_end = 0x4013007f,
6151 .flags = ADDR_TYPE_RT
6152 },
6153 { }
6154};
6155
6156/* l4_abe -> wd_timer3 */
6157static struct omap_hwmod_ocp_if omap44xx_l4_abe__wd_timer3 = {
6158 .master = &omap44xx_l4_abe_hwmod,
6159 .slave = &omap44xx_wd_timer3_hwmod,
6160 .clk = "ocp_abe_iclk",
6161 .addr = omap44xx_wd_timer3_addrs,
6162 .user = OCP_USER_MPU,
6163};
6164
6165static struct omap_hwmod_addr_space omap44xx_wd_timer3_dma_addrs[] = {
6166 {
6167 .pa_start = 0x49030000,
6168 .pa_end = 0x4903007f,
6169 .flags = ADDR_TYPE_RT
6170 },
6171 { }
6172};
6173
6174/* l4_abe -> wd_timer3 (dma) */
6175static struct omap_hwmod_ocp_if omap44xx_l4_abe__wd_timer3_dma = {
6176 .master = &omap44xx_l4_abe_hwmod,
6177 .slave = &omap44xx_wd_timer3_hwmod,
6178 .clk = "ocp_abe_iclk",
6179 .addr = omap44xx_wd_timer3_dma_addrs,
6180 .user = OCP_USER_SDMA,
Benoit Coussonaf88fa92011-12-15 23:15:18 -07006181};
6182
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06006183static struct omap_hwmod_ocp_if *omap44xx_hwmod_ocp_ifs[] __initdata = {
Paul Walmsley42b9e382012-04-19 13:33:54 -06006184 &omap44xx_c2c__c2c_target_fw,
6185 &omap44xx_l4_cfg__c2c_target_fw,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06006186 &omap44xx_l3_main_1__dmm,
6187 &omap44xx_mpu__dmm,
Paul Walmsley42b9e382012-04-19 13:33:54 -06006188 &omap44xx_c2c__emif_fw,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06006189 &omap44xx_dmm__emif_fw,
6190 &omap44xx_l4_cfg__emif_fw,
6191 &omap44xx_iva__l3_instr,
6192 &omap44xx_l3_main_3__l3_instr,
Benoît Cousson9a817bc2012-04-19 13:33:56 -06006193 &omap44xx_ocp_wp_noc__l3_instr,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06006194 &omap44xx_dsp__l3_main_1,
6195 &omap44xx_dss__l3_main_1,
6196 &omap44xx_l3_main_2__l3_main_1,
6197 &omap44xx_l4_cfg__l3_main_1,
6198 &omap44xx_mmc1__l3_main_1,
6199 &omap44xx_mmc2__l3_main_1,
6200 &omap44xx_mpu__l3_main_1,
Paul Walmsley42b9e382012-04-19 13:33:54 -06006201 &omap44xx_c2c_target_fw__l3_main_2,
Benoît Cousson96566042012-04-19 13:33:59 -06006202 &omap44xx_debugss__l3_main_2,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06006203 &omap44xx_dma_system__l3_main_2,
Ming Leib050f682012-04-19 13:33:50 -06006204 &omap44xx_fdif__l3_main_2,
Paul Walmsley9def3902012-04-19 13:33:53 -06006205 &omap44xx_gpu__l3_main_2,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06006206 &omap44xx_hsi__l3_main_2,
6207 &omap44xx_ipu__l3_main_2,
6208 &omap44xx_iss__l3_main_2,
6209 &omap44xx_iva__l3_main_2,
6210 &omap44xx_l3_main_1__l3_main_2,
6211 &omap44xx_l4_cfg__l3_main_2,
Paul Walmsleyb0a70cc2012-07-04 06:55:29 -06006212 /* &omap44xx_usb_host_fs__l3_main_2, */
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06006213 &omap44xx_usb_host_hs__l3_main_2,
6214 &omap44xx_usb_otg_hs__l3_main_2,
6215 &omap44xx_l3_main_1__l3_main_3,
6216 &omap44xx_l3_main_2__l3_main_3,
6217 &omap44xx_l4_cfg__l3_main_3,
Paul Walmsleyb0a70cc2012-07-04 06:55:29 -06006218 /* &omap44xx_aess__l4_abe, */
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06006219 &omap44xx_dsp__l4_abe,
6220 &omap44xx_l3_main_1__l4_abe,
6221 &omap44xx_mpu__l4_abe,
6222 &omap44xx_l3_main_1__l4_cfg,
6223 &omap44xx_l3_main_2__l4_per,
6224 &omap44xx_l4_cfg__l4_wkup,
6225 &omap44xx_mpu__mpu_private,
Benoît Cousson9a817bc2012-04-19 13:33:56 -06006226 &omap44xx_l4_cfg__ocp_wp_noc,
Paul Walmsleyb0a70cc2012-07-04 06:55:29 -06006227 /* &omap44xx_l4_abe__aess, */
6228 /* &omap44xx_l4_abe__aess_dma, */
Paul Walmsley42b9e382012-04-19 13:33:54 -06006229 &omap44xx_l3_main_2__c2c,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06006230 &omap44xx_l4_wkup__counter_32k,
Paul Walmsleya0b5d812012-04-19 13:33:57 -06006231 &omap44xx_l4_cfg__ctrl_module_core,
6232 &omap44xx_l4_cfg__ctrl_module_pad_core,
6233 &omap44xx_l4_wkup__ctrl_module_wkup,
6234 &omap44xx_l4_wkup__ctrl_module_pad_wkup,
Benoît Cousson96566042012-04-19 13:33:59 -06006235 &omap44xx_l3_instr__debugss,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06006236 &omap44xx_l4_cfg__dma_system,
6237 &omap44xx_l4_abe__dmic,
6238 &omap44xx_l4_abe__dmic_dma,
6239 &omap44xx_dsp__iva,
Tero Kristob3601242012-09-03 11:50:53 -06006240 /* &omap44xx_dsp__sl2if, */
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06006241 &omap44xx_l4_cfg__dsp,
6242 &omap44xx_l3_main_2__dss,
6243 &omap44xx_l4_per__dss,
6244 &omap44xx_l3_main_2__dss_dispc,
6245 &omap44xx_l4_per__dss_dispc,
6246 &omap44xx_l3_main_2__dss_dsi1,
6247 &omap44xx_l4_per__dss_dsi1,
6248 &omap44xx_l3_main_2__dss_dsi2,
6249 &omap44xx_l4_per__dss_dsi2,
6250 &omap44xx_l3_main_2__dss_hdmi,
6251 &omap44xx_l4_per__dss_hdmi,
6252 &omap44xx_l3_main_2__dss_rfbi,
6253 &omap44xx_l4_per__dss_rfbi,
6254 &omap44xx_l3_main_2__dss_venc,
6255 &omap44xx_l4_per__dss_venc,
Paul Walmsley42b9e382012-04-19 13:33:54 -06006256 &omap44xx_l4_per__elm,
Paul Walmsleybf30f952012-04-19 13:33:52 -06006257 &omap44xx_emif_fw__emif1,
6258 &omap44xx_emif_fw__emif2,
Ming Leib050f682012-04-19 13:33:50 -06006259 &omap44xx_l4_cfg__fdif,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06006260 &omap44xx_l4_wkup__gpio1,
6261 &omap44xx_l4_per__gpio2,
6262 &omap44xx_l4_per__gpio3,
6263 &omap44xx_l4_per__gpio4,
6264 &omap44xx_l4_per__gpio5,
6265 &omap44xx_l4_per__gpio6,
Benoît Coussoneb42b5d2012-04-19 13:33:51 -06006266 &omap44xx_l3_main_2__gpmc,
Paul Walmsley9def3902012-04-19 13:33:53 -06006267 &omap44xx_l3_main_2__gpu,
Paul Walmsleya091c082012-04-19 13:33:50 -06006268 &omap44xx_l4_per__hdq1w,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06006269 &omap44xx_l4_cfg__hsi,
6270 &omap44xx_l4_per__i2c1,
6271 &omap44xx_l4_per__i2c2,
6272 &omap44xx_l4_per__i2c3,
6273 &omap44xx_l4_per__i2c4,
6274 &omap44xx_l3_main_2__ipu,
6275 &omap44xx_l3_main_2__iss,
Tero Kristob3601242012-09-03 11:50:53 -06006276 /* &omap44xx_iva__sl2if, */
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06006277 &omap44xx_l3_main_2__iva,
6278 &omap44xx_l4_wkup__kbd,
6279 &omap44xx_l4_cfg__mailbox,
Benoît Cousson896d4e92012-04-19 13:33:54 -06006280 &omap44xx_l4_abe__mcasp,
6281 &omap44xx_l4_abe__mcasp_dma,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06006282 &omap44xx_l4_abe__mcbsp1,
6283 &omap44xx_l4_abe__mcbsp1_dma,
6284 &omap44xx_l4_abe__mcbsp2,
6285 &omap44xx_l4_abe__mcbsp2_dma,
6286 &omap44xx_l4_abe__mcbsp3,
6287 &omap44xx_l4_abe__mcbsp3_dma,
6288 &omap44xx_l4_per__mcbsp4,
6289 &omap44xx_l4_abe__mcpdm,
6290 &omap44xx_l4_abe__mcpdm_dma,
6291 &omap44xx_l4_per__mcspi1,
6292 &omap44xx_l4_per__mcspi2,
6293 &omap44xx_l4_per__mcspi3,
6294 &omap44xx_l4_per__mcspi4,
6295 &omap44xx_l4_per__mmc1,
6296 &omap44xx_l4_per__mmc2,
6297 &omap44xx_l4_per__mmc3,
6298 &omap44xx_l4_per__mmc4,
6299 &omap44xx_l4_per__mmc5,
Omar Ramirez Luna230844d2012-09-23 17:28:24 -06006300 &omap44xx_l3_main_2__mmu_ipu,
6301 &omap44xx_l4_cfg__mmu_dsp,
Paul Walmsleye17f18c2012-04-19 13:33:56 -06006302 &omap44xx_l3_main_2__ocmc_ram,
Benoît Cousson0c668872012-04-19 13:33:55 -06006303 &omap44xx_l4_cfg__ocp2scp_usb_phy,
Paul Walmsley794b4802012-04-19 13:33:58 -06006304 &omap44xx_mpu_private__prcm_mpu,
6305 &omap44xx_l4_wkup__cm_core_aon,
6306 &omap44xx_l4_cfg__cm_core,
6307 &omap44xx_l4_wkup__prm,
6308 &omap44xx_l4_wkup__scrm,
Tero Kristob3601242012-09-03 11:50:53 -06006309 /* &omap44xx_l3_main_2__sl2if, */
Benoît Cousson1e3b5e592012-04-19 13:33:53 -06006310 &omap44xx_l4_abe__slimbus1,
6311 &omap44xx_l4_abe__slimbus1_dma,
6312 &omap44xx_l4_per__slimbus2,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06006313 &omap44xx_l4_cfg__smartreflex_core,
6314 &omap44xx_l4_cfg__smartreflex_iva,
6315 &omap44xx_l4_cfg__smartreflex_mpu,
6316 &omap44xx_l4_cfg__spinlock,
6317 &omap44xx_l4_wkup__timer1,
6318 &omap44xx_l4_per__timer2,
6319 &omap44xx_l4_per__timer3,
6320 &omap44xx_l4_per__timer4,
6321 &omap44xx_l4_abe__timer5,
6322 &omap44xx_l4_abe__timer5_dma,
6323 &omap44xx_l4_abe__timer6,
6324 &omap44xx_l4_abe__timer6_dma,
6325 &omap44xx_l4_abe__timer7,
6326 &omap44xx_l4_abe__timer7_dma,
6327 &omap44xx_l4_abe__timer8,
6328 &omap44xx_l4_abe__timer8_dma,
6329 &omap44xx_l4_per__timer9,
6330 &omap44xx_l4_per__timer10,
6331 &omap44xx_l4_per__timer11,
6332 &omap44xx_l4_per__uart1,
6333 &omap44xx_l4_per__uart2,
6334 &omap44xx_l4_per__uart3,
6335 &omap44xx_l4_per__uart4,
Paul Walmsleyb0a70cc2012-07-04 06:55:29 -06006336 /* &omap44xx_l4_cfg__usb_host_fs, */
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06006337 &omap44xx_l4_cfg__usb_host_hs,
6338 &omap44xx_l4_cfg__usb_otg_hs,
6339 &omap44xx_l4_cfg__usb_tll_hs,
6340 &omap44xx_l4_wkup__wd_timer2,
6341 &omap44xx_l4_abe__wd_timer3,
6342 &omap44xx_l4_abe__wd_timer3_dma,
Benoit Cousson55d2cb02010-05-12 17:54:36 +02006343 NULL,
6344};
6345
6346int __init omap44xx_hwmod_init(void)
6347{
Kevin Hilman9ebfd282012-06-18 12:12:23 -06006348 omap_hwmod_init();
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06006349 return omap_hwmod_register_links(omap44xx_hwmod_ocp_ifs);
Benoit Cousson55d2cb02010-05-12 17:54:36 +02006350}
6351