blob: 2f257728a9beadab99efcc0f02d467afd1c766a8 [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>
22
23#include <plat/omap_hwmod.h>
24#include <plat/cpu.h>
Avinash.H.M6d3c55f2011-07-10 05:27:16 -060025#include <plat/i2c.h>
Benoit Cousson9780a9c2010-12-07 16:26:57 -080026#include <plat/gpio.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>
Benoit Cousson55d2cb02010-05-12 17:54:36 +020033
34#include "omap_hwmod_common_data.h"
35
Shweta Gulaticea6b942012-02-29 23:33:37 +010036#include "smartreflex.h"
Paul Walmsleyd198b512010-12-21 15:30:54 -070037#include "cm1_44xx.h"
38#include "cm2_44xx.h"
39#include "prm44xx.h"
Benoit Cousson55d2cb02010-05-12 17:54:36 +020040#include "prm-regbits-44xx.h"
Paul Walmsleyff2516f2010-12-21 15:39:15 -070041#include "wd_timer.h"
Benoit Cousson55d2cb02010-05-12 17:54:36 +020042
43/* Base offset for all OMAP4 interrupts external to MPUSS */
44#define OMAP44XX_IRQ_GIC_START 32
45
46/* Base offset for all OMAP4 dma requests */
Paul Walmsley844a3b62012-04-19 04:04:33 -060047#define OMAP44XX_DMA_REQ_START 1
Benoit Cousson55d2cb02010-05-12 17:54:36 +020048
49/*
Paul Walmsley844a3b62012-04-19 04:04:33 -060050 * IP blocks
Benoit Cousson55d2cb02010-05-12 17:54:36 +020051 */
52
53/*
54 * 'dmm' class
55 * instance(s): dmm
56 */
57static struct omap_hwmod_class omap44xx_dmm_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +000058 .name = "dmm",
Benoit Cousson55d2cb02010-05-12 17:54:36 +020059};
60
Benoit Cousson7e69ed92011-07-09 19:14:28 -060061/* dmm */
62static struct omap_hwmod_irq_info omap44xx_dmm_irqs[] = {
63 { .irq = 113 + OMAP44XX_IRQ_GIC_START },
64 { .irq = -1 }
65};
66
Benoit Cousson55d2cb02010-05-12 17:54:36 +020067static struct omap_hwmod omap44xx_dmm_hwmod = {
68 .name = "dmm",
69 .class = &omap44xx_dmm_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -060070 .clkdm_name = "l3_emif_clkdm",
Paul Walmsley844a3b62012-04-19 04:04:33 -060071 .mpu_irqs = omap44xx_dmm_irqs,
Benoit Coussond0f06312011-07-10 05:56:30 -060072 .prcm = {
73 .omap4 = {
74 .clkctrl_offs = OMAP4_CM_MEMIF_DMM_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -060075 .context_offs = OMAP4_RM_MEMIF_DMM_CONTEXT_OFFSET,
Benoit Coussond0f06312011-07-10 05:56:30 -060076 },
77 },
Benoit Cousson55d2cb02010-05-12 17:54:36 +020078};
79
80/*
81 * 'emif_fw' class
82 * instance(s): emif_fw
83 */
84static struct omap_hwmod_class omap44xx_emif_fw_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +000085 .name = "emif_fw",
Benoit Cousson55d2cb02010-05-12 17:54:36 +020086};
87
Benoit Cousson7e69ed92011-07-09 19:14:28 -060088/* emif_fw */
Benoit Cousson55d2cb02010-05-12 17:54:36 +020089static struct omap_hwmod omap44xx_emif_fw_hwmod = {
90 .name = "emif_fw",
91 .class = &omap44xx_emif_fw_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -060092 .clkdm_name = "l3_emif_clkdm",
Benoit Coussond0f06312011-07-10 05:56:30 -060093 .prcm = {
94 .omap4 = {
95 .clkctrl_offs = OMAP4_CM_MEMIF_EMIF_FW_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -060096 .context_offs = OMAP4_RM_MEMIF_EMIF_FW_CONTEXT_OFFSET,
Benoit Coussond0f06312011-07-10 05:56:30 -060097 },
98 },
Benoit Cousson55d2cb02010-05-12 17:54:36 +020099};
100
101/*
102 * 'l3' class
103 * instance(s): l3_instr, l3_main_1, l3_main_2, l3_main_3
104 */
105static struct omap_hwmod_class omap44xx_l3_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +0000106 .name = "l3",
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200107};
108
Benoit Cousson7e69ed92011-07-09 19:14:28 -0600109/* l3_instr */
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200110static struct omap_hwmod omap44xx_l3_instr_hwmod = {
111 .name = "l3_instr",
112 .class = &omap44xx_l3_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600113 .clkdm_name = "l3_instr_clkdm",
Benoit Coussond0f06312011-07-10 05:56:30 -0600114 .prcm = {
115 .omap4 = {
116 .clkctrl_offs = OMAP4_CM_L3INSTR_L3_INSTR_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600117 .context_offs = OMAP4_RM_L3INSTR_L3_INSTR_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -0600118 .modulemode = MODULEMODE_HWCTRL,
Benoit Coussond0f06312011-07-10 05:56:30 -0600119 },
120 },
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200121};
122
Benoit Cousson7e69ed92011-07-09 19:14:28 -0600123/* l3_main_1 */
Benoit Cousson9b4021b2011-07-09 19:14:27 -0600124static struct omap_hwmod_irq_info omap44xx_l3_main_1_irqs[] = {
125 { .name = "dbg_err", .irq = 9 + OMAP44XX_IRQ_GIC_START },
126 { .name = "app_err", .irq = 10 + OMAP44XX_IRQ_GIC_START },
127 { .irq = -1 }
128};
129
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200130static struct omap_hwmod omap44xx_l3_main_1_hwmod = {
131 .name = "l3_main_1",
132 .class = &omap44xx_l3_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600133 .clkdm_name = "l3_1_clkdm",
Benoit Cousson7e69ed92011-07-09 19:14:28 -0600134 .mpu_irqs = omap44xx_l3_main_1_irqs,
Benoit Coussond0f06312011-07-10 05:56:30 -0600135 .prcm = {
136 .omap4 = {
137 .clkctrl_offs = OMAP4_CM_L3_1_L3_1_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600138 .context_offs = OMAP4_RM_L3_1_L3_1_CONTEXT_OFFSET,
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_2 */
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200144static struct omap_hwmod omap44xx_l3_main_2_hwmod = {
145 .name = "l3_main_2",
146 .class = &omap44xx_l3_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600147 .clkdm_name = "l3_2_clkdm",
Benoit Coussond0f06312011-07-10 05:56:30 -0600148 .prcm = {
149 .omap4 = {
150 .clkctrl_offs = OMAP4_CM_L3_2_L3_2_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600151 .context_offs = OMAP4_RM_L3_2_L3_2_CONTEXT_OFFSET,
Benoit Coussond0f06312011-07-10 05:56:30 -0600152 },
153 },
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200154};
155
Benoit Cousson7e69ed92011-07-09 19:14:28 -0600156/* l3_main_3 */
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200157static struct omap_hwmod omap44xx_l3_main_3_hwmod = {
158 .name = "l3_main_3",
159 .class = &omap44xx_l3_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600160 .clkdm_name = "l3_instr_clkdm",
Benoit Coussond0f06312011-07-10 05:56:30 -0600161 .prcm = {
162 .omap4 = {
163 .clkctrl_offs = OMAP4_CM_L3INSTR_L3_3_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600164 .context_offs = OMAP4_RM_L3INSTR_L3_3_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -0600165 .modulemode = MODULEMODE_HWCTRL,
Benoit Coussond0f06312011-07-10 05:56:30 -0600166 },
167 },
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200168};
169
170/*
171 * 'l4' class
172 * instance(s): l4_abe, l4_cfg, l4_per, l4_wkup
173 */
174static struct omap_hwmod_class omap44xx_l4_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +0000175 .name = "l4",
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200176};
177
Benoit Cousson7e69ed92011-07-09 19:14:28 -0600178/* l4_abe */
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200179static struct omap_hwmod omap44xx_l4_abe_hwmod = {
180 .name = "l4_abe",
181 .class = &omap44xx_l4_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600182 .clkdm_name = "abe_clkdm",
Benoit Coussond0f06312011-07-10 05:56:30 -0600183 .prcm = {
184 .omap4 = {
185 .clkctrl_offs = OMAP4_CM1_ABE_L4ABE_CLKCTRL_OFFSET,
186 },
187 },
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200188};
189
Benoit Cousson7e69ed92011-07-09 19:14:28 -0600190/* l4_cfg */
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200191static struct omap_hwmod omap44xx_l4_cfg_hwmod = {
192 .name = "l4_cfg",
193 .class = &omap44xx_l4_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600194 .clkdm_name = "l4_cfg_clkdm",
Benoit Coussond0f06312011-07-10 05:56:30 -0600195 .prcm = {
196 .omap4 = {
197 .clkctrl_offs = OMAP4_CM_L4CFG_L4_CFG_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600198 .context_offs = OMAP4_RM_L4CFG_L4_CFG_CONTEXT_OFFSET,
Benoit Coussond0f06312011-07-10 05:56:30 -0600199 },
200 },
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200201};
202
Benoit Cousson7e69ed92011-07-09 19:14:28 -0600203/* l4_per */
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200204static struct omap_hwmod omap44xx_l4_per_hwmod = {
205 .name = "l4_per",
206 .class = &omap44xx_l4_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600207 .clkdm_name = "l4_per_clkdm",
Benoit Coussond0f06312011-07-10 05:56:30 -0600208 .prcm = {
209 .omap4 = {
210 .clkctrl_offs = OMAP4_CM_L4PER_L4PER_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600211 .context_offs = OMAP4_RM_L4PER_L4_PER_CONTEXT_OFFSET,
Benoit Coussond0f06312011-07-10 05:56:30 -0600212 },
213 },
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200214};
215
Benoit Cousson7e69ed92011-07-09 19:14:28 -0600216/* l4_wkup */
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200217static struct omap_hwmod omap44xx_l4_wkup_hwmod = {
218 .name = "l4_wkup",
219 .class = &omap44xx_l4_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600220 .clkdm_name = "l4_wkup_clkdm",
Benoit Coussond0f06312011-07-10 05:56:30 -0600221 .prcm = {
222 .omap4 = {
223 .clkctrl_offs = OMAP4_CM_WKUP_L4WKUP_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600224 .context_offs = OMAP4_RM_WKUP_L4WKUP_CONTEXT_OFFSET,
Benoit Coussond0f06312011-07-10 05:56:30 -0600225 },
226 },
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200227};
228
229/*
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700230 * 'mpu_bus' class
231 * instance(s): mpu_private
232 */
233static struct omap_hwmod_class omap44xx_mpu_bus_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +0000234 .name = "mpu_bus",
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700235};
236
Benoit Cousson7e69ed92011-07-09 19:14:28 -0600237/* mpu_private */
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700238static struct omap_hwmod omap44xx_mpu_private_hwmod = {
239 .name = "mpu_private",
240 .class = &omap44xx_mpu_bus_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600241 .clkdm_name = "mpuss_clkdm",
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700242};
243
244/*
245 * Modules omap_hwmod structures
246 *
247 * The following IPs are excluded for the moment because:
248 * - They do not need an explicit SW control using omap_hwmod API.
249 * - They still need to be validated with the driver
250 * properly adapted to omap_hwmod / omap_device
251 *
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700252 * c2c
253 * c2c_target_fw
254 * cm_core
255 * cm_core_aon
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700256 * ctrl_module_core
257 * ctrl_module_pad_core
258 * ctrl_module_pad_wkup
259 * ctrl_module_wkup
260 * debugss
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700261 * efuse_ctrl_cust
262 * efuse_ctrl_std
263 * elm
Benoit Cousson00fe6102011-07-09 19:14:28 -0600264 * mcasp
265 * mpu_c0
266 * mpu_c1
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700267 * ocmc_ram
268 * ocp2scp_usb_phy
269 * ocp_wp_noc
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700270 * prcm_mpu
271 * prm
272 * scrm
273 * sl2if
274 * slimbus1
275 * slimbus2
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700276 * usb_host_fs
277 * usb_host_hs
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700278 * usb_phy_cm
279 * usb_tll_hs
280 * usim
281 */
282
283/*
Benoit Cousson407a6882011-02-15 22:39:48 +0100284 * 'aess' class
285 * audio engine sub system
286 */
287
288static struct omap_hwmod_class_sysconfig omap44xx_aess_sysc = {
289 .rev_offs = 0x0000,
290 .sysc_offs = 0x0010,
291 .sysc_flags = (SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE),
292 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
Benoit Coussonc614ebf2011-07-01 22:54:01 +0200293 MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART |
294 MSTANDBY_SMART_WKUP),
Benoit Cousson407a6882011-02-15 22:39:48 +0100295 .sysc_fields = &omap_hwmod_sysc_type2,
296};
297
298static struct omap_hwmod_class omap44xx_aess_hwmod_class = {
299 .name = "aess",
300 .sysc = &omap44xx_aess_sysc,
301};
302
303/* aess */
304static struct omap_hwmod_irq_info omap44xx_aess_irqs[] = {
305 { .irq = 99 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -0600306 { .irq = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +0100307};
308
309static struct omap_hwmod_dma_info omap44xx_aess_sdma_reqs[] = {
310 { .name = "fifo0", .dma_req = 100 + OMAP44XX_DMA_REQ_START },
311 { .name = "fifo1", .dma_req = 101 + OMAP44XX_DMA_REQ_START },
312 { .name = "fifo2", .dma_req = 102 + OMAP44XX_DMA_REQ_START },
313 { .name = "fifo3", .dma_req = 103 + OMAP44XX_DMA_REQ_START },
314 { .name = "fifo4", .dma_req = 104 + OMAP44XX_DMA_REQ_START },
315 { .name = "fifo5", .dma_req = 105 + OMAP44XX_DMA_REQ_START },
316 { .name = "fifo6", .dma_req = 106 + OMAP44XX_DMA_REQ_START },
317 { .name = "fifo7", .dma_req = 107 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -0600318 { .dma_req = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +0100319};
320
Benoit Cousson407a6882011-02-15 22:39:48 +0100321static struct omap_hwmod omap44xx_aess_hwmod = {
322 .name = "aess",
323 .class = &omap44xx_aess_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600324 .clkdm_name = "abe_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +0100325 .mpu_irqs = omap44xx_aess_irqs,
Benoit Cousson407a6882011-02-15 22:39:48 +0100326 .sdma_reqs = omap44xx_aess_sdma_reqs,
Benoit Cousson407a6882011-02-15 22:39:48 +0100327 .main_clk = "aess_fck",
Benoit Cousson00fe6102011-07-09 19:14:28 -0600328 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +0100329 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600330 .clkctrl_offs = OMAP4_CM1_ABE_AESS_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600331 .context_offs = OMAP4_RM_ABE_AESS_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -0600332 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +0100333 },
334 },
Benoit Cousson407a6882011-02-15 22:39:48 +0100335};
336
337/*
Benoit Cousson407a6882011-02-15 22:39:48 +0100338 * 'counter' class
339 * 32-bit ordinary counter, clocked by the falling edge of the 32 khz clock
340 */
341
342static struct omap_hwmod_class_sysconfig omap44xx_counter_sysc = {
343 .rev_offs = 0x0000,
344 .sysc_offs = 0x0004,
345 .sysc_flags = SYSC_HAS_SIDLEMODE,
346 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
347 SIDLE_SMART_WKUP),
348 .sysc_fields = &omap_hwmod_sysc_type1,
349};
350
351static struct omap_hwmod_class omap44xx_counter_hwmod_class = {
352 .name = "counter",
353 .sysc = &omap44xx_counter_sysc,
354};
355
356/* counter_32k */
Benoit Cousson407a6882011-02-15 22:39:48 +0100357static struct omap_hwmod omap44xx_counter_32k_hwmod = {
358 .name = "counter_32k",
359 .class = &omap44xx_counter_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600360 .clkdm_name = "l4_wkup_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +0100361 .flags = HWMOD_SWSUP_SIDLE,
362 .main_clk = "sys_32k_ck",
Benoit Cousson00fe6102011-07-09 19:14:28 -0600363 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +0100364 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600365 .clkctrl_offs = OMAP4_CM_WKUP_SYNCTIMER_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600366 .context_offs = OMAP4_RM_WKUP_SYNCTIMER_CONTEXT_OFFSET,
Benoit Cousson407a6882011-02-15 22:39:48 +0100367 },
368 },
Benoit Cousson407a6882011-02-15 22:39:48 +0100369};
370
371/*
Benoit Coussond7cf5f32010-12-23 22:30:31 +0000372 * 'dma' class
373 * dma controller for data exchange between memory to memory (i.e. internal or
374 * external memory) and gp peripherals to memory or memory to gp peripherals
375 */
376
377static struct omap_hwmod_class_sysconfig omap44xx_dma_sysc = {
378 .rev_offs = 0x0000,
379 .sysc_offs = 0x002c,
380 .syss_offs = 0x0028,
381 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
382 SYSC_HAS_EMUFREE | SYSC_HAS_MIDLEMODE |
383 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
384 SYSS_HAS_RESET_STATUS),
385 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
386 MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
387 .sysc_fields = &omap_hwmod_sysc_type1,
388};
389
390static struct omap_hwmod_class omap44xx_dma_hwmod_class = {
391 .name = "dma",
392 .sysc = &omap44xx_dma_sysc,
393};
394
395/* dma dev_attr */
396static struct omap_dma_dev_attr dma_dev_attr = {
397 .dev_caps = RESERVE_CHANNEL | DMA_LINKED_LCH | GLOBAL_PRIORITY |
398 IS_CSSA_32 | IS_CDSA_32 | IS_RW_PRIORITY,
399 .lch_count = 32,
400};
401
402/* dma_system */
403static struct omap_hwmod_irq_info omap44xx_dma_system_irqs[] = {
404 { .name = "0", .irq = 12 + OMAP44XX_IRQ_GIC_START },
405 { .name = "1", .irq = 13 + OMAP44XX_IRQ_GIC_START },
406 { .name = "2", .irq = 14 + OMAP44XX_IRQ_GIC_START },
407 { .name = "3", .irq = 15 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -0600408 { .irq = -1 }
Benoit Coussond7cf5f32010-12-23 22:30:31 +0000409};
410
Benoit Coussond7cf5f32010-12-23 22:30:31 +0000411static struct omap_hwmod omap44xx_dma_system_hwmod = {
412 .name = "dma_system",
413 .class = &omap44xx_dma_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600414 .clkdm_name = "l3_dma_clkdm",
Benoit Coussond7cf5f32010-12-23 22:30:31 +0000415 .mpu_irqs = omap44xx_dma_system_irqs,
Benoit Coussond7cf5f32010-12-23 22:30:31 +0000416 .main_clk = "l3_div_ck",
417 .prcm = {
418 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600419 .clkctrl_offs = OMAP4_CM_SDMA_SDMA_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600420 .context_offs = OMAP4_RM_SDMA_SDMA_CONTEXT_OFFSET,
Benoit Coussond7cf5f32010-12-23 22:30:31 +0000421 },
422 },
423 .dev_attr = &dma_dev_attr,
Benoit Coussond7cf5f32010-12-23 22:30:31 +0000424};
425
426/*
Benoit Cousson8ca476d2011-01-25 22:01:00 +0000427 * 'dmic' class
428 * digital microphone controller
429 */
430
431static struct omap_hwmod_class_sysconfig omap44xx_dmic_sysc = {
432 .rev_offs = 0x0000,
433 .sysc_offs = 0x0010,
434 .sysc_flags = (SYSC_HAS_EMUFREE | SYSC_HAS_RESET_STATUS |
435 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
436 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
437 SIDLE_SMART_WKUP),
438 .sysc_fields = &omap_hwmod_sysc_type2,
439};
440
441static struct omap_hwmod_class omap44xx_dmic_hwmod_class = {
442 .name = "dmic",
443 .sysc = &omap44xx_dmic_sysc,
444};
445
446/* dmic */
Benoit Cousson8ca476d2011-01-25 22:01:00 +0000447static struct omap_hwmod_irq_info omap44xx_dmic_irqs[] = {
448 { .irq = 114 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -0600449 { .irq = -1 }
Benoit Cousson8ca476d2011-01-25 22:01:00 +0000450};
451
452static struct omap_hwmod_dma_info omap44xx_dmic_sdma_reqs[] = {
453 { .dma_req = 66 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -0600454 { .dma_req = -1 }
Benoit Cousson8ca476d2011-01-25 22:01:00 +0000455};
456
Benoit Cousson8ca476d2011-01-25 22:01:00 +0000457static struct omap_hwmod omap44xx_dmic_hwmod = {
458 .name = "dmic",
459 .class = &omap44xx_dmic_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600460 .clkdm_name = "abe_clkdm",
Benoit Cousson8ca476d2011-01-25 22:01:00 +0000461 .mpu_irqs = omap44xx_dmic_irqs,
Benoit Cousson8ca476d2011-01-25 22:01:00 +0000462 .sdma_reqs = omap44xx_dmic_sdma_reqs,
Benoit Cousson8ca476d2011-01-25 22:01:00 +0000463 .main_clk = "dmic_fck",
Benoit Cousson00fe6102011-07-09 19:14:28 -0600464 .prcm = {
Benoit Cousson8ca476d2011-01-25 22:01:00 +0000465 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600466 .clkctrl_offs = OMAP4_CM1_ABE_DMIC_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600467 .context_offs = OMAP4_RM_ABE_DMIC_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -0600468 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson8ca476d2011-01-25 22:01:00 +0000469 },
470 },
Benoit Cousson8ca476d2011-01-25 22:01:00 +0000471};
472
473/*
Benoit Cousson8f25bdc2010-12-21 21:08:34 -0700474 * 'dsp' class
475 * dsp sub-system
476 */
477
478static struct omap_hwmod_class omap44xx_dsp_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +0000479 .name = "dsp",
Benoit Cousson8f25bdc2010-12-21 21:08:34 -0700480};
481
482/* dsp */
483static struct omap_hwmod_irq_info omap44xx_dsp_irqs[] = {
484 { .irq = 28 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -0600485 { .irq = -1 }
Benoit Cousson8f25bdc2010-12-21 21:08:34 -0700486};
487
488static struct omap_hwmod_rst_info omap44xx_dsp_resets[] = {
Benoit Cousson8f25bdc2010-12-21 21:08:34 -0700489 { .name = "dsp", .rst_shift = 0 },
Paul Walmsleyf2f57362012-04-18 19:10:02 -0600490 { .name = "mmu_cache", .rst_shift = 1 },
Benoit Cousson8f25bdc2010-12-21 21:08:34 -0700491};
492
Benoit Cousson8f25bdc2010-12-21 21:08:34 -0700493static struct omap_hwmod omap44xx_dsp_hwmod = {
494 .name = "dsp",
495 .class = &omap44xx_dsp_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600496 .clkdm_name = "tesla_clkdm",
Benoit Cousson8f25bdc2010-12-21 21:08:34 -0700497 .mpu_irqs = omap44xx_dsp_irqs,
Benoit Cousson8f25bdc2010-12-21 21:08:34 -0700498 .rst_lines = omap44xx_dsp_resets,
499 .rst_lines_cnt = ARRAY_SIZE(omap44xx_dsp_resets),
500 .main_clk = "dsp_fck",
501 .prcm = {
502 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600503 .clkctrl_offs = OMAP4_CM_TESLA_TESLA_CLKCTRL_OFFSET,
Benoit Coussoneaac3292011-07-10 05:56:31 -0600504 .rstctrl_offs = OMAP4_RM_TESLA_RSTCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600505 .context_offs = OMAP4_RM_TESLA_TESLA_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -0600506 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson8f25bdc2010-12-21 21:08:34 -0700507 },
508 },
Benoit Cousson8f25bdc2010-12-21 21:08:34 -0700509};
510
511/*
Benoit Coussond63bd742011-01-27 11:17:03 +0000512 * 'dss' class
513 * display sub-system
514 */
515
516static struct omap_hwmod_class_sysconfig omap44xx_dss_sysc = {
517 .rev_offs = 0x0000,
518 .syss_offs = 0x0014,
519 .sysc_flags = SYSS_HAS_RESET_STATUS,
520};
521
522static struct omap_hwmod_class omap44xx_dss_hwmod_class = {
523 .name = "dss",
524 .sysc = &omap44xx_dss_sysc,
Tomi Valkeinen13662dc2011-11-08 03:16:13 -0700525 .reset = omap_dss_reset,
Benoit Coussond63bd742011-01-27 11:17:03 +0000526};
527
528/* dss */
Benoit Coussond63bd742011-01-27 11:17:03 +0000529static struct omap_hwmod_opt_clk dss_opt_clks[] = {
530 { .role = "sys_clk", .clk = "dss_sys_clk" },
531 { .role = "tv_clk", .clk = "dss_tv_clk" },
Tomi Valkeinen4d0698d2011-11-08 03:16:12 -0700532 { .role = "hdmi_clk", .clk = "dss_48mhz_clk" },
Benoit Coussond63bd742011-01-27 11:17:03 +0000533};
534
535static struct omap_hwmod omap44xx_dss_hwmod = {
536 .name = "dss_core",
Tomi Valkeinen37ad0852011-11-08 03:16:11 -0700537 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
Benoit Coussond63bd742011-01-27 11:17:03 +0000538 .class = &omap44xx_dss_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600539 .clkdm_name = "l3_dss_clkdm",
Tomi Valkeinenda7cdfa2011-07-09 20:39:45 -0600540 .main_clk = "dss_dss_clk",
Benoit Coussond63bd742011-01-27 11:17:03 +0000541 .prcm = {
542 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600543 .clkctrl_offs = OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600544 .context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET,
Benoit Coussond63bd742011-01-27 11:17:03 +0000545 },
546 },
547 .opt_clks = dss_opt_clks,
548 .opt_clks_cnt = ARRAY_SIZE(dss_opt_clks),
Benoit Coussond63bd742011-01-27 11:17:03 +0000549};
550
551/*
552 * 'dispc' class
553 * display controller
554 */
555
556static struct omap_hwmod_class_sysconfig omap44xx_dispc_sysc = {
557 .rev_offs = 0x0000,
558 .sysc_offs = 0x0010,
559 .syss_offs = 0x0014,
560 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
561 SYSC_HAS_ENAWAKEUP | SYSC_HAS_MIDLEMODE |
562 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
563 SYSS_HAS_RESET_STATUS),
564 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
565 MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
566 .sysc_fields = &omap_hwmod_sysc_type1,
567};
568
569static struct omap_hwmod_class omap44xx_dispc_hwmod_class = {
570 .name = "dispc",
571 .sysc = &omap44xx_dispc_sysc,
572};
573
574/* dss_dispc */
Benoit Coussond63bd742011-01-27 11:17:03 +0000575static struct omap_hwmod_irq_info omap44xx_dss_dispc_irqs[] = {
576 { .irq = 25 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -0600577 { .irq = -1 }
Benoit Coussond63bd742011-01-27 11:17:03 +0000578};
579
580static struct omap_hwmod_dma_info omap44xx_dss_dispc_sdma_reqs[] = {
581 { .dma_req = 5 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -0600582 { .dma_req = -1 }
Benoit Coussond63bd742011-01-27 11:17:03 +0000583};
584
Archit Tanejab923d402011-10-06 18:04:08 -0600585static struct omap_dss_dispc_dev_attr omap44xx_dss_dispc_dev_attr = {
586 .manager_count = 3,
587 .has_framedonetv_irq = 1
588};
589
Benoit Coussond63bd742011-01-27 11:17:03 +0000590static struct omap_hwmod omap44xx_dss_dispc_hwmod = {
591 .name = "dss_dispc",
592 .class = &omap44xx_dispc_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600593 .clkdm_name = "l3_dss_clkdm",
Benoit Coussond63bd742011-01-27 11:17:03 +0000594 .mpu_irqs = omap44xx_dss_dispc_irqs,
Benoit Coussond63bd742011-01-27 11:17:03 +0000595 .sdma_reqs = omap44xx_dss_dispc_sdma_reqs,
Tomi Valkeinenda7cdfa2011-07-09 20:39:45 -0600596 .main_clk = "dss_dss_clk",
Benoit Coussond63bd742011-01-27 11:17:03 +0000597 .prcm = {
598 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600599 .clkctrl_offs = OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600600 .context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET,
Benoit Coussond63bd742011-01-27 11:17:03 +0000601 },
602 },
Archit Tanejab923d402011-10-06 18:04:08 -0600603 .dev_attr = &omap44xx_dss_dispc_dev_attr
Benoit Coussond63bd742011-01-27 11:17:03 +0000604};
605
606/*
607 * 'dsi' class
608 * display serial interface controller
609 */
610
611static struct omap_hwmod_class_sysconfig omap44xx_dsi_sysc = {
612 .rev_offs = 0x0000,
613 .sysc_offs = 0x0010,
614 .syss_offs = 0x0014,
615 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
616 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE |
617 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
618 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
619 .sysc_fields = &omap_hwmod_sysc_type1,
620};
621
622static struct omap_hwmod_class omap44xx_dsi_hwmod_class = {
623 .name = "dsi",
624 .sysc = &omap44xx_dsi_sysc,
625};
626
627/* dss_dsi1 */
Benoit Coussond63bd742011-01-27 11:17:03 +0000628static struct omap_hwmod_irq_info omap44xx_dss_dsi1_irqs[] = {
629 { .irq = 53 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -0600630 { .irq = -1 }
Benoit Coussond63bd742011-01-27 11:17:03 +0000631};
632
633static struct omap_hwmod_dma_info omap44xx_dss_dsi1_sdma_reqs[] = {
634 { .dma_req = 74 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -0600635 { .dma_req = -1 }
Benoit Coussond63bd742011-01-27 11:17:03 +0000636};
637
Tomi Valkeinen3a23aaf2011-07-09 20:39:44 -0600638static struct omap_hwmod_opt_clk dss_dsi1_opt_clks[] = {
639 { .role = "sys_clk", .clk = "dss_sys_clk" },
640};
641
Benoit Coussond63bd742011-01-27 11:17:03 +0000642static struct omap_hwmod omap44xx_dss_dsi1_hwmod = {
643 .name = "dss_dsi1",
644 .class = &omap44xx_dsi_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600645 .clkdm_name = "l3_dss_clkdm",
Benoit Coussond63bd742011-01-27 11:17:03 +0000646 .mpu_irqs = omap44xx_dss_dsi1_irqs,
Benoit Coussond63bd742011-01-27 11:17:03 +0000647 .sdma_reqs = omap44xx_dss_dsi1_sdma_reqs,
Tomi Valkeinenda7cdfa2011-07-09 20:39:45 -0600648 .main_clk = "dss_dss_clk",
Benoit Coussond63bd742011-01-27 11:17:03 +0000649 .prcm = {
650 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600651 .clkctrl_offs = OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600652 .context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET,
Benoit Coussond63bd742011-01-27 11:17:03 +0000653 },
654 },
Tomi Valkeinen3a23aaf2011-07-09 20:39:44 -0600655 .opt_clks = dss_dsi1_opt_clks,
656 .opt_clks_cnt = ARRAY_SIZE(dss_dsi1_opt_clks),
Benoit Coussond63bd742011-01-27 11:17:03 +0000657};
658
659/* dss_dsi2 */
Benoit Coussond63bd742011-01-27 11:17:03 +0000660static struct omap_hwmod_irq_info omap44xx_dss_dsi2_irqs[] = {
661 { .irq = 84 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -0600662 { .irq = -1 }
Benoit Coussond63bd742011-01-27 11:17:03 +0000663};
664
665static struct omap_hwmod_dma_info omap44xx_dss_dsi2_sdma_reqs[] = {
666 { .dma_req = 83 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -0600667 { .dma_req = -1 }
Benoit Coussond63bd742011-01-27 11:17:03 +0000668};
669
Tomi Valkeinen3a23aaf2011-07-09 20:39:44 -0600670static struct omap_hwmod_opt_clk dss_dsi2_opt_clks[] = {
671 { .role = "sys_clk", .clk = "dss_sys_clk" },
672};
673
Benoit Coussond63bd742011-01-27 11:17:03 +0000674static struct omap_hwmod omap44xx_dss_dsi2_hwmod = {
675 .name = "dss_dsi2",
676 .class = &omap44xx_dsi_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600677 .clkdm_name = "l3_dss_clkdm",
Benoit Coussond63bd742011-01-27 11:17:03 +0000678 .mpu_irqs = omap44xx_dss_dsi2_irqs,
Benoit Coussond63bd742011-01-27 11:17:03 +0000679 .sdma_reqs = omap44xx_dss_dsi2_sdma_reqs,
Tomi Valkeinenda7cdfa2011-07-09 20:39:45 -0600680 .main_clk = "dss_dss_clk",
Benoit Coussond63bd742011-01-27 11:17:03 +0000681 .prcm = {
682 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600683 .clkctrl_offs = OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600684 .context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET,
Benoit Coussond63bd742011-01-27 11:17:03 +0000685 },
686 },
Tomi Valkeinen3a23aaf2011-07-09 20:39:44 -0600687 .opt_clks = dss_dsi2_opt_clks,
688 .opt_clks_cnt = ARRAY_SIZE(dss_dsi2_opt_clks),
Benoit Coussond63bd742011-01-27 11:17:03 +0000689};
690
691/*
692 * 'hdmi' class
693 * hdmi controller
694 */
695
696static struct omap_hwmod_class_sysconfig omap44xx_hdmi_sysc = {
697 .rev_offs = 0x0000,
698 .sysc_offs = 0x0010,
699 .sysc_flags = (SYSC_HAS_RESET_STATUS | SYSC_HAS_SIDLEMODE |
700 SYSC_HAS_SOFTRESET),
701 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
702 SIDLE_SMART_WKUP),
703 .sysc_fields = &omap_hwmod_sysc_type2,
704};
705
706static struct omap_hwmod_class omap44xx_hdmi_hwmod_class = {
707 .name = "hdmi",
708 .sysc = &omap44xx_hdmi_sysc,
709};
710
711/* dss_hdmi */
Benoit Coussond63bd742011-01-27 11:17:03 +0000712static struct omap_hwmod_irq_info omap44xx_dss_hdmi_irqs[] = {
713 { .irq = 101 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -0600714 { .irq = -1 }
Benoit Coussond63bd742011-01-27 11:17:03 +0000715};
716
717static struct omap_hwmod_dma_info omap44xx_dss_hdmi_sdma_reqs[] = {
718 { .dma_req = 75 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -0600719 { .dma_req = -1 }
Benoit Coussond63bd742011-01-27 11:17:03 +0000720};
721
Tomi Valkeinen3a23aaf2011-07-09 20:39:44 -0600722static struct omap_hwmod_opt_clk dss_hdmi_opt_clks[] = {
723 { .role = "sys_clk", .clk = "dss_sys_clk" },
724};
725
Benoit Coussond63bd742011-01-27 11:17:03 +0000726static struct omap_hwmod omap44xx_dss_hdmi_hwmod = {
727 .name = "dss_hdmi",
728 .class = &omap44xx_hdmi_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600729 .clkdm_name = "l3_dss_clkdm",
Benoit Coussond63bd742011-01-27 11:17:03 +0000730 .mpu_irqs = omap44xx_dss_hdmi_irqs,
Benoit Coussond63bd742011-01-27 11:17:03 +0000731 .sdma_reqs = omap44xx_dss_hdmi_sdma_reqs,
Tomi Valkeinen4d0698d2011-11-08 03:16:12 -0700732 .main_clk = "dss_48mhz_clk",
Benoit Coussond63bd742011-01-27 11:17:03 +0000733 .prcm = {
734 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600735 .clkctrl_offs = OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600736 .context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET,
Benoit Coussond63bd742011-01-27 11:17:03 +0000737 },
738 },
Tomi Valkeinen3a23aaf2011-07-09 20:39:44 -0600739 .opt_clks = dss_hdmi_opt_clks,
740 .opt_clks_cnt = ARRAY_SIZE(dss_hdmi_opt_clks),
Benoit Coussond63bd742011-01-27 11:17:03 +0000741};
742
743/*
744 * 'rfbi' class
745 * remote frame buffer interface
746 */
747
748static struct omap_hwmod_class_sysconfig omap44xx_rfbi_sysc = {
749 .rev_offs = 0x0000,
750 .sysc_offs = 0x0010,
751 .syss_offs = 0x0014,
752 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_SIDLEMODE |
753 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
754 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
755 .sysc_fields = &omap_hwmod_sysc_type1,
756};
757
758static struct omap_hwmod_class omap44xx_rfbi_hwmod_class = {
759 .name = "rfbi",
760 .sysc = &omap44xx_rfbi_sysc,
761};
762
763/* dss_rfbi */
Benoit Coussond63bd742011-01-27 11:17:03 +0000764static struct omap_hwmod_dma_info omap44xx_dss_rfbi_sdma_reqs[] = {
765 { .dma_req = 13 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -0600766 { .dma_req = -1 }
Benoit Coussond63bd742011-01-27 11:17:03 +0000767};
768
Tomi Valkeinen3a23aaf2011-07-09 20:39:44 -0600769static struct omap_hwmod_opt_clk dss_rfbi_opt_clks[] = {
770 { .role = "ick", .clk = "dss_fck" },
771};
772
Benoit Coussond63bd742011-01-27 11:17:03 +0000773static struct omap_hwmod omap44xx_dss_rfbi_hwmod = {
774 .name = "dss_rfbi",
775 .class = &omap44xx_rfbi_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600776 .clkdm_name = "l3_dss_clkdm",
Benoit Coussond63bd742011-01-27 11:17:03 +0000777 .sdma_reqs = omap44xx_dss_rfbi_sdma_reqs,
Tomi Valkeinenda7cdfa2011-07-09 20:39:45 -0600778 .main_clk = "dss_dss_clk",
Benoit Coussond63bd742011-01-27 11:17:03 +0000779 .prcm = {
780 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600781 .clkctrl_offs = OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600782 .context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET,
Benoit Coussond63bd742011-01-27 11:17:03 +0000783 },
784 },
Tomi Valkeinen3a23aaf2011-07-09 20:39:44 -0600785 .opt_clks = dss_rfbi_opt_clks,
786 .opt_clks_cnt = ARRAY_SIZE(dss_rfbi_opt_clks),
Benoit Coussond63bd742011-01-27 11:17:03 +0000787};
788
789/*
790 * 'venc' class
791 * video encoder
792 */
793
794static struct omap_hwmod_class omap44xx_venc_hwmod_class = {
795 .name = "venc",
796};
797
798/* dss_venc */
Benoit Coussond63bd742011-01-27 11:17:03 +0000799static struct omap_hwmod omap44xx_dss_venc_hwmod = {
800 .name = "dss_venc",
801 .class = &omap44xx_venc_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600802 .clkdm_name = "l3_dss_clkdm",
Tomi Valkeinen4d0698d2011-11-08 03:16:12 -0700803 .main_clk = "dss_tv_clk",
Benoit Coussond63bd742011-01-27 11:17:03 +0000804 .prcm = {
805 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600806 .clkctrl_offs = OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600807 .context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET,
Benoit Coussond63bd742011-01-27 11:17:03 +0000808 },
809 },
Benoit Coussond63bd742011-01-27 11:17:03 +0000810};
811
812/*
Paul Walmsleybf30f952012-04-19 13:33:52 -0600813 * 'emif' class
814 * external memory interface no1
815 */
816
817static struct omap_hwmod_class_sysconfig omap44xx_emif_sysc = {
818 .rev_offs = 0x0000,
819};
820
821static struct omap_hwmod_class omap44xx_emif_hwmod_class = {
822 .name = "emif",
823 .sysc = &omap44xx_emif_sysc,
824};
825
826/* emif1 */
827static struct omap_hwmod_irq_info omap44xx_emif1_irqs[] = {
828 { .irq = 110 + OMAP44XX_IRQ_GIC_START },
829 { .irq = -1 }
830};
831
832static struct omap_hwmod omap44xx_emif1_hwmod = {
833 .name = "emif1",
834 .class = &omap44xx_emif_hwmod_class,
835 .clkdm_name = "l3_emif_clkdm",
836 .flags = HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET,
837 .mpu_irqs = omap44xx_emif1_irqs,
838 .main_clk = "ddrphy_ck",
839 .prcm = {
840 .omap4 = {
841 .clkctrl_offs = OMAP4_CM_MEMIF_EMIF_1_CLKCTRL_OFFSET,
842 .context_offs = OMAP4_RM_MEMIF_EMIF_1_CONTEXT_OFFSET,
843 .modulemode = MODULEMODE_HWCTRL,
844 },
845 },
846};
847
848/* emif2 */
849static struct omap_hwmod_irq_info omap44xx_emif2_irqs[] = {
850 { .irq = 111 + OMAP44XX_IRQ_GIC_START },
851 { .irq = -1 }
852};
853
854static struct omap_hwmod omap44xx_emif2_hwmod = {
855 .name = "emif2",
856 .class = &omap44xx_emif_hwmod_class,
857 .clkdm_name = "l3_emif_clkdm",
858 .flags = HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET,
859 .mpu_irqs = omap44xx_emif2_irqs,
860 .main_clk = "ddrphy_ck",
861 .prcm = {
862 .omap4 = {
863 .clkctrl_offs = OMAP4_CM_MEMIF_EMIF_2_CLKCTRL_OFFSET,
864 .context_offs = OMAP4_RM_MEMIF_EMIF_2_CONTEXT_OFFSET,
865 .modulemode = MODULEMODE_HWCTRL,
866 },
867 },
868};
869
870/*
Ming Leib050f682012-04-19 13:33:50 -0600871 * 'fdif' class
872 * face detection hw accelerator module
873 */
874
875static struct omap_hwmod_class_sysconfig omap44xx_fdif_sysc = {
876 .rev_offs = 0x0000,
877 .sysc_offs = 0x0010,
878 /*
879 * FDIF needs 100 OCP clk cycles delay after a softreset before
880 * accessing sysconfig again.
881 * The lowest frequency at the moment for L3 bus is 100 MHz, so
882 * 1usec delay is needed. Add an x2 margin to be safe (2 usecs).
883 *
884 * TODO: Indicate errata when available.
885 */
886 .srst_udelay = 2,
887 .sysc_flags = (SYSC_HAS_MIDLEMODE | SYSC_HAS_RESET_STATUS |
888 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
889 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
890 MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
891 .sysc_fields = &omap_hwmod_sysc_type2,
892};
893
894static struct omap_hwmod_class omap44xx_fdif_hwmod_class = {
895 .name = "fdif",
896 .sysc = &omap44xx_fdif_sysc,
897};
898
899/* fdif */
900static struct omap_hwmod_irq_info omap44xx_fdif_irqs[] = {
901 { .irq = 69 + OMAP44XX_IRQ_GIC_START },
902 { .irq = -1 }
903};
904
905static struct omap_hwmod omap44xx_fdif_hwmod = {
906 .name = "fdif",
907 .class = &omap44xx_fdif_hwmod_class,
908 .clkdm_name = "iss_clkdm",
909 .mpu_irqs = omap44xx_fdif_irqs,
910 .main_clk = "fdif_fck",
911 .prcm = {
912 .omap4 = {
913 .clkctrl_offs = OMAP4_CM_CAM_FDIF_CLKCTRL_OFFSET,
914 .context_offs = OMAP4_RM_CAM_FDIF_CONTEXT_OFFSET,
915 .modulemode = MODULEMODE_SWCTRL,
916 },
917 },
918};
919
920/*
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700921 * 'gpio' class
922 * general purpose io module
923 */
924
925static struct omap_hwmod_class_sysconfig omap44xx_gpio_sysc = {
926 .rev_offs = 0x0000,
927 .sysc_offs = 0x0010,
928 .syss_offs = 0x0114,
Benoit Cousson0cfe8752010-12-21 21:08:33 -0700929 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_ENAWAKEUP |
930 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
931 SYSS_HAS_RESET_STATUS),
Benoit Cousson7cffa6b2010-12-21 21:31:28 -0700932 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
933 SIDLE_SMART_WKUP),
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700934 .sysc_fields = &omap_hwmod_sysc_type1,
935};
936
937static struct omap_hwmod_class omap44xx_gpio_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +0000938 .name = "gpio",
939 .sysc = &omap44xx_gpio_sysc,
940 .rev = 2,
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700941};
942
943/* gpio dev_attr */
944static struct omap_gpio_dev_attr gpio_dev_attr = {
Benoit Coussonfe134712010-12-23 22:30:32 +0000945 .bank_width = 32,
946 .dbck_flag = true,
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700947};
948
949/* gpio1 */
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700950static struct omap_hwmod_irq_info omap44xx_gpio1_irqs[] = {
951 { .irq = 29 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -0600952 { .irq = -1 }
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700953};
954
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700955static struct omap_hwmod_opt_clk gpio1_opt_clks[] = {
Benoit Coussonb399bca2010-12-21 21:08:34 -0700956 { .role = "dbclk", .clk = "gpio1_dbclk" },
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700957};
958
959static struct omap_hwmod omap44xx_gpio1_hwmod = {
960 .name = "gpio1",
961 .class = &omap44xx_gpio_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600962 .clkdm_name = "l4_wkup_clkdm",
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700963 .mpu_irqs = omap44xx_gpio1_irqs,
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700964 .main_clk = "gpio1_ick",
965 .prcm = {
966 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600967 .clkctrl_offs = OMAP4_CM_WKUP_GPIO1_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600968 .context_offs = OMAP4_RM_WKUP_GPIO1_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -0600969 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700970 },
971 },
972 .opt_clks = gpio1_opt_clks,
973 .opt_clks_cnt = ARRAY_SIZE(gpio1_opt_clks),
974 .dev_attr = &gpio_dev_attr,
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700975};
976
977/* gpio2 */
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700978static struct omap_hwmod_irq_info omap44xx_gpio2_irqs[] = {
979 { .irq = 30 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -0600980 { .irq = -1 }
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700981};
982
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700983static struct omap_hwmod_opt_clk gpio2_opt_clks[] = {
Benoit Coussonb399bca2010-12-21 21:08:34 -0700984 { .role = "dbclk", .clk = "gpio2_dbclk" },
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700985};
986
987static struct omap_hwmod omap44xx_gpio2_hwmod = {
988 .name = "gpio2",
989 .class = &omap44xx_gpio_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600990 .clkdm_name = "l4_per_clkdm",
Benoit Coussonb399bca2010-12-21 21:08:34 -0700991 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700992 .mpu_irqs = omap44xx_gpio2_irqs,
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700993 .main_clk = "gpio2_ick",
994 .prcm = {
995 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600996 .clkctrl_offs = OMAP4_CM_L4PER_GPIO2_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600997 .context_offs = OMAP4_RM_L4PER_GPIO2_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -0600998 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700999 },
1000 },
1001 .opt_clks = gpio2_opt_clks,
1002 .opt_clks_cnt = ARRAY_SIZE(gpio2_opt_clks),
1003 .dev_attr = &gpio_dev_attr,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001004};
1005
1006/* gpio3 */
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001007static struct omap_hwmod_irq_info omap44xx_gpio3_irqs[] = {
1008 { .irq = 31 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001009 { .irq = -1 }
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001010};
1011
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001012static struct omap_hwmod_opt_clk gpio3_opt_clks[] = {
Benoit Coussonb399bca2010-12-21 21:08:34 -07001013 { .role = "dbclk", .clk = "gpio3_dbclk" },
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001014};
1015
1016static struct omap_hwmod omap44xx_gpio3_hwmod = {
1017 .name = "gpio3",
1018 .class = &omap44xx_gpio_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001019 .clkdm_name = "l4_per_clkdm",
Benoit Coussonb399bca2010-12-21 21:08:34 -07001020 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001021 .mpu_irqs = omap44xx_gpio3_irqs,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001022 .main_clk = "gpio3_ick",
1023 .prcm = {
1024 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001025 .clkctrl_offs = OMAP4_CM_L4PER_GPIO3_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001026 .context_offs = OMAP4_RM_L4PER_GPIO3_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001027 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001028 },
1029 },
1030 .opt_clks = gpio3_opt_clks,
1031 .opt_clks_cnt = ARRAY_SIZE(gpio3_opt_clks),
1032 .dev_attr = &gpio_dev_attr,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001033};
1034
1035/* gpio4 */
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001036static struct omap_hwmod_irq_info omap44xx_gpio4_irqs[] = {
1037 { .irq = 32 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001038 { .irq = -1 }
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001039};
1040
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001041static struct omap_hwmod_opt_clk gpio4_opt_clks[] = {
Benoit Coussonb399bca2010-12-21 21:08:34 -07001042 { .role = "dbclk", .clk = "gpio4_dbclk" },
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001043};
1044
1045static struct omap_hwmod omap44xx_gpio4_hwmod = {
1046 .name = "gpio4",
1047 .class = &omap44xx_gpio_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001048 .clkdm_name = "l4_per_clkdm",
Benoit Coussonb399bca2010-12-21 21:08:34 -07001049 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001050 .mpu_irqs = omap44xx_gpio4_irqs,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001051 .main_clk = "gpio4_ick",
1052 .prcm = {
1053 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001054 .clkctrl_offs = OMAP4_CM_L4PER_GPIO4_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001055 .context_offs = OMAP4_RM_L4PER_GPIO4_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001056 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001057 },
1058 },
1059 .opt_clks = gpio4_opt_clks,
1060 .opt_clks_cnt = ARRAY_SIZE(gpio4_opt_clks),
1061 .dev_attr = &gpio_dev_attr,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001062};
1063
1064/* gpio5 */
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001065static struct omap_hwmod_irq_info omap44xx_gpio5_irqs[] = {
1066 { .irq = 33 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001067 { .irq = -1 }
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001068};
1069
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001070static struct omap_hwmod_opt_clk gpio5_opt_clks[] = {
Benoit Coussonb399bca2010-12-21 21:08:34 -07001071 { .role = "dbclk", .clk = "gpio5_dbclk" },
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001072};
1073
1074static struct omap_hwmod omap44xx_gpio5_hwmod = {
1075 .name = "gpio5",
1076 .class = &omap44xx_gpio_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001077 .clkdm_name = "l4_per_clkdm",
Benoit Coussonb399bca2010-12-21 21:08:34 -07001078 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001079 .mpu_irqs = omap44xx_gpio5_irqs,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001080 .main_clk = "gpio5_ick",
1081 .prcm = {
1082 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001083 .clkctrl_offs = OMAP4_CM_L4PER_GPIO5_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001084 .context_offs = OMAP4_RM_L4PER_GPIO5_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001085 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001086 },
1087 },
1088 .opt_clks = gpio5_opt_clks,
1089 .opt_clks_cnt = ARRAY_SIZE(gpio5_opt_clks),
1090 .dev_attr = &gpio_dev_attr,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001091};
1092
1093/* gpio6 */
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001094static struct omap_hwmod_irq_info omap44xx_gpio6_irqs[] = {
1095 { .irq = 34 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001096 { .irq = -1 }
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001097};
1098
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001099static struct omap_hwmod_opt_clk gpio6_opt_clks[] = {
Benoit Coussonb399bca2010-12-21 21:08:34 -07001100 { .role = "dbclk", .clk = "gpio6_dbclk" },
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001101};
1102
1103static struct omap_hwmod omap44xx_gpio6_hwmod = {
1104 .name = "gpio6",
1105 .class = &omap44xx_gpio_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001106 .clkdm_name = "l4_per_clkdm",
Benoit Coussonb399bca2010-12-21 21:08:34 -07001107 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001108 .mpu_irqs = omap44xx_gpio6_irqs,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001109 .main_clk = "gpio6_ick",
1110 .prcm = {
1111 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001112 .clkctrl_offs = OMAP4_CM_L4PER_GPIO6_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001113 .context_offs = OMAP4_RM_L4PER_GPIO6_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001114 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001115 },
1116 },
1117 .opt_clks = gpio6_opt_clks,
1118 .opt_clks_cnt = ARRAY_SIZE(gpio6_opt_clks),
1119 .dev_attr = &gpio_dev_attr,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001120};
1121
1122/*
BenoƮt Coussoneb42b5d2012-04-19 13:33:51 -06001123 * 'gpmc' class
1124 * general purpose memory controller
1125 */
1126
1127static struct omap_hwmod_class_sysconfig omap44xx_gpmc_sysc = {
1128 .rev_offs = 0x0000,
1129 .sysc_offs = 0x0010,
1130 .syss_offs = 0x0014,
1131 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_SIDLEMODE |
1132 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
1133 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
1134 .sysc_fields = &omap_hwmod_sysc_type1,
1135};
1136
1137static struct omap_hwmod_class omap44xx_gpmc_hwmod_class = {
1138 .name = "gpmc",
1139 .sysc = &omap44xx_gpmc_sysc,
1140};
1141
1142/* gpmc */
1143static struct omap_hwmod_irq_info omap44xx_gpmc_irqs[] = {
1144 { .irq = 20 + OMAP44XX_IRQ_GIC_START },
1145 { .irq = -1 }
1146};
1147
1148static struct omap_hwmod_dma_info omap44xx_gpmc_sdma_reqs[] = {
1149 { .dma_req = 3 + OMAP44XX_DMA_REQ_START },
1150 { .dma_req = -1 }
1151};
1152
1153static struct omap_hwmod omap44xx_gpmc_hwmod = {
1154 .name = "gpmc",
1155 .class = &omap44xx_gpmc_hwmod_class,
1156 .clkdm_name = "l3_2_clkdm",
1157 .flags = HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET,
1158 .mpu_irqs = omap44xx_gpmc_irqs,
1159 .sdma_reqs = omap44xx_gpmc_sdma_reqs,
1160 .prcm = {
1161 .omap4 = {
1162 .clkctrl_offs = OMAP4_CM_L3_2_GPMC_CLKCTRL_OFFSET,
1163 .context_offs = OMAP4_RM_L3_2_GPMC_CONTEXT_OFFSET,
1164 .modulemode = MODULEMODE_HWCTRL,
1165 },
1166 },
1167};
1168
1169/*
Paul Walmsley9def3902012-04-19 13:33:53 -06001170 * 'gpu' class
1171 * 2d/3d graphics accelerator
1172 */
1173
1174static struct omap_hwmod_class_sysconfig omap44xx_gpu_sysc = {
1175 .rev_offs = 0x1fc00,
1176 .sysc_offs = 0x1fc10,
1177 .sysc_flags = (SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE),
1178 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1179 SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
1180 MSTANDBY_SMART | MSTANDBY_SMART_WKUP),
1181 .sysc_fields = &omap_hwmod_sysc_type2,
1182};
1183
1184static struct omap_hwmod_class omap44xx_gpu_hwmod_class = {
1185 .name = "gpu",
1186 .sysc = &omap44xx_gpu_sysc,
1187};
1188
1189/* gpu */
1190static struct omap_hwmod_irq_info omap44xx_gpu_irqs[] = {
1191 { .irq = 21 + OMAP44XX_IRQ_GIC_START },
1192 { .irq = -1 }
1193};
1194
1195static struct omap_hwmod omap44xx_gpu_hwmod = {
1196 .name = "gpu",
1197 .class = &omap44xx_gpu_hwmod_class,
1198 .clkdm_name = "l3_gfx_clkdm",
1199 .mpu_irqs = omap44xx_gpu_irqs,
1200 .main_clk = "gpu_fck",
1201 .prcm = {
1202 .omap4 = {
1203 .clkctrl_offs = OMAP4_CM_GFX_GFX_CLKCTRL_OFFSET,
1204 .context_offs = OMAP4_RM_GFX_GFX_CONTEXT_OFFSET,
1205 .modulemode = MODULEMODE_SWCTRL,
1206 },
1207 },
1208};
1209
1210/*
Paul Walmsleya091c082012-04-19 13:33:50 -06001211 * 'hdq1w' class
1212 * hdq / 1-wire serial interface controller
1213 */
1214
1215static struct omap_hwmod_class_sysconfig omap44xx_hdq1w_sysc = {
1216 .rev_offs = 0x0000,
1217 .sysc_offs = 0x0014,
1218 .syss_offs = 0x0018,
1219 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_SOFTRESET |
1220 SYSS_HAS_RESET_STATUS),
1221 .sysc_fields = &omap_hwmod_sysc_type1,
1222};
1223
1224static struct omap_hwmod_class omap44xx_hdq1w_hwmod_class = {
1225 .name = "hdq1w",
1226 .sysc = &omap44xx_hdq1w_sysc,
1227};
1228
1229/* hdq1w */
1230static struct omap_hwmod_irq_info omap44xx_hdq1w_irqs[] = {
1231 { .irq = 58 + OMAP44XX_IRQ_GIC_START },
1232 { .irq = -1 }
1233};
1234
1235static struct omap_hwmod omap44xx_hdq1w_hwmod = {
1236 .name = "hdq1w",
1237 .class = &omap44xx_hdq1w_hwmod_class,
1238 .clkdm_name = "l4_per_clkdm",
1239 .flags = HWMOD_INIT_NO_RESET, /* XXX temporary */
1240 .mpu_irqs = omap44xx_hdq1w_irqs,
1241 .main_clk = "hdq1w_fck",
1242 .prcm = {
1243 .omap4 = {
1244 .clkctrl_offs = OMAP4_CM_L4PER_HDQ1W_CLKCTRL_OFFSET,
1245 .context_offs = OMAP4_RM_L4PER_HDQ1W_CONTEXT_OFFSET,
1246 .modulemode = MODULEMODE_SWCTRL,
1247 },
1248 },
1249};
1250
1251/*
Benoit Cousson407a6882011-02-15 22:39:48 +01001252 * 'hsi' class
1253 * mipi high-speed synchronous serial interface (multichannel and full-duplex
1254 * serial if)
1255 */
1256
1257static struct omap_hwmod_class_sysconfig omap44xx_hsi_sysc = {
1258 .rev_offs = 0x0000,
1259 .sysc_offs = 0x0010,
1260 .syss_offs = 0x0014,
1261 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_EMUFREE |
1262 SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE |
1263 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
1264 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1265 SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
Benoit Coussonc614ebf2011-07-01 22:54:01 +02001266 MSTANDBY_SMART | MSTANDBY_SMART_WKUP),
Benoit Cousson407a6882011-02-15 22:39:48 +01001267 .sysc_fields = &omap_hwmod_sysc_type1,
1268};
1269
1270static struct omap_hwmod_class omap44xx_hsi_hwmod_class = {
1271 .name = "hsi",
1272 .sysc = &omap44xx_hsi_sysc,
1273};
1274
1275/* hsi */
1276static struct omap_hwmod_irq_info omap44xx_hsi_irqs[] = {
1277 { .name = "mpu_p1", .irq = 67 + OMAP44XX_IRQ_GIC_START },
1278 { .name = "mpu_p2", .irq = 68 + OMAP44XX_IRQ_GIC_START },
1279 { .name = "mpu_dma", .irq = 71 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001280 { .irq = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01001281};
1282
Benoit Cousson407a6882011-02-15 22:39:48 +01001283static struct omap_hwmod omap44xx_hsi_hwmod = {
1284 .name = "hsi",
1285 .class = &omap44xx_hsi_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001286 .clkdm_name = "l3_init_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +01001287 .mpu_irqs = omap44xx_hsi_irqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01001288 .main_clk = "hsi_fck",
Benoit Cousson00fe6102011-07-09 19:14:28 -06001289 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01001290 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001291 .clkctrl_offs = OMAP4_CM_L3INIT_HSI_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001292 .context_offs = OMAP4_RM_L3INIT_HSI_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001293 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01001294 },
1295 },
Benoit Cousson407a6882011-02-15 22:39:48 +01001296};
1297
1298/*
Benoit Coussonf7764712010-09-21 19:37:14 +05301299 * 'i2c' class
1300 * multimaster high-speed i2c controller
1301 */
1302
1303static struct omap_hwmod_class_sysconfig omap44xx_i2c_sysc = {
1304 .sysc_offs = 0x0010,
1305 .syss_offs = 0x0090,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001306 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
1307 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE |
Benoit Cousson0cfe8752010-12-21 21:08:33 -07001308 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
Benoit Cousson7cffa6b2010-12-21 21:31:28 -07001309 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1310 SIDLE_SMART_WKUP),
Shubhrajyoti D3e47dc62011-12-13 16:25:54 +05301311 .clockact = CLOCKACT_TEST_ICLK,
Benoit Coussonf7764712010-09-21 19:37:14 +05301312 .sysc_fields = &omap_hwmod_sysc_type1,
1313};
1314
1315static struct omap_hwmod_class omap44xx_i2c_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +00001316 .name = "i2c",
1317 .sysc = &omap44xx_i2c_sysc,
Andy Greendb791a72011-07-10 05:27:15 -06001318 .rev = OMAP_I2C_IP_VERSION_2,
Avinash.H.M6d3c55f2011-07-10 05:27:16 -06001319 .reset = &omap_i2c_reset,
Benoit Coussonf7764712010-09-21 19:37:14 +05301320};
1321
Andy Green4d4441a2011-07-10 05:27:16 -06001322static struct omap_i2c_dev_attr i2c_dev_attr = {
1323 .flags = OMAP_I2C_FLAG_BUS_SHIFT_NONE,
1324};
1325
Benoit Coussonf7764712010-09-21 19:37:14 +05301326/* i2c1 */
Benoit Coussonf7764712010-09-21 19:37:14 +05301327static struct omap_hwmod_irq_info omap44xx_i2c1_irqs[] = {
1328 { .irq = 56 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001329 { .irq = -1 }
Benoit Coussonf7764712010-09-21 19:37:14 +05301330};
1331
1332static struct omap_hwmod_dma_info omap44xx_i2c1_sdma_reqs[] = {
1333 { .name = "tx", .dma_req = 26 + OMAP44XX_DMA_REQ_START },
1334 { .name = "rx", .dma_req = 27 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06001335 { .dma_req = -1 }
Benoit Coussonf7764712010-09-21 19:37:14 +05301336};
1337
Benoit Coussonf7764712010-09-21 19:37:14 +05301338static struct omap_hwmod omap44xx_i2c1_hwmod = {
1339 .name = "i2c1",
1340 .class = &omap44xx_i2c_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001341 .clkdm_name = "l4_per_clkdm",
Shubhrajyoti D3e47dc62011-12-13 16:25:54 +05301342 .flags = HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT,
Benoit Coussonf7764712010-09-21 19:37:14 +05301343 .mpu_irqs = omap44xx_i2c1_irqs,
Benoit Coussonf7764712010-09-21 19:37:14 +05301344 .sdma_reqs = omap44xx_i2c1_sdma_reqs,
Benoit Coussonf7764712010-09-21 19:37:14 +05301345 .main_clk = "i2c1_fck",
1346 .prcm = {
1347 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001348 .clkctrl_offs = OMAP4_CM_L4PER_I2C1_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001349 .context_offs = OMAP4_RM_L4PER_I2C1_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001350 .modulemode = MODULEMODE_SWCTRL,
Benoit Coussonf7764712010-09-21 19:37:14 +05301351 },
1352 },
Andy Green4d4441a2011-07-10 05:27:16 -06001353 .dev_attr = &i2c_dev_attr,
Benoit Coussonf7764712010-09-21 19:37:14 +05301354};
1355
1356/* i2c2 */
Benoit Coussonf7764712010-09-21 19:37:14 +05301357static struct omap_hwmod_irq_info omap44xx_i2c2_irqs[] = {
1358 { .irq = 57 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001359 { .irq = -1 }
Benoit Coussonf7764712010-09-21 19:37:14 +05301360};
1361
1362static struct omap_hwmod_dma_info omap44xx_i2c2_sdma_reqs[] = {
1363 { .name = "tx", .dma_req = 28 + OMAP44XX_DMA_REQ_START },
1364 { .name = "rx", .dma_req = 29 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06001365 { .dma_req = -1 }
Benoit Coussonf7764712010-09-21 19:37:14 +05301366};
1367
Benoit Coussonf7764712010-09-21 19:37:14 +05301368static struct omap_hwmod omap44xx_i2c2_hwmod = {
1369 .name = "i2c2",
1370 .class = &omap44xx_i2c_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001371 .clkdm_name = "l4_per_clkdm",
Shubhrajyoti D3e47dc62011-12-13 16:25:54 +05301372 .flags = HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT,
Benoit Coussonf7764712010-09-21 19:37:14 +05301373 .mpu_irqs = omap44xx_i2c2_irqs,
Benoit Coussonf7764712010-09-21 19:37:14 +05301374 .sdma_reqs = omap44xx_i2c2_sdma_reqs,
Benoit Coussonf7764712010-09-21 19:37:14 +05301375 .main_clk = "i2c2_fck",
1376 .prcm = {
1377 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001378 .clkctrl_offs = OMAP4_CM_L4PER_I2C2_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001379 .context_offs = OMAP4_RM_L4PER_I2C2_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001380 .modulemode = MODULEMODE_SWCTRL,
Benoit Coussonf7764712010-09-21 19:37:14 +05301381 },
1382 },
Andy Green4d4441a2011-07-10 05:27:16 -06001383 .dev_attr = &i2c_dev_attr,
Benoit Coussonf7764712010-09-21 19:37:14 +05301384};
1385
1386/* i2c3 */
Benoit Coussonf7764712010-09-21 19:37:14 +05301387static struct omap_hwmod_irq_info omap44xx_i2c3_irqs[] = {
1388 { .irq = 61 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001389 { .irq = -1 }
Benoit Coussonf7764712010-09-21 19:37:14 +05301390};
1391
1392static struct omap_hwmod_dma_info omap44xx_i2c3_sdma_reqs[] = {
1393 { .name = "tx", .dma_req = 24 + OMAP44XX_DMA_REQ_START },
1394 { .name = "rx", .dma_req = 25 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06001395 { .dma_req = -1 }
Benoit Coussonf7764712010-09-21 19:37:14 +05301396};
1397
Benoit Coussonf7764712010-09-21 19:37:14 +05301398static struct omap_hwmod omap44xx_i2c3_hwmod = {
1399 .name = "i2c3",
1400 .class = &omap44xx_i2c_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001401 .clkdm_name = "l4_per_clkdm",
Shubhrajyoti D3e47dc62011-12-13 16:25:54 +05301402 .flags = HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT,
Benoit Coussonf7764712010-09-21 19:37:14 +05301403 .mpu_irqs = omap44xx_i2c3_irqs,
Benoit Coussonf7764712010-09-21 19:37:14 +05301404 .sdma_reqs = omap44xx_i2c3_sdma_reqs,
Benoit Coussonf7764712010-09-21 19:37:14 +05301405 .main_clk = "i2c3_fck",
1406 .prcm = {
1407 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001408 .clkctrl_offs = OMAP4_CM_L4PER_I2C3_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001409 .context_offs = OMAP4_RM_L4PER_I2C3_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001410 .modulemode = MODULEMODE_SWCTRL,
Benoit Coussonf7764712010-09-21 19:37:14 +05301411 },
1412 },
Andy Green4d4441a2011-07-10 05:27:16 -06001413 .dev_attr = &i2c_dev_attr,
Benoit Coussonf7764712010-09-21 19:37:14 +05301414};
1415
1416/* i2c4 */
Benoit Coussonf7764712010-09-21 19:37:14 +05301417static struct omap_hwmod_irq_info omap44xx_i2c4_irqs[] = {
1418 { .irq = 62 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001419 { .irq = -1 }
Benoit Coussonf7764712010-09-21 19:37:14 +05301420};
1421
1422static struct omap_hwmod_dma_info omap44xx_i2c4_sdma_reqs[] = {
1423 { .name = "tx", .dma_req = 123 + OMAP44XX_DMA_REQ_START },
1424 { .name = "rx", .dma_req = 124 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06001425 { .dma_req = -1 }
Benoit Coussonf7764712010-09-21 19:37:14 +05301426};
1427
Benoit Coussonf7764712010-09-21 19:37:14 +05301428static struct omap_hwmod omap44xx_i2c4_hwmod = {
1429 .name = "i2c4",
1430 .class = &omap44xx_i2c_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001431 .clkdm_name = "l4_per_clkdm",
Shubhrajyoti D3e47dc62011-12-13 16:25:54 +05301432 .flags = HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT,
Benoit Coussonf7764712010-09-21 19:37:14 +05301433 .mpu_irqs = omap44xx_i2c4_irqs,
Benoit Coussonf7764712010-09-21 19:37:14 +05301434 .sdma_reqs = omap44xx_i2c4_sdma_reqs,
Benoit Coussonf7764712010-09-21 19:37:14 +05301435 .main_clk = "i2c4_fck",
1436 .prcm = {
1437 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001438 .clkctrl_offs = OMAP4_CM_L4PER_I2C4_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001439 .context_offs = OMAP4_RM_L4PER_I2C4_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001440 .modulemode = MODULEMODE_SWCTRL,
Benoit Coussonf7764712010-09-21 19:37:14 +05301441 },
1442 },
Andy Green4d4441a2011-07-10 05:27:16 -06001443 .dev_attr = &i2c_dev_attr,
Benoit Coussonf7764712010-09-21 19:37:14 +05301444};
1445
1446/*
Benoit Cousson407a6882011-02-15 22:39:48 +01001447 * 'ipu' class
1448 * imaging processor unit
1449 */
1450
1451static struct omap_hwmod_class omap44xx_ipu_hwmod_class = {
1452 .name = "ipu",
1453};
1454
1455/* ipu */
1456static struct omap_hwmod_irq_info omap44xx_ipu_irqs[] = {
1457 { .irq = 100 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001458 { .irq = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01001459};
1460
Benoit Cousson407a6882011-02-15 22:39:48 +01001461static struct omap_hwmod_rst_info omap44xx_ipu_resets[] = {
Paul Walmsleyf2f57362012-04-18 19:10:02 -06001462 { .name = "cpu0", .rst_shift = 0 },
1463 { .name = "cpu1", .rst_shift = 1 },
Benoit Cousson407a6882011-02-15 22:39:48 +01001464 { .name = "mmu_cache", .rst_shift = 2 },
1465};
1466
Benoit Cousson407a6882011-02-15 22:39:48 +01001467static struct omap_hwmod omap44xx_ipu_hwmod = {
1468 .name = "ipu",
1469 .class = &omap44xx_ipu_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001470 .clkdm_name = "ducati_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +01001471 .mpu_irqs = omap44xx_ipu_irqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01001472 .rst_lines = omap44xx_ipu_resets,
1473 .rst_lines_cnt = ARRAY_SIZE(omap44xx_ipu_resets),
1474 .main_clk = "ipu_fck",
Benoit Cousson00fe6102011-07-09 19:14:28 -06001475 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01001476 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001477 .clkctrl_offs = OMAP4_CM_DUCATI_DUCATI_CLKCTRL_OFFSET,
Benoit Coussoneaac3292011-07-10 05:56:31 -06001478 .rstctrl_offs = OMAP4_RM_DUCATI_RSTCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001479 .context_offs = OMAP4_RM_DUCATI_DUCATI_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001480 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01001481 },
1482 },
Benoit Cousson407a6882011-02-15 22:39:48 +01001483};
1484
1485/*
1486 * 'iss' class
1487 * external images sensor pixel data processor
1488 */
1489
1490static struct omap_hwmod_class_sysconfig omap44xx_iss_sysc = {
1491 .rev_offs = 0x0000,
1492 .sysc_offs = 0x0010,
Fernando Guzman Lugod99de7f2012-04-13 05:08:03 -06001493 /*
1494 * ISS needs 100 OCP clk cycles delay after a softreset before
1495 * accessing sysconfig again.
1496 * The lowest frequency at the moment for L3 bus is 100 MHz, so
1497 * 1usec delay is needed. Add an x2 margin to be safe (2 usecs).
1498 *
1499 * TODO: Indicate errata when available.
1500 */
1501 .srst_udelay = 2,
Benoit Cousson407a6882011-02-15 22:39:48 +01001502 .sysc_flags = (SYSC_HAS_MIDLEMODE | SYSC_HAS_RESET_STATUS |
1503 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
1504 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1505 SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
Benoit Coussonc614ebf2011-07-01 22:54:01 +02001506 MSTANDBY_SMART | MSTANDBY_SMART_WKUP),
Benoit Cousson407a6882011-02-15 22:39:48 +01001507 .sysc_fields = &omap_hwmod_sysc_type2,
1508};
1509
1510static struct omap_hwmod_class omap44xx_iss_hwmod_class = {
1511 .name = "iss",
1512 .sysc = &omap44xx_iss_sysc,
1513};
1514
1515/* iss */
1516static struct omap_hwmod_irq_info omap44xx_iss_irqs[] = {
1517 { .irq = 24 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001518 { .irq = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01001519};
1520
1521static struct omap_hwmod_dma_info omap44xx_iss_sdma_reqs[] = {
1522 { .name = "1", .dma_req = 8 + OMAP44XX_DMA_REQ_START },
1523 { .name = "2", .dma_req = 9 + OMAP44XX_DMA_REQ_START },
1524 { .name = "3", .dma_req = 11 + OMAP44XX_DMA_REQ_START },
1525 { .name = "4", .dma_req = 12 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06001526 { .dma_req = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01001527};
1528
Benoit Cousson407a6882011-02-15 22:39:48 +01001529static struct omap_hwmod_opt_clk iss_opt_clks[] = {
1530 { .role = "ctrlclk", .clk = "iss_ctrlclk" },
1531};
1532
1533static struct omap_hwmod omap44xx_iss_hwmod = {
1534 .name = "iss",
1535 .class = &omap44xx_iss_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001536 .clkdm_name = "iss_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +01001537 .mpu_irqs = omap44xx_iss_irqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01001538 .sdma_reqs = omap44xx_iss_sdma_reqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01001539 .main_clk = "iss_fck",
Benoit Cousson00fe6102011-07-09 19:14:28 -06001540 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01001541 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001542 .clkctrl_offs = OMAP4_CM_CAM_ISS_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001543 .context_offs = OMAP4_RM_CAM_ISS_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001544 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01001545 },
1546 },
1547 .opt_clks = iss_opt_clks,
1548 .opt_clks_cnt = ARRAY_SIZE(iss_opt_clks),
Benoit Cousson407a6882011-02-15 22:39:48 +01001549};
1550
1551/*
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001552 * 'iva' class
1553 * multi-standard video encoder/decoder hardware accelerator
1554 */
1555
1556static struct omap_hwmod_class omap44xx_iva_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +00001557 .name = "iva",
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001558};
1559
1560/* iva */
1561static struct omap_hwmod_irq_info omap44xx_iva_irqs[] = {
1562 { .name = "sync_1", .irq = 103 + OMAP44XX_IRQ_GIC_START },
1563 { .name = "sync_0", .irq = 104 + OMAP44XX_IRQ_GIC_START },
1564 { .name = "mailbox_0", .irq = 107 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001565 { .irq = -1 }
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001566};
1567
1568static struct omap_hwmod_rst_info omap44xx_iva_resets[] = {
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001569 { .name = "seq0", .rst_shift = 0 },
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001570 { .name = "seq1", .rst_shift = 1 },
Paul Walmsleyf2f57362012-04-18 19:10:02 -06001571 { .name = "logic", .rst_shift = 2 },
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001572};
1573
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001574static struct omap_hwmod omap44xx_iva_hwmod = {
1575 .name = "iva",
1576 .class = &omap44xx_iva_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001577 .clkdm_name = "ivahd_clkdm",
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001578 .mpu_irqs = omap44xx_iva_irqs,
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001579 .rst_lines = omap44xx_iva_resets,
1580 .rst_lines_cnt = ARRAY_SIZE(omap44xx_iva_resets),
1581 .main_clk = "iva_fck",
1582 .prcm = {
1583 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001584 .clkctrl_offs = OMAP4_CM_IVAHD_IVAHD_CLKCTRL_OFFSET,
Benoit Coussoneaac3292011-07-10 05:56:31 -06001585 .rstctrl_offs = OMAP4_RM_IVAHD_RSTCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001586 .context_offs = OMAP4_RM_IVAHD_IVAHD_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001587 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001588 },
1589 },
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001590};
1591
1592/*
Benoit Cousson407a6882011-02-15 22:39:48 +01001593 * 'kbd' class
1594 * keyboard controller
1595 */
1596
1597static struct omap_hwmod_class_sysconfig omap44xx_kbd_sysc = {
1598 .rev_offs = 0x0000,
1599 .sysc_offs = 0x0010,
1600 .syss_offs = 0x0014,
1601 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
1602 SYSC_HAS_EMUFREE | SYSC_HAS_ENAWAKEUP |
1603 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
1604 SYSS_HAS_RESET_STATUS),
1605 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
1606 .sysc_fields = &omap_hwmod_sysc_type1,
1607};
1608
1609static struct omap_hwmod_class omap44xx_kbd_hwmod_class = {
1610 .name = "kbd",
1611 .sysc = &omap44xx_kbd_sysc,
1612};
1613
1614/* kbd */
Benoit Cousson407a6882011-02-15 22:39:48 +01001615static struct omap_hwmod_irq_info omap44xx_kbd_irqs[] = {
1616 { .irq = 120 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001617 { .irq = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01001618};
1619
Benoit Cousson407a6882011-02-15 22:39:48 +01001620static struct omap_hwmod omap44xx_kbd_hwmod = {
1621 .name = "kbd",
1622 .class = &omap44xx_kbd_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001623 .clkdm_name = "l4_wkup_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +01001624 .mpu_irqs = omap44xx_kbd_irqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01001625 .main_clk = "kbd_fck",
Benoit Cousson00fe6102011-07-09 19:14:28 -06001626 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01001627 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001628 .clkctrl_offs = OMAP4_CM_WKUP_KEYBOARD_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001629 .context_offs = OMAP4_RM_WKUP_KEYBOARD_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001630 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01001631 },
1632 },
Benoit Cousson407a6882011-02-15 22:39:48 +01001633};
1634
1635/*
Benoit Coussonec5df922011-02-02 19:27:21 +00001636 * 'mailbox' class
1637 * mailbox module allowing communication between the on-chip processors using a
1638 * queued mailbox-interrupt mechanism.
1639 */
1640
1641static struct omap_hwmod_class_sysconfig omap44xx_mailbox_sysc = {
1642 .rev_offs = 0x0000,
1643 .sysc_offs = 0x0010,
1644 .sysc_flags = (SYSC_HAS_RESET_STATUS | SYSC_HAS_SIDLEMODE |
1645 SYSC_HAS_SOFTRESET),
1646 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
1647 .sysc_fields = &omap_hwmod_sysc_type2,
1648};
1649
1650static struct omap_hwmod_class omap44xx_mailbox_hwmod_class = {
1651 .name = "mailbox",
1652 .sysc = &omap44xx_mailbox_sysc,
1653};
1654
1655/* mailbox */
Benoit Coussonec5df922011-02-02 19:27:21 +00001656static struct omap_hwmod_irq_info omap44xx_mailbox_irqs[] = {
1657 { .irq = 26 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001658 { .irq = -1 }
Benoit Coussonec5df922011-02-02 19:27:21 +00001659};
1660
Benoit Coussonec5df922011-02-02 19:27:21 +00001661static struct omap_hwmod omap44xx_mailbox_hwmod = {
1662 .name = "mailbox",
1663 .class = &omap44xx_mailbox_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001664 .clkdm_name = "l4_cfg_clkdm",
Benoit Coussonec5df922011-02-02 19:27:21 +00001665 .mpu_irqs = omap44xx_mailbox_irqs,
Benoit Cousson00fe6102011-07-09 19:14:28 -06001666 .prcm = {
Benoit Coussonec5df922011-02-02 19:27:21 +00001667 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001668 .clkctrl_offs = OMAP4_CM_L4CFG_MAILBOX_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001669 .context_offs = OMAP4_RM_L4CFG_MAILBOX_CONTEXT_OFFSET,
Benoit Coussonec5df922011-02-02 19:27:21 +00001670 },
1671 },
Benoit Coussonec5df922011-02-02 19:27:21 +00001672};
1673
1674/*
Benoit Cousson4ddff492011-01-31 14:50:30 +00001675 * 'mcbsp' class
1676 * multi channel buffered serial port controller
1677 */
1678
1679static struct omap_hwmod_class_sysconfig omap44xx_mcbsp_sysc = {
1680 .sysc_offs = 0x008c,
1681 .sysc_flags = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_ENAWAKEUP |
1682 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
1683 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
1684 .sysc_fields = &omap_hwmod_sysc_type1,
1685};
1686
1687static struct omap_hwmod_class omap44xx_mcbsp_hwmod_class = {
1688 .name = "mcbsp",
1689 .sysc = &omap44xx_mcbsp_sysc,
Kishon Vijay Abraham Icb7e9de2011-02-24 15:16:50 +05301690 .rev = MCBSP_CONFIG_TYPE4,
Benoit Cousson4ddff492011-01-31 14:50:30 +00001691};
1692
1693/* mcbsp1 */
Benoit Cousson4ddff492011-01-31 14:50:30 +00001694static struct omap_hwmod_irq_info omap44xx_mcbsp1_irqs[] = {
1695 { .irq = 17 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001696 { .irq = -1 }
Benoit Cousson4ddff492011-01-31 14:50:30 +00001697};
1698
1699static struct omap_hwmod_dma_info omap44xx_mcbsp1_sdma_reqs[] = {
1700 { .name = "tx", .dma_req = 32 + OMAP44XX_DMA_REQ_START },
1701 { .name = "rx", .dma_req = 33 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06001702 { .dma_req = -1 }
Benoit Cousson4ddff492011-01-31 14:50:30 +00001703};
1704
Paul Walmsley503d0ea2012-04-04 09:11:48 -06001705static struct omap_hwmod_opt_clk mcbsp1_opt_clks[] = {
1706 { .role = "pad_fck", .clk = "pad_clks_ck" },
1707 { .role = "prcm_clk", .clk = "mcbsp1_sync_mux_ck" },
1708};
1709
Benoit Cousson4ddff492011-01-31 14:50:30 +00001710static struct omap_hwmod omap44xx_mcbsp1_hwmod = {
1711 .name = "mcbsp1",
1712 .class = &omap44xx_mcbsp_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001713 .clkdm_name = "abe_clkdm",
Benoit Cousson4ddff492011-01-31 14:50:30 +00001714 .mpu_irqs = omap44xx_mcbsp1_irqs,
Benoit Cousson4ddff492011-01-31 14:50:30 +00001715 .sdma_reqs = omap44xx_mcbsp1_sdma_reqs,
Benoit Cousson4ddff492011-01-31 14:50:30 +00001716 .main_clk = "mcbsp1_fck",
1717 .prcm = {
1718 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001719 .clkctrl_offs = OMAP4_CM1_ABE_MCBSP1_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001720 .context_offs = OMAP4_RM_ABE_MCBSP1_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001721 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson4ddff492011-01-31 14:50:30 +00001722 },
1723 },
Paul Walmsley503d0ea2012-04-04 09:11:48 -06001724 .opt_clks = mcbsp1_opt_clks,
1725 .opt_clks_cnt = ARRAY_SIZE(mcbsp1_opt_clks),
Benoit Cousson4ddff492011-01-31 14:50:30 +00001726};
1727
1728/* mcbsp2 */
Benoit Cousson4ddff492011-01-31 14:50:30 +00001729static struct omap_hwmod_irq_info omap44xx_mcbsp2_irqs[] = {
1730 { .irq = 22 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001731 { .irq = -1 }
Benoit Cousson4ddff492011-01-31 14:50:30 +00001732};
1733
1734static struct omap_hwmod_dma_info omap44xx_mcbsp2_sdma_reqs[] = {
1735 { .name = "tx", .dma_req = 16 + OMAP44XX_DMA_REQ_START },
1736 { .name = "rx", .dma_req = 17 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06001737 { .dma_req = -1 }
Benoit Cousson4ddff492011-01-31 14:50:30 +00001738};
1739
Paul Walmsley503d0ea2012-04-04 09:11:48 -06001740static struct omap_hwmod_opt_clk mcbsp2_opt_clks[] = {
1741 { .role = "pad_fck", .clk = "pad_clks_ck" },
1742 { .role = "prcm_clk", .clk = "mcbsp2_sync_mux_ck" },
1743};
1744
Benoit Cousson4ddff492011-01-31 14:50:30 +00001745static struct omap_hwmod omap44xx_mcbsp2_hwmod = {
1746 .name = "mcbsp2",
1747 .class = &omap44xx_mcbsp_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001748 .clkdm_name = "abe_clkdm",
Benoit Cousson4ddff492011-01-31 14:50:30 +00001749 .mpu_irqs = omap44xx_mcbsp2_irqs,
Benoit Cousson4ddff492011-01-31 14:50:30 +00001750 .sdma_reqs = omap44xx_mcbsp2_sdma_reqs,
Benoit Cousson4ddff492011-01-31 14:50:30 +00001751 .main_clk = "mcbsp2_fck",
1752 .prcm = {
1753 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001754 .clkctrl_offs = OMAP4_CM1_ABE_MCBSP2_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001755 .context_offs = OMAP4_RM_ABE_MCBSP2_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001756 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson4ddff492011-01-31 14:50:30 +00001757 },
1758 },
Paul Walmsley503d0ea2012-04-04 09:11:48 -06001759 .opt_clks = mcbsp2_opt_clks,
1760 .opt_clks_cnt = ARRAY_SIZE(mcbsp2_opt_clks),
Benoit Cousson4ddff492011-01-31 14:50:30 +00001761};
1762
1763/* mcbsp3 */
Benoit Cousson4ddff492011-01-31 14:50:30 +00001764static struct omap_hwmod_irq_info omap44xx_mcbsp3_irqs[] = {
1765 { .irq = 23 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001766 { .irq = -1 }
Benoit Cousson4ddff492011-01-31 14:50:30 +00001767};
1768
1769static struct omap_hwmod_dma_info omap44xx_mcbsp3_sdma_reqs[] = {
1770 { .name = "tx", .dma_req = 18 + OMAP44XX_DMA_REQ_START },
1771 { .name = "rx", .dma_req = 19 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06001772 { .dma_req = -1 }
Benoit Cousson4ddff492011-01-31 14:50:30 +00001773};
1774
Paul Walmsley503d0ea2012-04-04 09:11:48 -06001775static struct omap_hwmod_opt_clk mcbsp3_opt_clks[] = {
1776 { .role = "pad_fck", .clk = "pad_clks_ck" },
1777 { .role = "prcm_clk", .clk = "mcbsp3_sync_mux_ck" },
1778};
1779
Benoit Cousson4ddff492011-01-31 14:50:30 +00001780static struct omap_hwmod omap44xx_mcbsp3_hwmod = {
1781 .name = "mcbsp3",
1782 .class = &omap44xx_mcbsp_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001783 .clkdm_name = "abe_clkdm",
Benoit Cousson4ddff492011-01-31 14:50:30 +00001784 .mpu_irqs = omap44xx_mcbsp3_irqs,
Benoit Cousson4ddff492011-01-31 14:50:30 +00001785 .sdma_reqs = omap44xx_mcbsp3_sdma_reqs,
Benoit Cousson4ddff492011-01-31 14:50:30 +00001786 .main_clk = "mcbsp3_fck",
1787 .prcm = {
1788 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001789 .clkctrl_offs = OMAP4_CM1_ABE_MCBSP3_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001790 .context_offs = OMAP4_RM_ABE_MCBSP3_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001791 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson4ddff492011-01-31 14:50:30 +00001792 },
1793 },
Paul Walmsley503d0ea2012-04-04 09:11:48 -06001794 .opt_clks = mcbsp3_opt_clks,
1795 .opt_clks_cnt = ARRAY_SIZE(mcbsp3_opt_clks),
Benoit Cousson4ddff492011-01-31 14:50:30 +00001796};
1797
1798/* mcbsp4 */
Benoit Cousson4ddff492011-01-31 14:50:30 +00001799static struct omap_hwmod_irq_info omap44xx_mcbsp4_irqs[] = {
1800 { .irq = 16 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001801 { .irq = -1 }
Benoit Cousson4ddff492011-01-31 14:50:30 +00001802};
1803
1804static struct omap_hwmod_dma_info omap44xx_mcbsp4_sdma_reqs[] = {
1805 { .name = "tx", .dma_req = 30 + OMAP44XX_DMA_REQ_START },
1806 { .name = "rx", .dma_req = 31 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06001807 { .dma_req = -1 }
Benoit Cousson4ddff492011-01-31 14:50:30 +00001808};
1809
Paul Walmsley503d0ea2012-04-04 09:11:48 -06001810static struct omap_hwmod_opt_clk mcbsp4_opt_clks[] = {
1811 { .role = "pad_fck", .clk = "pad_clks_ck" },
1812 { .role = "prcm_clk", .clk = "mcbsp4_sync_mux_ck" },
1813};
1814
Benoit Cousson4ddff492011-01-31 14:50:30 +00001815static struct omap_hwmod omap44xx_mcbsp4_hwmod = {
1816 .name = "mcbsp4",
1817 .class = &omap44xx_mcbsp_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001818 .clkdm_name = "l4_per_clkdm",
Benoit Cousson4ddff492011-01-31 14:50:30 +00001819 .mpu_irqs = omap44xx_mcbsp4_irqs,
Benoit Cousson4ddff492011-01-31 14:50:30 +00001820 .sdma_reqs = omap44xx_mcbsp4_sdma_reqs,
Benoit Cousson4ddff492011-01-31 14:50:30 +00001821 .main_clk = "mcbsp4_fck",
1822 .prcm = {
1823 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001824 .clkctrl_offs = OMAP4_CM_L4PER_MCBSP4_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001825 .context_offs = OMAP4_RM_L4PER_MCBSP4_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001826 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson4ddff492011-01-31 14:50:30 +00001827 },
1828 },
Paul Walmsley503d0ea2012-04-04 09:11:48 -06001829 .opt_clks = mcbsp4_opt_clks,
1830 .opt_clks_cnt = ARRAY_SIZE(mcbsp4_opt_clks),
Benoit Cousson4ddff492011-01-31 14:50:30 +00001831};
1832
1833/*
Benoit Cousson407a6882011-02-15 22:39:48 +01001834 * 'mcpdm' class
1835 * multi channel pdm controller (proprietary interface with phoenix power
1836 * ic)
1837 */
1838
1839static struct omap_hwmod_class_sysconfig omap44xx_mcpdm_sysc = {
1840 .rev_offs = 0x0000,
1841 .sysc_offs = 0x0010,
1842 .sysc_flags = (SYSC_HAS_EMUFREE | SYSC_HAS_RESET_STATUS |
1843 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
1844 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1845 SIDLE_SMART_WKUP),
1846 .sysc_fields = &omap_hwmod_sysc_type2,
1847};
1848
1849static struct omap_hwmod_class omap44xx_mcpdm_hwmod_class = {
1850 .name = "mcpdm",
1851 .sysc = &omap44xx_mcpdm_sysc,
1852};
1853
1854/* mcpdm */
Benoit Cousson407a6882011-02-15 22:39:48 +01001855static struct omap_hwmod_irq_info omap44xx_mcpdm_irqs[] = {
1856 { .irq = 112 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001857 { .irq = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01001858};
1859
1860static struct omap_hwmod_dma_info omap44xx_mcpdm_sdma_reqs[] = {
1861 { .name = "up_link", .dma_req = 64 + OMAP44XX_DMA_REQ_START },
1862 { .name = "dn_link", .dma_req = 65 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06001863 { .dma_req = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01001864};
1865
Benoit Cousson407a6882011-02-15 22:39:48 +01001866static struct omap_hwmod omap44xx_mcpdm_hwmod = {
1867 .name = "mcpdm",
1868 .class = &omap44xx_mcpdm_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001869 .clkdm_name = "abe_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +01001870 .mpu_irqs = omap44xx_mcpdm_irqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01001871 .sdma_reqs = omap44xx_mcpdm_sdma_reqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01001872 .main_clk = "mcpdm_fck",
Benoit Cousson00fe6102011-07-09 19:14:28 -06001873 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01001874 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001875 .clkctrl_offs = OMAP4_CM1_ABE_PDM_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001876 .context_offs = OMAP4_RM_ABE_PDM_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001877 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01001878 },
1879 },
Benoit Cousson407a6882011-02-15 22:39:48 +01001880};
1881
1882/*
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301883 * 'mcspi' class
1884 * multichannel serial port interface (mcspi) / master/slave synchronous serial
1885 * bus
1886 */
1887
1888static struct omap_hwmod_class_sysconfig omap44xx_mcspi_sysc = {
1889 .rev_offs = 0x0000,
1890 .sysc_offs = 0x0010,
1891 .sysc_flags = (SYSC_HAS_EMUFREE | SYSC_HAS_RESET_STATUS |
1892 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
1893 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1894 SIDLE_SMART_WKUP),
1895 .sysc_fields = &omap_hwmod_sysc_type2,
1896};
1897
1898static struct omap_hwmod_class omap44xx_mcspi_hwmod_class = {
1899 .name = "mcspi",
1900 .sysc = &omap44xx_mcspi_sysc,
Benoit Cousson905a74d2011-02-18 14:01:06 +01001901 .rev = OMAP4_MCSPI_REV,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301902};
1903
1904/* mcspi1 */
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301905static struct omap_hwmod_irq_info omap44xx_mcspi1_irqs[] = {
1906 { .irq = 65 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001907 { .irq = -1 }
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301908};
1909
1910static struct omap_hwmod_dma_info omap44xx_mcspi1_sdma_reqs[] = {
1911 { .name = "tx0", .dma_req = 34 + OMAP44XX_DMA_REQ_START },
1912 { .name = "rx0", .dma_req = 35 + OMAP44XX_DMA_REQ_START },
1913 { .name = "tx1", .dma_req = 36 + OMAP44XX_DMA_REQ_START },
1914 { .name = "rx1", .dma_req = 37 + OMAP44XX_DMA_REQ_START },
1915 { .name = "tx2", .dma_req = 38 + OMAP44XX_DMA_REQ_START },
1916 { .name = "rx2", .dma_req = 39 + OMAP44XX_DMA_REQ_START },
1917 { .name = "tx3", .dma_req = 40 + OMAP44XX_DMA_REQ_START },
1918 { .name = "rx3", .dma_req = 41 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06001919 { .dma_req = -1 }
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301920};
1921
Benoit Cousson905a74d2011-02-18 14:01:06 +01001922/* mcspi1 dev_attr */
1923static struct omap2_mcspi_dev_attr mcspi1_dev_attr = {
1924 .num_chipselect = 4,
1925};
1926
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301927static struct omap_hwmod omap44xx_mcspi1_hwmod = {
1928 .name = "mcspi1",
1929 .class = &omap44xx_mcspi_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001930 .clkdm_name = "l4_per_clkdm",
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301931 .mpu_irqs = omap44xx_mcspi1_irqs,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301932 .sdma_reqs = omap44xx_mcspi1_sdma_reqs,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301933 .main_clk = "mcspi1_fck",
1934 .prcm = {
1935 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001936 .clkctrl_offs = OMAP4_CM_L4PER_MCSPI1_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001937 .context_offs = OMAP4_RM_L4PER_MCSPI1_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001938 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301939 },
1940 },
Benoit Cousson905a74d2011-02-18 14:01:06 +01001941 .dev_attr = &mcspi1_dev_attr,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301942};
1943
1944/* mcspi2 */
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301945static struct omap_hwmod_irq_info omap44xx_mcspi2_irqs[] = {
1946 { .irq = 66 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001947 { .irq = -1 }
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301948};
1949
1950static struct omap_hwmod_dma_info omap44xx_mcspi2_sdma_reqs[] = {
1951 { .name = "tx0", .dma_req = 42 + OMAP44XX_DMA_REQ_START },
1952 { .name = "rx0", .dma_req = 43 + OMAP44XX_DMA_REQ_START },
1953 { .name = "tx1", .dma_req = 44 + OMAP44XX_DMA_REQ_START },
1954 { .name = "rx1", .dma_req = 45 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06001955 { .dma_req = -1 }
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301956};
1957
Benoit Cousson905a74d2011-02-18 14:01:06 +01001958/* mcspi2 dev_attr */
1959static struct omap2_mcspi_dev_attr mcspi2_dev_attr = {
1960 .num_chipselect = 2,
1961};
1962
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301963static struct omap_hwmod omap44xx_mcspi2_hwmod = {
1964 .name = "mcspi2",
1965 .class = &omap44xx_mcspi_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001966 .clkdm_name = "l4_per_clkdm",
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301967 .mpu_irqs = omap44xx_mcspi2_irqs,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301968 .sdma_reqs = omap44xx_mcspi2_sdma_reqs,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301969 .main_clk = "mcspi2_fck",
1970 .prcm = {
1971 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001972 .clkctrl_offs = OMAP4_CM_L4PER_MCSPI2_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001973 .context_offs = OMAP4_RM_L4PER_MCSPI2_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001974 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301975 },
1976 },
Benoit Cousson905a74d2011-02-18 14:01:06 +01001977 .dev_attr = &mcspi2_dev_attr,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301978};
1979
1980/* mcspi3 */
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301981static struct omap_hwmod_irq_info omap44xx_mcspi3_irqs[] = {
1982 { .irq = 91 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001983 { .irq = -1 }
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301984};
1985
1986static struct omap_hwmod_dma_info omap44xx_mcspi3_sdma_reqs[] = {
1987 { .name = "tx0", .dma_req = 14 + OMAP44XX_DMA_REQ_START },
1988 { .name = "rx0", .dma_req = 15 + OMAP44XX_DMA_REQ_START },
1989 { .name = "tx1", .dma_req = 22 + OMAP44XX_DMA_REQ_START },
1990 { .name = "rx1", .dma_req = 23 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06001991 { .dma_req = -1 }
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301992};
1993
Benoit Cousson905a74d2011-02-18 14:01:06 +01001994/* mcspi3 dev_attr */
1995static struct omap2_mcspi_dev_attr mcspi3_dev_attr = {
1996 .num_chipselect = 2,
1997};
1998
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301999static struct omap_hwmod omap44xx_mcspi3_hwmod = {
2000 .name = "mcspi3",
2001 .class = &omap44xx_mcspi_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002002 .clkdm_name = "l4_per_clkdm",
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302003 .mpu_irqs = omap44xx_mcspi3_irqs,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302004 .sdma_reqs = omap44xx_mcspi3_sdma_reqs,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302005 .main_clk = "mcspi3_fck",
2006 .prcm = {
2007 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002008 .clkctrl_offs = OMAP4_CM_L4PER_MCSPI3_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002009 .context_offs = OMAP4_RM_L4PER_MCSPI3_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002010 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302011 },
2012 },
Benoit Cousson905a74d2011-02-18 14:01:06 +01002013 .dev_attr = &mcspi3_dev_attr,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302014};
2015
2016/* mcspi4 */
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302017static struct omap_hwmod_irq_info omap44xx_mcspi4_irqs[] = {
2018 { .irq = 48 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002019 { .irq = -1 }
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302020};
2021
2022static struct omap_hwmod_dma_info omap44xx_mcspi4_sdma_reqs[] = {
2023 { .name = "tx0", .dma_req = 69 + OMAP44XX_DMA_REQ_START },
2024 { .name = "rx0", .dma_req = 70 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06002025 { .dma_req = -1 }
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302026};
2027
Benoit Cousson905a74d2011-02-18 14:01:06 +01002028/* mcspi4 dev_attr */
2029static struct omap2_mcspi_dev_attr mcspi4_dev_attr = {
2030 .num_chipselect = 1,
2031};
2032
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302033static struct omap_hwmod omap44xx_mcspi4_hwmod = {
2034 .name = "mcspi4",
2035 .class = &omap44xx_mcspi_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002036 .clkdm_name = "l4_per_clkdm",
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302037 .mpu_irqs = omap44xx_mcspi4_irqs,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302038 .sdma_reqs = omap44xx_mcspi4_sdma_reqs,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302039 .main_clk = "mcspi4_fck",
2040 .prcm = {
2041 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002042 .clkctrl_offs = OMAP4_CM_L4PER_MCSPI4_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002043 .context_offs = OMAP4_RM_L4PER_MCSPI4_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002044 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302045 },
2046 },
Benoit Cousson905a74d2011-02-18 14:01:06 +01002047 .dev_attr = &mcspi4_dev_attr,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302048};
2049
2050/*
Benoit Cousson407a6882011-02-15 22:39:48 +01002051 * 'mmc' class
2052 * multimedia card high-speed/sd/sdio (mmc/sd/sdio) host controller
2053 */
2054
2055static struct omap_hwmod_class_sysconfig omap44xx_mmc_sysc = {
2056 .rev_offs = 0x0000,
2057 .sysc_offs = 0x0010,
2058 .sysc_flags = (SYSC_HAS_EMUFREE | SYSC_HAS_MIDLEMODE |
2059 SYSC_HAS_RESET_STATUS | SYSC_HAS_SIDLEMODE |
2060 SYSC_HAS_SOFTRESET),
2061 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
2062 SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
Benoit Coussonc614ebf2011-07-01 22:54:01 +02002063 MSTANDBY_SMART | MSTANDBY_SMART_WKUP),
Benoit Cousson407a6882011-02-15 22:39:48 +01002064 .sysc_fields = &omap_hwmod_sysc_type2,
2065};
2066
2067static struct omap_hwmod_class omap44xx_mmc_hwmod_class = {
2068 .name = "mmc",
2069 .sysc = &omap44xx_mmc_sysc,
2070};
2071
2072/* mmc1 */
2073static struct omap_hwmod_irq_info omap44xx_mmc1_irqs[] = {
2074 { .irq = 83 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002075 { .irq = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01002076};
2077
2078static struct omap_hwmod_dma_info omap44xx_mmc1_sdma_reqs[] = {
2079 { .name = "tx", .dma_req = 60 + OMAP44XX_DMA_REQ_START },
2080 { .name = "rx", .dma_req = 61 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06002081 { .dma_req = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01002082};
2083
Kishore Kadiyala6ab89462011-03-01 13:12:56 -08002084/* mmc1 dev_attr */
2085static struct omap_mmc_dev_attr mmc1_dev_attr = {
2086 .flags = OMAP_HSMMC_SUPPORTS_DUAL_VOLT,
2087};
2088
Benoit Cousson407a6882011-02-15 22:39:48 +01002089static struct omap_hwmod omap44xx_mmc1_hwmod = {
2090 .name = "mmc1",
2091 .class = &omap44xx_mmc_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002092 .clkdm_name = "l3_init_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +01002093 .mpu_irqs = omap44xx_mmc1_irqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01002094 .sdma_reqs = omap44xx_mmc1_sdma_reqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01002095 .main_clk = "mmc1_fck",
Benoit Cousson00fe6102011-07-09 19:14:28 -06002096 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01002097 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002098 .clkctrl_offs = OMAP4_CM_L3INIT_MMC1_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002099 .context_offs = OMAP4_RM_L3INIT_MMC1_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002100 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01002101 },
2102 },
Kishore Kadiyala6ab89462011-03-01 13:12:56 -08002103 .dev_attr = &mmc1_dev_attr,
Benoit Cousson407a6882011-02-15 22:39:48 +01002104};
2105
2106/* mmc2 */
2107static struct omap_hwmod_irq_info omap44xx_mmc2_irqs[] = {
2108 { .irq = 86 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002109 { .irq = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01002110};
2111
2112static struct omap_hwmod_dma_info omap44xx_mmc2_sdma_reqs[] = {
2113 { .name = "tx", .dma_req = 46 + OMAP44XX_DMA_REQ_START },
2114 { .name = "rx", .dma_req = 47 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06002115 { .dma_req = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01002116};
2117
Benoit Cousson407a6882011-02-15 22:39:48 +01002118static struct omap_hwmod omap44xx_mmc2_hwmod = {
2119 .name = "mmc2",
2120 .class = &omap44xx_mmc_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002121 .clkdm_name = "l3_init_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +01002122 .mpu_irqs = omap44xx_mmc2_irqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01002123 .sdma_reqs = omap44xx_mmc2_sdma_reqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01002124 .main_clk = "mmc2_fck",
Benoit Cousson00fe6102011-07-09 19:14:28 -06002125 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01002126 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002127 .clkctrl_offs = OMAP4_CM_L3INIT_MMC2_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002128 .context_offs = OMAP4_RM_L3INIT_MMC2_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002129 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01002130 },
2131 },
Benoit Cousson407a6882011-02-15 22:39:48 +01002132};
2133
2134/* mmc3 */
Benoit Cousson407a6882011-02-15 22:39:48 +01002135static struct omap_hwmod_irq_info omap44xx_mmc3_irqs[] = {
2136 { .irq = 94 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002137 { .irq = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01002138};
2139
2140static struct omap_hwmod_dma_info omap44xx_mmc3_sdma_reqs[] = {
2141 { .name = "tx", .dma_req = 76 + OMAP44XX_DMA_REQ_START },
2142 { .name = "rx", .dma_req = 77 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06002143 { .dma_req = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01002144};
2145
Benoit Cousson407a6882011-02-15 22:39:48 +01002146static struct omap_hwmod omap44xx_mmc3_hwmod = {
2147 .name = "mmc3",
2148 .class = &omap44xx_mmc_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002149 .clkdm_name = "l4_per_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +01002150 .mpu_irqs = omap44xx_mmc3_irqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01002151 .sdma_reqs = omap44xx_mmc3_sdma_reqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01002152 .main_clk = "mmc3_fck",
Benoit Cousson00fe6102011-07-09 19:14:28 -06002153 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01002154 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002155 .clkctrl_offs = OMAP4_CM_L4PER_MMCSD3_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002156 .context_offs = OMAP4_RM_L4PER_MMCSD3_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002157 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01002158 },
2159 },
Benoit Cousson407a6882011-02-15 22:39:48 +01002160};
2161
2162/* mmc4 */
Benoit Cousson407a6882011-02-15 22:39:48 +01002163static struct omap_hwmod_irq_info omap44xx_mmc4_irqs[] = {
2164 { .irq = 96 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002165 { .irq = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01002166};
2167
2168static struct omap_hwmod_dma_info omap44xx_mmc4_sdma_reqs[] = {
2169 { .name = "tx", .dma_req = 56 + OMAP44XX_DMA_REQ_START },
2170 { .name = "rx", .dma_req = 57 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06002171 { .dma_req = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01002172};
2173
Benoit Cousson407a6882011-02-15 22:39:48 +01002174static struct omap_hwmod omap44xx_mmc4_hwmod = {
2175 .name = "mmc4",
2176 .class = &omap44xx_mmc_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002177 .clkdm_name = "l4_per_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +01002178 .mpu_irqs = omap44xx_mmc4_irqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01002179 .sdma_reqs = omap44xx_mmc4_sdma_reqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01002180 .main_clk = "mmc4_fck",
Benoit Cousson00fe6102011-07-09 19:14:28 -06002181 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01002182 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002183 .clkctrl_offs = OMAP4_CM_L4PER_MMCSD4_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002184 .context_offs = OMAP4_RM_L4PER_MMCSD4_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002185 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01002186 },
2187 },
Benoit Cousson407a6882011-02-15 22:39:48 +01002188};
2189
2190/* mmc5 */
Benoit Cousson407a6882011-02-15 22:39:48 +01002191static struct omap_hwmod_irq_info omap44xx_mmc5_irqs[] = {
2192 { .irq = 59 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002193 { .irq = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01002194};
2195
2196static struct omap_hwmod_dma_info omap44xx_mmc5_sdma_reqs[] = {
2197 { .name = "tx", .dma_req = 58 + OMAP44XX_DMA_REQ_START },
2198 { .name = "rx", .dma_req = 59 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06002199 { .dma_req = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01002200};
2201
Benoit Cousson407a6882011-02-15 22:39:48 +01002202static struct omap_hwmod omap44xx_mmc5_hwmod = {
2203 .name = "mmc5",
2204 .class = &omap44xx_mmc_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002205 .clkdm_name = "l4_per_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +01002206 .mpu_irqs = omap44xx_mmc5_irqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01002207 .sdma_reqs = omap44xx_mmc5_sdma_reqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01002208 .main_clk = "mmc5_fck",
Benoit Cousson00fe6102011-07-09 19:14:28 -06002209 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01002210 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002211 .clkctrl_offs = OMAP4_CM_L4PER_MMCSD5_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002212 .context_offs = OMAP4_RM_L4PER_MMCSD5_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002213 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01002214 },
2215 },
Benoit Cousson407a6882011-02-15 22:39:48 +01002216};
2217
2218/*
Benoit Cousson55d2cb02010-05-12 17:54:36 +02002219 * 'mpu' class
2220 * mpu sub-system
2221 */
2222
2223static struct omap_hwmod_class omap44xx_mpu_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +00002224 .name = "mpu",
Benoit Cousson55d2cb02010-05-12 17:54:36 +02002225};
2226
2227/* mpu */
2228static struct omap_hwmod_irq_info omap44xx_mpu_irqs[] = {
2229 { .name = "pl310", .irq = 0 + OMAP44XX_IRQ_GIC_START },
2230 { .name = "cti0", .irq = 1 + OMAP44XX_IRQ_GIC_START },
2231 { .name = "cti1", .irq = 2 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002232 { .irq = -1 }
Benoit Cousson55d2cb02010-05-12 17:54:36 +02002233};
2234
Benoit Cousson55d2cb02010-05-12 17:54:36 +02002235static struct omap_hwmod omap44xx_mpu_hwmod = {
2236 .name = "mpu",
2237 .class = &omap44xx_mpu_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002238 .clkdm_name = "mpuss_clkdm",
Benoit Cousson7ecc53732011-07-09 19:14:28 -06002239 .flags = HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET,
Benoit Cousson55d2cb02010-05-12 17:54:36 +02002240 .mpu_irqs = omap44xx_mpu_irqs,
Benoit Cousson55d2cb02010-05-12 17:54:36 +02002241 .main_clk = "dpll_mpu_m2_ck",
2242 .prcm = {
2243 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002244 .clkctrl_offs = OMAP4_CM_MPU_MPU_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002245 .context_offs = OMAP4_RM_MPU_MPU_CONTEXT_OFFSET,
Benoit Cousson55d2cb02010-05-12 17:54:36 +02002246 },
2247 },
Benoit Cousson55d2cb02010-05-12 17:54:36 +02002248};
2249
Benoit Cousson92b18d12010-09-23 20:02:41 +05302250/*
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002251 * 'smartreflex' class
2252 * smartreflex module (monitor silicon performance and outputs a measure of
2253 * performance error)
2254 */
2255
2256/* The IP is not compliant to type1 / type2 scheme */
2257static struct omap_hwmod_sysc_fields omap_hwmod_sysc_type_smartreflex = {
2258 .sidle_shift = 24,
2259 .enwkup_shift = 26,
2260};
2261
2262static struct omap_hwmod_class_sysconfig omap44xx_smartreflex_sysc = {
2263 .sysc_offs = 0x0038,
2264 .sysc_flags = (SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE),
2265 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
2266 SIDLE_SMART_WKUP),
2267 .sysc_fields = &omap_hwmod_sysc_type_smartreflex,
2268};
2269
2270static struct omap_hwmod_class omap44xx_smartreflex_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +00002271 .name = "smartreflex",
2272 .sysc = &omap44xx_smartreflex_sysc,
2273 .rev = 2,
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002274};
2275
2276/* smartreflex_core */
Shweta Gulaticea6b942012-02-29 23:33:37 +01002277static struct omap_smartreflex_dev_attr smartreflex_core_dev_attr = {
2278 .sensor_voltdm_name = "core",
2279};
2280
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002281static struct omap_hwmod_irq_info omap44xx_smartreflex_core_irqs[] = {
2282 { .irq = 19 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002283 { .irq = -1 }
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002284};
2285
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002286static struct omap_hwmod omap44xx_smartreflex_core_hwmod = {
2287 .name = "smartreflex_core",
2288 .class = &omap44xx_smartreflex_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002289 .clkdm_name = "l4_ao_clkdm",
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002290 .mpu_irqs = omap44xx_smartreflex_core_irqs,
Paul Walmsley212738a2011-07-09 19:14:06 -06002291
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002292 .main_clk = "smartreflex_core_fck",
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002293 .prcm = {
2294 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002295 .clkctrl_offs = OMAP4_CM_ALWON_SR_CORE_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002296 .context_offs = OMAP4_RM_ALWON_SR_CORE_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002297 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002298 },
2299 },
Shweta Gulaticea6b942012-02-29 23:33:37 +01002300 .dev_attr = &smartreflex_core_dev_attr,
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002301};
2302
2303/* smartreflex_iva */
Shweta Gulaticea6b942012-02-29 23:33:37 +01002304static struct omap_smartreflex_dev_attr smartreflex_iva_dev_attr = {
2305 .sensor_voltdm_name = "iva",
2306};
2307
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002308static struct omap_hwmod_irq_info omap44xx_smartreflex_iva_irqs[] = {
2309 { .irq = 102 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002310 { .irq = -1 }
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002311};
2312
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002313static struct omap_hwmod omap44xx_smartreflex_iva_hwmod = {
2314 .name = "smartreflex_iva",
2315 .class = &omap44xx_smartreflex_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002316 .clkdm_name = "l4_ao_clkdm",
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002317 .mpu_irqs = omap44xx_smartreflex_iva_irqs,
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002318 .main_clk = "smartreflex_iva_fck",
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002319 .prcm = {
2320 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002321 .clkctrl_offs = OMAP4_CM_ALWON_SR_IVA_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002322 .context_offs = OMAP4_RM_ALWON_SR_IVA_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002323 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002324 },
2325 },
Shweta Gulaticea6b942012-02-29 23:33:37 +01002326 .dev_attr = &smartreflex_iva_dev_attr,
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002327};
2328
2329/* smartreflex_mpu */
Shweta Gulaticea6b942012-02-29 23:33:37 +01002330static struct omap_smartreflex_dev_attr smartreflex_mpu_dev_attr = {
2331 .sensor_voltdm_name = "mpu",
2332};
2333
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002334static struct omap_hwmod_irq_info omap44xx_smartreflex_mpu_irqs[] = {
2335 { .irq = 18 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002336 { .irq = -1 }
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002337};
2338
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002339static struct omap_hwmod omap44xx_smartreflex_mpu_hwmod = {
2340 .name = "smartreflex_mpu",
2341 .class = &omap44xx_smartreflex_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002342 .clkdm_name = "l4_ao_clkdm",
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002343 .mpu_irqs = omap44xx_smartreflex_mpu_irqs,
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002344 .main_clk = "smartreflex_mpu_fck",
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002345 .prcm = {
2346 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002347 .clkctrl_offs = OMAP4_CM_ALWON_SR_MPU_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002348 .context_offs = OMAP4_RM_ALWON_SR_MPU_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002349 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002350 },
2351 },
Shweta Gulaticea6b942012-02-29 23:33:37 +01002352 .dev_attr = &smartreflex_mpu_dev_attr,
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002353};
2354
2355/*
Benoit Coussond11c2172011-02-02 12:04:36 +00002356 * 'spinlock' class
2357 * spinlock provides hardware assistance for synchronizing the processes
2358 * running on multiple processors
2359 */
2360
2361static struct omap_hwmod_class_sysconfig omap44xx_spinlock_sysc = {
2362 .rev_offs = 0x0000,
2363 .sysc_offs = 0x0010,
2364 .syss_offs = 0x0014,
2365 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
2366 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE |
2367 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
2368 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
2369 SIDLE_SMART_WKUP),
2370 .sysc_fields = &omap_hwmod_sysc_type1,
2371};
2372
2373static struct omap_hwmod_class omap44xx_spinlock_hwmod_class = {
2374 .name = "spinlock",
2375 .sysc = &omap44xx_spinlock_sysc,
2376};
2377
2378/* spinlock */
Benoit Coussond11c2172011-02-02 12:04:36 +00002379static struct omap_hwmod omap44xx_spinlock_hwmod = {
2380 .name = "spinlock",
2381 .class = &omap44xx_spinlock_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002382 .clkdm_name = "l4_cfg_clkdm",
Benoit Coussond11c2172011-02-02 12:04:36 +00002383 .prcm = {
2384 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002385 .clkctrl_offs = OMAP4_CM_L4CFG_HW_SEM_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002386 .context_offs = OMAP4_RM_L4CFG_HW_SEM_CONTEXT_OFFSET,
Benoit Coussond11c2172011-02-02 12:04:36 +00002387 },
2388 },
Benoit Coussond11c2172011-02-02 12:04:36 +00002389};
2390
2391/*
Benoit Cousson35d1a662011-02-11 11:17:14 +00002392 * 'timer' class
2393 * general purpose timer module with accurate 1ms tick
2394 * This class contains several variants: ['timer_1ms', 'timer']
2395 */
2396
2397static struct omap_hwmod_class_sysconfig omap44xx_timer_1ms_sysc = {
2398 .rev_offs = 0x0000,
2399 .sysc_offs = 0x0010,
2400 .syss_offs = 0x0014,
2401 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
2402 SYSC_HAS_EMUFREE | SYSC_HAS_ENAWAKEUP |
2403 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
2404 SYSS_HAS_RESET_STATUS),
2405 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
2406 .sysc_fields = &omap_hwmod_sysc_type1,
2407};
2408
2409static struct omap_hwmod_class omap44xx_timer_1ms_hwmod_class = {
2410 .name = "timer",
2411 .sysc = &omap44xx_timer_1ms_sysc,
2412};
2413
2414static struct omap_hwmod_class_sysconfig omap44xx_timer_sysc = {
2415 .rev_offs = 0x0000,
2416 .sysc_offs = 0x0010,
2417 .sysc_flags = (SYSC_HAS_EMUFREE | SYSC_HAS_RESET_STATUS |
2418 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
2419 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
2420 SIDLE_SMART_WKUP),
2421 .sysc_fields = &omap_hwmod_sysc_type2,
2422};
2423
2424static struct omap_hwmod_class omap44xx_timer_hwmod_class = {
2425 .name = "timer",
2426 .sysc = &omap44xx_timer_sysc,
2427};
2428
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +05302429/* always-on timers dev attribute */
2430static struct omap_timer_capability_dev_attr capability_alwon_dev_attr = {
2431 .timer_capability = OMAP_TIMER_ALWON,
2432};
2433
2434/* pwm timers dev attribute */
2435static struct omap_timer_capability_dev_attr capability_pwm_dev_attr = {
2436 .timer_capability = OMAP_TIMER_HAS_PWM,
2437};
2438
Benoit Cousson35d1a662011-02-11 11:17:14 +00002439/* timer1 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00002440static struct omap_hwmod_irq_info omap44xx_timer1_irqs[] = {
2441 { .irq = 37 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002442 { .irq = -1 }
Benoit Cousson35d1a662011-02-11 11:17:14 +00002443};
2444
Benoit Cousson35d1a662011-02-11 11:17:14 +00002445static struct omap_hwmod omap44xx_timer1_hwmod = {
2446 .name = "timer1",
2447 .class = &omap44xx_timer_1ms_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002448 .clkdm_name = "l4_wkup_clkdm",
Benoit Cousson35d1a662011-02-11 11:17:14 +00002449 .mpu_irqs = omap44xx_timer1_irqs,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002450 .main_clk = "timer1_fck",
2451 .prcm = {
2452 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002453 .clkctrl_offs = OMAP4_CM_WKUP_TIMER1_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002454 .context_offs = OMAP4_RM_WKUP_TIMER1_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002455 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002456 },
2457 },
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +05302458 .dev_attr = &capability_alwon_dev_attr,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002459};
2460
2461/* timer2 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00002462static struct omap_hwmod_irq_info omap44xx_timer2_irqs[] = {
2463 { .irq = 38 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002464 { .irq = -1 }
Benoit Cousson35d1a662011-02-11 11:17:14 +00002465};
2466
Benoit Cousson35d1a662011-02-11 11:17:14 +00002467static struct omap_hwmod omap44xx_timer2_hwmod = {
2468 .name = "timer2",
2469 .class = &omap44xx_timer_1ms_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002470 .clkdm_name = "l4_per_clkdm",
Benoit Cousson35d1a662011-02-11 11:17:14 +00002471 .mpu_irqs = omap44xx_timer2_irqs,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002472 .main_clk = "timer2_fck",
2473 .prcm = {
2474 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002475 .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER2_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002476 .context_offs = OMAP4_RM_L4PER_DMTIMER2_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002477 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002478 },
2479 },
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +05302480 .dev_attr = &capability_alwon_dev_attr,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002481};
2482
2483/* timer3 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00002484static struct omap_hwmod_irq_info omap44xx_timer3_irqs[] = {
2485 { .irq = 39 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002486 { .irq = -1 }
Benoit Cousson35d1a662011-02-11 11:17:14 +00002487};
2488
Benoit Cousson35d1a662011-02-11 11:17:14 +00002489static struct omap_hwmod omap44xx_timer3_hwmod = {
2490 .name = "timer3",
2491 .class = &omap44xx_timer_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002492 .clkdm_name = "l4_per_clkdm",
Benoit Cousson35d1a662011-02-11 11:17:14 +00002493 .mpu_irqs = omap44xx_timer3_irqs,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002494 .main_clk = "timer3_fck",
2495 .prcm = {
2496 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002497 .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER3_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002498 .context_offs = OMAP4_RM_L4PER_DMTIMER3_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002499 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002500 },
2501 },
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +05302502 .dev_attr = &capability_alwon_dev_attr,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002503};
2504
2505/* timer4 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00002506static struct omap_hwmod_irq_info omap44xx_timer4_irqs[] = {
2507 { .irq = 40 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002508 { .irq = -1 }
Benoit Cousson35d1a662011-02-11 11:17:14 +00002509};
2510
Benoit Cousson35d1a662011-02-11 11:17:14 +00002511static struct omap_hwmod omap44xx_timer4_hwmod = {
2512 .name = "timer4",
2513 .class = &omap44xx_timer_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002514 .clkdm_name = "l4_per_clkdm",
Benoit Cousson35d1a662011-02-11 11:17:14 +00002515 .mpu_irqs = omap44xx_timer4_irqs,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002516 .main_clk = "timer4_fck",
2517 .prcm = {
2518 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002519 .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER4_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002520 .context_offs = OMAP4_RM_L4PER_DMTIMER4_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002521 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002522 },
2523 },
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +05302524 .dev_attr = &capability_alwon_dev_attr,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002525};
2526
2527/* timer5 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00002528static struct omap_hwmod_irq_info omap44xx_timer5_irqs[] = {
2529 { .irq = 41 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002530 { .irq = -1 }
Benoit Cousson35d1a662011-02-11 11:17:14 +00002531};
2532
Benoit Cousson35d1a662011-02-11 11:17:14 +00002533static struct omap_hwmod omap44xx_timer5_hwmod = {
2534 .name = "timer5",
2535 .class = &omap44xx_timer_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002536 .clkdm_name = "abe_clkdm",
Benoit Cousson35d1a662011-02-11 11:17:14 +00002537 .mpu_irqs = omap44xx_timer5_irqs,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002538 .main_clk = "timer5_fck",
2539 .prcm = {
2540 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002541 .clkctrl_offs = OMAP4_CM1_ABE_TIMER5_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002542 .context_offs = OMAP4_RM_ABE_TIMER5_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002543 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002544 },
2545 },
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +05302546 .dev_attr = &capability_alwon_dev_attr,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002547};
2548
2549/* timer6 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00002550static struct omap_hwmod_irq_info omap44xx_timer6_irqs[] = {
2551 { .irq = 42 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002552 { .irq = -1 }
Benoit Cousson35d1a662011-02-11 11:17:14 +00002553};
2554
Benoit Cousson35d1a662011-02-11 11:17:14 +00002555static struct omap_hwmod omap44xx_timer6_hwmod = {
2556 .name = "timer6",
2557 .class = &omap44xx_timer_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002558 .clkdm_name = "abe_clkdm",
Benoit Cousson35d1a662011-02-11 11:17:14 +00002559 .mpu_irqs = omap44xx_timer6_irqs,
Paul Walmsley212738a2011-07-09 19:14:06 -06002560
Benoit Cousson35d1a662011-02-11 11:17:14 +00002561 .main_clk = "timer6_fck",
2562 .prcm = {
2563 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002564 .clkctrl_offs = OMAP4_CM1_ABE_TIMER6_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002565 .context_offs = OMAP4_RM_ABE_TIMER6_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002566 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002567 },
2568 },
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +05302569 .dev_attr = &capability_alwon_dev_attr,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002570};
2571
2572/* timer7 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00002573static struct omap_hwmod_irq_info omap44xx_timer7_irqs[] = {
2574 { .irq = 43 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002575 { .irq = -1 }
Benoit Cousson35d1a662011-02-11 11:17:14 +00002576};
2577
Benoit Cousson35d1a662011-02-11 11:17:14 +00002578static struct omap_hwmod omap44xx_timer7_hwmod = {
2579 .name = "timer7",
2580 .class = &omap44xx_timer_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002581 .clkdm_name = "abe_clkdm",
Benoit Cousson35d1a662011-02-11 11:17:14 +00002582 .mpu_irqs = omap44xx_timer7_irqs,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002583 .main_clk = "timer7_fck",
2584 .prcm = {
2585 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002586 .clkctrl_offs = OMAP4_CM1_ABE_TIMER7_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002587 .context_offs = OMAP4_RM_ABE_TIMER7_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002588 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002589 },
2590 },
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +05302591 .dev_attr = &capability_alwon_dev_attr,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002592};
2593
2594/* timer8 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00002595static struct omap_hwmod_irq_info omap44xx_timer8_irqs[] = {
2596 { .irq = 44 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002597 { .irq = -1 }
Benoit Cousson35d1a662011-02-11 11:17:14 +00002598};
2599
Benoit Cousson35d1a662011-02-11 11:17:14 +00002600static struct omap_hwmod omap44xx_timer8_hwmod = {
2601 .name = "timer8",
2602 .class = &omap44xx_timer_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002603 .clkdm_name = "abe_clkdm",
Benoit Cousson35d1a662011-02-11 11:17:14 +00002604 .mpu_irqs = omap44xx_timer8_irqs,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002605 .main_clk = "timer8_fck",
2606 .prcm = {
2607 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002608 .clkctrl_offs = OMAP4_CM1_ABE_TIMER8_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002609 .context_offs = OMAP4_RM_ABE_TIMER8_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002610 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002611 },
2612 },
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +05302613 .dev_attr = &capability_pwm_dev_attr,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002614};
2615
2616/* timer9 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00002617static struct omap_hwmod_irq_info omap44xx_timer9_irqs[] = {
2618 { .irq = 45 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002619 { .irq = -1 }
Benoit Cousson35d1a662011-02-11 11:17:14 +00002620};
2621
Benoit Cousson35d1a662011-02-11 11:17:14 +00002622static struct omap_hwmod omap44xx_timer9_hwmod = {
2623 .name = "timer9",
2624 .class = &omap44xx_timer_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002625 .clkdm_name = "l4_per_clkdm",
Benoit Cousson35d1a662011-02-11 11:17:14 +00002626 .mpu_irqs = omap44xx_timer9_irqs,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002627 .main_clk = "timer9_fck",
2628 .prcm = {
2629 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002630 .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER9_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002631 .context_offs = OMAP4_RM_L4PER_DMTIMER9_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002632 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002633 },
2634 },
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +05302635 .dev_attr = &capability_pwm_dev_attr,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002636};
2637
2638/* timer10 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00002639static struct omap_hwmod_irq_info omap44xx_timer10_irqs[] = {
2640 { .irq = 46 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002641 { .irq = -1 }
Benoit Cousson35d1a662011-02-11 11:17:14 +00002642};
2643
Benoit Cousson35d1a662011-02-11 11:17:14 +00002644static struct omap_hwmod omap44xx_timer10_hwmod = {
2645 .name = "timer10",
2646 .class = &omap44xx_timer_1ms_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002647 .clkdm_name = "l4_per_clkdm",
Benoit Cousson35d1a662011-02-11 11:17:14 +00002648 .mpu_irqs = omap44xx_timer10_irqs,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002649 .main_clk = "timer10_fck",
2650 .prcm = {
2651 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002652 .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER10_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002653 .context_offs = OMAP4_RM_L4PER_DMTIMER10_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002654 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002655 },
2656 },
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +05302657 .dev_attr = &capability_pwm_dev_attr,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002658};
2659
2660/* timer11 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00002661static struct omap_hwmod_irq_info omap44xx_timer11_irqs[] = {
2662 { .irq = 47 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002663 { .irq = -1 }
Benoit Cousson35d1a662011-02-11 11:17:14 +00002664};
2665
Benoit Cousson35d1a662011-02-11 11:17:14 +00002666static struct omap_hwmod omap44xx_timer11_hwmod = {
2667 .name = "timer11",
2668 .class = &omap44xx_timer_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002669 .clkdm_name = "l4_per_clkdm",
Benoit Cousson35d1a662011-02-11 11:17:14 +00002670 .mpu_irqs = omap44xx_timer11_irqs,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002671 .main_clk = "timer11_fck",
2672 .prcm = {
2673 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002674 .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER11_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002675 .context_offs = OMAP4_RM_L4PER_DMTIMER11_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002676 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002677 },
2678 },
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +05302679 .dev_attr = &capability_pwm_dev_attr,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002680};
2681
2682/*
Benoit Coussondb12ba52010-09-27 20:19:19 +05302683 * 'uart' class
2684 * universal asynchronous receiver/transmitter (uart)
2685 */
2686
2687static struct omap_hwmod_class_sysconfig omap44xx_uart_sysc = {
2688 .rev_offs = 0x0050,
2689 .sysc_offs = 0x0054,
2690 .syss_offs = 0x0058,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07002691 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_ENAWAKEUP |
Benoit Cousson0cfe8752010-12-21 21:08:33 -07002692 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
2693 SYSS_HAS_RESET_STATUS),
Benoit Cousson7cffa6b2010-12-21 21:31:28 -07002694 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
2695 SIDLE_SMART_WKUP),
Benoit Coussondb12ba52010-09-27 20:19:19 +05302696 .sysc_fields = &omap_hwmod_sysc_type1,
2697};
2698
2699static struct omap_hwmod_class omap44xx_uart_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +00002700 .name = "uart",
2701 .sysc = &omap44xx_uart_sysc,
Benoit Coussondb12ba52010-09-27 20:19:19 +05302702};
2703
2704/* uart1 */
Benoit Coussondb12ba52010-09-27 20:19:19 +05302705static struct omap_hwmod_irq_info omap44xx_uart1_irqs[] = {
2706 { .irq = 72 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002707 { .irq = -1 }
Benoit Coussondb12ba52010-09-27 20:19:19 +05302708};
2709
2710static struct omap_hwmod_dma_info omap44xx_uart1_sdma_reqs[] = {
2711 { .name = "tx", .dma_req = 48 + OMAP44XX_DMA_REQ_START },
2712 { .name = "rx", .dma_req = 49 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06002713 { .dma_req = -1 }
Benoit Coussondb12ba52010-09-27 20:19:19 +05302714};
2715
Benoit Coussondb12ba52010-09-27 20:19:19 +05302716static struct omap_hwmod omap44xx_uart1_hwmod = {
2717 .name = "uart1",
2718 .class = &omap44xx_uart_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002719 .clkdm_name = "l4_per_clkdm",
Benoit Coussondb12ba52010-09-27 20:19:19 +05302720 .mpu_irqs = omap44xx_uart1_irqs,
Benoit Coussondb12ba52010-09-27 20:19:19 +05302721 .sdma_reqs = omap44xx_uart1_sdma_reqs,
Benoit Coussondb12ba52010-09-27 20:19:19 +05302722 .main_clk = "uart1_fck",
2723 .prcm = {
2724 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002725 .clkctrl_offs = OMAP4_CM_L4PER_UART1_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002726 .context_offs = OMAP4_RM_L4PER_UART1_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002727 .modulemode = MODULEMODE_SWCTRL,
Benoit Coussondb12ba52010-09-27 20:19:19 +05302728 },
2729 },
Benoit Coussondb12ba52010-09-27 20:19:19 +05302730};
2731
2732/* uart2 */
Benoit Coussondb12ba52010-09-27 20:19:19 +05302733static struct omap_hwmod_irq_info omap44xx_uart2_irqs[] = {
2734 { .irq = 73 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002735 { .irq = -1 }
Benoit Coussondb12ba52010-09-27 20:19:19 +05302736};
2737
2738static struct omap_hwmod_dma_info omap44xx_uart2_sdma_reqs[] = {
2739 { .name = "tx", .dma_req = 50 + OMAP44XX_DMA_REQ_START },
2740 { .name = "rx", .dma_req = 51 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06002741 { .dma_req = -1 }
Benoit Coussondb12ba52010-09-27 20:19:19 +05302742};
2743
Benoit Coussondb12ba52010-09-27 20:19:19 +05302744static struct omap_hwmod omap44xx_uart2_hwmod = {
2745 .name = "uart2",
2746 .class = &omap44xx_uart_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002747 .clkdm_name = "l4_per_clkdm",
Benoit Coussondb12ba52010-09-27 20:19:19 +05302748 .mpu_irqs = omap44xx_uart2_irqs,
Benoit Coussondb12ba52010-09-27 20:19:19 +05302749 .sdma_reqs = omap44xx_uart2_sdma_reqs,
Benoit Coussondb12ba52010-09-27 20:19:19 +05302750 .main_clk = "uart2_fck",
2751 .prcm = {
2752 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002753 .clkctrl_offs = OMAP4_CM_L4PER_UART2_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002754 .context_offs = OMAP4_RM_L4PER_UART2_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002755 .modulemode = MODULEMODE_SWCTRL,
Benoit Coussondb12ba52010-09-27 20:19:19 +05302756 },
2757 },
Benoit Coussondb12ba52010-09-27 20:19:19 +05302758};
2759
2760/* uart3 */
Benoit Coussondb12ba52010-09-27 20:19:19 +05302761static struct omap_hwmod_irq_info omap44xx_uart3_irqs[] = {
2762 { .irq = 74 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002763 { .irq = -1 }
Benoit Coussondb12ba52010-09-27 20:19:19 +05302764};
2765
2766static struct omap_hwmod_dma_info omap44xx_uart3_sdma_reqs[] = {
2767 { .name = "tx", .dma_req = 52 + OMAP44XX_DMA_REQ_START },
2768 { .name = "rx", .dma_req = 53 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06002769 { .dma_req = -1 }
Benoit Coussondb12ba52010-09-27 20:19:19 +05302770};
2771
Benoit Coussondb12ba52010-09-27 20:19:19 +05302772static struct omap_hwmod omap44xx_uart3_hwmod = {
2773 .name = "uart3",
2774 .class = &omap44xx_uart_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002775 .clkdm_name = "l4_per_clkdm",
Benoit Cousson7ecc53732011-07-09 19:14:28 -06002776 .flags = HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET,
Benoit Coussondb12ba52010-09-27 20:19:19 +05302777 .mpu_irqs = omap44xx_uart3_irqs,
Benoit Coussondb12ba52010-09-27 20:19:19 +05302778 .sdma_reqs = omap44xx_uart3_sdma_reqs,
Benoit Coussondb12ba52010-09-27 20:19:19 +05302779 .main_clk = "uart3_fck",
2780 .prcm = {
2781 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002782 .clkctrl_offs = OMAP4_CM_L4PER_UART3_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002783 .context_offs = OMAP4_RM_L4PER_UART3_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002784 .modulemode = MODULEMODE_SWCTRL,
Benoit Coussondb12ba52010-09-27 20:19:19 +05302785 },
2786 },
Benoit Coussondb12ba52010-09-27 20:19:19 +05302787};
2788
2789/* uart4 */
Benoit Coussondb12ba52010-09-27 20:19:19 +05302790static struct omap_hwmod_irq_info omap44xx_uart4_irqs[] = {
2791 { .irq = 70 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002792 { .irq = -1 }
Benoit Coussondb12ba52010-09-27 20:19:19 +05302793};
2794
2795static struct omap_hwmod_dma_info omap44xx_uart4_sdma_reqs[] = {
2796 { .name = "tx", .dma_req = 54 + OMAP44XX_DMA_REQ_START },
2797 { .name = "rx", .dma_req = 55 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06002798 { .dma_req = -1 }
Benoit Coussondb12ba52010-09-27 20:19:19 +05302799};
2800
Benoit Coussondb12ba52010-09-27 20:19:19 +05302801static struct omap_hwmod omap44xx_uart4_hwmod = {
2802 .name = "uart4",
2803 .class = &omap44xx_uart_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002804 .clkdm_name = "l4_per_clkdm",
Benoit Coussondb12ba52010-09-27 20:19:19 +05302805 .mpu_irqs = omap44xx_uart4_irqs,
Benoit Coussondb12ba52010-09-27 20:19:19 +05302806 .sdma_reqs = omap44xx_uart4_sdma_reqs,
Benoit Coussondb12ba52010-09-27 20:19:19 +05302807 .main_clk = "uart4_fck",
2808 .prcm = {
2809 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002810 .clkctrl_offs = OMAP4_CM_L4PER_UART4_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002811 .context_offs = OMAP4_RM_L4PER_UART4_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002812 .modulemode = MODULEMODE_SWCTRL,
Benoit Coussondb12ba52010-09-27 20:19:19 +05302813 },
2814 },
Benoit Coussondb12ba52010-09-27 20:19:19 +05302815};
2816
Benoit Cousson9780a9c2010-12-07 16:26:57 -08002817/*
Benoit Coussonaf88fa92011-12-15 23:15:18 -07002818 * 'usb_host_hs' class
2819 * high-speed multi-port usb host controller
2820 */
Benoit Coussonaf88fa92011-12-15 23:15:18 -07002821
2822static struct omap_hwmod_class_sysconfig omap44xx_usb_host_hs_sysc = {
2823 .rev_offs = 0x0000,
2824 .sysc_offs = 0x0010,
2825 .syss_offs = 0x0014,
2826 .sysc_flags = (SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE |
2827 SYSC_HAS_SOFTRESET),
2828 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
2829 SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
2830 MSTANDBY_SMART | MSTANDBY_SMART_WKUP),
2831 .sysc_fields = &omap_hwmod_sysc_type2,
2832};
2833
2834static struct omap_hwmod_class omap44xx_usb_host_hs_hwmod_class = {
Paul Walmsley844a3b62012-04-19 04:04:33 -06002835 .name = "usb_host_hs",
2836 .sysc = &omap44xx_usb_host_hs_sysc,
Benoit Coussonaf88fa92011-12-15 23:15:18 -07002837};
2838
Paul Walmsley844a3b62012-04-19 04:04:33 -06002839/* usb_host_hs */
Benoit Coussonaf88fa92011-12-15 23:15:18 -07002840static struct omap_hwmod_irq_info omap44xx_usb_host_hs_irqs[] = {
2841 { .name = "ohci-irq", .irq = 76 + OMAP44XX_IRQ_GIC_START },
2842 { .name = "ehci-irq", .irq = 77 + OMAP44XX_IRQ_GIC_START },
2843 { .irq = -1 }
2844};
2845
Benoit Coussonaf88fa92011-12-15 23:15:18 -07002846static struct omap_hwmod omap44xx_usb_host_hs_hwmod = {
2847 .name = "usb_host_hs",
2848 .class = &omap44xx_usb_host_hs_hwmod_class,
2849 .clkdm_name = "l3_init_clkdm",
2850 .main_clk = "usb_host_hs_fck",
2851 .prcm = {
2852 .omap4 = {
2853 .clkctrl_offs = OMAP4_CM_L3INIT_USB_HOST_CLKCTRL_OFFSET,
2854 .context_offs = OMAP4_RM_L3INIT_USB_HOST_CONTEXT_OFFSET,
2855 .modulemode = MODULEMODE_SWCTRL,
2856 },
2857 },
2858 .mpu_irqs = omap44xx_usb_host_hs_irqs,
Benoit Coussonaf88fa92011-12-15 23:15:18 -07002859
2860 /*
2861 * Errata: USBHOST Configured In Smart-Idle Can Lead To a Deadlock
2862 * id: i660
2863 *
2864 * Description:
2865 * In the following configuration :
2866 * - USBHOST module is set to smart-idle mode
2867 * - PRCM asserts idle_req to the USBHOST module ( This typically
2868 * happens when the system is going to a low power mode : all ports
2869 * have been suspended, the master part of the USBHOST module has
2870 * entered the standby state, and SW has cut the functional clocks)
2871 * - an USBHOST interrupt occurs before the module is able to answer
2872 * idle_ack, typically a remote wakeup IRQ.
2873 * Then the USB HOST module will enter a deadlock situation where it
2874 * is no more accessible nor functional.
2875 *
2876 * Workaround:
2877 * Don't use smart idle; use only force idle, hence HWMOD_SWSUP_SIDLE
2878 */
2879
2880 /*
2881 * Errata: USB host EHCI may stall when entering smart-standby mode
2882 * Id: i571
2883 *
2884 * Description:
2885 * When the USBHOST module is set to smart-standby mode, and when it is
2886 * ready to enter the standby state (i.e. all ports are suspended and
2887 * all attached devices are in suspend mode), then it can wrongly assert
2888 * the Mstandby signal too early while there are still some residual OCP
2889 * transactions ongoing. If this condition occurs, the internal state
2890 * machine may go to an undefined state and the USB link may be stuck
2891 * upon the next resume.
2892 *
2893 * Workaround:
2894 * Don't use smart standby; use only force standby,
2895 * hence HWMOD_SWSUP_MSTANDBY
2896 */
2897
2898 /*
2899 * During system boot; If the hwmod framework resets the module
2900 * the module will have smart idle settings; which can lead to deadlock
2901 * (above Errata Id:i660); so, dont reset the module during boot;
2902 * Use HWMOD_INIT_NO_RESET.
2903 */
2904
2905 .flags = HWMOD_SWSUP_SIDLE | HWMOD_SWSUP_MSTANDBY |
2906 HWMOD_INIT_NO_RESET,
2907};
2908
2909/*
Paul Walmsley844a3b62012-04-19 04:04:33 -06002910 * 'usb_otg_hs' class
2911 * high-speed on-the-go universal serial bus (usb_otg_hs) controller
2912 */
2913
2914static struct omap_hwmod_class_sysconfig omap44xx_usb_otg_hs_sysc = {
2915 .rev_offs = 0x0400,
2916 .sysc_offs = 0x0404,
2917 .syss_offs = 0x0408,
2918 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_ENAWAKEUP |
2919 SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE |
2920 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
2921 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
2922 SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
2923 MSTANDBY_SMART),
2924 .sysc_fields = &omap_hwmod_sysc_type1,
2925};
2926
2927static struct omap_hwmod_class omap44xx_usb_otg_hs_hwmod_class = {
2928 .name = "usb_otg_hs",
2929 .sysc = &omap44xx_usb_otg_hs_sysc,
2930};
2931
2932/* usb_otg_hs */
2933static struct omap_hwmod_irq_info omap44xx_usb_otg_hs_irqs[] = {
2934 { .name = "mc", .irq = 92 + OMAP44XX_IRQ_GIC_START },
2935 { .name = "dma", .irq = 93 + OMAP44XX_IRQ_GIC_START },
2936 { .irq = -1 }
2937};
2938
2939static struct omap_hwmod_opt_clk usb_otg_hs_opt_clks[] = {
2940 { .role = "xclk", .clk = "usb_otg_hs_xclk" },
2941};
2942
2943static struct omap_hwmod omap44xx_usb_otg_hs_hwmod = {
2944 .name = "usb_otg_hs",
2945 .class = &omap44xx_usb_otg_hs_hwmod_class,
2946 .clkdm_name = "l3_init_clkdm",
2947 .flags = HWMOD_SWSUP_SIDLE | HWMOD_SWSUP_MSTANDBY,
2948 .mpu_irqs = omap44xx_usb_otg_hs_irqs,
2949 .main_clk = "usb_otg_hs_ick",
2950 .prcm = {
2951 .omap4 = {
2952 .clkctrl_offs = OMAP4_CM_L3INIT_USB_OTG_CLKCTRL_OFFSET,
2953 .context_offs = OMAP4_RM_L3INIT_USB_OTG_CONTEXT_OFFSET,
2954 .modulemode = MODULEMODE_HWCTRL,
2955 },
2956 },
2957 .opt_clks = usb_otg_hs_opt_clks,
2958 .opt_clks_cnt = ARRAY_SIZE(usb_otg_hs_opt_clks),
2959};
2960
2961/*
Benoit Coussonaf88fa92011-12-15 23:15:18 -07002962 * 'usb_tll_hs' class
2963 * usb_tll_hs module is the adapter on the usb_host_hs ports
2964 */
Paul Walmsley844a3b62012-04-19 04:04:33 -06002965
Benoit Coussonaf88fa92011-12-15 23:15:18 -07002966static struct omap_hwmod_class_sysconfig omap44xx_usb_tll_hs_sysc = {
2967 .rev_offs = 0x0000,
2968 .sysc_offs = 0x0010,
2969 .syss_offs = 0x0014,
2970 .sysc_flags = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
2971 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
2972 SYSC_HAS_AUTOIDLE),
2973 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
2974 .sysc_fields = &omap_hwmod_sysc_type1,
2975};
2976
2977static struct omap_hwmod_class omap44xx_usb_tll_hs_hwmod_class = {
Paul Walmsley844a3b62012-04-19 04:04:33 -06002978 .name = "usb_tll_hs",
2979 .sysc = &omap44xx_usb_tll_hs_sysc,
Benoit Coussonaf88fa92011-12-15 23:15:18 -07002980};
2981
2982static struct omap_hwmod_irq_info omap44xx_usb_tll_hs_irqs[] = {
2983 { .name = "tll-irq", .irq = 78 + OMAP44XX_IRQ_GIC_START },
2984 { .irq = -1 }
2985};
2986
Paul Walmsley844a3b62012-04-19 04:04:33 -06002987static struct omap_hwmod omap44xx_usb_tll_hs_hwmod = {
2988 .name = "usb_tll_hs",
2989 .class = &omap44xx_usb_tll_hs_hwmod_class,
2990 .clkdm_name = "l3_init_clkdm",
2991 .mpu_irqs = omap44xx_usb_tll_hs_irqs,
2992 .main_clk = "usb_tll_hs_ick",
2993 .prcm = {
2994 .omap4 = {
2995 .clkctrl_offs = OMAP4_CM_L3INIT_USB_TLL_CLKCTRL_OFFSET,
2996 .context_offs = OMAP4_RM_L3INIT_USB_TLL_CONTEXT_OFFSET,
2997 .modulemode = MODULEMODE_HWCTRL,
2998 },
2999 },
3000};
3001
3002/*
3003 * 'wd_timer' class
3004 * 32-bit watchdog upward counter that generates a pulse on the reset pin on
3005 * overflow condition
3006 */
3007
3008static struct omap_hwmod_class_sysconfig omap44xx_wd_timer_sysc = {
3009 .rev_offs = 0x0000,
3010 .sysc_offs = 0x0010,
3011 .syss_offs = 0x0014,
3012 .sysc_flags = (SYSC_HAS_EMUFREE | SYSC_HAS_SIDLEMODE |
3013 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
3014 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
3015 SIDLE_SMART_WKUP),
3016 .sysc_fields = &omap_hwmod_sysc_type1,
3017};
3018
3019static struct omap_hwmod_class omap44xx_wd_timer_hwmod_class = {
3020 .name = "wd_timer",
3021 .sysc = &omap44xx_wd_timer_sysc,
3022 .pre_shutdown = &omap2_wd_timer_disable,
3023};
3024
3025/* wd_timer2 */
3026static struct omap_hwmod_irq_info omap44xx_wd_timer2_irqs[] = {
3027 { .irq = 80 + OMAP44XX_IRQ_GIC_START },
3028 { .irq = -1 }
3029};
3030
3031static struct omap_hwmod omap44xx_wd_timer2_hwmod = {
3032 .name = "wd_timer2",
3033 .class = &omap44xx_wd_timer_hwmod_class,
3034 .clkdm_name = "l4_wkup_clkdm",
3035 .mpu_irqs = omap44xx_wd_timer2_irqs,
3036 .main_clk = "wd_timer2_fck",
3037 .prcm = {
3038 .omap4 = {
3039 .clkctrl_offs = OMAP4_CM_WKUP_WDT2_CLKCTRL_OFFSET,
3040 .context_offs = OMAP4_RM_WKUP_WDT2_CONTEXT_OFFSET,
3041 .modulemode = MODULEMODE_SWCTRL,
3042 },
3043 },
3044};
3045
3046/* wd_timer3 */
3047static struct omap_hwmod_irq_info omap44xx_wd_timer3_irqs[] = {
3048 { .irq = 36 + OMAP44XX_IRQ_GIC_START },
3049 { .irq = -1 }
3050};
3051
3052static struct omap_hwmod omap44xx_wd_timer3_hwmod = {
3053 .name = "wd_timer3",
3054 .class = &omap44xx_wd_timer_hwmod_class,
3055 .clkdm_name = "abe_clkdm",
3056 .mpu_irqs = omap44xx_wd_timer3_irqs,
3057 .main_clk = "wd_timer3_fck",
3058 .prcm = {
3059 .omap4 = {
3060 .clkctrl_offs = OMAP4_CM1_ABE_WDT3_CLKCTRL_OFFSET,
3061 .context_offs = OMAP4_RM_ABE_WDT3_CONTEXT_OFFSET,
3062 .modulemode = MODULEMODE_SWCTRL,
3063 },
3064 },
3065};
3066
3067
3068/*
3069 * interfaces
3070 */
3071
3072/* l3_main_1 -> dmm */
3073static struct omap_hwmod_ocp_if omap44xx_l3_main_1__dmm = {
3074 .master = &omap44xx_l3_main_1_hwmod,
3075 .slave = &omap44xx_dmm_hwmod,
3076 .clk = "l3_div_ck",
3077 .user = OCP_USER_SDMA,
3078};
3079
3080static struct omap_hwmod_addr_space omap44xx_dmm_addrs[] = {
3081 {
3082 .pa_start = 0x4e000000,
3083 .pa_end = 0x4e0007ff,
3084 .flags = ADDR_TYPE_RT
3085 },
3086 { }
3087};
3088
3089/* mpu -> dmm */
3090static struct omap_hwmod_ocp_if omap44xx_mpu__dmm = {
3091 .master = &omap44xx_mpu_hwmod,
3092 .slave = &omap44xx_dmm_hwmod,
3093 .clk = "l3_div_ck",
3094 .addr = omap44xx_dmm_addrs,
3095 .user = OCP_USER_MPU,
3096};
3097
3098/* dmm -> emif_fw */
3099static struct omap_hwmod_ocp_if omap44xx_dmm__emif_fw = {
3100 .master = &omap44xx_dmm_hwmod,
3101 .slave = &omap44xx_emif_fw_hwmod,
3102 .clk = "l3_div_ck",
3103 .user = OCP_USER_MPU | OCP_USER_SDMA,
3104};
3105
3106static struct omap_hwmod_addr_space omap44xx_emif_fw_addrs[] = {
3107 {
3108 .pa_start = 0x4a20c000,
3109 .pa_end = 0x4a20c0ff,
3110 .flags = ADDR_TYPE_RT
3111 },
3112 { }
3113};
3114
3115/* l4_cfg -> emif_fw */
3116static struct omap_hwmod_ocp_if omap44xx_l4_cfg__emif_fw = {
3117 .master = &omap44xx_l4_cfg_hwmod,
3118 .slave = &omap44xx_emif_fw_hwmod,
3119 .clk = "l4_div_ck",
3120 .addr = omap44xx_emif_fw_addrs,
3121 .user = OCP_USER_MPU,
3122};
3123
3124/* iva -> l3_instr */
3125static struct omap_hwmod_ocp_if omap44xx_iva__l3_instr = {
3126 .master = &omap44xx_iva_hwmod,
3127 .slave = &omap44xx_l3_instr_hwmod,
3128 .clk = "l3_div_ck",
3129 .user = OCP_USER_MPU | OCP_USER_SDMA,
3130};
3131
3132/* l3_main_3 -> l3_instr */
3133static struct omap_hwmod_ocp_if omap44xx_l3_main_3__l3_instr = {
3134 .master = &omap44xx_l3_main_3_hwmod,
3135 .slave = &omap44xx_l3_instr_hwmod,
3136 .clk = "l3_div_ck",
3137 .user = OCP_USER_MPU | OCP_USER_SDMA,
3138};
3139
3140/* dsp -> l3_main_1 */
3141static struct omap_hwmod_ocp_if omap44xx_dsp__l3_main_1 = {
3142 .master = &omap44xx_dsp_hwmod,
3143 .slave = &omap44xx_l3_main_1_hwmod,
3144 .clk = "l3_div_ck",
3145 .user = OCP_USER_MPU | OCP_USER_SDMA,
3146};
3147
3148/* dss -> l3_main_1 */
3149static struct omap_hwmod_ocp_if omap44xx_dss__l3_main_1 = {
3150 .master = &omap44xx_dss_hwmod,
3151 .slave = &omap44xx_l3_main_1_hwmod,
3152 .clk = "l3_div_ck",
3153 .user = OCP_USER_MPU | OCP_USER_SDMA,
3154};
3155
3156/* l3_main_2 -> l3_main_1 */
3157static struct omap_hwmod_ocp_if omap44xx_l3_main_2__l3_main_1 = {
3158 .master = &omap44xx_l3_main_2_hwmod,
3159 .slave = &omap44xx_l3_main_1_hwmod,
3160 .clk = "l3_div_ck",
3161 .user = OCP_USER_MPU | OCP_USER_SDMA,
3162};
3163
3164/* l4_cfg -> l3_main_1 */
3165static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l3_main_1 = {
3166 .master = &omap44xx_l4_cfg_hwmod,
3167 .slave = &omap44xx_l3_main_1_hwmod,
3168 .clk = "l4_div_ck",
3169 .user = OCP_USER_MPU | OCP_USER_SDMA,
3170};
3171
3172/* mmc1 -> l3_main_1 */
3173static struct omap_hwmod_ocp_if omap44xx_mmc1__l3_main_1 = {
3174 .master = &omap44xx_mmc1_hwmod,
3175 .slave = &omap44xx_l3_main_1_hwmod,
3176 .clk = "l3_div_ck",
3177 .user = OCP_USER_MPU | OCP_USER_SDMA,
3178};
3179
3180/* mmc2 -> l3_main_1 */
3181static struct omap_hwmod_ocp_if omap44xx_mmc2__l3_main_1 = {
3182 .master = &omap44xx_mmc2_hwmod,
3183 .slave = &omap44xx_l3_main_1_hwmod,
3184 .clk = "l3_div_ck",
3185 .user = OCP_USER_MPU | OCP_USER_SDMA,
3186};
3187
3188static struct omap_hwmod_addr_space omap44xx_l3_main_1_addrs[] = {
3189 {
3190 .pa_start = 0x44000000,
3191 .pa_end = 0x44000fff,
3192 .flags = ADDR_TYPE_RT
3193 },
3194 { }
3195};
3196
3197/* mpu -> l3_main_1 */
3198static struct omap_hwmod_ocp_if omap44xx_mpu__l3_main_1 = {
3199 .master = &omap44xx_mpu_hwmod,
3200 .slave = &omap44xx_l3_main_1_hwmod,
3201 .clk = "l3_div_ck",
3202 .addr = omap44xx_l3_main_1_addrs,
3203 .user = OCP_USER_MPU,
3204};
3205
3206/* dma_system -> l3_main_2 */
3207static struct omap_hwmod_ocp_if omap44xx_dma_system__l3_main_2 = {
3208 .master = &omap44xx_dma_system_hwmod,
3209 .slave = &omap44xx_l3_main_2_hwmod,
3210 .clk = "l3_div_ck",
3211 .user = OCP_USER_MPU | OCP_USER_SDMA,
3212};
3213
Ming Leib050f682012-04-19 13:33:50 -06003214/* fdif -> l3_main_2 */
3215static struct omap_hwmod_ocp_if omap44xx_fdif__l3_main_2 = {
3216 .master = &omap44xx_fdif_hwmod,
3217 .slave = &omap44xx_l3_main_2_hwmod,
3218 .clk = "l3_div_ck",
3219 .user = OCP_USER_MPU | OCP_USER_SDMA,
3220};
3221
Paul Walmsley9def3902012-04-19 13:33:53 -06003222/* gpu -> l3_main_2 */
3223static struct omap_hwmod_ocp_if omap44xx_gpu__l3_main_2 = {
3224 .master = &omap44xx_gpu_hwmod,
3225 .slave = &omap44xx_l3_main_2_hwmod,
3226 .clk = "l3_div_ck",
3227 .user = OCP_USER_MPU | OCP_USER_SDMA,
3228};
3229
Paul Walmsley844a3b62012-04-19 04:04:33 -06003230/* hsi -> l3_main_2 */
3231static struct omap_hwmod_ocp_if omap44xx_hsi__l3_main_2 = {
3232 .master = &omap44xx_hsi_hwmod,
3233 .slave = &omap44xx_l3_main_2_hwmod,
3234 .clk = "l3_div_ck",
3235 .user = OCP_USER_MPU | OCP_USER_SDMA,
3236};
3237
3238/* ipu -> l3_main_2 */
3239static struct omap_hwmod_ocp_if omap44xx_ipu__l3_main_2 = {
3240 .master = &omap44xx_ipu_hwmod,
3241 .slave = &omap44xx_l3_main_2_hwmod,
3242 .clk = "l3_div_ck",
3243 .user = OCP_USER_MPU | OCP_USER_SDMA,
3244};
3245
3246/* iss -> l3_main_2 */
3247static struct omap_hwmod_ocp_if omap44xx_iss__l3_main_2 = {
3248 .master = &omap44xx_iss_hwmod,
3249 .slave = &omap44xx_l3_main_2_hwmod,
3250 .clk = "l3_div_ck",
3251 .user = OCP_USER_MPU | OCP_USER_SDMA,
3252};
3253
3254/* iva -> l3_main_2 */
3255static struct omap_hwmod_ocp_if omap44xx_iva__l3_main_2 = {
3256 .master = &omap44xx_iva_hwmod,
3257 .slave = &omap44xx_l3_main_2_hwmod,
3258 .clk = "l3_div_ck",
3259 .user = OCP_USER_MPU | OCP_USER_SDMA,
3260};
3261
3262static struct omap_hwmod_addr_space omap44xx_l3_main_2_addrs[] = {
3263 {
3264 .pa_start = 0x44800000,
3265 .pa_end = 0x44801fff,
3266 .flags = ADDR_TYPE_RT
3267 },
3268 { }
3269};
3270
3271/* l3_main_1 -> l3_main_2 */
3272static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l3_main_2 = {
3273 .master = &omap44xx_l3_main_1_hwmod,
3274 .slave = &omap44xx_l3_main_2_hwmod,
3275 .clk = "l3_div_ck",
3276 .addr = omap44xx_l3_main_2_addrs,
3277 .user = OCP_USER_MPU,
3278};
3279
3280/* l4_cfg -> l3_main_2 */
3281static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l3_main_2 = {
3282 .master = &omap44xx_l4_cfg_hwmod,
3283 .slave = &omap44xx_l3_main_2_hwmod,
3284 .clk = "l4_div_ck",
3285 .user = OCP_USER_MPU | OCP_USER_SDMA,
3286};
3287
3288/* usb_host_hs -> l3_main_2 */
3289static struct omap_hwmod_ocp_if omap44xx_usb_host_hs__l3_main_2 = {
3290 .master = &omap44xx_usb_host_hs_hwmod,
3291 .slave = &omap44xx_l3_main_2_hwmod,
3292 .clk = "l3_div_ck",
3293 .user = OCP_USER_MPU | OCP_USER_SDMA,
3294};
3295
3296/* usb_otg_hs -> l3_main_2 */
3297static struct omap_hwmod_ocp_if omap44xx_usb_otg_hs__l3_main_2 = {
3298 .master = &omap44xx_usb_otg_hs_hwmod,
3299 .slave = &omap44xx_l3_main_2_hwmod,
3300 .clk = "l3_div_ck",
3301 .user = OCP_USER_MPU | OCP_USER_SDMA,
3302};
3303
3304static struct omap_hwmod_addr_space omap44xx_l3_main_3_addrs[] = {
3305 {
3306 .pa_start = 0x45000000,
3307 .pa_end = 0x45000fff,
3308 .flags = ADDR_TYPE_RT
3309 },
3310 { }
3311};
3312
3313/* l3_main_1 -> l3_main_3 */
3314static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l3_main_3 = {
3315 .master = &omap44xx_l3_main_1_hwmod,
3316 .slave = &omap44xx_l3_main_3_hwmod,
3317 .clk = "l3_div_ck",
3318 .addr = omap44xx_l3_main_3_addrs,
3319 .user = OCP_USER_MPU,
3320};
3321
3322/* l3_main_2 -> l3_main_3 */
3323static struct omap_hwmod_ocp_if omap44xx_l3_main_2__l3_main_3 = {
3324 .master = &omap44xx_l3_main_2_hwmod,
3325 .slave = &omap44xx_l3_main_3_hwmod,
3326 .clk = "l3_div_ck",
3327 .user = OCP_USER_MPU | OCP_USER_SDMA,
3328};
3329
3330/* l4_cfg -> l3_main_3 */
3331static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l3_main_3 = {
3332 .master = &omap44xx_l4_cfg_hwmod,
3333 .slave = &omap44xx_l3_main_3_hwmod,
3334 .clk = "l4_div_ck",
3335 .user = OCP_USER_MPU | OCP_USER_SDMA,
3336};
3337
3338/* aess -> l4_abe */
3339static struct omap_hwmod_ocp_if omap44xx_aess__l4_abe = {
3340 .master = &omap44xx_aess_hwmod,
3341 .slave = &omap44xx_l4_abe_hwmod,
3342 .clk = "ocp_abe_iclk",
3343 .user = OCP_USER_MPU | OCP_USER_SDMA,
3344};
3345
3346/* dsp -> l4_abe */
3347static struct omap_hwmod_ocp_if omap44xx_dsp__l4_abe = {
3348 .master = &omap44xx_dsp_hwmod,
3349 .slave = &omap44xx_l4_abe_hwmod,
3350 .clk = "ocp_abe_iclk",
3351 .user = OCP_USER_MPU | OCP_USER_SDMA,
3352};
3353
3354/* l3_main_1 -> l4_abe */
3355static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l4_abe = {
3356 .master = &omap44xx_l3_main_1_hwmod,
3357 .slave = &omap44xx_l4_abe_hwmod,
3358 .clk = "l3_div_ck",
3359 .user = OCP_USER_MPU | OCP_USER_SDMA,
3360};
3361
3362/* mpu -> l4_abe */
3363static struct omap_hwmod_ocp_if omap44xx_mpu__l4_abe = {
3364 .master = &omap44xx_mpu_hwmod,
3365 .slave = &omap44xx_l4_abe_hwmod,
3366 .clk = "ocp_abe_iclk",
3367 .user = OCP_USER_MPU | OCP_USER_SDMA,
3368};
3369
3370/* l3_main_1 -> l4_cfg */
3371static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l4_cfg = {
3372 .master = &omap44xx_l3_main_1_hwmod,
3373 .slave = &omap44xx_l4_cfg_hwmod,
3374 .clk = "l3_div_ck",
3375 .user = OCP_USER_MPU | OCP_USER_SDMA,
3376};
3377
3378/* l3_main_2 -> l4_per */
3379static struct omap_hwmod_ocp_if omap44xx_l3_main_2__l4_per = {
3380 .master = &omap44xx_l3_main_2_hwmod,
3381 .slave = &omap44xx_l4_per_hwmod,
3382 .clk = "l3_div_ck",
3383 .user = OCP_USER_MPU | OCP_USER_SDMA,
3384};
3385
3386/* l4_cfg -> l4_wkup */
3387static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l4_wkup = {
3388 .master = &omap44xx_l4_cfg_hwmod,
3389 .slave = &omap44xx_l4_wkup_hwmod,
3390 .clk = "l4_div_ck",
3391 .user = OCP_USER_MPU | OCP_USER_SDMA,
3392};
3393
3394/* mpu -> mpu_private */
3395static struct omap_hwmod_ocp_if omap44xx_mpu__mpu_private = {
3396 .master = &omap44xx_mpu_hwmod,
3397 .slave = &omap44xx_mpu_private_hwmod,
3398 .clk = "l3_div_ck",
3399 .user = OCP_USER_MPU | OCP_USER_SDMA,
3400};
3401
3402static struct omap_hwmod_addr_space omap44xx_aess_addrs[] = {
3403 {
3404 .pa_start = 0x401f1000,
3405 .pa_end = 0x401f13ff,
3406 .flags = ADDR_TYPE_RT
3407 },
3408 { }
3409};
3410
3411/* l4_abe -> aess */
3412static struct omap_hwmod_ocp_if omap44xx_l4_abe__aess = {
3413 .master = &omap44xx_l4_abe_hwmod,
3414 .slave = &omap44xx_aess_hwmod,
3415 .clk = "ocp_abe_iclk",
3416 .addr = omap44xx_aess_addrs,
3417 .user = OCP_USER_MPU,
3418};
3419
3420static struct omap_hwmod_addr_space omap44xx_aess_dma_addrs[] = {
3421 {
3422 .pa_start = 0x490f1000,
3423 .pa_end = 0x490f13ff,
3424 .flags = ADDR_TYPE_RT
3425 },
3426 { }
3427};
3428
3429/* l4_abe -> aess (dma) */
3430static struct omap_hwmod_ocp_if omap44xx_l4_abe__aess_dma = {
3431 .master = &omap44xx_l4_abe_hwmod,
3432 .slave = &omap44xx_aess_hwmod,
3433 .clk = "ocp_abe_iclk",
3434 .addr = omap44xx_aess_dma_addrs,
3435 .user = OCP_USER_SDMA,
3436};
3437
3438static struct omap_hwmod_addr_space omap44xx_counter_32k_addrs[] = {
3439 {
3440 .pa_start = 0x4a304000,
3441 .pa_end = 0x4a30401f,
3442 .flags = ADDR_TYPE_RT
3443 },
3444 { }
3445};
3446
3447/* l4_wkup -> counter_32k */
3448static struct omap_hwmod_ocp_if omap44xx_l4_wkup__counter_32k = {
3449 .master = &omap44xx_l4_wkup_hwmod,
3450 .slave = &omap44xx_counter_32k_hwmod,
3451 .clk = "l4_wkup_clk_mux_ck",
3452 .addr = omap44xx_counter_32k_addrs,
3453 .user = OCP_USER_MPU | OCP_USER_SDMA,
3454};
3455
3456static struct omap_hwmod_addr_space omap44xx_dma_system_addrs[] = {
3457 {
3458 .pa_start = 0x4a056000,
3459 .pa_end = 0x4a056fff,
3460 .flags = ADDR_TYPE_RT
3461 },
3462 { }
3463};
3464
3465/* l4_cfg -> dma_system */
3466static struct omap_hwmod_ocp_if omap44xx_l4_cfg__dma_system = {
3467 .master = &omap44xx_l4_cfg_hwmod,
3468 .slave = &omap44xx_dma_system_hwmod,
3469 .clk = "l4_div_ck",
3470 .addr = omap44xx_dma_system_addrs,
3471 .user = OCP_USER_MPU | OCP_USER_SDMA,
3472};
3473
3474static struct omap_hwmod_addr_space omap44xx_dmic_addrs[] = {
3475 {
3476 .name = "mpu",
3477 .pa_start = 0x4012e000,
3478 .pa_end = 0x4012e07f,
3479 .flags = ADDR_TYPE_RT
3480 },
3481 { }
3482};
3483
3484/* l4_abe -> dmic */
3485static struct omap_hwmod_ocp_if omap44xx_l4_abe__dmic = {
3486 .master = &omap44xx_l4_abe_hwmod,
3487 .slave = &omap44xx_dmic_hwmod,
3488 .clk = "ocp_abe_iclk",
3489 .addr = omap44xx_dmic_addrs,
3490 .user = OCP_USER_MPU,
3491};
3492
3493static struct omap_hwmod_addr_space omap44xx_dmic_dma_addrs[] = {
3494 {
3495 .name = "dma",
3496 .pa_start = 0x4902e000,
3497 .pa_end = 0x4902e07f,
3498 .flags = ADDR_TYPE_RT
3499 },
3500 { }
3501};
3502
3503/* l4_abe -> dmic (dma) */
3504static struct omap_hwmod_ocp_if omap44xx_l4_abe__dmic_dma = {
3505 .master = &omap44xx_l4_abe_hwmod,
3506 .slave = &omap44xx_dmic_hwmod,
3507 .clk = "ocp_abe_iclk",
3508 .addr = omap44xx_dmic_dma_addrs,
3509 .user = OCP_USER_SDMA,
3510};
3511
3512/* dsp -> iva */
3513static struct omap_hwmod_ocp_if omap44xx_dsp__iva = {
3514 .master = &omap44xx_dsp_hwmod,
3515 .slave = &omap44xx_iva_hwmod,
3516 .clk = "dpll_iva_m5x2_ck",
3517 .user = OCP_USER_DSP,
3518};
3519
3520/* l4_cfg -> dsp */
3521static struct omap_hwmod_ocp_if omap44xx_l4_cfg__dsp = {
3522 .master = &omap44xx_l4_cfg_hwmod,
3523 .slave = &omap44xx_dsp_hwmod,
3524 .clk = "l4_div_ck",
3525 .user = OCP_USER_MPU | OCP_USER_SDMA,
3526};
3527
3528static struct omap_hwmod_addr_space omap44xx_dss_dma_addrs[] = {
3529 {
3530 .pa_start = 0x58000000,
3531 .pa_end = 0x5800007f,
3532 .flags = ADDR_TYPE_RT
3533 },
3534 { }
3535};
3536
3537/* l3_main_2 -> dss */
3538static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss = {
3539 .master = &omap44xx_l3_main_2_hwmod,
3540 .slave = &omap44xx_dss_hwmod,
3541 .clk = "dss_fck",
3542 .addr = omap44xx_dss_dma_addrs,
3543 .user = OCP_USER_SDMA,
3544};
3545
3546static struct omap_hwmod_addr_space omap44xx_dss_addrs[] = {
3547 {
3548 .pa_start = 0x48040000,
3549 .pa_end = 0x4804007f,
3550 .flags = ADDR_TYPE_RT
3551 },
3552 { }
3553};
3554
3555/* l4_per -> dss */
3556static struct omap_hwmod_ocp_if omap44xx_l4_per__dss = {
3557 .master = &omap44xx_l4_per_hwmod,
3558 .slave = &omap44xx_dss_hwmod,
3559 .clk = "l4_div_ck",
3560 .addr = omap44xx_dss_addrs,
3561 .user = OCP_USER_MPU,
3562};
3563
3564static struct omap_hwmod_addr_space omap44xx_dss_dispc_dma_addrs[] = {
3565 {
3566 .pa_start = 0x58001000,
3567 .pa_end = 0x58001fff,
3568 .flags = ADDR_TYPE_RT
3569 },
3570 { }
3571};
3572
3573/* l3_main_2 -> dss_dispc */
3574static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_dispc = {
3575 .master = &omap44xx_l3_main_2_hwmod,
3576 .slave = &omap44xx_dss_dispc_hwmod,
3577 .clk = "dss_fck",
3578 .addr = omap44xx_dss_dispc_dma_addrs,
3579 .user = OCP_USER_SDMA,
3580};
3581
3582static struct omap_hwmod_addr_space omap44xx_dss_dispc_addrs[] = {
3583 {
3584 .pa_start = 0x48041000,
3585 .pa_end = 0x48041fff,
3586 .flags = ADDR_TYPE_RT
3587 },
3588 { }
3589};
3590
3591/* l4_per -> dss_dispc */
3592static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_dispc = {
3593 .master = &omap44xx_l4_per_hwmod,
3594 .slave = &omap44xx_dss_dispc_hwmod,
3595 .clk = "l4_div_ck",
3596 .addr = omap44xx_dss_dispc_addrs,
3597 .user = OCP_USER_MPU,
3598};
3599
3600static struct omap_hwmod_addr_space omap44xx_dss_dsi1_dma_addrs[] = {
3601 {
3602 .pa_start = 0x58004000,
3603 .pa_end = 0x580041ff,
3604 .flags = ADDR_TYPE_RT
3605 },
3606 { }
3607};
3608
3609/* l3_main_2 -> dss_dsi1 */
3610static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_dsi1 = {
3611 .master = &omap44xx_l3_main_2_hwmod,
3612 .slave = &omap44xx_dss_dsi1_hwmod,
3613 .clk = "dss_fck",
3614 .addr = omap44xx_dss_dsi1_dma_addrs,
3615 .user = OCP_USER_SDMA,
3616};
3617
3618static struct omap_hwmod_addr_space omap44xx_dss_dsi1_addrs[] = {
3619 {
3620 .pa_start = 0x48044000,
3621 .pa_end = 0x480441ff,
3622 .flags = ADDR_TYPE_RT
3623 },
3624 { }
3625};
3626
3627/* l4_per -> dss_dsi1 */
3628static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_dsi1 = {
3629 .master = &omap44xx_l4_per_hwmod,
3630 .slave = &omap44xx_dss_dsi1_hwmod,
3631 .clk = "l4_div_ck",
3632 .addr = omap44xx_dss_dsi1_addrs,
3633 .user = OCP_USER_MPU,
3634};
3635
3636static struct omap_hwmod_addr_space omap44xx_dss_dsi2_dma_addrs[] = {
3637 {
3638 .pa_start = 0x58005000,
3639 .pa_end = 0x580051ff,
3640 .flags = ADDR_TYPE_RT
3641 },
3642 { }
3643};
3644
3645/* l3_main_2 -> dss_dsi2 */
3646static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_dsi2 = {
3647 .master = &omap44xx_l3_main_2_hwmod,
3648 .slave = &omap44xx_dss_dsi2_hwmod,
3649 .clk = "dss_fck",
3650 .addr = omap44xx_dss_dsi2_dma_addrs,
3651 .user = OCP_USER_SDMA,
3652};
3653
3654static struct omap_hwmod_addr_space omap44xx_dss_dsi2_addrs[] = {
3655 {
3656 .pa_start = 0x48045000,
3657 .pa_end = 0x480451ff,
3658 .flags = ADDR_TYPE_RT
3659 },
3660 { }
3661};
3662
3663/* l4_per -> dss_dsi2 */
3664static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_dsi2 = {
3665 .master = &omap44xx_l4_per_hwmod,
3666 .slave = &omap44xx_dss_dsi2_hwmod,
3667 .clk = "l4_div_ck",
3668 .addr = omap44xx_dss_dsi2_addrs,
3669 .user = OCP_USER_MPU,
3670};
3671
3672static struct omap_hwmod_addr_space omap44xx_dss_hdmi_dma_addrs[] = {
3673 {
3674 .pa_start = 0x58006000,
3675 .pa_end = 0x58006fff,
3676 .flags = ADDR_TYPE_RT
3677 },
3678 { }
3679};
3680
3681/* l3_main_2 -> dss_hdmi */
3682static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_hdmi = {
3683 .master = &omap44xx_l3_main_2_hwmod,
3684 .slave = &omap44xx_dss_hdmi_hwmod,
3685 .clk = "dss_fck",
3686 .addr = omap44xx_dss_hdmi_dma_addrs,
3687 .user = OCP_USER_SDMA,
3688};
3689
3690static struct omap_hwmod_addr_space omap44xx_dss_hdmi_addrs[] = {
3691 {
3692 .pa_start = 0x48046000,
3693 .pa_end = 0x48046fff,
3694 .flags = ADDR_TYPE_RT
3695 },
3696 { }
3697};
3698
3699/* l4_per -> dss_hdmi */
3700static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_hdmi = {
3701 .master = &omap44xx_l4_per_hwmod,
3702 .slave = &omap44xx_dss_hdmi_hwmod,
3703 .clk = "l4_div_ck",
3704 .addr = omap44xx_dss_hdmi_addrs,
3705 .user = OCP_USER_MPU,
3706};
3707
3708static struct omap_hwmod_addr_space omap44xx_dss_rfbi_dma_addrs[] = {
3709 {
3710 .pa_start = 0x58002000,
3711 .pa_end = 0x580020ff,
3712 .flags = ADDR_TYPE_RT
3713 },
3714 { }
3715};
3716
3717/* l3_main_2 -> dss_rfbi */
3718static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_rfbi = {
3719 .master = &omap44xx_l3_main_2_hwmod,
3720 .slave = &omap44xx_dss_rfbi_hwmod,
3721 .clk = "dss_fck",
3722 .addr = omap44xx_dss_rfbi_dma_addrs,
3723 .user = OCP_USER_SDMA,
3724};
3725
3726static struct omap_hwmod_addr_space omap44xx_dss_rfbi_addrs[] = {
3727 {
3728 .pa_start = 0x48042000,
3729 .pa_end = 0x480420ff,
3730 .flags = ADDR_TYPE_RT
3731 },
3732 { }
3733};
3734
3735/* l4_per -> dss_rfbi */
3736static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_rfbi = {
3737 .master = &omap44xx_l4_per_hwmod,
3738 .slave = &omap44xx_dss_rfbi_hwmod,
3739 .clk = "l4_div_ck",
3740 .addr = omap44xx_dss_rfbi_addrs,
3741 .user = OCP_USER_MPU,
3742};
3743
3744static struct omap_hwmod_addr_space omap44xx_dss_venc_dma_addrs[] = {
3745 {
3746 .pa_start = 0x58003000,
3747 .pa_end = 0x580030ff,
3748 .flags = ADDR_TYPE_RT
3749 },
3750 { }
3751};
3752
3753/* l3_main_2 -> dss_venc */
3754static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_venc = {
3755 .master = &omap44xx_l3_main_2_hwmod,
3756 .slave = &omap44xx_dss_venc_hwmod,
3757 .clk = "dss_fck",
3758 .addr = omap44xx_dss_venc_dma_addrs,
3759 .user = OCP_USER_SDMA,
3760};
3761
3762static struct omap_hwmod_addr_space omap44xx_dss_venc_addrs[] = {
3763 {
3764 .pa_start = 0x48043000,
3765 .pa_end = 0x480430ff,
3766 .flags = ADDR_TYPE_RT
3767 },
3768 { }
3769};
3770
3771/* l4_per -> dss_venc */
3772static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_venc = {
3773 .master = &omap44xx_l4_per_hwmod,
3774 .slave = &omap44xx_dss_venc_hwmod,
3775 .clk = "l4_div_ck",
3776 .addr = omap44xx_dss_venc_addrs,
3777 .user = OCP_USER_MPU,
3778};
3779
Paul Walmsleybf30f952012-04-19 13:33:52 -06003780static struct omap_hwmod_addr_space omap44xx_emif1_addrs[] = {
3781 {
3782 .pa_start = 0x4c000000,
3783 .pa_end = 0x4c0000ff,
3784 .flags = ADDR_TYPE_RT
3785 },
3786 { }
3787};
3788
3789/* emif_fw -> emif1 */
3790static struct omap_hwmod_ocp_if omap44xx_emif_fw__emif1 = {
3791 .master = &omap44xx_emif_fw_hwmod,
3792 .slave = &omap44xx_emif1_hwmod,
3793 .clk = "l3_div_ck",
3794 .addr = omap44xx_emif1_addrs,
3795 .user = OCP_USER_MPU | OCP_USER_SDMA,
3796};
3797
3798static struct omap_hwmod_addr_space omap44xx_emif2_addrs[] = {
3799 {
3800 .pa_start = 0x4d000000,
3801 .pa_end = 0x4d0000ff,
3802 .flags = ADDR_TYPE_RT
3803 },
3804 { }
3805};
3806
3807/* emif_fw -> emif2 */
3808static struct omap_hwmod_ocp_if omap44xx_emif_fw__emif2 = {
3809 .master = &omap44xx_emif_fw_hwmod,
3810 .slave = &omap44xx_emif2_hwmod,
3811 .clk = "l3_div_ck",
3812 .addr = omap44xx_emif2_addrs,
3813 .user = OCP_USER_MPU | OCP_USER_SDMA,
3814};
3815
Ming Leib050f682012-04-19 13:33:50 -06003816static struct omap_hwmod_addr_space omap44xx_fdif_addrs[] = {
3817 {
3818 .pa_start = 0x4a10a000,
3819 .pa_end = 0x4a10a1ff,
3820 .flags = ADDR_TYPE_RT
3821 },
3822 { }
3823};
3824
3825/* l4_cfg -> fdif */
3826static struct omap_hwmod_ocp_if omap44xx_l4_cfg__fdif = {
3827 .master = &omap44xx_l4_cfg_hwmod,
3828 .slave = &omap44xx_fdif_hwmod,
3829 .clk = "l4_div_ck",
3830 .addr = omap44xx_fdif_addrs,
3831 .user = OCP_USER_MPU | OCP_USER_SDMA,
3832};
3833
Paul Walmsley844a3b62012-04-19 04:04:33 -06003834static struct omap_hwmod_addr_space omap44xx_gpio1_addrs[] = {
3835 {
3836 .pa_start = 0x4a310000,
3837 .pa_end = 0x4a3101ff,
3838 .flags = ADDR_TYPE_RT
3839 },
3840 { }
3841};
3842
3843/* l4_wkup -> gpio1 */
3844static struct omap_hwmod_ocp_if omap44xx_l4_wkup__gpio1 = {
3845 .master = &omap44xx_l4_wkup_hwmod,
3846 .slave = &omap44xx_gpio1_hwmod,
3847 .clk = "l4_wkup_clk_mux_ck",
3848 .addr = omap44xx_gpio1_addrs,
3849 .user = OCP_USER_MPU | OCP_USER_SDMA,
3850};
3851
3852static struct omap_hwmod_addr_space omap44xx_gpio2_addrs[] = {
3853 {
3854 .pa_start = 0x48055000,
3855 .pa_end = 0x480551ff,
3856 .flags = ADDR_TYPE_RT
3857 },
3858 { }
3859};
3860
3861/* l4_per -> gpio2 */
3862static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio2 = {
3863 .master = &omap44xx_l4_per_hwmod,
3864 .slave = &omap44xx_gpio2_hwmod,
3865 .clk = "l4_div_ck",
3866 .addr = omap44xx_gpio2_addrs,
3867 .user = OCP_USER_MPU | OCP_USER_SDMA,
3868};
3869
3870static struct omap_hwmod_addr_space omap44xx_gpio3_addrs[] = {
3871 {
3872 .pa_start = 0x48057000,
3873 .pa_end = 0x480571ff,
3874 .flags = ADDR_TYPE_RT
3875 },
3876 { }
3877};
3878
3879/* l4_per -> gpio3 */
3880static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio3 = {
3881 .master = &omap44xx_l4_per_hwmod,
3882 .slave = &omap44xx_gpio3_hwmod,
3883 .clk = "l4_div_ck",
3884 .addr = omap44xx_gpio3_addrs,
3885 .user = OCP_USER_MPU | OCP_USER_SDMA,
3886};
3887
3888static struct omap_hwmod_addr_space omap44xx_gpio4_addrs[] = {
3889 {
3890 .pa_start = 0x48059000,
3891 .pa_end = 0x480591ff,
3892 .flags = ADDR_TYPE_RT
3893 },
3894 { }
3895};
3896
3897/* l4_per -> gpio4 */
3898static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio4 = {
3899 .master = &omap44xx_l4_per_hwmod,
3900 .slave = &omap44xx_gpio4_hwmod,
3901 .clk = "l4_div_ck",
3902 .addr = omap44xx_gpio4_addrs,
3903 .user = OCP_USER_MPU | OCP_USER_SDMA,
3904};
3905
3906static struct omap_hwmod_addr_space omap44xx_gpio5_addrs[] = {
3907 {
3908 .pa_start = 0x4805b000,
3909 .pa_end = 0x4805b1ff,
3910 .flags = ADDR_TYPE_RT
3911 },
3912 { }
3913};
3914
3915/* l4_per -> gpio5 */
3916static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio5 = {
3917 .master = &omap44xx_l4_per_hwmod,
3918 .slave = &omap44xx_gpio5_hwmod,
3919 .clk = "l4_div_ck",
3920 .addr = omap44xx_gpio5_addrs,
3921 .user = OCP_USER_MPU | OCP_USER_SDMA,
3922};
3923
3924static struct omap_hwmod_addr_space omap44xx_gpio6_addrs[] = {
3925 {
3926 .pa_start = 0x4805d000,
3927 .pa_end = 0x4805d1ff,
3928 .flags = ADDR_TYPE_RT
3929 },
3930 { }
3931};
3932
3933/* l4_per -> gpio6 */
3934static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio6 = {
3935 .master = &omap44xx_l4_per_hwmod,
3936 .slave = &omap44xx_gpio6_hwmod,
3937 .clk = "l4_div_ck",
3938 .addr = omap44xx_gpio6_addrs,
3939 .user = OCP_USER_MPU | OCP_USER_SDMA,
3940};
3941
BenoƮt Coussoneb42b5d2012-04-19 13:33:51 -06003942static struct omap_hwmod_addr_space omap44xx_gpmc_addrs[] = {
3943 {
3944 .pa_start = 0x50000000,
3945 .pa_end = 0x500003ff,
3946 .flags = ADDR_TYPE_RT
3947 },
3948 { }
3949};
3950
3951/* l3_main_2 -> gpmc */
3952static struct omap_hwmod_ocp_if omap44xx_l3_main_2__gpmc = {
3953 .master = &omap44xx_l3_main_2_hwmod,
3954 .slave = &omap44xx_gpmc_hwmod,
3955 .clk = "l3_div_ck",
3956 .addr = omap44xx_gpmc_addrs,
3957 .user = OCP_USER_MPU | OCP_USER_SDMA,
3958};
3959
Paul Walmsley9def3902012-04-19 13:33:53 -06003960static struct omap_hwmod_addr_space omap44xx_gpu_addrs[] = {
3961 {
3962 .pa_start = 0x56000000,
3963 .pa_end = 0x5600ffff,
3964 .flags = ADDR_TYPE_RT
3965 },
3966 { }
3967};
3968
3969/* l3_main_2 -> gpu */
3970static struct omap_hwmod_ocp_if omap44xx_l3_main_2__gpu = {
3971 .master = &omap44xx_l3_main_2_hwmod,
3972 .slave = &omap44xx_gpu_hwmod,
3973 .clk = "l3_div_ck",
3974 .addr = omap44xx_gpu_addrs,
3975 .user = OCP_USER_MPU | OCP_USER_SDMA,
3976};
3977
Paul Walmsleya091c082012-04-19 13:33:50 -06003978static struct omap_hwmod_addr_space omap44xx_hdq1w_addrs[] = {
3979 {
3980 .pa_start = 0x480b2000,
3981 .pa_end = 0x480b201f,
3982 .flags = ADDR_TYPE_RT
3983 },
3984 { }
3985};
3986
3987/* l4_per -> hdq1w */
3988static struct omap_hwmod_ocp_if omap44xx_l4_per__hdq1w = {
3989 .master = &omap44xx_l4_per_hwmod,
3990 .slave = &omap44xx_hdq1w_hwmod,
3991 .clk = "l4_div_ck",
3992 .addr = omap44xx_hdq1w_addrs,
3993 .user = OCP_USER_MPU | OCP_USER_SDMA,
3994};
3995
Paul Walmsley844a3b62012-04-19 04:04:33 -06003996static struct omap_hwmod_addr_space omap44xx_hsi_addrs[] = {
3997 {
3998 .pa_start = 0x4a058000,
3999 .pa_end = 0x4a05bfff,
4000 .flags = ADDR_TYPE_RT
4001 },
4002 { }
4003};
4004
4005/* l4_cfg -> hsi */
4006static struct omap_hwmod_ocp_if omap44xx_l4_cfg__hsi = {
4007 .master = &omap44xx_l4_cfg_hwmod,
4008 .slave = &omap44xx_hsi_hwmod,
4009 .clk = "l4_div_ck",
4010 .addr = omap44xx_hsi_addrs,
4011 .user = OCP_USER_MPU | OCP_USER_SDMA,
4012};
4013
4014static struct omap_hwmod_addr_space omap44xx_i2c1_addrs[] = {
4015 {
4016 .pa_start = 0x48070000,
4017 .pa_end = 0x480700ff,
4018 .flags = ADDR_TYPE_RT
4019 },
4020 { }
4021};
4022
4023/* l4_per -> i2c1 */
4024static struct omap_hwmod_ocp_if omap44xx_l4_per__i2c1 = {
4025 .master = &omap44xx_l4_per_hwmod,
4026 .slave = &omap44xx_i2c1_hwmod,
4027 .clk = "l4_div_ck",
4028 .addr = omap44xx_i2c1_addrs,
4029 .user = OCP_USER_MPU | OCP_USER_SDMA,
4030};
4031
4032static struct omap_hwmod_addr_space omap44xx_i2c2_addrs[] = {
4033 {
4034 .pa_start = 0x48072000,
4035 .pa_end = 0x480720ff,
4036 .flags = ADDR_TYPE_RT
4037 },
4038 { }
4039};
4040
4041/* l4_per -> i2c2 */
4042static struct omap_hwmod_ocp_if omap44xx_l4_per__i2c2 = {
4043 .master = &omap44xx_l4_per_hwmod,
4044 .slave = &omap44xx_i2c2_hwmod,
4045 .clk = "l4_div_ck",
4046 .addr = omap44xx_i2c2_addrs,
4047 .user = OCP_USER_MPU | OCP_USER_SDMA,
4048};
4049
4050static struct omap_hwmod_addr_space omap44xx_i2c3_addrs[] = {
4051 {
4052 .pa_start = 0x48060000,
4053 .pa_end = 0x480600ff,
4054 .flags = ADDR_TYPE_RT
4055 },
4056 { }
4057};
4058
4059/* l4_per -> i2c3 */
4060static struct omap_hwmod_ocp_if omap44xx_l4_per__i2c3 = {
4061 .master = &omap44xx_l4_per_hwmod,
4062 .slave = &omap44xx_i2c3_hwmod,
4063 .clk = "l4_div_ck",
4064 .addr = omap44xx_i2c3_addrs,
4065 .user = OCP_USER_MPU | OCP_USER_SDMA,
4066};
4067
4068static struct omap_hwmod_addr_space omap44xx_i2c4_addrs[] = {
4069 {
4070 .pa_start = 0x48350000,
4071 .pa_end = 0x483500ff,
4072 .flags = ADDR_TYPE_RT
4073 },
4074 { }
4075};
4076
4077/* l4_per -> i2c4 */
4078static struct omap_hwmod_ocp_if omap44xx_l4_per__i2c4 = {
4079 .master = &omap44xx_l4_per_hwmod,
4080 .slave = &omap44xx_i2c4_hwmod,
4081 .clk = "l4_div_ck",
4082 .addr = omap44xx_i2c4_addrs,
4083 .user = OCP_USER_MPU | OCP_USER_SDMA,
4084};
4085
4086/* l3_main_2 -> ipu */
4087static struct omap_hwmod_ocp_if omap44xx_l3_main_2__ipu = {
4088 .master = &omap44xx_l3_main_2_hwmod,
4089 .slave = &omap44xx_ipu_hwmod,
4090 .clk = "l3_div_ck",
4091 .user = OCP_USER_MPU | OCP_USER_SDMA,
4092};
4093
4094static struct omap_hwmod_addr_space omap44xx_iss_addrs[] = {
4095 {
4096 .pa_start = 0x52000000,
4097 .pa_end = 0x520000ff,
4098 .flags = ADDR_TYPE_RT
4099 },
4100 { }
4101};
4102
4103/* l3_main_2 -> iss */
4104static struct omap_hwmod_ocp_if omap44xx_l3_main_2__iss = {
4105 .master = &omap44xx_l3_main_2_hwmod,
4106 .slave = &omap44xx_iss_hwmod,
4107 .clk = "l3_div_ck",
4108 .addr = omap44xx_iss_addrs,
4109 .user = OCP_USER_MPU | OCP_USER_SDMA,
4110};
4111
4112static struct omap_hwmod_addr_space omap44xx_iva_addrs[] = {
4113 {
4114 .pa_start = 0x5a000000,
4115 .pa_end = 0x5a07ffff,
4116 .flags = ADDR_TYPE_RT
4117 },
4118 { }
4119};
4120
4121/* l3_main_2 -> iva */
4122static struct omap_hwmod_ocp_if omap44xx_l3_main_2__iva = {
4123 .master = &omap44xx_l3_main_2_hwmod,
4124 .slave = &omap44xx_iva_hwmod,
4125 .clk = "l3_div_ck",
4126 .addr = omap44xx_iva_addrs,
4127 .user = OCP_USER_MPU,
4128};
4129
4130static struct omap_hwmod_addr_space omap44xx_kbd_addrs[] = {
4131 {
4132 .pa_start = 0x4a31c000,
4133 .pa_end = 0x4a31c07f,
4134 .flags = ADDR_TYPE_RT
4135 },
4136 { }
4137};
4138
4139/* l4_wkup -> kbd */
4140static struct omap_hwmod_ocp_if omap44xx_l4_wkup__kbd = {
4141 .master = &omap44xx_l4_wkup_hwmod,
4142 .slave = &omap44xx_kbd_hwmod,
4143 .clk = "l4_wkup_clk_mux_ck",
4144 .addr = omap44xx_kbd_addrs,
4145 .user = OCP_USER_MPU | OCP_USER_SDMA,
4146};
4147
4148static struct omap_hwmod_addr_space omap44xx_mailbox_addrs[] = {
4149 {
4150 .pa_start = 0x4a0f4000,
4151 .pa_end = 0x4a0f41ff,
4152 .flags = ADDR_TYPE_RT
4153 },
4154 { }
4155};
4156
4157/* l4_cfg -> mailbox */
4158static struct omap_hwmod_ocp_if omap44xx_l4_cfg__mailbox = {
4159 .master = &omap44xx_l4_cfg_hwmod,
4160 .slave = &omap44xx_mailbox_hwmod,
4161 .clk = "l4_div_ck",
4162 .addr = omap44xx_mailbox_addrs,
4163 .user = OCP_USER_MPU | OCP_USER_SDMA,
4164};
4165
4166static struct omap_hwmod_addr_space omap44xx_mcbsp1_addrs[] = {
4167 {
4168 .name = "mpu",
4169 .pa_start = 0x40122000,
4170 .pa_end = 0x401220ff,
4171 .flags = ADDR_TYPE_RT
4172 },
4173 { }
4174};
4175
4176/* l4_abe -> mcbsp1 */
4177static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp1 = {
4178 .master = &omap44xx_l4_abe_hwmod,
4179 .slave = &omap44xx_mcbsp1_hwmod,
4180 .clk = "ocp_abe_iclk",
4181 .addr = omap44xx_mcbsp1_addrs,
4182 .user = OCP_USER_MPU,
4183};
4184
4185static struct omap_hwmod_addr_space omap44xx_mcbsp1_dma_addrs[] = {
4186 {
4187 .name = "dma",
4188 .pa_start = 0x49022000,
4189 .pa_end = 0x490220ff,
4190 .flags = ADDR_TYPE_RT
4191 },
4192 { }
4193};
4194
4195/* l4_abe -> mcbsp1 (dma) */
4196static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp1_dma = {
4197 .master = &omap44xx_l4_abe_hwmod,
4198 .slave = &omap44xx_mcbsp1_hwmod,
4199 .clk = "ocp_abe_iclk",
4200 .addr = omap44xx_mcbsp1_dma_addrs,
4201 .user = OCP_USER_SDMA,
4202};
4203
4204static struct omap_hwmod_addr_space omap44xx_mcbsp2_addrs[] = {
4205 {
4206 .name = "mpu",
4207 .pa_start = 0x40124000,
4208 .pa_end = 0x401240ff,
4209 .flags = ADDR_TYPE_RT
4210 },
4211 { }
4212};
4213
4214/* l4_abe -> mcbsp2 */
4215static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp2 = {
4216 .master = &omap44xx_l4_abe_hwmod,
4217 .slave = &omap44xx_mcbsp2_hwmod,
4218 .clk = "ocp_abe_iclk",
4219 .addr = omap44xx_mcbsp2_addrs,
4220 .user = OCP_USER_MPU,
4221};
4222
4223static struct omap_hwmod_addr_space omap44xx_mcbsp2_dma_addrs[] = {
4224 {
4225 .name = "dma",
4226 .pa_start = 0x49024000,
4227 .pa_end = 0x490240ff,
4228 .flags = ADDR_TYPE_RT
4229 },
4230 { }
4231};
4232
4233/* l4_abe -> mcbsp2 (dma) */
4234static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp2_dma = {
4235 .master = &omap44xx_l4_abe_hwmod,
4236 .slave = &omap44xx_mcbsp2_hwmod,
4237 .clk = "ocp_abe_iclk",
4238 .addr = omap44xx_mcbsp2_dma_addrs,
4239 .user = OCP_USER_SDMA,
4240};
4241
4242static struct omap_hwmod_addr_space omap44xx_mcbsp3_addrs[] = {
4243 {
4244 .name = "mpu",
4245 .pa_start = 0x40126000,
4246 .pa_end = 0x401260ff,
4247 .flags = ADDR_TYPE_RT
4248 },
4249 { }
4250};
4251
4252/* l4_abe -> mcbsp3 */
4253static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp3 = {
4254 .master = &omap44xx_l4_abe_hwmod,
4255 .slave = &omap44xx_mcbsp3_hwmod,
4256 .clk = "ocp_abe_iclk",
4257 .addr = omap44xx_mcbsp3_addrs,
4258 .user = OCP_USER_MPU,
4259};
4260
4261static struct omap_hwmod_addr_space omap44xx_mcbsp3_dma_addrs[] = {
4262 {
4263 .name = "dma",
4264 .pa_start = 0x49026000,
4265 .pa_end = 0x490260ff,
4266 .flags = ADDR_TYPE_RT
4267 },
4268 { }
4269};
4270
4271/* l4_abe -> mcbsp3 (dma) */
4272static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp3_dma = {
4273 .master = &omap44xx_l4_abe_hwmod,
4274 .slave = &omap44xx_mcbsp3_hwmod,
4275 .clk = "ocp_abe_iclk",
4276 .addr = omap44xx_mcbsp3_dma_addrs,
4277 .user = OCP_USER_SDMA,
4278};
4279
4280static struct omap_hwmod_addr_space omap44xx_mcbsp4_addrs[] = {
4281 {
4282 .pa_start = 0x48096000,
4283 .pa_end = 0x480960ff,
4284 .flags = ADDR_TYPE_RT
4285 },
4286 { }
4287};
4288
4289/* l4_per -> mcbsp4 */
4290static struct omap_hwmod_ocp_if omap44xx_l4_per__mcbsp4 = {
4291 .master = &omap44xx_l4_per_hwmod,
4292 .slave = &omap44xx_mcbsp4_hwmod,
4293 .clk = "l4_div_ck",
4294 .addr = omap44xx_mcbsp4_addrs,
4295 .user = OCP_USER_MPU | OCP_USER_SDMA,
4296};
4297
4298static struct omap_hwmod_addr_space omap44xx_mcpdm_addrs[] = {
4299 {
4300 .pa_start = 0x40132000,
4301 .pa_end = 0x4013207f,
4302 .flags = ADDR_TYPE_RT
4303 },
4304 { }
4305};
4306
4307/* l4_abe -> mcpdm */
4308static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcpdm = {
4309 .master = &omap44xx_l4_abe_hwmod,
4310 .slave = &omap44xx_mcpdm_hwmod,
4311 .clk = "ocp_abe_iclk",
4312 .addr = omap44xx_mcpdm_addrs,
4313 .user = OCP_USER_MPU,
4314};
4315
4316static struct omap_hwmod_addr_space omap44xx_mcpdm_dma_addrs[] = {
4317 {
4318 .pa_start = 0x49032000,
4319 .pa_end = 0x4903207f,
4320 .flags = ADDR_TYPE_RT
4321 },
4322 { }
4323};
4324
4325/* l4_abe -> mcpdm (dma) */
4326static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcpdm_dma = {
4327 .master = &omap44xx_l4_abe_hwmod,
4328 .slave = &omap44xx_mcpdm_hwmod,
4329 .clk = "ocp_abe_iclk",
4330 .addr = omap44xx_mcpdm_dma_addrs,
4331 .user = OCP_USER_SDMA,
4332};
4333
4334static struct omap_hwmod_addr_space omap44xx_mcspi1_addrs[] = {
4335 {
4336 .pa_start = 0x48098000,
4337 .pa_end = 0x480981ff,
4338 .flags = ADDR_TYPE_RT
4339 },
4340 { }
4341};
4342
4343/* l4_per -> mcspi1 */
4344static struct omap_hwmod_ocp_if omap44xx_l4_per__mcspi1 = {
4345 .master = &omap44xx_l4_per_hwmod,
4346 .slave = &omap44xx_mcspi1_hwmod,
4347 .clk = "l4_div_ck",
4348 .addr = omap44xx_mcspi1_addrs,
4349 .user = OCP_USER_MPU | OCP_USER_SDMA,
4350};
4351
4352static struct omap_hwmod_addr_space omap44xx_mcspi2_addrs[] = {
4353 {
4354 .pa_start = 0x4809a000,
4355 .pa_end = 0x4809a1ff,
4356 .flags = ADDR_TYPE_RT
4357 },
4358 { }
4359};
4360
4361/* l4_per -> mcspi2 */
4362static struct omap_hwmod_ocp_if omap44xx_l4_per__mcspi2 = {
4363 .master = &omap44xx_l4_per_hwmod,
4364 .slave = &omap44xx_mcspi2_hwmod,
4365 .clk = "l4_div_ck",
4366 .addr = omap44xx_mcspi2_addrs,
4367 .user = OCP_USER_MPU | OCP_USER_SDMA,
4368};
4369
4370static struct omap_hwmod_addr_space omap44xx_mcspi3_addrs[] = {
4371 {
4372 .pa_start = 0x480b8000,
4373 .pa_end = 0x480b81ff,
4374 .flags = ADDR_TYPE_RT
4375 },
4376 { }
4377};
4378
4379/* l4_per -> mcspi3 */
4380static struct omap_hwmod_ocp_if omap44xx_l4_per__mcspi3 = {
4381 .master = &omap44xx_l4_per_hwmod,
4382 .slave = &omap44xx_mcspi3_hwmod,
4383 .clk = "l4_div_ck",
4384 .addr = omap44xx_mcspi3_addrs,
4385 .user = OCP_USER_MPU | OCP_USER_SDMA,
4386};
4387
4388static struct omap_hwmod_addr_space omap44xx_mcspi4_addrs[] = {
4389 {
4390 .pa_start = 0x480ba000,
4391 .pa_end = 0x480ba1ff,
4392 .flags = ADDR_TYPE_RT
4393 },
4394 { }
4395};
4396
4397/* l4_per -> mcspi4 */
4398static struct omap_hwmod_ocp_if omap44xx_l4_per__mcspi4 = {
4399 .master = &omap44xx_l4_per_hwmod,
4400 .slave = &omap44xx_mcspi4_hwmod,
4401 .clk = "l4_div_ck",
4402 .addr = omap44xx_mcspi4_addrs,
4403 .user = OCP_USER_MPU | OCP_USER_SDMA,
4404};
4405
4406static struct omap_hwmod_addr_space omap44xx_mmc1_addrs[] = {
4407 {
4408 .pa_start = 0x4809c000,
4409 .pa_end = 0x4809c3ff,
4410 .flags = ADDR_TYPE_RT
4411 },
4412 { }
4413};
4414
4415/* l4_per -> mmc1 */
4416static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc1 = {
4417 .master = &omap44xx_l4_per_hwmod,
4418 .slave = &omap44xx_mmc1_hwmod,
4419 .clk = "l4_div_ck",
4420 .addr = omap44xx_mmc1_addrs,
4421 .user = OCP_USER_MPU | OCP_USER_SDMA,
4422};
4423
4424static struct omap_hwmod_addr_space omap44xx_mmc2_addrs[] = {
4425 {
4426 .pa_start = 0x480b4000,
4427 .pa_end = 0x480b43ff,
4428 .flags = ADDR_TYPE_RT
4429 },
4430 { }
4431};
4432
4433/* l4_per -> mmc2 */
4434static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc2 = {
4435 .master = &omap44xx_l4_per_hwmod,
4436 .slave = &omap44xx_mmc2_hwmod,
4437 .clk = "l4_div_ck",
4438 .addr = omap44xx_mmc2_addrs,
4439 .user = OCP_USER_MPU | OCP_USER_SDMA,
4440};
4441
4442static struct omap_hwmod_addr_space omap44xx_mmc3_addrs[] = {
4443 {
4444 .pa_start = 0x480ad000,
4445 .pa_end = 0x480ad3ff,
4446 .flags = ADDR_TYPE_RT
4447 },
4448 { }
4449};
4450
4451/* l4_per -> mmc3 */
4452static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc3 = {
4453 .master = &omap44xx_l4_per_hwmod,
4454 .slave = &omap44xx_mmc3_hwmod,
4455 .clk = "l4_div_ck",
4456 .addr = omap44xx_mmc3_addrs,
4457 .user = OCP_USER_MPU | OCP_USER_SDMA,
4458};
4459
4460static struct omap_hwmod_addr_space omap44xx_mmc4_addrs[] = {
4461 {
4462 .pa_start = 0x480d1000,
4463 .pa_end = 0x480d13ff,
4464 .flags = ADDR_TYPE_RT
4465 },
4466 { }
4467};
4468
4469/* l4_per -> mmc4 */
4470static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc4 = {
4471 .master = &omap44xx_l4_per_hwmod,
4472 .slave = &omap44xx_mmc4_hwmod,
4473 .clk = "l4_div_ck",
4474 .addr = omap44xx_mmc4_addrs,
4475 .user = OCP_USER_MPU | OCP_USER_SDMA,
4476};
4477
4478static struct omap_hwmod_addr_space omap44xx_mmc5_addrs[] = {
4479 {
4480 .pa_start = 0x480d5000,
4481 .pa_end = 0x480d53ff,
4482 .flags = ADDR_TYPE_RT
4483 },
4484 { }
4485};
4486
4487/* l4_per -> mmc5 */
4488static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc5 = {
4489 .master = &omap44xx_l4_per_hwmod,
4490 .slave = &omap44xx_mmc5_hwmod,
4491 .clk = "l4_div_ck",
4492 .addr = omap44xx_mmc5_addrs,
4493 .user = OCP_USER_MPU | OCP_USER_SDMA,
4494};
4495
4496static struct omap_hwmod_addr_space omap44xx_smartreflex_core_addrs[] = {
4497 {
4498 .pa_start = 0x4a0dd000,
4499 .pa_end = 0x4a0dd03f,
4500 .flags = ADDR_TYPE_RT
4501 },
4502 { }
4503};
4504
4505/* l4_cfg -> smartreflex_core */
4506static struct omap_hwmod_ocp_if omap44xx_l4_cfg__smartreflex_core = {
4507 .master = &omap44xx_l4_cfg_hwmod,
4508 .slave = &omap44xx_smartreflex_core_hwmod,
4509 .clk = "l4_div_ck",
4510 .addr = omap44xx_smartreflex_core_addrs,
4511 .user = OCP_USER_MPU | OCP_USER_SDMA,
4512};
4513
4514static struct omap_hwmod_addr_space omap44xx_smartreflex_iva_addrs[] = {
4515 {
4516 .pa_start = 0x4a0db000,
4517 .pa_end = 0x4a0db03f,
4518 .flags = ADDR_TYPE_RT
4519 },
4520 { }
4521};
4522
4523/* l4_cfg -> smartreflex_iva */
4524static struct omap_hwmod_ocp_if omap44xx_l4_cfg__smartreflex_iva = {
4525 .master = &omap44xx_l4_cfg_hwmod,
4526 .slave = &omap44xx_smartreflex_iva_hwmod,
4527 .clk = "l4_div_ck",
4528 .addr = omap44xx_smartreflex_iva_addrs,
4529 .user = OCP_USER_MPU | OCP_USER_SDMA,
4530};
4531
4532static struct omap_hwmod_addr_space omap44xx_smartreflex_mpu_addrs[] = {
4533 {
4534 .pa_start = 0x4a0d9000,
4535 .pa_end = 0x4a0d903f,
4536 .flags = ADDR_TYPE_RT
4537 },
4538 { }
4539};
4540
4541/* l4_cfg -> smartreflex_mpu */
4542static struct omap_hwmod_ocp_if omap44xx_l4_cfg__smartreflex_mpu = {
4543 .master = &omap44xx_l4_cfg_hwmod,
4544 .slave = &omap44xx_smartreflex_mpu_hwmod,
4545 .clk = "l4_div_ck",
4546 .addr = omap44xx_smartreflex_mpu_addrs,
4547 .user = OCP_USER_MPU | OCP_USER_SDMA,
4548};
4549
4550static struct omap_hwmod_addr_space omap44xx_spinlock_addrs[] = {
4551 {
4552 .pa_start = 0x4a0f6000,
4553 .pa_end = 0x4a0f6fff,
4554 .flags = ADDR_TYPE_RT
4555 },
4556 { }
4557};
4558
4559/* l4_cfg -> spinlock */
4560static struct omap_hwmod_ocp_if omap44xx_l4_cfg__spinlock = {
4561 .master = &omap44xx_l4_cfg_hwmod,
4562 .slave = &omap44xx_spinlock_hwmod,
4563 .clk = "l4_div_ck",
4564 .addr = omap44xx_spinlock_addrs,
4565 .user = OCP_USER_MPU | OCP_USER_SDMA,
4566};
4567
4568static struct omap_hwmod_addr_space omap44xx_timer1_addrs[] = {
4569 {
4570 .pa_start = 0x4a318000,
4571 .pa_end = 0x4a31807f,
4572 .flags = ADDR_TYPE_RT
4573 },
4574 { }
4575};
4576
4577/* l4_wkup -> timer1 */
4578static struct omap_hwmod_ocp_if omap44xx_l4_wkup__timer1 = {
4579 .master = &omap44xx_l4_wkup_hwmod,
4580 .slave = &omap44xx_timer1_hwmod,
4581 .clk = "l4_wkup_clk_mux_ck",
4582 .addr = omap44xx_timer1_addrs,
4583 .user = OCP_USER_MPU | OCP_USER_SDMA,
4584};
4585
4586static struct omap_hwmod_addr_space omap44xx_timer2_addrs[] = {
4587 {
4588 .pa_start = 0x48032000,
4589 .pa_end = 0x4803207f,
4590 .flags = ADDR_TYPE_RT
4591 },
4592 { }
4593};
4594
4595/* l4_per -> timer2 */
4596static struct omap_hwmod_ocp_if omap44xx_l4_per__timer2 = {
4597 .master = &omap44xx_l4_per_hwmod,
4598 .slave = &omap44xx_timer2_hwmod,
4599 .clk = "l4_div_ck",
4600 .addr = omap44xx_timer2_addrs,
4601 .user = OCP_USER_MPU | OCP_USER_SDMA,
4602};
4603
4604static struct omap_hwmod_addr_space omap44xx_timer3_addrs[] = {
4605 {
4606 .pa_start = 0x48034000,
4607 .pa_end = 0x4803407f,
4608 .flags = ADDR_TYPE_RT
4609 },
4610 { }
4611};
4612
4613/* l4_per -> timer3 */
4614static struct omap_hwmod_ocp_if omap44xx_l4_per__timer3 = {
4615 .master = &omap44xx_l4_per_hwmod,
4616 .slave = &omap44xx_timer3_hwmod,
4617 .clk = "l4_div_ck",
4618 .addr = omap44xx_timer3_addrs,
4619 .user = OCP_USER_MPU | OCP_USER_SDMA,
4620};
4621
4622static struct omap_hwmod_addr_space omap44xx_timer4_addrs[] = {
4623 {
4624 .pa_start = 0x48036000,
4625 .pa_end = 0x4803607f,
4626 .flags = ADDR_TYPE_RT
4627 },
4628 { }
4629};
4630
4631/* l4_per -> timer4 */
4632static struct omap_hwmod_ocp_if omap44xx_l4_per__timer4 = {
4633 .master = &omap44xx_l4_per_hwmod,
4634 .slave = &omap44xx_timer4_hwmod,
4635 .clk = "l4_div_ck",
4636 .addr = omap44xx_timer4_addrs,
4637 .user = OCP_USER_MPU | OCP_USER_SDMA,
4638};
4639
4640static struct omap_hwmod_addr_space omap44xx_timer5_addrs[] = {
4641 {
4642 .pa_start = 0x40138000,
4643 .pa_end = 0x4013807f,
4644 .flags = ADDR_TYPE_RT
4645 },
4646 { }
4647};
4648
4649/* l4_abe -> timer5 */
4650static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer5 = {
4651 .master = &omap44xx_l4_abe_hwmod,
4652 .slave = &omap44xx_timer5_hwmod,
4653 .clk = "ocp_abe_iclk",
4654 .addr = omap44xx_timer5_addrs,
4655 .user = OCP_USER_MPU,
4656};
4657
4658static struct omap_hwmod_addr_space omap44xx_timer5_dma_addrs[] = {
4659 {
4660 .pa_start = 0x49038000,
4661 .pa_end = 0x4903807f,
4662 .flags = ADDR_TYPE_RT
4663 },
4664 { }
4665};
4666
4667/* l4_abe -> timer5 (dma) */
4668static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer5_dma = {
4669 .master = &omap44xx_l4_abe_hwmod,
4670 .slave = &omap44xx_timer5_hwmod,
4671 .clk = "ocp_abe_iclk",
4672 .addr = omap44xx_timer5_dma_addrs,
4673 .user = OCP_USER_SDMA,
4674};
4675
4676static struct omap_hwmod_addr_space omap44xx_timer6_addrs[] = {
4677 {
4678 .pa_start = 0x4013a000,
4679 .pa_end = 0x4013a07f,
4680 .flags = ADDR_TYPE_RT
4681 },
4682 { }
4683};
4684
4685/* l4_abe -> timer6 */
4686static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer6 = {
4687 .master = &omap44xx_l4_abe_hwmod,
4688 .slave = &omap44xx_timer6_hwmod,
4689 .clk = "ocp_abe_iclk",
4690 .addr = omap44xx_timer6_addrs,
4691 .user = OCP_USER_MPU,
4692};
4693
4694static struct omap_hwmod_addr_space omap44xx_timer6_dma_addrs[] = {
4695 {
4696 .pa_start = 0x4903a000,
4697 .pa_end = 0x4903a07f,
4698 .flags = ADDR_TYPE_RT
4699 },
4700 { }
4701};
4702
4703/* l4_abe -> timer6 (dma) */
4704static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer6_dma = {
4705 .master = &omap44xx_l4_abe_hwmod,
4706 .slave = &omap44xx_timer6_hwmod,
4707 .clk = "ocp_abe_iclk",
4708 .addr = omap44xx_timer6_dma_addrs,
4709 .user = OCP_USER_SDMA,
4710};
4711
4712static struct omap_hwmod_addr_space omap44xx_timer7_addrs[] = {
4713 {
4714 .pa_start = 0x4013c000,
4715 .pa_end = 0x4013c07f,
4716 .flags = ADDR_TYPE_RT
4717 },
4718 { }
4719};
4720
4721/* l4_abe -> timer7 */
4722static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer7 = {
4723 .master = &omap44xx_l4_abe_hwmod,
4724 .slave = &omap44xx_timer7_hwmod,
4725 .clk = "ocp_abe_iclk",
4726 .addr = omap44xx_timer7_addrs,
4727 .user = OCP_USER_MPU,
4728};
4729
4730static struct omap_hwmod_addr_space omap44xx_timer7_dma_addrs[] = {
4731 {
4732 .pa_start = 0x4903c000,
4733 .pa_end = 0x4903c07f,
4734 .flags = ADDR_TYPE_RT
4735 },
4736 { }
4737};
4738
4739/* l4_abe -> timer7 (dma) */
4740static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer7_dma = {
4741 .master = &omap44xx_l4_abe_hwmod,
4742 .slave = &omap44xx_timer7_hwmod,
4743 .clk = "ocp_abe_iclk",
4744 .addr = omap44xx_timer7_dma_addrs,
4745 .user = OCP_USER_SDMA,
4746};
4747
4748static struct omap_hwmod_addr_space omap44xx_timer8_addrs[] = {
4749 {
4750 .pa_start = 0x4013e000,
4751 .pa_end = 0x4013e07f,
4752 .flags = ADDR_TYPE_RT
4753 },
4754 { }
4755};
4756
4757/* l4_abe -> timer8 */
4758static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer8 = {
4759 .master = &omap44xx_l4_abe_hwmod,
4760 .slave = &omap44xx_timer8_hwmod,
4761 .clk = "ocp_abe_iclk",
4762 .addr = omap44xx_timer8_addrs,
4763 .user = OCP_USER_MPU,
4764};
4765
4766static struct omap_hwmod_addr_space omap44xx_timer8_dma_addrs[] = {
4767 {
4768 .pa_start = 0x4903e000,
4769 .pa_end = 0x4903e07f,
4770 .flags = ADDR_TYPE_RT
4771 },
4772 { }
4773};
4774
4775/* l4_abe -> timer8 (dma) */
4776static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer8_dma = {
4777 .master = &omap44xx_l4_abe_hwmod,
4778 .slave = &omap44xx_timer8_hwmod,
4779 .clk = "ocp_abe_iclk",
4780 .addr = omap44xx_timer8_dma_addrs,
4781 .user = OCP_USER_SDMA,
4782};
4783
4784static struct omap_hwmod_addr_space omap44xx_timer9_addrs[] = {
4785 {
4786 .pa_start = 0x4803e000,
4787 .pa_end = 0x4803e07f,
4788 .flags = ADDR_TYPE_RT
4789 },
4790 { }
4791};
4792
4793/* l4_per -> timer9 */
4794static struct omap_hwmod_ocp_if omap44xx_l4_per__timer9 = {
4795 .master = &omap44xx_l4_per_hwmod,
4796 .slave = &omap44xx_timer9_hwmod,
4797 .clk = "l4_div_ck",
4798 .addr = omap44xx_timer9_addrs,
4799 .user = OCP_USER_MPU | OCP_USER_SDMA,
4800};
4801
4802static struct omap_hwmod_addr_space omap44xx_timer10_addrs[] = {
4803 {
4804 .pa_start = 0x48086000,
4805 .pa_end = 0x4808607f,
4806 .flags = ADDR_TYPE_RT
4807 },
4808 { }
4809};
4810
4811/* l4_per -> timer10 */
4812static struct omap_hwmod_ocp_if omap44xx_l4_per__timer10 = {
4813 .master = &omap44xx_l4_per_hwmod,
4814 .slave = &omap44xx_timer10_hwmod,
4815 .clk = "l4_div_ck",
4816 .addr = omap44xx_timer10_addrs,
4817 .user = OCP_USER_MPU | OCP_USER_SDMA,
4818};
4819
4820static struct omap_hwmod_addr_space omap44xx_timer11_addrs[] = {
4821 {
4822 .pa_start = 0x48088000,
4823 .pa_end = 0x4808807f,
4824 .flags = ADDR_TYPE_RT
4825 },
4826 { }
4827};
4828
4829/* l4_per -> timer11 */
4830static struct omap_hwmod_ocp_if omap44xx_l4_per__timer11 = {
4831 .master = &omap44xx_l4_per_hwmod,
4832 .slave = &omap44xx_timer11_hwmod,
4833 .clk = "l4_div_ck",
4834 .addr = omap44xx_timer11_addrs,
4835 .user = OCP_USER_MPU | OCP_USER_SDMA,
4836};
4837
4838static struct omap_hwmod_addr_space omap44xx_uart1_addrs[] = {
4839 {
4840 .pa_start = 0x4806a000,
4841 .pa_end = 0x4806a0ff,
4842 .flags = ADDR_TYPE_RT
4843 },
4844 { }
4845};
4846
4847/* l4_per -> uart1 */
4848static struct omap_hwmod_ocp_if omap44xx_l4_per__uart1 = {
4849 .master = &omap44xx_l4_per_hwmod,
4850 .slave = &omap44xx_uart1_hwmod,
4851 .clk = "l4_div_ck",
4852 .addr = omap44xx_uart1_addrs,
4853 .user = OCP_USER_MPU | OCP_USER_SDMA,
4854};
4855
4856static struct omap_hwmod_addr_space omap44xx_uart2_addrs[] = {
4857 {
4858 .pa_start = 0x4806c000,
4859 .pa_end = 0x4806c0ff,
4860 .flags = ADDR_TYPE_RT
4861 },
4862 { }
4863};
4864
4865/* l4_per -> uart2 */
4866static struct omap_hwmod_ocp_if omap44xx_l4_per__uart2 = {
4867 .master = &omap44xx_l4_per_hwmod,
4868 .slave = &omap44xx_uart2_hwmod,
4869 .clk = "l4_div_ck",
4870 .addr = omap44xx_uart2_addrs,
4871 .user = OCP_USER_MPU | OCP_USER_SDMA,
4872};
4873
4874static struct omap_hwmod_addr_space omap44xx_uart3_addrs[] = {
4875 {
4876 .pa_start = 0x48020000,
4877 .pa_end = 0x480200ff,
4878 .flags = ADDR_TYPE_RT
4879 },
4880 { }
4881};
4882
4883/* l4_per -> uart3 */
4884static struct omap_hwmod_ocp_if omap44xx_l4_per__uart3 = {
4885 .master = &omap44xx_l4_per_hwmod,
4886 .slave = &omap44xx_uart3_hwmod,
4887 .clk = "l4_div_ck",
4888 .addr = omap44xx_uart3_addrs,
4889 .user = OCP_USER_MPU | OCP_USER_SDMA,
4890};
4891
4892static struct omap_hwmod_addr_space omap44xx_uart4_addrs[] = {
4893 {
4894 .pa_start = 0x4806e000,
4895 .pa_end = 0x4806e0ff,
4896 .flags = ADDR_TYPE_RT
4897 },
4898 { }
4899};
4900
4901/* l4_per -> uart4 */
4902static struct omap_hwmod_ocp_if omap44xx_l4_per__uart4 = {
4903 .master = &omap44xx_l4_per_hwmod,
4904 .slave = &omap44xx_uart4_hwmod,
4905 .clk = "l4_div_ck",
4906 .addr = omap44xx_uart4_addrs,
4907 .user = OCP_USER_MPU | OCP_USER_SDMA,
4908};
4909
4910static struct omap_hwmod_addr_space omap44xx_usb_host_hs_addrs[] = {
4911 {
4912 .name = "uhh",
4913 .pa_start = 0x4a064000,
4914 .pa_end = 0x4a0647ff,
4915 .flags = ADDR_TYPE_RT
4916 },
4917 {
4918 .name = "ohci",
4919 .pa_start = 0x4a064800,
4920 .pa_end = 0x4a064bff,
4921 },
4922 {
4923 .name = "ehci",
4924 .pa_start = 0x4a064c00,
4925 .pa_end = 0x4a064fff,
4926 },
4927 {}
4928};
4929
4930/* l4_cfg -> usb_host_hs */
4931static struct omap_hwmod_ocp_if omap44xx_l4_cfg__usb_host_hs = {
4932 .master = &omap44xx_l4_cfg_hwmod,
4933 .slave = &omap44xx_usb_host_hs_hwmod,
4934 .clk = "l4_div_ck",
4935 .addr = omap44xx_usb_host_hs_addrs,
4936 .user = OCP_USER_MPU | OCP_USER_SDMA,
4937};
4938
4939static struct omap_hwmod_addr_space omap44xx_usb_otg_hs_addrs[] = {
4940 {
4941 .pa_start = 0x4a0ab000,
4942 .pa_end = 0x4a0ab003,
4943 .flags = ADDR_TYPE_RT
4944 },
4945 { }
4946};
4947
4948/* l4_cfg -> usb_otg_hs */
4949static struct omap_hwmod_ocp_if omap44xx_l4_cfg__usb_otg_hs = {
4950 .master = &omap44xx_l4_cfg_hwmod,
4951 .slave = &omap44xx_usb_otg_hs_hwmod,
4952 .clk = "l4_div_ck",
4953 .addr = omap44xx_usb_otg_hs_addrs,
4954 .user = OCP_USER_MPU | OCP_USER_SDMA,
4955};
4956
Benoit Coussonaf88fa92011-12-15 23:15:18 -07004957static struct omap_hwmod_addr_space omap44xx_usb_tll_hs_addrs[] = {
4958 {
4959 .name = "tll",
4960 .pa_start = 0x4a062000,
4961 .pa_end = 0x4a063fff,
4962 .flags = ADDR_TYPE_RT
4963 },
4964 {}
4965};
4966
Paul Walmsley844a3b62012-04-19 04:04:33 -06004967/* l4_cfg -> usb_tll_hs */
Benoit Coussonaf88fa92011-12-15 23:15:18 -07004968static struct omap_hwmod_ocp_if omap44xx_l4_cfg__usb_tll_hs = {
4969 .master = &omap44xx_l4_cfg_hwmod,
4970 .slave = &omap44xx_usb_tll_hs_hwmod,
4971 .clk = "l4_div_ck",
4972 .addr = omap44xx_usb_tll_hs_addrs,
4973 .user = OCP_USER_MPU | OCP_USER_SDMA,
4974};
4975
Paul Walmsley844a3b62012-04-19 04:04:33 -06004976static struct omap_hwmod_addr_space omap44xx_wd_timer2_addrs[] = {
4977 {
4978 .pa_start = 0x4a314000,
4979 .pa_end = 0x4a31407f,
4980 .flags = ADDR_TYPE_RT
Benoit Coussonaf88fa92011-12-15 23:15:18 -07004981 },
Paul Walmsley844a3b62012-04-19 04:04:33 -06004982 { }
4983};
4984
4985/* l4_wkup -> wd_timer2 */
4986static struct omap_hwmod_ocp_if omap44xx_l4_wkup__wd_timer2 = {
4987 .master = &omap44xx_l4_wkup_hwmod,
4988 .slave = &omap44xx_wd_timer2_hwmod,
4989 .clk = "l4_wkup_clk_mux_ck",
4990 .addr = omap44xx_wd_timer2_addrs,
4991 .user = OCP_USER_MPU | OCP_USER_SDMA,
4992};
4993
4994static struct omap_hwmod_addr_space omap44xx_wd_timer3_addrs[] = {
4995 {
4996 .pa_start = 0x40130000,
4997 .pa_end = 0x4013007f,
4998 .flags = ADDR_TYPE_RT
4999 },
5000 { }
5001};
5002
5003/* l4_abe -> wd_timer3 */
5004static struct omap_hwmod_ocp_if omap44xx_l4_abe__wd_timer3 = {
5005 .master = &omap44xx_l4_abe_hwmod,
5006 .slave = &omap44xx_wd_timer3_hwmod,
5007 .clk = "ocp_abe_iclk",
5008 .addr = omap44xx_wd_timer3_addrs,
5009 .user = OCP_USER_MPU,
5010};
5011
5012static struct omap_hwmod_addr_space omap44xx_wd_timer3_dma_addrs[] = {
5013 {
5014 .pa_start = 0x49030000,
5015 .pa_end = 0x4903007f,
5016 .flags = ADDR_TYPE_RT
5017 },
5018 { }
5019};
5020
5021/* l4_abe -> wd_timer3 (dma) */
5022static struct omap_hwmod_ocp_if omap44xx_l4_abe__wd_timer3_dma = {
5023 .master = &omap44xx_l4_abe_hwmod,
5024 .slave = &omap44xx_wd_timer3_hwmod,
5025 .clk = "ocp_abe_iclk",
5026 .addr = omap44xx_wd_timer3_dma_addrs,
5027 .user = OCP_USER_SDMA,
Benoit Coussonaf88fa92011-12-15 23:15:18 -07005028};
5029
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06005030static struct omap_hwmod_ocp_if *omap44xx_hwmod_ocp_ifs[] __initdata = {
5031 &omap44xx_l3_main_1__dmm,
5032 &omap44xx_mpu__dmm,
5033 &omap44xx_dmm__emif_fw,
5034 &omap44xx_l4_cfg__emif_fw,
5035 &omap44xx_iva__l3_instr,
5036 &omap44xx_l3_main_3__l3_instr,
5037 &omap44xx_dsp__l3_main_1,
5038 &omap44xx_dss__l3_main_1,
5039 &omap44xx_l3_main_2__l3_main_1,
5040 &omap44xx_l4_cfg__l3_main_1,
5041 &omap44xx_mmc1__l3_main_1,
5042 &omap44xx_mmc2__l3_main_1,
5043 &omap44xx_mpu__l3_main_1,
5044 &omap44xx_dma_system__l3_main_2,
Ming Leib050f682012-04-19 13:33:50 -06005045 &omap44xx_fdif__l3_main_2,
Paul Walmsley9def3902012-04-19 13:33:53 -06005046 &omap44xx_gpu__l3_main_2,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06005047 &omap44xx_hsi__l3_main_2,
5048 &omap44xx_ipu__l3_main_2,
5049 &omap44xx_iss__l3_main_2,
5050 &omap44xx_iva__l3_main_2,
5051 &omap44xx_l3_main_1__l3_main_2,
5052 &omap44xx_l4_cfg__l3_main_2,
5053 &omap44xx_usb_host_hs__l3_main_2,
5054 &omap44xx_usb_otg_hs__l3_main_2,
5055 &omap44xx_l3_main_1__l3_main_3,
5056 &omap44xx_l3_main_2__l3_main_3,
5057 &omap44xx_l4_cfg__l3_main_3,
5058 &omap44xx_aess__l4_abe,
5059 &omap44xx_dsp__l4_abe,
5060 &omap44xx_l3_main_1__l4_abe,
5061 &omap44xx_mpu__l4_abe,
5062 &omap44xx_l3_main_1__l4_cfg,
5063 &omap44xx_l3_main_2__l4_per,
5064 &omap44xx_l4_cfg__l4_wkup,
5065 &omap44xx_mpu__mpu_private,
5066 &omap44xx_l4_abe__aess,
5067 &omap44xx_l4_abe__aess_dma,
5068 &omap44xx_l4_wkup__counter_32k,
5069 &omap44xx_l4_cfg__dma_system,
5070 &omap44xx_l4_abe__dmic,
5071 &omap44xx_l4_abe__dmic_dma,
5072 &omap44xx_dsp__iva,
5073 &omap44xx_l4_cfg__dsp,
5074 &omap44xx_l3_main_2__dss,
5075 &omap44xx_l4_per__dss,
5076 &omap44xx_l3_main_2__dss_dispc,
5077 &omap44xx_l4_per__dss_dispc,
5078 &omap44xx_l3_main_2__dss_dsi1,
5079 &omap44xx_l4_per__dss_dsi1,
5080 &omap44xx_l3_main_2__dss_dsi2,
5081 &omap44xx_l4_per__dss_dsi2,
5082 &omap44xx_l3_main_2__dss_hdmi,
5083 &omap44xx_l4_per__dss_hdmi,
5084 &omap44xx_l3_main_2__dss_rfbi,
5085 &omap44xx_l4_per__dss_rfbi,
5086 &omap44xx_l3_main_2__dss_venc,
5087 &omap44xx_l4_per__dss_venc,
Paul Walmsleybf30f952012-04-19 13:33:52 -06005088 &omap44xx_emif_fw__emif1,
5089 &omap44xx_emif_fw__emif2,
Ming Leib050f682012-04-19 13:33:50 -06005090 &omap44xx_l4_cfg__fdif,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06005091 &omap44xx_l4_wkup__gpio1,
5092 &omap44xx_l4_per__gpio2,
5093 &omap44xx_l4_per__gpio3,
5094 &omap44xx_l4_per__gpio4,
5095 &omap44xx_l4_per__gpio5,
5096 &omap44xx_l4_per__gpio6,
BenoƮt Coussoneb42b5d2012-04-19 13:33:51 -06005097 &omap44xx_l3_main_2__gpmc,
Paul Walmsley9def3902012-04-19 13:33:53 -06005098 &omap44xx_l3_main_2__gpu,
Paul Walmsleya091c082012-04-19 13:33:50 -06005099 &omap44xx_l4_per__hdq1w,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06005100 &omap44xx_l4_cfg__hsi,
5101 &omap44xx_l4_per__i2c1,
5102 &omap44xx_l4_per__i2c2,
5103 &omap44xx_l4_per__i2c3,
5104 &omap44xx_l4_per__i2c4,
5105 &omap44xx_l3_main_2__ipu,
5106 &omap44xx_l3_main_2__iss,
5107 &omap44xx_l3_main_2__iva,
5108 &omap44xx_l4_wkup__kbd,
5109 &omap44xx_l4_cfg__mailbox,
5110 &omap44xx_l4_abe__mcbsp1,
5111 &omap44xx_l4_abe__mcbsp1_dma,
5112 &omap44xx_l4_abe__mcbsp2,
5113 &omap44xx_l4_abe__mcbsp2_dma,
5114 &omap44xx_l4_abe__mcbsp3,
5115 &omap44xx_l4_abe__mcbsp3_dma,
5116 &omap44xx_l4_per__mcbsp4,
5117 &omap44xx_l4_abe__mcpdm,
5118 &omap44xx_l4_abe__mcpdm_dma,
5119 &omap44xx_l4_per__mcspi1,
5120 &omap44xx_l4_per__mcspi2,
5121 &omap44xx_l4_per__mcspi3,
5122 &omap44xx_l4_per__mcspi4,
5123 &omap44xx_l4_per__mmc1,
5124 &omap44xx_l4_per__mmc2,
5125 &omap44xx_l4_per__mmc3,
5126 &omap44xx_l4_per__mmc4,
5127 &omap44xx_l4_per__mmc5,
5128 &omap44xx_l4_cfg__smartreflex_core,
5129 &omap44xx_l4_cfg__smartreflex_iva,
5130 &omap44xx_l4_cfg__smartreflex_mpu,
5131 &omap44xx_l4_cfg__spinlock,
5132 &omap44xx_l4_wkup__timer1,
5133 &omap44xx_l4_per__timer2,
5134 &omap44xx_l4_per__timer3,
5135 &omap44xx_l4_per__timer4,
5136 &omap44xx_l4_abe__timer5,
5137 &omap44xx_l4_abe__timer5_dma,
5138 &omap44xx_l4_abe__timer6,
5139 &omap44xx_l4_abe__timer6_dma,
5140 &omap44xx_l4_abe__timer7,
5141 &omap44xx_l4_abe__timer7_dma,
5142 &omap44xx_l4_abe__timer8,
5143 &omap44xx_l4_abe__timer8_dma,
5144 &omap44xx_l4_per__timer9,
5145 &omap44xx_l4_per__timer10,
5146 &omap44xx_l4_per__timer11,
5147 &omap44xx_l4_per__uart1,
5148 &omap44xx_l4_per__uart2,
5149 &omap44xx_l4_per__uart3,
5150 &omap44xx_l4_per__uart4,
5151 &omap44xx_l4_cfg__usb_host_hs,
5152 &omap44xx_l4_cfg__usb_otg_hs,
5153 &omap44xx_l4_cfg__usb_tll_hs,
5154 &omap44xx_l4_wkup__wd_timer2,
5155 &omap44xx_l4_abe__wd_timer3,
5156 &omap44xx_l4_abe__wd_timer3_dma,
Benoit Cousson55d2cb02010-05-12 17:54:36 +02005157 NULL,
5158};
5159
5160int __init omap44xx_hwmod_init(void)
5161{
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06005162 return omap_hwmod_register_links(omap44xx_hwmod_ocp_ifs);
Benoit Cousson55d2cb02010-05-12 17:54:36 +02005163}
5164