blob: 399f4ce9cab1fbcd2e1586c69f8e20a0d39216cf [file] [log] [blame]
Benoit Cousson55d2cb02010-05-12 17:54:36 +02001/*
2 * Hardware modules present on the OMAP44xx chips
3 *
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004 * Copyright (C) 2009-2012 Texas Instruments, Inc.
Benoit Cousson55d2cb02010-05-12 17:54:36 +02005 * Copyright (C) 2009-2010 Nokia Corporation
6 *
7 * Paul Walmsley
8 * Benoit Cousson
9 *
10 * This file is automatically generated from the OMAP hardware databases.
11 * We respectfully ask that any modifications to this file be coordinated
12 * with the public linux-omap@vger.kernel.org mailing list and the
13 * authors above to ensure that the autogeneration scripts are kept
14 * up-to-date with the file contents.
15 *
16 * This program is free software; you can redistribute it and/or modify
17 * it under the terms of the GNU General Public License version 2 as
18 * published by the Free Software Foundation.
19 */
20
21#include <linux/io.h>
Tony Lindgren4b254082012-08-30 15:37:24 -070022#include <linux/platform_data/gpio-omap.h>
Jean Pihetb86aeaf2012-04-25 16:06:20 +053023#include <linux/power/smartreflex.h>
Tony Lindgren3a8761c2012-10-08 09:11:22 -070024#include <linux/i2c-omap.h>
Benoit Cousson55d2cb02010-05-12 17:54:36 +020025
Lokesh Vutla2b6c4e72012-10-15 14:04:53 -070026#include <plat-omap/dma-omap.h>
Tony Lindgren2a296c82012-10-02 17:41:35 -070027
Arnd Bergmann22037472012-08-24 15:21:06 +020028#include <linux/platform_data/spi-omap2-mcspi.h>
29#include <linux/platform_data/asoc-ti-mcbsp.h>
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +053030#include <plat/dmtimer.h>
Omar Ramirez Luna230844d2012-09-23 17:28:24 -060031#include <plat/iommu.h>
Benoit Cousson55d2cb02010-05-12 17:54:36 +020032
Tony Lindgren2a296c82012-10-02 17:41:35 -070033#include "omap_hwmod.h"
Benoit Cousson55d2cb02010-05-12 17:54:36 +020034#include "omap_hwmod_common_data.h"
Paul Walmsleyd198b512010-12-21 15:30:54 -070035#include "cm1_44xx.h"
36#include "cm2_44xx.h"
37#include "prm44xx.h"
Benoit Cousson55d2cb02010-05-12 17:54:36 +020038#include "prm-regbits-44xx.h"
Tony Lindgren3a8761c2012-10-08 09:11:22 -070039#include "i2c.h"
Tony Lindgren68f39e72012-10-15 12:09:43 -070040#include "mmc.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/*
Paul Walmsley42b9e382012-04-19 13:33:54 -060054 * 'c2c_target_fw' class
55 * instance(s): c2c_target_fw
56 */
57static struct omap_hwmod_class omap44xx_c2c_target_fw_hwmod_class = {
58 .name = "c2c_target_fw",
59};
60
61/* c2c_target_fw */
62static struct omap_hwmod omap44xx_c2c_target_fw_hwmod = {
63 .name = "c2c_target_fw",
64 .class = &omap44xx_c2c_target_fw_hwmod_class,
65 .clkdm_name = "d2d_clkdm",
66 .prcm = {
67 .omap4 = {
68 .clkctrl_offs = OMAP4_CM_D2D_SAD2D_FW_CLKCTRL_OFFSET,
69 .context_offs = OMAP4_RM_D2D_SAD2D_FW_CONTEXT_OFFSET,
70 },
71 },
72};
73
74/*
Benoit Cousson55d2cb02010-05-12 17:54:36 +020075 * 'dmm' class
76 * instance(s): dmm
77 */
78static struct omap_hwmod_class omap44xx_dmm_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +000079 .name = "dmm",
Benoit Cousson55d2cb02010-05-12 17:54:36 +020080};
81
Benoit Cousson7e69ed92011-07-09 19:14:28 -060082/* dmm */
83static struct omap_hwmod_irq_info omap44xx_dmm_irqs[] = {
84 { .irq = 113 + OMAP44XX_IRQ_GIC_START },
85 { .irq = -1 }
86};
87
Benoit Cousson55d2cb02010-05-12 17:54:36 +020088static struct omap_hwmod omap44xx_dmm_hwmod = {
89 .name = "dmm",
90 .class = &omap44xx_dmm_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -060091 .clkdm_name = "l3_emif_clkdm",
Paul Walmsley844a3b62012-04-19 04:04:33 -060092 .mpu_irqs = omap44xx_dmm_irqs,
Benoit Coussond0f06312011-07-10 05:56:30 -060093 .prcm = {
94 .omap4 = {
95 .clkctrl_offs = OMAP4_CM_MEMIF_DMM_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -060096 .context_offs = OMAP4_RM_MEMIF_DMM_CONTEXT_OFFSET,
Benoit Coussond0f06312011-07-10 05:56:30 -060097 },
98 },
Benoit Cousson55d2cb02010-05-12 17:54:36 +020099};
100
101/*
102 * 'emif_fw' class
103 * instance(s): emif_fw
104 */
105static struct omap_hwmod_class omap44xx_emif_fw_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +0000106 .name = "emif_fw",
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200107};
108
Benoit Cousson7e69ed92011-07-09 19:14:28 -0600109/* emif_fw */
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200110static struct omap_hwmod omap44xx_emif_fw_hwmod = {
111 .name = "emif_fw",
112 .class = &omap44xx_emif_fw_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600113 .clkdm_name = "l3_emif_clkdm",
Benoit Coussond0f06312011-07-10 05:56:30 -0600114 .prcm = {
115 .omap4 = {
116 .clkctrl_offs = OMAP4_CM_MEMIF_EMIF_FW_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600117 .context_offs = OMAP4_RM_MEMIF_EMIF_FW_CONTEXT_OFFSET,
Benoit Coussond0f06312011-07-10 05:56:30 -0600118 },
119 },
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200120};
121
122/*
123 * 'l3' class
124 * instance(s): l3_instr, l3_main_1, l3_main_2, l3_main_3
125 */
126static struct omap_hwmod_class omap44xx_l3_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +0000127 .name = "l3",
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200128};
129
Benoit Cousson7e69ed92011-07-09 19:14:28 -0600130/* l3_instr */
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200131static struct omap_hwmod omap44xx_l3_instr_hwmod = {
132 .name = "l3_instr",
133 .class = &omap44xx_l3_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600134 .clkdm_name = "l3_instr_clkdm",
Benoit Coussond0f06312011-07-10 05:56:30 -0600135 .prcm = {
136 .omap4 = {
137 .clkctrl_offs = OMAP4_CM_L3INSTR_L3_INSTR_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600138 .context_offs = OMAP4_RM_L3INSTR_L3_INSTR_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -0600139 .modulemode = MODULEMODE_HWCTRL,
Benoit Coussond0f06312011-07-10 05:56:30 -0600140 },
141 },
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200142};
143
Benoit Cousson7e69ed92011-07-09 19:14:28 -0600144/* l3_main_1 */
Benoit Cousson9b4021b2011-07-09 19:14:27 -0600145static struct omap_hwmod_irq_info omap44xx_l3_main_1_irqs[] = {
146 { .name = "dbg_err", .irq = 9 + OMAP44XX_IRQ_GIC_START },
147 { .name = "app_err", .irq = 10 + OMAP44XX_IRQ_GIC_START },
148 { .irq = -1 }
149};
150
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200151static struct omap_hwmod omap44xx_l3_main_1_hwmod = {
152 .name = "l3_main_1",
153 .class = &omap44xx_l3_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600154 .clkdm_name = "l3_1_clkdm",
Benoit Cousson7e69ed92011-07-09 19:14:28 -0600155 .mpu_irqs = omap44xx_l3_main_1_irqs,
Benoit Coussond0f06312011-07-10 05:56:30 -0600156 .prcm = {
157 .omap4 = {
158 .clkctrl_offs = OMAP4_CM_L3_1_L3_1_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600159 .context_offs = OMAP4_RM_L3_1_L3_1_CONTEXT_OFFSET,
Benoit Coussond0f06312011-07-10 05:56:30 -0600160 },
161 },
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200162};
163
Benoit Cousson7e69ed92011-07-09 19:14:28 -0600164/* l3_main_2 */
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200165static struct omap_hwmod omap44xx_l3_main_2_hwmod = {
166 .name = "l3_main_2",
167 .class = &omap44xx_l3_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600168 .clkdm_name = "l3_2_clkdm",
Benoit Coussond0f06312011-07-10 05:56:30 -0600169 .prcm = {
170 .omap4 = {
171 .clkctrl_offs = OMAP4_CM_L3_2_L3_2_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600172 .context_offs = OMAP4_RM_L3_2_L3_2_CONTEXT_OFFSET,
Benoit Coussond0f06312011-07-10 05:56:30 -0600173 },
174 },
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200175};
176
Benoit Cousson7e69ed92011-07-09 19:14:28 -0600177/* l3_main_3 */
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200178static struct omap_hwmod omap44xx_l3_main_3_hwmod = {
179 .name = "l3_main_3",
180 .class = &omap44xx_l3_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600181 .clkdm_name = "l3_instr_clkdm",
Benoit Coussond0f06312011-07-10 05:56:30 -0600182 .prcm = {
183 .omap4 = {
184 .clkctrl_offs = OMAP4_CM_L3INSTR_L3_3_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600185 .context_offs = OMAP4_RM_L3INSTR_L3_3_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -0600186 .modulemode = MODULEMODE_HWCTRL,
Benoit Coussond0f06312011-07-10 05:56:30 -0600187 },
188 },
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200189};
190
191/*
192 * 'l4' class
193 * instance(s): l4_abe, l4_cfg, l4_per, l4_wkup
194 */
195static struct omap_hwmod_class omap44xx_l4_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +0000196 .name = "l4",
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200197};
198
Benoit Cousson7e69ed92011-07-09 19:14:28 -0600199/* l4_abe */
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200200static struct omap_hwmod omap44xx_l4_abe_hwmod = {
201 .name = "l4_abe",
202 .class = &omap44xx_l4_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600203 .clkdm_name = "abe_clkdm",
Benoit Coussond0f06312011-07-10 05:56:30 -0600204 .prcm = {
205 .omap4 = {
206 .clkctrl_offs = OMAP4_CM1_ABE_L4ABE_CLKCTRL_OFFSET,
Tero Kristoce809792012-09-23 17:28:19 -0600207 .context_offs = OMAP4_RM_ABE_AESS_CONTEXT_OFFSET,
208 .lostcontext_mask = OMAP4430_LOSTMEM_AESSMEM_MASK,
Tero Kristo46b3af22012-09-23 17:28:20 -0600209 .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
Benoit Coussond0f06312011-07-10 05:56:30 -0600210 },
211 },
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200212};
213
Benoit Cousson7e69ed92011-07-09 19:14:28 -0600214/* l4_cfg */
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200215static struct omap_hwmod omap44xx_l4_cfg_hwmod = {
216 .name = "l4_cfg",
217 .class = &omap44xx_l4_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600218 .clkdm_name = "l4_cfg_clkdm",
Benoit Coussond0f06312011-07-10 05:56:30 -0600219 .prcm = {
220 .omap4 = {
221 .clkctrl_offs = OMAP4_CM_L4CFG_L4_CFG_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600222 .context_offs = OMAP4_RM_L4CFG_L4_CFG_CONTEXT_OFFSET,
Benoit Coussond0f06312011-07-10 05:56:30 -0600223 },
224 },
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200225};
226
Benoit Cousson7e69ed92011-07-09 19:14:28 -0600227/* l4_per */
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200228static struct omap_hwmod omap44xx_l4_per_hwmod = {
229 .name = "l4_per",
230 .class = &omap44xx_l4_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600231 .clkdm_name = "l4_per_clkdm",
Benoit Coussond0f06312011-07-10 05:56:30 -0600232 .prcm = {
233 .omap4 = {
234 .clkctrl_offs = OMAP4_CM_L4PER_L4PER_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600235 .context_offs = OMAP4_RM_L4PER_L4_PER_CONTEXT_OFFSET,
Benoit Coussond0f06312011-07-10 05:56:30 -0600236 },
237 },
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200238};
239
Benoit Cousson7e69ed92011-07-09 19:14:28 -0600240/* l4_wkup */
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200241static struct omap_hwmod omap44xx_l4_wkup_hwmod = {
242 .name = "l4_wkup",
243 .class = &omap44xx_l4_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600244 .clkdm_name = "l4_wkup_clkdm",
Benoit Coussond0f06312011-07-10 05:56:30 -0600245 .prcm = {
246 .omap4 = {
247 .clkctrl_offs = OMAP4_CM_WKUP_L4WKUP_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600248 .context_offs = OMAP4_RM_WKUP_L4WKUP_CONTEXT_OFFSET,
Benoit Coussond0f06312011-07-10 05:56:30 -0600249 },
250 },
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200251};
252
253/*
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700254 * 'mpu_bus' class
255 * instance(s): mpu_private
256 */
257static struct omap_hwmod_class omap44xx_mpu_bus_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +0000258 .name = "mpu_bus",
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700259};
260
Benoit Cousson7e69ed92011-07-09 19:14:28 -0600261/* mpu_private */
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700262static struct omap_hwmod omap44xx_mpu_private_hwmod = {
263 .name = "mpu_private",
264 .class = &omap44xx_mpu_bus_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600265 .clkdm_name = "mpuss_clkdm",
Tero Kristo46b3af22012-09-23 17:28:20 -0600266 .prcm = {
267 .omap4 = {
268 .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
269 },
270 },
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700271};
272
273/*
Benoît Cousson9a817bc2012-04-19 13:33:56 -0600274 * 'ocp_wp_noc' class
275 * instance(s): ocp_wp_noc
276 */
277static struct omap_hwmod_class omap44xx_ocp_wp_noc_hwmod_class = {
278 .name = "ocp_wp_noc",
279};
280
281/* ocp_wp_noc */
282static struct omap_hwmod omap44xx_ocp_wp_noc_hwmod = {
283 .name = "ocp_wp_noc",
284 .class = &omap44xx_ocp_wp_noc_hwmod_class,
285 .clkdm_name = "l3_instr_clkdm",
286 .prcm = {
287 .omap4 = {
288 .clkctrl_offs = OMAP4_CM_L3INSTR_OCP_WP1_CLKCTRL_OFFSET,
289 .context_offs = OMAP4_RM_L3INSTR_OCP_WP1_CONTEXT_OFFSET,
290 .modulemode = MODULEMODE_HWCTRL,
291 },
292 },
293};
294
295/*
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700296 * Modules omap_hwmod structures
297 *
298 * The following IPs are excluded for the moment because:
299 * - They do not need an explicit SW control using omap_hwmod API.
300 * - They still need to be validated with the driver
301 * properly adapted to omap_hwmod / omap_device
302 *
Benoît Cousson96566042012-04-19 13:33:59 -0600303 * usim
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700304 */
305
306/*
Benoit Cousson407a6882011-02-15 22:39:48 +0100307 * 'aess' class
308 * audio engine sub system
309 */
310
311static struct omap_hwmod_class_sysconfig omap44xx_aess_sysc = {
312 .rev_offs = 0x0000,
313 .sysc_offs = 0x0010,
314 .sysc_flags = (SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE),
315 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
Benoit Coussonc614ebf2011-07-01 22:54:01 +0200316 MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART |
317 MSTANDBY_SMART_WKUP),
Benoit Cousson407a6882011-02-15 22:39:48 +0100318 .sysc_fields = &omap_hwmod_sysc_type2,
319};
320
321static struct omap_hwmod_class omap44xx_aess_hwmod_class = {
322 .name = "aess",
323 .sysc = &omap44xx_aess_sysc,
324};
325
326/* aess */
327static struct omap_hwmod_irq_info omap44xx_aess_irqs[] = {
328 { .irq = 99 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -0600329 { .irq = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +0100330};
331
332static struct omap_hwmod_dma_info omap44xx_aess_sdma_reqs[] = {
333 { .name = "fifo0", .dma_req = 100 + OMAP44XX_DMA_REQ_START },
334 { .name = "fifo1", .dma_req = 101 + OMAP44XX_DMA_REQ_START },
335 { .name = "fifo2", .dma_req = 102 + OMAP44XX_DMA_REQ_START },
336 { .name = "fifo3", .dma_req = 103 + OMAP44XX_DMA_REQ_START },
337 { .name = "fifo4", .dma_req = 104 + OMAP44XX_DMA_REQ_START },
338 { .name = "fifo5", .dma_req = 105 + OMAP44XX_DMA_REQ_START },
339 { .name = "fifo6", .dma_req = 106 + OMAP44XX_DMA_REQ_START },
340 { .name = "fifo7", .dma_req = 107 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -0600341 { .dma_req = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +0100342};
343
Benoit Cousson407a6882011-02-15 22:39:48 +0100344static struct omap_hwmod omap44xx_aess_hwmod = {
345 .name = "aess",
346 .class = &omap44xx_aess_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600347 .clkdm_name = "abe_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +0100348 .mpu_irqs = omap44xx_aess_irqs,
Benoit Cousson407a6882011-02-15 22:39:48 +0100349 .sdma_reqs = omap44xx_aess_sdma_reqs,
Benoit Cousson407a6882011-02-15 22:39:48 +0100350 .main_clk = "aess_fck",
Benoit Cousson00fe6102011-07-09 19:14:28 -0600351 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +0100352 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600353 .clkctrl_offs = OMAP4_CM1_ABE_AESS_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600354 .context_offs = OMAP4_RM_ABE_AESS_CONTEXT_OFFSET,
Tero Kristoce809792012-09-23 17:28:19 -0600355 .lostcontext_mask = OMAP4430_LOSTCONTEXT_DFF_MASK,
Benoit Cousson03fdefe52011-07-10 05:56:32 -0600356 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +0100357 },
358 },
Benoit Cousson407a6882011-02-15 22:39:48 +0100359};
360
361/*
Paul Walmsley42b9e382012-04-19 13:33:54 -0600362 * 'c2c' class
363 * chip 2 chip interface used to plug the ape soc (omap) with an external modem
364 * soc
365 */
366
367static struct omap_hwmod_class omap44xx_c2c_hwmod_class = {
368 .name = "c2c",
369};
370
371/* c2c */
372static struct omap_hwmod_irq_info omap44xx_c2c_irqs[] = {
373 { .irq = 88 + OMAP44XX_IRQ_GIC_START },
374 { .irq = -1 }
375};
376
377static struct omap_hwmod_dma_info omap44xx_c2c_sdma_reqs[] = {
378 { .dma_req = 68 + OMAP44XX_DMA_REQ_START },
379 { .dma_req = -1 }
380};
381
382static struct omap_hwmod omap44xx_c2c_hwmod = {
383 .name = "c2c",
384 .class = &omap44xx_c2c_hwmod_class,
385 .clkdm_name = "d2d_clkdm",
386 .mpu_irqs = omap44xx_c2c_irqs,
387 .sdma_reqs = omap44xx_c2c_sdma_reqs,
388 .prcm = {
389 .omap4 = {
390 .clkctrl_offs = OMAP4_CM_D2D_SAD2D_CLKCTRL_OFFSET,
391 .context_offs = OMAP4_RM_D2D_SAD2D_CONTEXT_OFFSET,
392 },
393 },
394};
395
396/*
Benoit Cousson407a6882011-02-15 22:39:48 +0100397 * 'counter' class
398 * 32-bit ordinary counter, clocked by the falling edge of the 32 khz clock
399 */
400
401static struct omap_hwmod_class_sysconfig omap44xx_counter_sysc = {
402 .rev_offs = 0x0000,
403 .sysc_offs = 0x0004,
404 .sysc_flags = SYSC_HAS_SIDLEMODE,
Paul Walmsley252a4c52012-06-17 11:57:51 -0600405 .idlemodes = (SIDLE_FORCE | SIDLE_NO),
Benoit Cousson407a6882011-02-15 22:39:48 +0100406 .sysc_fields = &omap_hwmod_sysc_type1,
407};
408
409static struct omap_hwmod_class omap44xx_counter_hwmod_class = {
410 .name = "counter",
411 .sysc = &omap44xx_counter_sysc,
412};
413
414/* counter_32k */
Benoit Cousson407a6882011-02-15 22:39:48 +0100415static struct omap_hwmod omap44xx_counter_32k_hwmod = {
416 .name = "counter_32k",
417 .class = &omap44xx_counter_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600418 .clkdm_name = "l4_wkup_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +0100419 .flags = HWMOD_SWSUP_SIDLE,
420 .main_clk = "sys_32k_ck",
Benoit Cousson00fe6102011-07-09 19:14:28 -0600421 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +0100422 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600423 .clkctrl_offs = OMAP4_CM_WKUP_SYNCTIMER_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600424 .context_offs = OMAP4_RM_WKUP_SYNCTIMER_CONTEXT_OFFSET,
Benoit Cousson407a6882011-02-15 22:39:48 +0100425 },
426 },
Benoit Cousson407a6882011-02-15 22:39:48 +0100427};
428
429/*
Paul Walmsleya0b5d812012-04-19 13:33:57 -0600430 * 'ctrl_module' class
431 * attila core control module + core pad control module + wkup pad control
432 * module + attila wkup control module
433 */
434
435static struct omap_hwmod_class_sysconfig omap44xx_ctrl_module_sysc = {
436 .rev_offs = 0x0000,
437 .sysc_offs = 0x0010,
438 .sysc_flags = SYSC_HAS_SIDLEMODE,
439 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
440 SIDLE_SMART_WKUP),
441 .sysc_fields = &omap_hwmod_sysc_type2,
442};
443
444static struct omap_hwmod_class omap44xx_ctrl_module_hwmod_class = {
445 .name = "ctrl_module",
446 .sysc = &omap44xx_ctrl_module_sysc,
447};
448
449/* ctrl_module_core */
450static struct omap_hwmod_irq_info omap44xx_ctrl_module_core_irqs[] = {
451 { .irq = 8 + OMAP44XX_IRQ_GIC_START },
452 { .irq = -1 }
453};
454
455static struct omap_hwmod omap44xx_ctrl_module_core_hwmod = {
456 .name = "ctrl_module_core",
457 .class = &omap44xx_ctrl_module_hwmod_class,
458 .clkdm_name = "l4_cfg_clkdm",
459 .mpu_irqs = omap44xx_ctrl_module_core_irqs,
Tero Kristo46b3af22012-09-23 17:28:20 -0600460 .prcm = {
461 .omap4 = {
462 .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
463 },
464 },
Paul Walmsleya0b5d812012-04-19 13:33:57 -0600465};
466
467/* ctrl_module_pad_core */
468static struct omap_hwmod omap44xx_ctrl_module_pad_core_hwmod = {
469 .name = "ctrl_module_pad_core",
470 .class = &omap44xx_ctrl_module_hwmod_class,
471 .clkdm_name = "l4_cfg_clkdm",
Tero Kristo46b3af22012-09-23 17:28:20 -0600472 .prcm = {
473 .omap4 = {
474 .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
475 },
476 },
Paul Walmsleya0b5d812012-04-19 13:33:57 -0600477};
478
479/* ctrl_module_wkup */
480static struct omap_hwmod omap44xx_ctrl_module_wkup_hwmod = {
481 .name = "ctrl_module_wkup",
482 .class = &omap44xx_ctrl_module_hwmod_class,
483 .clkdm_name = "l4_wkup_clkdm",
Tero Kristo46b3af22012-09-23 17:28:20 -0600484 .prcm = {
485 .omap4 = {
486 .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
487 },
488 },
Paul Walmsleya0b5d812012-04-19 13:33:57 -0600489};
490
491/* ctrl_module_pad_wkup */
492static struct omap_hwmod omap44xx_ctrl_module_pad_wkup_hwmod = {
493 .name = "ctrl_module_pad_wkup",
494 .class = &omap44xx_ctrl_module_hwmod_class,
495 .clkdm_name = "l4_wkup_clkdm",
Tero Kristo46b3af22012-09-23 17:28:20 -0600496 .prcm = {
497 .omap4 = {
498 .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
499 },
500 },
Paul Walmsleya0b5d812012-04-19 13:33:57 -0600501};
502
503/*
Benoît Cousson96566042012-04-19 13:33:59 -0600504 * 'debugss' class
505 * debug and emulation sub system
506 */
507
508static struct omap_hwmod_class omap44xx_debugss_hwmod_class = {
509 .name = "debugss",
510};
511
512/* debugss */
513static struct omap_hwmod omap44xx_debugss_hwmod = {
514 .name = "debugss",
515 .class = &omap44xx_debugss_hwmod_class,
516 .clkdm_name = "emu_sys_clkdm",
517 .main_clk = "trace_clk_div_ck",
518 .prcm = {
519 .omap4 = {
520 .clkctrl_offs = OMAP4_CM_EMU_DEBUGSS_CLKCTRL_OFFSET,
521 .context_offs = OMAP4_RM_EMU_DEBUGSS_CONTEXT_OFFSET,
522 },
523 },
524};
525
526/*
Benoit Coussond7cf5f32010-12-23 22:30:31 +0000527 * 'dma' class
528 * dma controller for data exchange between memory to memory (i.e. internal or
529 * external memory) and gp peripherals to memory or memory to gp peripherals
530 */
531
532static struct omap_hwmod_class_sysconfig omap44xx_dma_sysc = {
533 .rev_offs = 0x0000,
534 .sysc_offs = 0x002c,
535 .syss_offs = 0x0028,
536 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
537 SYSC_HAS_EMUFREE | SYSC_HAS_MIDLEMODE |
538 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
539 SYSS_HAS_RESET_STATUS),
540 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
541 MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
542 .sysc_fields = &omap_hwmod_sysc_type1,
543};
544
545static struct omap_hwmod_class omap44xx_dma_hwmod_class = {
546 .name = "dma",
547 .sysc = &omap44xx_dma_sysc,
548};
549
550/* dma dev_attr */
551static struct omap_dma_dev_attr dma_dev_attr = {
552 .dev_caps = RESERVE_CHANNEL | DMA_LINKED_LCH | GLOBAL_PRIORITY |
553 IS_CSSA_32 | IS_CDSA_32 | IS_RW_PRIORITY,
554 .lch_count = 32,
555};
556
557/* dma_system */
558static struct omap_hwmod_irq_info omap44xx_dma_system_irqs[] = {
559 { .name = "0", .irq = 12 + OMAP44XX_IRQ_GIC_START },
560 { .name = "1", .irq = 13 + OMAP44XX_IRQ_GIC_START },
561 { .name = "2", .irq = 14 + OMAP44XX_IRQ_GIC_START },
562 { .name = "3", .irq = 15 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -0600563 { .irq = -1 }
Benoit Coussond7cf5f32010-12-23 22:30:31 +0000564};
565
Benoit Coussond7cf5f32010-12-23 22:30:31 +0000566static struct omap_hwmod omap44xx_dma_system_hwmod = {
567 .name = "dma_system",
568 .class = &omap44xx_dma_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600569 .clkdm_name = "l3_dma_clkdm",
Benoit Coussond7cf5f32010-12-23 22:30:31 +0000570 .mpu_irqs = omap44xx_dma_system_irqs,
Benoit Coussond7cf5f32010-12-23 22:30:31 +0000571 .main_clk = "l3_div_ck",
572 .prcm = {
573 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600574 .clkctrl_offs = OMAP4_CM_SDMA_SDMA_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600575 .context_offs = OMAP4_RM_SDMA_SDMA_CONTEXT_OFFSET,
Benoit Coussond7cf5f32010-12-23 22:30:31 +0000576 },
577 },
578 .dev_attr = &dma_dev_attr,
Benoit Coussond7cf5f32010-12-23 22:30:31 +0000579};
580
581/*
Benoit Cousson8ca476d2011-01-25 22:01:00 +0000582 * 'dmic' class
583 * digital microphone controller
584 */
585
586static struct omap_hwmod_class_sysconfig omap44xx_dmic_sysc = {
587 .rev_offs = 0x0000,
588 .sysc_offs = 0x0010,
589 .sysc_flags = (SYSC_HAS_EMUFREE | SYSC_HAS_RESET_STATUS |
590 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
591 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
592 SIDLE_SMART_WKUP),
593 .sysc_fields = &omap_hwmod_sysc_type2,
594};
595
596static struct omap_hwmod_class omap44xx_dmic_hwmod_class = {
597 .name = "dmic",
598 .sysc = &omap44xx_dmic_sysc,
599};
600
601/* dmic */
Benoit Cousson8ca476d2011-01-25 22:01:00 +0000602static struct omap_hwmod_irq_info omap44xx_dmic_irqs[] = {
603 { .irq = 114 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -0600604 { .irq = -1 }
Benoit Cousson8ca476d2011-01-25 22:01:00 +0000605};
606
607static struct omap_hwmod_dma_info omap44xx_dmic_sdma_reqs[] = {
608 { .dma_req = 66 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -0600609 { .dma_req = -1 }
Benoit Cousson8ca476d2011-01-25 22:01:00 +0000610};
611
Benoit Cousson8ca476d2011-01-25 22:01:00 +0000612static struct omap_hwmod omap44xx_dmic_hwmod = {
613 .name = "dmic",
614 .class = &omap44xx_dmic_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600615 .clkdm_name = "abe_clkdm",
Benoit Cousson8ca476d2011-01-25 22:01:00 +0000616 .mpu_irqs = omap44xx_dmic_irqs,
Benoit Cousson8ca476d2011-01-25 22:01:00 +0000617 .sdma_reqs = omap44xx_dmic_sdma_reqs,
Benoit Cousson8ca476d2011-01-25 22:01:00 +0000618 .main_clk = "dmic_fck",
Benoit Cousson00fe6102011-07-09 19:14:28 -0600619 .prcm = {
Benoit Cousson8ca476d2011-01-25 22:01:00 +0000620 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600621 .clkctrl_offs = OMAP4_CM1_ABE_DMIC_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600622 .context_offs = OMAP4_RM_ABE_DMIC_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -0600623 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson8ca476d2011-01-25 22:01:00 +0000624 },
625 },
Benoit Cousson8ca476d2011-01-25 22:01:00 +0000626};
627
628/*
Benoit Cousson8f25bdc2010-12-21 21:08:34 -0700629 * 'dsp' class
630 * dsp sub-system
631 */
632
633static struct omap_hwmod_class omap44xx_dsp_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +0000634 .name = "dsp",
Benoit Cousson8f25bdc2010-12-21 21:08:34 -0700635};
636
637/* dsp */
638static struct omap_hwmod_irq_info omap44xx_dsp_irqs[] = {
639 { .irq = 28 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -0600640 { .irq = -1 }
Benoit Cousson8f25bdc2010-12-21 21:08:34 -0700641};
642
643static struct omap_hwmod_rst_info omap44xx_dsp_resets[] = {
Benoit Cousson8f25bdc2010-12-21 21:08:34 -0700644 { .name = "dsp", .rst_shift = 0 },
645};
646
Benoit Cousson8f25bdc2010-12-21 21:08:34 -0700647static struct omap_hwmod omap44xx_dsp_hwmod = {
648 .name = "dsp",
649 .class = &omap44xx_dsp_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600650 .clkdm_name = "tesla_clkdm",
Benoit Cousson8f25bdc2010-12-21 21:08:34 -0700651 .mpu_irqs = omap44xx_dsp_irqs,
Benoit Cousson8f25bdc2010-12-21 21:08:34 -0700652 .rst_lines = omap44xx_dsp_resets,
653 .rst_lines_cnt = ARRAY_SIZE(omap44xx_dsp_resets),
654 .main_clk = "dsp_fck",
655 .prcm = {
656 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600657 .clkctrl_offs = OMAP4_CM_TESLA_TESLA_CLKCTRL_OFFSET,
Benoit Coussoneaac3292011-07-10 05:56:31 -0600658 .rstctrl_offs = OMAP4_RM_TESLA_RSTCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600659 .context_offs = OMAP4_RM_TESLA_TESLA_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -0600660 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson8f25bdc2010-12-21 21:08:34 -0700661 },
662 },
Benoit Cousson8f25bdc2010-12-21 21:08:34 -0700663};
664
665/*
Benoit Coussond63bd742011-01-27 11:17:03 +0000666 * 'dss' class
667 * display sub-system
668 */
669
670static struct omap_hwmod_class_sysconfig omap44xx_dss_sysc = {
671 .rev_offs = 0x0000,
672 .syss_offs = 0x0014,
673 .sysc_flags = SYSS_HAS_RESET_STATUS,
674};
675
676static struct omap_hwmod_class omap44xx_dss_hwmod_class = {
677 .name = "dss",
678 .sysc = &omap44xx_dss_sysc,
Tomi Valkeinen13662dc2011-11-08 03:16:13 -0700679 .reset = omap_dss_reset,
Benoit Coussond63bd742011-01-27 11:17:03 +0000680};
681
682/* dss */
Benoit Coussond63bd742011-01-27 11:17:03 +0000683static struct omap_hwmod_opt_clk dss_opt_clks[] = {
684 { .role = "sys_clk", .clk = "dss_sys_clk" },
685 { .role = "tv_clk", .clk = "dss_tv_clk" },
Tomi Valkeinen4d0698d2011-11-08 03:16:12 -0700686 { .role = "hdmi_clk", .clk = "dss_48mhz_clk" },
Benoit Coussond63bd742011-01-27 11:17:03 +0000687};
688
689static struct omap_hwmod omap44xx_dss_hwmod = {
690 .name = "dss_core",
Tomi Valkeinen37ad0852011-11-08 03:16:11 -0700691 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
Benoit Coussond63bd742011-01-27 11:17:03 +0000692 .class = &omap44xx_dss_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600693 .clkdm_name = "l3_dss_clkdm",
Tomi Valkeinenda7cdfa2011-07-09 20:39:45 -0600694 .main_clk = "dss_dss_clk",
Benoit Coussond63bd742011-01-27 11:17:03 +0000695 .prcm = {
696 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600697 .clkctrl_offs = OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600698 .context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET,
Benoit Coussond63bd742011-01-27 11:17:03 +0000699 },
700 },
701 .opt_clks = dss_opt_clks,
702 .opt_clks_cnt = ARRAY_SIZE(dss_opt_clks),
Benoit Coussond63bd742011-01-27 11:17:03 +0000703};
704
705/*
706 * 'dispc' class
707 * display controller
708 */
709
710static struct omap_hwmod_class_sysconfig omap44xx_dispc_sysc = {
711 .rev_offs = 0x0000,
712 .sysc_offs = 0x0010,
713 .syss_offs = 0x0014,
714 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
715 SYSC_HAS_ENAWAKEUP | SYSC_HAS_MIDLEMODE |
716 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
717 SYSS_HAS_RESET_STATUS),
718 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
719 MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
720 .sysc_fields = &omap_hwmod_sysc_type1,
721};
722
723static struct omap_hwmod_class omap44xx_dispc_hwmod_class = {
724 .name = "dispc",
725 .sysc = &omap44xx_dispc_sysc,
726};
727
728/* dss_dispc */
Benoit Coussond63bd742011-01-27 11:17:03 +0000729static struct omap_hwmod_irq_info omap44xx_dss_dispc_irqs[] = {
730 { .irq = 25 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -0600731 { .irq = -1 }
Benoit Coussond63bd742011-01-27 11:17:03 +0000732};
733
734static struct omap_hwmod_dma_info omap44xx_dss_dispc_sdma_reqs[] = {
735 { .dma_req = 5 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -0600736 { .dma_req = -1 }
Benoit Coussond63bd742011-01-27 11:17:03 +0000737};
738
Archit Tanejab923d402011-10-06 18:04:08 -0600739static struct omap_dss_dispc_dev_attr omap44xx_dss_dispc_dev_attr = {
740 .manager_count = 3,
741 .has_framedonetv_irq = 1
742};
743
Benoit Coussond63bd742011-01-27 11:17:03 +0000744static struct omap_hwmod omap44xx_dss_dispc_hwmod = {
745 .name = "dss_dispc",
746 .class = &omap44xx_dispc_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600747 .clkdm_name = "l3_dss_clkdm",
Benoit Coussond63bd742011-01-27 11:17:03 +0000748 .mpu_irqs = omap44xx_dss_dispc_irqs,
Benoit Coussond63bd742011-01-27 11:17:03 +0000749 .sdma_reqs = omap44xx_dss_dispc_sdma_reqs,
Tomi Valkeinenda7cdfa2011-07-09 20:39:45 -0600750 .main_clk = "dss_dss_clk",
Benoit Coussond63bd742011-01-27 11:17:03 +0000751 .prcm = {
752 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600753 .clkctrl_offs = OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600754 .context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET,
Benoit Coussond63bd742011-01-27 11:17:03 +0000755 },
756 },
Archit Tanejab923d402011-10-06 18:04:08 -0600757 .dev_attr = &omap44xx_dss_dispc_dev_attr
Benoit Coussond63bd742011-01-27 11:17:03 +0000758};
759
760/*
761 * 'dsi' class
762 * display serial interface controller
763 */
764
765static struct omap_hwmod_class_sysconfig omap44xx_dsi_sysc = {
766 .rev_offs = 0x0000,
767 .sysc_offs = 0x0010,
768 .syss_offs = 0x0014,
769 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
770 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE |
771 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
772 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
773 .sysc_fields = &omap_hwmod_sysc_type1,
774};
775
776static struct omap_hwmod_class omap44xx_dsi_hwmod_class = {
777 .name = "dsi",
778 .sysc = &omap44xx_dsi_sysc,
779};
780
781/* dss_dsi1 */
Benoit Coussond63bd742011-01-27 11:17:03 +0000782static struct omap_hwmod_irq_info omap44xx_dss_dsi1_irqs[] = {
783 { .irq = 53 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -0600784 { .irq = -1 }
Benoit Coussond63bd742011-01-27 11:17:03 +0000785};
786
787static struct omap_hwmod_dma_info omap44xx_dss_dsi1_sdma_reqs[] = {
788 { .dma_req = 74 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -0600789 { .dma_req = -1 }
Benoit Coussond63bd742011-01-27 11:17:03 +0000790};
791
Tomi Valkeinen3a23aaf2011-07-09 20:39:44 -0600792static struct omap_hwmod_opt_clk dss_dsi1_opt_clks[] = {
793 { .role = "sys_clk", .clk = "dss_sys_clk" },
794};
795
Benoit Coussond63bd742011-01-27 11:17:03 +0000796static struct omap_hwmod omap44xx_dss_dsi1_hwmod = {
797 .name = "dss_dsi1",
798 .class = &omap44xx_dsi_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600799 .clkdm_name = "l3_dss_clkdm",
Benoit Coussond63bd742011-01-27 11:17:03 +0000800 .mpu_irqs = omap44xx_dss_dsi1_irqs,
Benoit Coussond63bd742011-01-27 11:17:03 +0000801 .sdma_reqs = omap44xx_dss_dsi1_sdma_reqs,
Tomi Valkeinenda7cdfa2011-07-09 20:39:45 -0600802 .main_clk = "dss_dss_clk",
Benoit Coussond63bd742011-01-27 11:17:03 +0000803 .prcm = {
804 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600805 .clkctrl_offs = OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600806 .context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET,
Benoit Coussond63bd742011-01-27 11:17:03 +0000807 },
808 },
Tomi Valkeinen3a23aaf2011-07-09 20:39:44 -0600809 .opt_clks = dss_dsi1_opt_clks,
810 .opt_clks_cnt = ARRAY_SIZE(dss_dsi1_opt_clks),
Benoit Coussond63bd742011-01-27 11:17:03 +0000811};
812
813/* dss_dsi2 */
Benoit Coussond63bd742011-01-27 11:17:03 +0000814static struct omap_hwmod_irq_info omap44xx_dss_dsi2_irqs[] = {
815 { .irq = 84 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -0600816 { .irq = -1 }
Benoit Coussond63bd742011-01-27 11:17:03 +0000817};
818
819static struct omap_hwmod_dma_info omap44xx_dss_dsi2_sdma_reqs[] = {
820 { .dma_req = 83 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -0600821 { .dma_req = -1 }
Benoit Coussond63bd742011-01-27 11:17:03 +0000822};
823
Tomi Valkeinen3a23aaf2011-07-09 20:39:44 -0600824static struct omap_hwmod_opt_clk dss_dsi2_opt_clks[] = {
825 { .role = "sys_clk", .clk = "dss_sys_clk" },
826};
827
Benoit Coussond63bd742011-01-27 11:17:03 +0000828static struct omap_hwmod omap44xx_dss_dsi2_hwmod = {
829 .name = "dss_dsi2",
830 .class = &omap44xx_dsi_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600831 .clkdm_name = "l3_dss_clkdm",
Benoit Coussond63bd742011-01-27 11:17:03 +0000832 .mpu_irqs = omap44xx_dss_dsi2_irqs,
Benoit Coussond63bd742011-01-27 11:17:03 +0000833 .sdma_reqs = omap44xx_dss_dsi2_sdma_reqs,
Tomi Valkeinenda7cdfa2011-07-09 20:39:45 -0600834 .main_clk = "dss_dss_clk",
Benoit Coussond63bd742011-01-27 11:17:03 +0000835 .prcm = {
836 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600837 .clkctrl_offs = OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600838 .context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET,
Benoit Coussond63bd742011-01-27 11:17:03 +0000839 },
840 },
Tomi Valkeinen3a23aaf2011-07-09 20:39:44 -0600841 .opt_clks = dss_dsi2_opt_clks,
842 .opt_clks_cnt = ARRAY_SIZE(dss_dsi2_opt_clks),
Benoit Coussond63bd742011-01-27 11:17:03 +0000843};
844
845/*
846 * 'hdmi' class
847 * hdmi controller
848 */
849
850static struct omap_hwmod_class_sysconfig omap44xx_hdmi_sysc = {
851 .rev_offs = 0x0000,
852 .sysc_offs = 0x0010,
853 .sysc_flags = (SYSC_HAS_RESET_STATUS | SYSC_HAS_SIDLEMODE |
854 SYSC_HAS_SOFTRESET),
855 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
856 SIDLE_SMART_WKUP),
857 .sysc_fields = &omap_hwmod_sysc_type2,
858};
859
860static struct omap_hwmod_class omap44xx_hdmi_hwmod_class = {
861 .name = "hdmi",
862 .sysc = &omap44xx_hdmi_sysc,
863};
864
865/* dss_hdmi */
Benoit Coussond63bd742011-01-27 11:17:03 +0000866static struct omap_hwmod_irq_info omap44xx_dss_hdmi_irqs[] = {
867 { .irq = 101 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -0600868 { .irq = -1 }
Benoit Coussond63bd742011-01-27 11:17:03 +0000869};
870
871static struct omap_hwmod_dma_info omap44xx_dss_hdmi_sdma_reqs[] = {
872 { .dma_req = 75 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -0600873 { .dma_req = -1 }
Benoit Coussond63bd742011-01-27 11:17:03 +0000874};
875
Tomi Valkeinen3a23aaf2011-07-09 20:39:44 -0600876static struct omap_hwmod_opt_clk dss_hdmi_opt_clks[] = {
877 { .role = "sys_clk", .clk = "dss_sys_clk" },
878};
879
Benoit Coussond63bd742011-01-27 11:17:03 +0000880static struct omap_hwmod omap44xx_dss_hdmi_hwmod = {
881 .name = "dss_hdmi",
882 .class = &omap44xx_hdmi_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600883 .clkdm_name = "l3_dss_clkdm",
Ricardo Neridc57aef2012-06-21 10:08:53 +0200884 /*
885 * HDMI audio requires to use no-idle mode. Hence,
886 * set idle mode by software.
887 */
888 .flags = HWMOD_SWSUP_SIDLE,
Benoit Coussond63bd742011-01-27 11:17:03 +0000889 .mpu_irqs = omap44xx_dss_hdmi_irqs,
Benoit Coussond63bd742011-01-27 11:17:03 +0000890 .sdma_reqs = omap44xx_dss_hdmi_sdma_reqs,
Tomi Valkeinen4d0698d2011-11-08 03:16:12 -0700891 .main_clk = "dss_48mhz_clk",
Benoit Coussond63bd742011-01-27 11:17:03 +0000892 .prcm = {
893 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600894 .clkctrl_offs = OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600895 .context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET,
Benoit Coussond63bd742011-01-27 11:17:03 +0000896 },
897 },
Tomi Valkeinen3a23aaf2011-07-09 20:39:44 -0600898 .opt_clks = dss_hdmi_opt_clks,
899 .opt_clks_cnt = ARRAY_SIZE(dss_hdmi_opt_clks),
Benoit Coussond63bd742011-01-27 11:17:03 +0000900};
901
902/*
903 * 'rfbi' class
904 * remote frame buffer interface
905 */
906
907static struct omap_hwmod_class_sysconfig omap44xx_rfbi_sysc = {
908 .rev_offs = 0x0000,
909 .sysc_offs = 0x0010,
910 .syss_offs = 0x0014,
911 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_SIDLEMODE |
912 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
913 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
914 .sysc_fields = &omap_hwmod_sysc_type1,
915};
916
917static struct omap_hwmod_class omap44xx_rfbi_hwmod_class = {
918 .name = "rfbi",
919 .sysc = &omap44xx_rfbi_sysc,
920};
921
922/* dss_rfbi */
Benoit Coussond63bd742011-01-27 11:17:03 +0000923static struct omap_hwmod_dma_info omap44xx_dss_rfbi_sdma_reqs[] = {
924 { .dma_req = 13 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -0600925 { .dma_req = -1 }
Benoit Coussond63bd742011-01-27 11:17:03 +0000926};
927
Tomi Valkeinen3a23aaf2011-07-09 20:39:44 -0600928static struct omap_hwmod_opt_clk dss_rfbi_opt_clks[] = {
929 { .role = "ick", .clk = "dss_fck" },
930};
931
Benoit Coussond63bd742011-01-27 11:17:03 +0000932static struct omap_hwmod omap44xx_dss_rfbi_hwmod = {
933 .name = "dss_rfbi",
934 .class = &omap44xx_rfbi_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600935 .clkdm_name = "l3_dss_clkdm",
Benoit Coussond63bd742011-01-27 11:17:03 +0000936 .sdma_reqs = omap44xx_dss_rfbi_sdma_reqs,
Tomi Valkeinenda7cdfa2011-07-09 20:39:45 -0600937 .main_clk = "dss_dss_clk",
Benoit Coussond63bd742011-01-27 11:17:03 +0000938 .prcm = {
939 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600940 .clkctrl_offs = OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600941 .context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET,
Benoit Coussond63bd742011-01-27 11:17:03 +0000942 },
943 },
Tomi Valkeinen3a23aaf2011-07-09 20:39:44 -0600944 .opt_clks = dss_rfbi_opt_clks,
945 .opt_clks_cnt = ARRAY_SIZE(dss_rfbi_opt_clks),
Benoit Coussond63bd742011-01-27 11:17:03 +0000946};
947
948/*
949 * 'venc' class
950 * video encoder
951 */
952
953static struct omap_hwmod_class omap44xx_venc_hwmod_class = {
954 .name = "venc",
955};
956
957/* dss_venc */
Benoit Coussond63bd742011-01-27 11:17:03 +0000958static struct omap_hwmod omap44xx_dss_venc_hwmod = {
959 .name = "dss_venc",
960 .class = &omap44xx_venc_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600961 .clkdm_name = "l3_dss_clkdm",
Tomi Valkeinen4d0698d2011-11-08 03:16:12 -0700962 .main_clk = "dss_tv_clk",
Benoit Coussond63bd742011-01-27 11:17:03 +0000963 .prcm = {
964 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600965 .clkctrl_offs = OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600966 .context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET,
Benoit Coussond63bd742011-01-27 11:17:03 +0000967 },
968 },
Benoit Coussond63bd742011-01-27 11:17:03 +0000969};
970
971/*
Paul Walmsley42b9e382012-04-19 13:33:54 -0600972 * 'elm' class
973 * bch error location module
974 */
975
976static struct omap_hwmod_class_sysconfig omap44xx_elm_sysc = {
977 .rev_offs = 0x0000,
978 .sysc_offs = 0x0010,
979 .syss_offs = 0x0014,
980 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
981 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
982 SYSS_HAS_RESET_STATUS),
983 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
984 .sysc_fields = &omap_hwmod_sysc_type1,
985};
986
987static struct omap_hwmod_class omap44xx_elm_hwmod_class = {
988 .name = "elm",
989 .sysc = &omap44xx_elm_sysc,
990};
991
992/* elm */
993static struct omap_hwmod_irq_info omap44xx_elm_irqs[] = {
994 { .irq = 4 + OMAP44XX_IRQ_GIC_START },
995 { .irq = -1 }
996};
997
998static struct omap_hwmod omap44xx_elm_hwmod = {
999 .name = "elm",
1000 .class = &omap44xx_elm_hwmod_class,
1001 .clkdm_name = "l4_per_clkdm",
1002 .mpu_irqs = omap44xx_elm_irqs,
1003 .prcm = {
1004 .omap4 = {
1005 .clkctrl_offs = OMAP4_CM_L4PER_ELM_CLKCTRL_OFFSET,
1006 .context_offs = OMAP4_RM_L4PER_ELM_CONTEXT_OFFSET,
1007 },
1008 },
1009};
1010
1011/*
Paul Walmsleybf30f952012-04-19 13:33:52 -06001012 * 'emif' class
1013 * external memory interface no1
1014 */
1015
1016static struct omap_hwmod_class_sysconfig omap44xx_emif_sysc = {
1017 .rev_offs = 0x0000,
1018};
1019
1020static struct omap_hwmod_class omap44xx_emif_hwmod_class = {
1021 .name = "emif",
1022 .sysc = &omap44xx_emif_sysc,
1023};
1024
1025/* emif1 */
1026static struct omap_hwmod_irq_info omap44xx_emif1_irqs[] = {
1027 { .irq = 110 + OMAP44XX_IRQ_GIC_START },
1028 { .irq = -1 }
1029};
1030
1031static struct omap_hwmod omap44xx_emif1_hwmod = {
1032 .name = "emif1",
1033 .class = &omap44xx_emif_hwmod_class,
1034 .clkdm_name = "l3_emif_clkdm",
1035 .flags = HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET,
1036 .mpu_irqs = omap44xx_emif1_irqs,
1037 .main_clk = "ddrphy_ck",
1038 .prcm = {
1039 .omap4 = {
1040 .clkctrl_offs = OMAP4_CM_MEMIF_EMIF_1_CLKCTRL_OFFSET,
1041 .context_offs = OMAP4_RM_MEMIF_EMIF_1_CONTEXT_OFFSET,
1042 .modulemode = MODULEMODE_HWCTRL,
1043 },
1044 },
1045};
1046
1047/* emif2 */
1048static struct omap_hwmod_irq_info omap44xx_emif2_irqs[] = {
1049 { .irq = 111 + OMAP44XX_IRQ_GIC_START },
1050 { .irq = -1 }
1051};
1052
1053static struct omap_hwmod omap44xx_emif2_hwmod = {
1054 .name = "emif2",
1055 .class = &omap44xx_emif_hwmod_class,
1056 .clkdm_name = "l3_emif_clkdm",
1057 .flags = HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET,
1058 .mpu_irqs = omap44xx_emif2_irqs,
1059 .main_clk = "ddrphy_ck",
1060 .prcm = {
1061 .omap4 = {
1062 .clkctrl_offs = OMAP4_CM_MEMIF_EMIF_2_CLKCTRL_OFFSET,
1063 .context_offs = OMAP4_RM_MEMIF_EMIF_2_CONTEXT_OFFSET,
1064 .modulemode = MODULEMODE_HWCTRL,
1065 },
1066 },
1067};
1068
1069/*
Ming Leib050f682012-04-19 13:33:50 -06001070 * 'fdif' class
1071 * face detection hw accelerator module
1072 */
1073
1074static struct omap_hwmod_class_sysconfig omap44xx_fdif_sysc = {
1075 .rev_offs = 0x0000,
1076 .sysc_offs = 0x0010,
1077 /*
1078 * FDIF needs 100 OCP clk cycles delay after a softreset before
1079 * accessing sysconfig again.
1080 * The lowest frequency at the moment for L3 bus is 100 MHz, so
1081 * 1usec delay is needed. Add an x2 margin to be safe (2 usecs).
1082 *
1083 * TODO: Indicate errata when available.
1084 */
1085 .srst_udelay = 2,
1086 .sysc_flags = (SYSC_HAS_MIDLEMODE | SYSC_HAS_RESET_STATUS |
1087 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
1088 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1089 MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
1090 .sysc_fields = &omap_hwmod_sysc_type2,
1091};
1092
1093static struct omap_hwmod_class omap44xx_fdif_hwmod_class = {
1094 .name = "fdif",
1095 .sysc = &omap44xx_fdif_sysc,
1096};
1097
1098/* fdif */
1099static struct omap_hwmod_irq_info omap44xx_fdif_irqs[] = {
1100 { .irq = 69 + OMAP44XX_IRQ_GIC_START },
1101 { .irq = -1 }
1102};
1103
1104static struct omap_hwmod omap44xx_fdif_hwmod = {
1105 .name = "fdif",
1106 .class = &omap44xx_fdif_hwmod_class,
1107 .clkdm_name = "iss_clkdm",
1108 .mpu_irqs = omap44xx_fdif_irqs,
1109 .main_clk = "fdif_fck",
1110 .prcm = {
1111 .omap4 = {
1112 .clkctrl_offs = OMAP4_CM_CAM_FDIF_CLKCTRL_OFFSET,
1113 .context_offs = OMAP4_RM_CAM_FDIF_CONTEXT_OFFSET,
1114 .modulemode = MODULEMODE_SWCTRL,
1115 },
1116 },
1117};
1118
1119/*
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001120 * 'gpio' class
1121 * general purpose io module
1122 */
1123
1124static struct omap_hwmod_class_sysconfig omap44xx_gpio_sysc = {
1125 .rev_offs = 0x0000,
1126 .sysc_offs = 0x0010,
1127 .syss_offs = 0x0114,
Benoit Cousson0cfe8752010-12-21 21:08:33 -07001128 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_ENAWAKEUP |
1129 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
1130 SYSS_HAS_RESET_STATUS),
Benoit Cousson7cffa6b2010-12-21 21:31:28 -07001131 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1132 SIDLE_SMART_WKUP),
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001133 .sysc_fields = &omap_hwmod_sysc_type1,
1134};
1135
1136static struct omap_hwmod_class omap44xx_gpio_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +00001137 .name = "gpio",
1138 .sysc = &omap44xx_gpio_sysc,
1139 .rev = 2,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001140};
1141
1142/* gpio dev_attr */
1143static struct omap_gpio_dev_attr gpio_dev_attr = {
Benoit Coussonfe134712010-12-23 22:30:32 +00001144 .bank_width = 32,
1145 .dbck_flag = true,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001146};
1147
1148/* gpio1 */
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001149static struct omap_hwmod_irq_info omap44xx_gpio1_irqs[] = {
1150 { .irq = 29 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001151 { .irq = -1 }
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001152};
1153
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001154static struct omap_hwmod_opt_clk gpio1_opt_clks[] = {
Benoit Coussonb399bca2010-12-21 21:08:34 -07001155 { .role = "dbclk", .clk = "gpio1_dbclk" },
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001156};
1157
1158static struct omap_hwmod omap44xx_gpio1_hwmod = {
1159 .name = "gpio1",
1160 .class = &omap44xx_gpio_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001161 .clkdm_name = "l4_wkup_clkdm",
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001162 .mpu_irqs = omap44xx_gpio1_irqs,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001163 .main_clk = "gpio1_ick",
1164 .prcm = {
1165 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001166 .clkctrl_offs = OMAP4_CM_WKUP_GPIO1_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001167 .context_offs = OMAP4_RM_WKUP_GPIO1_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001168 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001169 },
1170 },
1171 .opt_clks = gpio1_opt_clks,
1172 .opt_clks_cnt = ARRAY_SIZE(gpio1_opt_clks),
1173 .dev_attr = &gpio_dev_attr,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001174};
1175
1176/* gpio2 */
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001177static struct omap_hwmod_irq_info omap44xx_gpio2_irqs[] = {
1178 { .irq = 30 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001179 { .irq = -1 }
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001180};
1181
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001182static struct omap_hwmod_opt_clk gpio2_opt_clks[] = {
Benoit Coussonb399bca2010-12-21 21:08:34 -07001183 { .role = "dbclk", .clk = "gpio2_dbclk" },
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001184};
1185
1186static struct omap_hwmod omap44xx_gpio2_hwmod = {
1187 .name = "gpio2",
1188 .class = &omap44xx_gpio_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001189 .clkdm_name = "l4_per_clkdm",
Benoit Coussonb399bca2010-12-21 21:08:34 -07001190 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001191 .mpu_irqs = omap44xx_gpio2_irqs,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001192 .main_clk = "gpio2_ick",
1193 .prcm = {
1194 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001195 .clkctrl_offs = OMAP4_CM_L4PER_GPIO2_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001196 .context_offs = OMAP4_RM_L4PER_GPIO2_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001197 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001198 },
1199 },
1200 .opt_clks = gpio2_opt_clks,
1201 .opt_clks_cnt = ARRAY_SIZE(gpio2_opt_clks),
1202 .dev_attr = &gpio_dev_attr,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001203};
1204
1205/* gpio3 */
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001206static struct omap_hwmod_irq_info omap44xx_gpio3_irqs[] = {
1207 { .irq = 31 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001208 { .irq = -1 }
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001209};
1210
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001211static struct omap_hwmod_opt_clk gpio3_opt_clks[] = {
Benoit Coussonb399bca2010-12-21 21:08:34 -07001212 { .role = "dbclk", .clk = "gpio3_dbclk" },
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001213};
1214
1215static struct omap_hwmod omap44xx_gpio3_hwmod = {
1216 .name = "gpio3",
1217 .class = &omap44xx_gpio_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001218 .clkdm_name = "l4_per_clkdm",
Benoit Coussonb399bca2010-12-21 21:08:34 -07001219 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001220 .mpu_irqs = omap44xx_gpio3_irqs,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001221 .main_clk = "gpio3_ick",
1222 .prcm = {
1223 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001224 .clkctrl_offs = OMAP4_CM_L4PER_GPIO3_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001225 .context_offs = OMAP4_RM_L4PER_GPIO3_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001226 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001227 },
1228 },
1229 .opt_clks = gpio3_opt_clks,
1230 .opt_clks_cnt = ARRAY_SIZE(gpio3_opt_clks),
1231 .dev_attr = &gpio_dev_attr,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001232};
1233
1234/* gpio4 */
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001235static struct omap_hwmod_irq_info omap44xx_gpio4_irqs[] = {
1236 { .irq = 32 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001237 { .irq = -1 }
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001238};
1239
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001240static struct omap_hwmod_opt_clk gpio4_opt_clks[] = {
Benoit Coussonb399bca2010-12-21 21:08:34 -07001241 { .role = "dbclk", .clk = "gpio4_dbclk" },
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001242};
1243
1244static struct omap_hwmod omap44xx_gpio4_hwmod = {
1245 .name = "gpio4",
1246 .class = &omap44xx_gpio_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001247 .clkdm_name = "l4_per_clkdm",
Benoit Coussonb399bca2010-12-21 21:08:34 -07001248 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001249 .mpu_irqs = omap44xx_gpio4_irqs,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001250 .main_clk = "gpio4_ick",
1251 .prcm = {
1252 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001253 .clkctrl_offs = OMAP4_CM_L4PER_GPIO4_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001254 .context_offs = OMAP4_RM_L4PER_GPIO4_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001255 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001256 },
1257 },
1258 .opt_clks = gpio4_opt_clks,
1259 .opt_clks_cnt = ARRAY_SIZE(gpio4_opt_clks),
1260 .dev_attr = &gpio_dev_attr,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001261};
1262
1263/* gpio5 */
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001264static struct omap_hwmod_irq_info omap44xx_gpio5_irqs[] = {
1265 { .irq = 33 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001266 { .irq = -1 }
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001267};
1268
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001269static struct omap_hwmod_opt_clk gpio5_opt_clks[] = {
Benoit Coussonb399bca2010-12-21 21:08:34 -07001270 { .role = "dbclk", .clk = "gpio5_dbclk" },
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001271};
1272
1273static struct omap_hwmod omap44xx_gpio5_hwmod = {
1274 .name = "gpio5",
1275 .class = &omap44xx_gpio_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001276 .clkdm_name = "l4_per_clkdm",
Benoit Coussonb399bca2010-12-21 21:08:34 -07001277 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001278 .mpu_irqs = omap44xx_gpio5_irqs,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001279 .main_clk = "gpio5_ick",
1280 .prcm = {
1281 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001282 .clkctrl_offs = OMAP4_CM_L4PER_GPIO5_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001283 .context_offs = OMAP4_RM_L4PER_GPIO5_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001284 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001285 },
1286 },
1287 .opt_clks = gpio5_opt_clks,
1288 .opt_clks_cnt = ARRAY_SIZE(gpio5_opt_clks),
1289 .dev_attr = &gpio_dev_attr,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001290};
1291
1292/* gpio6 */
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001293static struct omap_hwmod_irq_info omap44xx_gpio6_irqs[] = {
1294 { .irq = 34 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001295 { .irq = -1 }
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001296};
1297
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001298static struct omap_hwmod_opt_clk gpio6_opt_clks[] = {
Benoit Coussonb399bca2010-12-21 21:08:34 -07001299 { .role = "dbclk", .clk = "gpio6_dbclk" },
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001300};
1301
1302static struct omap_hwmod omap44xx_gpio6_hwmod = {
1303 .name = "gpio6",
1304 .class = &omap44xx_gpio_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001305 .clkdm_name = "l4_per_clkdm",
Benoit Coussonb399bca2010-12-21 21:08:34 -07001306 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001307 .mpu_irqs = omap44xx_gpio6_irqs,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001308 .main_clk = "gpio6_ick",
1309 .prcm = {
1310 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001311 .clkctrl_offs = OMAP4_CM_L4PER_GPIO6_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001312 .context_offs = OMAP4_RM_L4PER_GPIO6_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001313 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001314 },
1315 },
1316 .opt_clks = gpio6_opt_clks,
1317 .opt_clks_cnt = ARRAY_SIZE(gpio6_opt_clks),
1318 .dev_attr = &gpio_dev_attr,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001319};
1320
1321/*
Benoît Coussoneb42b5d2012-04-19 13:33:51 -06001322 * 'gpmc' class
1323 * general purpose memory controller
1324 */
1325
1326static struct omap_hwmod_class_sysconfig omap44xx_gpmc_sysc = {
1327 .rev_offs = 0x0000,
1328 .sysc_offs = 0x0010,
1329 .syss_offs = 0x0014,
1330 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_SIDLEMODE |
1331 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
1332 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
1333 .sysc_fields = &omap_hwmod_sysc_type1,
1334};
1335
1336static struct omap_hwmod_class omap44xx_gpmc_hwmod_class = {
1337 .name = "gpmc",
1338 .sysc = &omap44xx_gpmc_sysc,
1339};
1340
1341/* gpmc */
1342static struct omap_hwmod_irq_info omap44xx_gpmc_irqs[] = {
1343 { .irq = 20 + OMAP44XX_IRQ_GIC_START },
1344 { .irq = -1 }
1345};
1346
1347static struct omap_hwmod_dma_info omap44xx_gpmc_sdma_reqs[] = {
1348 { .dma_req = 3 + OMAP44XX_DMA_REQ_START },
1349 { .dma_req = -1 }
1350};
1351
1352static struct omap_hwmod omap44xx_gpmc_hwmod = {
1353 .name = "gpmc",
1354 .class = &omap44xx_gpmc_hwmod_class,
1355 .clkdm_name = "l3_2_clkdm",
Afzal Mohammed49484a62012-09-23 17:28:24 -06001356 /*
1357 * XXX HWMOD_INIT_NO_RESET should not be needed for this IP
1358 * block. It is not being added due to any known bugs with
1359 * resetting the GPMC IP block, but rather because any timings
1360 * set by the bootloader are not being correctly programmed by
1361 * the kernel from the board file or DT data.
1362 * HWMOD_INIT_NO_RESET should be removed ASAP.
1363 */
Benoît Coussoneb42b5d2012-04-19 13:33:51 -06001364 .flags = HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET,
1365 .mpu_irqs = omap44xx_gpmc_irqs,
1366 .sdma_reqs = omap44xx_gpmc_sdma_reqs,
1367 .prcm = {
1368 .omap4 = {
1369 .clkctrl_offs = OMAP4_CM_L3_2_GPMC_CLKCTRL_OFFSET,
1370 .context_offs = OMAP4_RM_L3_2_GPMC_CONTEXT_OFFSET,
1371 .modulemode = MODULEMODE_HWCTRL,
1372 },
1373 },
1374};
1375
1376/*
Paul Walmsley9def3902012-04-19 13:33:53 -06001377 * 'gpu' class
1378 * 2d/3d graphics accelerator
1379 */
1380
1381static struct omap_hwmod_class_sysconfig omap44xx_gpu_sysc = {
1382 .rev_offs = 0x1fc00,
1383 .sysc_offs = 0x1fc10,
1384 .sysc_flags = (SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE),
1385 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1386 SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
1387 MSTANDBY_SMART | MSTANDBY_SMART_WKUP),
1388 .sysc_fields = &omap_hwmod_sysc_type2,
1389};
1390
1391static struct omap_hwmod_class omap44xx_gpu_hwmod_class = {
1392 .name = "gpu",
1393 .sysc = &omap44xx_gpu_sysc,
1394};
1395
1396/* gpu */
1397static struct omap_hwmod_irq_info omap44xx_gpu_irqs[] = {
1398 { .irq = 21 + OMAP44XX_IRQ_GIC_START },
1399 { .irq = -1 }
1400};
1401
1402static struct omap_hwmod omap44xx_gpu_hwmod = {
1403 .name = "gpu",
1404 .class = &omap44xx_gpu_hwmod_class,
1405 .clkdm_name = "l3_gfx_clkdm",
1406 .mpu_irqs = omap44xx_gpu_irqs,
1407 .main_clk = "gpu_fck",
1408 .prcm = {
1409 .omap4 = {
1410 .clkctrl_offs = OMAP4_CM_GFX_GFX_CLKCTRL_OFFSET,
1411 .context_offs = OMAP4_RM_GFX_GFX_CONTEXT_OFFSET,
1412 .modulemode = MODULEMODE_SWCTRL,
1413 },
1414 },
1415};
1416
1417/*
Paul Walmsleya091c082012-04-19 13:33:50 -06001418 * 'hdq1w' class
1419 * hdq / 1-wire serial interface controller
1420 */
1421
1422static struct omap_hwmod_class_sysconfig omap44xx_hdq1w_sysc = {
1423 .rev_offs = 0x0000,
1424 .sysc_offs = 0x0014,
1425 .syss_offs = 0x0018,
1426 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_SOFTRESET |
1427 SYSS_HAS_RESET_STATUS),
1428 .sysc_fields = &omap_hwmod_sysc_type1,
1429};
1430
1431static struct omap_hwmod_class omap44xx_hdq1w_hwmod_class = {
1432 .name = "hdq1w",
1433 .sysc = &omap44xx_hdq1w_sysc,
1434};
1435
1436/* hdq1w */
1437static struct omap_hwmod_irq_info omap44xx_hdq1w_irqs[] = {
1438 { .irq = 58 + OMAP44XX_IRQ_GIC_START },
1439 { .irq = -1 }
1440};
1441
1442static struct omap_hwmod omap44xx_hdq1w_hwmod = {
1443 .name = "hdq1w",
1444 .class = &omap44xx_hdq1w_hwmod_class,
1445 .clkdm_name = "l4_per_clkdm",
1446 .flags = HWMOD_INIT_NO_RESET, /* XXX temporary */
1447 .mpu_irqs = omap44xx_hdq1w_irqs,
1448 .main_clk = "hdq1w_fck",
1449 .prcm = {
1450 .omap4 = {
1451 .clkctrl_offs = OMAP4_CM_L4PER_HDQ1W_CLKCTRL_OFFSET,
1452 .context_offs = OMAP4_RM_L4PER_HDQ1W_CONTEXT_OFFSET,
1453 .modulemode = MODULEMODE_SWCTRL,
1454 },
1455 },
1456};
1457
1458/*
Benoit Cousson407a6882011-02-15 22:39:48 +01001459 * 'hsi' class
1460 * mipi high-speed synchronous serial interface (multichannel and full-duplex
1461 * serial if)
1462 */
1463
1464static struct omap_hwmod_class_sysconfig omap44xx_hsi_sysc = {
1465 .rev_offs = 0x0000,
1466 .sysc_offs = 0x0010,
1467 .syss_offs = 0x0014,
1468 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_EMUFREE |
1469 SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE |
1470 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
1471 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1472 SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
Benoit Coussonc614ebf2011-07-01 22:54:01 +02001473 MSTANDBY_SMART | MSTANDBY_SMART_WKUP),
Benoit Cousson407a6882011-02-15 22:39:48 +01001474 .sysc_fields = &omap_hwmod_sysc_type1,
1475};
1476
1477static struct omap_hwmod_class omap44xx_hsi_hwmod_class = {
1478 .name = "hsi",
1479 .sysc = &omap44xx_hsi_sysc,
1480};
1481
1482/* hsi */
1483static struct omap_hwmod_irq_info omap44xx_hsi_irqs[] = {
1484 { .name = "mpu_p1", .irq = 67 + OMAP44XX_IRQ_GIC_START },
1485 { .name = "mpu_p2", .irq = 68 + OMAP44XX_IRQ_GIC_START },
1486 { .name = "mpu_dma", .irq = 71 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001487 { .irq = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01001488};
1489
Benoit Cousson407a6882011-02-15 22:39:48 +01001490static struct omap_hwmod omap44xx_hsi_hwmod = {
1491 .name = "hsi",
1492 .class = &omap44xx_hsi_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001493 .clkdm_name = "l3_init_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +01001494 .mpu_irqs = omap44xx_hsi_irqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01001495 .main_clk = "hsi_fck",
Benoit Cousson00fe6102011-07-09 19:14:28 -06001496 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01001497 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001498 .clkctrl_offs = OMAP4_CM_L3INIT_HSI_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001499 .context_offs = OMAP4_RM_L3INIT_HSI_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001500 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01001501 },
1502 },
Benoit Cousson407a6882011-02-15 22:39:48 +01001503};
1504
1505/*
Benoit Coussonf7764712010-09-21 19:37:14 +05301506 * 'i2c' class
1507 * multimaster high-speed i2c controller
1508 */
1509
1510static struct omap_hwmod_class_sysconfig omap44xx_i2c_sysc = {
1511 .sysc_offs = 0x0010,
1512 .syss_offs = 0x0090,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001513 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
1514 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE |
Benoit Cousson0cfe8752010-12-21 21:08:33 -07001515 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
Benoit Cousson7cffa6b2010-12-21 21:31:28 -07001516 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1517 SIDLE_SMART_WKUP),
Shubhrajyoti D3e47dc62011-12-13 16:25:54 +05301518 .clockact = CLOCKACT_TEST_ICLK,
Benoit Coussonf7764712010-09-21 19:37:14 +05301519 .sysc_fields = &omap_hwmod_sysc_type1,
1520};
1521
1522static struct omap_hwmod_class omap44xx_i2c_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +00001523 .name = "i2c",
1524 .sysc = &omap44xx_i2c_sysc,
Andy Greendb791a72011-07-10 05:27:15 -06001525 .rev = OMAP_I2C_IP_VERSION_2,
Avinash.H.M6d3c55f2011-07-10 05:27:16 -06001526 .reset = &omap_i2c_reset,
Benoit Coussonf7764712010-09-21 19:37:14 +05301527};
1528
Andy Green4d4441a2011-07-10 05:27:16 -06001529static struct omap_i2c_dev_attr i2c_dev_attr = {
Shubhrajyoti Daa8f6ce2012-05-08 11:34:29 -06001530 .flags = OMAP_I2C_FLAG_BUS_SHIFT_NONE |
1531 OMAP_I2C_FLAG_RESET_REGS_POSTIDLE,
Andy Green4d4441a2011-07-10 05:27:16 -06001532};
1533
Benoit Coussonf7764712010-09-21 19:37:14 +05301534/* i2c1 */
Benoit Coussonf7764712010-09-21 19:37:14 +05301535static struct omap_hwmod_irq_info omap44xx_i2c1_irqs[] = {
1536 { .irq = 56 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001537 { .irq = -1 }
Benoit Coussonf7764712010-09-21 19:37:14 +05301538};
1539
1540static struct omap_hwmod_dma_info omap44xx_i2c1_sdma_reqs[] = {
1541 { .name = "tx", .dma_req = 26 + OMAP44XX_DMA_REQ_START },
1542 { .name = "rx", .dma_req = 27 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06001543 { .dma_req = -1 }
Benoit Coussonf7764712010-09-21 19:37:14 +05301544};
1545
Benoit Coussonf7764712010-09-21 19:37:14 +05301546static struct omap_hwmod omap44xx_i2c1_hwmod = {
1547 .name = "i2c1",
1548 .class = &omap44xx_i2c_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001549 .clkdm_name = "l4_per_clkdm",
Shubhrajyoti D3e47dc62011-12-13 16:25:54 +05301550 .flags = HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT,
Benoit Coussonf7764712010-09-21 19:37:14 +05301551 .mpu_irqs = omap44xx_i2c1_irqs,
Benoit Coussonf7764712010-09-21 19:37:14 +05301552 .sdma_reqs = omap44xx_i2c1_sdma_reqs,
Benoit Coussonf7764712010-09-21 19:37:14 +05301553 .main_clk = "i2c1_fck",
1554 .prcm = {
1555 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001556 .clkctrl_offs = OMAP4_CM_L4PER_I2C1_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001557 .context_offs = OMAP4_RM_L4PER_I2C1_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001558 .modulemode = MODULEMODE_SWCTRL,
Benoit Coussonf7764712010-09-21 19:37:14 +05301559 },
1560 },
Andy Green4d4441a2011-07-10 05:27:16 -06001561 .dev_attr = &i2c_dev_attr,
Benoit Coussonf7764712010-09-21 19:37:14 +05301562};
1563
1564/* i2c2 */
Benoit Coussonf7764712010-09-21 19:37:14 +05301565static struct omap_hwmod_irq_info omap44xx_i2c2_irqs[] = {
1566 { .irq = 57 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001567 { .irq = -1 }
Benoit Coussonf7764712010-09-21 19:37:14 +05301568};
1569
1570static struct omap_hwmod_dma_info omap44xx_i2c2_sdma_reqs[] = {
1571 { .name = "tx", .dma_req = 28 + OMAP44XX_DMA_REQ_START },
1572 { .name = "rx", .dma_req = 29 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06001573 { .dma_req = -1 }
Benoit Coussonf7764712010-09-21 19:37:14 +05301574};
1575
Benoit Coussonf7764712010-09-21 19:37:14 +05301576static struct omap_hwmod omap44xx_i2c2_hwmod = {
1577 .name = "i2c2",
1578 .class = &omap44xx_i2c_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001579 .clkdm_name = "l4_per_clkdm",
Shubhrajyoti D3e47dc62011-12-13 16:25:54 +05301580 .flags = HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT,
Benoit Coussonf7764712010-09-21 19:37:14 +05301581 .mpu_irqs = omap44xx_i2c2_irqs,
Benoit Coussonf7764712010-09-21 19:37:14 +05301582 .sdma_reqs = omap44xx_i2c2_sdma_reqs,
Benoit Coussonf7764712010-09-21 19:37:14 +05301583 .main_clk = "i2c2_fck",
1584 .prcm = {
1585 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001586 .clkctrl_offs = OMAP4_CM_L4PER_I2C2_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001587 .context_offs = OMAP4_RM_L4PER_I2C2_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001588 .modulemode = MODULEMODE_SWCTRL,
Benoit Coussonf7764712010-09-21 19:37:14 +05301589 },
1590 },
Andy Green4d4441a2011-07-10 05:27:16 -06001591 .dev_attr = &i2c_dev_attr,
Benoit Coussonf7764712010-09-21 19:37:14 +05301592};
1593
1594/* i2c3 */
Benoit Coussonf7764712010-09-21 19:37:14 +05301595static struct omap_hwmod_irq_info omap44xx_i2c3_irqs[] = {
1596 { .irq = 61 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001597 { .irq = -1 }
Benoit Coussonf7764712010-09-21 19:37:14 +05301598};
1599
1600static struct omap_hwmod_dma_info omap44xx_i2c3_sdma_reqs[] = {
1601 { .name = "tx", .dma_req = 24 + OMAP44XX_DMA_REQ_START },
1602 { .name = "rx", .dma_req = 25 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06001603 { .dma_req = -1 }
Benoit Coussonf7764712010-09-21 19:37:14 +05301604};
1605
Benoit Coussonf7764712010-09-21 19:37:14 +05301606static struct omap_hwmod omap44xx_i2c3_hwmod = {
1607 .name = "i2c3",
1608 .class = &omap44xx_i2c_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001609 .clkdm_name = "l4_per_clkdm",
Shubhrajyoti D3e47dc62011-12-13 16:25:54 +05301610 .flags = HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT,
Benoit Coussonf7764712010-09-21 19:37:14 +05301611 .mpu_irqs = omap44xx_i2c3_irqs,
Benoit Coussonf7764712010-09-21 19:37:14 +05301612 .sdma_reqs = omap44xx_i2c3_sdma_reqs,
Benoit Coussonf7764712010-09-21 19:37:14 +05301613 .main_clk = "i2c3_fck",
1614 .prcm = {
1615 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001616 .clkctrl_offs = OMAP4_CM_L4PER_I2C3_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001617 .context_offs = OMAP4_RM_L4PER_I2C3_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001618 .modulemode = MODULEMODE_SWCTRL,
Benoit Coussonf7764712010-09-21 19:37:14 +05301619 },
1620 },
Andy Green4d4441a2011-07-10 05:27:16 -06001621 .dev_attr = &i2c_dev_attr,
Benoit Coussonf7764712010-09-21 19:37:14 +05301622};
1623
1624/* i2c4 */
Benoit Coussonf7764712010-09-21 19:37:14 +05301625static struct omap_hwmod_irq_info omap44xx_i2c4_irqs[] = {
1626 { .irq = 62 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001627 { .irq = -1 }
Benoit Coussonf7764712010-09-21 19:37:14 +05301628};
1629
1630static struct omap_hwmod_dma_info omap44xx_i2c4_sdma_reqs[] = {
1631 { .name = "tx", .dma_req = 123 + OMAP44XX_DMA_REQ_START },
1632 { .name = "rx", .dma_req = 124 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06001633 { .dma_req = -1 }
Benoit Coussonf7764712010-09-21 19:37:14 +05301634};
1635
Benoit Coussonf7764712010-09-21 19:37:14 +05301636static struct omap_hwmod omap44xx_i2c4_hwmod = {
1637 .name = "i2c4",
1638 .class = &omap44xx_i2c_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001639 .clkdm_name = "l4_per_clkdm",
Shubhrajyoti D3e47dc62011-12-13 16:25:54 +05301640 .flags = HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT,
Benoit Coussonf7764712010-09-21 19:37:14 +05301641 .mpu_irqs = omap44xx_i2c4_irqs,
Benoit Coussonf7764712010-09-21 19:37:14 +05301642 .sdma_reqs = omap44xx_i2c4_sdma_reqs,
Benoit Coussonf7764712010-09-21 19:37:14 +05301643 .main_clk = "i2c4_fck",
1644 .prcm = {
1645 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001646 .clkctrl_offs = OMAP4_CM_L4PER_I2C4_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001647 .context_offs = OMAP4_RM_L4PER_I2C4_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001648 .modulemode = MODULEMODE_SWCTRL,
Benoit Coussonf7764712010-09-21 19:37:14 +05301649 },
1650 },
Andy Green4d4441a2011-07-10 05:27:16 -06001651 .dev_attr = &i2c_dev_attr,
Benoit Coussonf7764712010-09-21 19:37:14 +05301652};
1653
1654/*
Benoit Cousson407a6882011-02-15 22:39:48 +01001655 * 'ipu' class
1656 * imaging processor unit
1657 */
1658
1659static struct omap_hwmod_class omap44xx_ipu_hwmod_class = {
1660 .name = "ipu",
1661};
1662
1663/* ipu */
1664static struct omap_hwmod_irq_info omap44xx_ipu_irqs[] = {
1665 { .irq = 100 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001666 { .irq = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01001667};
1668
Benoit Cousson407a6882011-02-15 22:39:48 +01001669static struct omap_hwmod_rst_info omap44xx_ipu_resets[] = {
Paul Walmsleyf2f57362012-04-18 19:10:02 -06001670 { .name = "cpu0", .rst_shift = 0 },
1671 { .name = "cpu1", .rst_shift = 1 },
Benoit Cousson407a6882011-02-15 22:39:48 +01001672};
1673
Benoit Cousson407a6882011-02-15 22:39:48 +01001674static struct omap_hwmod omap44xx_ipu_hwmod = {
1675 .name = "ipu",
1676 .class = &omap44xx_ipu_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001677 .clkdm_name = "ducati_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +01001678 .mpu_irqs = omap44xx_ipu_irqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01001679 .rst_lines = omap44xx_ipu_resets,
1680 .rst_lines_cnt = ARRAY_SIZE(omap44xx_ipu_resets),
1681 .main_clk = "ipu_fck",
Benoit Cousson00fe6102011-07-09 19:14:28 -06001682 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01001683 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001684 .clkctrl_offs = OMAP4_CM_DUCATI_DUCATI_CLKCTRL_OFFSET,
Benoit Coussoneaac3292011-07-10 05:56:31 -06001685 .rstctrl_offs = OMAP4_RM_DUCATI_RSTCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001686 .context_offs = OMAP4_RM_DUCATI_DUCATI_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001687 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01001688 },
1689 },
Benoit Cousson407a6882011-02-15 22:39:48 +01001690};
1691
1692/*
1693 * 'iss' class
1694 * external images sensor pixel data processor
1695 */
1696
1697static struct omap_hwmod_class_sysconfig omap44xx_iss_sysc = {
1698 .rev_offs = 0x0000,
1699 .sysc_offs = 0x0010,
Fernando Guzman Lugod99de7f2012-04-13 05:08:03 -06001700 /*
1701 * ISS needs 100 OCP clk cycles delay after a softreset before
1702 * accessing sysconfig again.
1703 * The lowest frequency at the moment for L3 bus is 100 MHz, so
1704 * 1usec delay is needed. Add an x2 margin to be safe (2 usecs).
1705 *
1706 * TODO: Indicate errata when available.
1707 */
1708 .srst_udelay = 2,
Benoit Cousson407a6882011-02-15 22:39:48 +01001709 .sysc_flags = (SYSC_HAS_MIDLEMODE | SYSC_HAS_RESET_STATUS |
1710 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
1711 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1712 SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
Benoit Coussonc614ebf2011-07-01 22:54:01 +02001713 MSTANDBY_SMART | MSTANDBY_SMART_WKUP),
Benoit Cousson407a6882011-02-15 22:39:48 +01001714 .sysc_fields = &omap_hwmod_sysc_type2,
1715};
1716
1717static struct omap_hwmod_class omap44xx_iss_hwmod_class = {
1718 .name = "iss",
1719 .sysc = &omap44xx_iss_sysc,
1720};
1721
1722/* iss */
1723static struct omap_hwmod_irq_info omap44xx_iss_irqs[] = {
1724 { .irq = 24 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001725 { .irq = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01001726};
1727
1728static struct omap_hwmod_dma_info omap44xx_iss_sdma_reqs[] = {
1729 { .name = "1", .dma_req = 8 + OMAP44XX_DMA_REQ_START },
1730 { .name = "2", .dma_req = 9 + OMAP44XX_DMA_REQ_START },
1731 { .name = "3", .dma_req = 11 + OMAP44XX_DMA_REQ_START },
1732 { .name = "4", .dma_req = 12 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06001733 { .dma_req = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01001734};
1735
Benoit Cousson407a6882011-02-15 22:39:48 +01001736static struct omap_hwmod_opt_clk iss_opt_clks[] = {
1737 { .role = "ctrlclk", .clk = "iss_ctrlclk" },
1738};
1739
1740static struct omap_hwmod omap44xx_iss_hwmod = {
1741 .name = "iss",
1742 .class = &omap44xx_iss_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001743 .clkdm_name = "iss_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +01001744 .mpu_irqs = omap44xx_iss_irqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01001745 .sdma_reqs = omap44xx_iss_sdma_reqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01001746 .main_clk = "iss_fck",
Benoit Cousson00fe6102011-07-09 19:14:28 -06001747 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01001748 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001749 .clkctrl_offs = OMAP4_CM_CAM_ISS_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001750 .context_offs = OMAP4_RM_CAM_ISS_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001751 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01001752 },
1753 },
1754 .opt_clks = iss_opt_clks,
1755 .opt_clks_cnt = ARRAY_SIZE(iss_opt_clks),
Benoit Cousson407a6882011-02-15 22:39:48 +01001756};
1757
1758/*
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001759 * 'iva' class
1760 * multi-standard video encoder/decoder hardware accelerator
1761 */
1762
1763static struct omap_hwmod_class omap44xx_iva_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +00001764 .name = "iva",
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001765};
1766
1767/* iva */
1768static struct omap_hwmod_irq_info omap44xx_iva_irqs[] = {
1769 { .name = "sync_1", .irq = 103 + OMAP44XX_IRQ_GIC_START },
1770 { .name = "sync_0", .irq = 104 + OMAP44XX_IRQ_GIC_START },
1771 { .name = "mailbox_0", .irq = 107 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001772 { .irq = -1 }
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001773};
1774
1775static struct omap_hwmod_rst_info omap44xx_iva_resets[] = {
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001776 { .name = "seq0", .rst_shift = 0 },
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001777 { .name = "seq1", .rst_shift = 1 },
Paul Walmsleyf2f57362012-04-18 19:10:02 -06001778 { .name = "logic", .rst_shift = 2 },
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001779};
1780
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001781static struct omap_hwmod omap44xx_iva_hwmod = {
1782 .name = "iva",
1783 .class = &omap44xx_iva_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001784 .clkdm_name = "ivahd_clkdm",
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001785 .mpu_irqs = omap44xx_iva_irqs,
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001786 .rst_lines = omap44xx_iva_resets,
1787 .rst_lines_cnt = ARRAY_SIZE(omap44xx_iva_resets),
1788 .main_clk = "iva_fck",
1789 .prcm = {
1790 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001791 .clkctrl_offs = OMAP4_CM_IVAHD_IVAHD_CLKCTRL_OFFSET,
Benoit Coussoneaac3292011-07-10 05:56:31 -06001792 .rstctrl_offs = OMAP4_RM_IVAHD_RSTCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001793 .context_offs = OMAP4_RM_IVAHD_IVAHD_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001794 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001795 },
1796 },
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001797};
1798
1799/*
Benoit Cousson407a6882011-02-15 22:39:48 +01001800 * 'kbd' class
1801 * keyboard controller
1802 */
1803
1804static struct omap_hwmod_class_sysconfig omap44xx_kbd_sysc = {
1805 .rev_offs = 0x0000,
1806 .sysc_offs = 0x0010,
1807 .syss_offs = 0x0014,
1808 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
1809 SYSC_HAS_EMUFREE | SYSC_HAS_ENAWAKEUP |
1810 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
1811 SYSS_HAS_RESET_STATUS),
1812 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
1813 .sysc_fields = &omap_hwmod_sysc_type1,
1814};
1815
1816static struct omap_hwmod_class omap44xx_kbd_hwmod_class = {
1817 .name = "kbd",
1818 .sysc = &omap44xx_kbd_sysc,
1819};
1820
1821/* kbd */
Benoit Cousson407a6882011-02-15 22:39:48 +01001822static struct omap_hwmod_irq_info omap44xx_kbd_irqs[] = {
1823 { .irq = 120 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001824 { .irq = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01001825};
1826
Benoit Cousson407a6882011-02-15 22:39:48 +01001827static struct omap_hwmod omap44xx_kbd_hwmod = {
1828 .name = "kbd",
1829 .class = &omap44xx_kbd_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001830 .clkdm_name = "l4_wkup_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +01001831 .mpu_irqs = omap44xx_kbd_irqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01001832 .main_clk = "kbd_fck",
Benoit Cousson00fe6102011-07-09 19:14:28 -06001833 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01001834 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001835 .clkctrl_offs = OMAP4_CM_WKUP_KEYBOARD_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001836 .context_offs = OMAP4_RM_WKUP_KEYBOARD_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001837 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01001838 },
1839 },
Benoit Cousson407a6882011-02-15 22:39:48 +01001840};
1841
1842/*
Benoit Coussonec5df922011-02-02 19:27:21 +00001843 * 'mailbox' class
1844 * mailbox module allowing communication between the on-chip processors using a
1845 * queued mailbox-interrupt mechanism.
1846 */
1847
1848static struct omap_hwmod_class_sysconfig omap44xx_mailbox_sysc = {
1849 .rev_offs = 0x0000,
1850 .sysc_offs = 0x0010,
1851 .sysc_flags = (SYSC_HAS_RESET_STATUS | SYSC_HAS_SIDLEMODE |
1852 SYSC_HAS_SOFTRESET),
1853 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
1854 .sysc_fields = &omap_hwmod_sysc_type2,
1855};
1856
1857static struct omap_hwmod_class omap44xx_mailbox_hwmod_class = {
1858 .name = "mailbox",
1859 .sysc = &omap44xx_mailbox_sysc,
1860};
1861
1862/* mailbox */
Benoit Coussonec5df922011-02-02 19:27:21 +00001863static struct omap_hwmod_irq_info omap44xx_mailbox_irqs[] = {
1864 { .irq = 26 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001865 { .irq = -1 }
Benoit Coussonec5df922011-02-02 19:27:21 +00001866};
1867
Benoit Coussonec5df922011-02-02 19:27:21 +00001868static struct omap_hwmod omap44xx_mailbox_hwmod = {
1869 .name = "mailbox",
1870 .class = &omap44xx_mailbox_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001871 .clkdm_name = "l4_cfg_clkdm",
Benoit Coussonec5df922011-02-02 19:27:21 +00001872 .mpu_irqs = omap44xx_mailbox_irqs,
Benoit Cousson00fe6102011-07-09 19:14:28 -06001873 .prcm = {
Benoit Coussonec5df922011-02-02 19:27:21 +00001874 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001875 .clkctrl_offs = OMAP4_CM_L4CFG_MAILBOX_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001876 .context_offs = OMAP4_RM_L4CFG_MAILBOX_CONTEXT_OFFSET,
Benoit Coussonec5df922011-02-02 19:27:21 +00001877 },
1878 },
Benoit Coussonec5df922011-02-02 19:27:21 +00001879};
1880
1881/*
Benoît Cousson896d4e92012-04-19 13:33:54 -06001882 * 'mcasp' class
1883 * multi-channel audio serial port controller
1884 */
1885
1886/* The IP is not compliant to type1 / type2 scheme */
1887static struct omap_hwmod_sysc_fields omap_hwmod_sysc_type_mcasp = {
1888 .sidle_shift = 0,
1889};
1890
1891static struct omap_hwmod_class_sysconfig omap44xx_mcasp_sysc = {
1892 .sysc_offs = 0x0004,
1893 .sysc_flags = SYSC_HAS_SIDLEMODE,
1894 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1895 SIDLE_SMART_WKUP),
1896 .sysc_fields = &omap_hwmod_sysc_type_mcasp,
1897};
1898
1899static struct omap_hwmod_class omap44xx_mcasp_hwmod_class = {
1900 .name = "mcasp",
1901 .sysc = &omap44xx_mcasp_sysc,
1902};
1903
1904/* mcasp */
1905static struct omap_hwmod_irq_info omap44xx_mcasp_irqs[] = {
1906 { .name = "arevt", .irq = 108 + OMAP44XX_IRQ_GIC_START },
1907 { .name = "axevt", .irq = 109 + OMAP44XX_IRQ_GIC_START },
1908 { .irq = -1 }
1909};
1910
1911static struct omap_hwmod_dma_info omap44xx_mcasp_sdma_reqs[] = {
1912 { .name = "axevt", .dma_req = 7 + OMAP44XX_DMA_REQ_START },
1913 { .name = "arevt", .dma_req = 10 + OMAP44XX_DMA_REQ_START },
1914 { .dma_req = -1 }
1915};
1916
1917static struct omap_hwmod omap44xx_mcasp_hwmod = {
1918 .name = "mcasp",
1919 .class = &omap44xx_mcasp_hwmod_class,
1920 .clkdm_name = "abe_clkdm",
1921 .mpu_irqs = omap44xx_mcasp_irqs,
1922 .sdma_reqs = omap44xx_mcasp_sdma_reqs,
1923 .main_clk = "mcasp_fck",
1924 .prcm = {
1925 .omap4 = {
1926 .clkctrl_offs = OMAP4_CM1_ABE_MCASP_CLKCTRL_OFFSET,
1927 .context_offs = OMAP4_RM_ABE_MCASP_CONTEXT_OFFSET,
1928 .modulemode = MODULEMODE_SWCTRL,
1929 },
1930 },
1931};
1932
1933/*
Benoit Cousson4ddff492011-01-31 14:50:30 +00001934 * 'mcbsp' class
1935 * multi channel buffered serial port controller
1936 */
1937
1938static struct omap_hwmod_class_sysconfig omap44xx_mcbsp_sysc = {
1939 .sysc_offs = 0x008c,
1940 .sysc_flags = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_ENAWAKEUP |
1941 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
1942 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
1943 .sysc_fields = &omap_hwmod_sysc_type1,
1944};
1945
1946static struct omap_hwmod_class omap44xx_mcbsp_hwmod_class = {
1947 .name = "mcbsp",
1948 .sysc = &omap44xx_mcbsp_sysc,
Kishon Vijay Abraham Icb7e9de2011-02-24 15:16:50 +05301949 .rev = MCBSP_CONFIG_TYPE4,
Benoit Cousson4ddff492011-01-31 14:50:30 +00001950};
1951
1952/* mcbsp1 */
Benoit Cousson4ddff492011-01-31 14:50:30 +00001953static struct omap_hwmod_irq_info omap44xx_mcbsp1_irqs[] = {
Peter Ujfalusi437e8972012-05-08 11:34:29 -06001954 { .name = "common", .irq = 17 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001955 { .irq = -1 }
Benoit Cousson4ddff492011-01-31 14:50:30 +00001956};
1957
1958static struct omap_hwmod_dma_info omap44xx_mcbsp1_sdma_reqs[] = {
1959 { .name = "tx", .dma_req = 32 + OMAP44XX_DMA_REQ_START },
1960 { .name = "rx", .dma_req = 33 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06001961 { .dma_req = -1 }
Benoit Cousson4ddff492011-01-31 14:50:30 +00001962};
1963
Paul Walmsley503d0ea2012-04-04 09:11:48 -06001964static struct omap_hwmod_opt_clk mcbsp1_opt_clks[] = {
1965 { .role = "pad_fck", .clk = "pad_clks_ck" },
Benoit Coussond7a0b512012-07-04 06:55:29 -06001966 { .role = "prcm_fck", .clk = "mcbsp1_sync_mux_ck" },
Paul Walmsley503d0ea2012-04-04 09:11:48 -06001967};
1968
Benoit Cousson4ddff492011-01-31 14:50:30 +00001969static struct omap_hwmod omap44xx_mcbsp1_hwmod = {
1970 .name = "mcbsp1",
1971 .class = &omap44xx_mcbsp_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001972 .clkdm_name = "abe_clkdm",
Benoit Cousson4ddff492011-01-31 14:50:30 +00001973 .mpu_irqs = omap44xx_mcbsp1_irqs,
Benoit Cousson4ddff492011-01-31 14:50:30 +00001974 .sdma_reqs = omap44xx_mcbsp1_sdma_reqs,
Benoit Cousson4ddff492011-01-31 14:50:30 +00001975 .main_clk = "mcbsp1_fck",
1976 .prcm = {
1977 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001978 .clkctrl_offs = OMAP4_CM1_ABE_MCBSP1_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001979 .context_offs = OMAP4_RM_ABE_MCBSP1_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001980 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson4ddff492011-01-31 14:50:30 +00001981 },
1982 },
Paul Walmsley503d0ea2012-04-04 09:11:48 -06001983 .opt_clks = mcbsp1_opt_clks,
1984 .opt_clks_cnt = ARRAY_SIZE(mcbsp1_opt_clks),
Benoit Cousson4ddff492011-01-31 14:50:30 +00001985};
1986
1987/* mcbsp2 */
Benoit Cousson4ddff492011-01-31 14:50:30 +00001988static struct omap_hwmod_irq_info omap44xx_mcbsp2_irqs[] = {
Peter Ujfalusi437e8972012-05-08 11:34:29 -06001989 { .name = "common", .irq = 22 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06001990 { .irq = -1 }
Benoit Cousson4ddff492011-01-31 14:50:30 +00001991};
1992
1993static struct omap_hwmod_dma_info omap44xx_mcbsp2_sdma_reqs[] = {
1994 { .name = "tx", .dma_req = 16 + OMAP44XX_DMA_REQ_START },
1995 { .name = "rx", .dma_req = 17 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06001996 { .dma_req = -1 }
Benoit Cousson4ddff492011-01-31 14:50:30 +00001997};
1998
Paul Walmsley503d0ea2012-04-04 09:11:48 -06001999static struct omap_hwmod_opt_clk mcbsp2_opt_clks[] = {
2000 { .role = "pad_fck", .clk = "pad_clks_ck" },
Benoit Coussond7a0b512012-07-04 06:55:29 -06002001 { .role = "prcm_fck", .clk = "mcbsp2_sync_mux_ck" },
Paul Walmsley503d0ea2012-04-04 09:11:48 -06002002};
2003
Benoit Cousson4ddff492011-01-31 14:50:30 +00002004static struct omap_hwmod omap44xx_mcbsp2_hwmod = {
2005 .name = "mcbsp2",
2006 .class = &omap44xx_mcbsp_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002007 .clkdm_name = "abe_clkdm",
Benoit Cousson4ddff492011-01-31 14:50:30 +00002008 .mpu_irqs = omap44xx_mcbsp2_irqs,
Benoit Cousson4ddff492011-01-31 14:50:30 +00002009 .sdma_reqs = omap44xx_mcbsp2_sdma_reqs,
Benoit Cousson4ddff492011-01-31 14:50:30 +00002010 .main_clk = "mcbsp2_fck",
2011 .prcm = {
2012 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002013 .clkctrl_offs = OMAP4_CM1_ABE_MCBSP2_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002014 .context_offs = OMAP4_RM_ABE_MCBSP2_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002015 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson4ddff492011-01-31 14:50:30 +00002016 },
2017 },
Paul Walmsley503d0ea2012-04-04 09:11:48 -06002018 .opt_clks = mcbsp2_opt_clks,
2019 .opt_clks_cnt = ARRAY_SIZE(mcbsp2_opt_clks),
Benoit Cousson4ddff492011-01-31 14:50:30 +00002020};
2021
2022/* mcbsp3 */
Benoit Cousson4ddff492011-01-31 14:50:30 +00002023static struct omap_hwmod_irq_info omap44xx_mcbsp3_irqs[] = {
Peter Ujfalusi437e8972012-05-08 11:34:29 -06002024 { .name = "common", .irq = 23 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002025 { .irq = -1 }
Benoit Cousson4ddff492011-01-31 14:50:30 +00002026};
2027
2028static struct omap_hwmod_dma_info omap44xx_mcbsp3_sdma_reqs[] = {
2029 { .name = "tx", .dma_req = 18 + OMAP44XX_DMA_REQ_START },
2030 { .name = "rx", .dma_req = 19 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06002031 { .dma_req = -1 }
Benoit Cousson4ddff492011-01-31 14:50:30 +00002032};
2033
Paul Walmsley503d0ea2012-04-04 09:11:48 -06002034static struct omap_hwmod_opt_clk mcbsp3_opt_clks[] = {
2035 { .role = "pad_fck", .clk = "pad_clks_ck" },
Benoit Coussond7a0b512012-07-04 06:55:29 -06002036 { .role = "prcm_fck", .clk = "mcbsp3_sync_mux_ck" },
Paul Walmsley503d0ea2012-04-04 09:11:48 -06002037};
2038
Benoit Cousson4ddff492011-01-31 14:50:30 +00002039static struct omap_hwmod omap44xx_mcbsp3_hwmod = {
2040 .name = "mcbsp3",
2041 .class = &omap44xx_mcbsp_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002042 .clkdm_name = "abe_clkdm",
Benoit Cousson4ddff492011-01-31 14:50:30 +00002043 .mpu_irqs = omap44xx_mcbsp3_irqs,
Benoit Cousson4ddff492011-01-31 14:50:30 +00002044 .sdma_reqs = omap44xx_mcbsp3_sdma_reqs,
Benoit Cousson4ddff492011-01-31 14:50:30 +00002045 .main_clk = "mcbsp3_fck",
2046 .prcm = {
2047 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002048 .clkctrl_offs = OMAP4_CM1_ABE_MCBSP3_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002049 .context_offs = OMAP4_RM_ABE_MCBSP3_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002050 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson4ddff492011-01-31 14:50:30 +00002051 },
2052 },
Paul Walmsley503d0ea2012-04-04 09:11:48 -06002053 .opt_clks = mcbsp3_opt_clks,
2054 .opt_clks_cnt = ARRAY_SIZE(mcbsp3_opt_clks),
Benoit Cousson4ddff492011-01-31 14:50:30 +00002055};
2056
2057/* mcbsp4 */
Benoit Cousson4ddff492011-01-31 14:50:30 +00002058static struct omap_hwmod_irq_info omap44xx_mcbsp4_irqs[] = {
Peter Ujfalusi437e8972012-05-08 11:34:29 -06002059 { .name = "common", .irq = 16 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002060 { .irq = -1 }
Benoit Cousson4ddff492011-01-31 14:50:30 +00002061};
2062
2063static struct omap_hwmod_dma_info omap44xx_mcbsp4_sdma_reqs[] = {
2064 { .name = "tx", .dma_req = 30 + OMAP44XX_DMA_REQ_START },
2065 { .name = "rx", .dma_req = 31 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06002066 { .dma_req = -1 }
Benoit Cousson4ddff492011-01-31 14:50:30 +00002067};
2068
Paul Walmsley503d0ea2012-04-04 09:11:48 -06002069static struct omap_hwmod_opt_clk mcbsp4_opt_clks[] = {
2070 { .role = "pad_fck", .clk = "pad_clks_ck" },
Benoit Coussond7a0b512012-07-04 06:55:29 -06002071 { .role = "prcm_fck", .clk = "mcbsp4_sync_mux_ck" },
Paul Walmsley503d0ea2012-04-04 09:11:48 -06002072};
2073
Benoit Cousson4ddff492011-01-31 14:50:30 +00002074static struct omap_hwmod omap44xx_mcbsp4_hwmod = {
2075 .name = "mcbsp4",
2076 .class = &omap44xx_mcbsp_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002077 .clkdm_name = "l4_per_clkdm",
Benoit Cousson4ddff492011-01-31 14:50:30 +00002078 .mpu_irqs = omap44xx_mcbsp4_irqs,
Benoit Cousson4ddff492011-01-31 14:50:30 +00002079 .sdma_reqs = omap44xx_mcbsp4_sdma_reqs,
Benoit Cousson4ddff492011-01-31 14:50:30 +00002080 .main_clk = "mcbsp4_fck",
2081 .prcm = {
2082 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002083 .clkctrl_offs = OMAP4_CM_L4PER_MCBSP4_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002084 .context_offs = OMAP4_RM_L4PER_MCBSP4_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002085 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson4ddff492011-01-31 14:50:30 +00002086 },
2087 },
Paul Walmsley503d0ea2012-04-04 09:11:48 -06002088 .opt_clks = mcbsp4_opt_clks,
2089 .opt_clks_cnt = ARRAY_SIZE(mcbsp4_opt_clks),
Benoit Cousson4ddff492011-01-31 14:50:30 +00002090};
2091
2092/*
Benoit Cousson407a6882011-02-15 22:39:48 +01002093 * 'mcpdm' class
2094 * multi channel pdm controller (proprietary interface with phoenix power
2095 * ic)
2096 */
2097
2098static struct omap_hwmod_class_sysconfig omap44xx_mcpdm_sysc = {
2099 .rev_offs = 0x0000,
2100 .sysc_offs = 0x0010,
2101 .sysc_flags = (SYSC_HAS_EMUFREE | SYSC_HAS_RESET_STATUS |
2102 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
2103 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
2104 SIDLE_SMART_WKUP),
2105 .sysc_fields = &omap_hwmod_sysc_type2,
2106};
2107
2108static struct omap_hwmod_class omap44xx_mcpdm_hwmod_class = {
2109 .name = "mcpdm",
2110 .sysc = &omap44xx_mcpdm_sysc,
2111};
2112
2113/* mcpdm */
Benoit Cousson407a6882011-02-15 22:39:48 +01002114static struct omap_hwmod_irq_info omap44xx_mcpdm_irqs[] = {
2115 { .irq = 112 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002116 { .irq = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01002117};
2118
2119static struct omap_hwmod_dma_info omap44xx_mcpdm_sdma_reqs[] = {
2120 { .name = "up_link", .dma_req = 64 + OMAP44XX_DMA_REQ_START },
2121 { .name = "dn_link", .dma_req = 65 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06002122 { .dma_req = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01002123};
2124
Benoit Cousson407a6882011-02-15 22:39:48 +01002125static struct omap_hwmod omap44xx_mcpdm_hwmod = {
2126 .name = "mcpdm",
2127 .class = &omap44xx_mcpdm_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002128 .clkdm_name = "abe_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +01002129 .mpu_irqs = omap44xx_mcpdm_irqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01002130 .sdma_reqs = omap44xx_mcpdm_sdma_reqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01002131 .main_clk = "mcpdm_fck",
Benoit Cousson00fe6102011-07-09 19:14:28 -06002132 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01002133 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002134 .clkctrl_offs = OMAP4_CM1_ABE_PDM_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002135 .context_offs = OMAP4_RM_ABE_PDM_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002136 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01002137 },
2138 },
Benoit Cousson407a6882011-02-15 22:39:48 +01002139};
2140
2141/*
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302142 * 'mcspi' class
2143 * multichannel serial port interface (mcspi) / master/slave synchronous serial
2144 * bus
2145 */
2146
2147static struct omap_hwmod_class_sysconfig omap44xx_mcspi_sysc = {
2148 .rev_offs = 0x0000,
2149 .sysc_offs = 0x0010,
2150 .sysc_flags = (SYSC_HAS_EMUFREE | SYSC_HAS_RESET_STATUS |
2151 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
2152 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
2153 SIDLE_SMART_WKUP),
2154 .sysc_fields = &omap_hwmod_sysc_type2,
2155};
2156
2157static struct omap_hwmod_class omap44xx_mcspi_hwmod_class = {
2158 .name = "mcspi",
2159 .sysc = &omap44xx_mcspi_sysc,
Benoit Cousson905a74d2011-02-18 14:01:06 +01002160 .rev = OMAP4_MCSPI_REV,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302161};
2162
2163/* mcspi1 */
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302164static struct omap_hwmod_irq_info omap44xx_mcspi1_irqs[] = {
2165 { .irq = 65 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002166 { .irq = -1 }
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302167};
2168
2169static struct omap_hwmod_dma_info omap44xx_mcspi1_sdma_reqs[] = {
2170 { .name = "tx0", .dma_req = 34 + OMAP44XX_DMA_REQ_START },
2171 { .name = "rx0", .dma_req = 35 + OMAP44XX_DMA_REQ_START },
2172 { .name = "tx1", .dma_req = 36 + OMAP44XX_DMA_REQ_START },
2173 { .name = "rx1", .dma_req = 37 + OMAP44XX_DMA_REQ_START },
2174 { .name = "tx2", .dma_req = 38 + OMAP44XX_DMA_REQ_START },
2175 { .name = "rx2", .dma_req = 39 + OMAP44XX_DMA_REQ_START },
2176 { .name = "tx3", .dma_req = 40 + OMAP44XX_DMA_REQ_START },
2177 { .name = "rx3", .dma_req = 41 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06002178 { .dma_req = -1 }
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302179};
2180
Benoit Cousson905a74d2011-02-18 14:01:06 +01002181/* mcspi1 dev_attr */
2182static struct omap2_mcspi_dev_attr mcspi1_dev_attr = {
2183 .num_chipselect = 4,
2184};
2185
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302186static struct omap_hwmod omap44xx_mcspi1_hwmod = {
2187 .name = "mcspi1",
2188 .class = &omap44xx_mcspi_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002189 .clkdm_name = "l4_per_clkdm",
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302190 .mpu_irqs = omap44xx_mcspi1_irqs,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302191 .sdma_reqs = omap44xx_mcspi1_sdma_reqs,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302192 .main_clk = "mcspi1_fck",
2193 .prcm = {
2194 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002195 .clkctrl_offs = OMAP4_CM_L4PER_MCSPI1_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002196 .context_offs = OMAP4_RM_L4PER_MCSPI1_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002197 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302198 },
2199 },
Benoit Cousson905a74d2011-02-18 14:01:06 +01002200 .dev_attr = &mcspi1_dev_attr,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302201};
2202
2203/* mcspi2 */
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302204static struct omap_hwmod_irq_info omap44xx_mcspi2_irqs[] = {
2205 { .irq = 66 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002206 { .irq = -1 }
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302207};
2208
2209static struct omap_hwmod_dma_info omap44xx_mcspi2_sdma_reqs[] = {
2210 { .name = "tx0", .dma_req = 42 + OMAP44XX_DMA_REQ_START },
2211 { .name = "rx0", .dma_req = 43 + OMAP44XX_DMA_REQ_START },
2212 { .name = "tx1", .dma_req = 44 + OMAP44XX_DMA_REQ_START },
2213 { .name = "rx1", .dma_req = 45 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06002214 { .dma_req = -1 }
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302215};
2216
Benoit Cousson905a74d2011-02-18 14:01:06 +01002217/* mcspi2 dev_attr */
2218static struct omap2_mcspi_dev_attr mcspi2_dev_attr = {
2219 .num_chipselect = 2,
2220};
2221
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302222static struct omap_hwmod omap44xx_mcspi2_hwmod = {
2223 .name = "mcspi2",
2224 .class = &omap44xx_mcspi_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002225 .clkdm_name = "l4_per_clkdm",
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302226 .mpu_irqs = omap44xx_mcspi2_irqs,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302227 .sdma_reqs = omap44xx_mcspi2_sdma_reqs,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302228 .main_clk = "mcspi2_fck",
2229 .prcm = {
2230 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002231 .clkctrl_offs = OMAP4_CM_L4PER_MCSPI2_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002232 .context_offs = OMAP4_RM_L4PER_MCSPI2_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002233 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302234 },
2235 },
Benoit Cousson905a74d2011-02-18 14:01:06 +01002236 .dev_attr = &mcspi2_dev_attr,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302237};
2238
2239/* mcspi3 */
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302240static struct omap_hwmod_irq_info omap44xx_mcspi3_irqs[] = {
2241 { .irq = 91 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002242 { .irq = -1 }
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302243};
2244
2245static struct omap_hwmod_dma_info omap44xx_mcspi3_sdma_reqs[] = {
2246 { .name = "tx0", .dma_req = 14 + OMAP44XX_DMA_REQ_START },
2247 { .name = "rx0", .dma_req = 15 + OMAP44XX_DMA_REQ_START },
2248 { .name = "tx1", .dma_req = 22 + OMAP44XX_DMA_REQ_START },
2249 { .name = "rx1", .dma_req = 23 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06002250 { .dma_req = -1 }
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302251};
2252
Benoit Cousson905a74d2011-02-18 14:01:06 +01002253/* mcspi3 dev_attr */
2254static struct omap2_mcspi_dev_attr mcspi3_dev_attr = {
2255 .num_chipselect = 2,
2256};
2257
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302258static struct omap_hwmod omap44xx_mcspi3_hwmod = {
2259 .name = "mcspi3",
2260 .class = &omap44xx_mcspi_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002261 .clkdm_name = "l4_per_clkdm",
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302262 .mpu_irqs = omap44xx_mcspi3_irqs,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302263 .sdma_reqs = omap44xx_mcspi3_sdma_reqs,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302264 .main_clk = "mcspi3_fck",
2265 .prcm = {
2266 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002267 .clkctrl_offs = OMAP4_CM_L4PER_MCSPI3_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002268 .context_offs = OMAP4_RM_L4PER_MCSPI3_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002269 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302270 },
2271 },
Benoit Cousson905a74d2011-02-18 14:01:06 +01002272 .dev_attr = &mcspi3_dev_attr,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302273};
2274
2275/* mcspi4 */
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302276static struct omap_hwmod_irq_info omap44xx_mcspi4_irqs[] = {
2277 { .irq = 48 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002278 { .irq = -1 }
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302279};
2280
2281static struct omap_hwmod_dma_info omap44xx_mcspi4_sdma_reqs[] = {
2282 { .name = "tx0", .dma_req = 69 + OMAP44XX_DMA_REQ_START },
2283 { .name = "rx0", .dma_req = 70 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06002284 { .dma_req = -1 }
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302285};
2286
Benoit Cousson905a74d2011-02-18 14:01:06 +01002287/* mcspi4 dev_attr */
2288static struct omap2_mcspi_dev_attr mcspi4_dev_attr = {
2289 .num_chipselect = 1,
2290};
2291
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302292static struct omap_hwmod omap44xx_mcspi4_hwmod = {
2293 .name = "mcspi4",
2294 .class = &omap44xx_mcspi_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002295 .clkdm_name = "l4_per_clkdm",
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302296 .mpu_irqs = omap44xx_mcspi4_irqs,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302297 .sdma_reqs = omap44xx_mcspi4_sdma_reqs,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302298 .main_clk = "mcspi4_fck",
2299 .prcm = {
2300 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002301 .clkctrl_offs = OMAP4_CM_L4PER_MCSPI4_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002302 .context_offs = OMAP4_RM_L4PER_MCSPI4_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002303 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302304 },
2305 },
Benoit Cousson905a74d2011-02-18 14:01:06 +01002306 .dev_attr = &mcspi4_dev_attr,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05302307};
2308
2309/*
Benoit Cousson407a6882011-02-15 22:39:48 +01002310 * 'mmc' class
2311 * multimedia card high-speed/sd/sdio (mmc/sd/sdio) host controller
2312 */
2313
2314static struct omap_hwmod_class_sysconfig omap44xx_mmc_sysc = {
2315 .rev_offs = 0x0000,
2316 .sysc_offs = 0x0010,
2317 .sysc_flags = (SYSC_HAS_EMUFREE | SYSC_HAS_MIDLEMODE |
2318 SYSC_HAS_RESET_STATUS | SYSC_HAS_SIDLEMODE |
2319 SYSC_HAS_SOFTRESET),
2320 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
2321 SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
Benoit Coussonc614ebf2011-07-01 22:54:01 +02002322 MSTANDBY_SMART | MSTANDBY_SMART_WKUP),
Benoit Cousson407a6882011-02-15 22:39:48 +01002323 .sysc_fields = &omap_hwmod_sysc_type2,
2324};
2325
2326static struct omap_hwmod_class omap44xx_mmc_hwmod_class = {
2327 .name = "mmc",
2328 .sysc = &omap44xx_mmc_sysc,
2329};
2330
2331/* mmc1 */
2332static struct omap_hwmod_irq_info omap44xx_mmc1_irqs[] = {
2333 { .irq = 83 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002334 { .irq = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01002335};
2336
2337static struct omap_hwmod_dma_info omap44xx_mmc1_sdma_reqs[] = {
2338 { .name = "tx", .dma_req = 60 + OMAP44XX_DMA_REQ_START },
2339 { .name = "rx", .dma_req = 61 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06002340 { .dma_req = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01002341};
2342
Kishore Kadiyala6ab89462011-03-01 13:12:56 -08002343/* mmc1 dev_attr */
2344static struct omap_mmc_dev_attr mmc1_dev_attr = {
2345 .flags = OMAP_HSMMC_SUPPORTS_DUAL_VOLT,
2346};
2347
Benoit Cousson407a6882011-02-15 22:39:48 +01002348static struct omap_hwmod omap44xx_mmc1_hwmod = {
2349 .name = "mmc1",
2350 .class = &omap44xx_mmc_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002351 .clkdm_name = "l3_init_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +01002352 .mpu_irqs = omap44xx_mmc1_irqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01002353 .sdma_reqs = omap44xx_mmc1_sdma_reqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01002354 .main_clk = "mmc1_fck",
Benoit Cousson00fe6102011-07-09 19:14:28 -06002355 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01002356 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002357 .clkctrl_offs = OMAP4_CM_L3INIT_MMC1_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002358 .context_offs = OMAP4_RM_L3INIT_MMC1_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002359 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01002360 },
2361 },
Kishore Kadiyala6ab89462011-03-01 13:12:56 -08002362 .dev_attr = &mmc1_dev_attr,
Benoit Cousson407a6882011-02-15 22:39:48 +01002363};
2364
2365/* mmc2 */
2366static struct omap_hwmod_irq_info omap44xx_mmc2_irqs[] = {
2367 { .irq = 86 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002368 { .irq = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01002369};
2370
2371static struct omap_hwmod_dma_info omap44xx_mmc2_sdma_reqs[] = {
2372 { .name = "tx", .dma_req = 46 + OMAP44XX_DMA_REQ_START },
2373 { .name = "rx", .dma_req = 47 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06002374 { .dma_req = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01002375};
2376
Benoit Cousson407a6882011-02-15 22:39:48 +01002377static struct omap_hwmod omap44xx_mmc2_hwmod = {
2378 .name = "mmc2",
2379 .class = &omap44xx_mmc_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002380 .clkdm_name = "l3_init_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +01002381 .mpu_irqs = omap44xx_mmc2_irqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01002382 .sdma_reqs = omap44xx_mmc2_sdma_reqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01002383 .main_clk = "mmc2_fck",
Benoit Cousson00fe6102011-07-09 19:14:28 -06002384 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01002385 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002386 .clkctrl_offs = OMAP4_CM_L3INIT_MMC2_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002387 .context_offs = OMAP4_RM_L3INIT_MMC2_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002388 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01002389 },
2390 },
Benoit Cousson407a6882011-02-15 22:39:48 +01002391};
2392
2393/* mmc3 */
Benoit Cousson407a6882011-02-15 22:39:48 +01002394static struct omap_hwmod_irq_info omap44xx_mmc3_irqs[] = {
2395 { .irq = 94 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002396 { .irq = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01002397};
2398
2399static struct omap_hwmod_dma_info omap44xx_mmc3_sdma_reqs[] = {
2400 { .name = "tx", .dma_req = 76 + OMAP44XX_DMA_REQ_START },
2401 { .name = "rx", .dma_req = 77 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06002402 { .dma_req = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01002403};
2404
Benoit Cousson407a6882011-02-15 22:39:48 +01002405static struct omap_hwmod omap44xx_mmc3_hwmod = {
2406 .name = "mmc3",
2407 .class = &omap44xx_mmc_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002408 .clkdm_name = "l4_per_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +01002409 .mpu_irqs = omap44xx_mmc3_irqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01002410 .sdma_reqs = omap44xx_mmc3_sdma_reqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01002411 .main_clk = "mmc3_fck",
Benoit Cousson00fe6102011-07-09 19:14:28 -06002412 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01002413 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002414 .clkctrl_offs = OMAP4_CM_L4PER_MMCSD3_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002415 .context_offs = OMAP4_RM_L4PER_MMCSD3_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002416 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01002417 },
2418 },
Benoit Cousson407a6882011-02-15 22:39:48 +01002419};
2420
2421/* mmc4 */
Benoit Cousson407a6882011-02-15 22:39:48 +01002422static struct omap_hwmod_irq_info omap44xx_mmc4_irqs[] = {
2423 { .irq = 96 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002424 { .irq = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01002425};
2426
2427static struct omap_hwmod_dma_info omap44xx_mmc4_sdma_reqs[] = {
2428 { .name = "tx", .dma_req = 56 + OMAP44XX_DMA_REQ_START },
2429 { .name = "rx", .dma_req = 57 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06002430 { .dma_req = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01002431};
2432
Benoit Cousson407a6882011-02-15 22:39:48 +01002433static struct omap_hwmod omap44xx_mmc4_hwmod = {
2434 .name = "mmc4",
2435 .class = &omap44xx_mmc_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002436 .clkdm_name = "l4_per_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +01002437 .mpu_irqs = omap44xx_mmc4_irqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01002438 .sdma_reqs = omap44xx_mmc4_sdma_reqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01002439 .main_clk = "mmc4_fck",
Benoit Cousson00fe6102011-07-09 19:14:28 -06002440 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01002441 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002442 .clkctrl_offs = OMAP4_CM_L4PER_MMCSD4_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002443 .context_offs = OMAP4_RM_L4PER_MMCSD4_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002444 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01002445 },
2446 },
Benoit Cousson407a6882011-02-15 22:39:48 +01002447};
2448
2449/* mmc5 */
Benoit Cousson407a6882011-02-15 22:39:48 +01002450static struct omap_hwmod_irq_info omap44xx_mmc5_irqs[] = {
2451 { .irq = 59 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002452 { .irq = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01002453};
2454
2455static struct omap_hwmod_dma_info omap44xx_mmc5_sdma_reqs[] = {
2456 { .name = "tx", .dma_req = 58 + OMAP44XX_DMA_REQ_START },
2457 { .name = "rx", .dma_req = 59 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06002458 { .dma_req = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01002459};
2460
Benoit Cousson407a6882011-02-15 22:39:48 +01002461static struct omap_hwmod omap44xx_mmc5_hwmod = {
2462 .name = "mmc5",
2463 .class = &omap44xx_mmc_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002464 .clkdm_name = "l4_per_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +01002465 .mpu_irqs = omap44xx_mmc5_irqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01002466 .sdma_reqs = omap44xx_mmc5_sdma_reqs,
Benoit Cousson407a6882011-02-15 22:39:48 +01002467 .main_clk = "mmc5_fck",
Benoit Cousson00fe6102011-07-09 19:14:28 -06002468 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01002469 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002470 .clkctrl_offs = OMAP4_CM_L4PER_MMCSD5_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002471 .context_offs = OMAP4_RM_L4PER_MMCSD5_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002472 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01002473 },
2474 },
Benoit Cousson407a6882011-02-15 22:39:48 +01002475};
2476
2477/*
Omar Ramirez Luna230844d2012-09-23 17:28:24 -06002478 * 'mmu' class
2479 * The memory management unit performs virtual to physical address translation
2480 * for its requestors.
2481 */
2482
2483static struct omap_hwmod_class_sysconfig mmu_sysc = {
2484 .rev_offs = 0x000,
2485 .sysc_offs = 0x010,
2486 .syss_offs = 0x014,
2487 .sysc_flags = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
2488 SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE),
2489 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
2490 .sysc_fields = &omap_hwmod_sysc_type1,
2491};
2492
2493static struct omap_hwmod_class omap44xx_mmu_hwmod_class = {
2494 .name = "mmu",
2495 .sysc = &mmu_sysc,
2496};
2497
2498/* mmu ipu */
2499
2500static struct omap_mmu_dev_attr mmu_ipu_dev_attr = {
2501 .da_start = 0x0,
2502 .da_end = 0xfffff000,
2503 .nr_tlb_entries = 32,
2504};
2505
2506static struct omap_hwmod omap44xx_mmu_ipu_hwmod;
2507static struct omap_hwmod_irq_info omap44xx_mmu_ipu_irqs[] = {
2508 { .irq = 100 + OMAP44XX_IRQ_GIC_START, },
2509 { .irq = -1 }
2510};
2511
2512static struct omap_hwmod_rst_info omap44xx_mmu_ipu_resets[] = {
2513 { .name = "mmu_cache", .rst_shift = 2 },
2514};
2515
2516static struct omap_hwmod_addr_space omap44xx_mmu_ipu_addrs[] = {
2517 {
2518 .pa_start = 0x55082000,
2519 .pa_end = 0x550820ff,
2520 .flags = ADDR_TYPE_RT,
2521 },
2522 { }
2523};
2524
2525/* l3_main_2 -> mmu_ipu */
2526static struct omap_hwmod_ocp_if omap44xx_l3_main_2__mmu_ipu = {
2527 .master = &omap44xx_l3_main_2_hwmod,
2528 .slave = &omap44xx_mmu_ipu_hwmod,
2529 .clk = "l3_div_ck",
2530 .addr = omap44xx_mmu_ipu_addrs,
2531 .user = OCP_USER_MPU | OCP_USER_SDMA,
2532};
2533
2534static struct omap_hwmod omap44xx_mmu_ipu_hwmod = {
2535 .name = "mmu_ipu",
2536 .class = &omap44xx_mmu_hwmod_class,
2537 .clkdm_name = "ducati_clkdm",
2538 .mpu_irqs = omap44xx_mmu_ipu_irqs,
2539 .rst_lines = omap44xx_mmu_ipu_resets,
2540 .rst_lines_cnt = ARRAY_SIZE(omap44xx_mmu_ipu_resets),
2541 .main_clk = "ducati_clk_mux_ck",
2542 .prcm = {
2543 .omap4 = {
2544 .clkctrl_offs = OMAP4_CM_DUCATI_DUCATI_CLKCTRL_OFFSET,
2545 .rstctrl_offs = OMAP4_RM_DUCATI_RSTCTRL_OFFSET,
2546 .context_offs = OMAP4_RM_DUCATI_DUCATI_CONTEXT_OFFSET,
2547 .modulemode = MODULEMODE_HWCTRL,
2548 },
2549 },
2550 .dev_attr = &mmu_ipu_dev_attr,
2551};
2552
2553/* mmu dsp */
2554
2555static struct omap_mmu_dev_attr mmu_dsp_dev_attr = {
2556 .da_start = 0x0,
2557 .da_end = 0xfffff000,
2558 .nr_tlb_entries = 32,
2559};
2560
2561static struct omap_hwmod omap44xx_mmu_dsp_hwmod;
2562static struct omap_hwmod_irq_info omap44xx_mmu_dsp_irqs[] = {
2563 { .irq = 28 + OMAP44XX_IRQ_GIC_START },
2564 { .irq = -1 }
2565};
2566
2567static struct omap_hwmod_rst_info omap44xx_mmu_dsp_resets[] = {
2568 { .name = "mmu_cache", .rst_shift = 1 },
2569};
2570
2571static struct omap_hwmod_addr_space omap44xx_mmu_dsp_addrs[] = {
2572 {
2573 .pa_start = 0x4a066000,
2574 .pa_end = 0x4a0660ff,
2575 .flags = ADDR_TYPE_RT,
2576 },
2577 { }
2578};
2579
2580/* l4_cfg -> dsp */
2581static struct omap_hwmod_ocp_if omap44xx_l4_cfg__mmu_dsp = {
2582 .master = &omap44xx_l4_cfg_hwmod,
2583 .slave = &omap44xx_mmu_dsp_hwmod,
2584 .clk = "l4_div_ck",
2585 .addr = omap44xx_mmu_dsp_addrs,
2586 .user = OCP_USER_MPU | OCP_USER_SDMA,
2587};
2588
2589static struct omap_hwmod omap44xx_mmu_dsp_hwmod = {
2590 .name = "mmu_dsp",
2591 .class = &omap44xx_mmu_hwmod_class,
2592 .clkdm_name = "tesla_clkdm",
2593 .mpu_irqs = omap44xx_mmu_dsp_irqs,
2594 .rst_lines = omap44xx_mmu_dsp_resets,
2595 .rst_lines_cnt = ARRAY_SIZE(omap44xx_mmu_dsp_resets),
2596 .main_clk = "dpll_iva_m4x2_ck",
2597 .prcm = {
2598 .omap4 = {
2599 .clkctrl_offs = OMAP4_CM_TESLA_TESLA_CLKCTRL_OFFSET,
2600 .rstctrl_offs = OMAP4_RM_TESLA_RSTCTRL_OFFSET,
2601 .context_offs = OMAP4_RM_TESLA_TESLA_CONTEXT_OFFSET,
2602 .modulemode = MODULEMODE_HWCTRL,
2603 },
2604 },
2605 .dev_attr = &mmu_dsp_dev_attr,
2606};
2607
2608/*
Benoit Cousson55d2cb02010-05-12 17:54:36 +02002609 * 'mpu' class
2610 * mpu sub-system
2611 */
2612
2613static struct omap_hwmod_class omap44xx_mpu_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +00002614 .name = "mpu",
Benoit Cousson55d2cb02010-05-12 17:54:36 +02002615};
2616
2617/* mpu */
2618static struct omap_hwmod_irq_info omap44xx_mpu_irqs[] = {
Jon Hunter76a5d9b2012-09-23 17:28:30 -06002619 { .name = "pmu0", .irq = 54 + OMAP44XX_IRQ_GIC_START },
2620 { .name = "pmu1", .irq = 55 + OMAP44XX_IRQ_GIC_START },
Benoit Cousson55d2cb02010-05-12 17:54:36 +02002621 { .name = "pl310", .irq = 0 + OMAP44XX_IRQ_GIC_START },
2622 { .name = "cti0", .irq = 1 + OMAP44XX_IRQ_GIC_START },
2623 { .name = "cti1", .irq = 2 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002624 { .irq = -1 }
Benoit Cousson55d2cb02010-05-12 17:54:36 +02002625};
2626
Benoit Cousson55d2cb02010-05-12 17:54:36 +02002627static struct omap_hwmod omap44xx_mpu_hwmod = {
2628 .name = "mpu",
2629 .class = &omap44xx_mpu_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002630 .clkdm_name = "mpuss_clkdm",
Benoit Cousson7ecc53732011-07-09 19:14:28 -06002631 .flags = HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET,
Benoit Cousson55d2cb02010-05-12 17:54:36 +02002632 .mpu_irqs = omap44xx_mpu_irqs,
Benoit Cousson55d2cb02010-05-12 17:54:36 +02002633 .main_clk = "dpll_mpu_m2_ck",
2634 .prcm = {
2635 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002636 .clkctrl_offs = OMAP4_CM_MPU_MPU_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002637 .context_offs = OMAP4_RM_MPU_MPU_CONTEXT_OFFSET,
Benoit Cousson55d2cb02010-05-12 17:54:36 +02002638 },
2639 },
Benoit Cousson55d2cb02010-05-12 17:54:36 +02002640};
2641
Benoit Cousson92b18d12010-09-23 20:02:41 +05302642/*
Paul Walmsleye17f18c2012-04-19 13:33:56 -06002643 * 'ocmc_ram' class
2644 * top-level core on-chip ram
2645 */
2646
2647static struct omap_hwmod_class omap44xx_ocmc_ram_hwmod_class = {
2648 .name = "ocmc_ram",
2649};
2650
2651/* ocmc_ram */
2652static struct omap_hwmod omap44xx_ocmc_ram_hwmod = {
2653 .name = "ocmc_ram",
2654 .class = &omap44xx_ocmc_ram_hwmod_class,
2655 .clkdm_name = "l3_2_clkdm",
2656 .prcm = {
2657 .omap4 = {
2658 .clkctrl_offs = OMAP4_CM_L3_2_OCMC_RAM_CLKCTRL_OFFSET,
2659 .context_offs = OMAP4_RM_L3_2_OCMC_RAM_CONTEXT_OFFSET,
2660 },
2661 },
2662};
2663
2664/*
Benoît Cousson0c668872012-04-19 13:33:55 -06002665 * 'ocp2scp' class
2666 * bridge to transform ocp interface protocol to scp (serial control port)
2667 * protocol
2668 */
2669
Benoit Cousson33c976e2012-09-23 17:28:21 -06002670static struct omap_hwmod_class_sysconfig omap44xx_ocp2scp_sysc = {
2671 .rev_offs = 0x0000,
2672 .sysc_offs = 0x0010,
2673 .syss_offs = 0x0014,
2674 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_SIDLEMODE |
2675 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
2676 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
2677 .sysc_fields = &omap_hwmod_sysc_type1,
2678};
2679
Benoît Cousson0c668872012-04-19 13:33:55 -06002680static struct omap_hwmod_class omap44xx_ocp2scp_hwmod_class = {
2681 .name = "ocp2scp",
Benoit Cousson33c976e2012-09-23 17:28:21 -06002682 .sysc = &omap44xx_ocp2scp_sysc,
Benoît Cousson0c668872012-04-19 13:33:55 -06002683};
2684
2685/* ocp2scp_usb_phy */
Benoît Cousson0c668872012-04-19 13:33:55 -06002686static struct omap_hwmod omap44xx_ocp2scp_usb_phy_hwmod = {
2687 .name = "ocp2scp_usb_phy",
2688 .class = &omap44xx_ocp2scp_hwmod_class,
2689 .clkdm_name = "l3_init_clkdm",
Kishon Vijay Abraham I1b024d22012-09-23 17:28:22 -06002690 .main_clk = "ocp2scp_usb_phy_phy_48m",
Benoît Cousson0c668872012-04-19 13:33:55 -06002691 .prcm = {
2692 .omap4 = {
2693 .clkctrl_offs = OMAP4_CM_L3INIT_USBPHYOCP2SCP_CLKCTRL_OFFSET,
2694 .context_offs = OMAP4_RM_L3INIT_USBPHYOCP2SCP_CONTEXT_OFFSET,
2695 .modulemode = MODULEMODE_HWCTRL,
2696 },
2697 },
Benoît Cousson0c668872012-04-19 13:33:55 -06002698};
2699
2700/*
Paul Walmsley794b4802012-04-19 13:33:58 -06002701 * 'prcm' class
2702 * power and reset manager (part of the prcm infrastructure) + clock manager 2
2703 * + clock manager 1 (in always on power domain) + local prm in mpu
2704 */
2705
2706static struct omap_hwmod_class omap44xx_prcm_hwmod_class = {
2707 .name = "prcm",
2708};
2709
2710/* prcm_mpu */
2711static struct omap_hwmod omap44xx_prcm_mpu_hwmod = {
2712 .name = "prcm_mpu",
2713 .class = &omap44xx_prcm_hwmod_class,
2714 .clkdm_name = "l4_wkup_clkdm",
Paul Walmsley53cce972012-09-23 17:28:22 -06002715 .flags = HWMOD_NO_IDLEST,
Tero Kristo46b3af22012-09-23 17:28:20 -06002716 .prcm = {
2717 .omap4 = {
2718 .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
2719 },
2720 },
Paul Walmsley794b4802012-04-19 13:33:58 -06002721};
2722
2723/* cm_core_aon */
2724static struct omap_hwmod omap44xx_cm_core_aon_hwmod = {
2725 .name = "cm_core_aon",
2726 .class = &omap44xx_prcm_hwmod_class,
Paul Walmsley53cce972012-09-23 17:28:22 -06002727 .flags = HWMOD_NO_IDLEST,
Tero Kristo46b3af22012-09-23 17:28:20 -06002728 .prcm = {
2729 .omap4 = {
2730 .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
2731 },
2732 },
Paul Walmsley794b4802012-04-19 13:33:58 -06002733};
2734
2735/* cm_core */
2736static struct omap_hwmod omap44xx_cm_core_hwmod = {
2737 .name = "cm_core",
2738 .class = &omap44xx_prcm_hwmod_class,
Paul Walmsley53cce972012-09-23 17:28:22 -06002739 .flags = HWMOD_NO_IDLEST,
Tero Kristo46b3af22012-09-23 17:28:20 -06002740 .prcm = {
2741 .omap4 = {
2742 .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
2743 },
2744 },
Paul Walmsley794b4802012-04-19 13:33:58 -06002745};
2746
2747/* prm */
2748static struct omap_hwmod_irq_info omap44xx_prm_irqs[] = {
2749 { .irq = 11 + OMAP44XX_IRQ_GIC_START },
2750 { .irq = -1 }
2751};
2752
2753static struct omap_hwmod_rst_info omap44xx_prm_resets[] = {
2754 { .name = "rst_global_warm_sw", .rst_shift = 0 },
2755 { .name = "rst_global_cold_sw", .rst_shift = 1 },
2756};
2757
2758static struct omap_hwmod omap44xx_prm_hwmod = {
2759 .name = "prm",
2760 .class = &omap44xx_prcm_hwmod_class,
Paul Walmsley794b4802012-04-19 13:33:58 -06002761 .mpu_irqs = omap44xx_prm_irqs,
2762 .rst_lines = omap44xx_prm_resets,
2763 .rst_lines_cnt = ARRAY_SIZE(omap44xx_prm_resets),
2764};
2765
2766/*
2767 * 'scrm' class
2768 * system clock and reset manager
2769 */
2770
2771static struct omap_hwmod_class omap44xx_scrm_hwmod_class = {
2772 .name = "scrm",
2773};
2774
2775/* scrm */
2776static struct omap_hwmod omap44xx_scrm_hwmod = {
2777 .name = "scrm",
2778 .class = &omap44xx_scrm_hwmod_class,
2779 .clkdm_name = "l4_wkup_clkdm",
Tero Kristo46b3af22012-09-23 17:28:20 -06002780 .prcm = {
2781 .omap4 = {
2782 .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
2783 },
2784 },
Paul Walmsley794b4802012-04-19 13:33:58 -06002785};
2786
2787/*
Paul Walmsley42b9e382012-04-19 13:33:54 -06002788 * 'sl2if' class
2789 * shared level 2 memory interface
2790 */
2791
2792static struct omap_hwmod_class omap44xx_sl2if_hwmod_class = {
2793 .name = "sl2if",
2794};
2795
2796/* sl2if */
2797static struct omap_hwmod omap44xx_sl2if_hwmod = {
2798 .name = "sl2if",
2799 .class = &omap44xx_sl2if_hwmod_class,
2800 .clkdm_name = "ivahd_clkdm",
2801 .prcm = {
2802 .omap4 = {
2803 .clkctrl_offs = OMAP4_CM_IVAHD_SL2_CLKCTRL_OFFSET,
2804 .context_offs = OMAP4_RM_IVAHD_SL2_CONTEXT_OFFSET,
2805 .modulemode = MODULEMODE_HWCTRL,
2806 },
2807 },
2808};
2809
2810/*
Benoît Cousson1e3b5e592012-04-19 13:33:53 -06002811 * 'slimbus' class
2812 * bidirectional, multi-drop, multi-channel two-line serial interface between
2813 * the device and external components
2814 */
2815
2816static struct omap_hwmod_class_sysconfig omap44xx_slimbus_sysc = {
2817 .rev_offs = 0x0000,
2818 .sysc_offs = 0x0010,
2819 .sysc_flags = (SYSC_HAS_RESET_STATUS | SYSC_HAS_SIDLEMODE |
2820 SYSC_HAS_SOFTRESET),
2821 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
2822 SIDLE_SMART_WKUP),
2823 .sysc_fields = &omap_hwmod_sysc_type2,
2824};
2825
2826static struct omap_hwmod_class omap44xx_slimbus_hwmod_class = {
2827 .name = "slimbus",
2828 .sysc = &omap44xx_slimbus_sysc,
2829};
2830
2831/* slimbus1 */
2832static struct omap_hwmod_irq_info omap44xx_slimbus1_irqs[] = {
2833 { .irq = 97 + OMAP44XX_IRQ_GIC_START },
2834 { .irq = -1 }
2835};
2836
2837static struct omap_hwmod_dma_info omap44xx_slimbus1_sdma_reqs[] = {
2838 { .name = "tx0", .dma_req = 84 + OMAP44XX_DMA_REQ_START },
2839 { .name = "tx1", .dma_req = 85 + OMAP44XX_DMA_REQ_START },
2840 { .name = "tx2", .dma_req = 86 + OMAP44XX_DMA_REQ_START },
2841 { .name = "tx3", .dma_req = 87 + OMAP44XX_DMA_REQ_START },
2842 { .name = "rx0", .dma_req = 88 + OMAP44XX_DMA_REQ_START },
2843 { .name = "rx1", .dma_req = 89 + OMAP44XX_DMA_REQ_START },
2844 { .name = "rx2", .dma_req = 90 + OMAP44XX_DMA_REQ_START },
2845 { .name = "rx3", .dma_req = 91 + OMAP44XX_DMA_REQ_START },
2846 { .dma_req = -1 }
2847};
2848
2849static struct omap_hwmod_opt_clk slimbus1_opt_clks[] = {
2850 { .role = "fclk_1", .clk = "slimbus1_fclk_1" },
2851 { .role = "fclk_0", .clk = "slimbus1_fclk_0" },
2852 { .role = "fclk_2", .clk = "slimbus1_fclk_2" },
2853 { .role = "slimbus_clk", .clk = "slimbus1_slimbus_clk" },
2854};
2855
2856static struct omap_hwmod omap44xx_slimbus1_hwmod = {
2857 .name = "slimbus1",
2858 .class = &omap44xx_slimbus_hwmod_class,
2859 .clkdm_name = "abe_clkdm",
2860 .mpu_irqs = omap44xx_slimbus1_irqs,
2861 .sdma_reqs = omap44xx_slimbus1_sdma_reqs,
2862 .prcm = {
2863 .omap4 = {
2864 .clkctrl_offs = OMAP4_CM1_ABE_SLIMBUS_CLKCTRL_OFFSET,
2865 .context_offs = OMAP4_RM_ABE_SLIMBUS_CONTEXT_OFFSET,
2866 .modulemode = MODULEMODE_SWCTRL,
2867 },
2868 },
2869 .opt_clks = slimbus1_opt_clks,
2870 .opt_clks_cnt = ARRAY_SIZE(slimbus1_opt_clks),
2871};
2872
2873/* slimbus2 */
2874static struct omap_hwmod_irq_info omap44xx_slimbus2_irqs[] = {
2875 { .irq = 98 + OMAP44XX_IRQ_GIC_START },
2876 { .irq = -1 }
2877};
2878
2879static struct omap_hwmod_dma_info omap44xx_slimbus2_sdma_reqs[] = {
2880 { .name = "tx0", .dma_req = 92 + OMAP44XX_DMA_REQ_START },
2881 { .name = "tx1", .dma_req = 93 + OMAP44XX_DMA_REQ_START },
2882 { .name = "tx2", .dma_req = 94 + OMAP44XX_DMA_REQ_START },
2883 { .name = "tx3", .dma_req = 95 + OMAP44XX_DMA_REQ_START },
2884 { .name = "rx0", .dma_req = 96 + OMAP44XX_DMA_REQ_START },
2885 { .name = "rx1", .dma_req = 97 + OMAP44XX_DMA_REQ_START },
2886 { .name = "rx2", .dma_req = 98 + OMAP44XX_DMA_REQ_START },
2887 { .name = "rx3", .dma_req = 99 + OMAP44XX_DMA_REQ_START },
2888 { .dma_req = -1 }
2889};
2890
2891static struct omap_hwmod_opt_clk slimbus2_opt_clks[] = {
2892 { .role = "fclk_1", .clk = "slimbus2_fclk_1" },
2893 { .role = "fclk_0", .clk = "slimbus2_fclk_0" },
2894 { .role = "slimbus_clk", .clk = "slimbus2_slimbus_clk" },
2895};
2896
2897static struct omap_hwmod omap44xx_slimbus2_hwmod = {
2898 .name = "slimbus2",
2899 .class = &omap44xx_slimbus_hwmod_class,
2900 .clkdm_name = "l4_per_clkdm",
2901 .mpu_irqs = omap44xx_slimbus2_irqs,
2902 .sdma_reqs = omap44xx_slimbus2_sdma_reqs,
2903 .prcm = {
2904 .omap4 = {
2905 .clkctrl_offs = OMAP4_CM_L4PER_SLIMBUS2_CLKCTRL_OFFSET,
2906 .context_offs = OMAP4_RM_L4PER_SLIMBUS2_CONTEXT_OFFSET,
2907 .modulemode = MODULEMODE_SWCTRL,
2908 },
2909 },
2910 .opt_clks = slimbus2_opt_clks,
2911 .opt_clks_cnt = ARRAY_SIZE(slimbus2_opt_clks),
2912};
2913
2914/*
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002915 * 'smartreflex' class
2916 * smartreflex module (monitor silicon performance and outputs a measure of
2917 * performance error)
2918 */
2919
2920/* The IP is not compliant to type1 / type2 scheme */
2921static struct omap_hwmod_sysc_fields omap_hwmod_sysc_type_smartreflex = {
2922 .sidle_shift = 24,
2923 .enwkup_shift = 26,
2924};
2925
2926static struct omap_hwmod_class_sysconfig omap44xx_smartreflex_sysc = {
2927 .sysc_offs = 0x0038,
2928 .sysc_flags = (SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE),
2929 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
2930 SIDLE_SMART_WKUP),
2931 .sysc_fields = &omap_hwmod_sysc_type_smartreflex,
2932};
2933
2934static struct omap_hwmod_class omap44xx_smartreflex_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +00002935 .name = "smartreflex",
2936 .sysc = &omap44xx_smartreflex_sysc,
2937 .rev = 2,
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002938};
2939
2940/* smartreflex_core */
Shweta Gulaticea6b942012-02-29 23:33:37 +01002941static struct omap_smartreflex_dev_attr smartreflex_core_dev_attr = {
2942 .sensor_voltdm_name = "core",
2943};
2944
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002945static struct omap_hwmod_irq_info omap44xx_smartreflex_core_irqs[] = {
2946 { .irq = 19 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002947 { .irq = -1 }
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002948};
2949
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002950static struct omap_hwmod omap44xx_smartreflex_core_hwmod = {
2951 .name = "smartreflex_core",
2952 .class = &omap44xx_smartreflex_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002953 .clkdm_name = "l4_ao_clkdm",
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002954 .mpu_irqs = omap44xx_smartreflex_core_irqs,
Paul Walmsley212738a2011-07-09 19:14:06 -06002955
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002956 .main_clk = "smartreflex_core_fck",
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002957 .prcm = {
2958 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002959 .clkctrl_offs = OMAP4_CM_ALWON_SR_CORE_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002960 .context_offs = OMAP4_RM_ALWON_SR_CORE_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002961 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002962 },
2963 },
Shweta Gulaticea6b942012-02-29 23:33:37 +01002964 .dev_attr = &smartreflex_core_dev_attr,
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002965};
2966
2967/* smartreflex_iva */
Shweta Gulaticea6b942012-02-29 23:33:37 +01002968static struct omap_smartreflex_dev_attr smartreflex_iva_dev_attr = {
2969 .sensor_voltdm_name = "iva",
2970};
2971
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002972static struct omap_hwmod_irq_info omap44xx_smartreflex_iva_irqs[] = {
2973 { .irq = 102 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06002974 { .irq = -1 }
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002975};
2976
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002977static struct omap_hwmod omap44xx_smartreflex_iva_hwmod = {
2978 .name = "smartreflex_iva",
2979 .class = &omap44xx_smartreflex_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002980 .clkdm_name = "l4_ao_clkdm",
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002981 .mpu_irqs = omap44xx_smartreflex_iva_irqs,
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002982 .main_clk = "smartreflex_iva_fck",
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002983 .prcm = {
2984 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002985 .clkctrl_offs = OMAP4_CM_ALWON_SR_IVA_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002986 .context_offs = OMAP4_RM_ALWON_SR_IVA_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002987 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002988 },
2989 },
Shweta Gulaticea6b942012-02-29 23:33:37 +01002990 .dev_attr = &smartreflex_iva_dev_attr,
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002991};
2992
2993/* smartreflex_mpu */
Shweta Gulaticea6b942012-02-29 23:33:37 +01002994static struct omap_smartreflex_dev_attr smartreflex_mpu_dev_attr = {
2995 .sensor_voltdm_name = "mpu",
2996};
2997
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002998static struct omap_hwmod_irq_info omap44xx_smartreflex_mpu_irqs[] = {
2999 { .irq = 18 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06003000 { .irq = -1 }
Benoit Cousson1f6a7172010-12-23 22:30:30 +00003001};
3002
Benoit Cousson1f6a7172010-12-23 22:30:30 +00003003static struct omap_hwmod omap44xx_smartreflex_mpu_hwmod = {
3004 .name = "smartreflex_mpu",
3005 .class = &omap44xx_smartreflex_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06003006 .clkdm_name = "l4_ao_clkdm",
Benoit Cousson1f6a7172010-12-23 22:30:30 +00003007 .mpu_irqs = omap44xx_smartreflex_mpu_irqs,
Benoit Cousson1f6a7172010-12-23 22:30:30 +00003008 .main_clk = "smartreflex_mpu_fck",
Benoit Cousson1f6a7172010-12-23 22:30:30 +00003009 .prcm = {
3010 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06003011 .clkctrl_offs = OMAP4_CM_ALWON_SR_MPU_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06003012 .context_offs = OMAP4_RM_ALWON_SR_MPU_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06003013 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson1f6a7172010-12-23 22:30:30 +00003014 },
3015 },
Shweta Gulaticea6b942012-02-29 23:33:37 +01003016 .dev_attr = &smartreflex_mpu_dev_attr,
Benoit Cousson1f6a7172010-12-23 22:30:30 +00003017};
3018
3019/*
Benoit Coussond11c2172011-02-02 12:04:36 +00003020 * 'spinlock' class
3021 * spinlock provides hardware assistance for synchronizing the processes
3022 * running on multiple processors
3023 */
3024
3025static struct omap_hwmod_class_sysconfig omap44xx_spinlock_sysc = {
3026 .rev_offs = 0x0000,
3027 .sysc_offs = 0x0010,
3028 .syss_offs = 0x0014,
3029 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
3030 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE |
3031 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
3032 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
3033 SIDLE_SMART_WKUP),
3034 .sysc_fields = &omap_hwmod_sysc_type1,
3035};
3036
3037static struct omap_hwmod_class omap44xx_spinlock_hwmod_class = {
3038 .name = "spinlock",
3039 .sysc = &omap44xx_spinlock_sysc,
3040};
3041
3042/* spinlock */
Benoit Coussond11c2172011-02-02 12:04:36 +00003043static struct omap_hwmod omap44xx_spinlock_hwmod = {
3044 .name = "spinlock",
3045 .class = &omap44xx_spinlock_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06003046 .clkdm_name = "l4_cfg_clkdm",
Benoit Coussond11c2172011-02-02 12:04:36 +00003047 .prcm = {
3048 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06003049 .clkctrl_offs = OMAP4_CM_L4CFG_HW_SEM_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06003050 .context_offs = OMAP4_RM_L4CFG_HW_SEM_CONTEXT_OFFSET,
Benoit Coussond11c2172011-02-02 12:04:36 +00003051 },
3052 },
Benoit Coussond11c2172011-02-02 12:04:36 +00003053};
3054
3055/*
Benoit Cousson35d1a662011-02-11 11:17:14 +00003056 * 'timer' class
3057 * general purpose timer module with accurate 1ms tick
3058 * This class contains several variants: ['timer_1ms', 'timer']
3059 */
3060
3061static struct omap_hwmod_class_sysconfig omap44xx_timer_1ms_sysc = {
3062 .rev_offs = 0x0000,
3063 .sysc_offs = 0x0010,
3064 .syss_offs = 0x0014,
3065 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
3066 SYSC_HAS_EMUFREE | SYSC_HAS_ENAWAKEUP |
3067 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
3068 SYSS_HAS_RESET_STATUS),
3069 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
Jon Hunter10759e82012-07-11 13:00:13 -05003070 .clockact = CLOCKACT_TEST_ICLK,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003071 .sysc_fields = &omap_hwmod_sysc_type1,
3072};
3073
3074static struct omap_hwmod_class omap44xx_timer_1ms_hwmod_class = {
3075 .name = "timer",
3076 .sysc = &omap44xx_timer_1ms_sysc,
3077};
3078
3079static struct omap_hwmod_class_sysconfig omap44xx_timer_sysc = {
3080 .rev_offs = 0x0000,
3081 .sysc_offs = 0x0010,
3082 .sysc_flags = (SYSC_HAS_EMUFREE | SYSC_HAS_RESET_STATUS |
3083 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
3084 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
3085 SIDLE_SMART_WKUP),
3086 .sysc_fields = &omap_hwmod_sysc_type2,
3087};
3088
3089static struct omap_hwmod_class omap44xx_timer_hwmod_class = {
3090 .name = "timer",
3091 .sysc = &omap44xx_timer_sysc,
3092};
3093
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +05303094/* always-on timers dev attribute */
3095static struct omap_timer_capability_dev_attr capability_alwon_dev_attr = {
3096 .timer_capability = OMAP_TIMER_ALWON,
3097};
3098
3099/* pwm timers dev attribute */
3100static struct omap_timer_capability_dev_attr capability_pwm_dev_attr = {
3101 .timer_capability = OMAP_TIMER_HAS_PWM,
3102};
3103
Jon Hunter5c3e4ec2012-09-23 17:28:27 -06003104/* timers with DSP interrupt dev attribute */
3105static struct omap_timer_capability_dev_attr capability_dsp_dev_attr = {
3106 .timer_capability = OMAP_TIMER_HAS_DSP_IRQ,
3107};
3108
3109/* pwm timers with DSP interrupt dev attribute */
3110static struct omap_timer_capability_dev_attr capability_dsp_pwm_dev_attr = {
3111 .timer_capability = OMAP_TIMER_HAS_DSP_IRQ | OMAP_TIMER_HAS_PWM,
3112};
3113
Benoit Cousson35d1a662011-02-11 11:17:14 +00003114/* timer1 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00003115static struct omap_hwmod_irq_info omap44xx_timer1_irqs[] = {
3116 { .irq = 37 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06003117 { .irq = -1 }
Benoit Cousson35d1a662011-02-11 11:17:14 +00003118};
3119
Benoit Cousson35d1a662011-02-11 11:17:14 +00003120static struct omap_hwmod omap44xx_timer1_hwmod = {
3121 .name = "timer1",
3122 .class = &omap44xx_timer_1ms_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06003123 .clkdm_name = "l4_wkup_clkdm",
Jon Hunter10759e82012-07-11 13:00:13 -05003124 .flags = HWMOD_SET_DEFAULT_CLOCKACT,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003125 .mpu_irqs = omap44xx_timer1_irqs,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003126 .main_clk = "timer1_fck",
3127 .prcm = {
3128 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06003129 .clkctrl_offs = OMAP4_CM_WKUP_TIMER1_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06003130 .context_offs = OMAP4_RM_WKUP_TIMER1_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06003131 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003132 },
3133 },
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +05303134 .dev_attr = &capability_alwon_dev_attr,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003135};
3136
3137/* timer2 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00003138static struct omap_hwmod_irq_info omap44xx_timer2_irqs[] = {
3139 { .irq = 38 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06003140 { .irq = -1 }
Benoit Cousson35d1a662011-02-11 11:17:14 +00003141};
3142
Benoit Cousson35d1a662011-02-11 11:17:14 +00003143static struct omap_hwmod omap44xx_timer2_hwmod = {
3144 .name = "timer2",
3145 .class = &omap44xx_timer_1ms_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06003146 .clkdm_name = "l4_per_clkdm",
Jon Hunter10759e82012-07-11 13:00:13 -05003147 .flags = HWMOD_SET_DEFAULT_CLOCKACT,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003148 .mpu_irqs = omap44xx_timer2_irqs,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003149 .main_clk = "timer2_fck",
3150 .prcm = {
3151 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06003152 .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER2_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06003153 .context_offs = OMAP4_RM_L4PER_DMTIMER2_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06003154 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003155 },
3156 },
Benoit Cousson35d1a662011-02-11 11:17:14 +00003157};
3158
3159/* timer3 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00003160static struct omap_hwmod_irq_info omap44xx_timer3_irqs[] = {
3161 { .irq = 39 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06003162 { .irq = -1 }
Benoit Cousson35d1a662011-02-11 11:17:14 +00003163};
3164
Benoit Cousson35d1a662011-02-11 11:17:14 +00003165static struct omap_hwmod omap44xx_timer3_hwmod = {
3166 .name = "timer3",
3167 .class = &omap44xx_timer_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06003168 .clkdm_name = "l4_per_clkdm",
Benoit Cousson35d1a662011-02-11 11:17:14 +00003169 .mpu_irqs = omap44xx_timer3_irqs,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003170 .main_clk = "timer3_fck",
3171 .prcm = {
3172 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06003173 .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER3_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06003174 .context_offs = OMAP4_RM_L4PER_DMTIMER3_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06003175 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003176 },
3177 },
Benoit Cousson35d1a662011-02-11 11:17:14 +00003178};
3179
3180/* timer4 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00003181static struct omap_hwmod_irq_info omap44xx_timer4_irqs[] = {
3182 { .irq = 40 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06003183 { .irq = -1 }
Benoit Cousson35d1a662011-02-11 11:17:14 +00003184};
3185
Benoit Cousson35d1a662011-02-11 11:17:14 +00003186static struct omap_hwmod omap44xx_timer4_hwmod = {
3187 .name = "timer4",
3188 .class = &omap44xx_timer_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06003189 .clkdm_name = "l4_per_clkdm",
Benoit Cousson35d1a662011-02-11 11:17:14 +00003190 .mpu_irqs = omap44xx_timer4_irqs,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003191 .main_clk = "timer4_fck",
3192 .prcm = {
3193 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06003194 .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER4_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06003195 .context_offs = OMAP4_RM_L4PER_DMTIMER4_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06003196 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003197 },
3198 },
Benoit Cousson35d1a662011-02-11 11:17:14 +00003199};
3200
3201/* timer5 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00003202static struct omap_hwmod_irq_info omap44xx_timer5_irqs[] = {
3203 { .irq = 41 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06003204 { .irq = -1 }
Benoit Cousson35d1a662011-02-11 11:17:14 +00003205};
3206
Benoit Cousson35d1a662011-02-11 11:17:14 +00003207static struct omap_hwmod omap44xx_timer5_hwmod = {
3208 .name = "timer5",
3209 .class = &omap44xx_timer_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06003210 .clkdm_name = "abe_clkdm",
Benoit Cousson35d1a662011-02-11 11:17:14 +00003211 .mpu_irqs = omap44xx_timer5_irqs,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003212 .main_clk = "timer5_fck",
3213 .prcm = {
3214 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06003215 .clkctrl_offs = OMAP4_CM1_ABE_TIMER5_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06003216 .context_offs = OMAP4_RM_ABE_TIMER5_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06003217 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003218 },
3219 },
Jon Hunter5c3e4ec2012-09-23 17:28:27 -06003220 .dev_attr = &capability_dsp_dev_attr,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003221};
3222
3223/* timer6 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00003224static struct omap_hwmod_irq_info omap44xx_timer6_irqs[] = {
3225 { .irq = 42 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06003226 { .irq = -1 }
Benoit Cousson35d1a662011-02-11 11:17:14 +00003227};
3228
Benoit Cousson35d1a662011-02-11 11:17:14 +00003229static struct omap_hwmod omap44xx_timer6_hwmod = {
3230 .name = "timer6",
3231 .class = &omap44xx_timer_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06003232 .clkdm_name = "abe_clkdm",
Benoit Cousson35d1a662011-02-11 11:17:14 +00003233 .mpu_irqs = omap44xx_timer6_irqs,
Paul Walmsley212738a2011-07-09 19:14:06 -06003234
Benoit Cousson35d1a662011-02-11 11:17:14 +00003235 .main_clk = "timer6_fck",
3236 .prcm = {
3237 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06003238 .clkctrl_offs = OMAP4_CM1_ABE_TIMER6_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06003239 .context_offs = OMAP4_RM_ABE_TIMER6_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06003240 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003241 },
3242 },
Jon Hunter5c3e4ec2012-09-23 17:28:27 -06003243 .dev_attr = &capability_dsp_dev_attr,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003244};
3245
3246/* timer7 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00003247static struct omap_hwmod_irq_info omap44xx_timer7_irqs[] = {
3248 { .irq = 43 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06003249 { .irq = -1 }
Benoit Cousson35d1a662011-02-11 11:17:14 +00003250};
3251
Benoit Cousson35d1a662011-02-11 11:17:14 +00003252static struct omap_hwmod omap44xx_timer7_hwmod = {
3253 .name = "timer7",
3254 .class = &omap44xx_timer_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06003255 .clkdm_name = "abe_clkdm",
Benoit Cousson35d1a662011-02-11 11:17:14 +00003256 .mpu_irqs = omap44xx_timer7_irqs,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003257 .main_clk = "timer7_fck",
3258 .prcm = {
3259 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06003260 .clkctrl_offs = OMAP4_CM1_ABE_TIMER7_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06003261 .context_offs = OMAP4_RM_ABE_TIMER7_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06003262 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003263 },
3264 },
Jon Hunter5c3e4ec2012-09-23 17:28:27 -06003265 .dev_attr = &capability_dsp_dev_attr,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003266};
3267
3268/* timer8 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00003269static struct omap_hwmod_irq_info omap44xx_timer8_irqs[] = {
3270 { .irq = 44 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06003271 { .irq = -1 }
Benoit Cousson35d1a662011-02-11 11:17:14 +00003272};
3273
Benoit Cousson35d1a662011-02-11 11:17:14 +00003274static struct omap_hwmod omap44xx_timer8_hwmod = {
3275 .name = "timer8",
3276 .class = &omap44xx_timer_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06003277 .clkdm_name = "abe_clkdm",
Benoit Cousson35d1a662011-02-11 11:17:14 +00003278 .mpu_irqs = omap44xx_timer8_irqs,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003279 .main_clk = "timer8_fck",
3280 .prcm = {
3281 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06003282 .clkctrl_offs = OMAP4_CM1_ABE_TIMER8_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06003283 .context_offs = OMAP4_RM_ABE_TIMER8_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06003284 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003285 },
3286 },
Jon Hunter5c3e4ec2012-09-23 17:28:27 -06003287 .dev_attr = &capability_dsp_pwm_dev_attr,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003288};
3289
3290/* timer9 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00003291static struct omap_hwmod_irq_info omap44xx_timer9_irqs[] = {
3292 { .irq = 45 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06003293 { .irq = -1 }
Benoit Cousson35d1a662011-02-11 11:17:14 +00003294};
3295
Benoit Cousson35d1a662011-02-11 11:17:14 +00003296static struct omap_hwmod omap44xx_timer9_hwmod = {
3297 .name = "timer9",
3298 .class = &omap44xx_timer_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06003299 .clkdm_name = "l4_per_clkdm",
Benoit Cousson35d1a662011-02-11 11:17:14 +00003300 .mpu_irqs = omap44xx_timer9_irqs,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003301 .main_clk = "timer9_fck",
3302 .prcm = {
3303 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06003304 .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER9_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06003305 .context_offs = OMAP4_RM_L4PER_DMTIMER9_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06003306 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003307 },
3308 },
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +05303309 .dev_attr = &capability_pwm_dev_attr,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003310};
3311
3312/* timer10 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00003313static struct omap_hwmod_irq_info omap44xx_timer10_irqs[] = {
3314 { .irq = 46 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06003315 { .irq = -1 }
Benoit Cousson35d1a662011-02-11 11:17:14 +00003316};
3317
Benoit Cousson35d1a662011-02-11 11:17:14 +00003318static struct omap_hwmod omap44xx_timer10_hwmod = {
3319 .name = "timer10",
3320 .class = &omap44xx_timer_1ms_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06003321 .clkdm_name = "l4_per_clkdm",
Jon Hunter10759e82012-07-11 13:00:13 -05003322 .flags = HWMOD_SET_DEFAULT_CLOCKACT,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003323 .mpu_irqs = omap44xx_timer10_irqs,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003324 .main_clk = "timer10_fck",
3325 .prcm = {
3326 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06003327 .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER10_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06003328 .context_offs = OMAP4_RM_L4PER_DMTIMER10_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06003329 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003330 },
3331 },
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +05303332 .dev_attr = &capability_pwm_dev_attr,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003333};
3334
3335/* timer11 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00003336static struct omap_hwmod_irq_info omap44xx_timer11_irqs[] = {
3337 { .irq = 47 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06003338 { .irq = -1 }
Benoit Cousson35d1a662011-02-11 11:17:14 +00003339};
3340
Benoit Cousson35d1a662011-02-11 11:17:14 +00003341static struct omap_hwmod omap44xx_timer11_hwmod = {
3342 .name = "timer11",
3343 .class = &omap44xx_timer_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06003344 .clkdm_name = "l4_per_clkdm",
Benoit Cousson35d1a662011-02-11 11:17:14 +00003345 .mpu_irqs = omap44xx_timer11_irqs,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003346 .main_clk = "timer11_fck",
3347 .prcm = {
3348 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06003349 .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER11_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06003350 .context_offs = OMAP4_RM_L4PER_DMTIMER11_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06003351 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003352 },
3353 },
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +05303354 .dev_attr = &capability_pwm_dev_attr,
Benoit Cousson35d1a662011-02-11 11:17:14 +00003355};
3356
3357/*
Benoit Coussondb12ba52010-09-27 20:19:19 +05303358 * 'uart' class
3359 * universal asynchronous receiver/transmitter (uart)
3360 */
3361
3362static struct omap_hwmod_class_sysconfig omap44xx_uart_sysc = {
3363 .rev_offs = 0x0050,
3364 .sysc_offs = 0x0054,
3365 .syss_offs = 0x0058,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07003366 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_ENAWAKEUP |
Benoit Cousson0cfe8752010-12-21 21:08:33 -07003367 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
3368 SYSS_HAS_RESET_STATUS),
Benoit Cousson7cffa6b2010-12-21 21:31:28 -07003369 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
3370 SIDLE_SMART_WKUP),
Benoit Coussondb12ba52010-09-27 20:19:19 +05303371 .sysc_fields = &omap_hwmod_sysc_type1,
3372};
3373
3374static struct omap_hwmod_class omap44xx_uart_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +00003375 .name = "uart",
3376 .sysc = &omap44xx_uart_sysc,
Benoit Coussondb12ba52010-09-27 20:19:19 +05303377};
3378
3379/* uart1 */
Benoit Coussondb12ba52010-09-27 20:19:19 +05303380static struct omap_hwmod_irq_info omap44xx_uart1_irqs[] = {
3381 { .irq = 72 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06003382 { .irq = -1 }
Benoit Coussondb12ba52010-09-27 20:19:19 +05303383};
3384
3385static struct omap_hwmod_dma_info omap44xx_uart1_sdma_reqs[] = {
3386 { .name = "tx", .dma_req = 48 + OMAP44XX_DMA_REQ_START },
3387 { .name = "rx", .dma_req = 49 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06003388 { .dma_req = -1 }
Benoit Coussondb12ba52010-09-27 20:19:19 +05303389};
3390
Benoit Coussondb12ba52010-09-27 20:19:19 +05303391static struct omap_hwmod omap44xx_uart1_hwmod = {
3392 .name = "uart1",
3393 .class = &omap44xx_uart_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06003394 .clkdm_name = "l4_per_clkdm",
Benoit Coussondb12ba52010-09-27 20:19:19 +05303395 .mpu_irqs = omap44xx_uart1_irqs,
Benoit Coussondb12ba52010-09-27 20:19:19 +05303396 .sdma_reqs = omap44xx_uart1_sdma_reqs,
Benoit Coussondb12ba52010-09-27 20:19:19 +05303397 .main_clk = "uart1_fck",
3398 .prcm = {
3399 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06003400 .clkctrl_offs = OMAP4_CM_L4PER_UART1_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06003401 .context_offs = OMAP4_RM_L4PER_UART1_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06003402 .modulemode = MODULEMODE_SWCTRL,
Benoit Coussondb12ba52010-09-27 20:19:19 +05303403 },
3404 },
Benoit Coussondb12ba52010-09-27 20:19:19 +05303405};
3406
3407/* uart2 */
Benoit Coussondb12ba52010-09-27 20:19:19 +05303408static struct omap_hwmod_irq_info omap44xx_uart2_irqs[] = {
3409 { .irq = 73 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06003410 { .irq = -1 }
Benoit Coussondb12ba52010-09-27 20:19:19 +05303411};
3412
3413static struct omap_hwmod_dma_info omap44xx_uart2_sdma_reqs[] = {
3414 { .name = "tx", .dma_req = 50 + OMAP44XX_DMA_REQ_START },
3415 { .name = "rx", .dma_req = 51 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06003416 { .dma_req = -1 }
Benoit Coussondb12ba52010-09-27 20:19:19 +05303417};
3418
Benoit Coussondb12ba52010-09-27 20:19:19 +05303419static struct omap_hwmod omap44xx_uart2_hwmod = {
3420 .name = "uart2",
3421 .class = &omap44xx_uart_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06003422 .clkdm_name = "l4_per_clkdm",
Benoit Coussondb12ba52010-09-27 20:19:19 +05303423 .mpu_irqs = omap44xx_uart2_irqs,
Benoit Coussondb12ba52010-09-27 20:19:19 +05303424 .sdma_reqs = omap44xx_uart2_sdma_reqs,
Benoit Coussondb12ba52010-09-27 20:19:19 +05303425 .main_clk = "uart2_fck",
3426 .prcm = {
3427 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06003428 .clkctrl_offs = OMAP4_CM_L4PER_UART2_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06003429 .context_offs = OMAP4_RM_L4PER_UART2_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06003430 .modulemode = MODULEMODE_SWCTRL,
Benoit Coussondb12ba52010-09-27 20:19:19 +05303431 },
3432 },
Benoit Coussondb12ba52010-09-27 20:19:19 +05303433};
3434
3435/* uart3 */
Benoit Coussondb12ba52010-09-27 20:19:19 +05303436static struct omap_hwmod_irq_info omap44xx_uart3_irqs[] = {
3437 { .irq = 74 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06003438 { .irq = -1 }
Benoit Coussondb12ba52010-09-27 20:19:19 +05303439};
3440
3441static struct omap_hwmod_dma_info omap44xx_uart3_sdma_reqs[] = {
3442 { .name = "tx", .dma_req = 52 + OMAP44XX_DMA_REQ_START },
3443 { .name = "rx", .dma_req = 53 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06003444 { .dma_req = -1 }
Benoit Coussondb12ba52010-09-27 20:19:19 +05303445};
3446
Benoit Coussondb12ba52010-09-27 20:19:19 +05303447static struct omap_hwmod omap44xx_uart3_hwmod = {
3448 .name = "uart3",
3449 .class = &omap44xx_uart_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06003450 .clkdm_name = "l4_per_clkdm",
Benoit Cousson7ecc53732011-07-09 19:14:28 -06003451 .flags = HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET,
Benoit Coussondb12ba52010-09-27 20:19:19 +05303452 .mpu_irqs = omap44xx_uart3_irqs,
Benoit Coussondb12ba52010-09-27 20:19:19 +05303453 .sdma_reqs = omap44xx_uart3_sdma_reqs,
Benoit Coussondb12ba52010-09-27 20:19:19 +05303454 .main_clk = "uart3_fck",
3455 .prcm = {
3456 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06003457 .clkctrl_offs = OMAP4_CM_L4PER_UART3_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06003458 .context_offs = OMAP4_RM_L4PER_UART3_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06003459 .modulemode = MODULEMODE_SWCTRL,
Benoit Coussondb12ba52010-09-27 20:19:19 +05303460 },
3461 },
Benoit Coussondb12ba52010-09-27 20:19:19 +05303462};
3463
3464/* uart4 */
Benoit Coussondb12ba52010-09-27 20:19:19 +05303465static struct omap_hwmod_irq_info omap44xx_uart4_irqs[] = {
3466 { .irq = 70 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -06003467 { .irq = -1 }
Benoit Coussondb12ba52010-09-27 20:19:19 +05303468};
3469
3470static struct omap_hwmod_dma_info omap44xx_uart4_sdma_reqs[] = {
3471 { .name = "tx", .dma_req = 54 + OMAP44XX_DMA_REQ_START },
3472 { .name = "rx", .dma_req = 55 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06003473 { .dma_req = -1 }
Benoit Coussondb12ba52010-09-27 20:19:19 +05303474};
3475
Benoit Coussondb12ba52010-09-27 20:19:19 +05303476static struct omap_hwmod omap44xx_uart4_hwmod = {
3477 .name = "uart4",
3478 .class = &omap44xx_uart_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06003479 .clkdm_name = "l4_per_clkdm",
Benoit Coussondb12ba52010-09-27 20:19:19 +05303480 .mpu_irqs = omap44xx_uart4_irqs,
Benoit Coussondb12ba52010-09-27 20:19:19 +05303481 .sdma_reqs = omap44xx_uart4_sdma_reqs,
Benoit Coussondb12ba52010-09-27 20:19:19 +05303482 .main_clk = "uart4_fck",
3483 .prcm = {
3484 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06003485 .clkctrl_offs = OMAP4_CM_L4PER_UART4_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06003486 .context_offs = OMAP4_RM_L4PER_UART4_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06003487 .modulemode = MODULEMODE_SWCTRL,
Benoit Coussondb12ba52010-09-27 20:19:19 +05303488 },
3489 },
Benoit Coussondb12ba52010-09-27 20:19:19 +05303490};
3491
Benoit Cousson9780a9c2010-12-07 16:26:57 -08003492/*
Benoît Cousson0c668872012-04-19 13:33:55 -06003493 * 'usb_host_fs' class
3494 * full-speed usb host controller
3495 */
3496
3497/* The IP is not compliant to type1 / type2 scheme */
3498static struct omap_hwmod_sysc_fields omap_hwmod_sysc_type_usb_host_fs = {
3499 .midle_shift = 4,
3500 .sidle_shift = 2,
3501 .srst_shift = 1,
3502};
3503
3504static struct omap_hwmod_class_sysconfig omap44xx_usb_host_fs_sysc = {
3505 .rev_offs = 0x0000,
3506 .sysc_offs = 0x0210,
3507 .sysc_flags = (SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE |
3508 SYSC_HAS_SOFTRESET),
3509 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
3510 SIDLE_SMART_WKUP),
3511 .sysc_fields = &omap_hwmod_sysc_type_usb_host_fs,
3512};
3513
3514static struct omap_hwmod_class omap44xx_usb_host_fs_hwmod_class = {
3515 .name = "usb_host_fs",
3516 .sysc = &omap44xx_usb_host_fs_sysc,
3517};
3518
3519/* usb_host_fs */
3520static struct omap_hwmod_irq_info omap44xx_usb_host_fs_irqs[] = {
3521 { .name = "std", .irq = 89 + OMAP44XX_IRQ_GIC_START },
3522 { .name = "smi", .irq = 90 + OMAP44XX_IRQ_GIC_START },
3523 { .irq = -1 }
3524};
3525
3526static struct omap_hwmod omap44xx_usb_host_fs_hwmod = {
3527 .name = "usb_host_fs",
3528 .class = &omap44xx_usb_host_fs_hwmod_class,
3529 .clkdm_name = "l3_init_clkdm",
3530 .mpu_irqs = omap44xx_usb_host_fs_irqs,
3531 .main_clk = "usb_host_fs_fck",
3532 .prcm = {
3533 .omap4 = {
3534 .clkctrl_offs = OMAP4_CM_L3INIT_USB_HOST_FS_CLKCTRL_OFFSET,
3535 .context_offs = OMAP4_RM_L3INIT_USB_HOST_FS_CONTEXT_OFFSET,
3536 .modulemode = MODULEMODE_SWCTRL,
3537 },
3538 },
3539};
3540
3541/*
Benoit Coussonaf88fa92011-12-15 23:15:18 -07003542 * 'usb_host_hs' class
3543 * high-speed multi-port usb host controller
3544 */
Benoit Coussonaf88fa92011-12-15 23:15:18 -07003545
3546static struct omap_hwmod_class_sysconfig omap44xx_usb_host_hs_sysc = {
3547 .rev_offs = 0x0000,
3548 .sysc_offs = 0x0010,
3549 .syss_offs = 0x0014,
3550 .sysc_flags = (SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE |
3551 SYSC_HAS_SOFTRESET),
3552 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
3553 SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
3554 MSTANDBY_SMART | MSTANDBY_SMART_WKUP),
3555 .sysc_fields = &omap_hwmod_sysc_type2,
3556};
3557
3558static struct omap_hwmod_class omap44xx_usb_host_hs_hwmod_class = {
Paul Walmsley844a3b62012-04-19 04:04:33 -06003559 .name = "usb_host_hs",
3560 .sysc = &omap44xx_usb_host_hs_sysc,
Benoit Coussonaf88fa92011-12-15 23:15:18 -07003561};
3562
Paul Walmsley844a3b62012-04-19 04:04:33 -06003563/* usb_host_hs */
Benoit Coussonaf88fa92011-12-15 23:15:18 -07003564static struct omap_hwmod_irq_info omap44xx_usb_host_hs_irqs[] = {
3565 { .name = "ohci-irq", .irq = 76 + OMAP44XX_IRQ_GIC_START },
3566 { .name = "ehci-irq", .irq = 77 + OMAP44XX_IRQ_GIC_START },
3567 { .irq = -1 }
3568};
3569
Benoit Coussonaf88fa92011-12-15 23:15:18 -07003570static struct omap_hwmod omap44xx_usb_host_hs_hwmod = {
3571 .name = "usb_host_hs",
3572 .class = &omap44xx_usb_host_hs_hwmod_class,
3573 .clkdm_name = "l3_init_clkdm",
3574 .main_clk = "usb_host_hs_fck",
3575 .prcm = {
3576 .omap4 = {
3577 .clkctrl_offs = OMAP4_CM_L3INIT_USB_HOST_CLKCTRL_OFFSET,
3578 .context_offs = OMAP4_RM_L3INIT_USB_HOST_CONTEXT_OFFSET,
3579 .modulemode = MODULEMODE_SWCTRL,
3580 },
3581 },
3582 .mpu_irqs = omap44xx_usb_host_hs_irqs,
Benoit Coussonaf88fa92011-12-15 23:15:18 -07003583
3584 /*
3585 * Errata: USBHOST Configured In Smart-Idle Can Lead To a Deadlock
3586 * id: i660
3587 *
3588 * Description:
3589 * In the following configuration :
3590 * - USBHOST module is set to smart-idle mode
3591 * - PRCM asserts idle_req to the USBHOST module ( This typically
3592 * happens when the system is going to a low power mode : all ports
3593 * have been suspended, the master part of the USBHOST module has
3594 * entered the standby state, and SW has cut the functional clocks)
3595 * - an USBHOST interrupt occurs before the module is able to answer
3596 * idle_ack, typically a remote wakeup IRQ.
3597 * Then the USB HOST module will enter a deadlock situation where it
3598 * is no more accessible nor functional.
3599 *
3600 * Workaround:
3601 * Don't use smart idle; use only force idle, hence HWMOD_SWSUP_SIDLE
3602 */
3603
3604 /*
3605 * Errata: USB host EHCI may stall when entering smart-standby mode
3606 * Id: i571
3607 *
3608 * Description:
3609 * When the USBHOST module is set to smart-standby mode, and when it is
3610 * ready to enter the standby state (i.e. all ports are suspended and
3611 * all attached devices are in suspend mode), then it can wrongly assert
3612 * the Mstandby signal too early while there are still some residual OCP
3613 * transactions ongoing. If this condition occurs, the internal state
3614 * machine may go to an undefined state and the USB link may be stuck
3615 * upon the next resume.
3616 *
3617 * Workaround:
3618 * Don't use smart standby; use only force standby,
3619 * hence HWMOD_SWSUP_MSTANDBY
3620 */
3621
3622 /*
3623 * During system boot; If the hwmod framework resets the module
3624 * the module will have smart idle settings; which can lead to deadlock
3625 * (above Errata Id:i660); so, dont reset the module during boot;
3626 * Use HWMOD_INIT_NO_RESET.
3627 */
3628
3629 .flags = HWMOD_SWSUP_SIDLE | HWMOD_SWSUP_MSTANDBY |
3630 HWMOD_INIT_NO_RESET,
3631};
3632
3633/*
Paul Walmsley844a3b62012-04-19 04:04:33 -06003634 * 'usb_otg_hs' class
3635 * high-speed on-the-go universal serial bus (usb_otg_hs) controller
3636 */
3637
3638static struct omap_hwmod_class_sysconfig omap44xx_usb_otg_hs_sysc = {
3639 .rev_offs = 0x0400,
3640 .sysc_offs = 0x0404,
3641 .syss_offs = 0x0408,
3642 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_ENAWAKEUP |
3643 SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE |
3644 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
3645 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
3646 SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
3647 MSTANDBY_SMART),
3648 .sysc_fields = &omap_hwmod_sysc_type1,
3649};
3650
3651static struct omap_hwmod_class omap44xx_usb_otg_hs_hwmod_class = {
3652 .name = "usb_otg_hs",
3653 .sysc = &omap44xx_usb_otg_hs_sysc,
3654};
3655
3656/* usb_otg_hs */
3657static struct omap_hwmod_irq_info omap44xx_usb_otg_hs_irqs[] = {
3658 { .name = "mc", .irq = 92 + OMAP44XX_IRQ_GIC_START },
3659 { .name = "dma", .irq = 93 + OMAP44XX_IRQ_GIC_START },
3660 { .irq = -1 }
3661};
3662
3663static struct omap_hwmod_opt_clk usb_otg_hs_opt_clks[] = {
3664 { .role = "xclk", .clk = "usb_otg_hs_xclk" },
3665};
3666
3667static struct omap_hwmod omap44xx_usb_otg_hs_hwmod = {
3668 .name = "usb_otg_hs",
3669 .class = &omap44xx_usb_otg_hs_hwmod_class,
3670 .clkdm_name = "l3_init_clkdm",
3671 .flags = HWMOD_SWSUP_SIDLE | HWMOD_SWSUP_MSTANDBY,
3672 .mpu_irqs = omap44xx_usb_otg_hs_irqs,
3673 .main_clk = "usb_otg_hs_ick",
3674 .prcm = {
3675 .omap4 = {
3676 .clkctrl_offs = OMAP4_CM_L3INIT_USB_OTG_CLKCTRL_OFFSET,
3677 .context_offs = OMAP4_RM_L3INIT_USB_OTG_CONTEXT_OFFSET,
3678 .modulemode = MODULEMODE_HWCTRL,
3679 },
3680 },
3681 .opt_clks = usb_otg_hs_opt_clks,
3682 .opt_clks_cnt = ARRAY_SIZE(usb_otg_hs_opt_clks),
3683};
3684
3685/*
Benoit Coussonaf88fa92011-12-15 23:15:18 -07003686 * 'usb_tll_hs' class
3687 * usb_tll_hs module is the adapter on the usb_host_hs ports
3688 */
Paul Walmsley844a3b62012-04-19 04:04:33 -06003689
Benoit Coussonaf88fa92011-12-15 23:15:18 -07003690static struct omap_hwmod_class_sysconfig omap44xx_usb_tll_hs_sysc = {
3691 .rev_offs = 0x0000,
3692 .sysc_offs = 0x0010,
3693 .syss_offs = 0x0014,
3694 .sysc_flags = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
3695 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
3696 SYSC_HAS_AUTOIDLE),
3697 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
3698 .sysc_fields = &omap_hwmod_sysc_type1,
3699};
3700
3701static struct omap_hwmod_class omap44xx_usb_tll_hs_hwmod_class = {
Paul Walmsley844a3b62012-04-19 04:04:33 -06003702 .name = "usb_tll_hs",
3703 .sysc = &omap44xx_usb_tll_hs_sysc,
Benoit Coussonaf88fa92011-12-15 23:15:18 -07003704};
3705
3706static struct omap_hwmod_irq_info omap44xx_usb_tll_hs_irqs[] = {
3707 { .name = "tll-irq", .irq = 78 + OMAP44XX_IRQ_GIC_START },
3708 { .irq = -1 }
3709};
3710
Paul Walmsley844a3b62012-04-19 04:04:33 -06003711static struct omap_hwmod omap44xx_usb_tll_hs_hwmod = {
3712 .name = "usb_tll_hs",
3713 .class = &omap44xx_usb_tll_hs_hwmod_class,
3714 .clkdm_name = "l3_init_clkdm",
3715 .mpu_irqs = omap44xx_usb_tll_hs_irqs,
3716 .main_clk = "usb_tll_hs_ick",
3717 .prcm = {
3718 .omap4 = {
3719 .clkctrl_offs = OMAP4_CM_L3INIT_USB_TLL_CLKCTRL_OFFSET,
3720 .context_offs = OMAP4_RM_L3INIT_USB_TLL_CONTEXT_OFFSET,
3721 .modulemode = MODULEMODE_HWCTRL,
3722 },
3723 },
3724};
3725
3726/*
3727 * 'wd_timer' class
3728 * 32-bit watchdog upward counter that generates a pulse on the reset pin on
3729 * overflow condition
3730 */
3731
3732static struct omap_hwmod_class_sysconfig omap44xx_wd_timer_sysc = {
3733 .rev_offs = 0x0000,
3734 .sysc_offs = 0x0010,
3735 .syss_offs = 0x0014,
3736 .sysc_flags = (SYSC_HAS_EMUFREE | SYSC_HAS_SIDLEMODE |
3737 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
3738 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
3739 SIDLE_SMART_WKUP),
3740 .sysc_fields = &omap_hwmod_sysc_type1,
3741};
3742
3743static struct omap_hwmod_class omap44xx_wd_timer_hwmod_class = {
3744 .name = "wd_timer",
3745 .sysc = &omap44xx_wd_timer_sysc,
3746 .pre_shutdown = &omap2_wd_timer_disable,
Kevin Hilman414e4122012-05-08 11:34:30 -06003747 .reset = &omap2_wd_timer_reset,
Paul Walmsley844a3b62012-04-19 04:04:33 -06003748};
3749
3750/* wd_timer2 */
3751static struct omap_hwmod_irq_info omap44xx_wd_timer2_irqs[] = {
3752 { .irq = 80 + OMAP44XX_IRQ_GIC_START },
3753 { .irq = -1 }
3754};
3755
3756static struct omap_hwmod omap44xx_wd_timer2_hwmod = {
3757 .name = "wd_timer2",
3758 .class = &omap44xx_wd_timer_hwmod_class,
3759 .clkdm_name = "l4_wkup_clkdm",
3760 .mpu_irqs = omap44xx_wd_timer2_irqs,
3761 .main_clk = "wd_timer2_fck",
3762 .prcm = {
3763 .omap4 = {
3764 .clkctrl_offs = OMAP4_CM_WKUP_WDT2_CLKCTRL_OFFSET,
3765 .context_offs = OMAP4_RM_WKUP_WDT2_CONTEXT_OFFSET,
3766 .modulemode = MODULEMODE_SWCTRL,
3767 },
3768 },
3769};
3770
3771/* wd_timer3 */
3772static struct omap_hwmod_irq_info omap44xx_wd_timer3_irqs[] = {
3773 { .irq = 36 + OMAP44XX_IRQ_GIC_START },
3774 { .irq = -1 }
3775};
3776
3777static struct omap_hwmod omap44xx_wd_timer3_hwmod = {
3778 .name = "wd_timer3",
3779 .class = &omap44xx_wd_timer_hwmod_class,
3780 .clkdm_name = "abe_clkdm",
3781 .mpu_irqs = omap44xx_wd_timer3_irqs,
3782 .main_clk = "wd_timer3_fck",
3783 .prcm = {
3784 .omap4 = {
3785 .clkctrl_offs = OMAP4_CM1_ABE_WDT3_CLKCTRL_OFFSET,
3786 .context_offs = OMAP4_RM_ABE_WDT3_CONTEXT_OFFSET,
3787 .modulemode = MODULEMODE_SWCTRL,
3788 },
3789 },
3790};
3791
3792
3793/*
3794 * interfaces
3795 */
3796
Paul Walmsley42b9e382012-04-19 13:33:54 -06003797static struct omap_hwmod_addr_space omap44xx_c2c_target_fw_addrs[] = {
3798 {
3799 .pa_start = 0x4a204000,
3800 .pa_end = 0x4a2040ff,
3801 .flags = ADDR_TYPE_RT
3802 },
3803 { }
3804};
3805
3806/* c2c -> c2c_target_fw */
3807static struct omap_hwmod_ocp_if omap44xx_c2c__c2c_target_fw = {
3808 .master = &omap44xx_c2c_hwmod,
3809 .slave = &omap44xx_c2c_target_fw_hwmod,
3810 .clk = "div_core_ck",
3811 .addr = omap44xx_c2c_target_fw_addrs,
3812 .user = OCP_USER_MPU,
3813};
3814
3815/* l4_cfg -> c2c_target_fw */
3816static struct omap_hwmod_ocp_if omap44xx_l4_cfg__c2c_target_fw = {
3817 .master = &omap44xx_l4_cfg_hwmod,
3818 .slave = &omap44xx_c2c_target_fw_hwmod,
3819 .clk = "l4_div_ck",
3820 .user = OCP_USER_MPU | OCP_USER_SDMA,
3821};
3822
Paul Walmsley844a3b62012-04-19 04:04:33 -06003823/* l3_main_1 -> dmm */
3824static struct omap_hwmod_ocp_if omap44xx_l3_main_1__dmm = {
3825 .master = &omap44xx_l3_main_1_hwmod,
3826 .slave = &omap44xx_dmm_hwmod,
3827 .clk = "l3_div_ck",
3828 .user = OCP_USER_SDMA,
3829};
3830
3831static struct omap_hwmod_addr_space omap44xx_dmm_addrs[] = {
3832 {
3833 .pa_start = 0x4e000000,
3834 .pa_end = 0x4e0007ff,
3835 .flags = ADDR_TYPE_RT
3836 },
3837 { }
3838};
3839
3840/* mpu -> dmm */
3841static struct omap_hwmod_ocp_if omap44xx_mpu__dmm = {
3842 .master = &omap44xx_mpu_hwmod,
3843 .slave = &omap44xx_dmm_hwmod,
3844 .clk = "l3_div_ck",
3845 .addr = omap44xx_dmm_addrs,
3846 .user = OCP_USER_MPU,
3847};
3848
Paul Walmsley42b9e382012-04-19 13:33:54 -06003849/* c2c -> emif_fw */
3850static struct omap_hwmod_ocp_if omap44xx_c2c__emif_fw = {
3851 .master = &omap44xx_c2c_hwmod,
3852 .slave = &omap44xx_emif_fw_hwmod,
3853 .clk = "div_core_ck",
3854 .user = OCP_USER_MPU | OCP_USER_SDMA,
3855};
3856
Paul Walmsley844a3b62012-04-19 04:04:33 -06003857/* dmm -> emif_fw */
3858static struct omap_hwmod_ocp_if omap44xx_dmm__emif_fw = {
3859 .master = &omap44xx_dmm_hwmod,
3860 .slave = &omap44xx_emif_fw_hwmod,
3861 .clk = "l3_div_ck",
3862 .user = OCP_USER_MPU | OCP_USER_SDMA,
3863};
3864
3865static struct omap_hwmod_addr_space omap44xx_emif_fw_addrs[] = {
3866 {
3867 .pa_start = 0x4a20c000,
3868 .pa_end = 0x4a20c0ff,
3869 .flags = ADDR_TYPE_RT
3870 },
3871 { }
3872};
3873
3874/* l4_cfg -> emif_fw */
3875static struct omap_hwmod_ocp_if omap44xx_l4_cfg__emif_fw = {
3876 .master = &omap44xx_l4_cfg_hwmod,
3877 .slave = &omap44xx_emif_fw_hwmod,
3878 .clk = "l4_div_ck",
3879 .addr = omap44xx_emif_fw_addrs,
3880 .user = OCP_USER_MPU,
3881};
3882
3883/* iva -> l3_instr */
3884static struct omap_hwmod_ocp_if omap44xx_iva__l3_instr = {
3885 .master = &omap44xx_iva_hwmod,
3886 .slave = &omap44xx_l3_instr_hwmod,
3887 .clk = "l3_div_ck",
3888 .user = OCP_USER_MPU | OCP_USER_SDMA,
3889};
3890
3891/* l3_main_3 -> l3_instr */
3892static struct omap_hwmod_ocp_if omap44xx_l3_main_3__l3_instr = {
3893 .master = &omap44xx_l3_main_3_hwmod,
3894 .slave = &omap44xx_l3_instr_hwmod,
3895 .clk = "l3_div_ck",
3896 .user = OCP_USER_MPU | OCP_USER_SDMA,
3897};
3898
Benoît Cousson9a817bc2012-04-19 13:33:56 -06003899/* ocp_wp_noc -> l3_instr */
3900static struct omap_hwmod_ocp_if omap44xx_ocp_wp_noc__l3_instr = {
3901 .master = &omap44xx_ocp_wp_noc_hwmod,
3902 .slave = &omap44xx_l3_instr_hwmod,
3903 .clk = "l3_div_ck",
3904 .user = OCP_USER_MPU | OCP_USER_SDMA,
3905};
3906
Paul Walmsley844a3b62012-04-19 04:04:33 -06003907/* dsp -> l3_main_1 */
3908static struct omap_hwmod_ocp_if omap44xx_dsp__l3_main_1 = {
3909 .master = &omap44xx_dsp_hwmod,
3910 .slave = &omap44xx_l3_main_1_hwmod,
3911 .clk = "l3_div_ck",
3912 .user = OCP_USER_MPU | OCP_USER_SDMA,
3913};
3914
3915/* dss -> l3_main_1 */
3916static struct omap_hwmod_ocp_if omap44xx_dss__l3_main_1 = {
3917 .master = &omap44xx_dss_hwmod,
3918 .slave = &omap44xx_l3_main_1_hwmod,
3919 .clk = "l3_div_ck",
3920 .user = OCP_USER_MPU | OCP_USER_SDMA,
3921};
3922
3923/* l3_main_2 -> l3_main_1 */
3924static struct omap_hwmod_ocp_if omap44xx_l3_main_2__l3_main_1 = {
3925 .master = &omap44xx_l3_main_2_hwmod,
3926 .slave = &omap44xx_l3_main_1_hwmod,
3927 .clk = "l3_div_ck",
3928 .user = OCP_USER_MPU | OCP_USER_SDMA,
3929};
3930
3931/* l4_cfg -> l3_main_1 */
3932static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l3_main_1 = {
3933 .master = &omap44xx_l4_cfg_hwmod,
3934 .slave = &omap44xx_l3_main_1_hwmod,
3935 .clk = "l4_div_ck",
3936 .user = OCP_USER_MPU | OCP_USER_SDMA,
3937};
3938
3939/* mmc1 -> l3_main_1 */
3940static struct omap_hwmod_ocp_if omap44xx_mmc1__l3_main_1 = {
3941 .master = &omap44xx_mmc1_hwmod,
3942 .slave = &omap44xx_l3_main_1_hwmod,
3943 .clk = "l3_div_ck",
3944 .user = OCP_USER_MPU | OCP_USER_SDMA,
3945};
3946
3947/* mmc2 -> l3_main_1 */
3948static struct omap_hwmod_ocp_if omap44xx_mmc2__l3_main_1 = {
3949 .master = &omap44xx_mmc2_hwmod,
3950 .slave = &omap44xx_l3_main_1_hwmod,
3951 .clk = "l3_div_ck",
3952 .user = OCP_USER_MPU | OCP_USER_SDMA,
3953};
3954
3955static struct omap_hwmod_addr_space omap44xx_l3_main_1_addrs[] = {
3956 {
3957 .pa_start = 0x44000000,
3958 .pa_end = 0x44000fff,
3959 .flags = ADDR_TYPE_RT
3960 },
3961 { }
3962};
3963
3964/* mpu -> l3_main_1 */
3965static struct omap_hwmod_ocp_if omap44xx_mpu__l3_main_1 = {
3966 .master = &omap44xx_mpu_hwmod,
3967 .slave = &omap44xx_l3_main_1_hwmod,
3968 .clk = "l3_div_ck",
3969 .addr = omap44xx_l3_main_1_addrs,
3970 .user = OCP_USER_MPU,
3971};
3972
Paul Walmsley42b9e382012-04-19 13:33:54 -06003973/* c2c_target_fw -> l3_main_2 */
3974static struct omap_hwmod_ocp_if omap44xx_c2c_target_fw__l3_main_2 = {
3975 .master = &omap44xx_c2c_target_fw_hwmod,
3976 .slave = &omap44xx_l3_main_2_hwmod,
3977 .clk = "l3_div_ck",
3978 .user = OCP_USER_MPU | OCP_USER_SDMA,
3979};
3980
Benoît Cousson96566042012-04-19 13:33:59 -06003981/* debugss -> l3_main_2 */
3982static struct omap_hwmod_ocp_if omap44xx_debugss__l3_main_2 = {
3983 .master = &omap44xx_debugss_hwmod,
3984 .slave = &omap44xx_l3_main_2_hwmod,
3985 .clk = "dbgclk_mux_ck",
3986 .user = OCP_USER_MPU | OCP_USER_SDMA,
3987};
3988
Paul Walmsley844a3b62012-04-19 04:04:33 -06003989/* dma_system -> l3_main_2 */
3990static struct omap_hwmod_ocp_if omap44xx_dma_system__l3_main_2 = {
3991 .master = &omap44xx_dma_system_hwmod,
3992 .slave = &omap44xx_l3_main_2_hwmod,
3993 .clk = "l3_div_ck",
3994 .user = OCP_USER_MPU | OCP_USER_SDMA,
3995};
3996
Ming Leib050f682012-04-19 13:33:50 -06003997/* fdif -> l3_main_2 */
3998static struct omap_hwmod_ocp_if omap44xx_fdif__l3_main_2 = {
3999 .master = &omap44xx_fdif_hwmod,
4000 .slave = &omap44xx_l3_main_2_hwmod,
4001 .clk = "l3_div_ck",
4002 .user = OCP_USER_MPU | OCP_USER_SDMA,
4003};
4004
Paul Walmsley9def3902012-04-19 13:33:53 -06004005/* gpu -> l3_main_2 */
4006static struct omap_hwmod_ocp_if omap44xx_gpu__l3_main_2 = {
4007 .master = &omap44xx_gpu_hwmod,
4008 .slave = &omap44xx_l3_main_2_hwmod,
4009 .clk = "l3_div_ck",
4010 .user = OCP_USER_MPU | OCP_USER_SDMA,
4011};
4012
Paul Walmsley844a3b62012-04-19 04:04:33 -06004013/* hsi -> l3_main_2 */
4014static struct omap_hwmod_ocp_if omap44xx_hsi__l3_main_2 = {
4015 .master = &omap44xx_hsi_hwmod,
4016 .slave = &omap44xx_l3_main_2_hwmod,
4017 .clk = "l3_div_ck",
4018 .user = OCP_USER_MPU | OCP_USER_SDMA,
4019};
4020
4021/* ipu -> l3_main_2 */
4022static struct omap_hwmod_ocp_if omap44xx_ipu__l3_main_2 = {
4023 .master = &omap44xx_ipu_hwmod,
4024 .slave = &omap44xx_l3_main_2_hwmod,
4025 .clk = "l3_div_ck",
4026 .user = OCP_USER_MPU | OCP_USER_SDMA,
4027};
4028
4029/* iss -> l3_main_2 */
4030static struct omap_hwmod_ocp_if omap44xx_iss__l3_main_2 = {
4031 .master = &omap44xx_iss_hwmod,
4032 .slave = &omap44xx_l3_main_2_hwmod,
4033 .clk = "l3_div_ck",
4034 .user = OCP_USER_MPU | OCP_USER_SDMA,
4035};
4036
4037/* iva -> l3_main_2 */
4038static struct omap_hwmod_ocp_if omap44xx_iva__l3_main_2 = {
4039 .master = &omap44xx_iva_hwmod,
4040 .slave = &omap44xx_l3_main_2_hwmod,
4041 .clk = "l3_div_ck",
4042 .user = OCP_USER_MPU | OCP_USER_SDMA,
4043};
4044
4045static struct omap_hwmod_addr_space omap44xx_l3_main_2_addrs[] = {
4046 {
4047 .pa_start = 0x44800000,
4048 .pa_end = 0x44801fff,
4049 .flags = ADDR_TYPE_RT
4050 },
4051 { }
4052};
4053
4054/* l3_main_1 -> l3_main_2 */
4055static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l3_main_2 = {
4056 .master = &omap44xx_l3_main_1_hwmod,
4057 .slave = &omap44xx_l3_main_2_hwmod,
4058 .clk = "l3_div_ck",
4059 .addr = omap44xx_l3_main_2_addrs,
4060 .user = OCP_USER_MPU,
4061};
4062
4063/* l4_cfg -> l3_main_2 */
4064static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l3_main_2 = {
4065 .master = &omap44xx_l4_cfg_hwmod,
4066 .slave = &omap44xx_l3_main_2_hwmod,
4067 .clk = "l4_div_ck",
4068 .user = OCP_USER_MPU | OCP_USER_SDMA,
4069};
4070
Benoît Cousson0c668872012-04-19 13:33:55 -06004071/* usb_host_fs -> l3_main_2 */
Paul Walmsleyb0a70cc2012-07-04 06:55:29 -06004072static struct omap_hwmod_ocp_if __maybe_unused omap44xx_usb_host_fs__l3_main_2 = {
Benoît Cousson0c668872012-04-19 13:33:55 -06004073 .master = &omap44xx_usb_host_fs_hwmod,
4074 .slave = &omap44xx_l3_main_2_hwmod,
4075 .clk = "l3_div_ck",
4076 .user = OCP_USER_MPU | OCP_USER_SDMA,
4077};
4078
Paul Walmsley844a3b62012-04-19 04:04:33 -06004079/* usb_host_hs -> l3_main_2 */
4080static struct omap_hwmod_ocp_if omap44xx_usb_host_hs__l3_main_2 = {
4081 .master = &omap44xx_usb_host_hs_hwmod,
4082 .slave = &omap44xx_l3_main_2_hwmod,
4083 .clk = "l3_div_ck",
4084 .user = OCP_USER_MPU | OCP_USER_SDMA,
4085};
4086
4087/* usb_otg_hs -> l3_main_2 */
4088static struct omap_hwmod_ocp_if omap44xx_usb_otg_hs__l3_main_2 = {
4089 .master = &omap44xx_usb_otg_hs_hwmod,
4090 .slave = &omap44xx_l3_main_2_hwmod,
4091 .clk = "l3_div_ck",
4092 .user = OCP_USER_MPU | OCP_USER_SDMA,
4093};
4094
4095static struct omap_hwmod_addr_space omap44xx_l3_main_3_addrs[] = {
4096 {
4097 .pa_start = 0x45000000,
4098 .pa_end = 0x45000fff,
4099 .flags = ADDR_TYPE_RT
4100 },
4101 { }
4102};
4103
4104/* l3_main_1 -> l3_main_3 */
4105static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l3_main_3 = {
4106 .master = &omap44xx_l3_main_1_hwmod,
4107 .slave = &omap44xx_l3_main_3_hwmod,
4108 .clk = "l3_div_ck",
4109 .addr = omap44xx_l3_main_3_addrs,
4110 .user = OCP_USER_MPU,
4111};
4112
4113/* l3_main_2 -> l3_main_3 */
4114static struct omap_hwmod_ocp_if omap44xx_l3_main_2__l3_main_3 = {
4115 .master = &omap44xx_l3_main_2_hwmod,
4116 .slave = &omap44xx_l3_main_3_hwmod,
4117 .clk = "l3_div_ck",
4118 .user = OCP_USER_MPU | OCP_USER_SDMA,
4119};
4120
4121/* l4_cfg -> l3_main_3 */
4122static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l3_main_3 = {
4123 .master = &omap44xx_l4_cfg_hwmod,
4124 .slave = &omap44xx_l3_main_3_hwmod,
4125 .clk = "l4_div_ck",
4126 .user = OCP_USER_MPU | OCP_USER_SDMA,
4127};
4128
4129/* aess -> l4_abe */
Paul Walmsleyb0a70cc2012-07-04 06:55:29 -06004130static struct omap_hwmod_ocp_if __maybe_unused omap44xx_aess__l4_abe = {
Paul Walmsley844a3b62012-04-19 04:04:33 -06004131 .master = &omap44xx_aess_hwmod,
4132 .slave = &omap44xx_l4_abe_hwmod,
4133 .clk = "ocp_abe_iclk",
4134 .user = OCP_USER_MPU | OCP_USER_SDMA,
4135};
4136
4137/* dsp -> l4_abe */
4138static struct omap_hwmod_ocp_if omap44xx_dsp__l4_abe = {
4139 .master = &omap44xx_dsp_hwmod,
4140 .slave = &omap44xx_l4_abe_hwmod,
4141 .clk = "ocp_abe_iclk",
4142 .user = OCP_USER_MPU | OCP_USER_SDMA,
4143};
4144
4145/* l3_main_1 -> l4_abe */
4146static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l4_abe = {
4147 .master = &omap44xx_l3_main_1_hwmod,
4148 .slave = &omap44xx_l4_abe_hwmod,
4149 .clk = "l3_div_ck",
4150 .user = OCP_USER_MPU | OCP_USER_SDMA,
4151};
4152
4153/* mpu -> l4_abe */
4154static struct omap_hwmod_ocp_if omap44xx_mpu__l4_abe = {
4155 .master = &omap44xx_mpu_hwmod,
4156 .slave = &omap44xx_l4_abe_hwmod,
4157 .clk = "ocp_abe_iclk",
4158 .user = OCP_USER_MPU | OCP_USER_SDMA,
4159};
4160
4161/* l3_main_1 -> l4_cfg */
4162static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l4_cfg = {
4163 .master = &omap44xx_l3_main_1_hwmod,
4164 .slave = &omap44xx_l4_cfg_hwmod,
4165 .clk = "l3_div_ck",
4166 .user = OCP_USER_MPU | OCP_USER_SDMA,
4167};
4168
4169/* l3_main_2 -> l4_per */
4170static struct omap_hwmod_ocp_if omap44xx_l3_main_2__l4_per = {
4171 .master = &omap44xx_l3_main_2_hwmod,
4172 .slave = &omap44xx_l4_per_hwmod,
4173 .clk = "l3_div_ck",
4174 .user = OCP_USER_MPU | OCP_USER_SDMA,
4175};
4176
4177/* l4_cfg -> l4_wkup */
4178static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l4_wkup = {
4179 .master = &omap44xx_l4_cfg_hwmod,
4180 .slave = &omap44xx_l4_wkup_hwmod,
4181 .clk = "l4_div_ck",
4182 .user = OCP_USER_MPU | OCP_USER_SDMA,
4183};
4184
4185/* mpu -> mpu_private */
4186static struct omap_hwmod_ocp_if omap44xx_mpu__mpu_private = {
4187 .master = &omap44xx_mpu_hwmod,
4188 .slave = &omap44xx_mpu_private_hwmod,
4189 .clk = "l3_div_ck",
4190 .user = OCP_USER_MPU | OCP_USER_SDMA,
4191};
4192
Benoît Cousson9a817bc2012-04-19 13:33:56 -06004193static struct omap_hwmod_addr_space omap44xx_ocp_wp_noc_addrs[] = {
4194 {
4195 .pa_start = 0x4a102000,
4196 .pa_end = 0x4a10207f,
4197 .flags = ADDR_TYPE_RT
4198 },
4199 { }
4200};
4201
4202/* l4_cfg -> ocp_wp_noc */
4203static struct omap_hwmod_ocp_if omap44xx_l4_cfg__ocp_wp_noc = {
4204 .master = &omap44xx_l4_cfg_hwmod,
4205 .slave = &omap44xx_ocp_wp_noc_hwmod,
4206 .clk = "l4_div_ck",
4207 .addr = omap44xx_ocp_wp_noc_addrs,
4208 .user = OCP_USER_MPU | OCP_USER_SDMA,
4209};
4210
Paul Walmsley844a3b62012-04-19 04:04:33 -06004211static struct omap_hwmod_addr_space omap44xx_aess_addrs[] = {
4212 {
4213 .pa_start = 0x401f1000,
4214 .pa_end = 0x401f13ff,
4215 .flags = ADDR_TYPE_RT
4216 },
4217 { }
4218};
4219
4220/* l4_abe -> aess */
Paul Walmsleyb0a70cc2012-07-04 06:55:29 -06004221static struct omap_hwmod_ocp_if __maybe_unused omap44xx_l4_abe__aess = {
Paul Walmsley844a3b62012-04-19 04:04:33 -06004222 .master = &omap44xx_l4_abe_hwmod,
4223 .slave = &omap44xx_aess_hwmod,
4224 .clk = "ocp_abe_iclk",
4225 .addr = omap44xx_aess_addrs,
4226 .user = OCP_USER_MPU,
4227};
4228
4229static struct omap_hwmod_addr_space omap44xx_aess_dma_addrs[] = {
4230 {
4231 .pa_start = 0x490f1000,
4232 .pa_end = 0x490f13ff,
4233 .flags = ADDR_TYPE_RT
4234 },
4235 { }
4236};
4237
4238/* l4_abe -> aess (dma) */
Paul Walmsleyb0a70cc2012-07-04 06:55:29 -06004239static struct omap_hwmod_ocp_if __maybe_unused omap44xx_l4_abe__aess_dma = {
Paul Walmsley844a3b62012-04-19 04:04:33 -06004240 .master = &omap44xx_l4_abe_hwmod,
4241 .slave = &omap44xx_aess_hwmod,
4242 .clk = "ocp_abe_iclk",
4243 .addr = omap44xx_aess_dma_addrs,
4244 .user = OCP_USER_SDMA,
4245};
4246
Paul Walmsley42b9e382012-04-19 13:33:54 -06004247/* l3_main_2 -> c2c */
4248static struct omap_hwmod_ocp_if omap44xx_l3_main_2__c2c = {
4249 .master = &omap44xx_l3_main_2_hwmod,
4250 .slave = &omap44xx_c2c_hwmod,
4251 .clk = "l3_div_ck",
4252 .user = OCP_USER_MPU | OCP_USER_SDMA,
4253};
4254
Paul Walmsley844a3b62012-04-19 04:04:33 -06004255static struct omap_hwmod_addr_space omap44xx_counter_32k_addrs[] = {
4256 {
4257 .pa_start = 0x4a304000,
4258 .pa_end = 0x4a30401f,
4259 .flags = ADDR_TYPE_RT
4260 },
4261 { }
4262};
4263
4264/* l4_wkup -> counter_32k */
4265static struct omap_hwmod_ocp_if omap44xx_l4_wkup__counter_32k = {
4266 .master = &omap44xx_l4_wkup_hwmod,
4267 .slave = &omap44xx_counter_32k_hwmod,
4268 .clk = "l4_wkup_clk_mux_ck",
4269 .addr = omap44xx_counter_32k_addrs,
4270 .user = OCP_USER_MPU | OCP_USER_SDMA,
4271};
4272
Paul Walmsleya0b5d812012-04-19 13:33:57 -06004273static struct omap_hwmod_addr_space omap44xx_ctrl_module_core_addrs[] = {
4274 {
4275 .pa_start = 0x4a002000,
4276 .pa_end = 0x4a0027ff,
4277 .flags = ADDR_TYPE_RT
4278 },
4279 { }
4280};
4281
4282/* l4_cfg -> ctrl_module_core */
4283static struct omap_hwmod_ocp_if omap44xx_l4_cfg__ctrl_module_core = {
4284 .master = &omap44xx_l4_cfg_hwmod,
4285 .slave = &omap44xx_ctrl_module_core_hwmod,
4286 .clk = "l4_div_ck",
4287 .addr = omap44xx_ctrl_module_core_addrs,
4288 .user = OCP_USER_MPU | OCP_USER_SDMA,
4289};
4290
4291static struct omap_hwmod_addr_space omap44xx_ctrl_module_pad_core_addrs[] = {
4292 {
4293 .pa_start = 0x4a100000,
4294 .pa_end = 0x4a1007ff,
4295 .flags = ADDR_TYPE_RT
4296 },
4297 { }
4298};
4299
4300/* l4_cfg -> ctrl_module_pad_core */
4301static struct omap_hwmod_ocp_if omap44xx_l4_cfg__ctrl_module_pad_core = {
4302 .master = &omap44xx_l4_cfg_hwmod,
4303 .slave = &omap44xx_ctrl_module_pad_core_hwmod,
4304 .clk = "l4_div_ck",
4305 .addr = omap44xx_ctrl_module_pad_core_addrs,
4306 .user = OCP_USER_MPU | OCP_USER_SDMA,
4307};
4308
4309static struct omap_hwmod_addr_space omap44xx_ctrl_module_wkup_addrs[] = {
4310 {
4311 .pa_start = 0x4a30c000,
4312 .pa_end = 0x4a30c7ff,
4313 .flags = ADDR_TYPE_RT
4314 },
4315 { }
4316};
4317
4318/* l4_wkup -> ctrl_module_wkup */
4319static struct omap_hwmod_ocp_if omap44xx_l4_wkup__ctrl_module_wkup = {
4320 .master = &omap44xx_l4_wkup_hwmod,
4321 .slave = &omap44xx_ctrl_module_wkup_hwmod,
4322 .clk = "l4_wkup_clk_mux_ck",
4323 .addr = omap44xx_ctrl_module_wkup_addrs,
4324 .user = OCP_USER_MPU | OCP_USER_SDMA,
4325};
4326
4327static struct omap_hwmod_addr_space omap44xx_ctrl_module_pad_wkup_addrs[] = {
4328 {
4329 .pa_start = 0x4a31e000,
4330 .pa_end = 0x4a31e7ff,
4331 .flags = ADDR_TYPE_RT
4332 },
4333 { }
4334};
4335
4336/* l4_wkup -> ctrl_module_pad_wkup */
4337static struct omap_hwmod_ocp_if omap44xx_l4_wkup__ctrl_module_pad_wkup = {
4338 .master = &omap44xx_l4_wkup_hwmod,
4339 .slave = &omap44xx_ctrl_module_pad_wkup_hwmod,
4340 .clk = "l4_wkup_clk_mux_ck",
4341 .addr = omap44xx_ctrl_module_pad_wkup_addrs,
4342 .user = OCP_USER_MPU | OCP_USER_SDMA,
4343};
4344
Benoît Cousson96566042012-04-19 13:33:59 -06004345static struct omap_hwmod_addr_space omap44xx_debugss_addrs[] = {
4346 {
4347 .pa_start = 0x54160000,
4348 .pa_end = 0x54167fff,
4349 .flags = ADDR_TYPE_RT
4350 },
4351 { }
4352};
4353
4354/* l3_instr -> debugss */
4355static struct omap_hwmod_ocp_if omap44xx_l3_instr__debugss = {
4356 .master = &omap44xx_l3_instr_hwmod,
4357 .slave = &omap44xx_debugss_hwmod,
4358 .clk = "l3_div_ck",
4359 .addr = omap44xx_debugss_addrs,
4360 .user = OCP_USER_MPU | OCP_USER_SDMA,
4361};
4362
Paul Walmsley844a3b62012-04-19 04:04:33 -06004363static struct omap_hwmod_addr_space omap44xx_dma_system_addrs[] = {
4364 {
4365 .pa_start = 0x4a056000,
4366 .pa_end = 0x4a056fff,
4367 .flags = ADDR_TYPE_RT
4368 },
4369 { }
4370};
4371
4372/* l4_cfg -> dma_system */
4373static struct omap_hwmod_ocp_if omap44xx_l4_cfg__dma_system = {
4374 .master = &omap44xx_l4_cfg_hwmod,
4375 .slave = &omap44xx_dma_system_hwmod,
4376 .clk = "l4_div_ck",
4377 .addr = omap44xx_dma_system_addrs,
4378 .user = OCP_USER_MPU | OCP_USER_SDMA,
4379};
4380
4381static struct omap_hwmod_addr_space omap44xx_dmic_addrs[] = {
4382 {
4383 .name = "mpu",
4384 .pa_start = 0x4012e000,
4385 .pa_end = 0x4012e07f,
4386 .flags = ADDR_TYPE_RT
4387 },
4388 { }
4389};
4390
4391/* l4_abe -> dmic */
4392static struct omap_hwmod_ocp_if omap44xx_l4_abe__dmic = {
4393 .master = &omap44xx_l4_abe_hwmod,
4394 .slave = &omap44xx_dmic_hwmod,
4395 .clk = "ocp_abe_iclk",
4396 .addr = omap44xx_dmic_addrs,
4397 .user = OCP_USER_MPU,
4398};
4399
4400static struct omap_hwmod_addr_space omap44xx_dmic_dma_addrs[] = {
4401 {
4402 .name = "dma",
4403 .pa_start = 0x4902e000,
4404 .pa_end = 0x4902e07f,
4405 .flags = ADDR_TYPE_RT
4406 },
4407 { }
4408};
4409
4410/* l4_abe -> dmic (dma) */
4411static struct omap_hwmod_ocp_if omap44xx_l4_abe__dmic_dma = {
4412 .master = &omap44xx_l4_abe_hwmod,
4413 .slave = &omap44xx_dmic_hwmod,
4414 .clk = "ocp_abe_iclk",
4415 .addr = omap44xx_dmic_dma_addrs,
4416 .user = OCP_USER_SDMA,
4417};
4418
4419/* dsp -> iva */
4420static struct omap_hwmod_ocp_if omap44xx_dsp__iva = {
4421 .master = &omap44xx_dsp_hwmod,
4422 .slave = &omap44xx_iva_hwmod,
4423 .clk = "dpll_iva_m5x2_ck",
4424 .user = OCP_USER_DSP,
4425};
4426
Paul Walmsley42b9e382012-04-19 13:33:54 -06004427/* dsp -> sl2if */
Tero Kristob3601242012-09-03 11:50:53 -06004428static struct omap_hwmod_ocp_if __maybe_unused omap44xx_dsp__sl2if = {
Paul Walmsley42b9e382012-04-19 13:33:54 -06004429 .master = &omap44xx_dsp_hwmod,
4430 .slave = &omap44xx_sl2if_hwmod,
4431 .clk = "dpll_iva_m5x2_ck",
4432 .user = OCP_USER_DSP,
4433};
4434
Paul Walmsley844a3b62012-04-19 04:04:33 -06004435/* l4_cfg -> dsp */
4436static struct omap_hwmod_ocp_if omap44xx_l4_cfg__dsp = {
4437 .master = &omap44xx_l4_cfg_hwmod,
4438 .slave = &omap44xx_dsp_hwmod,
4439 .clk = "l4_div_ck",
4440 .user = OCP_USER_MPU | OCP_USER_SDMA,
4441};
4442
4443static struct omap_hwmod_addr_space omap44xx_dss_dma_addrs[] = {
4444 {
4445 .pa_start = 0x58000000,
4446 .pa_end = 0x5800007f,
4447 .flags = ADDR_TYPE_RT
4448 },
4449 { }
4450};
4451
4452/* l3_main_2 -> dss */
4453static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss = {
4454 .master = &omap44xx_l3_main_2_hwmod,
4455 .slave = &omap44xx_dss_hwmod,
4456 .clk = "dss_fck",
4457 .addr = omap44xx_dss_dma_addrs,
4458 .user = OCP_USER_SDMA,
4459};
4460
4461static struct omap_hwmod_addr_space omap44xx_dss_addrs[] = {
4462 {
4463 .pa_start = 0x48040000,
4464 .pa_end = 0x4804007f,
4465 .flags = ADDR_TYPE_RT
4466 },
4467 { }
4468};
4469
4470/* l4_per -> dss */
4471static struct omap_hwmod_ocp_if omap44xx_l4_per__dss = {
4472 .master = &omap44xx_l4_per_hwmod,
4473 .slave = &omap44xx_dss_hwmod,
4474 .clk = "l4_div_ck",
4475 .addr = omap44xx_dss_addrs,
4476 .user = OCP_USER_MPU,
4477};
4478
4479static struct omap_hwmod_addr_space omap44xx_dss_dispc_dma_addrs[] = {
4480 {
4481 .pa_start = 0x58001000,
4482 .pa_end = 0x58001fff,
4483 .flags = ADDR_TYPE_RT
4484 },
4485 { }
4486};
4487
4488/* l3_main_2 -> dss_dispc */
4489static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_dispc = {
4490 .master = &omap44xx_l3_main_2_hwmod,
4491 .slave = &omap44xx_dss_dispc_hwmod,
4492 .clk = "dss_fck",
4493 .addr = omap44xx_dss_dispc_dma_addrs,
4494 .user = OCP_USER_SDMA,
4495};
4496
4497static struct omap_hwmod_addr_space omap44xx_dss_dispc_addrs[] = {
4498 {
4499 .pa_start = 0x48041000,
4500 .pa_end = 0x48041fff,
4501 .flags = ADDR_TYPE_RT
4502 },
4503 { }
4504};
4505
4506/* l4_per -> dss_dispc */
4507static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_dispc = {
4508 .master = &omap44xx_l4_per_hwmod,
4509 .slave = &omap44xx_dss_dispc_hwmod,
4510 .clk = "l4_div_ck",
4511 .addr = omap44xx_dss_dispc_addrs,
4512 .user = OCP_USER_MPU,
4513};
4514
4515static struct omap_hwmod_addr_space omap44xx_dss_dsi1_dma_addrs[] = {
4516 {
4517 .pa_start = 0x58004000,
4518 .pa_end = 0x580041ff,
4519 .flags = ADDR_TYPE_RT
4520 },
4521 { }
4522};
4523
4524/* l3_main_2 -> dss_dsi1 */
4525static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_dsi1 = {
4526 .master = &omap44xx_l3_main_2_hwmod,
4527 .slave = &omap44xx_dss_dsi1_hwmod,
4528 .clk = "dss_fck",
4529 .addr = omap44xx_dss_dsi1_dma_addrs,
4530 .user = OCP_USER_SDMA,
4531};
4532
4533static struct omap_hwmod_addr_space omap44xx_dss_dsi1_addrs[] = {
4534 {
4535 .pa_start = 0x48044000,
4536 .pa_end = 0x480441ff,
4537 .flags = ADDR_TYPE_RT
4538 },
4539 { }
4540};
4541
4542/* l4_per -> dss_dsi1 */
4543static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_dsi1 = {
4544 .master = &omap44xx_l4_per_hwmod,
4545 .slave = &omap44xx_dss_dsi1_hwmod,
4546 .clk = "l4_div_ck",
4547 .addr = omap44xx_dss_dsi1_addrs,
4548 .user = OCP_USER_MPU,
4549};
4550
4551static struct omap_hwmod_addr_space omap44xx_dss_dsi2_dma_addrs[] = {
4552 {
4553 .pa_start = 0x58005000,
4554 .pa_end = 0x580051ff,
4555 .flags = ADDR_TYPE_RT
4556 },
4557 { }
4558};
4559
4560/* l3_main_2 -> dss_dsi2 */
4561static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_dsi2 = {
4562 .master = &omap44xx_l3_main_2_hwmod,
4563 .slave = &omap44xx_dss_dsi2_hwmod,
4564 .clk = "dss_fck",
4565 .addr = omap44xx_dss_dsi2_dma_addrs,
4566 .user = OCP_USER_SDMA,
4567};
4568
4569static struct omap_hwmod_addr_space omap44xx_dss_dsi2_addrs[] = {
4570 {
4571 .pa_start = 0x48045000,
4572 .pa_end = 0x480451ff,
4573 .flags = ADDR_TYPE_RT
4574 },
4575 { }
4576};
4577
4578/* l4_per -> dss_dsi2 */
4579static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_dsi2 = {
4580 .master = &omap44xx_l4_per_hwmod,
4581 .slave = &omap44xx_dss_dsi2_hwmod,
4582 .clk = "l4_div_ck",
4583 .addr = omap44xx_dss_dsi2_addrs,
4584 .user = OCP_USER_MPU,
4585};
4586
4587static struct omap_hwmod_addr_space omap44xx_dss_hdmi_dma_addrs[] = {
4588 {
4589 .pa_start = 0x58006000,
4590 .pa_end = 0x58006fff,
4591 .flags = ADDR_TYPE_RT
4592 },
4593 { }
4594};
4595
4596/* l3_main_2 -> dss_hdmi */
4597static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_hdmi = {
4598 .master = &omap44xx_l3_main_2_hwmod,
4599 .slave = &omap44xx_dss_hdmi_hwmod,
4600 .clk = "dss_fck",
4601 .addr = omap44xx_dss_hdmi_dma_addrs,
4602 .user = OCP_USER_SDMA,
4603};
4604
4605static struct omap_hwmod_addr_space omap44xx_dss_hdmi_addrs[] = {
4606 {
4607 .pa_start = 0x48046000,
4608 .pa_end = 0x48046fff,
4609 .flags = ADDR_TYPE_RT
4610 },
4611 { }
4612};
4613
4614/* l4_per -> dss_hdmi */
4615static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_hdmi = {
4616 .master = &omap44xx_l4_per_hwmod,
4617 .slave = &omap44xx_dss_hdmi_hwmod,
4618 .clk = "l4_div_ck",
4619 .addr = omap44xx_dss_hdmi_addrs,
4620 .user = OCP_USER_MPU,
4621};
4622
4623static struct omap_hwmod_addr_space omap44xx_dss_rfbi_dma_addrs[] = {
4624 {
4625 .pa_start = 0x58002000,
4626 .pa_end = 0x580020ff,
4627 .flags = ADDR_TYPE_RT
4628 },
4629 { }
4630};
4631
4632/* l3_main_2 -> dss_rfbi */
4633static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_rfbi = {
4634 .master = &omap44xx_l3_main_2_hwmod,
4635 .slave = &omap44xx_dss_rfbi_hwmod,
4636 .clk = "dss_fck",
4637 .addr = omap44xx_dss_rfbi_dma_addrs,
4638 .user = OCP_USER_SDMA,
4639};
4640
4641static struct omap_hwmod_addr_space omap44xx_dss_rfbi_addrs[] = {
4642 {
4643 .pa_start = 0x48042000,
4644 .pa_end = 0x480420ff,
4645 .flags = ADDR_TYPE_RT
4646 },
4647 { }
4648};
4649
4650/* l4_per -> dss_rfbi */
4651static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_rfbi = {
4652 .master = &omap44xx_l4_per_hwmod,
4653 .slave = &omap44xx_dss_rfbi_hwmod,
4654 .clk = "l4_div_ck",
4655 .addr = omap44xx_dss_rfbi_addrs,
4656 .user = OCP_USER_MPU,
4657};
4658
4659static struct omap_hwmod_addr_space omap44xx_dss_venc_dma_addrs[] = {
4660 {
4661 .pa_start = 0x58003000,
4662 .pa_end = 0x580030ff,
4663 .flags = ADDR_TYPE_RT
4664 },
4665 { }
4666};
4667
4668/* l3_main_2 -> dss_venc */
4669static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_venc = {
4670 .master = &omap44xx_l3_main_2_hwmod,
4671 .slave = &omap44xx_dss_venc_hwmod,
4672 .clk = "dss_fck",
4673 .addr = omap44xx_dss_venc_dma_addrs,
4674 .user = OCP_USER_SDMA,
4675};
4676
4677static struct omap_hwmod_addr_space omap44xx_dss_venc_addrs[] = {
4678 {
4679 .pa_start = 0x48043000,
4680 .pa_end = 0x480430ff,
4681 .flags = ADDR_TYPE_RT
4682 },
4683 { }
4684};
4685
4686/* l4_per -> dss_venc */
4687static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_venc = {
4688 .master = &omap44xx_l4_per_hwmod,
4689 .slave = &omap44xx_dss_venc_hwmod,
4690 .clk = "l4_div_ck",
4691 .addr = omap44xx_dss_venc_addrs,
4692 .user = OCP_USER_MPU,
4693};
4694
Paul Walmsley42b9e382012-04-19 13:33:54 -06004695static struct omap_hwmod_addr_space omap44xx_elm_addrs[] = {
4696 {
4697 .pa_start = 0x48078000,
4698 .pa_end = 0x48078fff,
4699 .flags = ADDR_TYPE_RT
4700 },
4701 { }
4702};
4703
4704/* l4_per -> elm */
4705static struct omap_hwmod_ocp_if omap44xx_l4_per__elm = {
4706 .master = &omap44xx_l4_per_hwmod,
4707 .slave = &omap44xx_elm_hwmod,
4708 .clk = "l4_div_ck",
4709 .addr = omap44xx_elm_addrs,
4710 .user = OCP_USER_MPU | OCP_USER_SDMA,
4711};
4712
Paul Walmsleybf30f952012-04-19 13:33:52 -06004713static struct omap_hwmod_addr_space omap44xx_emif1_addrs[] = {
4714 {
4715 .pa_start = 0x4c000000,
4716 .pa_end = 0x4c0000ff,
4717 .flags = ADDR_TYPE_RT
4718 },
4719 { }
4720};
4721
4722/* emif_fw -> emif1 */
4723static struct omap_hwmod_ocp_if omap44xx_emif_fw__emif1 = {
4724 .master = &omap44xx_emif_fw_hwmod,
4725 .slave = &omap44xx_emif1_hwmod,
4726 .clk = "l3_div_ck",
4727 .addr = omap44xx_emif1_addrs,
4728 .user = OCP_USER_MPU | OCP_USER_SDMA,
4729};
4730
4731static struct omap_hwmod_addr_space omap44xx_emif2_addrs[] = {
4732 {
4733 .pa_start = 0x4d000000,
4734 .pa_end = 0x4d0000ff,
4735 .flags = ADDR_TYPE_RT
4736 },
4737 { }
4738};
4739
4740/* emif_fw -> emif2 */
4741static struct omap_hwmod_ocp_if omap44xx_emif_fw__emif2 = {
4742 .master = &omap44xx_emif_fw_hwmod,
4743 .slave = &omap44xx_emif2_hwmod,
4744 .clk = "l3_div_ck",
4745 .addr = omap44xx_emif2_addrs,
4746 .user = OCP_USER_MPU | OCP_USER_SDMA,
4747};
4748
Ming Leib050f682012-04-19 13:33:50 -06004749static struct omap_hwmod_addr_space omap44xx_fdif_addrs[] = {
4750 {
4751 .pa_start = 0x4a10a000,
4752 .pa_end = 0x4a10a1ff,
4753 .flags = ADDR_TYPE_RT
4754 },
4755 { }
4756};
4757
4758/* l4_cfg -> fdif */
4759static struct omap_hwmod_ocp_if omap44xx_l4_cfg__fdif = {
4760 .master = &omap44xx_l4_cfg_hwmod,
4761 .slave = &omap44xx_fdif_hwmod,
4762 .clk = "l4_div_ck",
4763 .addr = omap44xx_fdif_addrs,
4764 .user = OCP_USER_MPU | OCP_USER_SDMA,
4765};
4766
Paul Walmsley844a3b62012-04-19 04:04:33 -06004767static struct omap_hwmod_addr_space omap44xx_gpio1_addrs[] = {
4768 {
4769 .pa_start = 0x4a310000,
4770 .pa_end = 0x4a3101ff,
4771 .flags = ADDR_TYPE_RT
4772 },
4773 { }
4774};
4775
4776/* l4_wkup -> gpio1 */
4777static struct omap_hwmod_ocp_if omap44xx_l4_wkup__gpio1 = {
4778 .master = &omap44xx_l4_wkup_hwmod,
4779 .slave = &omap44xx_gpio1_hwmod,
4780 .clk = "l4_wkup_clk_mux_ck",
4781 .addr = omap44xx_gpio1_addrs,
4782 .user = OCP_USER_MPU | OCP_USER_SDMA,
4783};
4784
4785static struct omap_hwmod_addr_space omap44xx_gpio2_addrs[] = {
4786 {
4787 .pa_start = 0x48055000,
4788 .pa_end = 0x480551ff,
4789 .flags = ADDR_TYPE_RT
4790 },
4791 { }
4792};
4793
4794/* l4_per -> gpio2 */
4795static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio2 = {
4796 .master = &omap44xx_l4_per_hwmod,
4797 .slave = &omap44xx_gpio2_hwmod,
4798 .clk = "l4_div_ck",
4799 .addr = omap44xx_gpio2_addrs,
4800 .user = OCP_USER_MPU | OCP_USER_SDMA,
4801};
4802
4803static struct omap_hwmod_addr_space omap44xx_gpio3_addrs[] = {
4804 {
4805 .pa_start = 0x48057000,
4806 .pa_end = 0x480571ff,
4807 .flags = ADDR_TYPE_RT
4808 },
4809 { }
4810};
4811
4812/* l4_per -> gpio3 */
4813static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio3 = {
4814 .master = &omap44xx_l4_per_hwmod,
4815 .slave = &omap44xx_gpio3_hwmod,
4816 .clk = "l4_div_ck",
4817 .addr = omap44xx_gpio3_addrs,
4818 .user = OCP_USER_MPU | OCP_USER_SDMA,
4819};
4820
4821static struct omap_hwmod_addr_space omap44xx_gpio4_addrs[] = {
4822 {
4823 .pa_start = 0x48059000,
4824 .pa_end = 0x480591ff,
4825 .flags = ADDR_TYPE_RT
4826 },
4827 { }
4828};
4829
4830/* l4_per -> gpio4 */
4831static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio4 = {
4832 .master = &omap44xx_l4_per_hwmod,
4833 .slave = &omap44xx_gpio4_hwmod,
4834 .clk = "l4_div_ck",
4835 .addr = omap44xx_gpio4_addrs,
4836 .user = OCP_USER_MPU | OCP_USER_SDMA,
4837};
4838
4839static struct omap_hwmod_addr_space omap44xx_gpio5_addrs[] = {
4840 {
4841 .pa_start = 0x4805b000,
4842 .pa_end = 0x4805b1ff,
4843 .flags = ADDR_TYPE_RT
4844 },
4845 { }
4846};
4847
4848/* l4_per -> gpio5 */
4849static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio5 = {
4850 .master = &omap44xx_l4_per_hwmod,
4851 .slave = &omap44xx_gpio5_hwmod,
4852 .clk = "l4_div_ck",
4853 .addr = omap44xx_gpio5_addrs,
4854 .user = OCP_USER_MPU | OCP_USER_SDMA,
4855};
4856
4857static struct omap_hwmod_addr_space omap44xx_gpio6_addrs[] = {
4858 {
4859 .pa_start = 0x4805d000,
4860 .pa_end = 0x4805d1ff,
4861 .flags = ADDR_TYPE_RT
4862 },
4863 { }
4864};
4865
4866/* l4_per -> gpio6 */
4867static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio6 = {
4868 .master = &omap44xx_l4_per_hwmod,
4869 .slave = &omap44xx_gpio6_hwmod,
4870 .clk = "l4_div_ck",
4871 .addr = omap44xx_gpio6_addrs,
4872 .user = OCP_USER_MPU | OCP_USER_SDMA,
4873};
4874
Benoît Coussoneb42b5d2012-04-19 13:33:51 -06004875static struct omap_hwmod_addr_space omap44xx_gpmc_addrs[] = {
4876 {
4877 .pa_start = 0x50000000,
4878 .pa_end = 0x500003ff,
4879 .flags = ADDR_TYPE_RT
4880 },
4881 { }
4882};
4883
4884/* l3_main_2 -> gpmc */
4885static struct omap_hwmod_ocp_if omap44xx_l3_main_2__gpmc = {
4886 .master = &omap44xx_l3_main_2_hwmod,
4887 .slave = &omap44xx_gpmc_hwmod,
4888 .clk = "l3_div_ck",
4889 .addr = omap44xx_gpmc_addrs,
4890 .user = OCP_USER_MPU | OCP_USER_SDMA,
4891};
4892
Paul Walmsley9def3902012-04-19 13:33:53 -06004893static struct omap_hwmod_addr_space omap44xx_gpu_addrs[] = {
4894 {
4895 .pa_start = 0x56000000,
4896 .pa_end = 0x5600ffff,
4897 .flags = ADDR_TYPE_RT
4898 },
4899 { }
4900};
4901
4902/* l3_main_2 -> gpu */
4903static struct omap_hwmod_ocp_if omap44xx_l3_main_2__gpu = {
4904 .master = &omap44xx_l3_main_2_hwmod,
4905 .slave = &omap44xx_gpu_hwmod,
4906 .clk = "l3_div_ck",
4907 .addr = omap44xx_gpu_addrs,
4908 .user = OCP_USER_MPU | OCP_USER_SDMA,
4909};
4910
Paul Walmsleya091c082012-04-19 13:33:50 -06004911static struct omap_hwmod_addr_space omap44xx_hdq1w_addrs[] = {
4912 {
4913 .pa_start = 0x480b2000,
4914 .pa_end = 0x480b201f,
4915 .flags = ADDR_TYPE_RT
4916 },
4917 { }
4918};
4919
4920/* l4_per -> hdq1w */
4921static struct omap_hwmod_ocp_if omap44xx_l4_per__hdq1w = {
4922 .master = &omap44xx_l4_per_hwmod,
4923 .slave = &omap44xx_hdq1w_hwmod,
4924 .clk = "l4_div_ck",
4925 .addr = omap44xx_hdq1w_addrs,
4926 .user = OCP_USER_MPU | OCP_USER_SDMA,
4927};
4928
Paul Walmsley844a3b62012-04-19 04:04:33 -06004929static struct omap_hwmod_addr_space omap44xx_hsi_addrs[] = {
4930 {
4931 .pa_start = 0x4a058000,
4932 .pa_end = 0x4a05bfff,
4933 .flags = ADDR_TYPE_RT
4934 },
4935 { }
4936};
4937
4938/* l4_cfg -> hsi */
4939static struct omap_hwmod_ocp_if omap44xx_l4_cfg__hsi = {
4940 .master = &omap44xx_l4_cfg_hwmod,
4941 .slave = &omap44xx_hsi_hwmod,
4942 .clk = "l4_div_ck",
4943 .addr = omap44xx_hsi_addrs,
4944 .user = OCP_USER_MPU | OCP_USER_SDMA,
4945};
4946
4947static struct omap_hwmod_addr_space omap44xx_i2c1_addrs[] = {
4948 {
4949 .pa_start = 0x48070000,
4950 .pa_end = 0x480700ff,
4951 .flags = ADDR_TYPE_RT
4952 },
4953 { }
4954};
4955
4956/* l4_per -> i2c1 */
4957static struct omap_hwmod_ocp_if omap44xx_l4_per__i2c1 = {
4958 .master = &omap44xx_l4_per_hwmod,
4959 .slave = &omap44xx_i2c1_hwmod,
4960 .clk = "l4_div_ck",
4961 .addr = omap44xx_i2c1_addrs,
4962 .user = OCP_USER_MPU | OCP_USER_SDMA,
4963};
4964
4965static struct omap_hwmod_addr_space omap44xx_i2c2_addrs[] = {
4966 {
4967 .pa_start = 0x48072000,
4968 .pa_end = 0x480720ff,
4969 .flags = ADDR_TYPE_RT
4970 },
4971 { }
4972};
4973
4974/* l4_per -> i2c2 */
4975static struct omap_hwmod_ocp_if omap44xx_l4_per__i2c2 = {
4976 .master = &omap44xx_l4_per_hwmod,
4977 .slave = &omap44xx_i2c2_hwmod,
4978 .clk = "l4_div_ck",
4979 .addr = omap44xx_i2c2_addrs,
4980 .user = OCP_USER_MPU | OCP_USER_SDMA,
4981};
4982
4983static struct omap_hwmod_addr_space omap44xx_i2c3_addrs[] = {
4984 {
4985 .pa_start = 0x48060000,
4986 .pa_end = 0x480600ff,
4987 .flags = ADDR_TYPE_RT
4988 },
4989 { }
4990};
4991
4992/* l4_per -> i2c3 */
4993static struct omap_hwmod_ocp_if omap44xx_l4_per__i2c3 = {
4994 .master = &omap44xx_l4_per_hwmod,
4995 .slave = &omap44xx_i2c3_hwmod,
4996 .clk = "l4_div_ck",
4997 .addr = omap44xx_i2c3_addrs,
4998 .user = OCP_USER_MPU | OCP_USER_SDMA,
4999};
5000
5001static struct omap_hwmod_addr_space omap44xx_i2c4_addrs[] = {
5002 {
5003 .pa_start = 0x48350000,
5004 .pa_end = 0x483500ff,
5005 .flags = ADDR_TYPE_RT
5006 },
5007 { }
5008};
5009
5010/* l4_per -> i2c4 */
5011static struct omap_hwmod_ocp_if omap44xx_l4_per__i2c4 = {
5012 .master = &omap44xx_l4_per_hwmod,
5013 .slave = &omap44xx_i2c4_hwmod,
5014 .clk = "l4_div_ck",
5015 .addr = omap44xx_i2c4_addrs,
5016 .user = OCP_USER_MPU | OCP_USER_SDMA,
5017};
5018
5019/* l3_main_2 -> ipu */
5020static struct omap_hwmod_ocp_if omap44xx_l3_main_2__ipu = {
5021 .master = &omap44xx_l3_main_2_hwmod,
5022 .slave = &omap44xx_ipu_hwmod,
5023 .clk = "l3_div_ck",
5024 .user = OCP_USER_MPU | OCP_USER_SDMA,
5025};
5026
5027static struct omap_hwmod_addr_space omap44xx_iss_addrs[] = {
5028 {
5029 .pa_start = 0x52000000,
5030 .pa_end = 0x520000ff,
5031 .flags = ADDR_TYPE_RT
5032 },
5033 { }
5034};
5035
5036/* l3_main_2 -> iss */
5037static struct omap_hwmod_ocp_if omap44xx_l3_main_2__iss = {
5038 .master = &omap44xx_l3_main_2_hwmod,
5039 .slave = &omap44xx_iss_hwmod,
5040 .clk = "l3_div_ck",
5041 .addr = omap44xx_iss_addrs,
5042 .user = OCP_USER_MPU | OCP_USER_SDMA,
5043};
5044
Paul Walmsley42b9e382012-04-19 13:33:54 -06005045/* iva -> sl2if */
Tero Kristob3601242012-09-03 11:50:53 -06005046static struct omap_hwmod_ocp_if __maybe_unused omap44xx_iva__sl2if = {
Paul Walmsley42b9e382012-04-19 13:33:54 -06005047 .master = &omap44xx_iva_hwmod,
5048 .slave = &omap44xx_sl2if_hwmod,
5049 .clk = "dpll_iva_m5x2_ck",
5050 .user = OCP_USER_IVA,
5051};
5052
Paul Walmsley844a3b62012-04-19 04:04:33 -06005053static struct omap_hwmod_addr_space omap44xx_iva_addrs[] = {
5054 {
5055 .pa_start = 0x5a000000,
5056 .pa_end = 0x5a07ffff,
5057 .flags = ADDR_TYPE_RT
5058 },
5059 { }
5060};
5061
5062/* l3_main_2 -> iva */
5063static struct omap_hwmod_ocp_if omap44xx_l3_main_2__iva = {
5064 .master = &omap44xx_l3_main_2_hwmod,
5065 .slave = &omap44xx_iva_hwmod,
5066 .clk = "l3_div_ck",
5067 .addr = omap44xx_iva_addrs,
5068 .user = OCP_USER_MPU,
5069};
5070
5071static struct omap_hwmod_addr_space omap44xx_kbd_addrs[] = {
5072 {
5073 .pa_start = 0x4a31c000,
5074 .pa_end = 0x4a31c07f,
5075 .flags = ADDR_TYPE_RT
5076 },
5077 { }
5078};
5079
5080/* l4_wkup -> kbd */
5081static struct omap_hwmod_ocp_if omap44xx_l4_wkup__kbd = {
5082 .master = &omap44xx_l4_wkup_hwmod,
5083 .slave = &omap44xx_kbd_hwmod,
5084 .clk = "l4_wkup_clk_mux_ck",
5085 .addr = omap44xx_kbd_addrs,
5086 .user = OCP_USER_MPU | OCP_USER_SDMA,
5087};
5088
5089static struct omap_hwmod_addr_space omap44xx_mailbox_addrs[] = {
5090 {
5091 .pa_start = 0x4a0f4000,
5092 .pa_end = 0x4a0f41ff,
5093 .flags = ADDR_TYPE_RT
5094 },
5095 { }
5096};
5097
5098/* l4_cfg -> mailbox */
5099static struct omap_hwmod_ocp_if omap44xx_l4_cfg__mailbox = {
5100 .master = &omap44xx_l4_cfg_hwmod,
5101 .slave = &omap44xx_mailbox_hwmod,
5102 .clk = "l4_div_ck",
5103 .addr = omap44xx_mailbox_addrs,
5104 .user = OCP_USER_MPU | OCP_USER_SDMA,
5105};
5106
Benoît Cousson896d4e92012-04-19 13:33:54 -06005107static struct omap_hwmod_addr_space omap44xx_mcasp_addrs[] = {
5108 {
5109 .pa_start = 0x40128000,
5110 .pa_end = 0x401283ff,
5111 .flags = ADDR_TYPE_RT
5112 },
5113 { }
5114};
5115
5116/* l4_abe -> mcasp */
5117static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcasp = {
5118 .master = &omap44xx_l4_abe_hwmod,
5119 .slave = &omap44xx_mcasp_hwmod,
5120 .clk = "ocp_abe_iclk",
5121 .addr = omap44xx_mcasp_addrs,
5122 .user = OCP_USER_MPU,
5123};
5124
5125static struct omap_hwmod_addr_space omap44xx_mcasp_dma_addrs[] = {
5126 {
5127 .pa_start = 0x49028000,
5128 .pa_end = 0x490283ff,
5129 .flags = ADDR_TYPE_RT
5130 },
5131 { }
5132};
5133
5134/* l4_abe -> mcasp (dma) */
5135static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcasp_dma = {
5136 .master = &omap44xx_l4_abe_hwmod,
5137 .slave = &omap44xx_mcasp_hwmod,
5138 .clk = "ocp_abe_iclk",
5139 .addr = omap44xx_mcasp_dma_addrs,
5140 .user = OCP_USER_SDMA,
5141};
5142
Paul Walmsley844a3b62012-04-19 04:04:33 -06005143static struct omap_hwmod_addr_space omap44xx_mcbsp1_addrs[] = {
5144 {
5145 .name = "mpu",
5146 .pa_start = 0x40122000,
5147 .pa_end = 0x401220ff,
5148 .flags = ADDR_TYPE_RT
5149 },
5150 { }
5151};
5152
5153/* l4_abe -> mcbsp1 */
5154static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp1 = {
5155 .master = &omap44xx_l4_abe_hwmod,
5156 .slave = &omap44xx_mcbsp1_hwmod,
5157 .clk = "ocp_abe_iclk",
5158 .addr = omap44xx_mcbsp1_addrs,
5159 .user = OCP_USER_MPU,
5160};
5161
5162static struct omap_hwmod_addr_space omap44xx_mcbsp1_dma_addrs[] = {
5163 {
5164 .name = "dma",
5165 .pa_start = 0x49022000,
5166 .pa_end = 0x490220ff,
5167 .flags = ADDR_TYPE_RT
5168 },
5169 { }
5170};
5171
5172/* l4_abe -> mcbsp1 (dma) */
5173static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp1_dma = {
5174 .master = &omap44xx_l4_abe_hwmod,
5175 .slave = &omap44xx_mcbsp1_hwmod,
5176 .clk = "ocp_abe_iclk",
5177 .addr = omap44xx_mcbsp1_dma_addrs,
5178 .user = OCP_USER_SDMA,
5179};
5180
5181static struct omap_hwmod_addr_space omap44xx_mcbsp2_addrs[] = {
5182 {
5183 .name = "mpu",
5184 .pa_start = 0x40124000,
5185 .pa_end = 0x401240ff,
5186 .flags = ADDR_TYPE_RT
5187 },
5188 { }
5189};
5190
5191/* l4_abe -> mcbsp2 */
5192static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp2 = {
5193 .master = &omap44xx_l4_abe_hwmod,
5194 .slave = &omap44xx_mcbsp2_hwmod,
5195 .clk = "ocp_abe_iclk",
5196 .addr = omap44xx_mcbsp2_addrs,
5197 .user = OCP_USER_MPU,
5198};
5199
5200static struct omap_hwmod_addr_space omap44xx_mcbsp2_dma_addrs[] = {
5201 {
5202 .name = "dma",
5203 .pa_start = 0x49024000,
5204 .pa_end = 0x490240ff,
5205 .flags = ADDR_TYPE_RT
5206 },
5207 { }
5208};
5209
5210/* l4_abe -> mcbsp2 (dma) */
5211static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp2_dma = {
5212 .master = &omap44xx_l4_abe_hwmod,
5213 .slave = &omap44xx_mcbsp2_hwmod,
5214 .clk = "ocp_abe_iclk",
5215 .addr = omap44xx_mcbsp2_dma_addrs,
5216 .user = OCP_USER_SDMA,
5217};
5218
5219static struct omap_hwmod_addr_space omap44xx_mcbsp3_addrs[] = {
5220 {
5221 .name = "mpu",
5222 .pa_start = 0x40126000,
5223 .pa_end = 0x401260ff,
5224 .flags = ADDR_TYPE_RT
5225 },
5226 { }
5227};
5228
5229/* l4_abe -> mcbsp3 */
5230static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp3 = {
5231 .master = &omap44xx_l4_abe_hwmod,
5232 .slave = &omap44xx_mcbsp3_hwmod,
5233 .clk = "ocp_abe_iclk",
5234 .addr = omap44xx_mcbsp3_addrs,
5235 .user = OCP_USER_MPU,
5236};
5237
5238static struct omap_hwmod_addr_space omap44xx_mcbsp3_dma_addrs[] = {
5239 {
5240 .name = "dma",
5241 .pa_start = 0x49026000,
5242 .pa_end = 0x490260ff,
5243 .flags = ADDR_TYPE_RT
5244 },
5245 { }
5246};
5247
5248/* l4_abe -> mcbsp3 (dma) */
5249static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp3_dma = {
5250 .master = &omap44xx_l4_abe_hwmod,
5251 .slave = &omap44xx_mcbsp3_hwmod,
5252 .clk = "ocp_abe_iclk",
5253 .addr = omap44xx_mcbsp3_dma_addrs,
5254 .user = OCP_USER_SDMA,
5255};
5256
5257static struct omap_hwmod_addr_space omap44xx_mcbsp4_addrs[] = {
5258 {
5259 .pa_start = 0x48096000,
5260 .pa_end = 0x480960ff,
5261 .flags = ADDR_TYPE_RT
5262 },
5263 { }
5264};
5265
5266/* l4_per -> mcbsp4 */
5267static struct omap_hwmod_ocp_if omap44xx_l4_per__mcbsp4 = {
5268 .master = &omap44xx_l4_per_hwmod,
5269 .slave = &omap44xx_mcbsp4_hwmod,
5270 .clk = "l4_div_ck",
5271 .addr = omap44xx_mcbsp4_addrs,
5272 .user = OCP_USER_MPU | OCP_USER_SDMA,
5273};
5274
5275static struct omap_hwmod_addr_space omap44xx_mcpdm_addrs[] = {
5276 {
Peter Ujfalusiacd08ec2012-09-14 15:05:53 +03005277 .name = "mpu",
Paul Walmsley844a3b62012-04-19 04:04:33 -06005278 .pa_start = 0x40132000,
5279 .pa_end = 0x4013207f,
5280 .flags = ADDR_TYPE_RT
5281 },
5282 { }
5283};
5284
5285/* l4_abe -> mcpdm */
5286static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcpdm = {
5287 .master = &omap44xx_l4_abe_hwmod,
5288 .slave = &omap44xx_mcpdm_hwmod,
5289 .clk = "ocp_abe_iclk",
5290 .addr = omap44xx_mcpdm_addrs,
5291 .user = OCP_USER_MPU,
5292};
5293
5294static struct omap_hwmod_addr_space omap44xx_mcpdm_dma_addrs[] = {
5295 {
Peter Ujfalusiacd08ec2012-09-14 15:05:53 +03005296 .name = "dma",
Paul Walmsley844a3b62012-04-19 04:04:33 -06005297 .pa_start = 0x49032000,
5298 .pa_end = 0x4903207f,
5299 .flags = ADDR_TYPE_RT
5300 },
5301 { }
5302};
5303
5304/* l4_abe -> mcpdm (dma) */
5305static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcpdm_dma = {
5306 .master = &omap44xx_l4_abe_hwmod,
5307 .slave = &omap44xx_mcpdm_hwmod,
5308 .clk = "ocp_abe_iclk",
5309 .addr = omap44xx_mcpdm_dma_addrs,
5310 .user = OCP_USER_SDMA,
5311};
5312
5313static struct omap_hwmod_addr_space omap44xx_mcspi1_addrs[] = {
5314 {
5315 .pa_start = 0x48098000,
5316 .pa_end = 0x480981ff,
5317 .flags = ADDR_TYPE_RT
5318 },
5319 { }
5320};
5321
5322/* l4_per -> mcspi1 */
5323static struct omap_hwmod_ocp_if omap44xx_l4_per__mcspi1 = {
5324 .master = &omap44xx_l4_per_hwmod,
5325 .slave = &omap44xx_mcspi1_hwmod,
5326 .clk = "l4_div_ck",
5327 .addr = omap44xx_mcspi1_addrs,
5328 .user = OCP_USER_MPU | OCP_USER_SDMA,
5329};
5330
5331static struct omap_hwmod_addr_space omap44xx_mcspi2_addrs[] = {
5332 {
5333 .pa_start = 0x4809a000,
5334 .pa_end = 0x4809a1ff,
5335 .flags = ADDR_TYPE_RT
5336 },
5337 { }
5338};
5339
5340/* l4_per -> mcspi2 */
5341static struct omap_hwmod_ocp_if omap44xx_l4_per__mcspi2 = {
5342 .master = &omap44xx_l4_per_hwmod,
5343 .slave = &omap44xx_mcspi2_hwmod,
5344 .clk = "l4_div_ck",
5345 .addr = omap44xx_mcspi2_addrs,
5346 .user = OCP_USER_MPU | OCP_USER_SDMA,
5347};
5348
5349static struct omap_hwmod_addr_space omap44xx_mcspi3_addrs[] = {
5350 {
5351 .pa_start = 0x480b8000,
5352 .pa_end = 0x480b81ff,
5353 .flags = ADDR_TYPE_RT
5354 },
5355 { }
5356};
5357
5358/* l4_per -> mcspi3 */
5359static struct omap_hwmod_ocp_if omap44xx_l4_per__mcspi3 = {
5360 .master = &omap44xx_l4_per_hwmod,
5361 .slave = &omap44xx_mcspi3_hwmod,
5362 .clk = "l4_div_ck",
5363 .addr = omap44xx_mcspi3_addrs,
5364 .user = OCP_USER_MPU | OCP_USER_SDMA,
5365};
5366
5367static struct omap_hwmod_addr_space omap44xx_mcspi4_addrs[] = {
5368 {
5369 .pa_start = 0x480ba000,
5370 .pa_end = 0x480ba1ff,
5371 .flags = ADDR_TYPE_RT
5372 },
5373 { }
5374};
5375
5376/* l4_per -> mcspi4 */
5377static struct omap_hwmod_ocp_if omap44xx_l4_per__mcspi4 = {
5378 .master = &omap44xx_l4_per_hwmod,
5379 .slave = &omap44xx_mcspi4_hwmod,
5380 .clk = "l4_div_ck",
5381 .addr = omap44xx_mcspi4_addrs,
5382 .user = OCP_USER_MPU | OCP_USER_SDMA,
5383};
5384
5385static struct omap_hwmod_addr_space omap44xx_mmc1_addrs[] = {
5386 {
5387 .pa_start = 0x4809c000,
5388 .pa_end = 0x4809c3ff,
5389 .flags = ADDR_TYPE_RT
5390 },
5391 { }
5392};
5393
5394/* l4_per -> mmc1 */
5395static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc1 = {
5396 .master = &omap44xx_l4_per_hwmod,
5397 .slave = &omap44xx_mmc1_hwmod,
5398 .clk = "l4_div_ck",
5399 .addr = omap44xx_mmc1_addrs,
5400 .user = OCP_USER_MPU | OCP_USER_SDMA,
5401};
5402
5403static struct omap_hwmod_addr_space omap44xx_mmc2_addrs[] = {
5404 {
5405 .pa_start = 0x480b4000,
5406 .pa_end = 0x480b43ff,
5407 .flags = ADDR_TYPE_RT
5408 },
5409 { }
5410};
5411
5412/* l4_per -> mmc2 */
5413static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc2 = {
5414 .master = &omap44xx_l4_per_hwmod,
5415 .slave = &omap44xx_mmc2_hwmod,
5416 .clk = "l4_div_ck",
5417 .addr = omap44xx_mmc2_addrs,
5418 .user = OCP_USER_MPU | OCP_USER_SDMA,
5419};
5420
5421static struct omap_hwmod_addr_space omap44xx_mmc3_addrs[] = {
5422 {
5423 .pa_start = 0x480ad000,
5424 .pa_end = 0x480ad3ff,
5425 .flags = ADDR_TYPE_RT
5426 },
5427 { }
5428};
5429
5430/* l4_per -> mmc3 */
5431static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc3 = {
5432 .master = &omap44xx_l4_per_hwmod,
5433 .slave = &omap44xx_mmc3_hwmod,
5434 .clk = "l4_div_ck",
5435 .addr = omap44xx_mmc3_addrs,
5436 .user = OCP_USER_MPU | OCP_USER_SDMA,
5437};
5438
5439static struct omap_hwmod_addr_space omap44xx_mmc4_addrs[] = {
5440 {
5441 .pa_start = 0x480d1000,
5442 .pa_end = 0x480d13ff,
5443 .flags = ADDR_TYPE_RT
5444 },
5445 { }
5446};
5447
5448/* l4_per -> mmc4 */
5449static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc4 = {
5450 .master = &omap44xx_l4_per_hwmod,
5451 .slave = &omap44xx_mmc4_hwmod,
5452 .clk = "l4_div_ck",
5453 .addr = omap44xx_mmc4_addrs,
5454 .user = OCP_USER_MPU | OCP_USER_SDMA,
5455};
5456
5457static struct omap_hwmod_addr_space omap44xx_mmc5_addrs[] = {
5458 {
5459 .pa_start = 0x480d5000,
5460 .pa_end = 0x480d53ff,
5461 .flags = ADDR_TYPE_RT
5462 },
5463 { }
5464};
5465
5466/* l4_per -> mmc5 */
5467static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc5 = {
5468 .master = &omap44xx_l4_per_hwmod,
5469 .slave = &omap44xx_mmc5_hwmod,
5470 .clk = "l4_div_ck",
5471 .addr = omap44xx_mmc5_addrs,
5472 .user = OCP_USER_MPU | OCP_USER_SDMA,
5473};
5474
Paul Walmsleye17f18c2012-04-19 13:33:56 -06005475/* l3_main_2 -> ocmc_ram */
5476static struct omap_hwmod_ocp_if omap44xx_l3_main_2__ocmc_ram = {
5477 .master = &omap44xx_l3_main_2_hwmod,
5478 .slave = &omap44xx_ocmc_ram_hwmod,
5479 .clk = "l3_div_ck",
5480 .user = OCP_USER_MPU | OCP_USER_SDMA,
5481};
5482
Benoit Cousson33c976e2012-09-23 17:28:21 -06005483static struct omap_hwmod_addr_space omap44xx_ocp2scp_usb_phy_addrs[] = {
5484 {
5485 .pa_start = 0x4a0ad000,
5486 .pa_end = 0x4a0ad01f,
5487 .flags = ADDR_TYPE_RT
5488 },
5489 { }
5490};
5491
Benoît Cousson0c668872012-04-19 13:33:55 -06005492/* l4_cfg -> ocp2scp_usb_phy */
5493static struct omap_hwmod_ocp_if omap44xx_l4_cfg__ocp2scp_usb_phy = {
5494 .master = &omap44xx_l4_cfg_hwmod,
5495 .slave = &omap44xx_ocp2scp_usb_phy_hwmod,
5496 .clk = "l4_div_ck",
Benoit Cousson33c976e2012-09-23 17:28:21 -06005497 .addr = omap44xx_ocp2scp_usb_phy_addrs,
Benoît Cousson0c668872012-04-19 13:33:55 -06005498 .user = OCP_USER_MPU | OCP_USER_SDMA,
5499};
5500
Paul Walmsley794b4802012-04-19 13:33:58 -06005501static struct omap_hwmod_addr_space omap44xx_prcm_mpu_addrs[] = {
5502 {
5503 .pa_start = 0x48243000,
5504 .pa_end = 0x48243fff,
5505 .flags = ADDR_TYPE_RT
5506 },
5507 { }
5508};
5509
5510/* mpu_private -> prcm_mpu */
5511static struct omap_hwmod_ocp_if omap44xx_mpu_private__prcm_mpu = {
5512 .master = &omap44xx_mpu_private_hwmod,
5513 .slave = &omap44xx_prcm_mpu_hwmod,
5514 .clk = "l3_div_ck",
5515 .addr = omap44xx_prcm_mpu_addrs,
5516 .user = OCP_USER_MPU | OCP_USER_SDMA,
5517};
5518
5519static struct omap_hwmod_addr_space omap44xx_cm_core_aon_addrs[] = {
5520 {
5521 .pa_start = 0x4a004000,
5522 .pa_end = 0x4a004fff,
5523 .flags = ADDR_TYPE_RT
5524 },
5525 { }
5526};
5527
5528/* l4_wkup -> cm_core_aon */
5529static struct omap_hwmod_ocp_if omap44xx_l4_wkup__cm_core_aon = {
5530 .master = &omap44xx_l4_wkup_hwmod,
5531 .slave = &omap44xx_cm_core_aon_hwmod,
5532 .clk = "l4_wkup_clk_mux_ck",
5533 .addr = omap44xx_cm_core_aon_addrs,
5534 .user = OCP_USER_MPU | OCP_USER_SDMA,
5535};
5536
5537static struct omap_hwmod_addr_space omap44xx_cm_core_addrs[] = {
5538 {
5539 .pa_start = 0x4a008000,
5540 .pa_end = 0x4a009fff,
5541 .flags = ADDR_TYPE_RT
5542 },
5543 { }
5544};
5545
5546/* l4_cfg -> cm_core */
5547static struct omap_hwmod_ocp_if omap44xx_l4_cfg__cm_core = {
5548 .master = &omap44xx_l4_cfg_hwmod,
5549 .slave = &omap44xx_cm_core_hwmod,
5550 .clk = "l4_div_ck",
5551 .addr = omap44xx_cm_core_addrs,
5552 .user = OCP_USER_MPU | OCP_USER_SDMA,
5553};
5554
5555static struct omap_hwmod_addr_space omap44xx_prm_addrs[] = {
5556 {
5557 .pa_start = 0x4a306000,
5558 .pa_end = 0x4a307fff,
5559 .flags = ADDR_TYPE_RT
5560 },
5561 { }
5562};
5563
5564/* l4_wkup -> prm */
5565static struct omap_hwmod_ocp_if omap44xx_l4_wkup__prm = {
5566 .master = &omap44xx_l4_wkup_hwmod,
5567 .slave = &omap44xx_prm_hwmod,
5568 .clk = "l4_wkup_clk_mux_ck",
5569 .addr = omap44xx_prm_addrs,
5570 .user = OCP_USER_MPU | OCP_USER_SDMA,
5571};
5572
5573static struct omap_hwmod_addr_space omap44xx_scrm_addrs[] = {
5574 {
5575 .pa_start = 0x4a30a000,
5576 .pa_end = 0x4a30a7ff,
5577 .flags = ADDR_TYPE_RT
5578 },
5579 { }
5580};
5581
5582/* l4_wkup -> scrm */
5583static struct omap_hwmod_ocp_if omap44xx_l4_wkup__scrm = {
5584 .master = &omap44xx_l4_wkup_hwmod,
5585 .slave = &omap44xx_scrm_hwmod,
5586 .clk = "l4_wkup_clk_mux_ck",
5587 .addr = omap44xx_scrm_addrs,
5588 .user = OCP_USER_MPU | OCP_USER_SDMA,
5589};
5590
Paul Walmsley42b9e382012-04-19 13:33:54 -06005591/* l3_main_2 -> sl2if */
Tero Kristob3601242012-09-03 11:50:53 -06005592static struct omap_hwmod_ocp_if __maybe_unused omap44xx_l3_main_2__sl2if = {
Paul Walmsley42b9e382012-04-19 13:33:54 -06005593 .master = &omap44xx_l3_main_2_hwmod,
5594 .slave = &omap44xx_sl2if_hwmod,
5595 .clk = "l3_div_ck",
5596 .user = OCP_USER_MPU | OCP_USER_SDMA,
5597};
5598
Benoît Cousson1e3b5e592012-04-19 13:33:53 -06005599static struct omap_hwmod_addr_space omap44xx_slimbus1_addrs[] = {
5600 {
5601 .pa_start = 0x4012c000,
5602 .pa_end = 0x4012c3ff,
5603 .flags = ADDR_TYPE_RT
5604 },
5605 { }
5606};
5607
5608/* l4_abe -> slimbus1 */
5609static struct omap_hwmod_ocp_if omap44xx_l4_abe__slimbus1 = {
5610 .master = &omap44xx_l4_abe_hwmod,
5611 .slave = &omap44xx_slimbus1_hwmod,
5612 .clk = "ocp_abe_iclk",
5613 .addr = omap44xx_slimbus1_addrs,
5614 .user = OCP_USER_MPU,
5615};
5616
5617static struct omap_hwmod_addr_space omap44xx_slimbus1_dma_addrs[] = {
5618 {
5619 .pa_start = 0x4902c000,
5620 .pa_end = 0x4902c3ff,
5621 .flags = ADDR_TYPE_RT
5622 },
5623 { }
5624};
5625
5626/* l4_abe -> slimbus1 (dma) */
5627static struct omap_hwmod_ocp_if omap44xx_l4_abe__slimbus1_dma = {
5628 .master = &omap44xx_l4_abe_hwmod,
5629 .slave = &omap44xx_slimbus1_hwmod,
5630 .clk = "ocp_abe_iclk",
5631 .addr = omap44xx_slimbus1_dma_addrs,
5632 .user = OCP_USER_SDMA,
5633};
5634
5635static struct omap_hwmod_addr_space omap44xx_slimbus2_addrs[] = {
5636 {
5637 .pa_start = 0x48076000,
5638 .pa_end = 0x480763ff,
5639 .flags = ADDR_TYPE_RT
5640 },
5641 { }
5642};
5643
5644/* l4_per -> slimbus2 */
5645static struct omap_hwmod_ocp_if omap44xx_l4_per__slimbus2 = {
5646 .master = &omap44xx_l4_per_hwmod,
5647 .slave = &omap44xx_slimbus2_hwmod,
5648 .clk = "l4_div_ck",
5649 .addr = omap44xx_slimbus2_addrs,
5650 .user = OCP_USER_MPU | OCP_USER_SDMA,
5651};
5652
Paul Walmsley844a3b62012-04-19 04:04:33 -06005653static struct omap_hwmod_addr_space omap44xx_smartreflex_core_addrs[] = {
5654 {
5655 .pa_start = 0x4a0dd000,
5656 .pa_end = 0x4a0dd03f,
5657 .flags = ADDR_TYPE_RT
5658 },
5659 { }
5660};
5661
5662/* l4_cfg -> smartreflex_core */
5663static struct omap_hwmod_ocp_if omap44xx_l4_cfg__smartreflex_core = {
5664 .master = &omap44xx_l4_cfg_hwmod,
5665 .slave = &omap44xx_smartreflex_core_hwmod,
5666 .clk = "l4_div_ck",
5667 .addr = omap44xx_smartreflex_core_addrs,
5668 .user = OCP_USER_MPU | OCP_USER_SDMA,
5669};
5670
5671static struct omap_hwmod_addr_space omap44xx_smartreflex_iva_addrs[] = {
5672 {
5673 .pa_start = 0x4a0db000,
5674 .pa_end = 0x4a0db03f,
5675 .flags = ADDR_TYPE_RT
5676 },
5677 { }
5678};
5679
5680/* l4_cfg -> smartreflex_iva */
5681static struct omap_hwmod_ocp_if omap44xx_l4_cfg__smartreflex_iva = {
5682 .master = &omap44xx_l4_cfg_hwmod,
5683 .slave = &omap44xx_smartreflex_iva_hwmod,
5684 .clk = "l4_div_ck",
5685 .addr = omap44xx_smartreflex_iva_addrs,
5686 .user = OCP_USER_MPU | OCP_USER_SDMA,
5687};
5688
5689static struct omap_hwmod_addr_space omap44xx_smartreflex_mpu_addrs[] = {
5690 {
5691 .pa_start = 0x4a0d9000,
5692 .pa_end = 0x4a0d903f,
5693 .flags = ADDR_TYPE_RT
5694 },
5695 { }
5696};
5697
5698/* l4_cfg -> smartreflex_mpu */
5699static struct omap_hwmod_ocp_if omap44xx_l4_cfg__smartreflex_mpu = {
5700 .master = &omap44xx_l4_cfg_hwmod,
5701 .slave = &omap44xx_smartreflex_mpu_hwmod,
5702 .clk = "l4_div_ck",
5703 .addr = omap44xx_smartreflex_mpu_addrs,
5704 .user = OCP_USER_MPU | OCP_USER_SDMA,
5705};
5706
5707static struct omap_hwmod_addr_space omap44xx_spinlock_addrs[] = {
5708 {
5709 .pa_start = 0x4a0f6000,
5710 .pa_end = 0x4a0f6fff,
5711 .flags = ADDR_TYPE_RT
5712 },
5713 { }
5714};
5715
5716/* l4_cfg -> spinlock */
5717static struct omap_hwmod_ocp_if omap44xx_l4_cfg__spinlock = {
5718 .master = &omap44xx_l4_cfg_hwmod,
5719 .slave = &omap44xx_spinlock_hwmod,
5720 .clk = "l4_div_ck",
5721 .addr = omap44xx_spinlock_addrs,
5722 .user = OCP_USER_MPU | OCP_USER_SDMA,
5723};
5724
5725static struct omap_hwmod_addr_space omap44xx_timer1_addrs[] = {
5726 {
5727 .pa_start = 0x4a318000,
5728 .pa_end = 0x4a31807f,
5729 .flags = ADDR_TYPE_RT
5730 },
5731 { }
5732};
5733
5734/* l4_wkup -> timer1 */
5735static struct omap_hwmod_ocp_if omap44xx_l4_wkup__timer1 = {
5736 .master = &omap44xx_l4_wkup_hwmod,
5737 .slave = &omap44xx_timer1_hwmod,
5738 .clk = "l4_wkup_clk_mux_ck",
5739 .addr = omap44xx_timer1_addrs,
5740 .user = OCP_USER_MPU | OCP_USER_SDMA,
5741};
5742
5743static struct omap_hwmod_addr_space omap44xx_timer2_addrs[] = {
5744 {
5745 .pa_start = 0x48032000,
5746 .pa_end = 0x4803207f,
5747 .flags = ADDR_TYPE_RT
5748 },
5749 { }
5750};
5751
5752/* l4_per -> timer2 */
5753static struct omap_hwmod_ocp_if omap44xx_l4_per__timer2 = {
5754 .master = &omap44xx_l4_per_hwmod,
5755 .slave = &omap44xx_timer2_hwmod,
5756 .clk = "l4_div_ck",
5757 .addr = omap44xx_timer2_addrs,
5758 .user = OCP_USER_MPU | OCP_USER_SDMA,
5759};
5760
5761static struct omap_hwmod_addr_space omap44xx_timer3_addrs[] = {
5762 {
5763 .pa_start = 0x48034000,
5764 .pa_end = 0x4803407f,
5765 .flags = ADDR_TYPE_RT
5766 },
5767 { }
5768};
5769
5770/* l4_per -> timer3 */
5771static struct omap_hwmod_ocp_if omap44xx_l4_per__timer3 = {
5772 .master = &omap44xx_l4_per_hwmod,
5773 .slave = &omap44xx_timer3_hwmod,
5774 .clk = "l4_div_ck",
5775 .addr = omap44xx_timer3_addrs,
5776 .user = OCP_USER_MPU | OCP_USER_SDMA,
5777};
5778
5779static struct omap_hwmod_addr_space omap44xx_timer4_addrs[] = {
5780 {
5781 .pa_start = 0x48036000,
5782 .pa_end = 0x4803607f,
5783 .flags = ADDR_TYPE_RT
5784 },
5785 { }
5786};
5787
5788/* l4_per -> timer4 */
5789static struct omap_hwmod_ocp_if omap44xx_l4_per__timer4 = {
5790 .master = &omap44xx_l4_per_hwmod,
5791 .slave = &omap44xx_timer4_hwmod,
5792 .clk = "l4_div_ck",
5793 .addr = omap44xx_timer4_addrs,
5794 .user = OCP_USER_MPU | OCP_USER_SDMA,
5795};
5796
5797static struct omap_hwmod_addr_space omap44xx_timer5_addrs[] = {
5798 {
5799 .pa_start = 0x40138000,
5800 .pa_end = 0x4013807f,
5801 .flags = ADDR_TYPE_RT
5802 },
5803 { }
5804};
5805
5806/* l4_abe -> timer5 */
5807static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer5 = {
5808 .master = &omap44xx_l4_abe_hwmod,
5809 .slave = &omap44xx_timer5_hwmod,
5810 .clk = "ocp_abe_iclk",
5811 .addr = omap44xx_timer5_addrs,
5812 .user = OCP_USER_MPU,
5813};
5814
5815static struct omap_hwmod_addr_space omap44xx_timer5_dma_addrs[] = {
5816 {
5817 .pa_start = 0x49038000,
5818 .pa_end = 0x4903807f,
5819 .flags = ADDR_TYPE_RT
5820 },
5821 { }
5822};
5823
5824/* l4_abe -> timer5 (dma) */
5825static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer5_dma = {
5826 .master = &omap44xx_l4_abe_hwmod,
5827 .slave = &omap44xx_timer5_hwmod,
5828 .clk = "ocp_abe_iclk",
5829 .addr = omap44xx_timer5_dma_addrs,
5830 .user = OCP_USER_SDMA,
5831};
5832
5833static struct omap_hwmod_addr_space omap44xx_timer6_addrs[] = {
5834 {
5835 .pa_start = 0x4013a000,
5836 .pa_end = 0x4013a07f,
5837 .flags = ADDR_TYPE_RT
5838 },
5839 { }
5840};
5841
5842/* l4_abe -> timer6 */
5843static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer6 = {
5844 .master = &omap44xx_l4_abe_hwmod,
5845 .slave = &omap44xx_timer6_hwmod,
5846 .clk = "ocp_abe_iclk",
5847 .addr = omap44xx_timer6_addrs,
5848 .user = OCP_USER_MPU,
5849};
5850
5851static struct omap_hwmod_addr_space omap44xx_timer6_dma_addrs[] = {
5852 {
5853 .pa_start = 0x4903a000,
5854 .pa_end = 0x4903a07f,
5855 .flags = ADDR_TYPE_RT
5856 },
5857 { }
5858};
5859
5860/* l4_abe -> timer6 (dma) */
5861static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer6_dma = {
5862 .master = &omap44xx_l4_abe_hwmod,
5863 .slave = &omap44xx_timer6_hwmod,
5864 .clk = "ocp_abe_iclk",
5865 .addr = omap44xx_timer6_dma_addrs,
5866 .user = OCP_USER_SDMA,
5867};
5868
5869static struct omap_hwmod_addr_space omap44xx_timer7_addrs[] = {
5870 {
5871 .pa_start = 0x4013c000,
5872 .pa_end = 0x4013c07f,
5873 .flags = ADDR_TYPE_RT
5874 },
5875 { }
5876};
5877
5878/* l4_abe -> timer7 */
5879static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer7 = {
5880 .master = &omap44xx_l4_abe_hwmod,
5881 .slave = &omap44xx_timer7_hwmod,
5882 .clk = "ocp_abe_iclk",
5883 .addr = omap44xx_timer7_addrs,
5884 .user = OCP_USER_MPU,
5885};
5886
5887static struct omap_hwmod_addr_space omap44xx_timer7_dma_addrs[] = {
5888 {
5889 .pa_start = 0x4903c000,
5890 .pa_end = 0x4903c07f,
5891 .flags = ADDR_TYPE_RT
5892 },
5893 { }
5894};
5895
5896/* l4_abe -> timer7 (dma) */
5897static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer7_dma = {
5898 .master = &omap44xx_l4_abe_hwmod,
5899 .slave = &omap44xx_timer7_hwmod,
5900 .clk = "ocp_abe_iclk",
5901 .addr = omap44xx_timer7_dma_addrs,
5902 .user = OCP_USER_SDMA,
5903};
5904
5905static struct omap_hwmod_addr_space omap44xx_timer8_addrs[] = {
5906 {
5907 .pa_start = 0x4013e000,
5908 .pa_end = 0x4013e07f,
5909 .flags = ADDR_TYPE_RT
5910 },
5911 { }
5912};
5913
5914/* l4_abe -> timer8 */
5915static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer8 = {
5916 .master = &omap44xx_l4_abe_hwmod,
5917 .slave = &omap44xx_timer8_hwmod,
5918 .clk = "ocp_abe_iclk",
5919 .addr = omap44xx_timer8_addrs,
5920 .user = OCP_USER_MPU,
5921};
5922
5923static struct omap_hwmod_addr_space omap44xx_timer8_dma_addrs[] = {
5924 {
5925 .pa_start = 0x4903e000,
5926 .pa_end = 0x4903e07f,
5927 .flags = ADDR_TYPE_RT
5928 },
5929 { }
5930};
5931
5932/* l4_abe -> timer8 (dma) */
5933static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer8_dma = {
5934 .master = &omap44xx_l4_abe_hwmod,
5935 .slave = &omap44xx_timer8_hwmod,
5936 .clk = "ocp_abe_iclk",
5937 .addr = omap44xx_timer8_dma_addrs,
5938 .user = OCP_USER_SDMA,
5939};
5940
5941static struct omap_hwmod_addr_space omap44xx_timer9_addrs[] = {
5942 {
5943 .pa_start = 0x4803e000,
5944 .pa_end = 0x4803e07f,
5945 .flags = ADDR_TYPE_RT
5946 },
5947 { }
5948};
5949
5950/* l4_per -> timer9 */
5951static struct omap_hwmod_ocp_if omap44xx_l4_per__timer9 = {
5952 .master = &omap44xx_l4_per_hwmod,
5953 .slave = &omap44xx_timer9_hwmod,
5954 .clk = "l4_div_ck",
5955 .addr = omap44xx_timer9_addrs,
5956 .user = OCP_USER_MPU | OCP_USER_SDMA,
5957};
5958
5959static struct omap_hwmod_addr_space omap44xx_timer10_addrs[] = {
5960 {
5961 .pa_start = 0x48086000,
5962 .pa_end = 0x4808607f,
5963 .flags = ADDR_TYPE_RT
5964 },
5965 { }
5966};
5967
5968/* l4_per -> timer10 */
5969static struct omap_hwmod_ocp_if omap44xx_l4_per__timer10 = {
5970 .master = &omap44xx_l4_per_hwmod,
5971 .slave = &omap44xx_timer10_hwmod,
5972 .clk = "l4_div_ck",
5973 .addr = omap44xx_timer10_addrs,
5974 .user = OCP_USER_MPU | OCP_USER_SDMA,
5975};
5976
5977static struct omap_hwmod_addr_space omap44xx_timer11_addrs[] = {
5978 {
5979 .pa_start = 0x48088000,
5980 .pa_end = 0x4808807f,
5981 .flags = ADDR_TYPE_RT
5982 },
5983 { }
5984};
5985
5986/* l4_per -> timer11 */
5987static struct omap_hwmod_ocp_if omap44xx_l4_per__timer11 = {
5988 .master = &omap44xx_l4_per_hwmod,
5989 .slave = &omap44xx_timer11_hwmod,
5990 .clk = "l4_div_ck",
5991 .addr = omap44xx_timer11_addrs,
5992 .user = OCP_USER_MPU | OCP_USER_SDMA,
5993};
5994
5995static struct omap_hwmod_addr_space omap44xx_uart1_addrs[] = {
5996 {
5997 .pa_start = 0x4806a000,
5998 .pa_end = 0x4806a0ff,
5999 .flags = ADDR_TYPE_RT
6000 },
6001 { }
6002};
6003
6004/* l4_per -> uart1 */
6005static struct omap_hwmod_ocp_if omap44xx_l4_per__uart1 = {
6006 .master = &omap44xx_l4_per_hwmod,
6007 .slave = &omap44xx_uart1_hwmod,
6008 .clk = "l4_div_ck",
6009 .addr = omap44xx_uart1_addrs,
6010 .user = OCP_USER_MPU | OCP_USER_SDMA,
6011};
6012
6013static struct omap_hwmod_addr_space omap44xx_uart2_addrs[] = {
6014 {
6015 .pa_start = 0x4806c000,
6016 .pa_end = 0x4806c0ff,
6017 .flags = ADDR_TYPE_RT
6018 },
6019 { }
6020};
6021
6022/* l4_per -> uart2 */
6023static struct omap_hwmod_ocp_if omap44xx_l4_per__uart2 = {
6024 .master = &omap44xx_l4_per_hwmod,
6025 .slave = &omap44xx_uart2_hwmod,
6026 .clk = "l4_div_ck",
6027 .addr = omap44xx_uart2_addrs,
6028 .user = OCP_USER_MPU | OCP_USER_SDMA,
6029};
6030
6031static struct omap_hwmod_addr_space omap44xx_uart3_addrs[] = {
6032 {
6033 .pa_start = 0x48020000,
6034 .pa_end = 0x480200ff,
6035 .flags = ADDR_TYPE_RT
6036 },
6037 { }
6038};
6039
6040/* l4_per -> uart3 */
6041static struct omap_hwmod_ocp_if omap44xx_l4_per__uart3 = {
6042 .master = &omap44xx_l4_per_hwmod,
6043 .slave = &omap44xx_uart3_hwmod,
6044 .clk = "l4_div_ck",
6045 .addr = omap44xx_uart3_addrs,
6046 .user = OCP_USER_MPU | OCP_USER_SDMA,
6047};
6048
6049static struct omap_hwmod_addr_space omap44xx_uart4_addrs[] = {
6050 {
6051 .pa_start = 0x4806e000,
6052 .pa_end = 0x4806e0ff,
6053 .flags = ADDR_TYPE_RT
6054 },
6055 { }
6056};
6057
6058/* l4_per -> uart4 */
6059static struct omap_hwmod_ocp_if omap44xx_l4_per__uart4 = {
6060 .master = &omap44xx_l4_per_hwmod,
6061 .slave = &omap44xx_uart4_hwmod,
6062 .clk = "l4_div_ck",
6063 .addr = omap44xx_uart4_addrs,
6064 .user = OCP_USER_MPU | OCP_USER_SDMA,
6065};
6066
Benoît Cousson0c668872012-04-19 13:33:55 -06006067static struct omap_hwmod_addr_space omap44xx_usb_host_fs_addrs[] = {
6068 {
6069 .pa_start = 0x4a0a9000,
6070 .pa_end = 0x4a0a93ff,
6071 .flags = ADDR_TYPE_RT
6072 },
6073 { }
6074};
6075
6076/* l4_cfg -> usb_host_fs */
Paul Walmsleyb0a70cc2012-07-04 06:55:29 -06006077static struct omap_hwmod_ocp_if __maybe_unused omap44xx_l4_cfg__usb_host_fs = {
Benoît Cousson0c668872012-04-19 13:33:55 -06006078 .master = &omap44xx_l4_cfg_hwmod,
6079 .slave = &omap44xx_usb_host_fs_hwmod,
6080 .clk = "l4_div_ck",
6081 .addr = omap44xx_usb_host_fs_addrs,
6082 .user = OCP_USER_MPU | OCP_USER_SDMA,
6083};
6084
Paul Walmsley844a3b62012-04-19 04:04:33 -06006085static struct omap_hwmod_addr_space omap44xx_usb_host_hs_addrs[] = {
6086 {
6087 .name = "uhh",
6088 .pa_start = 0x4a064000,
6089 .pa_end = 0x4a0647ff,
6090 .flags = ADDR_TYPE_RT
6091 },
6092 {
6093 .name = "ohci",
6094 .pa_start = 0x4a064800,
6095 .pa_end = 0x4a064bff,
6096 },
6097 {
6098 .name = "ehci",
6099 .pa_start = 0x4a064c00,
6100 .pa_end = 0x4a064fff,
6101 },
6102 {}
6103};
6104
6105/* l4_cfg -> usb_host_hs */
6106static struct omap_hwmod_ocp_if omap44xx_l4_cfg__usb_host_hs = {
6107 .master = &omap44xx_l4_cfg_hwmod,
6108 .slave = &omap44xx_usb_host_hs_hwmod,
6109 .clk = "l4_div_ck",
6110 .addr = omap44xx_usb_host_hs_addrs,
6111 .user = OCP_USER_MPU | OCP_USER_SDMA,
6112};
6113
6114static struct omap_hwmod_addr_space omap44xx_usb_otg_hs_addrs[] = {
6115 {
6116 .pa_start = 0x4a0ab000,
Benoit Cousson33c976e2012-09-23 17:28:21 -06006117 .pa_end = 0x4a0ab7ff,
Paul Walmsley844a3b62012-04-19 04:04:33 -06006118 .flags = ADDR_TYPE_RT
6119 },
Kishon Vijay Abraham I94715d52012-09-11 14:39:38 +05306120 {
6121 /* XXX: Remove this once control module driver is in place */
6122 .pa_start = 0x4a00233c,
6123 .pa_end = 0x4a00233f,
6124 .flags = ADDR_TYPE_RT
6125 },
Paul Walmsley844a3b62012-04-19 04:04:33 -06006126 { }
6127};
6128
6129/* l4_cfg -> usb_otg_hs */
6130static struct omap_hwmod_ocp_if omap44xx_l4_cfg__usb_otg_hs = {
6131 .master = &omap44xx_l4_cfg_hwmod,
6132 .slave = &omap44xx_usb_otg_hs_hwmod,
6133 .clk = "l4_div_ck",
6134 .addr = omap44xx_usb_otg_hs_addrs,
6135 .user = OCP_USER_MPU | OCP_USER_SDMA,
6136};
6137
Benoit Coussonaf88fa92011-12-15 23:15:18 -07006138static struct omap_hwmod_addr_space omap44xx_usb_tll_hs_addrs[] = {
6139 {
6140 .name = "tll",
6141 .pa_start = 0x4a062000,
6142 .pa_end = 0x4a063fff,
6143 .flags = ADDR_TYPE_RT
6144 },
6145 {}
6146};
6147
Paul Walmsley844a3b62012-04-19 04:04:33 -06006148/* l4_cfg -> usb_tll_hs */
Benoit Coussonaf88fa92011-12-15 23:15:18 -07006149static struct omap_hwmod_ocp_if omap44xx_l4_cfg__usb_tll_hs = {
6150 .master = &omap44xx_l4_cfg_hwmod,
6151 .slave = &omap44xx_usb_tll_hs_hwmod,
6152 .clk = "l4_div_ck",
6153 .addr = omap44xx_usb_tll_hs_addrs,
6154 .user = OCP_USER_MPU | OCP_USER_SDMA,
6155};
6156
Paul Walmsley844a3b62012-04-19 04:04:33 -06006157static struct omap_hwmod_addr_space omap44xx_wd_timer2_addrs[] = {
6158 {
6159 .pa_start = 0x4a314000,
6160 .pa_end = 0x4a31407f,
6161 .flags = ADDR_TYPE_RT
Benoit Coussonaf88fa92011-12-15 23:15:18 -07006162 },
Paul Walmsley844a3b62012-04-19 04:04:33 -06006163 { }
6164};
6165
6166/* l4_wkup -> wd_timer2 */
6167static struct omap_hwmod_ocp_if omap44xx_l4_wkup__wd_timer2 = {
6168 .master = &omap44xx_l4_wkup_hwmod,
6169 .slave = &omap44xx_wd_timer2_hwmod,
6170 .clk = "l4_wkup_clk_mux_ck",
6171 .addr = omap44xx_wd_timer2_addrs,
6172 .user = OCP_USER_MPU | OCP_USER_SDMA,
6173};
6174
6175static struct omap_hwmod_addr_space omap44xx_wd_timer3_addrs[] = {
6176 {
6177 .pa_start = 0x40130000,
6178 .pa_end = 0x4013007f,
6179 .flags = ADDR_TYPE_RT
6180 },
6181 { }
6182};
6183
6184/* l4_abe -> wd_timer3 */
6185static struct omap_hwmod_ocp_if omap44xx_l4_abe__wd_timer3 = {
6186 .master = &omap44xx_l4_abe_hwmod,
6187 .slave = &omap44xx_wd_timer3_hwmod,
6188 .clk = "ocp_abe_iclk",
6189 .addr = omap44xx_wd_timer3_addrs,
6190 .user = OCP_USER_MPU,
6191};
6192
6193static struct omap_hwmod_addr_space omap44xx_wd_timer3_dma_addrs[] = {
6194 {
6195 .pa_start = 0x49030000,
6196 .pa_end = 0x4903007f,
6197 .flags = ADDR_TYPE_RT
6198 },
6199 { }
6200};
6201
6202/* l4_abe -> wd_timer3 (dma) */
6203static struct omap_hwmod_ocp_if omap44xx_l4_abe__wd_timer3_dma = {
6204 .master = &omap44xx_l4_abe_hwmod,
6205 .slave = &omap44xx_wd_timer3_hwmod,
6206 .clk = "ocp_abe_iclk",
6207 .addr = omap44xx_wd_timer3_dma_addrs,
6208 .user = OCP_USER_SDMA,
Benoit Coussonaf88fa92011-12-15 23:15:18 -07006209};
6210
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06006211static struct omap_hwmod_ocp_if *omap44xx_hwmod_ocp_ifs[] __initdata = {
Paul Walmsley42b9e382012-04-19 13:33:54 -06006212 &omap44xx_c2c__c2c_target_fw,
6213 &omap44xx_l4_cfg__c2c_target_fw,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06006214 &omap44xx_l3_main_1__dmm,
6215 &omap44xx_mpu__dmm,
Paul Walmsley42b9e382012-04-19 13:33:54 -06006216 &omap44xx_c2c__emif_fw,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06006217 &omap44xx_dmm__emif_fw,
6218 &omap44xx_l4_cfg__emif_fw,
6219 &omap44xx_iva__l3_instr,
6220 &omap44xx_l3_main_3__l3_instr,
Benoît Cousson9a817bc2012-04-19 13:33:56 -06006221 &omap44xx_ocp_wp_noc__l3_instr,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06006222 &omap44xx_dsp__l3_main_1,
6223 &omap44xx_dss__l3_main_1,
6224 &omap44xx_l3_main_2__l3_main_1,
6225 &omap44xx_l4_cfg__l3_main_1,
6226 &omap44xx_mmc1__l3_main_1,
6227 &omap44xx_mmc2__l3_main_1,
6228 &omap44xx_mpu__l3_main_1,
Paul Walmsley42b9e382012-04-19 13:33:54 -06006229 &omap44xx_c2c_target_fw__l3_main_2,
Benoît Cousson96566042012-04-19 13:33:59 -06006230 &omap44xx_debugss__l3_main_2,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06006231 &omap44xx_dma_system__l3_main_2,
Ming Leib050f682012-04-19 13:33:50 -06006232 &omap44xx_fdif__l3_main_2,
Paul Walmsley9def3902012-04-19 13:33:53 -06006233 &omap44xx_gpu__l3_main_2,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06006234 &omap44xx_hsi__l3_main_2,
6235 &omap44xx_ipu__l3_main_2,
6236 &omap44xx_iss__l3_main_2,
6237 &omap44xx_iva__l3_main_2,
6238 &omap44xx_l3_main_1__l3_main_2,
6239 &omap44xx_l4_cfg__l3_main_2,
Paul Walmsleyb0a70cc2012-07-04 06:55:29 -06006240 /* &omap44xx_usb_host_fs__l3_main_2, */
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06006241 &omap44xx_usb_host_hs__l3_main_2,
6242 &omap44xx_usb_otg_hs__l3_main_2,
6243 &omap44xx_l3_main_1__l3_main_3,
6244 &omap44xx_l3_main_2__l3_main_3,
6245 &omap44xx_l4_cfg__l3_main_3,
Paul Walmsleyb0a70cc2012-07-04 06:55:29 -06006246 /* &omap44xx_aess__l4_abe, */
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06006247 &omap44xx_dsp__l4_abe,
6248 &omap44xx_l3_main_1__l4_abe,
6249 &omap44xx_mpu__l4_abe,
6250 &omap44xx_l3_main_1__l4_cfg,
6251 &omap44xx_l3_main_2__l4_per,
6252 &omap44xx_l4_cfg__l4_wkup,
6253 &omap44xx_mpu__mpu_private,
Benoît Cousson9a817bc2012-04-19 13:33:56 -06006254 &omap44xx_l4_cfg__ocp_wp_noc,
Paul Walmsleyb0a70cc2012-07-04 06:55:29 -06006255 /* &omap44xx_l4_abe__aess, */
6256 /* &omap44xx_l4_abe__aess_dma, */
Paul Walmsley42b9e382012-04-19 13:33:54 -06006257 &omap44xx_l3_main_2__c2c,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06006258 &omap44xx_l4_wkup__counter_32k,
Paul Walmsleya0b5d812012-04-19 13:33:57 -06006259 &omap44xx_l4_cfg__ctrl_module_core,
6260 &omap44xx_l4_cfg__ctrl_module_pad_core,
6261 &omap44xx_l4_wkup__ctrl_module_wkup,
6262 &omap44xx_l4_wkup__ctrl_module_pad_wkup,
Benoît Cousson96566042012-04-19 13:33:59 -06006263 &omap44xx_l3_instr__debugss,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06006264 &omap44xx_l4_cfg__dma_system,
6265 &omap44xx_l4_abe__dmic,
6266 &omap44xx_l4_abe__dmic_dma,
6267 &omap44xx_dsp__iva,
Tero Kristob3601242012-09-03 11:50:53 -06006268 /* &omap44xx_dsp__sl2if, */
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06006269 &omap44xx_l4_cfg__dsp,
6270 &omap44xx_l3_main_2__dss,
6271 &omap44xx_l4_per__dss,
6272 &omap44xx_l3_main_2__dss_dispc,
6273 &omap44xx_l4_per__dss_dispc,
6274 &omap44xx_l3_main_2__dss_dsi1,
6275 &omap44xx_l4_per__dss_dsi1,
6276 &omap44xx_l3_main_2__dss_dsi2,
6277 &omap44xx_l4_per__dss_dsi2,
6278 &omap44xx_l3_main_2__dss_hdmi,
6279 &omap44xx_l4_per__dss_hdmi,
6280 &omap44xx_l3_main_2__dss_rfbi,
6281 &omap44xx_l4_per__dss_rfbi,
6282 &omap44xx_l3_main_2__dss_venc,
6283 &omap44xx_l4_per__dss_venc,
Paul Walmsley42b9e382012-04-19 13:33:54 -06006284 &omap44xx_l4_per__elm,
Paul Walmsleybf30f952012-04-19 13:33:52 -06006285 &omap44xx_emif_fw__emif1,
6286 &omap44xx_emif_fw__emif2,
Ming Leib050f682012-04-19 13:33:50 -06006287 &omap44xx_l4_cfg__fdif,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06006288 &omap44xx_l4_wkup__gpio1,
6289 &omap44xx_l4_per__gpio2,
6290 &omap44xx_l4_per__gpio3,
6291 &omap44xx_l4_per__gpio4,
6292 &omap44xx_l4_per__gpio5,
6293 &omap44xx_l4_per__gpio6,
Benoît Coussoneb42b5d2012-04-19 13:33:51 -06006294 &omap44xx_l3_main_2__gpmc,
Paul Walmsley9def3902012-04-19 13:33:53 -06006295 &omap44xx_l3_main_2__gpu,
Paul Walmsleya091c082012-04-19 13:33:50 -06006296 &omap44xx_l4_per__hdq1w,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06006297 &omap44xx_l4_cfg__hsi,
6298 &omap44xx_l4_per__i2c1,
6299 &omap44xx_l4_per__i2c2,
6300 &omap44xx_l4_per__i2c3,
6301 &omap44xx_l4_per__i2c4,
6302 &omap44xx_l3_main_2__ipu,
6303 &omap44xx_l3_main_2__iss,
Tero Kristob3601242012-09-03 11:50:53 -06006304 /* &omap44xx_iva__sl2if, */
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06006305 &omap44xx_l3_main_2__iva,
6306 &omap44xx_l4_wkup__kbd,
6307 &omap44xx_l4_cfg__mailbox,
Benoît Cousson896d4e92012-04-19 13:33:54 -06006308 &omap44xx_l4_abe__mcasp,
6309 &omap44xx_l4_abe__mcasp_dma,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06006310 &omap44xx_l4_abe__mcbsp1,
6311 &omap44xx_l4_abe__mcbsp1_dma,
6312 &omap44xx_l4_abe__mcbsp2,
6313 &omap44xx_l4_abe__mcbsp2_dma,
6314 &omap44xx_l4_abe__mcbsp3,
6315 &omap44xx_l4_abe__mcbsp3_dma,
6316 &omap44xx_l4_per__mcbsp4,
6317 &omap44xx_l4_abe__mcpdm,
6318 &omap44xx_l4_abe__mcpdm_dma,
6319 &omap44xx_l4_per__mcspi1,
6320 &omap44xx_l4_per__mcspi2,
6321 &omap44xx_l4_per__mcspi3,
6322 &omap44xx_l4_per__mcspi4,
6323 &omap44xx_l4_per__mmc1,
6324 &omap44xx_l4_per__mmc2,
6325 &omap44xx_l4_per__mmc3,
6326 &omap44xx_l4_per__mmc4,
6327 &omap44xx_l4_per__mmc5,
Omar Ramirez Luna230844d2012-09-23 17:28:24 -06006328 &omap44xx_l3_main_2__mmu_ipu,
6329 &omap44xx_l4_cfg__mmu_dsp,
Paul Walmsleye17f18c2012-04-19 13:33:56 -06006330 &omap44xx_l3_main_2__ocmc_ram,
Benoît Cousson0c668872012-04-19 13:33:55 -06006331 &omap44xx_l4_cfg__ocp2scp_usb_phy,
Paul Walmsley794b4802012-04-19 13:33:58 -06006332 &omap44xx_mpu_private__prcm_mpu,
6333 &omap44xx_l4_wkup__cm_core_aon,
6334 &omap44xx_l4_cfg__cm_core,
6335 &omap44xx_l4_wkup__prm,
6336 &omap44xx_l4_wkup__scrm,
Tero Kristob3601242012-09-03 11:50:53 -06006337 /* &omap44xx_l3_main_2__sl2if, */
Benoît Cousson1e3b5e592012-04-19 13:33:53 -06006338 &omap44xx_l4_abe__slimbus1,
6339 &omap44xx_l4_abe__slimbus1_dma,
6340 &omap44xx_l4_per__slimbus2,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06006341 &omap44xx_l4_cfg__smartreflex_core,
6342 &omap44xx_l4_cfg__smartreflex_iva,
6343 &omap44xx_l4_cfg__smartreflex_mpu,
6344 &omap44xx_l4_cfg__spinlock,
6345 &omap44xx_l4_wkup__timer1,
6346 &omap44xx_l4_per__timer2,
6347 &omap44xx_l4_per__timer3,
6348 &omap44xx_l4_per__timer4,
6349 &omap44xx_l4_abe__timer5,
6350 &omap44xx_l4_abe__timer5_dma,
6351 &omap44xx_l4_abe__timer6,
6352 &omap44xx_l4_abe__timer6_dma,
6353 &omap44xx_l4_abe__timer7,
6354 &omap44xx_l4_abe__timer7_dma,
6355 &omap44xx_l4_abe__timer8,
6356 &omap44xx_l4_abe__timer8_dma,
6357 &omap44xx_l4_per__timer9,
6358 &omap44xx_l4_per__timer10,
6359 &omap44xx_l4_per__timer11,
6360 &omap44xx_l4_per__uart1,
6361 &omap44xx_l4_per__uart2,
6362 &omap44xx_l4_per__uart3,
6363 &omap44xx_l4_per__uart4,
Paul Walmsleyb0a70cc2012-07-04 06:55:29 -06006364 /* &omap44xx_l4_cfg__usb_host_fs, */
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06006365 &omap44xx_l4_cfg__usb_host_hs,
6366 &omap44xx_l4_cfg__usb_otg_hs,
6367 &omap44xx_l4_cfg__usb_tll_hs,
6368 &omap44xx_l4_wkup__wd_timer2,
6369 &omap44xx_l4_abe__wd_timer3,
6370 &omap44xx_l4_abe__wd_timer3_dma,
Benoit Cousson55d2cb02010-05-12 17:54:36 +02006371 NULL,
6372};
6373
6374int __init omap44xx_hwmod_init(void)
6375{
Kevin Hilman9ebfd282012-06-18 12:12:23 -06006376 omap_hwmod_init();
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06006377 return omap_hwmod_register_links(omap44xx_hwmod_ocp_ifs);
Benoit Cousson55d2cb02010-05-12 17:54:36 +02006378}
6379