blob: 0d91dec5b4bc1b8f23fb412d2b6b1172b5e3c444 [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
264 * emif1
265 * emif2
266 * fdif
267 * gpmc
268 * gpu
269 * hdq1w
Benoit Cousson00fe6102011-07-09 19:14:28 -0600270 * mcasp
271 * mpu_c0
272 * mpu_c1
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700273 * ocmc_ram
274 * ocp2scp_usb_phy
275 * ocp_wp_noc
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700276 * prcm_mpu
277 * prm
278 * scrm
279 * sl2if
280 * slimbus1
281 * slimbus2
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700282 * usb_host_fs
283 * usb_host_hs
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700284 * usb_phy_cm
285 * usb_tll_hs
286 * usim
287 */
288
289/*
Benoit Cousson407a6882011-02-15 22:39:48 +0100290 * 'aess' class
291 * audio engine sub system
292 */
293
294static struct omap_hwmod_class_sysconfig omap44xx_aess_sysc = {
295 .rev_offs = 0x0000,
296 .sysc_offs = 0x0010,
297 .sysc_flags = (SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE),
298 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
Benoit Coussonc614ebf2011-07-01 22:54:01 +0200299 MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART |
300 MSTANDBY_SMART_WKUP),
Benoit Cousson407a6882011-02-15 22:39:48 +0100301 .sysc_fields = &omap_hwmod_sysc_type2,
302};
303
304static struct omap_hwmod_class omap44xx_aess_hwmod_class = {
305 .name = "aess",
306 .sysc = &omap44xx_aess_sysc,
307};
308
309/* aess */
310static struct omap_hwmod_irq_info omap44xx_aess_irqs[] = {
311 { .irq = 99 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -0600312 { .irq = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +0100313};
314
315static struct omap_hwmod_dma_info omap44xx_aess_sdma_reqs[] = {
316 { .name = "fifo0", .dma_req = 100 + OMAP44XX_DMA_REQ_START },
317 { .name = "fifo1", .dma_req = 101 + OMAP44XX_DMA_REQ_START },
318 { .name = "fifo2", .dma_req = 102 + OMAP44XX_DMA_REQ_START },
319 { .name = "fifo3", .dma_req = 103 + OMAP44XX_DMA_REQ_START },
320 { .name = "fifo4", .dma_req = 104 + OMAP44XX_DMA_REQ_START },
321 { .name = "fifo5", .dma_req = 105 + OMAP44XX_DMA_REQ_START },
322 { .name = "fifo6", .dma_req = 106 + OMAP44XX_DMA_REQ_START },
323 { .name = "fifo7", .dma_req = 107 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -0600324 { .dma_req = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +0100325};
326
Benoit Cousson407a6882011-02-15 22:39:48 +0100327static struct omap_hwmod omap44xx_aess_hwmod = {
328 .name = "aess",
329 .class = &omap44xx_aess_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600330 .clkdm_name = "abe_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +0100331 .mpu_irqs = omap44xx_aess_irqs,
Benoit Cousson407a6882011-02-15 22:39:48 +0100332 .sdma_reqs = omap44xx_aess_sdma_reqs,
Benoit Cousson407a6882011-02-15 22:39:48 +0100333 .main_clk = "aess_fck",
Benoit Cousson00fe6102011-07-09 19:14:28 -0600334 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +0100335 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600336 .clkctrl_offs = OMAP4_CM1_ABE_AESS_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600337 .context_offs = OMAP4_RM_ABE_AESS_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -0600338 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +0100339 },
340 },
Benoit Cousson407a6882011-02-15 22:39:48 +0100341};
342
343/*
Benoit Cousson407a6882011-02-15 22:39:48 +0100344 * 'counter' class
345 * 32-bit ordinary counter, clocked by the falling edge of the 32 khz clock
346 */
347
348static struct omap_hwmod_class_sysconfig omap44xx_counter_sysc = {
349 .rev_offs = 0x0000,
350 .sysc_offs = 0x0004,
351 .sysc_flags = SYSC_HAS_SIDLEMODE,
352 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
353 SIDLE_SMART_WKUP),
354 .sysc_fields = &omap_hwmod_sysc_type1,
355};
356
357static struct omap_hwmod_class omap44xx_counter_hwmod_class = {
358 .name = "counter",
359 .sysc = &omap44xx_counter_sysc,
360};
361
362/* counter_32k */
Benoit Cousson407a6882011-02-15 22:39:48 +0100363static struct omap_hwmod omap44xx_counter_32k_hwmod = {
364 .name = "counter_32k",
365 .class = &omap44xx_counter_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600366 .clkdm_name = "l4_wkup_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +0100367 .flags = HWMOD_SWSUP_SIDLE,
368 .main_clk = "sys_32k_ck",
Benoit Cousson00fe6102011-07-09 19:14:28 -0600369 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +0100370 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600371 .clkctrl_offs = OMAP4_CM_WKUP_SYNCTIMER_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600372 .context_offs = OMAP4_RM_WKUP_SYNCTIMER_CONTEXT_OFFSET,
Benoit Cousson407a6882011-02-15 22:39:48 +0100373 },
374 },
Benoit Cousson407a6882011-02-15 22:39:48 +0100375};
376
377/*
Benoit Coussond7cf5f32010-12-23 22:30:31 +0000378 * 'dma' class
379 * dma controller for data exchange between memory to memory (i.e. internal or
380 * external memory) and gp peripherals to memory or memory to gp peripherals
381 */
382
383static struct omap_hwmod_class_sysconfig omap44xx_dma_sysc = {
384 .rev_offs = 0x0000,
385 .sysc_offs = 0x002c,
386 .syss_offs = 0x0028,
387 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
388 SYSC_HAS_EMUFREE | SYSC_HAS_MIDLEMODE |
389 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
390 SYSS_HAS_RESET_STATUS),
391 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
392 MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
393 .sysc_fields = &omap_hwmod_sysc_type1,
394};
395
396static struct omap_hwmod_class omap44xx_dma_hwmod_class = {
397 .name = "dma",
398 .sysc = &omap44xx_dma_sysc,
399};
400
401/* dma dev_attr */
402static struct omap_dma_dev_attr dma_dev_attr = {
403 .dev_caps = RESERVE_CHANNEL | DMA_LINKED_LCH | GLOBAL_PRIORITY |
404 IS_CSSA_32 | IS_CDSA_32 | IS_RW_PRIORITY,
405 .lch_count = 32,
406};
407
408/* dma_system */
409static struct omap_hwmod_irq_info omap44xx_dma_system_irqs[] = {
410 { .name = "0", .irq = 12 + OMAP44XX_IRQ_GIC_START },
411 { .name = "1", .irq = 13 + OMAP44XX_IRQ_GIC_START },
412 { .name = "2", .irq = 14 + OMAP44XX_IRQ_GIC_START },
413 { .name = "3", .irq = 15 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -0600414 { .irq = -1 }
Benoit Coussond7cf5f32010-12-23 22:30:31 +0000415};
416
Benoit Coussond7cf5f32010-12-23 22:30:31 +0000417static struct omap_hwmod omap44xx_dma_system_hwmod = {
418 .name = "dma_system",
419 .class = &omap44xx_dma_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600420 .clkdm_name = "l3_dma_clkdm",
Benoit Coussond7cf5f32010-12-23 22:30:31 +0000421 .mpu_irqs = omap44xx_dma_system_irqs,
Benoit Coussond7cf5f32010-12-23 22:30:31 +0000422 .main_clk = "l3_div_ck",
423 .prcm = {
424 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600425 .clkctrl_offs = OMAP4_CM_SDMA_SDMA_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600426 .context_offs = OMAP4_RM_SDMA_SDMA_CONTEXT_OFFSET,
Benoit Coussond7cf5f32010-12-23 22:30:31 +0000427 },
428 },
429 .dev_attr = &dma_dev_attr,
Benoit Coussond7cf5f32010-12-23 22:30:31 +0000430};
431
432/*
Benoit Cousson8ca476d2011-01-25 22:01:00 +0000433 * 'dmic' class
434 * digital microphone controller
435 */
436
437static struct omap_hwmod_class_sysconfig omap44xx_dmic_sysc = {
438 .rev_offs = 0x0000,
439 .sysc_offs = 0x0010,
440 .sysc_flags = (SYSC_HAS_EMUFREE | SYSC_HAS_RESET_STATUS |
441 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
442 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
443 SIDLE_SMART_WKUP),
444 .sysc_fields = &omap_hwmod_sysc_type2,
445};
446
447static struct omap_hwmod_class omap44xx_dmic_hwmod_class = {
448 .name = "dmic",
449 .sysc = &omap44xx_dmic_sysc,
450};
451
452/* dmic */
Benoit Cousson8ca476d2011-01-25 22:01:00 +0000453static struct omap_hwmod_irq_info omap44xx_dmic_irqs[] = {
454 { .irq = 114 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -0600455 { .irq = -1 }
Benoit Cousson8ca476d2011-01-25 22:01:00 +0000456};
457
458static struct omap_hwmod_dma_info omap44xx_dmic_sdma_reqs[] = {
459 { .dma_req = 66 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -0600460 { .dma_req = -1 }
Benoit Cousson8ca476d2011-01-25 22:01:00 +0000461};
462
Benoit Cousson8ca476d2011-01-25 22:01:00 +0000463static struct omap_hwmod omap44xx_dmic_hwmod = {
464 .name = "dmic",
465 .class = &omap44xx_dmic_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600466 .clkdm_name = "abe_clkdm",
Benoit Cousson8ca476d2011-01-25 22:01:00 +0000467 .mpu_irqs = omap44xx_dmic_irqs,
Benoit Cousson8ca476d2011-01-25 22:01:00 +0000468 .sdma_reqs = omap44xx_dmic_sdma_reqs,
Benoit Cousson8ca476d2011-01-25 22:01:00 +0000469 .main_clk = "dmic_fck",
Benoit Cousson00fe6102011-07-09 19:14:28 -0600470 .prcm = {
Benoit Cousson8ca476d2011-01-25 22:01:00 +0000471 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600472 .clkctrl_offs = OMAP4_CM1_ABE_DMIC_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600473 .context_offs = OMAP4_RM_ABE_DMIC_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -0600474 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson8ca476d2011-01-25 22:01:00 +0000475 },
476 },
Benoit Cousson8ca476d2011-01-25 22:01:00 +0000477};
478
479/*
Benoit Cousson8f25bdc2010-12-21 21:08:34 -0700480 * 'dsp' class
481 * dsp sub-system
482 */
483
484static struct omap_hwmod_class omap44xx_dsp_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +0000485 .name = "dsp",
Benoit Cousson8f25bdc2010-12-21 21:08:34 -0700486};
487
488/* dsp */
489static struct omap_hwmod_irq_info omap44xx_dsp_irqs[] = {
490 { .irq = 28 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -0600491 { .irq = -1 }
Benoit Cousson8f25bdc2010-12-21 21:08:34 -0700492};
493
494static struct omap_hwmod_rst_info omap44xx_dsp_resets[] = {
Benoit Cousson8f25bdc2010-12-21 21:08:34 -0700495 { .name = "dsp", .rst_shift = 0 },
Paul Walmsleyf2f57362012-04-18 19:10:02 -0600496 { .name = "mmu_cache", .rst_shift = 1 },
Benoit Cousson8f25bdc2010-12-21 21:08:34 -0700497};
498
Benoit Cousson8f25bdc2010-12-21 21:08:34 -0700499static struct omap_hwmod omap44xx_dsp_hwmod = {
500 .name = "dsp",
501 .class = &omap44xx_dsp_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600502 .clkdm_name = "tesla_clkdm",
Benoit Cousson8f25bdc2010-12-21 21:08:34 -0700503 .mpu_irqs = omap44xx_dsp_irqs,
Benoit Cousson8f25bdc2010-12-21 21:08:34 -0700504 .rst_lines = omap44xx_dsp_resets,
505 .rst_lines_cnt = ARRAY_SIZE(omap44xx_dsp_resets),
506 .main_clk = "dsp_fck",
507 .prcm = {
508 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600509 .clkctrl_offs = OMAP4_CM_TESLA_TESLA_CLKCTRL_OFFSET,
Benoit Coussoneaac3292011-07-10 05:56:31 -0600510 .rstctrl_offs = OMAP4_RM_TESLA_RSTCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600511 .context_offs = OMAP4_RM_TESLA_TESLA_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -0600512 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson8f25bdc2010-12-21 21:08:34 -0700513 },
514 },
Benoit Cousson8f25bdc2010-12-21 21:08:34 -0700515};
516
517/*
Benoit Coussond63bd742011-01-27 11:17:03 +0000518 * 'dss' class
519 * display sub-system
520 */
521
522static struct omap_hwmod_class_sysconfig omap44xx_dss_sysc = {
523 .rev_offs = 0x0000,
524 .syss_offs = 0x0014,
525 .sysc_flags = SYSS_HAS_RESET_STATUS,
526};
527
528static struct omap_hwmod_class omap44xx_dss_hwmod_class = {
529 .name = "dss",
530 .sysc = &omap44xx_dss_sysc,
Tomi Valkeinen13662dc2011-11-08 03:16:13 -0700531 .reset = omap_dss_reset,
Benoit Coussond63bd742011-01-27 11:17:03 +0000532};
533
534/* dss */
Benoit Coussond63bd742011-01-27 11:17:03 +0000535static struct omap_hwmod_opt_clk dss_opt_clks[] = {
536 { .role = "sys_clk", .clk = "dss_sys_clk" },
537 { .role = "tv_clk", .clk = "dss_tv_clk" },
Tomi Valkeinen4d0698d2011-11-08 03:16:12 -0700538 { .role = "hdmi_clk", .clk = "dss_48mhz_clk" },
Benoit Coussond63bd742011-01-27 11:17:03 +0000539};
540
541static struct omap_hwmod omap44xx_dss_hwmod = {
542 .name = "dss_core",
Tomi Valkeinen37ad0852011-11-08 03:16:11 -0700543 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
Benoit Coussond63bd742011-01-27 11:17:03 +0000544 .class = &omap44xx_dss_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600545 .clkdm_name = "l3_dss_clkdm",
Tomi Valkeinenda7cdfa2011-07-09 20:39:45 -0600546 .main_clk = "dss_dss_clk",
Benoit Coussond63bd742011-01-27 11:17:03 +0000547 .prcm = {
548 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600549 .clkctrl_offs = OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600550 .context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET,
Benoit Coussond63bd742011-01-27 11:17:03 +0000551 },
552 },
553 .opt_clks = dss_opt_clks,
554 .opt_clks_cnt = ARRAY_SIZE(dss_opt_clks),
Benoit Coussond63bd742011-01-27 11:17:03 +0000555};
556
557/*
558 * 'dispc' class
559 * display controller
560 */
561
562static struct omap_hwmod_class_sysconfig omap44xx_dispc_sysc = {
563 .rev_offs = 0x0000,
564 .sysc_offs = 0x0010,
565 .syss_offs = 0x0014,
566 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
567 SYSC_HAS_ENAWAKEUP | SYSC_HAS_MIDLEMODE |
568 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
569 SYSS_HAS_RESET_STATUS),
570 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
571 MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
572 .sysc_fields = &omap_hwmod_sysc_type1,
573};
574
575static struct omap_hwmod_class omap44xx_dispc_hwmod_class = {
576 .name = "dispc",
577 .sysc = &omap44xx_dispc_sysc,
578};
579
580/* dss_dispc */
Benoit Coussond63bd742011-01-27 11:17:03 +0000581static struct omap_hwmod_irq_info omap44xx_dss_dispc_irqs[] = {
582 { .irq = 25 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -0600583 { .irq = -1 }
Benoit Coussond63bd742011-01-27 11:17:03 +0000584};
585
586static struct omap_hwmod_dma_info omap44xx_dss_dispc_sdma_reqs[] = {
587 { .dma_req = 5 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -0600588 { .dma_req = -1 }
Benoit Coussond63bd742011-01-27 11:17:03 +0000589};
590
Archit Tanejab923d402011-10-06 18:04:08 -0600591static struct omap_dss_dispc_dev_attr omap44xx_dss_dispc_dev_attr = {
592 .manager_count = 3,
593 .has_framedonetv_irq = 1
594};
595
Benoit Coussond63bd742011-01-27 11:17:03 +0000596static struct omap_hwmod omap44xx_dss_dispc_hwmod = {
597 .name = "dss_dispc",
598 .class = &omap44xx_dispc_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600599 .clkdm_name = "l3_dss_clkdm",
Benoit Coussond63bd742011-01-27 11:17:03 +0000600 .mpu_irqs = omap44xx_dss_dispc_irqs,
Benoit Coussond63bd742011-01-27 11:17:03 +0000601 .sdma_reqs = omap44xx_dss_dispc_sdma_reqs,
Tomi Valkeinenda7cdfa2011-07-09 20:39:45 -0600602 .main_clk = "dss_dss_clk",
Benoit Coussond63bd742011-01-27 11:17:03 +0000603 .prcm = {
604 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600605 .clkctrl_offs = OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600606 .context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET,
Benoit Coussond63bd742011-01-27 11:17:03 +0000607 },
608 },
Archit Tanejab923d402011-10-06 18:04:08 -0600609 .dev_attr = &omap44xx_dss_dispc_dev_attr
Benoit Coussond63bd742011-01-27 11:17:03 +0000610};
611
612/*
613 * 'dsi' class
614 * display serial interface controller
615 */
616
617static struct omap_hwmod_class_sysconfig omap44xx_dsi_sysc = {
618 .rev_offs = 0x0000,
619 .sysc_offs = 0x0010,
620 .syss_offs = 0x0014,
621 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
622 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE |
623 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
624 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
625 .sysc_fields = &omap_hwmod_sysc_type1,
626};
627
628static struct omap_hwmod_class omap44xx_dsi_hwmod_class = {
629 .name = "dsi",
630 .sysc = &omap44xx_dsi_sysc,
631};
632
633/* dss_dsi1 */
Benoit Coussond63bd742011-01-27 11:17:03 +0000634static struct omap_hwmod_irq_info omap44xx_dss_dsi1_irqs[] = {
635 { .irq = 53 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -0600636 { .irq = -1 }
Benoit Coussond63bd742011-01-27 11:17:03 +0000637};
638
639static struct omap_hwmod_dma_info omap44xx_dss_dsi1_sdma_reqs[] = {
640 { .dma_req = 74 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -0600641 { .dma_req = -1 }
Benoit Coussond63bd742011-01-27 11:17:03 +0000642};
643
Tomi Valkeinen3a23aaf2011-07-09 20:39:44 -0600644static struct omap_hwmod_opt_clk dss_dsi1_opt_clks[] = {
645 { .role = "sys_clk", .clk = "dss_sys_clk" },
646};
647
Benoit Coussond63bd742011-01-27 11:17:03 +0000648static struct omap_hwmod omap44xx_dss_dsi1_hwmod = {
649 .name = "dss_dsi1",
650 .class = &omap44xx_dsi_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600651 .clkdm_name = "l3_dss_clkdm",
Benoit Coussond63bd742011-01-27 11:17:03 +0000652 .mpu_irqs = omap44xx_dss_dsi1_irqs,
Benoit Coussond63bd742011-01-27 11:17:03 +0000653 .sdma_reqs = omap44xx_dss_dsi1_sdma_reqs,
Tomi Valkeinenda7cdfa2011-07-09 20:39:45 -0600654 .main_clk = "dss_dss_clk",
Benoit Coussond63bd742011-01-27 11:17:03 +0000655 .prcm = {
656 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600657 .clkctrl_offs = OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600658 .context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET,
Benoit Coussond63bd742011-01-27 11:17:03 +0000659 },
660 },
Tomi Valkeinen3a23aaf2011-07-09 20:39:44 -0600661 .opt_clks = dss_dsi1_opt_clks,
662 .opt_clks_cnt = ARRAY_SIZE(dss_dsi1_opt_clks),
Benoit Coussond63bd742011-01-27 11:17:03 +0000663};
664
665/* dss_dsi2 */
Benoit Coussond63bd742011-01-27 11:17:03 +0000666static struct omap_hwmod_irq_info omap44xx_dss_dsi2_irqs[] = {
667 { .irq = 84 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -0600668 { .irq = -1 }
Benoit Coussond63bd742011-01-27 11:17:03 +0000669};
670
671static struct omap_hwmod_dma_info omap44xx_dss_dsi2_sdma_reqs[] = {
672 { .dma_req = 83 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -0600673 { .dma_req = -1 }
Benoit Coussond63bd742011-01-27 11:17:03 +0000674};
675
Tomi Valkeinen3a23aaf2011-07-09 20:39:44 -0600676static struct omap_hwmod_opt_clk dss_dsi2_opt_clks[] = {
677 { .role = "sys_clk", .clk = "dss_sys_clk" },
678};
679
Benoit Coussond63bd742011-01-27 11:17:03 +0000680static struct omap_hwmod omap44xx_dss_dsi2_hwmod = {
681 .name = "dss_dsi2",
682 .class = &omap44xx_dsi_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600683 .clkdm_name = "l3_dss_clkdm",
Benoit Coussond63bd742011-01-27 11:17:03 +0000684 .mpu_irqs = omap44xx_dss_dsi2_irqs,
Benoit Coussond63bd742011-01-27 11:17:03 +0000685 .sdma_reqs = omap44xx_dss_dsi2_sdma_reqs,
Tomi Valkeinenda7cdfa2011-07-09 20:39:45 -0600686 .main_clk = "dss_dss_clk",
Benoit Coussond63bd742011-01-27 11:17:03 +0000687 .prcm = {
688 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600689 .clkctrl_offs = OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600690 .context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET,
Benoit Coussond63bd742011-01-27 11:17:03 +0000691 },
692 },
Tomi Valkeinen3a23aaf2011-07-09 20:39:44 -0600693 .opt_clks = dss_dsi2_opt_clks,
694 .opt_clks_cnt = ARRAY_SIZE(dss_dsi2_opt_clks),
Benoit Coussond63bd742011-01-27 11:17:03 +0000695};
696
697/*
698 * 'hdmi' class
699 * hdmi controller
700 */
701
702static struct omap_hwmod_class_sysconfig omap44xx_hdmi_sysc = {
703 .rev_offs = 0x0000,
704 .sysc_offs = 0x0010,
705 .sysc_flags = (SYSC_HAS_RESET_STATUS | SYSC_HAS_SIDLEMODE |
706 SYSC_HAS_SOFTRESET),
707 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
708 SIDLE_SMART_WKUP),
709 .sysc_fields = &omap_hwmod_sysc_type2,
710};
711
712static struct omap_hwmod_class omap44xx_hdmi_hwmod_class = {
713 .name = "hdmi",
714 .sysc = &omap44xx_hdmi_sysc,
715};
716
717/* dss_hdmi */
Benoit Coussond63bd742011-01-27 11:17:03 +0000718static struct omap_hwmod_irq_info omap44xx_dss_hdmi_irqs[] = {
719 { .irq = 101 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -0600720 { .irq = -1 }
Benoit Coussond63bd742011-01-27 11:17:03 +0000721};
722
723static struct omap_hwmod_dma_info omap44xx_dss_hdmi_sdma_reqs[] = {
724 { .dma_req = 75 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -0600725 { .dma_req = -1 }
Benoit Coussond63bd742011-01-27 11:17:03 +0000726};
727
Tomi Valkeinen3a23aaf2011-07-09 20:39:44 -0600728static struct omap_hwmod_opt_clk dss_hdmi_opt_clks[] = {
729 { .role = "sys_clk", .clk = "dss_sys_clk" },
730};
731
Benoit Coussond63bd742011-01-27 11:17:03 +0000732static struct omap_hwmod omap44xx_dss_hdmi_hwmod = {
733 .name = "dss_hdmi",
734 .class = &omap44xx_hdmi_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600735 .clkdm_name = "l3_dss_clkdm",
Benoit Coussond63bd742011-01-27 11:17:03 +0000736 .mpu_irqs = omap44xx_dss_hdmi_irqs,
Benoit Coussond63bd742011-01-27 11:17:03 +0000737 .sdma_reqs = omap44xx_dss_hdmi_sdma_reqs,
Tomi Valkeinen4d0698d2011-11-08 03:16:12 -0700738 .main_clk = "dss_48mhz_clk",
Benoit Coussond63bd742011-01-27 11:17:03 +0000739 .prcm = {
740 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600741 .clkctrl_offs = OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600742 .context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET,
Benoit Coussond63bd742011-01-27 11:17:03 +0000743 },
744 },
Tomi Valkeinen3a23aaf2011-07-09 20:39:44 -0600745 .opt_clks = dss_hdmi_opt_clks,
746 .opt_clks_cnt = ARRAY_SIZE(dss_hdmi_opt_clks),
Benoit Coussond63bd742011-01-27 11:17:03 +0000747};
748
749/*
750 * 'rfbi' class
751 * remote frame buffer interface
752 */
753
754static struct omap_hwmod_class_sysconfig omap44xx_rfbi_sysc = {
755 .rev_offs = 0x0000,
756 .sysc_offs = 0x0010,
757 .syss_offs = 0x0014,
758 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_SIDLEMODE |
759 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
760 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
761 .sysc_fields = &omap_hwmod_sysc_type1,
762};
763
764static struct omap_hwmod_class omap44xx_rfbi_hwmod_class = {
765 .name = "rfbi",
766 .sysc = &omap44xx_rfbi_sysc,
767};
768
769/* dss_rfbi */
Benoit Coussond63bd742011-01-27 11:17:03 +0000770static struct omap_hwmod_dma_info omap44xx_dss_rfbi_sdma_reqs[] = {
771 { .dma_req = 13 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -0600772 { .dma_req = -1 }
Benoit Coussond63bd742011-01-27 11:17:03 +0000773};
774
Tomi Valkeinen3a23aaf2011-07-09 20:39:44 -0600775static struct omap_hwmod_opt_clk dss_rfbi_opt_clks[] = {
776 { .role = "ick", .clk = "dss_fck" },
777};
778
Benoit Coussond63bd742011-01-27 11:17:03 +0000779static struct omap_hwmod omap44xx_dss_rfbi_hwmod = {
780 .name = "dss_rfbi",
781 .class = &omap44xx_rfbi_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600782 .clkdm_name = "l3_dss_clkdm",
Benoit Coussond63bd742011-01-27 11:17:03 +0000783 .sdma_reqs = omap44xx_dss_rfbi_sdma_reqs,
Tomi Valkeinenda7cdfa2011-07-09 20:39:45 -0600784 .main_clk = "dss_dss_clk",
Benoit Coussond63bd742011-01-27 11:17:03 +0000785 .prcm = {
786 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600787 .clkctrl_offs = OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600788 .context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET,
Benoit Coussond63bd742011-01-27 11:17:03 +0000789 },
790 },
Tomi Valkeinen3a23aaf2011-07-09 20:39:44 -0600791 .opt_clks = dss_rfbi_opt_clks,
792 .opt_clks_cnt = ARRAY_SIZE(dss_rfbi_opt_clks),
Benoit Coussond63bd742011-01-27 11:17:03 +0000793};
794
795/*
796 * 'venc' class
797 * video encoder
798 */
799
800static struct omap_hwmod_class omap44xx_venc_hwmod_class = {
801 .name = "venc",
802};
803
804/* dss_venc */
Benoit Coussond63bd742011-01-27 11:17:03 +0000805static struct omap_hwmod omap44xx_dss_venc_hwmod = {
806 .name = "dss_venc",
807 .class = &omap44xx_venc_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600808 .clkdm_name = "l3_dss_clkdm",
Tomi Valkeinen4d0698d2011-11-08 03:16:12 -0700809 .main_clk = "dss_tv_clk",
Benoit Coussond63bd742011-01-27 11:17:03 +0000810 .prcm = {
811 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600812 .clkctrl_offs = OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600813 .context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET,
Benoit Coussond63bd742011-01-27 11:17:03 +0000814 },
815 },
Benoit Coussond63bd742011-01-27 11:17:03 +0000816};
817
818/*
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700819 * 'gpio' class
820 * general purpose io module
821 */
822
823static struct omap_hwmod_class_sysconfig omap44xx_gpio_sysc = {
824 .rev_offs = 0x0000,
825 .sysc_offs = 0x0010,
826 .syss_offs = 0x0114,
Benoit Cousson0cfe8752010-12-21 21:08:33 -0700827 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_ENAWAKEUP |
828 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
829 SYSS_HAS_RESET_STATUS),
Benoit Cousson7cffa6b2010-12-21 21:31:28 -0700830 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
831 SIDLE_SMART_WKUP),
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700832 .sysc_fields = &omap_hwmod_sysc_type1,
833};
834
835static struct omap_hwmod_class omap44xx_gpio_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +0000836 .name = "gpio",
837 .sysc = &omap44xx_gpio_sysc,
838 .rev = 2,
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700839};
840
841/* gpio dev_attr */
842static struct omap_gpio_dev_attr gpio_dev_attr = {
Benoit Coussonfe134712010-12-23 22:30:32 +0000843 .bank_width = 32,
844 .dbck_flag = true,
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700845};
846
847/* gpio1 */
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700848static struct omap_hwmod_irq_info omap44xx_gpio1_irqs[] = {
849 { .irq = 29 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -0600850 { .irq = -1 }
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700851};
852
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700853static struct omap_hwmod_opt_clk gpio1_opt_clks[] = {
Benoit Coussonb399bca2010-12-21 21:08:34 -0700854 { .role = "dbclk", .clk = "gpio1_dbclk" },
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700855};
856
857static struct omap_hwmod omap44xx_gpio1_hwmod = {
858 .name = "gpio1",
859 .class = &omap44xx_gpio_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600860 .clkdm_name = "l4_wkup_clkdm",
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700861 .mpu_irqs = omap44xx_gpio1_irqs,
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700862 .main_clk = "gpio1_ick",
863 .prcm = {
864 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600865 .clkctrl_offs = OMAP4_CM_WKUP_GPIO1_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600866 .context_offs = OMAP4_RM_WKUP_GPIO1_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -0600867 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700868 },
869 },
870 .opt_clks = gpio1_opt_clks,
871 .opt_clks_cnt = ARRAY_SIZE(gpio1_opt_clks),
872 .dev_attr = &gpio_dev_attr,
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700873};
874
875/* gpio2 */
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700876static struct omap_hwmod_irq_info omap44xx_gpio2_irqs[] = {
877 { .irq = 30 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -0600878 { .irq = -1 }
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700879};
880
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700881static struct omap_hwmod_opt_clk gpio2_opt_clks[] = {
Benoit Coussonb399bca2010-12-21 21:08:34 -0700882 { .role = "dbclk", .clk = "gpio2_dbclk" },
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700883};
884
885static struct omap_hwmod omap44xx_gpio2_hwmod = {
886 .name = "gpio2",
887 .class = &omap44xx_gpio_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600888 .clkdm_name = "l4_per_clkdm",
Benoit Coussonb399bca2010-12-21 21:08:34 -0700889 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700890 .mpu_irqs = omap44xx_gpio2_irqs,
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700891 .main_clk = "gpio2_ick",
892 .prcm = {
893 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600894 .clkctrl_offs = OMAP4_CM_L4PER_GPIO2_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600895 .context_offs = OMAP4_RM_L4PER_GPIO2_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -0600896 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700897 },
898 },
899 .opt_clks = gpio2_opt_clks,
900 .opt_clks_cnt = ARRAY_SIZE(gpio2_opt_clks),
901 .dev_attr = &gpio_dev_attr,
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700902};
903
904/* gpio3 */
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700905static struct omap_hwmod_irq_info omap44xx_gpio3_irqs[] = {
906 { .irq = 31 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -0600907 { .irq = -1 }
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700908};
909
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700910static struct omap_hwmod_opt_clk gpio3_opt_clks[] = {
Benoit Coussonb399bca2010-12-21 21:08:34 -0700911 { .role = "dbclk", .clk = "gpio3_dbclk" },
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700912};
913
914static struct omap_hwmod omap44xx_gpio3_hwmod = {
915 .name = "gpio3",
916 .class = &omap44xx_gpio_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600917 .clkdm_name = "l4_per_clkdm",
Benoit Coussonb399bca2010-12-21 21:08:34 -0700918 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700919 .mpu_irqs = omap44xx_gpio3_irqs,
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700920 .main_clk = "gpio3_ick",
921 .prcm = {
922 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600923 .clkctrl_offs = OMAP4_CM_L4PER_GPIO3_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600924 .context_offs = OMAP4_RM_L4PER_GPIO3_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -0600925 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700926 },
927 },
928 .opt_clks = gpio3_opt_clks,
929 .opt_clks_cnt = ARRAY_SIZE(gpio3_opt_clks),
930 .dev_attr = &gpio_dev_attr,
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700931};
932
933/* gpio4 */
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700934static struct omap_hwmod_irq_info omap44xx_gpio4_irqs[] = {
935 { .irq = 32 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -0600936 { .irq = -1 }
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700937};
938
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700939static struct omap_hwmod_opt_clk gpio4_opt_clks[] = {
Benoit Coussonb399bca2010-12-21 21:08:34 -0700940 { .role = "dbclk", .clk = "gpio4_dbclk" },
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700941};
942
943static struct omap_hwmod omap44xx_gpio4_hwmod = {
944 .name = "gpio4",
945 .class = &omap44xx_gpio_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600946 .clkdm_name = "l4_per_clkdm",
Benoit Coussonb399bca2010-12-21 21:08:34 -0700947 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700948 .mpu_irqs = omap44xx_gpio4_irqs,
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700949 .main_clk = "gpio4_ick",
950 .prcm = {
951 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600952 .clkctrl_offs = OMAP4_CM_L4PER_GPIO4_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600953 .context_offs = OMAP4_RM_L4PER_GPIO4_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -0600954 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700955 },
956 },
957 .opt_clks = gpio4_opt_clks,
958 .opt_clks_cnt = ARRAY_SIZE(gpio4_opt_clks),
959 .dev_attr = &gpio_dev_attr,
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700960};
961
962/* gpio5 */
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700963static struct omap_hwmod_irq_info omap44xx_gpio5_irqs[] = {
964 { .irq = 33 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -0600965 { .irq = -1 }
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700966};
967
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700968static struct omap_hwmod_opt_clk gpio5_opt_clks[] = {
Benoit Coussonb399bca2010-12-21 21:08:34 -0700969 { .role = "dbclk", .clk = "gpio5_dbclk" },
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700970};
971
972static struct omap_hwmod omap44xx_gpio5_hwmod = {
973 .name = "gpio5",
974 .class = &omap44xx_gpio_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600975 .clkdm_name = "l4_per_clkdm",
Benoit Coussonb399bca2010-12-21 21:08:34 -0700976 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700977 .mpu_irqs = omap44xx_gpio5_irqs,
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700978 .main_clk = "gpio5_ick",
979 .prcm = {
980 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600981 .clkctrl_offs = OMAP4_CM_L4PER_GPIO5_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600982 .context_offs = OMAP4_RM_L4PER_GPIO5_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -0600983 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700984 },
985 },
986 .opt_clks = gpio5_opt_clks,
987 .opt_clks_cnt = ARRAY_SIZE(gpio5_opt_clks),
988 .dev_attr = &gpio_dev_attr,
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700989};
990
991/* gpio6 */
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700992static struct omap_hwmod_irq_info omap44xx_gpio6_irqs[] = {
993 { .irq = 34 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -0600994 { .irq = -1 }
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700995};
996
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700997static struct omap_hwmod_opt_clk gpio6_opt_clks[] = {
Benoit Coussonb399bca2010-12-21 21:08:34 -0700998 { .role = "dbclk", .clk = "gpio6_dbclk" },
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700999};
1000
1001static struct omap_hwmod omap44xx_gpio6_hwmod = {
1002 .name = "gpio6",
1003 .class = &omap44xx_gpio_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001004 .clkdm_name = "l4_per_clkdm",
Benoit Coussonb399bca2010-12-21 21:08:34 -07001005 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001006 .mpu_irqs = omap44xx_gpio6_irqs,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001007 .main_clk = "gpio6_ick",
1008 .prcm = {
1009 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001010 .clkctrl_offs = OMAP4_CM_L4PER_GPIO6_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001011 .context_offs = OMAP4_RM_L4PER_GPIO6_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001012 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001013 },
1014 },
1015 .opt_clks = gpio6_opt_clks,
1016 .opt_clks_cnt = ARRAY_SIZE(gpio6_opt_clks),
1017 .dev_attr = &gpio_dev_attr,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001018};
1019
1020/*
Benoit Cousson407a6882011-02-15 22:39:48 +01001021 * 'hsi' class
1022 * mipi high-speed synchronous serial interface (multichannel and full-duplex
1023 * serial if)
1024 */
1025
1026static struct omap_hwmod_class_sysconfig omap44xx_hsi_sysc = {
1027 .rev_offs = 0x0000,
1028 .sysc_offs = 0x0010,
1029 .syss_offs = 0x0014,
1030 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_EMUFREE |
1031 SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE |
1032 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
1033 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1034 SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
Benoit Coussonc614ebf2011-07-01 22:54:01 +02001035 MSTANDBY_SMART | MSTANDBY_SMART_WKUP),
Benoit Cousson407a6882011-02-15 22:39:48 +01001036 .sysc_fields = &omap_hwmod_sysc_type1,
1037};
1038
1039static struct omap_hwmod_class omap44xx_hsi_hwmod_class = {
1040 .name = "hsi",
1041 .sysc = &omap44xx_hsi_sysc,
1042};
1043
1044/* hsi */
1045static struct omap_hwmod_irq_info omap44xx_hsi_irqs[] = {
1046 { .name = "mpu_p1", .irq = 67 + OMAP44XX_IRQ_GIC_START },
1047 { .name = "mpu_p2", .irq = 68 + OMAP44XX_IRQ_GIC_START },
1048 { .name = "mpu_dma", .irq = 71 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001049 { .irq = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01001050};
1051
Benoit Cousson407a6882011-02-15 22:39:48 +01001052static struct omap_hwmod omap44xx_hsi_hwmod = {
1053 .name = "hsi",
1054 .class = &omap44xx_hsi_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001055 .clkdm_name = "l3_init_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +01001056 .mpu_irqs = omap44xx_hsi_irqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01001057 .main_clk = "hsi_fck",
Benoit Cousson00fe6102011-07-09 19:14:28 -06001058 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01001059 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001060 .clkctrl_offs = OMAP4_CM_L3INIT_HSI_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001061 .context_offs = OMAP4_RM_L3INIT_HSI_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001062 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01001063 },
1064 },
Benoit Cousson407a6882011-02-15 22:39:48 +01001065};
1066
1067/*
Benoit Coussonf7764712010-09-21 19:37:14 +05301068 * 'i2c' class
1069 * multimaster high-speed i2c controller
1070 */
1071
1072static struct omap_hwmod_class_sysconfig omap44xx_i2c_sysc = {
1073 .sysc_offs = 0x0010,
1074 .syss_offs = 0x0090,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001075 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
1076 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE |
Benoit Cousson0cfe8752010-12-21 21:08:33 -07001077 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
Benoit Cousson7cffa6b2010-12-21 21:31:28 -07001078 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1079 SIDLE_SMART_WKUP),
Shubhrajyoti D3e47dc62011-12-13 16:25:54 +05301080 .clockact = CLOCKACT_TEST_ICLK,
Benoit Coussonf7764712010-09-21 19:37:14 +05301081 .sysc_fields = &omap_hwmod_sysc_type1,
1082};
1083
1084static struct omap_hwmod_class omap44xx_i2c_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +00001085 .name = "i2c",
1086 .sysc = &omap44xx_i2c_sysc,
Andy Greendb791a72011-07-10 05:27:15 -06001087 .rev = OMAP_I2C_IP_VERSION_2,
Avinash.H.M6d3c55f2011-07-10 05:27:16 -06001088 .reset = &omap_i2c_reset,
Benoit Coussonf7764712010-09-21 19:37:14 +05301089};
1090
Andy Green4d4441a2011-07-10 05:27:16 -06001091static struct omap_i2c_dev_attr i2c_dev_attr = {
1092 .flags = OMAP_I2C_FLAG_BUS_SHIFT_NONE,
1093};
1094
Benoit Coussonf7764712010-09-21 19:37:14 +05301095/* i2c1 */
Benoit Coussonf7764712010-09-21 19:37:14 +05301096static struct omap_hwmod_irq_info omap44xx_i2c1_irqs[] = {
1097 { .irq = 56 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001098 { .irq = -1 }
Benoit Coussonf7764712010-09-21 19:37:14 +05301099};
1100
1101static struct omap_hwmod_dma_info omap44xx_i2c1_sdma_reqs[] = {
1102 { .name = "tx", .dma_req = 26 + OMAP44XX_DMA_REQ_START },
1103 { .name = "rx", .dma_req = 27 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06001104 { .dma_req = -1 }
Benoit Coussonf7764712010-09-21 19:37:14 +05301105};
1106
Benoit Coussonf7764712010-09-21 19:37:14 +05301107static struct omap_hwmod omap44xx_i2c1_hwmod = {
1108 .name = "i2c1",
1109 .class = &omap44xx_i2c_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001110 .clkdm_name = "l4_per_clkdm",
Shubhrajyoti D3e47dc62011-12-13 16:25:54 +05301111 .flags = HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT,
Benoit Coussonf7764712010-09-21 19:37:14 +05301112 .mpu_irqs = omap44xx_i2c1_irqs,
Benoit Coussonf7764712010-09-21 19:37:14 +05301113 .sdma_reqs = omap44xx_i2c1_sdma_reqs,
Benoit Coussonf7764712010-09-21 19:37:14 +05301114 .main_clk = "i2c1_fck",
1115 .prcm = {
1116 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001117 .clkctrl_offs = OMAP4_CM_L4PER_I2C1_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001118 .context_offs = OMAP4_RM_L4PER_I2C1_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001119 .modulemode = MODULEMODE_SWCTRL,
Benoit Coussonf7764712010-09-21 19:37:14 +05301120 },
1121 },
Andy Green4d4441a2011-07-10 05:27:16 -06001122 .dev_attr = &i2c_dev_attr,
Benoit Coussonf7764712010-09-21 19:37:14 +05301123};
1124
1125/* i2c2 */
Benoit Coussonf7764712010-09-21 19:37:14 +05301126static struct omap_hwmod_irq_info omap44xx_i2c2_irqs[] = {
1127 { .irq = 57 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001128 { .irq = -1 }
Benoit Coussonf7764712010-09-21 19:37:14 +05301129};
1130
1131static struct omap_hwmod_dma_info omap44xx_i2c2_sdma_reqs[] = {
1132 { .name = "tx", .dma_req = 28 + OMAP44XX_DMA_REQ_START },
1133 { .name = "rx", .dma_req = 29 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06001134 { .dma_req = -1 }
Benoit Coussonf7764712010-09-21 19:37:14 +05301135};
1136
Benoit Coussonf7764712010-09-21 19:37:14 +05301137static struct omap_hwmod omap44xx_i2c2_hwmod = {
1138 .name = "i2c2",
1139 .class = &omap44xx_i2c_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001140 .clkdm_name = "l4_per_clkdm",
Shubhrajyoti D3e47dc62011-12-13 16:25:54 +05301141 .flags = HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT,
Benoit Coussonf7764712010-09-21 19:37:14 +05301142 .mpu_irqs = omap44xx_i2c2_irqs,
Benoit Coussonf7764712010-09-21 19:37:14 +05301143 .sdma_reqs = omap44xx_i2c2_sdma_reqs,
Benoit Coussonf7764712010-09-21 19:37:14 +05301144 .main_clk = "i2c2_fck",
1145 .prcm = {
1146 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001147 .clkctrl_offs = OMAP4_CM_L4PER_I2C2_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001148 .context_offs = OMAP4_RM_L4PER_I2C2_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001149 .modulemode = MODULEMODE_SWCTRL,
Benoit Coussonf7764712010-09-21 19:37:14 +05301150 },
1151 },
Andy Green4d4441a2011-07-10 05:27:16 -06001152 .dev_attr = &i2c_dev_attr,
Benoit Coussonf7764712010-09-21 19:37:14 +05301153};
1154
1155/* i2c3 */
Benoit Coussonf7764712010-09-21 19:37:14 +05301156static struct omap_hwmod_irq_info omap44xx_i2c3_irqs[] = {
1157 { .irq = 61 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001158 { .irq = -1 }
Benoit Coussonf7764712010-09-21 19:37:14 +05301159};
1160
1161static struct omap_hwmod_dma_info omap44xx_i2c3_sdma_reqs[] = {
1162 { .name = "tx", .dma_req = 24 + OMAP44XX_DMA_REQ_START },
1163 { .name = "rx", .dma_req = 25 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06001164 { .dma_req = -1 }
Benoit Coussonf7764712010-09-21 19:37:14 +05301165};
1166
Benoit Coussonf7764712010-09-21 19:37:14 +05301167static struct omap_hwmod omap44xx_i2c3_hwmod = {
1168 .name = "i2c3",
1169 .class = &omap44xx_i2c_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001170 .clkdm_name = "l4_per_clkdm",
Shubhrajyoti D3e47dc62011-12-13 16:25:54 +05301171 .flags = HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT,
Benoit Coussonf7764712010-09-21 19:37:14 +05301172 .mpu_irqs = omap44xx_i2c3_irqs,
Benoit Coussonf7764712010-09-21 19:37:14 +05301173 .sdma_reqs = omap44xx_i2c3_sdma_reqs,
Benoit Coussonf7764712010-09-21 19:37:14 +05301174 .main_clk = "i2c3_fck",
1175 .prcm = {
1176 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001177 .clkctrl_offs = OMAP4_CM_L4PER_I2C3_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001178 .context_offs = OMAP4_RM_L4PER_I2C3_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001179 .modulemode = MODULEMODE_SWCTRL,
Benoit Coussonf7764712010-09-21 19:37:14 +05301180 },
1181 },
Andy Green4d4441a2011-07-10 05:27:16 -06001182 .dev_attr = &i2c_dev_attr,
Benoit Coussonf7764712010-09-21 19:37:14 +05301183};
1184
1185/* i2c4 */
Benoit Coussonf7764712010-09-21 19:37:14 +05301186static struct omap_hwmod_irq_info omap44xx_i2c4_irqs[] = {
1187 { .irq = 62 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001188 { .irq = -1 }
Benoit Coussonf7764712010-09-21 19:37:14 +05301189};
1190
1191static struct omap_hwmod_dma_info omap44xx_i2c4_sdma_reqs[] = {
1192 { .name = "tx", .dma_req = 123 + OMAP44XX_DMA_REQ_START },
1193 { .name = "rx", .dma_req = 124 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06001194 { .dma_req = -1 }
Benoit Coussonf7764712010-09-21 19:37:14 +05301195};
1196
Benoit Coussonf7764712010-09-21 19:37:14 +05301197static struct omap_hwmod omap44xx_i2c4_hwmod = {
1198 .name = "i2c4",
1199 .class = &omap44xx_i2c_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001200 .clkdm_name = "l4_per_clkdm",
Shubhrajyoti D3e47dc62011-12-13 16:25:54 +05301201 .flags = HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT,
Benoit Coussonf7764712010-09-21 19:37:14 +05301202 .mpu_irqs = omap44xx_i2c4_irqs,
Benoit Coussonf7764712010-09-21 19:37:14 +05301203 .sdma_reqs = omap44xx_i2c4_sdma_reqs,
Benoit Coussonf7764712010-09-21 19:37:14 +05301204 .main_clk = "i2c4_fck",
1205 .prcm = {
1206 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001207 .clkctrl_offs = OMAP4_CM_L4PER_I2C4_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001208 .context_offs = OMAP4_RM_L4PER_I2C4_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001209 .modulemode = MODULEMODE_SWCTRL,
Benoit Coussonf7764712010-09-21 19:37:14 +05301210 },
1211 },
Andy Green4d4441a2011-07-10 05:27:16 -06001212 .dev_attr = &i2c_dev_attr,
Benoit Coussonf7764712010-09-21 19:37:14 +05301213};
1214
1215/*
Benoit Cousson407a6882011-02-15 22:39:48 +01001216 * 'ipu' class
1217 * imaging processor unit
1218 */
1219
1220static struct omap_hwmod_class omap44xx_ipu_hwmod_class = {
1221 .name = "ipu",
1222};
1223
1224/* ipu */
1225static struct omap_hwmod_irq_info omap44xx_ipu_irqs[] = {
1226 { .irq = 100 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001227 { .irq = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01001228};
1229
Benoit Cousson407a6882011-02-15 22:39:48 +01001230static struct omap_hwmod_rst_info omap44xx_ipu_resets[] = {
Paul Walmsleyf2f57362012-04-18 19:10:02 -06001231 { .name = "cpu0", .rst_shift = 0 },
1232 { .name = "cpu1", .rst_shift = 1 },
Benoit Cousson407a6882011-02-15 22:39:48 +01001233 { .name = "mmu_cache", .rst_shift = 2 },
1234};
1235
Benoit Cousson407a6882011-02-15 22:39:48 +01001236static struct omap_hwmod omap44xx_ipu_hwmod = {
1237 .name = "ipu",
1238 .class = &omap44xx_ipu_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001239 .clkdm_name = "ducati_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +01001240 .mpu_irqs = omap44xx_ipu_irqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01001241 .rst_lines = omap44xx_ipu_resets,
1242 .rst_lines_cnt = ARRAY_SIZE(omap44xx_ipu_resets),
1243 .main_clk = "ipu_fck",
Benoit Cousson00fe6102011-07-09 19:14:28 -06001244 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01001245 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001246 .clkctrl_offs = OMAP4_CM_DUCATI_DUCATI_CLKCTRL_OFFSET,
Benoit Coussoneaac3292011-07-10 05:56:31 -06001247 .rstctrl_offs = OMAP4_RM_DUCATI_RSTCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001248 .context_offs = OMAP4_RM_DUCATI_DUCATI_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001249 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01001250 },
1251 },
Benoit Cousson407a6882011-02-15 22:39:48 +01001252};
1253
1254/*
1255 * 'iss' class
1256 * external images sensor pixel data processor
1257 */
1258
1259static struct omap_hwmod_class_sysconfig omap44xx_iss_sysc = {
1260 .rev_offs = 0x0000,
1261 .sysc_offs = 0x0010,
Fernando Guzman Lugod99de7f2012-04-13 05:08:03 -06001262 /*
1263 * ISS needs 100 OCP clk cycles delay after a softreset before
1264 * accessing sysconfig again.
1265 * The lowest frequency at the moment for L3 bus is 100 MHz, so
1266 * 1usec delay is needed. Add an x2 margin to be safe (2 usecs).
1267 *
1268 * TODO: Indicate errata when available.
1269 */
1270 .srst_udelay = 2,
Benoit Cousson407a6882011-02-15 22:39:48 +01001271 .sysc_flags = (SYSC_HAS_MIDLEMODE | SYSC_HAS_RESET_STATUS |
1272 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
1273 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1274 SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
Benoit Coussonc614ebf2011-07-01 22:54:01 +02001275 MSTANDBY_SMART | MSTANDBY_SMART_WKUP),
Benoit Cousson407a6882011-02-15 22:39:48 +01001276 .sysc_fields = &omap_hwmod_sysc_type2,
1277};
1278
1279static struct omap_hwmod_class omap44xx_iss_hwmod_class = {
1280 .name = "iss",
1281 .sysc = &omap44xx_iss_sysc,
1282};
1283
1284/* iss */
1285static struct omap_hwmod_irq_info omap44xx_iss_irqs[] = {
1286 { .irq = 24 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001287 { .irq = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01001288};
1289
1290static struct omap_hwmod_dma_info omap44xx_iss_sdma_reqs[] = {
1291 { .name = "1", .dma_req = 8 + OMAP44XX_DMA_REQ_START },
1292 { .name = "2", .dma_req = 9 + OMAP44XX_DMA_REQ_START },
1293 { .name = "3", .dma_req = 11 + OMAP44XX_DMA_REQ_START },
1294 { .name = "4", .dma_req = 12 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06001295 { .dma_req = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01001296};
1297
Benoit Cousson407a6882011-02-15 22:39:48 +01001298static struct omap_hwmod_opt_clk iss_opt_clks[] = {
1299 { .role = "ctrlclk", .clk = "iss_ctrlclk" },
1300};
1301
1302static struct omap_hwmod omap44xx_iss_hwmod = {
1303 .name = "iss",
1304 .class = &omap44xx_iss_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001305 .clkdm_name = "iss_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +01001306 .mpu_irqs = omap44xx_iss_irqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01001307 .sdma_reqs = omap44xx_iss_sdma_reqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01001308 .main_clk = "iss_fck",
Benoit Cousson00fe6102011-07-09 19:14:28 -06001309 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01001310 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001311 .clkctrl_offs = OMAP4_CM_CAM_ISS_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001312 .context_offs = OMAP4_RM_CAM_ISS_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001313 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01001314 },
1315 },
1316 .opt_clks = iss_opt_clks,
1317 .opt_clks_cnt = ARRAY_SIZE(iss_opt_clks),
Benoit Cousson407a6882011-02-15 22:39:48 +01001318};
1319
1320/*
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001321 * 'iva' class
1322 * multi-standard video encoder/decoder hardware accelerator
1323 */
1324
1325static struct omap_hwmod_class omap44xx_iva_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +00001326 .name = "iva",
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001327};
1328
1329/* iva */
1330static struct omap_hwmod_irq_info omap44xx_iva_irqs[] = {
1331 { .name = "sync_1", .irq = 103 + OMAP44XX_IRQ_GIC_START },
1332 { .name = "sync_0", .irq = 104 + OMAP44XX_IRQ_GIC_START },
1333 { .name = "mailbox_0", .irq = 107 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001334 { .irq = -1 }
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001335};
1336
1337static struct omap_hwmod_rst_info omap44xx_iva_resets[] = {
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001338 { .name = "seq0", .rst_shift = 0 },
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001339 { .name = "seq1", .rst_shift = 1 },
Paul Walmsleyf2f57362012-04-18 19:10:02 -06001340 { .name = "logic", .rst_shift = 2 },
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001341};
1342
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001343static struct omap_hwmod omap44xx_iva_hwmod = {
1344 .name = "iva",
1345 .class = &omap44xx_iva_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001346 .clkdm_name = "ivahd_clkdm",
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001347 .mpu_irqs = omap44xx_iva_irqs,
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001348 .rst_lines = omap44xx_iva_resets,
1349 .rst_lines_cnt = ARRAY_SIZE(omap44xx_iva_resets),
1350 .main_clk = "iva_fck",
1351 .prcm = {
1352 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001353 .clkctrl_offs = OMAP4_CM_IVAHD_IVAHD_CLKCTRL_OFFSET,
Benoit Coussoneaac3292011-07-10 05:56:31 -06001354 .rstctrl_offs = OMAP4_RM_IVAHD_RSTCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001355 .context_offs = OMAP4_RM_IVAHD_IVAHD_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001356 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001357 },
1358 },
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001359};
1360
1361/*
Benoit Cousson407a6882011-02-15 22:39:48 +01001362 * 'kbd' class
1363 * keyboard controller
1364 */
1365
1366static struct omap_hwmod_class_sysconfig omap44xx_kbd_sysc = {
1367 .rev_offs = 0x0000,
1368 .sysc_offs = 0x0010,
1369 .syss_offs = 0x0014,
1370 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
1371 SYSC_HAS_EMUFREE | SYSC_HAS_ENAWAKEUP |
1372 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
1373 SYSS_HAS_RESET_STATUS),
1374 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
1375 .sysc_fields = &omap_hwmod_sysc_type1,
1376};
1377
1378static struct omap_hwmod_class omap44xx_kbd_hwmod_class = {
1379 .name = "kbd",
1380 .sysc = &omap44xx_kbd_sysc,
1381};
1382
1383/* kbd */
Benoit Cousson407a6882011-02-15 22:39:48 +01001384static struct omap_hwmod_irq_info omap44xx_kbd_irqs[] = {
1385 { .irq = 120 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001386 { .irq = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01001387};
1388
Benoit Cousson407a6882011-02-15 22:39:48 +01001389static struct omap_hwmod omap44xx_kbd_hwmod = {
1390 .name = "kbd",
1391 .class = &omap44xx_kbd_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001392 .clkdm_name = "l4_wkup_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +01001393 .mpu_irqs = omap44xx_kbd_irqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01001394 .main_clk = "kbd_fck",
Benoit Cousson00fe6102011-07-09 19:14:28 -06001395 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01001396 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001397 .clkctrl_offs = OMAP4_CM_WKUP_KEYBOARD_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001398 .context_offs = OMAP4_RM_WKUP_KEYBOARD_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001399 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01001400 },
1401 },
Benoit Cousson407a6882011-02-15 22:39:48 +01001402};
1403
1404/*
Benoit Coussonec5df922011-02-02 19:27:21 +00001405 * 'mailbox' class
1406 * mailbox module allowing communication between the on-chip processors using a
1407 * queued mailbox-interrupt mechanism.
1408 */
1409
1410static struct omap_hwmod_class_sysconfig omap44xx_mailbox_sysc = {
1411 .rev_offs = 0x0000,
1412 .sysc_offs = 0x0010,
1413 .sysc_flags = (SYSC_HAS_RESET_STATUS | SYSC_HAS_SIDLEMODE |
1414 SYSC_HAS_SOFTRESET),
1415 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
1416 .sysc_fields = &omap_hwmod_sysc_type2,
1417};
1418
1419static struct omap_hwmod_class omap44xx_mailbox_hwmod_class = {
1420 .name = "mailbox",
1421 .sysc = &omap44xx_mailbox_sysc,
1422};
1423
1424/* mailbox */
Benoit Coussonec5df922011-02-02 19:27:21 +00001425static struct omap_hwmod_irq_info omap44xx_mailbox_irqs[] = {
1426 { .irq = 26 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001427 { .irq = -1 }
Benoit Coussonec5df922011-02-02 19:27:21 +00001428};
1429
Benoit Coussonec5df922011-02-02 19:27:21 +00001430static struct omap_hwmod omap44xx_mailbox_hwmod = {
1431 .name = "mailbox",
1432 .class = &omap44xx_mailbox_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001433 .clkdm_name = "l4_cfg_clkdm",
Benoit Coussonec5df922011-02-02 19:27:21 +00001434 .mpu_irqs = omap44xx_mailbox_irqs,
Benoit Cousson00fe6102011-07-09 19:14:28 -06001435 .prcm = {
Benoit Coussonec5df922011-02-02 19:27:21 +00001436 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001437 .clkctrl_offs = OMAP4_CM_L4CFG_MAILBOX_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001438 .context_offs = OMAP4_RM_L4CFG_MAILBOX_CONTEXT_OFFSET,
Benoit Coussonec5df922011-02-02 19:27:21 +00001439 },
1440 },
Benoit Coussonec5df922011-02-02 19:27:21 +00001441};
1442
1443/*
Benoit Cousson4ddff492011-01-31 14:50:30 +00001444 * 'mcbsp' class
1445 * multi channel buffered serial port controller
1446 */
1447
1448static struct omap_hwmod_class_sysconfig omap44xx_mcbsp_sysc = {
1449 .sysc_offs = 0x008c,
1450 .sysc_flags = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_ENAWAKEUP |
1451 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
1452 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
1453 .sysc_fields = &omap_hwmod_sysc_type1,
1454};
1455
1456static struct omap_hwmod_class omap44xx_mcbsp_hwmod_class = {
1457 .name = "mcbsp",
1458 .sysc = &omap44xx_mcbsp_sysc,
Kishon Vijay Abraham Icb7e9de2011-02-24 15:16:50 +05301459 .rev = MCBSP_CONFIG_TYPE4,
Benoit Cousson4ddff492011-01-31 14:50:30 +00001460};
1461
1462/* mcbsp1 */
Benoit Cousson4ddff492011-01-31 14:50:30 +00001463static struct omap_hwmod_irq_info omap44xx_mcbsp1_irqs[] = {
1464 { .irq = 17 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001465 { .irq = -1 }
Benoit Cousson4ddff492011-01-31 14:50:30 +00001466};
1467
1468static struct omap_hwmod_dma_info omap44xx_mcbsp1_sdma_reqs[] = {
1469 { .name = "tx", .dma_req = 32 + OMAP44XX_DMA_REQ_START },
1470 { .name = "rx", .dma_req = 33 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06001471 { .dma_req = -1 }
Benoit Cousson4ddff492011-01-31 14:50:30 +00001472};
1473
Paul Walmsley503d0ea2012-04-04 09:11:48 -06001474static struct omap_hwmod_opt_clk mcbsp1_opt_clks[] = {
1475 { .role = "pad_fck", .clk = "pad_clks_ck" },
1476 { .role = "prcm_clk", .clk = "mcbsp1_sync_mux_ck" },
1477};
1478
Benoit Cousson4ddff492011-01-31 14:50:30 +00001479static struct omap_hwmod omap44xx_mcbsp1_hwmod = {
1480 .name = "mcbsp1",
1481 .class = &omap44xx_mcbsp_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001482 .clkdm_name = "abe_clkdm",
Benoit Cousson4ddff492011-01-31 14:50:30 +00001483 .mpu_irqs = omap44xx_mcbsp1_irqs,
Benoit Cousson4ddff492011-01-31 14:50:30 +00001484 .sdma_reqs = omap44xx_mcbsp1_sdma_reqs,
Benoit Cousson4ddff492011-01-31 14:50:30 +00001485 .main_clk = "mcbsp1_fck",
1486 .prcm = {
1487 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001488 .clkctrl_offs = OMAP4_CM1_ABE_MCBSP1_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001489 .context_offs = OMAP4_RM_ABE_MCBSP1_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001490 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson4ddff492011-01-31 14:50:30 +00001491 },
1492 },
Paul Walmsley503d0ea2012-04-04 09:11:48 -06001493 .opt_clks = mcbsp1_opt_clks,
1494 .opt_clks_cnt = ARRAY_SIZE(mcbsp1_opt_clks),
Benoit Cousson4ddff492011-01-31 14:50:30 +00001495};
1496
1497/* mcbsp2 */
Benoit Cousson4ddff492011-01-31 14:50:30 +00001498static struct omap_hwmod_irq_info omap44xx_mcbsp2_irqs[] = {
1499 { .irq = 22 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001500 { .irq = -1 }
Benoit Cousson4ddff492011-01-31 14:50:30 +00001501};
1502
1503static struct omap_hwmod_dma_info omap44xx_mcbsp2_sdma_reqs[] = {
1504 { .name = "tx", .dma_req = 16 + OMAP44XX_DMA_REQ_START },
1505 { .name = "rx", .dma_req = 17 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06001506 { .dma_req = -1 }
Benoit Cousson4ddff492011-01-31 14:50:30 +00001507};
1508
Paul Walmsley503d0ea2012-04-04 09:11:48 -06001509static struct omap_hwmod_opt_clk mcbsp2_opt_clks[] = {
1510 { .role = "pad_fck", .clk = "pad_clks_ck" },
1511 { .role = "prcm_clk", .clk = "mcbsp2_sync_mux_ck" },
1512};
1513
Benoit Cousson4ddff492011-01-31 14:50:30 +00001514static struct omap_hwmod omap44xx_mcbsp2_hwmod = {
1515 .name = "mcbsp2",
1516 .class = &omap44xx_mcbsp_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001517 .clkdm_name = "abe_clkdm",
Benoit Cousson4ddff492011-01-31 14:50:30 +00001518 .mpu_irqs = omap44xx_mcbsp2_irqs,
Benoit Cousson4ddff492011-01-31 14:50:30 +00001519 .sdma_reqs = omap44xx_mcbsp2_sdma_reqs,
Benoit Cousson4ddff492011-01-31 14:50:30 +00001520 .main_clk = "mcbsp2_fck",
1521 .prcm = {
1522 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001523 .clkctrl_offs = OMAP4_CM1_ABE_MCBSP2_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001524 .context_offs = OMAP4_RM_ABE_MCBSP2_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001525 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson4ddff492011-01-31 14:50:30 +00001526 },
1527 },
Paul Walmsley503d0ea2012-04-04 09:11:48 -06001528 .opt_clks = mcbsp2_opt_clks,
1529 .opt_clks_cnt = ARRAY_SIZE(mcbsp2_opt_clks),
Benoit Cousson4ddff492011-01-31 14:50:30 +00001530};
1531
1532/* mcbsp3 */
Benoit Cousson4ddff492011-01-31 14:50:30 +00001533static struct omap_hwmod_irq_info omap44xx_mcbsp3_irqs[] = {
1534 { .irq = 23 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001535 { .irq = -1 }
Benoit Cousson4ddff492011-01-31 14:50:30 +00001536};
1537
1538static struct omap_hwmod_dma_info omap44xx_mcbsp3_sdma_reqs[] = {
1539 { .name = "tx", .dma_req = 18 + OMAP44XX_DMA_REQ_START },
1540 { .name = "rx", .dma_req = 19 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06001541 { .dma_req = -1 }
Benoit Cousson4ddff492011-01-31 14:50:30 +00001542};
1543
Paul Walmsley503d0ea2012-04-04 09:11:48 -06001544static struct omap_hwmod_opt_clk mcbsp3_opt_clks[] = {
1545 { .role = "pad_fck", .clk = "pad_clks_ck" },
1546 { .role = "prcm_clk", .clk = "mcbsp3_sync_mux_ck" },
1547};
1548
Benoit Cousson4ddff492011-01-31 14:50:30 +00001549static struct omap_hwmod omap44xx_mcbsp3_hwmod = {
1550 .name = "mcbsp3",
1551 .class = &omap44xx_mcbsp_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001552 .clkdm_name = "abe_clkdm",
Benoit Cousson4ddff492011-01-31 14:50:30 +00001553 .mpu_irqs = omap44xx_mcbsp3_irqs,
Benoit Cousson4ddff492011-01-31 14:50:30 +00001554 .sdma_reqs = omap44xx_mcbsp3_sdma_reqs,
Benoit Cousson4ddff492011-01-31 14:50:30 +00001555 .main_clk = "mcbsp3_fck",
1556 .prcm = {
1557 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001558 .clkctrl_offs = OMAP4_CM1_ABE_MCBSP3_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001559 .context_offs = OMAP4_RM_ABE_MCBSP3_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001560 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson4ddff492011-01-31 14:50:30 +00001561 },
1562 },
Paul Walmsley503d0ea2012-04-04 09:11:48 -06001563 .opt_clks = mcbsp3_opt_clks,
1564 .opt_clks_cnt = ARRAY_SIZE(mcbsp3_opt_clks),
Benoit Cousson4ddff492011-01-31 14:50:30 +00001565};
1566
1567/* mcbsp4 */
Benoit Cousson4ddff492011-01-31 14:50:30 +00001568static struct omap_hwmod_irq_info omap44xx_mcbsp4_irqs[] = {
1569 { .irq = 16 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001570 { .irq = -1 }
Benoit Cousson4ddff492011-01-31 14:50:30 +00001571};
1572
1573static struct omap_hwmod_dma_info omap44xx_mcbsp4_sdma_reqs[] = {
1574 { .name = "tx", .dma_req = 30 + OMAP44XX_DMA_REQ_START },
1575 { .name = "rx", .dma_req = 31 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06001576 { .dma_req = -1 }
Benoit Cousson4ddff492011-01-31 14:50:30 +00001577};
1578
Paul Walmsley503d0ea2012-04-04 09:11:48 -06001579static struct omap_hwmod_opt_clk mcbsp4_opt_clks[] = {
1580 { .role = "pad_fck", .clk = "pad_clks_ck" },
1581 { .role = "prcm_clk", .clk = "mcbsp4_sync_mux_ck" },
1582};
1583
Benoit Cousson4ddff492011-01-31 14:50:30 +00001584static struct omap_hwmod omap44xx_mcbsp4_hwmod = {
1585 .name = "mcbsp4",
1586 .class = &omap44xx_mcbsp_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001587 .clkdm_name = "l4_per_clkdm",
Benoit Cousson4ddff492011-01-31 14:50:30 +00001588 .mpu_irqs = omap44xx_mcbsp4_irqs,
Benoit Cousson4ddff492011-01-31 14:50:30 +00001589 .sdma_reqs = omap44xx_mcbsp4_sdma_reqs,
Benoit Cousson4ddff492011-01-31 14:50:30 +00001590 .main_clk = "mcbsp4_fck",
1591 .prcm = {
1592 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001593 .clkctrl_offs = OMAP4_CM_L4PER_MCBSP4_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001594 .context_offs = OMAP4_RM_L4PER_MCBSP4_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001595 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson4ddff492011-01-31 14:50:30 +00001596 },
1597 },
Paul Walmsley503d0ea2012-04-04 09:11:48 -06001598 .opt_clks = mcbsp4_opt_clks,
1599 .opt_clks_cnt = ARRAY_SIZE(mcbsp4_opt_clks),
Benoit Cousson4ddff492011-01-31 14:50:30 +00001600};
1601
1602/*
Benoit Cousson407a6882011-02-15 22:39:48 +01001603 * 'mcpdm' class
1604 * multi channel pdm controller (proprietary interface with phoenix power
1605 * ic)
1606 */
1607
1608static struct omap_hwmod_class_sysconfig omap44xx_mcpdm_sysc = {
1609 .rev_offs = 0x0000,
1610 .sysc_offs = 0x0010,
1611 .sysc_flags = (SYSC_HAS_EMUFREE | SYSC_HAS_RESET_STATUS |
1612 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
1613 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1614 SIDLE_SMART_WKUP),
1615 .sysc_fields = &omap_hwmod_sysc_type2,
1616};
1617
1618static struct omap_hwmod_class omap44xx_mcpdm_hwmod_class = {
1619 .name = "mcpdm",
1620 .sysc = &omap44xx_mcpdm_sysc,
1621};
1622
1623/* mcpdm */
Benoit Cousson407a6882011-02-15 22:39:48 +01001624static struct omap_hwmod_irq_info omap44xx_mcpdm_irqs[] = {
1625 { .irq = 112 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001626 { .irq = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01001627};
1628
1629static struct omap_hwmod_dma_info omap44xx_mcpdm_sdma_reqs[] = {
1630 { .name = "up_link", .dma_req = 64 + OMAP44XX_DMA_REQ_START },
1631 { .name = "dn_link", .dma_req = 65 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06001632 { .dma_req = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01001633};
1634
Benoit Cousson407a6882011-02-15 22:39:48 +01001635static struct omap_hwmod omap44xx_mcpdm_hwmod = {
1636 .name = "mcpdm",
1637 .class = &omap44xx_mcpdm_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001638 .clkdm_name = "abe_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +01001639 .mpu_irqs = omap44xx_mcpdm_irqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01001640 .sdma_reqs = omap44xx_mcpdm_sdma_reqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01001641 .main_clk = "mcpdm_fck",
Benoit Cousson00fe6102011-07-09 19:14:28 -06001642 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01001643 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001644 .clkctrl_offs = OMAP4_CM1_ABE_PDM_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001645 .context_offs = OMAP4_RM_ABE_PDM_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001646 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01001647 },
1648 },
Benoit Cousson407a6882011-02-15 22:39:48 +01001649};
1650
1651/*
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301652 * 'mcspi' class
1653 * multichannel serial port interface (mcspi) / master/slave synchronous serial
1654 * bus
1655 */
1656
1657static struct omap_hwmod_class_sysconfig omap44xx_mcspi_sysc = {
1658 .rev_offs = 0x0000,
1659 .sysc_offs = 0x0010,
1660 .sysc_flags = (SYSC_HAS_EMUFREE | SYSC_HAS_RESET_STATUS |
1661 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
1662 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1663 SIDLE_SMART_WKUP),
1664 .sysc_fields = &omap_hwmod_sysc_type2,
1665};
1666
1667static struct omap_hwmod_class omap44xx_mcspi_hwmod_class = {
1668 .name = "mcspi",
1669 .sysc = &omap44xx_mcspi_sysc,
Benoit Cousson905a74d2011-02-18 14:01:06 +01001670 .rev = OMAP4_MCSPI_REV,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301671};
1672
1673/* mcspi1 */
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301674static struct omap_hwmod_irq_info omap44xx_mcspi1_irqs[] = {
1675 { .irq = 65 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001676 { .irq = -1 }
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301677};
1678
1679static struct omap_hwmod_dma_info omap44xx_mcspi1_sdma_reqs[] = {
1680 { .name = "tx0", .dma_req = 34 + OMAP44XX_DMA_REQ_START },
1681 { .name = "rx0", .dma_req = 35 + OMAP44XX_DMA_REQ_START },
1682 { .name = "tx1", .dma_req = 36 + OMAP44XX_DMA_REQ_START },
1683 { .name = "rx1", .dma_req = 37 + OMAP44XX_DMA_REQ_START },
1684 { .name = "tx2", .dma_req = 38 + OMAP44XX_DMA_REQ_START },
1685 { .name = "rx2", .dma_req = 39 + OMAP44XX_DMA_REQ_START },
1686 { .name = "tx3", .dma_req = 40 + OMAP44XX_DMA_REQ_START },
1687 { .name = "rx3", .dma_req = 41 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06001688 { .dma_req = -1 }
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301689};
1690
Benoit Cousson905a74d2011-02-18 14:01:06 +01001691/* mcspi1 dev_attr */
1692static struct omap2_mcspi_dev_attr mcspi1_dev_attr = {
1693 .num_chipselect = 4,
1694};
1695
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301696static struct omap_hwmod omap44xx_mcspi1_hwmod = {
1697 .name = "mcspi1",
1698 .class = &omap44xx_mcspi_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001699 .clkdm_name = "l4_per_clkdm",
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301700 .mpu_irqs = omap44xx_mcspi1_irqs,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301701 .sdma_reqs = omap44xx_mcspi1_sdma_reqs,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301702 .main_clk = "mcspi1_fck",
1703 .prcm = {
1704 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001705 .clkctrl_offs = OMAP4_CM_L4PER_MCSPI1_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001706 .context_offs = OMAP4_RM_L4PER_MCSPI1_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001707 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301708 },
1709 },
Benoit Cousson905a74d2011-02-18 14:01:06 +01001710 .dev_attr = &mcspi1_dev_attr,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301711};
1712
1713/* mcspi2 */
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301714static struct omap_hwmod_irq_info omap44xx_mcspi2_irqs[] = {
1715 { .irq = 66 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001716 { .irq = -1 }
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301717};
1718
1719static struct omap_hwmod_dma_info omap44xx_mcspi2_sdma_reqs[] = {
1720 { .name = "tx0", .dma_req = 42 + OMAP44XX_DMA_REQ_START },
1721 { .name = "rx0", .dma_req = 43 + OMAP44XX_DMA_REQ_START },
1722 { .name = "tx1", .dma_req = 44 + OMAP44XX_DMA_REQ_START },
1723 { .name = "rx1", .dma_req = 45 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06001724 { .dma_req = -1 }
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301725};
1726
Benoit Cousson905a74d2011-02-18 14:01:06 +01001727/* mcspi2 dev_attr */
1728static struct omap2_mcspi_dev_attr mcspi2_dev_attr = {
1729 .num_chipselect = 2,
1730};
1731
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301732static struct omap_hwmod omap44xx_mcspi2_hwmod = {
1733 .name = "mcspi2",
1734 .class = &omap44xx_mcspi_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001735 .clkdm_name = "l4_per_clkdm",
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301736 .mpu_irqs = omap44xx_mcspi2_irqs,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301737 .sdma_reqs = omap44xx_mcspi2_sdma_reqs,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301738 .main_clk = "mcspi2_fck",
1739 .prcm = {
1740 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001741 .clkctrl_offs = OMAP4_CM_L4PER_MCSPI2_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001742 .context_offs = OMAP4_RM_L4PER_MCSPI2_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001743 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301744 },
1745 },
Benoit Cousson905a74d2011-02-18 14:01:06 +01001746 .dev_attr = &mcspi2_dev_attr,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301747};
1748
1749/* mcspi3 */
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301750static struct omap_hwmod_irq_info omap44xx_mcspi3_irqs[] = {
1751 { .irq = 91 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001752 { .irq = -1 }
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301753};
1754
1755static struct omap_hwmod_dma_info omap44xx_mcspi3_sdma_reqs[] = {
1756 { .name = "tx0", .dma_req = 14 + OMAP44XX_DMA_REQ_START },
1757 { .name = "rx0", .dma_req = 15 + OMAP44XX_DMA_REQ_START },
1758 { .name = "tx1", .dma_req = 22 + OMAP44XX_DMA_REQ_START },
1759 { .name = "rx1", .dma_req = 23 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06001760 { .dma_req = -1 }
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301761};
1762
Benoit Cousson905a74d2011-02-18 14:01:06 +01001763/* mcspi3 dev_attr */
1764static struct omap2_mcspi_dev_attr mcspi3_dev_attr = {
1765 .num_chipselect = 2,
1766};
1767
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301768static struct omap_hwmod omap44xx_mcspi3_hwmod = {
1769 .name = "mcspi3",
1770 .class = &omap44xx_mcspi_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001771 .clkdm_name = "l4_per_clkdm",
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301772 .mpu_irqs = omap44xx_mcspi3_irqs,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301773 .sdma_reqs = omap44xx_mcspi3_sdma_reqs,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301774 .main_clk = "mcspi3_fck",
1775 .prcm = {
1776 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001777 .clkctrl_offs = OMAP4_CM_L4PER_MCSPI3_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001778 .context_offs = OMAP4_RM_L4PER_MCSPI3_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001779 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301780 },
1781 },
Benoit Cousson905a74d2011-02-18 14:01:06 +01001782 .dev_attr = &mcspi3_dev_attr,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301783};
1784
1785/* mcspi4 */
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301786static struct omap_hwmod_irq_info omap44xx_mcspi4_irqs[] = {
1787 { .irq = 48 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001788 { .irq = -1 }
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301789};
1790
1791static struct omap_hwmod_dma_info omap44xx_mcspi4_sdma_reqs[] = {
1792 { .name = "tx0", .dma_req = 69 + OMAP44XX_DMA_REQ_START },
1793 { .name = "rx0", .dma_req = 70 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06001794 { .dma_req = -1 }
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301795};
1796
Benoit Cousson905a74d2011-02-18 14:01:06 +01001797/* mcspi4 dev_attr */
1798static struct omap2_mcspi_dev_attr mcspi4_dev_attr = {
1799 .num_chipselect = 1,
1800};
1801
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301802static struct omap_hwmod omap44xx_mcspi4_hwmod = {
1803 .name = "mcspi4",
1804 .class = &omap44xx_mcspi_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001805 .clkdm_name = "l4_per_clkdm",
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301806 .mpu_irqs = omap44xx_mcspi4_irqs,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301807 .sdma_reqs = omap44xx_mcspi4_sdma_reqs,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301808 .main_clk = "mcspi4_fck",
1809 .prcm = {
1810 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001811 .clkctrl_offs = OMAP4_CM_L4PER_MCSPI4_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001812 .context_offs = OMAP4_RM_L4PER_MCSPI4_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001813 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301814 },
1815 },
Benoit Cousson905a74d2011-02-18 14:01:06 +01001816 .dev_attr = &mcspi4_dev_attr,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301817};
1818
1819/*
Benoit Cousson407a6882011-02-15 22:39:48 +01001820 * 'mmc' class
1821 * multimedia card high-speed/sd/sdio (mmc/sd/sdio) host controller
1822 */
1823
1824static struct omap_hwmod_class_sysconfig omap44xx_mmc_sysc = {
1825 .rev_offs = 0x0000,
1826 .sysc_offs = 0x0010,
1827 .sysc_flags = (SYSC_HAS_EMUFREE | SYSC_HAS_MIDLEMODE |
1828 SYSC_HAS_RESET_STATUS | SYSC_HAS_SIDLEMODE |
1829 SYSC_HAS_SOFTRESET),
1830 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1831 SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
Benoit Coussonc614ebf2011-07-01 22:54:01 +02001832 MSTANDBY_SMART | MSTANDBY_SMART_WKUP),
Benoit Cousson407a6882011-02-15 22:39:48 +01001833 .sysc_fields = &omap_hwmod_sysc_type2,
1834};
1835
1836static struct omap_hwmod_class omap44xx_mmc_hwmod_class = {
1837 .name = "mmc",
1838 .sysc = &omap44xx_mmc_sysc,
1839};
1840
1841/* mmc1 */
1842static struct omap_hwmod_irq_info omap44xx_mmc1_irqs[] = {
1843 { .irq = 83 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001844 { .irq = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01001845};
1846
1847static struct omap_hwmod_dma_info omap44xx_mmc1_sdma_reqs[] = {
1848 { .name = "tx", .dma_req = 60 + OMAP44XX_DMA_REQ_START },
1849 { .name = "rx", .dma_req = 61 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06001850 { .dma_req = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01001851};
1852
Kishore Kadiyala6ab89462011-03-01 13:12:56 -08001853/* mmc1 dev_attr */
1854static struct omap_mmc_dev_attr mmc1_dev_attr = {
1855 .flags = OMAP_HSMMC_SUPPORTS_DUAL_VOLT,
1856};
1857
Benoit Cousson407a6882011-02-15 22:39:48 +01001858static struct omap_hwmod omap44xx_mmc1_hwmod = {
1859 .name = "mmc1",
1860 .class = &omap44xx_mmc_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001861 .clkdm_name = "l3_init_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +01001862 .mpu_irqs = omap44xx_mmc1_irqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01001863 .sdma_reqs = omap44xx_mmc1_sdma_reqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01001864 .main_clk = "mmc1_fck",
Benoit Cousson00fe6102011-07-09 19:14:28 -06001865 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01001866 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001867 .clkctrl_offs = OMAP4_CM_L3INIT_MMC1_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001868 .context_offs = OMAP4_RM_L3INIT_MMC1_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001869 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01001870 },
1871 },
Kishore Kadiyala6ab89462011-03-01 13:12:56 -08001872 .dev_attr = &mmc1_dev_attr,
Benoit Cousson407a6882011-02-15 22:39:48 +01001873};
1874
1875/* mmc2 */
1876static struct omap_hwmod_irq_info omap44xx_mmc2_irqs[] = {
1877 { .irq = 86 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001878 { .irq = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01001879};
1880
1881static struct omap_hwmod_dma_info omap44xx_mmc2_sdma_reqs[] = {
1882 { .name = "tx", .dma_req = 46 + OMAP44XX_DMA_REQ_START },
1883 { .name = "rx", .dma_req = 47 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06001884 { .dma_req = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01001885};
1886
Benoit Cousson407a6882011-02-15 22:39:48 +01001887static struct omap_hwmod omap44xx_mmc2_hwmod = {
1888 .name = "mmc2",
1889 .class = &omap44xx_mmc_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001890 .clkdm_name = "l3_init_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +01001891 .mpu_irqs = omap44xx_mmc2_irqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01001892 .sdma_reqs = omap44xx_mmc2_sdma_reqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01001893 .main_clk = "mmc2_fck",
Benoit Cousson00fe6102011-07-09 19:14:28 -06001894 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01001895 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001896 .clkctrl_offs = OMAP4_CM_L3INIT_MMC2_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001897 .context_offs = OMAP4_RM_L3INIT_MMC2_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001898 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01001899 },
1900 },
Benoit Cousson407a6882011-02-15 22:39:48 +01001901};
1902
1903/* mmc3 */
Benoit Cousson407a6882011-02-15 22:39:48 +01001904static struct omap_hwmod_irq_info omap44xx_mmc3_irqs[] = {
1905 { .irq = 94 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001906 { .irq = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01001907};
1908
1909static struct omap_hwmod_dma_info omap44xx_mmc3_sdma_reqs[] = {
1910 { .name = "tx", .dma_req = 76 + OMAP44XX_DMA_REQ_START },
1911 { .name = "rx", .dma_req = 77 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06001912 { .dma_req = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01001913};
1914
Benoit Cousson407a6882011-02-15 22:39:48 +01001915static struct omap_hwmod omap44xx_mmc3_hwmod = {
1916 .name = "mmc3",
1917 .class = &omap44xx_mmc_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001918 .clkdm_name = "l4_per_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +01001919 .mpu_irqs = omap44xx_mmc3_irqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01001920 .sdma_reqs = omap44xx_mmc3_sdma_reqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01001921 .main_clk = "mmc3_fck",
Benoit Cousson00fe6102011-07-09 19:14:28 -06001922 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01001923 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001924 .clkctrl_offs = OMAP4_CM_L4PER_MMCSD3_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001925 .context_offs = OMAP4_RM_L4PER_MMCSD3_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001926 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01001927 },
1928 },
Benoit Cousson407a6882011-02-15 22:39:48 +01001929};
1930
1931/* mmc4 */
Benoit Cousson407a6882011-02-15 22:39:48 +01001932static struct omap_hwmod_irq_info omap44xx_mmc4_irqs[] = {
1933 { .irq = 96 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001934 { .irq = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01001935};
1936
1937static struct omap_hwmod_dma_info omap44xx_mmc4_sdma_reqs[] = {
1938 { .name = "tx", .dma_req = 56 + OMAP44XX_DMA_REQ_START },
1939 { .name = "rx", .dma_req = 57 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06001940 { .dma_req = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01001941};
1942
Benoit Cousson407a6882011-02-15 22:39:48 +01001943static struct omap_hwmod omap44xx_mmc4_hwmod = {
1944 .name = "mmc4",
1945 .class = &omap44xx_mmc_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001946 .clkdm_name = "l4_per_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +01001947 .mpu_irqs = omap44xx_mmc4_irqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01001948 .sdma_reqs = omap44xx_mmc4_sdma_reqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01001949 .main_clk = "mmc4_fck",
Benoit Cousson00fe6102011-07-09 19:14:28 -06001950 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01001951 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001952 .clkctrl_offs = OMAP4_CM_L4PER_MMCSD4_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001953 .context_offs = OMAP4_RM_L4PER_MMCSD4_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001954 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01001955 },
1956 },
Benoit Cousson407a6882011-02-15 22:39:48 +01001957};
1958
1959/* mmc5 */
Benoit Cousson407a6882011-02-15 22:39:48 +01001960static struct omap_hwmod_irq_info omap44xx_mmc5_irqs[] = {
1961 { .irq = 59 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001962 { .irq = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01001963};
1964
1965static struct omap_hwmod_dma_info omap44xx_mmc5_sdma_reqs[] = {
1966 { .name = "tx", .dma_req = 58 + OMAP44XX_DMA_REQ_START },
1967 { .name = "rx", .dma_req = 59 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06001968 { .dma_req = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01001969};
1970
Benoit Cousson407a6882011-02-15 22:39:48 +01001971static struct omap_hwmod omap44xx_mmc5_hwmod = {
1972 .name = "mmc5",
1973 .class = &omap44xx_mmc_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001974 .clkdm_name = "l4_per_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +01001975 .mpu_irqs = omap44xx_mmc5_irqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01001976 .sdma_reqs = omap44xx_mmc5_sdma_reqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01001977 .main_clk = "mmc5_fck",
Benoit Cousson00fe6102011-07-09 19:14:28 -06001978 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01001979 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001980 .clkctrl_offs = OMAP4_CM_L4PER_MMCSD5_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001981 .context_offs = OMAP4_RM_L4PER_MMCSD5_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001982 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01001983 },
1984 },
Benoit Cousson407a6882011-02-15 22:39:48 +01001985};
1986
1987/*
Benoit Cousson55d2cb02010-05-12 17:54:36 +02001988 * 'mpu' class
1989 * mpu sub-system
1990 */
1991
1992static struct omap_hwmod_class omap44xx_mpu_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +00001993 .name = "mpu",
Benoit Cousson55d2cb02010-05-12 17:54:36 +02001994};
1995
1996/* mpu */
1997static struct omap_hwmod_irq_info omap44xx_mpu_irqs[] = {
1998 { .name = "pl310", .irq = 0 + OMAP44XX_IRQ_GIC_START },
1999 { .name = "cti0", .irq = 1 + OMAP44XX_IRQ_GIC_START },
2000 { .name = "cti1", .irq = 2 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002001 { .irq = -1 }
Benoit Cousson55d2cb02010-05-12 17:54:36 +02002002};
2003
Benoit Cousson55d2cb02010-05-12 17:54:36 +02002004static struct omap_hwmod omap44xx_mpu_hwmod = {
2005 .name = "mpu",
2006 .class = &omap44xx_mpu_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002007 .clkdm_name = "mpuss_clkdm",
Benoit Cousson7ecc53732011-07-09 19:14:28 -06002008 .flags = HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET,
Benoit Cousson55d2cb02010-05-12 17:54:36 +02002009 .mpu_irqs = omap44xx_mpu_irqs,
Benoit Cousson55d2cb02010-05-12 17:54:36 +02002010 .main_clk = "dpll_mpu_m2_ck",
2011 .prcm = {
2012 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002013 .clkctrl_offs = OMAP4_CM_MPU_MPU_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002014 .context_offs = OMAP4_RM_MPU_MPU_CONTEXT_OFFSET,
Benoit Cousson55d2cb02010-05-12 17:54:36 +02002015 },
2016 },
Benoit Cousson55d2cb02010-05-12 17:54:36 +02002017};
2018
Benoit Cousson92b18d12010-09-23 20:02:41 +05302019/*
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002020 * 'smartreflex' class
2021 * smartreflex module (monitor silicon performance and outputs a measure of
2022 * performance error)
2023 */
2024
2025/* The IP is not compliant to type1 / type2 scheme */
2026static struct omap_hwmod_sysc_fields omap_hwmod_sysc_type_smartreflex = {
2027 .sidle_shift = 24,
2028 .enwkup_shift = 26,
2029};
2030
2031static struct omap_hwmod_class_sysconfig omap44xx_smartreflex_sysc = {
2032 .sysc_offs = 0x0038,
2033 .sysc_flags = (SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE),
2034 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
2035 SIDLE_SMART_WKUP),
2036 .sysc_fields = &omap_hwmod_sysc_type_smartreflex,
2037};
2038
2039static struct omap_hwmod_class omap44xx_smartreflex_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +00002040 .name = "smartreflex",
2041 .sysc = &omap44xx_smartreflex_sysc,
2042 .rev = 2,
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002043};
2044
2045/* smartreflex_core */
Shweta Gulaticea6b942012-02-29 23:33:37 +01002046static struct omap_smartreflex_dev_attr smartreflex_core_dev_attr = {
2047 .sensor_voltdm_name = "core",
2048};
2049
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002050static struct omap_hwmod_irq_info omap44xx_smartreflex_core_irqs[] = {
2051 { .irq = 19 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002052 { .irq = -1 }
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002053};
2054
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002055static struct omap_hwmod omap44xx_smartreflex_core_hwmod = {
2056 .name = "smartreflex_core",
2057 .class = &omap44xx_smartreflex_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002058 .clkdm_name = "l4_ao_clkdm",
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002059 .mpu_irqs = omap44xx_smartreflex_core_irqs,
Paul Walmsley212738a2011-07-09 19:14:06 -06002060
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002061 .main_clk = "smartreflex_core_fck",
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002062 .prcm = {
2063 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002064 .clkctrl_offs = OMAP4_CM_ALWON_SR_CORE_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002065 .context_offs = OMAP4_RM_ALWON_SR_CORE_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002066 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002067 },
2068 },
Shweta Gulaticea6b942012-02-29 23:33:37 +01002069 .dev_attr = &smartreflex_core_dev_attr,
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002070};
2071
2072/* smartreflex_iva */
Shweta Gulaticea6b942012-02-29 23:33:37 +01002073static struct omap_smartreflex_dev_attr smartreflex_iva_dev_attr = {
2074 .sensor_voltdm_name = "iva",
2075};
2076
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002077static struct omap_hwmod_irq_info omap44xx_smartreflex_iva_irqs[] = {
2078 { .irq = 102 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002079 { .irq = -1 }
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002080};
2081
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002082static struct omap_hwmod omap44xx_smartreflex_iva_hwmod = {
2083 .name = "smartreflex_iva",
2084 .class = &omap44xx_smartreflex_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002085 .clkdm_name = "l4_ao_clkdm",
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002086 .mpu_irqs = omap44xx_smartreflex_iva_irqs,
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002087 .main_clk = "smartreflex_iva_fck",
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002088 .prcm = {
2089 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002090 .clkctrl_offs = OMAP4_CM_ALWON_SR_IVA_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002091 .context_offs = OMAP4_RM_ALWON_SR_IVA_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002092 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002093 },
2094 },
Shweta Gulaticea6b942012-02-29 23:33:37 +01002095 .dev_attr = &smartreflex_iva_dev_attr,
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002096};
2097
2098/* smartreflex_mpu */
Shweta Gulaticea6b942012-02-29 23:33:37 +01002099static struct omap_smartreflex_dev_attr smartreflex_mpu_dev_attr = {
2100 .sensor_voltdm_name = "mpu",
2101};
2102
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002103static struct omap_hwmod_irq_info omap44xx_smartreflex_mpu_irqs[] = {
2104 { .irq = 18 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002105 { .irq = -1 }
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002106};
2107
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002108static struct omap_hwmod omap44xx_smartreflex_mpu_hwmod = {
2109 .name = "smartreflex_mpu",
2110 .class = &omap44xx_smartreflex_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002111 .clkdm_name = "l4_ao_clkdm",
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002112 .mpu_irqs = omap44xx_smartreflex_mpu_irqs,
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002113 .main_clk = "smartreflex_mpu_fck",
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002114 .prcm = {
2115 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002116 .clkctrl_offs = OMAP4_CM_ALWON_SR_MPU_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002117 .context_offs = OMAP4_RM_ALWON_SR_MPU_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002118 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002119 },
2120 },
Shweta Gulaticea6b942012-02-29 23:33:37 +01002121 .dev_attr = &smartreflex_mpu_dev_attr,
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002122};
2123
2124/*
Benoit Coussond11c2172011-02-02 12:04:36 +00002125 * 'spinlock' class
2126 * spinlock provides hardware assistance for synchronizing the processes
2127 * running on multiple processors
2128 */
2129
2130static struct omap_hwmod_class_sysconfig omap44xx_spinlock_sysc = {
2131 .rev_offs = 0x0000,
2132 .sysc_offs = 0x0010,
2133 .syss_offs = 0x0014,
2134 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
2135 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE |
2136 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
2137 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
2138 SIDLE_SMART_WKUP),
2139 .sysc_fields = &omap_hwmod_sysc_type1,
2140};
2141
2142static struct omap_hwmod_class omap44xx_spinlock_hwmod_class = {
2143 .name = "spinlock",
2144 .sysc = &omap44xx_spinlock_sysc,
2145};
2146
2147/* spinlock */
Benoit Coussond11c2172011-02-02 12:04:36 +00002148static struct omap_hwmod omap44xx_spinlock_hwmod = {
2149 .name = "spinlock",
2150 .class = &omap44xx_spinlock_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002151 .clkdm_name = "l4_cfg_clkdm",
Benoit Coussond11c2172011-02-02 12:04:36 +00002152 .prcm = {
2153 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002154 .clkctrl_offs = OMAP4_CM_L4CFG_HW_SEM_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002155 .context_offs = OMAP4_RM_L4CFG_HW_SEM_CONTEXT_OFFSET,
Benoit Coussond11c2172011-02-02 12:04:36 +00002156 },
2157 },
Benoit Coussond11c2172011-02-02 12:04:36 +00002158};
2159
2160/*
Benoit Cousson35d1a662011-02-11 11:17:14 +00002161 * 'timer' class
2162 * general purpose timer module with accurate 1ms tick
2163 * This class contains several variants: ['timer_1ms', 'timer']
2164 */
2165
2166static struct omap_hwmod_class_sysconfig omap44xx_timer_1ms_sysc = {
2167 .rev_offs = 0x0000,
2168 .sysc_offs = 0x0010,
2169 .syss_offs = 0x0014,
2170 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
2171 SYSC_HAS_EMUFREE | SYSC_HAS_ENAWAKEUP |
2172 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
2173 SYSS_HAS_RESET_STATUS),
2174 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
2175 .sysc_fields = &omap_hwmod_sysc_type1,
2176};
2177
2178static struct omap_hwmod_class omap44xx_timer_1ms_hwmod_class = {
2179 .name = "timer",
2180 .sysc = &omap44xx_timer_1ms_sysc,
2181};
2182
2183static struct omap_hwmod_class_sysconfig omap44xx_timer_sysc = {
2184 .rev_offs = 0x0000,
2185 .sysc_offs = 0x0010,
2186 .sysc_flags = (SYSC_HAS_EMUFREE | SYSC_HAS_RESET_STATUS |
2187 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
2188 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
2189 SIDLE_SMART_WKUP),
2190 .sysc_fields = &omap_hwmod_sysc_type2,
2191};
2192
2193static struct omap_hwmod_class omap44xx_timer_hwmod_class = {
2194 .name = "timer",
2195 .sysc = &omap44xx_timer_sysc,
2196};
2197
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +05302198/* always-on timers dev attribute */
2199static struct omap_timer_capability_dev_attr capability_alwon_dev_attr = {
2200 .timer_capability = OMAP_TIMER_ALWON,
2201};
2202
2203/* pwm timers dev attribute */
2204static struct omap_timer_capability_dev_attr capability_pwm_dev_attr = {
2205 .timer_capability = OMAP_TIMER_HAS_PWM,
2206};
2207
Benoit Cousson35d1a662011-02-11 11:17:14 +00002208/* timer1 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00002209static struct omap_hwmod_irq_info omap44xx_timer1_irqs[] = {
2210 { .irq = 37 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002211 { .irq = -1 }
Benoit Cousson35d1a662011-02-11 11:17:14 +00002212};
2213
Benoit Cousson35d1a662011-02-11 11:17:14 +00002214static struct omap_hwmod omap44xx_timer1_hwmod = {
2215 .name = "timer1",
2216 .class = &omap44xx_timer_1ms_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002217 .clkdm_name = "l4_wkup_clkdm",
Benoit Cousson35d1a662011-02-11 11:17:14 +00002218 .mpu_irqs = omap44xx_timer1_irqs,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002219 .main_clk = "timer1_fck",
2220 .prcm = {
2221 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002222 .clkctrl_offs = OMAP4_CM_WKUP_TIMER1_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002223 .context_offs = OMAP4_RM_WKUP_TIMER1_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002224 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002225 },
2226 },
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +05302227 .dev_attr = &capability_alwon_dev_attr,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002228};
2229
2230/* timer2 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00002231static struct omap_hwmod_irq_info omap44xx_timer2_irqs[] = {
2232 { .irq = 38 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002233 { .irq = -1 }
Benoit Cousson35d1a662011-02-11 11:17:14 +00002234};
2235
Benoit Cousson35d1a662011-02-11 11:17:14 +00002236static struct omap_hwmod omap44xx_timer2_hwmod = {
2237 .name = "timer2",
2238 .class = &omap44xx_timer_1ms_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002239 .clkdm_name = "l4_per_clkdm",
Benoit Cousson35d1a662011-02-11 11:17:14 +00002240 .mpu_irqs = omap44xx_timer2_irqs,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002241 .main_clk = "timer2_fck",
2242 .prcm = {
2243 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002244 .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER2_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002245 .context_offs = OMAP4_RM_L4PER_DMTIMER2_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002246 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002247 },
2248 },
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +05302249 .dev_attr = &capability_alwon_dev_attr,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002250};
2251
2252/* timer3 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00002253static struct omap_hwmod_irq_info omap44xx_timer3_irqs[] = {
2254 { .irq = 39 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002255 { .irq = -1 }
Benoit Cousson35d1a662011-02-11 11:17:14 +00002256};
2257
Benoit Cousson35d1a662011-02-11 11:17:14 +00002258static struct omap_hwmod omap44xx_timer3_hwmod = {
2259 .name = "timer3",
2260 .class = &omap44xx_timer_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002261 .clkdm_name = "l4_per_clkdm",
Benoit Cousson35d1a662011-02-11 11:17:14 +00002262 .mpu_irqs = omap44xx_timer3_irqs,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002263 .main_clk = "timer3_fck",
2264 .prcm = {
2265 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002266 .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER3_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002267 .context_offs = OMAP4_RM_L4PER_DMTIMER3_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002268 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002269 },
2270 },
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +05302271 .dev_attr = &capability_alwon_dev_attr,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002272};
2273
2274/* timer4 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00002275static struct omap_hwmod_irq_info omap44xx_timer4_irqs[] = {
2276 { .irq = 40 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002277 { .irq = -1 }
Benoit Cousson35d1a662011-02-11 11:17:14 +00002278};
2279
Benoit Cousson35d1a662011-02-11 11:17:14 +00002280static struct omap_hwmod omap44xx_timer4_hwmod = {
2281 .name = "timer4",
2282 .class = &omap44xx_timer_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002283 .clkdm_name = "l4_per_clkdm",
Benoit Cousson35d1a662011-02-11 11:17:14 +00002284 .mpu_irqs = omap44xx_timer4_irqs,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002285 .main_clk = "timer4_fck",
2286 .prcm = {
2287 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002288 .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER4_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002289 .context_offs = OMAP4_RM_L4PER_DMTIMER4_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002290 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002291 },
2292 },
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +05302293 .dev_attr = &capability_alwon_dev_attr,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002294};
2295
2296/* timer5 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00002297static struct omap_hwmod_irq_info omap44xx_timer5_irqs[] = {
2298 { .irq = 41 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002299 { .irq = -1 }
Benoit Cousson35d1a662011-02-11 11:17:14 +00002300};
2301
Benoit Cousson35d1a662011-02-11 11:17:14 +00002302static struct omap_hwmod omap44xx_timer5_hwmod = {
2303 .name = "timer5",
2304 .class = &omap44xx_timer_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002305 .clkdm_name = "abe_clkdm",
Benoit Cousson35d1a662011-02-11 11:17:14 +00002306 .mpu_irqs = omap44xx_timer5_irqs,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002307 .main_clk = "timer5_fck",
2308 .prcm = {
2309 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002310 .clkctrl_offs = OMAP4_CM1_ABE_TIMER5_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002311 .context_offs = OMAP4_RM_ABE_TIMER5_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002312 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002313 },
2314 },
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +05302315 .dev_attr = &capability_alwon_dev_attr,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002316};
2317
2318/* timer6 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00002319static struct omap_hwmod_irq_info omap44xx_timer6_irqs[] = {
2320 { .irq = 42 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002321 { .irq = -1 }
Benoit Cousson35d1a662011-02-11 11:17:14 +00002322};
2323
Benoit Cousson35d1a662011-02-11 11:17:14 +00002324static struct omap_hwmod omap44xx_timer6_hwmod = {
2325 .name = "timer6",
2326 .class = &omap44xx_timer_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002327 .clkdm_name = "abe_clkdm",
Benoit Cousson35d1a662011-02-11 11:17:14 +00002328 .mpu_irqs = omap44xx_timer6_irqs,
Paul Walmsley212738a2011-07-09 19:14:06 -06002329
Benoit Cousson35d1a662011-02-11 11:17:14 +00002330 .main_clk = "timer6_fck",
2331 .prcm = {
2332 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002333 .clkctrl_offs = OMAP4_CM1_ABE_TIMER6_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002334 .context_offs = OMAP4_RM_ABE_TIMER6_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002335 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002336 },
2337 },
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +05302338 .dev_attr = &capability_alwon_dev_attr,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002339};
2340
2341/* timer7 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00002342static struct omap_hwmod_irq_info omap44xx_timer7_irqs[] = {
2343 { .irq = 43 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002344 { .irq = -1 }
Benoit Cousson35d1a662011-02-11 11:17:14 +00002345};
2346
Benoit Cousson35d1a662011-02-11 11:17:14 +00002347static struct omap_hwmod omap44xx_timer7_hwmod = {
2348 .name = "timer7",
2349 .class = &omap44xx_timer_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002350 .clkdm_name = "abe_clkdm",
Benoit Cousson35d1a662011-02-11 11:17:14 +00002351 .mpu_irqs = omap44xx_timer7_irqs,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002352 .main_clk = "timer7_fck",
2353 .prcm = {
2354 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002355 .clkctrl_offs = OMAP4_CM1_ABE_TIMER7_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002356 .context_offs = OMAP4_RM_ABE_TIMER7_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002357 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002358 },
2359 },
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +05302360 .dev_attr = &capability_alwon_dev_attr,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002361};
2362
2363/* timer8 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00002364static struct omap_hwmod_irq_info omap44xx_timer8_irqs[] = {
2365 { .irq = 44 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002366 { .irq = -1 }
Benoit Cousson35d1a662011-02-11 11:17:14 +00002367};
2368
Benoit Cousson35d1a662011-02-11 11:17:14 +00002369static struct omap_hwmod omap44xx_timer8_hwmod = {
2370 .name = "timer8",
2371 .class = &omap44xx_timer_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002372 .clkdm_name = "abe_clkdm",
Benoit Cousson35d1a662011-02-11 11:17:14 +00002373 .mpu_irqs = omap44xx_timer8_irqs,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002374 .main_clk = "timer8_fck",
2375 .prcm = {
2376 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002377 .clkctrl_offs = OMAP4_CM1_ABE_TIMER8_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002378 .context_offs = OMAP4_RM_ABE_TIMER8_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002379 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002380 },
2381 },
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +05302382 .dev_attr = &capability_pwm_dev_attr,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002383};
2384
2385/* timer9 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00002386static struct omap_hwmod_irq_info omap44xx_timer9_irqs[] = {
2387 { .irq = 45 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002388 { .irq = -1 }
Benoit Cousson35d1a662011-02-11 11:17:14 +00002389};
2390
Benoit Cousson35d1a662011-02-11 11:17:14 +00002391static struct omap_hwmod omap44xx_timer9_hwmod = {
2392 .name = "timer9",
2393 .class = &omap44xx_timer_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002394 .clkdm_name = "l4_per_clkdm",
Benoit Cousson35d1a662011-02-11 11:17:14 +00002395 .mpu_irqs = omap44xx_timer9_irqs,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002396 .main_clk = "timer9_fck",
2397 .prcm = {
2398 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002399 .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER9_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002400 .context_offs = OMAP4_RM_L4PER_DMTIMER9_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002401 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002402 },
2403 },
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +05302404 .dev_attr = &capability_pwm_dev_attr,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002405};
2406
2407/* timer10 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00002408static struct omap_hwmod_irq_info omap44xx_timer10_irqs[] = {
2409 { .irq = 46 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002410 { .irq = -1 }
Benoit Cousson35d1a662011-02-11 11:17:14 +00002411};
2412
Benoit Cousson35d1a662011-02-11 11:17:14 +00002413static struct omap_hwmod omap44xx_timer10_hwmod = {
2414 .name = "timer10",
2415 .class = &omap44xx_timer_1ms_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002416 .clkdm_name = "l4_per_clkdm",
Benoit Cousson35d1a662011-02-11 11:17:14 +00002417 .mpu_irqs = omap44xx_timer10_irqs,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002418 .main_clk = "timer10_fck",
2419 .prcm = {
2420 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002421 .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER10_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002422 .context_offs = OMAP4_RM_L4PER_DMTIMER10_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002423 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002424 },
2425 },
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +05302426 .dev_attr = &capability_pwm_dev_attr,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002427};
2428
2429/* timer11 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00002430static struct omap_hwmod_irq_info omap44xx_timer11_irqs[] = {
2431 { .irq = 47 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002432 { .irq = -1 }
Benoit Cousson35d1a662011-02-11 11:17:14 +00002433};
2434
Benoit Cousson35d1a662011-02-11 11:17:14 +00002435static struct omap_hwmod omap44xx_timer11_hwmod = {
2436 .name = "timer11",
2437 .class = &omap44xx_timer_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002438 .clkdm_name = "l4_per_clkdm",
Benoit Cousson35d1a662011-02-11 11:17:14 +00002439 .mpu_irqs = omap44xx_timer11_irqs,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002440 .main_clk = "timer11_fck",
2441 .prcm = {
2442 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002443 .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER11_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002444 .context_offs = OMAP4_RM_L4PER_DMTIMER11_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002445 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002446 },
2447 },
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +05302448 .dev_attr = &capability_pwm_dev_attr,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002449};
2450
2451/*
Benoit Coussondb12ba52010-09-27 20:19:19 +05302452 * 'uart' class
2453 * universal asynchronous receiver/transmitter (uart)
2454 */
2455
2456static struct omap_hwmod_class_sysconfig omap44xx_uart_sysc = {
2457 .rev_offs = 0x0050,
2458 .sysc_offs = 0x0054,
2459 .syss_offs = 0x0058,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07002460 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_ENAWAKEUP |
Benoit Cousson0cfe8752010-12-21 21:08:33 -07002461 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
2462 SYSS_HAS_RESET_STATUS),
Benoit Cousson7cffa6b2010-12-21 21:31:28 -07002463 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
2464 SIDLE_SMART_WKUP),
Benoit Coussondb12ba52010-09-27 20:19:19 +05302465 .sysc_fields = &omap_hwmod_sysc_type1,
2466};
2467
2468static struct omap_hwmod_class omap44xx_uart_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +00002469 .name = "uart",
2470 .sysc = &omap44xx_uart_sysc,
Benoit Coussondb12ba52010-09-27 20:19:19 +05302471};
2472
2473/* uart1 */
Benoit Coussondb12ba52010-09-27 20:19:19 +05302474static struct omap_hwmod_irq_info omap44xx_uart1_irqs[] = {
2475 { .irq = 72 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002476 { .irq = -1 }
Benoit Coussondb12ba52010-09-27 20:19:19 +05302477};
2478
2479static struct omap_hwmod_dma_info omap44xx_uart1_sdma_reqs[] = {
2480 { .name = "tx", .dma_req = 48 + OMAP44XX_DMA_REQ_START },
2481 { .name = "rx", .dma_req = 49 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06002482 { .dma_req = -1 }
Benoit Coussondb12ba52010-09-27 20:19:19 +05302483};
2484
Benoit Coussondb12ba52010-09-27 20:19:19 +05302485static struct omap_hwmod omap44xx_uart1_hwmod = {
2486 .name = "uart1",
2487 .class = &omap44xx_uart_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002488 .clkdm_name = "l4_per_clkdm",
Benoit Coussondb12ba52010-09-27 20:19:19 +05302489 .mpu_irqs = omap44xx_uart1_irqs,
Benoit Coussondb12ba52010-09-27 20:19:19 +05302490 .sdma_reqs = omap44xx_uart1_sdma_reqs,
Benoit Coussondb12ba52010-09-27 20:19:19 +05302491 .main_clk = "uart1_fck",
2492 .prcm = {
2493 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002494 .clkctrl_offs = OMAP4_CM_L4PER_UART1_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002495 .context_offs = OMAP4_RM_L4PER_UART1_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002496 .modulemode = MODULEMODE_SWCTRL,
Benoit Coussondb12ba52010-09-27 20:19:19 +05302497 },
2498 },
Benoit Coussondb12ba52010-09-27 20:19:19 +05302499};
2500
2501/* uart2 */
Benoit Coussondb12ba52010-09-27 20:19:19 +05302502static struct omap_hwmod_irq_info omap44xx_uart2_irqs[] = {
2503 { .irq = 73 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002504 { .irq = -1 }
Benoit Coussondb12ba52010-09-27 20:19:19 +05302505};
2506
2507static struct omap_hwmod_dma_info omap44xx_uart2_sdma_reqs[] = {
2508 { .name = "tx", .dma_req = 50 + OMAP44XX_DMA_REQ_START },
2509 { .name = "rx", .dma_req = 51 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06002510 { .dma_req = -1 }
Benoit Coussondb12ba52010-09-27 20:19:19 +05302511};
2512
Benoit Coussondb12ba52010-09-27 20:19:19 +05302513static struct omap_hwmod omap44xx_uart2_hwmod = {
2514 .name = "uart2",
2515 .class = &omap44xx_uart_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002516 .clkdm_name = "l4_per_clkdm",
Benoit Coussondb12ba52010-09-27 20:19:19 +05302517 .mpu_irqs = omap44xx_uart2_irqs,
Benoit Coussondb12ba52010-09-27 20:19:19 +05302518 .sdma_reqs = omap44xx_uart2_sdma_reqs,
Benoit Coussondb12ba52010-09-27 20:19:19 +05302519 .main_clk = "uart2_fck",
2520 .prcm = {
2521 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002522 .clkctrl_offs = OMAP4_CM_L4PER_UART2_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002523 .context_offs = OMAP4_RM_L4PER_UART2_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002524 .modulemode = MODULEMODE_SWCTRL,
Benoit Coussondb12ba52010-09-27 20:19:19 +05302525 },
2526 },
Benoit Coussondb12ba52010-09-27 20:19:19 +05302527};
2528
2529/* uart3 */
Benoit Coussondb12ba52010-09-27 20:19:19 +05302530static struct omap_hwmod_irq_info omap44xx_uart3_irqs[] = {
2531 { .irq = 74 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002532 { .irq = -1 }
Benoit Coussondb12ba52010-09-27 20:19:19 +05302533};
2534
2535static struct omap_hwmod_dma_info omap44xx_uart3_sdma_reqs[] = {
2536 { .name = "tx", .dma_req = 52 + OMAP44XX_DMA_REQ_START },
2537 { .name = "rx", .dma_req = 53 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06002538 { .dma_req = -1 }
Benoit Coussondb12ba52010-09-27 20:19:19 +05302539};
2540
Benoit Coussondb12ba52010-09-27 20:19:19 +05302541static struct omap_hwmod omap44xx_uart3_hwmod = {
2542 .name = "uart3",
2543 .class = &omap44xx_uart_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002544 .clkdm_name = "l4_per_clkdm",
Benoit Cousson7ecc53732011-07-09 19:14:28 -06002545 .flags = HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET,
Benoit Coussondb12ba52010-09-27 20:19:19 +05302546 .mpu_irqs = omap44xx_uart3_irqs,
Benoit Coussondb12ba52010-09-27 20:19:19 +05302547 .sdma_reqs = omap44xx_uart3_sdma_reqs,
Benoit Coussondb12ba52010-09-27 20:19:19 +05302548 .main_clk = "uart3_fck",
2549 .prcm = {
2550 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002551 .clkctrl_offs = OMAP4_CM_L4PER_UART3_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002552 .context_offs = OMAP4_RM_L4PER_UART3_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002553 .modulemode = MODULEMODE_SWCTRL,
Benoit Coussondb12ba52010-09-27 20:19:19 +05302554 },
2555 },
Benoit Coussondb12ba52010-09-27 20:19:19 +05302556};
2557
2558/* uart4 */
Benoit Coussondb12ba52010-09-27 20:19:19 +05302559static struct omap_hwmod_irq_info omap44xx_uart4_irqs[] = {
2560 { .irq = 70 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002561 { .irq = -1 }
Benoit Coussondb12ba52010-09-27 20:19:19 +05302562};
2563
2564static struct omap_hwmod_dma_info omap44xx_uart4_sdma_reqs[] = {
2565 { .name = "tx", .dma_req = 54 + OMAP44XX_DMA_REQ_START },
2566 { .name = "rx", .dma_req = 55 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06002567 { .dma_req = -1 }
Benoit Coussondb12ba52010-09-27 20:19:19 +05302568};
2569
Benoit Coussondb12ba52010-09-27 20:19:19 +05302570static struct omap_hwmod omap44xx_uart4_hwmod = {
2571 .name = "uart4",
2572 .class = &omap44xx_uart_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002573 .clkdm_name = "l4_per_clkdm",
Benoit Coussondb12ba52010-09-27 20:19:19 +05302574 .mpu_irqs = omap44xx_uart4_irqs,
Benoit Coussondb12ba52010-09-27 20:19:19 +05302575 .sdma_reqs = omap44xx_uart4_sdma_reqs,
Benoit Coussondb12ba52010-09-27 20:19:19 +05302576 .main_clk = "uart4_fck",
2577 .prcm = {
2578 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002579 .clkctrl_offs = OMAP4_CM_L4PER_UART4_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002580 .context_offs = OMAP4_RM_L4PER_UART4_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002581 .modulemode = MODULEMODE_SWCTRL,
Benoit Coussondb12ba52010-09-27 20:19:19 +05302582 },
2583 },
Benoit Coussondb12ba52010-09-27 20:19:19 +05302584};
2585
Benoit Cousson9780a9c2010-12-07 16:26:57 -08002586/*
Benoit Coussonaf88fa92011-12-15 23:15:18 -07002587 * 'usb_host_hs' class
2588 * high-speed multi-port usb host controller
2589 */
Benoit Coussonaf88fa92011-12-15 23:15:18 -07002590
2591static struct omap_hwmod_class_sysconfig omap44xx_usb_host_hs_sysc = {
2592 .rev_offs = 0x0000,
2593 .sysc_offs = 0x0010,
2594 .syss_offs = 0x0014,
2595 .sysc_flags = (SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE |
2596 SYSC_HAS_SOFTRESET),
2597 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
2598 SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
2599 MSTANDBY_SMART | MSTANDBY_SMART_WKUP),
2600 .sysc_fields = &omap_hwmod_sysc_type2,
2601};
2602
2603static struct omap_hwmod_class omap44xx_usb_host_hs_hwmod_class = {
Paul Walmsley844a3b62012-04-19 04:04:33 -06002604 .name = "usb_host_hs",
2605 .sysc = &omap44xx_usb_host_hs_sysc,
Benoit Coussonaf88fa92011-12-15 23:15:18 -07002606};
2607
Paul Walmsley844a3b62012-04-19 04:04:33 -06002608/* usb_host_hs */
Benoit Coussonaf88fa92011-12-15 23:15:18 -07002609static struct omap_hwmod_irq_info omap44xx_usb_host_hs_irqs[] = {
2610 { .name = "ohci-irq", .irq = 76 + OMAP44XX_IRQ_GIC_START },
2611 { .name = "ehci-irq", .irq = 77 + OMAP44XX_IRQ_GIC_START },
2612 { .irq = -1 }
2613};
2614
Benoit Coussonaf88fa92011-12-15 23:15:18 -07002615static struct omap_hwmod omap44xx_usb_host_hs_hwmod = {
2616 .name = "usb_host_hs",
2617 .class = &omap44xx_usb_host_hs_hwmod_class,
2618 .clkdm_name = "l3_init_clkdm",
2619 .main_clk = "usb_host_hs_fck",
2620 .prcm = {
2621 .omap4 = {
2622 .clkctrl_offs = OMAP4_CM_L3INIT_USB_HOST_CLKCTRL_OFFSET,
2623 .context_offs = OMAP4_RM_L3INIT_USB_HOST_CONTEXT_OFFSET,
2624 .modulemode = MODULEMODE_SWCTRL,
2625 },
2626 },
2627 .mpu_irqs = omap44xx_usb_host_hs_irqs,
Benoit Coussonaf88fa92011-12-15 23:15:18 -07002628
2629 /*
2630 * Errata: USBHOST Configured In Smart-Idle Can Lead To a Deadlock
2631 * id: i660
2632 *
2633 * Description:
2634 * In the following configuration :
2635 * - USBHOST module is set to smart-idle mode
2636 * - PRCM asserts idle_req to the USBHOST module ( This typically
2637 * happens when the system is going to a low power mode : all ports
2638 * have been suspended, the master part of the USBHOST module has
2639 * entered the standby state, and SW has cut the functional clocks)
2640 * - an USBHOST interrupt occurs before the module is able to answer
2641 * idle_ack, typically a remote wakeup IRQ.
2642 * Then the USB HOST module will enter a deadlock situation where it
2643 * is no more accessible nor functional.
2644 *
2645 * Workaround:
2646 * Don't use smart idle; use only force idle, hence HWMOD_SWSUP_SIDLE
2647 */
2648
2649 /*
2650 * Errata: USB host EHCI may stall when entering smart-standby mode
2651 * Id: i571
2652 *
2653 * Description:
2654 * When the USBHOST module is set to smart-standby mode, and when it is
2655 * ready to enter the standby state (i.e. all ports are suspended and
2656 * all attached devices are in suspend mode), then it can wrongly assert
2657 * the Mstandby signal too early while there are still some residual OCP
2658 * transactions ongoing. If this condition occurs, the internal state
2659 * machine may go to an undefined state and the USB link may be stuck
2660 * upon the next resume.
2661 *
2662 * Workaround:
2663 * Don't use smart standby; use only force standby,
2664 * hence HWMOD_SWSUP_MSTANDBY
2665 */
2666
2667 /*
2668 * During system boot; If the hwmod framework resets the module
2669 * the module will have smart idle settings; which can lead to deadlock
2670 * (above Errata Id:i660); so, dont reset the module during boot;
2671 * Use HWMOD_INIT_NO_RESET.
2672 */
2673
2674 .flags = HWMOD_SWSUP_SIDLE | HWMOD_SWSUP_MSTANDBY |
2675 HWMOD_INIT_NO_RESET,
2676};
2677
2678/*
Paul Walmsley844a3b62012-04-19 04:04:33 -06002679 * 'usb_otg_hs' class
2680 * high-speed on-the-go universal serial bus (usb_otg_hs) controller
2681 */
2682
2683static struct omap_hwmod_class_sysconfig omap44xx_usb_otg_hs_sysc = {
2684 .rev_offs = 0x0400,
2685 .sysc_offs = 0x0404,
2686 .syss_offs = 0x0408,
2687 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_ENAWAKEUP |
2688 SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE |
2689 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
2690 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
2691 SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
2692 MSTANDBY_SMART),
2693 .sysc_fields = &omap_hwmod_sysc_type1,
2694};
2695
2696static struct omap_hwmod_class omap44xx_usb_otg_hs_hwmod_class = {
2697 .name = "usb_otg_hs",
2698 .sysc = &omap44xx_usb_otg_hs_sysc,
2699};
2700
2701/* usb_otg_hs */
2702static struct omap_hwmod_irq_info omap44xx_usb_otg_hs_irqs[] = {
2703 { .name = "mc", .irq = 92 + OMAP44XX_IRQ_GIC_START },
2704 { .name = "dma", .irq = 93 + OMAP44XX_IRQ_GIC_START },
2705 { .irq = -1 }
2706};
2707
2708static struct omap_hwmod_opt_clk usb_otg_hs_opt_clks[] = {
2709 { .role = "xclk", .clk = "usb_otg_hs_xclk" },
2710};
2711
2712static struct omap_hwmod omap44xx_usb_otg_hs_hwmod = {
2713 .name = "usb_otg_hs",
2714 .class = &omap44xx_usb_otg_hs_hwmod_class,
2715 .clkdm_name = "l3_init_clkdm",
2716 .flags = HWMOD_SWSUP_SIDLE | HWMOD_SWSUP_MSTANDBY,
2717 .mpu_irqs = omap44xx_usb_otg_hs_irqs,
2718 .main_clk = "usb_otg_hs_ick",
2719 .prcm = {
2720 .omap4 = {
2721 .clkctrl_offs = OMAP4_CM_L3INIT_USB_OTG_CLKCTRL_OFFSET,
2722 .context_offs = OMAP4_RM_L3INIT_USB_OTG_CONTEXT_OFFSET,
2723 .modulemode = MODULEMODE_HWCTRL,
2724 },
2725 },
2726 .opt_clks = usb_otg_hs_opt_clks,
2727 .opt_clks_cnt = ARRAY_SIZE(usb_otg_hs_opt_clks),
2728};
2729
2730/*
Benoit Coussonaf88fa92011-12-15 23:15:18 -07002731 * 'usb_tll_hs' class
2732 * usb_tll_hs module is the adapter on the usb_host_hs ports
2733 */
Paul Walmsley844a3b62012-04-19 04:04:33 -06002734
Benoit Coussonaf88fa92011-12-15 23:15:18 -07002735static struct omap_hwmod_class_sysconfig omap44xx_usb_tll_hs_sysc = {
2736 .rev_offs = 0x0000,
2737 .sysc_offs = 0x0010,
2738 .syss_offs = 0x0014,
2739 .sysc_flags = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
2740 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
2741 SYSC_HAS_AUTOIDLE),
2742 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
2743 .sysc_fields = &omap_hwmod_sysc_type1,
2744};
2745
2746static struct omap_hwmod_class omap44xx_usb_tll_hs_hwmod_class = {
Paul Walmsley844a3b62012-04-19 04:04:33 -06002747 .name = "usb_tll_hs",
2748 .sysc = &omap44xx_usb_tll_hs_sysc,
Benoit Coussonaf88fa92011-12-15 23:15:18 -07002749};
2750
2751static struct omap_hwmod_irq_info omap44xx_usb_tll_hs_irqs[] = {
2752 { .name = "tll-irq", .irq = 78 + OMAP44XX_IRQ_GIC_START },
2753 { .irq = -1 }
2754};
2755
Paul Walmsley844a3b62012-04-19 04:04:33 -06002756static struct omap_hwmod omap44xx_usb_tll_hs_hwmod = {
2757 .name = "usb_tll_hs",
2758 .class = &omap44xx_usb_tll_hs_hwmod_class,
2759 .clkdm_name = "l3_init_clkdm",
2760 .mpu_irqs = omap44xx_usb_tll_hs_irqs,
2761 .main_clk = "usb_tll_hs_ick",
2762 .prcm = {
2763 .omap4 = {
2764 .clkctrl_offs = OMAP4_CM_L3INIT_USB_TLL_CLKCTRL_OFFSET,
2765 .context_offs = OMAP4_RM_L3INIT_USB_TLL_CONTEXT_OFFSET,
2766 .modulemode = MODULEMODE_HWCTRL,
2767 },
2768 },
2769};
2770
2771/*
2772 * 'wd_timer' class
2773 * 32-bit watchdog upward counter that generates a pulse on the reset pin on
2774 * overflow condition
2775 */
2776
2777static struct omap_hwmod_class_sysconfig omap44xx_wd_timer_sysc = {
2778 .rev_offs = 0x0000,
2779 .sysc_offs = 0x0010,
2780 .syss_offs = 0x0014,
2781 .sysc_flags = (SYSC_HAS_EMUFREE | SYSC_HAS_SIDLEMODE |
2782 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
2783 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
2784 SIDLE_SMART_WKUP),
2785 .sysc_fields = &omap_hwmod_sysc_type1,
2786};
2787
2788static struct omap_hwmod_class omap44xx_wd_timer_hwmod_class = {
2789 .name = "wd_timer",
2790 .sysc = &omap44xx_wd_timer_sysc,
2791 .pre_shutdown = &omap2_wd_timer_disable,
2792};
2793
2794/* wd_timer2 */
2795static struct omap_hwmod_irq_info omap44xx_wd_timer2_irqs[] = {
2796 { .irq = 80 + OMAP44XX_IRQ_GIC_START },
2797 { .irq = -1 }
2798};
2799
2800static struct omap_hwmod omap44xx_wd_timer2_hwmod = {
2801 .name = "wd_timer2",
2802 .class = &omap44xx_wd_timer_hwmod_class,
2803 .clkdm_name = "l4_wkup_clkdm",
2804 .mpu_irqs = omap44xx_wd_timer2_irqs,
2805 .main_clk = "wd_timer2_fck",
2806 .prcm = {
2807 .omap4 = {
2808 .clkctrl_offs = OMAP4_CM_WKUP_WDT2_CLKCTRL_OFFSET,
2809 .context_offs = OMAP4_RM_WKUP_WDT2_CONTEXT_OFFSET,
2810 .modulemode = MODULEMODE_SWCTRL,
2811 },
2812 },
2813};
2814
2815/* wd_timer3 */
2816static struct omap_hwmod_irq_info omap44xx_wd_timer3_irqs[] = {
2817 { .irq = 36 + OMAP44XX_IRQ_GIC_START },
2818 { .irq = -1 }
2819};
2820
2821static struct omap_hwmod omap44xx_wd_timer3_hwmod = {
2822 .name = "wd_timer3",
2823 .class = &omap44xx_wd_timer_hwmod_class,
2824 .clkdm_name = "abe_clkdm",
2825 .mpu_irqs = omap44xx_wd_timer3_irqs,
2826 .main_clk = "wd_timer3_fck",
2827 .prcm = {
2828 .omap4 = {
2829 .clkctrl_offs = OMAP4_CM1_ABE_WDT3_CLKCTRL_OFFSET,
2830 .context_offs = OMAP4_RM_ABE_WDT3_CONTEXT_OFFSET,
2831 .modulemode = MODULEMODE_SWCTRL,
2832 },
2833 },
2834};
2835
2836
2837/*
2838 * interfaces
2839 */
2840
2841/* l3_main_1 -> dmm */
2842static struct omap_hwmod_ocp_if omap44xx_l3_main_1__dmm = {
2843 .master = &omap44xx_l3_main_1_hwmod,
2844 .slave = &omap44xx_dmm_hwmod,
2845 .clk = "l3_div_ck",
2846 .user = OCP_USER_SDMA,
2847};
2848
2849static struct omap_hwmod_addr_space omap44xx_dmm_addrs[] = {
2850 {
2851 .pa_start = 0x4e000000,
2852 .pa_end = 0x4e0007ff,
2853 .flags = ADDR_TYPE_RT
2854 },
2855 { }
2856};
2857
2858/* mpu -> dmm */
2859static struct omap_hwmod_ocp_if omap44xx_mpu__dmm = {
2860 .master = &omap44xx_mpu_hwmod,
2861 .slave = &omap44xx_dmm_hwmod,
2862 .clk = "l3_div_ck",
2863 .addr = omap44xx_dmm_addrs,
2864 .user = OCP_USER_MPU,
2865};
2866
2867/* dmm -> emif_fw */
2868static struct omap_hwmod_ocp_if omap44xx_dmm__emif_fw = {
2869 .master = &omap44xx_dmm_hwmod,
2870 .slave = &omap44xx_emif_fw_hwmod,
2871 .clk = "l3_div_ck",
2872 .user = OCP_USER_MPU | OCP_USER_SDMA,
2873};
2874
2875static struct omap_hwmod_addr_space omap44xx_emif_fw_addrs[] = {
2876 {
2877 .pa_start = 0x4a20c000,
2878 .pa_end = 0x4a20c0ff,
2879 .flags = ADDR_TYPE_RT
2880 },
2881 { }
2882};
2883
2884/* l4_cfg -> emif_fw */
2885static struct omap_hwmod_ocp_if omap44xx_l4_cfg__emif_fw = {
2886 .master = &omap44xx_l4_cfg_hwmod,
2887 .slave = &omap44xx_emif_fw_hwmod,
2888 .clk = "l4_div_ck",
2889 .addr = omap44xx_emif_fw_addrs,
2890 .user = OCP_USER_MPU,
2891};
2892
2893/* iva -> l3_instr */
2894static struct omap_hwmod_ocp_if omap44xx_iva__l3_instr = {
2895 .master = &omap44xx_iva_hwmod,
2896 .slave = &omap44xx_l3_instr_hwmod,
2897 .clk = "l3_div_ck",
2898 .user = OCP_USER_MPU | OCP_USER_SDMA,
2899};
2900
2901/* l3_main_3 -> l3_instr */
2902static struct omap_hwmod_ocp_if omap44xx_l3_main_3__l3_instr = {
2903 .master = &omap44xx_l3_main_3_hwmod,
2904 .slave = &omap44xx_l3_instr_hwmod,
2905 .clk = "l3_div_ck",
2906 .user = OCP_USER_MPU | OCP_USER_SDMA,
2907};
2908
2909/* dsp -> l3_main_1 */
2910static struct omap_hwmod_ocp_if omap44xx_dsp__l3_main_1 = {
2911 .master = &omap44xx_dsp_hwmod,
2912 .slave = &omap44xx_l3_main_1_hwmod,
2913 .clk = "l3_div_ck",
2914 .user = OCP_USER_MPU | OCP_USER_SDMA,
2915};
2916
2917/* dss -> l3_main_1 */
2918static struct omap_hwmod_ocp_if omap44xx_dss__l3_main_1 = {
2919 .master = &omap44xx_dss_hwmod,
2920 .slave = &omap44xx_l3_main_1_hwmod,
2921 .clk = "l3_div_ck",
2922 .user = OCP_USER_MPU | OCP_USER_SDMA,
2923};
2924
2925/* l3_main_2 -> l3_main_1 */
2926static struct omap_hwmod_ocp_if omap44xx_l3_main_2__l3_main_1 = {
2927 .master = &omap44xx_l3_main_2_hwmod,
2928 .slave = &omap44xx_l3_main_1_hwmod,
2929 .clk = "l3_div_ck",
2930 .user = OCP_USER_MPU | OCP_USER_SDMA,
2931};
2932
2933/* l4_cfg -> l3_main_1 */
2934static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l3_main_1 = {
2935 .master = &omap44xx_l4_cfg_hwmod,
2936 .slave = &omap44xx_l3_main_1_hwmod,
2937 .clk = "l4_div_ck",
2938 .user = OCP_USER_MPU | OCP_USER_SDMA,
2939};
2940
2941/* mmc1 -> l3_main_1 */
2942static struct omap_hwmod_ocp_if omap44xx_mmc1__l3_main_1 = {
2943 .master = &omap44xx_mmc1_hwmod,
2944 .slave = &omap44xx_l3_main_1_hwmod,
2945 .clk = "l3_div_ck",
2946 .user = OCP_USER_MPU | OCP_USER_SDMA,
2947};
2948
2949/* mmc2 -> l3_main_1 */
2950static struct omap_hwmod_ocp_if omap44xx_mmc2__l3_main_1 = {
2951 .master = &omap44xx_mmc2_hwmod,
2952 .slave = &omap44xx_l3_main_1_hwmod,
2953 .clk = "l3_div_ck",
2954 .user = OCP_USER_MPU | OCP_USER_SDMA,
2955};
2956
2957static struct omap_hwmod_addr_space omap44xx_l3_main_1_addrs[] = {
2958 {
2959 .pa_start = 0x44000000,
2960 .pa_end = 0x44000fff,
2961 .flags = ADDR_TYPE_RT
2962 },
2963 { }
2964};
2965
2966/* mpu -> l3_main_1 */
2967static struct omap_hwmod_ocp_if omap44xx_mpu__l3_main_1 = {
2968 .master = &omap44xx_mpu_hwmod,
2969 .slave = &omap44xx_l3_main_1_hwmod,
2970 .clk = "l3_div_ck",
2971 .addr = omap44xx_l3_main_1_addrs,
2972 .user = OCP_USER_MPU,
2973};
2974
2975/* dma_system -> l3_main_2 */
2976static struct omap_hwmod_ocp_if omap44xx_dma_system__l3_main_2 = {
2977 .master = &omap44xx_dma_system_hwmod,
2978 .slave = &omap44xx_l3_main_2_hwmod,
2979 .clk = "l3_div_ck",
2980 .user = OCP_USER_MPU | OCP_USER_SDMA,
2981};
2982
2983/* hsi -> l3_main_2 */
2984static struct omap_hwmod_ocp_if omap44xx_hsi__l3_main_2 = {
2985 .master = &omap44xx_hsi_hwmod,
2986 .slave = &omap44xx_l3_main_2_hwmod,
2987 .clk = "l3_div_ck",
2988 .user = OCP_USER_MPU | OCP_USER_SDMA,
2989};
2990
2991/* ipu -> l3_main_2 */
2992static struct omap_hwmod_ocp_if omap44xx_ipu__l3_main_2 = {
2993 .master = &omap44xx_ipu_hwmod,
2994 .slave = &omap44xx_l3_main_2_hwmod,
2995 .clk = "l3_div_ck",
2996 .user = OCP_USER_MPU | OCP_USER_SDMA,
2997};
2998
2999/* iss -> l3_main_2 */
3000static struct omap_hwmod_ocp_if omap44xx_iss__l3_main_2 = {
3001 .master = &omap44xx_iss_hwmod,
3002 .slave = &omap44xx_l3_main_2_hwmod,
3003 .clk = "l3_div_ck",
3004 .user = OCP_USER_MPU | OCP_USER_SDMA,
3005};
3006
3007/* iva -> l3_main_2 */
3008static struct omap_hwmod_ocp_if omap44xx_iva__l3_main_2 = {
3009 .master = &omap44xx_iva_hwmod,
3010 .slave = &omap44xx_l3_main_2_hwmod,
3011 .clk = "l3_div_ck",
3012 .user = OCP_USER_MPU | OCP_USER_SDMA,
3013};
3014
3015static struct omap_hwmod_addr_space omap44xx_l3_main_2_addrs[] = {
3016 {
3017 .pa_start = 0x44800000,
3018 .pa_end = 0x44801fff,
3019 .flags = ADDR_TYPE_RT
3020 },
3021 { }
3022};
3023
3024/* l3_main_1 -> l3_main_2 */
3025static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l3_main_2 = {
3026 .master = &omap44xx_l3_main_1_hwmod,
3027 .slave = &omap44xx_l3_main_2_hwmod,
3028 .clk = "l3_div_ck",
3029 .addr = omap44xx_l3_main_2_addrs,
3030 .user = OCP_USER_MPU,
3031};
3032
3033/* l4_cfg -> l3_main_2 */
3034static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l3_main_2 = {
3035 .master = &omap44xx_l4_cfg_hwmod,
3036 .slave = &omap44xx_l3_main_2_hwmod,
3037 .clk = "l4_div_ck",
3038 .user = OCP_USER_MPU | OCP_USER_SDMA,
3039};
3040
3041/* usb_host_hs -> l3_main_2 */
3042static struct omap_hwmod_ocp_if omap44xx_usb_host_hs__l3_main_2 = {
3043 .master = &omap44xx_usb_host_hs_hwmod,
3044 .slave = &omap44xx_l3_main_2_hwmod,
3045 .clk = "l3_div_ck",
3046 .user = OCP_USER_MPU | OCP_USER_SDMA,
3047};
3048
3049/* usb_otg_hs -> l3_main_2 */
3050static struct omap_hwmod_ocp_if omap44xx_usb_otg_hs__l3_main_2 = {
3051 .master = &omap44xx_usb_otg_hs_hwmod,
3052 .slave = &omap44xx_l3_main_2_hwmod,
3053 .clk = "l3_div_ck",
3054 .user = OCP_USER_MPU | OCP_USER_SDMA,
3055};
3056
3057static struct omap_hwmod_addr_space omap44xx_l3_main_3_addrs[] = {
3058 {
3059 .pa_start = 0x45000000,
3060 .pa_end = 0x45000fff,
3061 .flags = ADDR_TYPE_RT
3062 },
3063 { }
3064};
3065
3066/* l3_main_1 -> l3_main_3 */
3067static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l3_main_3 = {
3068 .master = &omap44xx_l3_main_1_hwmod,
3069 .slave = &omap44xx_l3_main_3_hwmod,
3070 .clk = "l3_div_ck",
3071 .addr = omap44xx_l3_main_3_addrs,
3072 .user = OCP_USER_MPU,
3073};
3074
3075/* l3_main_2 -> l3_main_3 */
3076static struct omap_hwmod_ocp_if omap44xx_l3_main_2__l3_main_3 = {
3077 .master = &omap44xx_l3_main_2_hwmod,
3078 .slave = &omap44xx_l3_main_3_hwmod,
3079 .clk = "l3_div_ck",
3080 .user = OCP_USER_MPU | OCP_USER_SDMA,
3081};
3082
3083/* l4_cfg -> l3_main_3 */
3084static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l3_main_3 = {
3085 .master = &omap44xx_l4_cfg_hwmod,
3086 .slave = &omap44xx_l3_main_3_hwmod,
3087 .clk = "l4_div_ck",
3088 .user = OCP_USER_MPU | OCP_USER_SDMA,
3089};
3090
3091/* aess -> l4_abe */
3092static struct omap_hwmod_ocp_if omap44xx_aess__l4_abe = {
3093 .master = &omap44xx_aess_hwmod,
3094 .slave = &omap44xx_l4_abe_hwmod,
3095 .clk = "ocp_abe_iclk",
3096 .user = OCP_USER_MPU | OCP_USER_SDMA,
3097};
3098
3099/* dsp -> l4_abe */
3100static struct omap_hwmod_ocp_if omap44xx_dsp__l4_abe = {
3101 .master = &omap44xx_dsp_hwmod,
3102 .slave = &omap44xx_l4_abe_hwmod,
3103 .clk = "ocp_abe_iclk",
3104 .user = OCP_USER_MPU | OCP_USER_SDMA,
3105};
3106
3107/* l3_main_1 -> l4_abe */
3108static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l4_abe = {
3109 .master = &omap44xx_l3_main_1_hwmod,
3110 .slave = &omap44xx_l4_abe_hwmod,
3111 .clk = "l3_div_ck",
3112 .user = OCP_USER_MPU | OCP_USER_SDMA,
3113};
3114
3115/* mpu -> l4_abe */
3116static struct omap_hwmod_ocp_if omap44xx_mpu__l4_abe = {
3117 .master = &omap44xx_mpu_hwmod,
3118 .slave = &omap44xx_l4_abe_hwmod,
3119 .clk = "ocp_abe_iclk",
3120 .user = OCP_USER_MPU | OCP_USER_SDMA,
3121};
3122
3123/* l3_main_1 -> l4_cfg */
3124static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l4_cfg = {
3125 .master = &omap44xx_l3_main_1_hwmod,
3126 .slave = &omap44xx_l4_cfg_hwmod,
3127 .clk = "l3_div_ck",
3128 .user = OCP_USER_MPU | OCP_USER_SDMA,
3129};
3130
3131/* l3_main_2 -> l4_per */
3132static struct omap_hwmod_ocp_if omap44xx_l3_main_2__l4_per = {
3133 .master = &omap44xx_l3_main_2_hwmod,
3134 .slave = &omap44xx_l4_per_hwmod,
3135 .clk = "l3_div_ck",
3136 .user = OCP_USER_MPU | OCP_USER_SDMA,
3137};
3138
3139/* l4_cfg -> l4_wkup */
3140static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l4_wkup = {
3141 .master = &omap44xx_l4_cfg_hwmod,
3142 .slave = &omap44xx_l4_wkup_hwmod,
3143 .clk = "l4_div_ck",
3144 .user = OCP_USER_MPU | OCP_USER_SDMA,
3145};
3146
3147/* mpu -> mpu_private */
3148static struct omap_hwmod_ocp_if omap44xx_mpu__mpu_private = {
3149 .master = &omap44xx_mpu_hwmod,
3150 .slave = &omap44xx_mpu_private_hwmod,
3151 .clk = "l3_div_ck",
3152 .user = OCP_USER_MPU | OCP_USER_SDMA,
3153};
3154
3155static struct omap_hwmod_addr_space omap44xx_aess_addrs[] = {
3156 {
3157 .pa_start = 0x401f1000,
3158 .pa_end = 0x401f13ff,
3159 .flags = ADDR_TYPE_RT
3160 },
3161 { }
3162};
3163
3164/* l4_abe -> aess */
3165static struct omap_hwmod_ocp_if omap44xx_l4_abe__aess = {
3166 .master = &omap44xx_l4_abe_hwmod,
3167 .slave = &omap44xx_aess_hwmod,
3168 .clk = "ocp_abe_iclk",
3169 .addr = omap44xx_aess_addrs,
3170 .user = OCP_USER_MPU,
3171};
3172
3173static struct omap_hwmod_addr_space omap44xx_aess_dma_addrs[] = {
3174 {
3175 .pa_start = 0x490f1000,
3176 .pa_end = 0x490f13ff,
3177 .flags = ADDR_TYPE_RT
3178 },
3179 { }
3180};
3181
3182/* l4_abe -> aess (dma) */
3183static struct omap_hwmod_ocp_if omap44xx_l4_abe__aess_dma = {
3184 .master = &omap44xx_l4_abe_hwmod,
3185 .slave = &omap44xx_aess_hwmod,
3186 .clk = "ocp_abe_iclk",
3187 .addr = omap44xx_aess_dma_addrs,
3188 .user = OCP_USER_SDMA,
3189};
3190
3191static struct omap_hwmod_addr_space omap44xx_counter_32k_addrs[] = {
3192 {
3193 .pa_start = 0x4a304000,
3194 .pa_end = 0x4a30401f,
3195 .flags = ADDR_TYPE_RT
3196 },
3197 { }
3198};
3199
3200/* l4_wkup -> counter_32k */
3201static struct omap_hwmod_ocp_if omap44xx_l4_wkup__counter_32k = {
3202 .master = &omap44xx_l4_wkup_hwmod,
3203 .slave = &omap44xx_counter_32k_hwmod,
3204 .clk = "l4_wkup_clk_mux_ck",
3205 .addr = omap44xx_counter_32k_addrs,
3206 .user = OCP_USER_MPU | OCP_USER_SDMA,
3207};
3208
3209static struct omap_hwmod_addr_space omap44xx_dma_system_addrs[] = {
3210 {
3211 .pa_start = 0x4a056000,
3212 .pa_end = 0x4a056fff,
3213 .flags = ADDR_TYPE_RT
3214 },
3215 { }
3216};
3217
3218/* l4_cfg -> dma_system */
3219static struct omap_hwmod_ocp_if omap44xx_l4_cfg__dma_system = {
3220 .master = &omap44xx_l4_cfg_hwmod,
3221 .slave = &omap44xx_dma_system_hwmod,
3222 .clk = "l4_div_ck",
3223 .addr = omap44xx_dma_system_addrs,
3224 .user = OCP_USER_MPU | OCP_USER_SDMA,
3225};
3226
3227static struct omap_hwmod_addr_space omap44xx_dmic_addrs[] = {
3228 {
3229 .name = "mpu",
3230 .pa_start = 0x4012e000,
3231 .pa_end = 0x4012e07f,
3232 .flags = ADDR_TYPE_RT
3233 },
3234 { }
3235};
3236
3237/* l4_abe -> dmic */
3238static struct omap_hwmod_ocp_if omap44xx_l4_abe__dmic = {
3239 .master = &omap44xx_l4_abe_hwmod,
3240 .slave = &omap44xx_dmic_hwmod,
3241 .clk = "ocp_abe_iclk",
3242 .addr = omap44xx_dmic_addrs,
3243 .user = OCP_USER_MPU,
3244};
3245
3246static struct omap_hwmod_addr_space omap44xx_dmic_dma_addrs[] = {
3247 {
3248 .name = "dma",
3249 .pa_start = 0x4902e000,
3250 .pa_end = 0x4902e07f,
3251 .flags = ADDR_TYPE_RT
3252 },
3253 { }
3254};
3255
3256/* l4_abe -> dmic (dma) */
3257static struct omap_hwmod_ocp_if omap44xx_l4_abe__dmic_dma = {
3258 .master = &omap44xx_l4_abe_hwmod,
3259 .slave = &omap44xx_dmic_hwmod,
3260 .clk = "ocp_abe_iclk",
3261 .addr = omap44xx_dmic_dma_addrs,
3262 .user = OCP_USER_SDMA,
3263};
3264
3265/* dsp -> iva */
3266static struct omap_hwmod_ocp_if omap44xx_dsp__iva = {
3267 .master = &omap44xx_dsp_hwmod,
3268 .slave = &omap44xx_iva_hwmod,
3269 .clk = "dpll_iva_m5x2_ck",
3270 .user = OCP_USER_DSP,
3271};
3272
3273/* l4_cfg -> dsp */
3274static struct omap_hwmod_ocp_if omap44xx_l4_cfg__dsp = {
3275 .master = &omap44xx_l4_cfg_hwmod,
3276 .slave = &omap44xx_dsp_hwmod,
3277 .clk = "l4_div_ck",
3278 .user = OCP_USER_MPU | OCP_USER_SDMA,
3279};
3280
3281static struct omap_hwmod_addr_space omap44xx_dss_dma_addrs[] = {
3282 {
3283 .pa_start = 0x58000000,
3284 .pa_end = 0x5800007f,
3285 .flags = ADDR_TYPE_RT
3286 },
3287 { }
3288};
3289
3290/* l3_main_2 -> dss */
3291static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss = {
3292 .master = &omap44xx_l3_main_2_hwmod,
3293 .slave = &omap44xx_dss_hwmod,
3294 .clk = "dss_fck",
3295 .addr = omap44xx_dss_dma_addrs,
3296 .user = OCP_USER_SDMA,
3297};
3298
3299static struct omap_hwmod_addr_space omap44xx_dss_addrs[] = {
3300 {
3301 .pa_start = 0x48040000,
3302 .pa_end = 0x4804007f,
3303 .flags = ADDR_TYPE_RT
3304 },
3305 { }
3306};
3307
3308/* l4_per -> dss */
3309static struct omap_hwmod_ocp_if omap44xx_l4_per__dss = {
3310 .master = &omap44xx_l4_per_hwmod,
3311 .slave = &omap44xx_dss_hwmod,
3312 .clk = "l4_div_ck",
3313 .addr = omap44xx_dss_addrs,
3314 .user = OCP_USER_MPU,
3315};
3316
3317static struct omap_hwmod_addr_space omap44xx_dss_dispc_dma_addrs[] = {
3318 {
3319 .pa_start = 0x58001000,
3320 .pa_end = 0x58001fff,
3321 .flags = ADDR_TYPE_RT
3322 },
3323 { }
3324};
3325
3326/* l3_main_2 -> dss_dispc */
3327static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_dispc = {
3328 .master = &omap44xx_l3_main_2_hwmod,
3329 .slave = &omap44xx_dss_dispc_hwmod,
3330 .clk = "dss_fck",
3331 .addr = omap44xx_dss_dispc_dma_addrs,
3332 .user = OCP_USER_SDMA,
3333};
3334
3335static struct omap_hwmod_addr_space omap44xx_dss_dispc_addrs[] = {
3336 {
3337 .pa_start = 0x48041000,
3338 .pa_end = 0x48041fff,
3339 .flags = ADDR_TYPE_RT
3340 },
3341 { }
3342};
3343
3344/* l4_per -> dss_dispc */
3345static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_dispc = {
3346 .master = &omap44xx_l4_per_hwmod,
3347 .slave = &omap44xx_dss_dispc_hwmod,
3348 .clk = "l4_div_ck",
3349 .addr = omap44xx_dss_dispc_addrs,
3350 .user = OCP_USER_MPU,
3351};
3352
3353static struct omap_hwmod_addr_space omap44xx_dss_dsi1_dma_addrs[] = {
3354 {
3355 .pa_start = 0x58004000,
3356 .pa_end = 0x580041ff,
3357 .flags = ADDR_TYPE_RT
3358 },
3359 { }
3360};
3361
3362/* l3_main_2 -> dss_dsi1 */
3363static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_dsi1 = {
3364 .master = &omap44xx_l3_main_2_hwmod,
3365 .slave = &omap44xx_dss_dsi1_hwmod,
3366 .clk = "dss_fck",
3367 .addr = omap44xx_dss_dsi1_dma_addrs,
3368 .user = OCP_USER_SDMA,
3369};
3370
3371static struct omap_hwmod_addr_space omap44xx_dss_dsi1_addrs[] = {
3372 {
3373 .pa_start = 0x48044000,
3374 .pa_end = 0x480441ff,
3375 .flags = ADDR_TYPE_RT
3376 },
3377 { }
3378};
3379
3380/* l4_per -> dss_dsi1 */
3381static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_dsi1 = {
3382 .master = &omap44xx_l4_per_hwmod,
3383 .slave = &omap44xx_dss_dsi1_hwmod,
3384 .clk = "l4_div_ck",
3385 .addr = omap44xx_dss_dsi1_addrs,
3386 .user = OCP_USER_MPU,
3387};
3388
3389static struct omap_hwmod_addr_space omap44xx_dss_dsi2_dma_addrs[] = {
3390 {
3391 .pa_start = 0x58005000,
3392 .pa_end = 0x580051ff,
3393 .flags = ADDR_TYPE_RT
3394 },
3395 { }
3396};
3397
3398/* l3_main_2 -> dss_dsi2 */
3399static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_dsi2 = {
3400 .master = &omap44xx_l3_main_2_hwmod,
3401 .slave = &omap44xx_dss_dsi2_hwmod,
3402 .clk = "dss_fck",
3403 .addr = omap44xx_dss_dsi2_dma_addrs,
3404 .user = OCP_USER_SDMA,
3405};
3406
3407static struct omap_hwmod_addr_space omap44xx_dss_dsi2_addrs[] = {
3408 {
3409 .pa_start = 0x48045000,
3410 .pa_end = 0x480451ff,
3411 .flags = ADDR_TYPE_RT
3412 },
3413 { }
3414};
3415
3416/* l4_per -> dss_dsi2 */
3417static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_dsi2 = {
3418 .master = &omap44xx_l4_per_hwmod,
3419 .slave = &omap44xx_dss_dsi2_hwmod,
3420 .clk = "l4_div_ck",
3421 .addr = omap44xx_dss_dsi2_addrs,
3422 .user = OCP_USER_MPU,
3423};
3424
3425static struct omap_hwmod_addr_space omap44xx_dss_hdmi_dma_addrs[] = {
3426 {
3427 .pa_start = 0x58006000,
3428 .pa_end = 0x58006fff,
3429 .flags = ADDR_TYPE_RT
3430 },
3431 { }
3432};
3433
3434/* l3_main_2 -> dss_hdmi */
3435static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_hdmi = {
3436 .master = &omap44xx_l3_main_2_hwmod,
3437 .slave = &omap44xx_dss_hdmi_hwmod,
3438 .clk = "dss_fck",
3439 .addr = omap44xx_dss_hdmi_dma_addrs,
3440 .user = OCP_USER_SDMA,
3441};
3442
3443static struct omap_hwmod_addr_space omap44xx_dss_hdmi_addrs[] = {
3444 {
3445 .pa_start = 0x48046000,
3446 .pa_end = 0x48046fff,
3447 .flags = ADDR_TYPE_RT
3448 },
3449 { }
3450};
3451
3452/* l4_per -> dss_hdmi */
3453static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_hdmi = {
3454 .master = &omap44xx_l4_per_hwmod,
3455 .slave = &omap44xx_dss_hdmi_hwmod,
3456 .clk = "l4_div_ck",
3457 .addr = omap44xx_dss_hdmi_addrs,
3458 .user = OCP_USER_MPU,
3459};
3460
3461static struct omap_hwmod_addr_space omap44xx_dss_rfbi_dma_addrs[] = {
3462 {
3463 .pa_start = 0x58002000,
3464 .pa_end = 0x580020ff,
3465 .flags = ADDR_TYPE_RT
3466 },
3467 { }
3468};
3469
3470/* l3_main_2 -> dss_rfbi */
3471static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_rfbi = {
3472 .master = &omap44xx_l3_main_2_hwmod,
3473 .slave = &omap44xx_dss_rfbi_hwmod,
3474 .clk = "dss_fck",
3475 .addr = omap44xx_dss_rfbi_dma_addrs,
3476 .user = OCP_USER_SDMA,
3477};
3478
3479static struct omap_hwmod_addr_space omap44xx_dss_rfbi_addrs[] = {
3480 {
3481 .pa_start = 0x48042000,
3482 .pa_end = 0x480420ff,
3483 .flags = ADDR_TYPE_RT
3484 },
3485 { }
3486};
3487
3488/* l4_per -> dss_rfbi */
3489static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_rfbi = {
3490 .master = &omap44xx_l4_per_hwmod,
3491 .slave = &omap44xx_dss_rfbi_hwmod,
3492 .clk = "l4_div_ck",
3493 .addr = omap44xx_dss_rfbi_addrs,
3494 .user = OCP_USER_MPU,
3495};
3496
3497static struct omap_hwmod_addr_space omap44xx_dss_venc_dma_addrs[] = {
3498 {
3499 .pa_start = 0x58003000,
3500 .pa_end = 0x580030ff,
3501 .flags = ADDR_TYPE_RT
3502 },
3503 { }
3504};
3505
3506/* l3_main_2 -> dss_venc */
3507static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_venc = {
3508 .master = &omap44xx_l3_main_2_hwmod,
3509 .slave = &omap44xx_dss_venc_hwmod,
3510 .clk = "dss_fck",
3511 .addr = omap44xx_dss_venc_dma_addrs,
3512 .user = OCP_USER_SDMA,
3513};
3514
3515static struct omap_hwmod_addr_space omap44xx_dss_venc_addrs[] = {
3516 {
3517 .pa_start = 0x48043000,
3518 .pa_end = 0x480430ff,
3519 .flags = ADDR_TYPE_RT
3520 },
3521 { }
3522};
3523
3524/* l4_per -> dss_venc */
3525static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_venc = {
3526 .master = &omap44xx_l4_per_hwmod,
3527 .slave = &omap44xx_dss_venc_hwmod,
3528 .clk = "l4_div_ck",
3529 .addr = omap44xx_dss_venc_addrs,
3530 .user = OCP_USER_MPU,
3531};
3532
3533static struct omap_hwmod_addr_space omap44xx_gpio1_addrs[] = {
3534 {
3535 .pa_start = 0x4a310000,
3536 .pa_end = 0x4a3101ff,
3537 .flags = ADDR_TYPE_RT
3538 },
3539 { }
3540};
3541
3542/* l4_wkup -> gpio1 */
3543static struct omap_hwmod_ocp_if omap44xx_l4_wkup__gpio1 = {
3544 .master = &omap44xx_l4_wkup_hwmod,
3545 .slave = &omap44xx_gpio1_hwmod,
3546 .clk = "l4_wkup_clk_mux_ck",
3547 .addr = omap44xx_gpio1_addrs,
3548 .user = OCP_USER_MPU | OCP_USER_SDMA,
3549};
3550
3551static struct omap_hwmod_addr_space omap44xx_gpio2_addrs[] = {
3552 {
3553 .pa_start = 0x48055000,
3554 .pa_end = 0x480551ff,
3555 .flags = ADDR_TYPE_RT
3556 },
3557 { }
3558};
3559
3560/* l4_per -> gpio2 */
3561static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio2 = {
3562 .master = &omap44xx_l4_per_hwmod,
3563 .slave = &omap44xx_gpio2_hwmod,
3564 .clk = "l4_div_ck",
3565 .addr = omap44xx_gpio2_addrs,
3566 .user = OCP_USER_MPU | OCP_USER_SDMA,
3567};
3568
3569static struct omap_hwmod_addr_space omap44xx_gpio3_addrs[] = {
3570 {
3571 .pa_start = 0x48057000,
3572 .pa_end = 0x480571ff,
3573 .flags = ADDR_TYPE_RT
3574 },
3575 { }
3576};
3577
3578/* l4_per -> gpio3 */
3579static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio3 = {
3580 .master = &omap44xx_l4_per_hwmod,
3581 .slave = &omap44xx_gpio3_hwmod,
3582 .clk = "l4_div_ck",
3583 .addr = omap44xx_gpio3_addrs,
3584 .user = OCP_USER_MPU | OCP_USER_SDMA,
3585};
3586
3587static struct omap_hwmod_addr_space omap44xx_gpio4_addrs[] = {
3588 {
3589 .pa_start = 0x48059000,
3590 .pa_end = 0x480591ff,
3591 .flags = ADDR_TYPE_RT
3592 },
3593 { }
3594};
3595
3596/* l4_per -> gpio4 */
3597static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio4 = {
3598 .master = &omap44xx_l4_per_hwmod,
3599 .slave = &omap44xx_gpio4_hwmod,
3600 .clk = "l4_div_ck",
3601 .addr = omap44xx_gpio4_addrs,
3602 .user = OCP_USER_MPU | OCP_USER_SDMA,
3603};
3604
3605static struct omap_hwmod_addr_space omap44xx_gpio5_addrs[] = {
3606 {
3607 .pa_start = 0x4805b000,
3608 .pa_end = 0x4805b1ff,
3609 .flags = ADDR_TYPE_RT
3610 },
3611 { }
3612};
3613
3614/* l4_per -> gpio5 */
3615static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio5 = {
3616 .master = &omap44xx_l4_per_hwmod,
3617 .slave = &omap44xx_gpio5_hwmod,
3618 .clk = "l4_div_ck",
3619 .addr = omap44xx_gpio5_addrs,
3620 .user = OCP_USER_MPU | OCP_USER_SDMA,
3621};
3622
3623static struct omap_hwmod_addr_space omap44xx_gpio6_addrs[] = {
3624 {
3625 .pa_start = 0x4805d000,
3626 .pa_end = 0x4805d1ff,
3627 .flags = ADDR_TYPE_RT
3628 },
3629 { }
3630};
3631
3632/* l4_per -> gpio6 */
3633static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio6 = {
3634 .master = &omap44xx_l4_per_hwmod,
3635 .slave = &omap44xx_gpio6_hwmod,
3636 .clk = "l4_div_ck",
3637 .addr = omap44xx_gpio6_addrs,
3638 .user = OCP_USER_MPU | OCP_USER_SDMA,
3639};
3640
3641static struct omap_hwmod_addr_space omap44xx_hsi_addrs[] = {
3642 {
3643 .pa_start = 0x4a058000,
3644 .pa_end = 0x4a05bfff,
3645 .flags = ADDR_TYPE_RT
3646 },
3647 { }
3648};
3649
3650/* l4_cfg -> hsi */
3651static struct omap_hwmod_ocp_if omap44xx_l4_cfg__hsi = {
3652 .master = &omap44xx_l4_cfg_hwmod,
3653 .slave = &omap44xx_hsi_hwmod,
3654 .clk = "l4_div_ck",
3655 .addr = omap44xx_hsi_addrs,
3656 .user = OCP_USER_MPU | OCP_USER_SDMA,
3657};
3658
3659static struct omap_hwmod_addr_space omap44xx_i2c1_addrs[] = {
3660 {
3661 .pa_start = 0x48070000,
3662 .pa_end = 0x480700ff,
3663 .flags = ADDR_TYPE_RT
3664 },
3665 { }
3666};
3667
3668/* l4_per -> i2c1 */
3669static struct omap_hwmod_ocp_if omap44xx_l4_per__i2c1 = {
3670 .master = &omap44xx_l4_per_hwmod,
3671 .slave = &omap44xx_i2c1_hwmod,
3672 .clk = "l4_div_ck",
3673 .addr = omap44xx_i2c1_addrs,
3674 .user = OCP_USER_MPU | OCP_USER_SDMA,
3675};
3676
3677static struct omap_hwmod_addr_space omap44xx_i2c2_addrs[] = {
3678 {
3679 .pa_start = 0x48072000,
3680 .pa_end = 0x480720ff,
3681 .flags = ADDR_TYPE_RT
3682 },
3683 { }
3684};
3685
3686/* l4_per -> i2c2 */
3687static struct omap_hwmod_ocp_if omap44xx_l4_per__i2c2 = {
3688 .master = &omap44xx_l4_per_hwmod,
3689 .slave = &omap44xx_i2c2_hwmod,
3690 .clk = "l4_div_ck",
3691 .addr = omap44xx_i2c2_addrs,
3692 .user = OCP_USER_MPU | OCP_USER_SDMA,
3693};
3694
3695static struct omap_hwmod_addr_space omap44xx_i2c3_addrs[] = {
3696 {
3697 .pa_start = 0x48060000,
3698 .pa_end = 0x480600ff,
3699 .flags = ADDR_TYPE_RT
3700 },
3701 { }
3702};
3703
3704/* l4_per -> i2c3 */
3705static struct omap_hwmod_ocp_if omap44xx_l4_per__i2c3 = {
3706 .master = &omap44xx_l4_per_hwmod,
3707 .slave = &omap44xx_i2c3_hwmod,
3708 .clk = "l4_div_ck",
3709 .addr = omap44xx_i2c3_addrs,
3710 .user = OCP_USER_MPU | OCP_USER_SDMA,
3711};
3712
3713static struct omap_hwmod_addr_space omap44xx_i2c4_addrs[] = {
3714 {
3715 .pa_start = 0x48350000,
3716 .pa_end = 0x483500ff,
3717 .flags = ADDR_TYPE_RT
3718 },
3719 { }
3720};
3721
3722/* l4_per -> i2c4 */
3723static struct omap_hwmod_ocp_if omap44xx_l4_per__i2c4 = {
3724 .master = &omap44xx_l4_per_hwmod,
3725 .slave = &omap44xx_i2c4_hwmod,
3726 .clk = "l4_div_ck",
3727 .addr = omap44xx_i2c4_addrs,
3728 .user = OCP_USER_MPU | OCP_USER_SDMA,
3729};
3730
3731/* l3_main_2 -> ipu */
3732static struct omap_hwmod_ocp_if omap44xx_l3_main_2__ipu = {
3733 .master = &omap44xx_l3_main_2_hwmod,
3734 .slave = &omap44xx_ipu_hwmod,
3735 .clk = "l3_div_ck",
3736 .user = OCP_USER_MPU | OCP_USER_SDMA,
3737};
3738
3739static struct omap_hwmod_addr_space omap44xx_iss_addrs[] = {
3740 {
3741 .pa_start = 0x52000000,
3742 .pa_end = 0x520000ff,
3743 .flags = ADDR_TYPE_RT
3744 },
3745 { }
3746};
3747
3748/* l3_main_2 -> iss */
3749static struct omap_hwmod_ocp_if omap44xx_l3_main_2__iss = {
3750 .master = &omap44xx_l3_main_2_hwmod,
3751 .slave = &omap44xx_iss_hwmod,
3752 .clk = "l3_div_ck",
3753 .addr = omap44xx_iss_addrs,
3754 .user = OCP_USER_MPU | OCP_USER_SDMA,
3755};
3756
3757static struct omap_hwmod_addr_space omap44xx_iva_addrs[] = {
3758 {
3759 .pa_start = 0x5a000000,
3760 .pa_end = 0x5a07ffff,
3761 .flags = ADDR_TYPE_RT
3762 },
3763 { }
3764};
3765
3766/* l3_main_2 -> iva */
3767static struct omap_hwmod_ocp_if omap44xx_l3_main_2__iva = {
3768 .master = &omap44xx_l3_main_2_hwmod,
3769 .slave = &omap44xx_iva_hwmod,
3770 .clk = "l3_div_ck",
3771 .addr = omap44xx_iva_addrs,
3772 .user = OCP_USER_MPU,
3773};
3774
3775static struct omap_hwmod_addr_space omap44xx_kbd_addrs[] = {
3776 {
3777 .pa_start = 0x4a31c000,
3778 .pa_end = 0x4a31c07f,
3779 .flags = ADDR_TYPE_RT
3780 },
3781 { }
3782};
3783
3784/* l4_wkup -> kbd */
3785static struct omap_hwmod_ocp_if omap44xx_l4_wkup__kbd = {
3786 .master = &omap44xx_l4_wkup_hwmod,
3787 .slave = &omap44xx_kbd_hwmod,
3788 .clk = "l4_wkup_clk_mux_ck",
3789 .addr = omap44xx_kbd_addrs,
3790 .user = OCP_USER_MPU | OCP_USER_SDMA,
3791};
3792
3793static struct omap_hwmod_addr_space omap44xx_mailbox_addrs[] = {
3794 {
3795 .pa_start = 0x4a0f4000,
3796 .pa_end = 0x4a0f41ff,
3797 .flags = ADDR_TYPE_RT
3798 },
3799 { }
3800};
3801
3802/* l4_cfg -> mailbox */
3803static struct omap_hwmod_ocp_if omap44xx_l4_cfg__mailbox = {
3804 .master = &omap44xx_l4_cfg_hwmod,
3805 .slave = &omap44xx_mailbox_hwmod,
3806 .clk = "l4_div_ck",
3807 .addr = omap44xx_mailbox_addrs,
3808 .user = OCP_USER_MPU | OCP_USER_SDMA,
3809};
3810
3811static struct omap_hwmod_addr_space omap44xx_mcbsp1_addrs[] = {
3812 {
3813 .name = "mpu",
3814 .pa_start = 0x40122000,
3815 .pa_end = 0x401220ff,
3816 .flags = ADDR_TYPE_RT
3817 },
3818 { }
3819};
3820
3821/* l4_abe -> mcbsp1 */
3822static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp1 = {
3823 .master = &omap44xx_l4_abe_hwmod,
3824 .slave = &omap44xx_mcbsp1_hwmod,
3825 .clk = "ocp_abe_iclk",
3826 .addr = omap44xx_mcbsp1_addrs,
3827 .user = OCP_USER_MPU,
3828};
3829
3830static struct omap_hwmod_addr_space omap44xx_mcbsp1_dma_addrs[] = {
3831 {
3832 .name = "dma",
3833 .pa_start = 0x49022000,
3834 .pa_end = 0x490220ff,
3835 .flags = ADDR_TYPE_RT
3836 },
3837 { }
3838};
3839
3840/* l4_abe -> mcbsp1 (dma) */
3841static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp1_dma = {
3842 .master = &omap44xx_l4_abe_hwmod,
3843 .slave = &omap44xx_mcbsp1_hwmod,
3844 .clk = "ocp_abe_iclk",
3845 .addr = omap44xx_mcbsp1_dma_addrs,
3846 .user = OCP_USER_SDMA,
3847};
3848
3849static struct omap_hwmod_addr_space omap44xx_mcbsp2_addrs[] = {
3850 {
3851 .name = "mpu",
3852 .pa_start = 0x40124000,
3853 .pa_end = 0x401240ff,
3854 .flags = ADDR_TYPE_RT
3855 },
3856 { }
3857};
3858
3859/* l4_abe -> mcbsp2 */
3860static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp2 = {
3861 .master = &omap44xx_l4_abe_hwmod,
3862 .slave = &omap44xx_mcbsp2_hwmod,
3863 .clk = "ocp_abe_iclk",
3864 .addr = omap44xx_mcbsp2_addrs,
3865 .user = OCP_USER_MPU,
3866};
3867
3868static struct omap_hwmod_addr_space omap44xx_mcbsp2_dma_addrs[] = {
3869 {
3870 .name = "dma",
3871 .pa_start = 0x49024000,
3872 .pa_end = 0x490240ff,
3873 .flags = ADDR_TYPE_RT
3874 },
3875 { }
3876};
3877
3878/* l4_abe -> mcbsp2 (dma) */
3879static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp2_dma = {
3880 .master = &omap44xx_l4_abe_hwmod,
3881 .slave = &omap44xx_mcbsp2_hwmod,
3882 .clk = "ocp_abe_iclk",
3883 .addr = omap44xx_mcbsp2_dma_addrs,
3884 .user = OCP_USER_SDMA,
3885};
3886
3887static struct omap_hwmod_addr_space omap44xx_mcbsp3_addrs[] = {
3888 {
3889 .name = "mpu",
3890 .pa_start = 0x40126000,
3891 .pa_end = 0x401260ff,
3892 .flags = ADDR_TYPE_RT
3893 },
3894 { }
3895};
3896
3897/* l4_abe -> mcbsp3 */
3898static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp3 = {
3899 .master = &omap44xx_l4_abe_hwmod,
3900 .slave = &omap44xx_mcbsp3_hwmod,
3901 .clk = "ocp_abe_iclk",
3902 .addr = omap44xx_mcbsp3_addrs,
3903 .user = OCP_USER_MPU,
3904};
3905
3906static struct omap_hwmod_addr_space omap44xx_mcbsp3_dma_addrs[] = {
3907 {
3908 .name = "dma",
3909 .pa_start = 0x49026000,
3910 .pa_end = 0x490260ff,
3911 .flags = ADDR_TYPE_RT
3912 },
3913 { }
3914};
3915
3916/* l4_abe -> mcbsp3 (dma) */
3917static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp3_dma = {
3918 .master = &omap44xx_l4_abe_hwmod,
3919 .slave = &omap44xx_mcbsp3_hwmod,
3920 .clk = "ocp_abe_iclk",
3921 .addr = omap44xx_mcbsp3_dma_addrs,
3922 .user = OCP_USER_SDMA,
3923};
3924
3925static struct omap_hwmod_addr_space omap44xx_mcbsp4_addrs[] = {
3926 {
3927 .pa_start = 0x48096000,
3928 .pa_end = 0x480960ff,
3929 .flags = ADDR_TYPE_RT
3930 },
3931 { }
3932};
3933
3934/* l4_per -> mcbsp4 */
3935static struct omap_hwmod_ocp_if omap44xx_l4_per__mcbsp4 = {
3936 .master = &omap44xx_l4_per_hwmod,
3937 .slave = &omap44xx_mcbsp4_hwmod,
3938 .clk = "l4_div_ck",
3939 .addr = omap44xx_mcbsp4_addrs,
3940 .user = OCP_USER_MPU | OCP_USER_SDMA,
3941};
3942
3943static struct omap_hwmod_addr_space omap44xx_mcpdm_addrs[] = {
3944 {
3945 .pa_start = 0x40132000,
3946 .pa_end = 0x4013207f,
3947 .flags = ADDR_TYPE_RT
3948 },
3949 { }
3950};
3951
3952/* l4_abe -> mcpdm */
3953static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcpdm = {
3954 .master = &omap44xx_l4_abe_hwmod,
3955 .slave = &omap44xx_mcpdm_hwmod,
3956 .clk = "ocp_abe_iclk",
3957 .addr = omap44xx_mcpdm_addrs,
3958 .user = OCP_USER_MPU,
3959};
3960
3961static struct omap_hwmod_addr_space omap44xx_mcpdm_dma_addrs[] = {
3962 {
3963 .pa_start = 0x49032000,
3964 .pa_end = 0x4903207f,
3965 .flags = ADDR_TYPE_RT
3966 },
3967 { }
3968};
3969
3970/* l4_abe -> mcpdm (dma) */
3971static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcpdm_dma = {
3972 .master = &omap44xx_l4_abe_hwmod,
3973 .slave = &omap44xx_mcpdm_hwmod,
3974 .clk = "ocp_abe_iclk",
3975 .addr = omap44xx_mcpdm_dma_addrs,
3976 .user = OCP_USER_SDMA,
3977};
3978
3979static struct omap_hwmod_addr_space omap44xx_mcspi1_addrs[] = {
3980 {
3981 .pa_start = 0x48098000,
3982 .pa_end = 0x480981ff,
3983 .flags = ADDR_TYPE_RT
3984 },
3985 { }
3986};
3987
3988/* l4_per -> mcspi1 */
3989static struct omap_hwmod_ocp_if omap44xx_l4_per__mcspi1 = {
3990 .master = &omap44xx_l4_per_hwmod,
3991 .slave = &omap44xx_mcspi1_hwmod,
3992 .clk = "l4_div_ck",
3993 .addr = omap44xx_mcspi1_addrs,
3994 .user = OCP_USER_MPU | OCP_USER_SDMA,
3995};
3996
3997static struct omap_hwmod_addr_space omap44xx_mcspi2_addrs[] = {
3998 {
3999 .pa_start = 0x4809a000,
4000 .pa_end = 0x4809a1ff,
4001 .flags = ADDR_TYPE_RT
4002 },
4003 { }
4004};
4005
4006/* l4_per -> mcspi2 */
4007static struct omap_hwmod_ocp_if omap44xx_l4_per__mcspi2 = {
4008 .master = &omap44xx_l4_per_hwmod,
4009 .slave = &omap44xx_mcspi2_hwmod,
4010 .clk = "l4_div_ck",
4011 .addr = omap44xx_mcspi2_addrs,
4012 .user = OCP_USER_MPU | OCP_USER_SDMA,
4013};
4014
4015static struct omap_hwmod_addr_space omap44xx_mcspi3_addrs[] = {
4016 {
4017 .pa_start = 0x480b8000,
4018 .pa_end = 0x480b81ff,
4019 .flags = ADDR_TYPE_RT
4020 },
4021 { }
4022};
4023
4024/* l4_per -> mcspi3 */
4025static struct omap_hwmod_ocp_if omap44xx_l4_per__mcspi3 = {
4026 .master = &omap44xx_l4_per_hwmod,
4027 .slave = &omap44xx_mcspi3_hwmod,
4028 .clk = "l4_div_ck",
4029 .addr = omap44xx_mcspi3_addrs,
4030 .user = OCP_USER_MPU | OCP_USER_SDMA,
4031};
4032
4033static struct omap_hwmod_addr_space omap44xx_mcspi4_addrs[] = {
4034 {
4035 .pa_start = 0x480ba000,
4036 .pa_end = 0x480ba1ff,
4037 .flags = ADDR_TYPE_RT
4038 },
4039 { }
4040};
4041
4042/* l4_per -> mcspi4 */
4043static struct omap_hwmod_ocp_if omap44xx_l4_per__mcspi4 = {
4044 .master = &omap44xx_l4_per_hwmod,
4045 .slave = &omap44xx_mcspi4_hwmod,
4046 .clk = "l4_div_ck",
4047 .addr = omap44xx_mcspi4_addrs,
4048 .user = OCP_USER_MPU | OCP_USER_SDMA,
4049};
4050
4051static struct omap_hwmod_addr_space omap44xx_mmc1_addrs[] = {
4052 {
4053 .pa_start = 0x4809c000,
4054 .pa_end = 0x4809c3ff,
4055 .flags = ADDR_TYPE_RT
4056 },
4057 { }
4058};
4059
4060/* l4_per -> mmc1 */
4061static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc1 = {
4062 .master = &omap44xx_l4_per_hwmod,
4063 .slave = &omap44xx_mmc1_hwmod,
4064 .clk = "l4_div_ck",
4065 .addr = omap44xx_mmc1_addrs,
4066 .user = OCP_USER_MPU | OCP_USER_SDMA,
4067};
4068
4069static struct omap_hwmod_addr_space omap44xx_mmc2_addrs[] = {
4070 {
4071 .pa_start = 0x480b4000,
4072 .pa_end = 0x480b43ff,
4073 .flags = ADDR_TYPE_RT
4074 },
4075 { }
4076};
4077
4078/* l4_per -> mmc2 */
4079static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc2 = {
4080 .master = &omap44xx_l4_per_hwmod,
4081 .slave = &omap44xx_mmc2_hwmod,
4082 .clk = "l4_div_ck",
4083 .addr = omap44xx_mmc2_addrs,
4084 .user = OCP_USER_MPU | OCP_USER_SDMA,
4085};
4086
4087static struct omap_hwmod_addr_space omap44xx_mmc3_addrs[] = {
4088 {
4089 .pa_start = 0x480ad000,
4090 .pa_end = 0x480ad3ff,
4091 .flags = ADDR_TYPE_RT
4092 },
4093 { }
4094};
4095
4096/* l4_per -> mmc3 */
4097static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc3 = {
4098 .master = &omap44xx_l4_per_hwmod,
4099 .slave = &omap44xx_mmc3_hwmod,
4100 .clk = "l4_div_ck",
4101 .addr = omap44xx_mmc3_addrs,
4102 .user = OCP_USER_MPU | OCP_USER_SDMA,
4103};
4104
4105static struct omap_hwmod_addr_space omap44xx_mmc4_addrs[] = {
4106 {
4107 .pa_start = 0x480d1000,
4108 .pa_end = 0x480d13ff,
4109 .flags = ADDR_TYPE_RT
4110 },
4111 { }
4112};
4113
4114/* l4_per -> mmc4 */
4115static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc4 = {
4116 .master = &omap44xx_l4_per_hwmod,
4117 .slave = &omap44xx_mmc4_hwmod,
4118 .clk = "l4_div_ck",
4119 .addr = omap44xx_mmc4_addrs,
4120 .user = OCP_USER_MPU | OCP_USER_SDMA,
4121};
4122
4123static struct omap_hwmod_addr_space omap44xx_mmc5_addrs[] = {
4124 {
4125 .pa_start = 0x480d5000,
4126 .pa_end = 0x480d53ff,
4127 .flags = ADDR_TYPE_RT
4128 },
4129 { }
4130};
4131
4132/* l4_per -> mmc5 */
4133static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc5 = {
4134 .master = &omap44xx_l4_per_hwmod,
4135 .slave = &omap44xx_mmc5_hwmod,
4136 .clk = "l4_div_ck",
4137 .addr = omap44xx_mmc5_addrs,
4138 .user = OCP_USER_MPU | OCP_USER_SDMA,
4139};
4140
4141static struct omap_hwmod_addr_space omap44xx_smartreflex_core_addrs[] = {
4142 {
4143 .pa_start = 0x4a0dd000,
4144 .pa_end = 0x4a0dd03f,
4145 .flags = ADDR_TYPE_RT
4146 },
4147 { }
4148};
4149
4150/* l4_cfg -> smartreflex_core */
4151static struct omap_hwmod_ocp_if omap44xx_l4_cfg__smartreflex_core = {
4152 .master = &omap44xx_l4_cfg_hwmod,
4153 .slave = &omap44xx_smartreflex_core_hwmod,
4154 .clk = "l4_div_ck",
4155 .addr = omap44xx_smartreflex_core_addrs,
4156 .user = OCP_USER_MPU | OCP_USER_SDMA,
4157};
4158
4159static struct omap_hwmod_addr_space omap44xx_smartreflex_iva_addrs[] = {
4160 {
4161 .pa_start = 0x4a0db000,
4162 .pa_end = 0x4a0db03f,
4163 .flags = ADDR_TYPE_RT
4164 },
4165 { }
4166};
4167
4168/* l4_cfg -> smartreflex_iva */
4169static struct omap_hwmod_ocp_if omap44xx_l4_cfg__smartreflex_iva = {
4170 .master = &omap44xx_l4_cfg_hwmod,
4171 .slave = &omap44xx_smartreflex_iva_hwmod,
4172 .clk = "l4_div_ck",
4173 .addr = omap44xx_smartreflex_iva_addrs,
4174 .user = OCP_USER_MPU | OCP_USER_SDMA,
4175};
4176
4177static struct omap_hwmod_addr_space omap44xx_smartreflex_mpu_addrs[] = {
4178 {
4179 .pa_start = 0x4a0d9000,
4180 .pa_end = 0x4a0d903f,
4181 .flags = ADDR_TYPE_RT
4182 },
4183 { }
4184};
4185
4186/* l4_cfg -> smartreflex_mpu */
4187static struct omap_hwmod_ocp_if omap44xx_l4_cfg__smartreflex_mpu = {
4188 .master = &omap44xx_l4_cfg_hwmod,
4189 .slave = &omap44xx_smartreflex_mpu_hwmod,
4190 .clk = "l4_div_ck",
4191 .addr = omap44xx_smartreflex_mpu_addrs,
4192 .user = OCP_USER_MPU | OCP_USER_SDMA,
4193};
4194
4195static struct omap_hwmod_addr_space omap44xx_spinlock_addrs[] = {
4196 {
4197 .pa_start = 0x4a0f6000,
4198 .pa_end = 0x4a0f6fff,
4199 .flags = ADDR_TYPE_RT
4200 },
4201 { }
4202};
4203
4204/* l4_cfg -> spinlock */
4205static struct omap_hwmod_ocp_if omap44xx_l4_cfg__spinlock = {
4206 .master = &omap44xx_l4_cfg_hwmod,
4207 .slave = &omap44xx_spinlock_hwmod,
4208 .clk = "l4_div_ck",
4209 .addr = omap44xx_spinlock_addrs,
4210 .user = OCP_USER_MPU | OCP_USER_SDMA,
4211};
4212
4213static struct omap_hwmod_addr_space omap44xx_timer1_addrs[] = {
4214 {
4215 .pa_start = 0x4a318000,
4216 .pa_end = 0x4a31807f,
4217 .flags = ADDR_TYPE_RT
4218 },
4219 { }
4220};
4221
4222/* l4_wkup -> timer1 */
4223static struct omap_hwmod_ocp_if omap44xx_l4_wkup__timer1 = {
4224 .master = &omap44xx_l4_wkup_hwmod,
4225 .slave = &omap44xx_timer1_hwmod,
4226 .clk = "l4_wkup_clk_mux_ck",
4227 .addr = omap44xx_timer1_addrs,
4228 .user = OCP_USER_MPU | OCP_USER_SDMA,
4229};
4230
4231static struct omap_hwmod_addr_space omap44xx_timer2_addrs[] = {
4232 {
4233 .pa_start = 0x48032000,
4234 .pa_end = 0x4803207f,
4235 .flags = ADDR_TYPE_RT
4236 },
4237 { }
4238};
4239
4240/* l4_per -> timer2 */
4241static struct omap_hwmod_ocp_if omap44xx_l4_per__timer2 = {
4242 .master = &omap44xx_l4_per_hwmod,
4243 .slave = &omap44xx_timer2_hwmod,
4244 .clk = "l4_div_ck",
4245 .addr = omap44xx_timer2_addrs,
4246 .user = OCP_USER_MPU | OCP_USER_SDMA,
4247};
4248
4249static struct omap_hwmod_addr_space omap44xx_timer3_addrs[] = {
4250 {
4251 .pa_start = 0x48034000,
4252 .pa_end = 0x4803407f,
4253 .flags = ADDR_TYPE_RT
4254 },
4255 { }
4256};
4257
4258/* l4_per -> timer3 */
4259static struct omap_hwmod_ocp_if omap44xx_l4_per__timer3 = {
4260 .master = &omap44xx_l4_per_hwmod,
4261 .slave = &omap44xx_timer3_hwmod,
4262 .clk = "l4_div_ck",
4263 .addr = omap44xx_timer3_addrs,
4264 .user = OCP_USER_MPU | OCP_USER_SDMA,
4265};
4266
4267static struct omap_hwmod_addr_space omap44xx_timer4_addrs[] = {
4268 {
4269 .pa_start = 0x48036000,
4270 .pa_end = 0x4803607f,
4271 .flags = ADDR_TYPE_RT
4272 },
4273 { }
4274};
4275
4276/* l4_per -> timer4 */
4277static struct omap_hwmod_ocp_if omap44xx_l4_per__timer4 = {
4278 .master = &omap44xx_l4_per_hwmod,
4279 .slave = &omap44xx_timer4_hwmod,
4280 .clk = "l4_div_ck",
4281 .addr = omap44xx_timer4_addrs,
4282 .user = OCP_USER_MPU | OCP_USER_SDMA,
4283};
4284
4285static struct omap_hwmod_addr_space omap44xx_timer5_addrs[] = {
4286 {
4287 .pa_start = 0x40138000,
4288 .pa_end = 0x4013807f,
4289 .flags = ADDR_TYPE_RT
4290 },
4291 { }
4292};
4293
4294/* l4_abe -> timer5 */
4295static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer5 = {
4296 .master = &omap44xx_l4_abe_hwmod,
4297 .slave = &omap44xx_timer5_hwmod,
4298 .clk = "ocp_abe_iclk",
4299 .addr = omap44xx_timer5_addrs,
4300 .user = OCP_USER_MPU,
4301};
4302
4303static struct omap_hwmod_addr_space omap44xx_timer5_dma_addrs[] = {
4304 {
4305 .pa_start = 0x49038000,
4306 .pa_end = 0x4903807f,
4307 .flags = ADDR_TYPE_RT
4308 },
4309 { }
4310};
4311
4312/* l4_abe -> timer5 (dma) */
4313static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer5_dma = {
4314 .master = &omap44xx_l4_abe_hwmod,
4315 .slave = &omap44xx_timer5_hwmod,
4316 .clk = "ocp_abe_iclk",
4317 .addr = omap44xx_timer5_dma_addrs,
4318 .user = OCP_USER_SDMA,
4319};
4320
4321static struct omap_hwmod_addr_space omap44xx_timer6_addrs[] = {
4322 {
4323 .pa_start = 0x4013a000,
4324 .pa_end = 0x4013a07f,
4325 .flags = ADDR_TYPE_RT
4326 },
4327 { }
4328};
4329
4330/* l4_abe -> timer6 */
4331static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer6 = {
4332 .master = &omap44xx_l4_abe_hwmod,
4333 .slave = &omap44xx_timer6_hwmod,
4334 .clk = "ocp_abe_iclk",
4335 .addr = omap44xx_timer6_addrs,
4336 .user = OCP_USER_MPU,
4337};
4338
4339static struct omap_hwmod_addr_space omap44xx_timer6_dma_addrs[] = {
4340 {
4341 .pa_start = 0x4903a000,
4342 .pa_end = 0x4903a07f,
4343 .flags = ADDR_TYPE_RT
4344 },
4345 { }
4346};
4347
4348/* l4_abe -> timer6 (dma) */
4349static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer6_dma = {
4350 .master = &omap44xx_l4_abe_hwmod,
4351 .slave = &omap44xx_timer6_hwmod,
4352 .clk = "ocp_abe_iclk",
4353 .addr = omap44xx_timer6_dma_addrs,
4354 .user = OCP_USER_SDMA,
4355};
4356
4357static struct omap_hwmod_addr_space omap44xx_timer7_addrs[] = {
4358 {
4359 .pa_start = 0x4013c000,
4360 .pa_end = 0x4013c07f,
4361 .flags = ADDR_TYPE_RT
4362 },
4363 { }
4364};
4365
4366/* l4_abe -> timer7 */
4367static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer7 = {
4368 .master = &omap44xx_l4_abe_hwmod,
4369 .slave = &omap44xx_timer7_hwmod,
4370 .clk = "ocp_abe_iclk",
4371 .addr = omap44xx_timer7_addrs,
4372 .user = OCP_USER_MPU,
4373};
4374
4375static struct omap_hwmod_addr_space omap44xx_timer7_dma_addrs[] = {
4376 {
4377 .pa_start = 0x4903c000,
4378 .pa_end = 0x4903c07f,
4379 .flags = ADDR_TYPE_RT
4380 },
4381 { }
4382};
4383
4384/* l4_abe -> timer7 (dma) */
4385static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer7_dma = {
4386 .master = &omap44xx_l4_abe_hwmod,
4387 .slave = &omap44xx_timer7_hwmod,
4388 .clk = "ocp_abe_iclk",
4389 .addr = omap44xx_timer7_dma_addrs,
4390 .user = OCP_USER_SDMA,
4391};
4392
4393static struct omap_hwmod_addr_space omap44xx_timer8_addrs[] = {
4394 {
4395 .pa_start = 0x4013e000,
4396 .pa_end = 0x4013e07f,
4397 .flags = ADDR_TYPE_RT
4398 },
4399 { }
4400};
4401
4402/* l4_abe -> timer8 */
4403static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer8 = {
4404 .master = &omap44xx_l4_abe_hwmod,
4405 .slave = &omap44xx_timer8_hwmod,
4406 .clk = "ocp_abe_iclk",
4407 .addr = omap44xx_timer8_addrs,
4408 .user = OCP_USER_MPU,
4409};
4410
4411static struct omap_hwmod_addr_space omap44xx_timer8_dma_addrs[] = {
4412 {
4413 .pa_start = 0x4903e000,
4414 .pa_end = 0x4903e07f,
4415 .flags = ADDR_TYPE_RT
4416 },
4417 { }
4418};
4419
4420/* l4_abe -> timer8 (dma) */
4421static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer8_dma = {
4422 .master = &omap44xx_l4_abe_hwmod,
4423 .slave = &omap44xx_timer8_hwmod,
4424 .clk = "ocp_abe_iclk",
4425 .addr = omap44xx_timer8_dma_addrs,
4426 .user = OCP_USER_SDMA,
4427};
4428
4429static struct omap_hwmod_addr_space omap44xx_timer9_addrs[] = {
4430 {
4431 .pa_start = 0x4803e000,
4432 .pa_end = 0x4803e07f,
4433 .flags = ADDR_TYPE_RT
4434 },
4435 { }
4436};
4437
4438/* l4_per -> timer9 */
4439static struct omap_hwmod_ocp_if omap44xx_l4_per__timer9 = {
4440 .master = &omap44xx_l4_per_hwmod,
4441 .slave = &omap44xx_timer9_hwmod,
4442 .clk = "l4_div_ck",
4443 .addr = omap44xx_timer9_addrs,
4444 .user = OCP_USER_MPU | OCP_USER_SDMA,
4445};
4446
4447static struct omap_hwmod_addr_space omap44xx_timer10_addrs[] = {
4448 {
4449 .pa_start = 0x48086000,
4450 .pa_end = 0x4808607f,
4451 .flags = ADDR_TYPE_RT
4452 },
4453 { }
4454};
4455
4456/* l4_per -> timer10 */
4457static struct omap_hwmod_ocp_if omap44xx_l4_per__timer10 = {
4458 .master = &omap44xx_l4_per_hwmod,
4459 .slave = &omap44xx_timer10_hwmod,
4460 .clk = "l4_div_ck",
4461 .addr = omap44xx_timer10_addrs,
4462 .user = OCP_USER_MPU | OCP_USER_SDMA,
4463};
4464
4465static struct omap_hwmod_addr_space omap44xx_timer11_addrs[] = {
4466 {
4467 .pa_start = 0x48088000,
4468 .pa_end = 0x4808807f,
4469 .flags = ADDR_TYPE_RT
4470 },
4471 { }
4472};
4473
4474/* l4_per -> timer11 */
4475static struct omap_hwmod_ocp_if omap44xx_l4_per__timer11 = {
4476 .master = &omap44xx_l4_per_hwmod,
4477 .slave = &omap44xx_timer11_hwmod,
4478 .clk = "l4_div_ck",
4479 .addr = omap44xx_timer11_addrs,
4480 .user = OCP_USER_MPU | OCP_USER_SDMA,
4481};
4482
4483static struct omap_hwmod_addr_space omap44xx_uart1_addrs[] = {
4484 {
4485 .pa_start = 0x4806a000,
4486 .pa_end = 0x4806a0ff,
4487 .flags = ADDR_TYPE_RT
4488 },
4489 { }
4490};
4491
4492/* l4_per -> uart1 */
4493static struct omap_hwmod_ocp_if omap44xx_l4_per__uart1 = {
4494 .master = &omap44xx_l4_per_hwmod,
4495 .slave = &omap44xx_uart1_hwmod,
4496 .clk = "l4_div_ck",
4497 .addr = omap44xx_uart1_addrs,
4498 .user = OCP_USER_MPU | OCP_USER_SDMA,
4499};
4500
4501static struct omap_hwmod_addr_space omap44xx_uart2_addrs[] = {
4502 {
4503 .pa_start = 0x4806c000,
4504 .pa_end = 0x4806c0ff,
4505 .flags = ADDR_TYPE_RT
4506 },
4507 { }
4508};
4509
4510/* l4_per -> uart2 */
4511static struct omap_hwmod_ocp_if omap44xx_l4_per__uart2 = {
4512 .master = &omap44xx_l4_per_hwmod,
4513 .slave = &omap44xx_uart2_hwmod,
4514 .clk = "l4_div_ck",
4515 .addr = omap44xx_uart2_addrs,
4516 .user = OCP_USER_MPU | OCP_USER_SDMA,
4517};
4518
4519static struct omap_hwmod_addr_space omap44xx_uart3_addrs[] = {
4520 {
4521 .pa_start = 0x48020000,
4522 .pa_end = 0x480200ff,
4523 .flags = ADDR_TYPE_RT
4524 },
4525 { }
4526};
4527
4528/* l4_per -> uart3 */
4529static struct omap_hwmod_ocp_if omap44xx_l4_per__uart3 = {
4530 .master = &omap44xx_l4_per_hwmod,
4531 .slave = &omap44xx_uart3_hwmod,
4532 .clk = "l4_div_ck",
4533 .addr = omap44xx_uart3_addrs,
4534 .user = OCP_USER_MPU | OCP_USER_SDMA,
4535};
4536
4537static struct omap_hwmod_addr_space omap44xx_uart4_addrs[] = {
4538 {
4539 .pa_start = 0x4806e000,
4540 .pa_end = 0x4806e0ff,
4541 .flags = ADDR_TYPE_RT
4542 },
4543 { }
4544};
4545
4546/* l4_per -> uart4 */
4547static struct omap_hwmod_ocp_if omap44xx_l4_per__uart4 = {
4548 .master = &omap44xx_l4_per_hwmod,
4549 .slave = &omap44xx_uart4_hwmod,
4550 .clk = "l4_div_ck",
4551 .addr = omap44xx_uart4_addrs,
4552 .user = OCP_USER_MPU | OCP_USER_SDMA,
4553};
4554
4555static struct omap_hwmod_addr_space omap44xx_usb_host_hs_addrs[] = {
4556 {
4557 .name = "uhh",
4558 .pa_start = 0x4a064000,
4559 .pa_end = 0x4a0647ff,
4560 .flags = ADDR_TYPE_RT
4561 },
4562 {
4563 .name = "ohci",
4564 .pa_start = 0x4a064800,
4565 .pa_end = 0x4a064bff,
4566 },
4567 {
4568 .name = "ehci",
4569 .pa_start = 0x4a064c00,
4570 .pa_end = 0x4a064fff,
4571 },
4572 {}
4573};
4574
4575/* l4_cfg -> usb_host_hs */
4576static struct omap_hwmod_ocp_if omap44xx_l4_cfg__usb_host_hs = {
4577 .master = &omap44xx_l4_cfg_hwmod,
4578 .slave = &omap44xx_usb_host_hs_hwmod,
4579 .clk = "l4_div_ck",
4580 .addr = omap44xx_usb_host_hs_addrs,
4581 .user = OCP_USER_MPU | OCP_USER_SDMA,
4582};
4583
4584static struct omap_hwmod_addr_space omap44xx_usb_otg_hs_addrs[] = {
4585 {
4586 .pa_start = 0x4a0ab000,
4587 .pa_end = 0x4a0ab003,
4588 .flags = ADDR_TYPE_RT
4589 },
4590 { }
4591};
4592
4593/* l4_cfg -> usb_otg_hs */
4594static struct omap_hwmod_ocp_if omap44xx_l4_cfg__usb_otg_hs = {
4595 .master = &omap44xx_l4_cfg_hwmod,
4596 .slave = &omap44xx_usb_otg_hs_hwmod,
4597 .clk = "l4_div_ck",
4598 .addr = omap44xx_usb_otg_hs_addrs,
4599 .user = OCP_USER_MPU | OCP_USER_SDMA,
4600};
4601
Benoit Coussonaf88fa92011-12-15 23:15:18 -07004602static struct omap_hwmod_addr_space omap44xx_usb_tll_hs_addrs[] = {
4603 {
4604 .name = "tll",
4605 .pa_start = 0x4a062000,
4606 .pa_end = 0x4a063fff,
4607 .flags = ADDR_TYPE_RT
4608 },
4609 {}
4610};
4611
Paul Walmsley844a3b62012-04-19 04:04:33 -06004612/* l4_cfg -> usb_tll_hs */
Benoit Coussonaf88fa92011-12-15 23:15:18 -07004613static struct omap_hwmod_ocp_if omap44xx_l4_cfg__usb_tll_hs = {
4614 .master = &omap44xx_l4_cfg_hwmod,
4615 .slave = &omap44xx_usb_tll_hs_hwmod,
4616 .clk = "l4_div_ck",
4617 .addr = omap44xx_usb_tll_hs_addrs,
4618 .user = OCP_USER_MPU | OCP_USER_SDMA,
4619};
4620
Paul Walmsley844a3b62012-04-19 04:04:33 -06004621static struct omap_hwmod_addr_space omap44xx_wd_timer2_addrs[] = {
4622 {
4623 .pa_start = 0x4a314000,
4624 .pa_end = 0x4a31407f,
4625 .flags = ADDR_TYPE_RT
Benoit Coussonaf88fa92011-12-15 23:15:18 -07004626 },
Paul Walmsley844a3b62012-04-19 04:04:33 -06004627 { }
4628};
4629
4630/* l4_wkup -> wd_timer2 */
4631static struct omap_hwmod_ocp_if omap44xx_l4_wkup__wd_timer2 = {
4632 .master = &omap44xx_l4_wkup_hwmod,
4633 .slave = &omap44xx_wd_timer2_hwmod,
4634 .clk = "l4_wkup_clk_mux_ck",
4635 .addr = omap44xx_wd_timer2_addrs,
4636 .user = OCP_USER_MPU | OCP_USER_SDMA,
4637};
4638
4639static struct omap_hwmod_addr_space omap44xx_wd_timer3_addrs[] = {
4640 {
4641 .pa_start = 0x40130000,
4642 .pa_end = 0x4013007f,
4643 .flags = ADDR_TYPE_RT
4644 },
4645 { }
4646};
4647
4648/* l4_abe -> wd_timer3 */
4649static struct omap_hwmod_ocp_if omap44xx_l4_abe__wd_timer3 = {
4650 .master = &omap44xx_l4_abe_hwmod,
4651 .slave = &omap44xx_wd_timer3_hwmod,
4652 .clk = "ocp_abe_iclk",
4653 .addr = omap44xx_wd_timer3_addrs,
4654 .user = OCP_USER_MPU,
4655};
4656
4657static struct omap_hwmod_addr_space omap44xx_wd_timer3_dma_addrs[] = {
4658 {
4659 .pa_start = 0x49030000,
4660 .pa_end = 0x4903007f,
4661 .flags = ADDR_TYPE_RT
4662 },
4663 { }
4664};
4665
4666/* l4_abe -> wd_timer3 (dma) */
4667static struct omap_hwmod_ocp_if omap44xx_l4_abe__wd_timer3_dma = {
4668 .master = &omap44xx_l4_abe_hwmod,
4669 .slave = &omap44xx_wd_timer3_hwmod,
4670 .clk = "ocp_abe_iclk",
4671 .addr = omap44xx_wd_timer3_dma_addrs,
4672 .user = OCP_USER_SDMA,
Benoit Coussonaf88fa92011-12-15 23:15:18 -07004673};
4674
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004675static struct omap_hwmod_ocp_if *omap44xx_hwmod_ocp_ifs[] __initdata = {
4676 &omap44xx_l3_main_1__dmm,
4677 &omap44xx_mpu__dmm,
4678 &omap44xx_dmm__emif_fw,
4679 &omap44xx_l4_cfg__emif_fw,
4680 &omap44xx_iva__l3_instr,
4681 &omap44xx_l3_main_3__l3_instr,
4682 &omap44xx_dsp__l3_main_1,
4683 &omap44xx_dss__l3_main_1,
4684 &omap44xx_l3_main_2__l3_main_1,
4685 &omap44xx_l4_cfg__l3_main_1,
4686 &omap44xx_mmc1__l3_main_1,
4687 &omap44xx_mmc2__l3_main_1,
4688 &omap44xx_mpu__l3_main_1,
4689 &omap44xx_dma_system__l3_main_2,
4690 &omap44xx_hsi__l3_main_2,
4691 &omap44xx_ipu__l3_main_2,
4692 &omap44xx_iss__l3_main_2,
4693 &omap44xx_iva__l3_main_2,
4694 &omap44xx_l3_main_1__l3_main_2,
4695 &omap44xx_l4_cfg__l3_main_2,
4696 &omap44xx_usb_host_hs__l3_main_2,
4697 &omap44xx_usb_otg_hs__l3_main_2,
4698 &omap44xx_l3_main_1__l3_main_3,
4699 &omap44xx_l3_main_2__l3_main_3,
4700 &omap44xx_l4_cfg__l3_main_3,
4701 &omap44xx_aess__l4_abe,
4702 &omap44xx_dsp__l4_abe,
4703 &omap44xx_l3_main_1__l4_abe,
4704 &omap44xx_mpu__l4_abe,
4705 &omap44xx_l3_main_1__l4_cfg,
4706 &omap44xx_l3_main_2__l4_per,
4707 &omap44xx_l4_cfg__l4_wkup,
4708 &omap44xx_mpu__mpu_private,
4709 &omap44xx_l4_abe__aess,
4710 &omap44xx_l4_abe__aess_dma,
4711 &omap44xx_l4_wkup__counter_32k,
4712 &omap44xx_l4_cfg__dma_system,
4713 &omap44xx_l4_abe__dmic,
4714 &omap44xx_l4_abe__dmic_dma,
4715 &omap44xx_dsp__iva,
4716 &omap44xx_l4_cfg__dsp,
4717 &omap44xx_l3_main_2__dss,
4718 &omap44xx_l4_per__dss,
4719 &omap44xx_l3_main_2__dss_dispc,
4720 &omap44xx_l4_per__dss_dispc,
4721 &omap44xx_l3_main_2__dss_dsi1,
4722 &omap44xx_l4_per__dss_dsi1,
4723 &omap44xx_l3_main_2__dss_dsi2,
4724 &omap44xx_l4_per__dss_dsi2,
4725 &omap44xx_l3_main_2__dss_hdmi,
4726 &omap44xx_l4_per__dss_hdmi,
4727 &omap44xx_l3_main_2__dss_rfbi,
4728 &omap44xx_l4_per__dss_rfbi,
4729 &omap44xx_l3_main_2__dss_venc,
4730 &omap44xx_l4_per__dss_venc,
4731 &omap44xx_l4_wkup__gpio1,
4732 &omap44xx_l4_per__gpio2,
4733 &omap44xx_l4_per__gpio3,
4734 &omap44xx_l4_per__gpio4,
4735 &omap44xx_l4_per__gpio5,
4736 &omap44xx_l4_per__gpio6,
4737 &omap44xx_l4_cfg__hsi,
4738 &omap44xx_l4_per__i2c1,
4739 &omap44xx_l4_per__i2c2,
4740 &omap44xx_l4_per__i2c3,
4741 &omap44xx_l4_per__i2c4,
4742 &omap44xx_l3_main_2__ipu,
4743 &omap44xx_l3_main_2__iss,
4744 &omap44xx_l3_main_2__iva,
4745 &omap44xx_l4_wkup__kbd,
4746 &omap44xx_l4_cfg__mailbox,
4747 &omap44xx_l4_abe__mcbsp1,
4748 &omap44xx_l4_abe__mcbsp1_dma,
4749 &omap44xx_l4_abe__mcbsp2,
4750 &omap44xx_l4_abe__mcbsp2_dma,
4751 &omap44xx_l4_abe__mcbsp3,
4752 &omap44xx_l4_abe__mcbsp3_dma,
4753 &omap44xx_l4_per__mcbsp4,
4754 &omap44xx_l4_abe__mcpdm,
4755 &omap44xx_l4_abe__mcpdm_dma,
4756 &omap44xx_l4_per__mcspi1,
4757 &omap44xx_l4_per__mcspi2,
4758 &omap44xx_l4_per__mcspi3,
4759 &omap44xx_l4_per__mcspi4,
4760 &omap44xx_l4_per__mmc1,
4761 &omap44xx_l4_per__mmc2,
4762 &omap44xx_l4_per__mmc3,
4763 &omap44xx_l4_per__mmc4,
4764 &omap44xx_l4_per__mmc5,
4765 &omap44xx_l4_cfg__smartreflex_core,
4766 &omap44xx_l4_cfg__smartreflex_iva,
4767 &omap44xx_l4_cfg__smartreflex_mpu,
4768 &omap44xx_l4_cfg__spinlock,
4769 &omap44xx_l4_wkup__timer1,
4770 &omap44xx_l4_per__timer2,
4771 &omap44xx_l4_per__timer3,
4772 &omap44xx_l4_per__timer4,
4773 &omap44xx_l4_abe__timer5,
4774 &omap44xx_l4_abe__timer5_dma,
4775 &omap44xx_l4_abe__timer6,
4776 &omap44xx_l4_abe__timer6_dma,
4777 &omap44xx_l4_abe__timer7,
4778 &omap44xx_l4_abe__timer7_dma,
4779 &omap44xx_l4_abe__timer8,
4780 &omap44xx_l4_abe__timer8_dma,
4781 &omap44xx_l4_per__timer9,
4782 &omap44xx_l4_per__timer10,
4783 &omap44xx_l4_per__timer11,
4784 &omap44xx_l4_per__uart1,
4785 &omap44xx_l4_per__uart2,
4786 &omap44xx_l4_per__uart3,
4787 &omap44xx_l4_per__uart4,
4788 &omap44xx_l4_cfg__usb_host_hs,
4789 &omap44xx_l4_cfg__usb_otg_hs,
4790 &omap44xx_l4_cfg__usb_tll_hs,
4791 &omap44xx_l4_wkup__wd_timer2,
4792 &omap44xx_l4_abe__wd_timer3,
4793 &omap44xx_l4_abe__wd_timer3_dma,
Benoit Cousson55d2cb02010-05-12 17:54:36 +02004794 NULL,
4795};
4796
4797int __init omap44xx_hwmod_init(void)
4798{
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004799 return omap_hwmod_register_links(omap44xx_hwmod_ocp_ifs);
Benoit Cousson55d2cb02010-05-12 17:54:36 +02004800}
4801