blob: 7833caf277b64ee893a5b1f3a3fe29a88a1d8b85 [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.
Sricharan R3b9b1012013-06-07 17:26:15 +053015 * Note that this file is currently not in sync with autogeneration scripts.
16 * The above note to be removed, once it is synced up.
Benoit Cousson55d2cb02010-05-12 17:54:36 +020017 *
18 * This program is free software; you can redistribute it and/or modify
19 * it under the terms of the GNU General Public License version 2 as
20 * published by the Free Software Foundation.
21 */
22
23#include <linux/io.h>
Tony Lindgren4b254082012-08-30 15:37:24 -070024#include <linux/platform_data/gpio-omap.h>
Andreas Fenkart551434382014-11-08 15:33:09 +010025#include <linux/platform_data/hsmmc-omap.h>
Jean Pihetb86aeaf2012-04-25 16:06:20 +053026#include <linux/power/smartreflex.h>
Tony Lindgren3a8761c2012-10-08 09:11:22 -070027#include <linux/i2c-omap.h>
Benoit Cousson55d2cb02010-05-12 17:54:36 +020028
Tony Lindgren45c3eb72012-11-30 08:41:50 -080029#include <linux/omap-dma.h>
Tony Lindgren2a296c82012-10-02 17:41:35 -070030
Arnd Bergmann22037472012-08-24 15:21:06 +020031#include <linux/platform_data/spi-omap2-mcspi.h>
32#include <linux/platform_data/asoc-ti-mcbsp.h>
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +053033#include <plat/dmtimer.h>
Benoit Cousson55d2cb02010-05-12 17:54:36 +020034
Tony Lindgren2a296c82012-10-02 17:41:35 -070035#include "omap_hwmod.h"
Benoit Cousson55d2cb02010-05-12 17:54:36 +020036#include "omap_hwmod_common_data.h"
Paul Walmsleyd198b512010-12-21 15:30:54 -070037#include "cm1_44xx.h"
38#include "cm2_44xx.h"
39#include "prm44xx.h"
Benoit Cousson55d2cb02010-05-12 17:54:36 +020040#include "prm-regbits-44xx.h"
Tony Lindgren3a8761c2012-10-08 09:11:22 -070041#include "i2c.h"
Paul Walmsleyff2516f2010-12-21 15:39:15 -070042#include "wd_timer.h"
Benoit Cousson55d2cb02010-05-12 17:54:36 +020043
44/* Base offset for all OMAP4 interrupts external to MPUSS */
45#define OMAP44XX_IRQ_GIC_START 32
46
47/* Base offset for all OMAP4 dma requests */
Paul Walmsley844a3b62012-04-19 04:04:33 -060048#define OMAP44XX_DMA_REQ_START 1
Benoit Cousson55d2cb02010-05-12 17:54:36 +020049
50/*
Paul Walmsley844a3b62012-04-19 04:04:33 -060051 * IP blocks
Benoit Cousson55d2cb02010-05-12 17:54:36 +020052 */
53
54/*
55 * 'dmm' class
56 * instance(s): dmm
57 */
58static struct omap_hwmod_class omap44xx_dmm_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +000059 .name = "dmm",
Benoit Cousson55d2cb02010-05-12 17:54:36 +020060};
61
Benoit Cousson7e69ed92011-07-09 19:14:28 -060062/* dmm */
Benoit Cousson55d2cb02010-05-12 17:54:36 +020063static struct omap_hwmod omap44xx_dmm_hwmod = {
64 .name = "dmm",
65 .class = &omap44xx_dmm_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -060066 .clkdm_name = "l3_emif_clkdm",
Benoit Coussond0f06312011-07-10 05:56:30 -060067 .prcm = {
68 .omap4 = {
69 .clkctrl_offs = OMAP4_CM_MEMIF_DMM_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -060070 .context_offs = OMAP4_RM_MEMIF_DMM_CONTEXT_OFFSET,
Benoit Coussond0f06312011-07-10 05:56:30 -060071 },
72 },
Benoit Cousson55d2cb02010-05-12 17:54:36 +020073};
74
75/*
Benoit Cousson55d2cb02010-05-12 17:54:36 +020076 * 'l3' class
77 * instance(s): l3_instr, l3_main_1, l3_main_2, l3_main_3
78 */
79static struct omap_hwmod_class omap44xx_l3_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +000080 .name = "l3",
Benoit Cousson55d2cb02010-05-12 17:54:36 +020081};
82
Benoit Cousson7e69ed92011-07-09 19:14:28 -060083/* l3_instr */
Benoit Cousson55d2cb02010-05-12 17:54:36 +020084static struct omap_hwmod omap44xx_l3_instr_hwmod = {
85 .name = "l3_instr",
86 .class = &omap44xx_l3_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -060087 .clkdm_name = "l3_instr_clkdm",
Benoit Coussond0f06312011-07-10 05:56:30 -060088 .prcm = {
89 .omap4 = {
90 .clkctrl_offs = OMAP4_CM_L3INSTR_L3_INSTR_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -060091 .context_offs = OMAP4_RM_L3INSTR_L3_INSTR_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -060092 .modulemode = MODULEMODE_HWCTRL,
Benoit Coussond0f06312011-07-10 05:56:30 -060093 },
94 },
Benoit Cousson55d2cb02010-05-12 17:54:36 +020095};
96
Benoit Cousson7e69ed92011-07-09 19:14:28 -060097/* l3_main_1 */
Benoit Cousson55d2cb02010-05-12 17:54:36 +020098static struct omap_hwmod omap44xx_l3_main_1_hwmod = {
99 .name = "l3_main_1",
100 .class = &omap44xx_l3_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600101 .clkdm_name = "l3_1_clkdm",
Benoit Coussond0f06312011-07-10 05:56:30 -0600102 .prcm = {
103 .omap4 = {
104 .clkctrl_offs = OMAP4_CM_L3_1_L3_1_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600105 .context_offs = OMAP4_RM_L3_1_L3_1_CONTEXT_OFFSET,
Benoit Coussond0f06312011-07-10 05:56:30 -0600106 },
107 },
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200108};
109
Benoit Cousson7e69ed92011-07-09 19:14:28 -0600110/* l3_main_2 */
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200111static struct omap_hwmod omap44xx_l3_main_2_hwmod = {
112 .name = "l3_main_2",
113 .class = &omap44xx_l3_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600114 .clkdm_name = "l3_2_clkdm",
Benoit Coussond0f06312011-07-10 05:56:30 -0600115 .prcm = {
116 .omap4 = {
117 .clkctrl_offs = OMAP4_CM_L3_2_L3_2_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600118 .context_offs = OMAP4_RM_L3_2_L3_2_CONTEXT_OFFSET,
Benoit Coussond0f06312011-07-10 05:56:30 -0600119 },
120 },
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200121};
122
Benoit Cousson7e69ed92011-07-09 19:14:28 -0600123/* l3_main_3 */
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200124static struct omap_hwmod omap44xx_l3_main_3_hwmod = {
125 .name = "l3_main_3",
126 .class = &omap44xx_l3_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600127 .clkdm_name = "l3_instr_clkdm",
Benoit Coussond0f06312011-07-10 05:56:30 -0600128 .prcm = {
129 .omap4 = {
130 .clkctrl_offs = OMAP4_CM_L3INSTR_L3_3_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600131 .context_offs = OMAP4_RM_L3INSTR_L3_3_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -0600132 .modulemode = MODULEMODE_HWCTRL,
Benoit Coussond0f06312011-07-10 05:56:30 -0600133 },
134 },
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200135};
136
137/*
138 * 'l4' class
139 * instance(s): l4_abe, l4_cfg, l4_per, l4_wkup
140 */
141static struct omap_hwmod_class omap44xx_l4_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +0000142 .name = "l4",
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200143};
144
Benoit Cousson7e69ed92011-07-09 19:14:28 -0600145/* l4_abe */
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200146static struct omap_hwmod omap44xx_l4_abe_hwmod = {
147 .name = "l4_abe",
148 .class = &omap44xx_l4_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600149 .clkdm_name = "abe_clkdm",
Benoit Coussond0f06312011-07-10 05:56:30 -0600150 .prcm = {
151 .omap4 = {
152 .clkctrl_offs = OMAP4_CM1_ABE_L4ABE_CLKCTRL_OFFSET,
Tero Kristoce809792012-09-23 17:28:19 -0600153 .context_offs = OMAP4_RM_ABE_AESS_CONTEXT_OFFSET,
154 .lostcontext_mask = OMAP4430_LOSTMEM_AESSMEM_MASK,
Tero Kristo46b3af22012-09-23 17:28:20 -0600155 .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
Benoit Coussond0f06312011-07-10 05:56:30 -0600156 },
157 },
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200158};
159
Benoit Cousson7e69ed92011-07-09 19:14:28 -0600160/* l4_cfg */
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200161static struct omap_hwmod omap44xx_l4_cfg_hwmod = {
162 .name = "l4_cfg",
163 .class = &omap44xx_l4_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600164 .clkdm_name = "l4_cfg_clkdm",
Benoit Coussond0f06312011-07-10 05:56:30 -0600165 .prcm = {
166 .omap4 = {
167 .clkctrl_offs = OMAP4_CM_L4CFG_L4_CFG_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600168 .context_offs = OMAP4_RM_L4CFG_L4_CFG_CONTEXT_OFFSET,
Benoit Coussond0f06312011-07-10 05:56:30 -0600169 },
170 },
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200171};
172
Benoit Cousson7e69ed92011-07-09 19:14:28 -0600173/* l4_per */
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200174static struct omap_hwmod omap44xx_l4_per_hwmod = {
175 .name = "l4_per",
176 .class = &omap44xx_l4_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600177 .clkdm_name = "l4_per_clkdm",
Benoit Coussond0f06312011-07-10 05:56:30 -0600178 .prcm = {
179 .omap4 = {
180 .clkctrl_offs = OMAP4_CM_L4PER_L4PER_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600181 .context_offs = OMAP4_RM_L4PER_L4_PER_CONTEXT_OFFSET,
Benoit Coussond0f06312011-07-10 05:56:30 -0600182 },
183 },
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200184};
185
Benoit Cousson7e69ed92011-07-09 19:14:28 -0600186/* l4_wkup */
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200187static struct omap_hwmod omap44xx_l4_wkup_hwmod = {
188 .name = "l4_wkup",
189 .class = &omap44xx_l4_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600190 .clkdm_name = "l4_wkup_clkdm",
Benoit Coussond0f06312011-07-10 05:56:30 -0600191 .prcm = {
192 .omap4 = {
193 .clkctrl_offs = OMAP4_CM_WKUP_L4WKUP_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600194 .context_offs = OMAP4_RM_WKUP_L4WKUP_CONTEXT_OFFSET,
Benoit Coussond0f06312011-07-10 05:56:30 -0600195 },
196 },
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200197};
198
199/*
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700200 * 'mpu_bus' class
201 * instance(s): mpu_private
202 */
203static struct omap_hwmod_class omap44xx_mpu_bus_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +0000204 .name = "mpu_bus",
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700205};
206
Benoit Cousson7e69ed92011-07-09 19:14:28 -0600207/* mpu_private */
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700208static struct omap_hwmod omap44xx_mpu_private_hwmod = {
209 .name = "mpu_private",
210 .class = &omap44xx_mpu_bus_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600211 .clkdm_name = "mpuss_clkdm",
Tero Kristo46b3af22012-09-23 17:28:20 -0600212 .prcm = {
213 .omap4 = {
214 .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
215 },
216 },
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700217};
218
219/*
Benoît Cousson9a817bc82012-04-19 13:33:56 -0600220 * 'ocp_wp_noc' class
221 * instance(s): ocp_wp_noc
222 */
223static struct omap_hwmod_class omap44xx_ocp_wp_noc_hwmod_class = {
224 .name = "ocp_wp_noc",
225};
226
227/* ocp_wp_noc */
228static struct omap_hwmod omap44xx_ocp_wp_noc_hwmod = {
229 .name = "ocp_wp_noc",
230 .class = &omap44xx_ocp_wp_noc_hwmod_class,
231 .clkdm_name = "l3_instr_clkdm",
232 .prcm = {
233 .omap4 = {
234 .clkctrl_offs = OMAP4_CM_L3INSTR_OCP_WP1_CLKCTRL_OFFSET,
235 .context_offs = OMAP4_RM_L3INSTR_OCP_WP1_CONTEXT_OFFSET,
236 .modulemode = MODULEMODE_HWCTRL,
237 },
238 },
239};
240
241/*
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700242 * Modules omap_hwmod structures
243 *
244 * The following IPs are excluded for the moment because:
245 * - They do not need an explicit SW control using omap_hwmod API.
246 * - They still need to be validated with the driver
247 * properly adapted to omap_hwmod / omap_device
248 *
Benoît Cousson96566042012-04-19 13:33:59 -0600249 * usim
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700250 */
251
252/*
Benoit Cousson407a6882011-02-15 22:39:48 +0100253 * 'aess' class
254 * audio engine sub system
255 */
256
257static struct omap_hwmod_class_sysconfig omap44xx_aess_sysc = {
258 .rev_offs = 0x0000,
259 .sysc_offs = 0x0010,
260 .sysc_flags = (SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE),
261 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
Benoit Coussonc614ebf2011-07-01 22:54:01 +0200262 MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART |
263 MSTANDBY_SMART_WKUP),
Benoit Cousson407a6882011-02-15 22:39:48 +0100264 .sysc_fields = &omap_hwmod_sysc_type2,
265};
266
267static struct omap_hwmod_class omap44xx_aess_hwmod_class = {
268 .name = "aess",
269 .sysc = &omap44xx_aess_sysc,
Paul Walmsleyc02060d2013-02-10 11:22:23 -0700270 .enable_preprogram = omap_hwmod_aess_preprogram,
Benoit Cousson407a6882011-02-15 22:39:48 +0100271};
272
273/* aess */
Benoit Cousson407a6882011-02-15 22:39:48 +0100274static struct omap_hwmod omap44xx_aess_hwmod = {
275 .name = "aess",
276 .class = &omap44xx_aess_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600277 .clkdm_name = "abe_clkdm",
Sebastien Guiriec9f0c5992013-02-10 11:22:24 -0700278 .main_clk = "aess_fclk",
Benoit Cousson00fe6102011-07-09 19:14:28 -0600279 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +0100280 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600281 .clkctrl_offs = OMAP4_CM1_ABE_AESS_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600282 .context_offs = OMAP4_RM_ABE_AESS_CONTEXT_OFFSET,
Tero Kristoce809792012-09-23 17:28:19 -0600283 .lostcontext_mask = OMAP4430_LOSTCONTEXT_DFF_MASK,
Benoit Cousson03fdefe52011-07-10 05:56:32 -0600284 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +0100285 },
286 },
Benoit Cousson407a6882011-02-15 22:39:48 +0100287};
288
289/*
Paul Walmsley42b9e382012-04-19 13:33:54 -0600290 * 'c2c' class
291 * chip 2 chip interface used to plug the ape soc (omap) with an external modem
292 * soc
293 */
294
295static struct omap_hwmod_class omap44xx_c2c_hwmod_class = {
296 .name = "c2c",
297};
298
299/* c2c */
Paul Walmsley42b9e382012-04-19 13:33:54 -0600300static struct omap_hwmod omap44xx_c2c_hwmod = {
301 .name = "c2c",
302 .class = &omap44xx_c2c_hwmod_class,
303 .clkdm_name = "d2d_clkdm",
Paul Walmsley42b9e382012-04-19 13:33:54 -0600304 .prcm = {
305 .omap4 = {
306 .clkctrl_offs = OMAP4_CM_D2D_SAD2D_CLKCTRL_OFFSET,
307 .context_offs = OMAP4_RM_D2D_SAD2D_CONTEXT_OFFSET,
308 },
309 },
310};
311
312/*
Benoit Cousson407a6882011-02-15 22:39:48 +0100313 * 'counter' class
314 * 32-bit ordinary counter, clocked by the falling edge of the 32 khz clock
315 */
316
317static struct omap_hwmod_class_sysconfig omap44xx_counter_sysc = {
318 .rev_offs = 0x0000,
319 .sysc_offs = 0x0004,
320 .sysc_flags = SYSC_HAS_SIDLEMODE,
Paul Walmsley252a4c52012-06-17 11:57:51 -0600321 .idlemodes = (SIDLE_FORCE | SIDLE_NO),
Benoit Cousson407a6882011-02-15 22:39:48 +0100322 .sysc_fields = &omap_hwmod_sysc_type1,
323};
324
325static struct omap_hwmod_class omap44xx_counter_hwmod_class = {
326 .name = "counter",
327 .sysc = &omap44xx_counter_sysc,
328};
329
330/* counter_32k */
Benoit Cousson407a6882011-02-15 22:39:48 +0100331static struct omap_hwmod omap44xx_counter_32k_hwmod = {
332 .name = "counter_32k",
333 .class = &omap44xx_counter_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600334 .clkdm_name = "l4_wkup_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +0100335 .flags = HWMOD_SWSUP_SIDLE,
336 .main_clk = "sys_32k_ck",
Benoit Cousson00fe6102011-07-09 19:14:28 -0600337 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +0100338 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600339 .clkctrl_offs = OMAP4_CM_WKUP_SYNCTIMER_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600340 .context_offs = OMAP4_RM_WKUP_SYNCTIMER_CONTEXT_OFFSET,
Benoit Cousson407a6882011-02-15 22:39:48 +0100341 },
342 },
Benoit Cousson407a6882011-02-15 22:39:48 +0100343};
344
345/*
Paul Walmsleya0b5d812012-04-19 13:33:57 -0600346 * 'ctrl_module' class
347 * attila core control module + core pad control module + wkup pad control
348 * module + attila wkup control module
349 */
350
351static struct omap_hwmod_class_sysconfig omap44xx_ctrl_module_sysc = {
352 .rev_offs = 0x0000,
353 .sysc_offs = 0x0010,
354 .sysc_flags = SYSC_HAS_SIDLEMODE,
355 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
356 SIDLE_SMART_WKUP),
357 .sysc_fields = &omap_hwmod_sysc_type2,
358};
359
360static struct omap_hwmod_class omap44xx_ctrl_module_hwmod_class = {
361 .name = "ctrl_module",
362 .sysc = &omap44xx_ctrl_module_sysc,
363};
364
365/* ctrl_module_core */
Paul Walmsleya0b5d812012-04-19 13:33:57 -0600366static struct omap_hwmod omap44xx_ctrl_module_core_hwmod = {
367 .name = "ctrl_module_core",
368 .class = &omap44xx_ctrl_module_hwmod_class,
369 .clkdm_name = "l4_cfg_clkdm",
Tero Kristo46b3af22012-09-23 17:28:20 -0600370 .prcm = {
371 .omap4 = {
372 .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
373 },
374 },
Paul Walmsleya0b5d812012-04-19 13:33:57 -0600375};
376
377/* ctrl_module_pad_core */
378static struct omap_hwmod omap44xx_ctrl_module_pad_core_hwmod = {
379 .name = "ctrl_module_pad_core",
380 .class = &omap44xx_ctrl_module_hwmod_class,
381 .clkdm_name = "l4_cfg_clkdm",
Tero Kristo46b3af22012-09-23 17:28:20 -0600382 .prcm = {
383 .omap4 = {
384 .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
385 },
386 },
Paul Walmsleya0b5d812012-04-19 13:33:57 -0600387};
388
389/* ctrl_module_wkup */
390static struct omap_hwmod omap44xx_ctrl_module_wkup_hwmod = {
391 .name = "ctrl_module_wkup",
392 .class = &omap44xx_ctrl_module_hwmod_class,
393 .clkdm_name = "l4_wkup_clkdm",
Tero Kristo46b3af22012-09-23 17:28:20 -0600394 .prcm = {
395 .omap4 = {
396 .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
397 },
398 },
Paul Walmsleya0b5d812012-04-19 13:33:57 -0600399};
400
401/* ctrl_module_pad_wkup */
402static struct omap_hwmod omap44xx_ctrl_module_pad_wkup_hwmod = {
403 .name = "ctrl_module_pad_wkup",
404 .class = &omap44xx_ctrl_module_hwmod_class,
405 .clkdm_name = "l4_wkup_clkdm",
Tero Kristo46b3af22012-09-23 17:28:20 -0600406 .prcm = {
407 .omap4 = {
408 .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
409 },
410 },
Paul Walmsleya0b5d812012-04-19 13:33:57 -0600411};
412
413/*
Benoît Cousson96566042012-04-19 13:33:59 -0600414 * 'debugss' class
415 * debug and emulation sub system
416 */
417
418static struct omap_hwmod_class omap44xx_debugss_hwmod_class = {
419 .name = "debugss",
420};
421
422/* debugss */
423static struct omap_hwmod omap44xx_debugss_hwmod = {
424 .name = "debugss",
425 .class = &omap44xx_debugss_hwmod_class,
426 .clkdm_name = "emu_sys_clkdm",
427 .main_clk = "trace_clk_div_ck",
428 .prcm = {
429 .omap4 = {
430 .clkctrl_offs = OMAP4_CM_EMU_DEBUGSS_CLKCTRL_OFFSET,
431 .context_offs = OMAP4_RM_EMU_DEBUGSS_CONTEXT_OFFSET,
432 },
433 },
434};
435
436/*
Benoit Coussond7cf5f32010-12-23 22:30:31 +0000437 * 'dma' class
438 * dma controller for data exchange between memory to memory (i.e. internal or
439 * external memory) and gp peripherals to memory or memory to gp peripherals
440 */
441
442static struct omap_hwmod_class_sysconfig omap44xx_dma_sysc = {
443 .rev_offs = 0x0000,
444 .sysc_offs = 0x002c,
445 .syss_offs = 0x0028,
446 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
447 SYSC_HAS_EMUFREE | SYSC_HAS_MIDLEMODE |
448 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
449 SYSS_HAS_RESET_STATUS),
450 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
451 MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
452 .sysc_fields = &omap_hwmod_sysc_type1,
453};
454
455static struct omap_hwmod_class omap44xx_dma_hwmod_class = {
456 .name = "dma",
457 .sysc = &omap44xx_dma_sysc,
458};
459
460/* dma dev_attr */
461static struct omap_dma_dev_attr dma_dev_attr = {
462 .dev_caps = RESERVE_CHANNEL | DMA_LINKED_LCH | GLOBAL_PRIORITY |
463 IS_CSSA_32 | IS_CDSA_32 | IS_RW_PRIORITY,
464 .lch_count = 32,
465};
466
467/* dma_system */
468static struct omap_hwmod_irq_info omap44xx_dma_system_irqs[] = {
469 { .name = "0", .irq = 12 + OMAP44XX_IRQ_GIC_START },
470 { .name = "1", .irq = 13 + OMAP44XX_IRQ_GIC_START },
471 { .name = "2", .irq = 14 + OMAP44XX_IRQ_GIC_START },
472 { .name = "3", .irq = 15 + OMAP44XX_IRQ_GIC_START },
Paul Walmsley212738a2011-07-09 19:14:06 -0600473 { .irq = -1 }
Benoit Coussond7cf5f32010-12-23 22:30:31 +0000474};
475
Benoit Coussond7cf5f32010-12-23 22:30:31 +0000476static struct omap_hwmod omap44xx_dma_system_hwmod = {
477 .name = "dma_system",
478 .class = &omap44xx_dma_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600479 .clkdm_name = "l3_dma_clkdm",
Benoit Coussond7cf5f32010-12-23 22:30:31 +0000480 .mpu_irqs = omap44xx_dma_system_irqs,
Marc Zyngier0fb22a82015-01-17 10:21:08 +0000481 .xlate_irq = omap4_xlate_irq,
Benoit Coussond7cf5f32010-12-23 22:30:31 +0000482 .main_clk = "l3_div_ck",
483 .prcm = {
484 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600485 .clkctrl_offs = OMAP4_CM_SDMA_SDMA_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600486 .context_offs = OMAP4_RM_SDMA_SDMA_CONTEXT_OFFSET,
Benoit Coussond7cf5f32010-12-23 22:30:31 +0000487 },
488 },
489 .dev_attr = &dma_dev_attr,
Benoit Coussond7cf5f32010-12-23 22:30:31 +0000490};
491
492/*
Benoit Cousson8ca476d2011-01-25 22:01:00 +0000493 * 'dmic' class
494 * digital microphone controller
495 */
496
497static struct omap_hwmod_class_sysconfig omap44xx_dmic_sysc = {
498 .rev_offs = 0x0000,
499 .sysc_offs = 0x0010,
500 .sysc_flags = (SYSC_HAS_EMUFREE | SYSC_HAS_RESET_STATUS |
501 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
502 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
503 SIDLE_SMART_WKUP),
504 .sysc_fields = &omap_hwmod_sysc_type2,
505};
506
507static struct omap_hwmod_class omap44xx_dmic_hwmod_class = {
508 .name = "dmic",
509 .sysc = &omap44xx_dmic_sysc,
510};
511
512/* dmic */
Benoit Cousson8ca476d2011-01-25 22:01:00 +0000513static struct omap_hwmod omap44xx_dmic_hwmod = {
514 .name = "dmic",
515 .class = &omap44xx_dmic_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600516 .clkdm_name = "abe_clkdm",
Paul Walmsleyee877ac2013-01-26 00:48:55 -0700517 .main_clk = "func_dmic_abe_gfclk",
Benoit Cousson00fe6102011-07-09 19:14:28 -0600518 .prcm = {
Benoit Cousson8ca476d2011-01-25 22:01:00 +0000519 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600520 .clkctrl_offs = OMAP4_CM1_ABE_DMIC_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600521 .context_offs = OMAP4_RM_ABE_DMIC_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -0600522 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson8ca476d2011-01-25 22:01:00 +0000523 },
524 },
Benoit Cousson8ca476d2011-01-25 22:01:00 +0000525};
526
527/*
Benoit Cousson8f25bdc2010-12-21 21:08:34 -0700528 * 'dsp' class
529 * dsp sub-system
530 */
531
532static struct omap_hwmod_class omap44xx_dsp_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +0000533 .name = "dsp",
Benoit Cousson8f25bdc2010-12-21 21:08:34 -0700534};
535
536/* dsp */
Benoit Cousson8f25bdc2010-12-21 21:08:34 -0700537static struct omap_hwmod_rst_info omap44xx_dsp_resets[] = {
Benoit Cousson8f25bdc2010-12-21 21:08:34 -0700538 { .name = "dsp", .rst_shift = 0 },
539};
540
Benoit Cousson8f25bdc2010-12-21 21:08:34 -0700541static struct omap_hwmod omap44xx_dsp_hwmod = {
542 .name = "dsp",
543 .class = &omap44xx_dsp_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600544 .clkdm_name = "tesla_clkdm",
Benoit Cousson8f25bdc2010-12-21 21:08:34 -0700545 .rst_lines = omap44xx_dsp_resets,
546 .rst_lines_cnt = ARRAY_SIZE(omap44xx_dsp_resets),
Omar Ramirez Luna298ea442012-11-19 19:05:52 -0600547 .main_clk = "dpll_iva_m4x2_ck",
Benoit Cousson8f25bdc2010-12-21 21:08:34 -0700548 .prcm = {
549 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600550 .clkctrl_offs = OMAP4_CM_TESLA_TESLA_CLKCTRL_OFFSET,
Benoit Coussoneaac3292011-07-10 05:56:31 -0600551 .rstctrl_offs = OMAP4_RM_TESLA_RSTCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600552 .context_offs = OMAP4_RM_TESLA_TESLA_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -0600553 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson8f25bdc2010-12-21 21:08:34 -0700554 },
555 },
Benoit Cousson8f25bdc2010-12-21 21:08:34 -0700556};
557
558/*
Benoit Coussond63bd742011-01-27 11:17:03 +0000559 * 'dss' class
560 * display sub-system
561 */
562
563static struct omap_hwmod_class_sysconfig omap44xx_dss_sysc = {
564 .rev_offs = 0x0000,
565 .syss_offs = 0x0014,
566 .sysc_flags = SYSS_HAS_RESET_STATUS,
567};
568
569static struct omap_hwmod_class omap44xx_dss_hwmod_class = {
570 .name = "dss",
571 .sysc = &omap44xx_dss_sysc,
Tomi Valkeinen13662dc2011-11-08 03:16:13 -0700572 .reset = omap_dss_reset,
Benoit Coussond63bd742011-01-27 11:17:03 +0000573};
574
575/* dss */
Benoit Coussond63bd742011-01-27 11:17:03 +0000576static struct omap_hwmod_opt_clk dss_opt_clks[] = {
577 { .role = "sys_clk", .clk = "dss_sys_clk" },
578 { .role = "tv_clk", .clk = "dss_tv_clk" },
Tomi Valkeinen4d0698d2011-11-08 03:16:12 -0700579 { .role = "hdmi_clk", .clk = "dss_48mhz_clk" },
Benoit Coussond63bd742011-01-27 11:17:03 +0000580};
581
582static struct omap_hwmod omap44xx_dss_hwmod = {
583 .name = "dss_core",
Tomi Valkeinen37ad0852011-11-08 03:16:11 -0700584 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
Benoit Coussond63bd742011-01-27 11:17:03 +0000585 .class = &omap44xx_dss_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600586 .clkdm_name = "l3_dss_clkdm",
Tomi Valkeinenda7cdfa2011-07-09 20:39:45 -0600587 .main_clk = "dss_dss_clk",
Benoit Coussond63bd742011-01-27 11:17:03 +0000588 .prcm = {
589 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600590 .clkctrl_offs = OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600591 .context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET,
Tomi Valkeinen7ede8562014-10-09 17:03:17 +0300592 .modulemode = MODULEMODE_SWCTRL,
Benoit Coussond63bd742011-01-27 11:17:03 +0000593 },
594 },
595 .opt_clks = dss_opt_clks,
596 .opt_clks_cnt = ARRAY_SIZE(dss_opt_clks),
Benoit Coussond63bd742011-01-27 11:17:03 +0000597};
598
599/*
600 * 'dispc' class
601 * display controller
602 */
603
604static struct omap_hwmod_class_sysconfig omap44xx_dispc_sysc = {
605 .rev_offs = 0x0000,
606 .sysc_offs = 0x0010,
607 .syss_offs = 0x0014,
608 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
609 SYSC_HAS_ENAWAKEUP | SYSC_HAS_MIDLEMODE |
610 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
611 SYSS_HAS_RESET_STATUS),
612 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
613 MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
614 .sysc_fields = &omap_hwmod_sysc_type1,
615};
616
617static struct omap_hwmod_class omap44xx_dispc_hwmod_class = {
618 .name = "dispc",
619 .sysc = &omap44xx_dispc_sysc,
620};
621
622/* dss_dispc */
Tomi Valkeinenb38911f2013-06-11 10:37:19 +0300623static struct omap_hwmod_irq_info omap44xx_dss_dispc_irqs[] = {
624 { .irq = 25 + OMAP44XX_IRQ_GIC_START },
625 { .irq = -1 }
626};
627
628static struct omap_hwmod_dma_info omap44xx_dss_dispc_sdma_reqs[] = {
629 { .dma_req = 5 + OMAP44XX_DMA_REQ_START },
630 { .dma_req = -1 }
631};
632
Archit Tanejab923d402011-10-06 18:04:08 -0600633static struct omap_dss_dispc_dev_attr omap44xx_dss_dispc_dev_attr = {
634 .manager_count = 3,
635 .has_framedonetv_irq = 1
636};
637
Benoit Coussond63bd742011-01-27 11:17:03 +0000638static struct omap_hwmod omap44xx_dss_dispc_hwmod = {
639 .name = "dss_dispc",
640 .class = &omap44xx_dispc_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600641 .clkdm_name = "l3_dss_clkdm",
Tomi Valkeinenb38911f2013-06-11 10:37:19 +0300642 .mpu_irqs = omap44xx_dss_dispc_irqs,
Marc Zyngier0fb22a82015-01-17 10:21:08 +0000643 .xlate_irq = omap4_xlate_irq,
Tomi Valkeinenb38911f2013-06-11 10:37:19 +0300644 .sdma_reqs = omap44xx_dss_dispc_sdma_reqs,
Tomi Valkeinenda7cdfa2011-07-09 20:39:45 -0600645 .main_clk = "dss_dss_clk",
Benoit Coussond63bd742011-01-27 11:17:03 +0000646 .prcm = {
647 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600648 .clkctrl_offs = OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600649 .context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET,
Benoit Coussond63bd742011-01-27 11:17:03 +0000650 },
651 },
Tomi Valkeinen543b2842014-10-09 17:03:16 +0300652 .dev_attr = &omap44xx_dss_dispc_dev_attr,
653 .parent_hwmod = &omap44xx_dss_hwmod,
Benoit Coussond63bd742011-01-27 11:17:03 +0000654};
655
656/*
657 * 'dsi' class
658 * display serial interface controller
659 */
660
661static struct omap_hwmod_class_sysconfig omap44xx_dsi_sysc = {
662 .rev_offs = 0x0000,
663 .sysc_offs = 0x0010,
664 .syss_offs = 0x0014,
665 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
666 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE |
667 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
668 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
669 .sysc_fields = &omap_hwmod_sysc_type1,
670};
671
672static struct omap_hwmod_class omap44xx_dsi_hwmod_class = {
673 .name = "dsi",
674 .sysc = &omap44xx_dsi_sysc,
675};
676
677/* dss_dsi1 */
Tomi Valkeinenb38911f2013-06-11 10:37:19 +0300678static struct omap_hwmod_irq_info omap44xx_dss_dsi1_irqs[] = {
679 { .irq = 53 + OMAP44XX_IRQ_GIC_START },
680 { .irq = -1 }
681};
682
683static struct omap_hwmod_dma_info omap44xx_dss_dsi1_sdma_reqs[] = {
684 { .dma_req = 74 + OMAP44XX_DMA_REQ_START },
685 { .dma_req = -1 }
686};
687
Tomi Valkeinen3a23aaf2011-07-09 20:39:44 -0600688static struct omap_hwmod_opt_clk dss_dsi1_opt_clks[] = {
689 { .role = "sys_clk", .clk = "dss_sys_clk" },
690};
691
Benoit Coussond63bd742011-01-27 11:17:03 +0000692static struct omap_hwmod omap44xx_dss_dsi1_hwmod = {
693 .name = "dss_dsi1",
694 .class = &omap44xx_dsi_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600695 .clkdm_name = "l3_dss_clkdm",
Tomi Valkeinenb38911f2013-06-11 10:37:19 +0300696 .mpu_irqs = omap44xx_dss_dsi1_irqs,
Marc Zyngier0fb22a82015-01-17 10:21:08 +0000697 .xlate_irq = omap4_xlate_irq,
Tomi Valkeinenb38911f2013-06-11 10:37:19 +0300698 .sdma_reqs = omap44xx_dss_dsi1_sdma_reqs,
Tomi Valkeinenda7cdfa2011-07-09 20:39:45 -0600699 .main_clk = "dss_dss_clk",
Benoit Coussond63bd742011-01-27 11:17:03 +0000700 .prcm = {
701 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600702 .clkctrl_offs = OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600703 .context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET,
Benoit Coussond63bd742011-01-27 11:17:03 +0000704 },
705 },
Tomi Valkeinen3a23aaf2011-07-09 20:39:44 -0600706 .opt_clks = dss_dsi1_opt_clks,
707 .opt_clks_cnt = ARRAY_SIZE(dss_dsi1_opt_clks),
Tomi Valkeinen543b2842014-10-09 17:03:16 +0300708 .parent_hwmod = &omap44xx_dss_hwmod,
Benoit Coussond63bd742011-01-27 11:17:03 +0000709};
710
711/* dss_dsi2 */
Tomi Valkeinenb38911f2013-06-11 10:37:19 +0300712static struct omap_hwmod_irq_info omap44xx_dss_dsi2_irqs[] = {
713 { .irq = 84 + OMAP44XX_IRQ_GIC_START },
714 { .irq = -1 }
715};
716
717static struct omap_hwmod_dma_info omap44xx_dss_dsi2_sdma_reqs[] = {
718 { .dma_req = 83 + OMAP44XX_DMA_REQ_START },
719 { .dma_req = -1 }
720};
721
Tomi Valkeinen3a23aaf2011-07-09 20:39:44 -0600722static struct omap_hwmod_opt_clk dss_dsi2_opt_clks[] = {
723 { .role = "sys_clk", .clk = "dss_sys_clk" },
724};
725
Benoit Coussond63bd742011-01-27 11:17:03 +0000726static struct omap_hwmod omap44xx_dss_dsi2_hwmod = {
727 .name = "dss_dsi2",
728 .class = &omap44xx_dsi_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600729 .clkdm_name = "l3_dss_clkdm",
Tomi Valkeinenb38911f2013-06-11 10:37:19 +0300730 .mpu_irqs = omap44xx_dss_dsi2_irqs,
Marc Zyngier0fb22a82015-01-17 10:21:08 +0000731 .xlate_irq = omap4_xlate_irq,
Tomi Valkeinenb38911f2013-06-11 10:37:19 +0300732 .sdma_reqs = omap44xx_dss_dsi2_sdma_reqs,
Tomi Valkeinenda7cdfa2011-07-09 20:39:45 -0600733 .main_clk = "dss_dss_clk",
Benoit Coussond63bd742011-01-27 11:17:03 +0000734 .prcm = {
735 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600736 .clkctrl_offs = OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600737 .context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET,
Benoit Coussond63bd742011-01-27 11:17:03 +0000738 },
739 },
Tomi Valkeinen3a23aaf2011-07-09 20:39:44 -0600740 .opt_clks = dss_dsi2_opt_clks,
741 .opt_clks_cnt = ARRAY_SIZE(dss_dsi2_opt_clks),
Tomi Valkeinen543b2842014-10-09 17:03:16 +0300742 .parent_hwmod = &omap44xx_dss_hwmod,
Benoit Coussond63bd742011-01-27 11:17:03 +0000743};
744
745/*
746 * 'hdmi' class
747 * hdmi controller
748 */
749
750static struct omap_hwmod_class_sysconfig omap44xx_hdmi_sysc = {
751 .rev_offs = 0x0000,
752 .sysc_offs = 0x0010,
753 .sysc_flags = (SYSC_HAS_RESET_STATUS | SYSC_HAS_SIDLEMODE |
754 SYSC_HAS_SOFTRESET),
755 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
756 SIDLE_SMART_WKUP),
757 .sysc_fields = &omap_hwmod_sysc_type2,
758};
759
760static struct omap_hwmod_class omap44xx_hdmi_hwmod_class = {
761 .name = "hdmi",
762 .sysc = &omap44xx_hdmi_sysc,
763};
764
765/* dss_hdmi */
Tomi Valkeinenb38911f2013-06-11 10:37:19 +0300766static struct omap_hwmod_irq_info omap44xx_dss_hdmi_irqs[] = {
767 { .irq = 101 + OMAP44XX_IRQ_GIC_START },
768 { .irq = -1 }
769};
770
771static struct omap_hwmod_dma_info omap44xx_dss_hdmi_sdma_reqs[] = {
772 { .dma_req = 75 + OMAP44XX_DMA_REQ_START },
773 { .dma_req = -1 }
774};
775
Tomi Valkeinen3a23aaf2011-07-09 20:39:44 -0600776static struct omap_hwmod_opt_clk dss_hdmi_opt_clks[] = {
777 { .role = "sys_clk", .clk = "dss_sys_clk" },
Tero Kristo24d8d492017-05-31 17:59:59 +0300778 { .role = "hdmi_clk", .clk = "dss_48mhz_clk" },
Tomi Valkeinen3a23aaf2011-07-09 20:39:44 -0600779};
780
Benoit Coussond63bd742011-01-27 11:17:03 +0000781static struct omap_hwmod omap44xx_dss_hdmi_hwmod = {
782 .name = "dss_hdmi",
783 .class = &omap44xx_hdmi_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600784 .clkdm_name = "l3_dss_clkdm",
Ricardo Neridc57aef2012-06-21 10:08:53 +0200785 /*
786 * HDMI audio requires to use no-idle mode. Hence,
787 * set idle mode by software.
788 */
Tero Kristo24d8d492017-05-31 17:59:59 +0300789 .flags = HWMOD_SWSUP_SIDLE | HWMOD_OPT_CLKS_NEEDED,
Tomi Valkeinenb38911f2013-06-11 10:37:19 +0300790 .mpu_irqs = omap44xx_dss_hdmi_irqs,
Marc Zyngier0fb22a82015-01-17 10:21:08 +0000791 .xlate_irq = omap4_xlate_irq,
Tomi Valkeinenb38911f2013-06-11 10:37:19 +0300792 .sdma_reqs = omap44xx_dss_hdmi_sdma_reqs,
Tomi Valkeinen4d0698d2011-11-08 03:16:12 -0700793 .main_clk = "dss_48mhz_clk",
Benoit Coussond63bd742011-01-27 11:17:03 +0000794 .prcm = {
795 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600796 .clkctrl_offs = OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600797 .context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET,
Benoit Coussond63bd742011-01-27 11:17:03 +0000798 },
799 },
Tomi Valkeinen3a23aaf2011-07-09 20:39:44 -0600800 .opt_clks = dss_hdmi_opt_clks,
801 .opt_clks_cnt = ARRAY_SIZE(dss_hdmi_opt_clks),
Tomi Valkeinen543b2842014-10-09 17:03:16 +0300802 .parent_hwmod = &omap44xx_dss_hwmod,
Benoit Coussond63bd742011-01-27 11:17:03 +0000803};
804
805/*
806 * 'rfbi' class
807 * remote frame buffer interface
808 */
809
810static struct omap_hwmod_class_sysconfig omap44xx_rfbi_sysc = {
811 .rev_offs = 0x0000,
812 .sysc_offs = 0x0010,
813 .syss_offs = 0x0014,
814 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_SIDLEMODE |
815 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
816 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
817 .sysc_fields = &omap_hwmod_sysc_type1,
818};
819
820static struct omap_hwmod_class omap44xx_rfbi_hwmod_class = {
821 .name = "rfbi",
822 .sysc = &omap44xx_rfbi_sysc,
823};
824
825/* dss_rfbi */
Tomi Valkeinenb38911f2013-06-11 10:37:19 +0300826static struct omap_hwmod_dma_info omap44xx_dss_rfbi_sdma_reqs[] = {
827 { .dma_req = 13 + OMAP44XX_DMA_REQ_START },
828 { .dma_req = -1 }
829};
830
Tomi Valkeinen3a23aaf2011-07-09 20:39:44 -0600831static struct omap_hwmod_opt_clk dss_rfbi_opt_clks[] = {
Tomi Valkeinen2cc84f42014-10-09 17:03:18 +0300832 { .role = "ick", .clk = "l3_div_ck" },
Tomi Valkeinen3a23aaf2011-07-09 20:39:44 -0600833};
834
Benoit Coussond63bd742011-01-27 11:17:03 +0000835static struct omap_hwmod omap44xx_dss_rfbi_hwmod = {
836 .name = "dss_rfbi",
837 .class = &omap44xx_rfbi_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600838 .clkdm_name = "l3_dss_clkdm",
Tomi Valkeinenb38911f2013-06-11 10:37:19 +0300839 .sdma_reqs = omap44xx_dss_rfbi_sdma_reqs,
Tomi Valkeinenda7cdfa2011-07-09 20:39:45 -0600840 .main_clk = "dss_dss_clk",
Benoit Coussond63bd742011-01-27 11:17:03 +0000841 .prcm = {
842 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600843 .clkctrl_offs = OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600844 .context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET,
Benoit Coussond63bd742011-01-27 11:17:03 +0000845 },
846 },
Tomi Valkeinen3a23aaf2011-07-09 20:39:44 -0600847 .opt_clks = dss_rfbi_opt_clks,
848 .opt_clks_cnt = ARRAY_SIZE(dss_rfbi_opt_clks),
Tomi Valkeinen543b2842014-10-09 17:03:16 +0300849 .parent_hwmod = &omap44xx_dss_hwmod,
Benoit Coussond63bd742011-01-27 11:17:03 +0000850};
851
852/*
853 * 'venc' class
854 * video encoder
855 */
856
857static struct omap_hwmod_class omap44xx_venc_hwmod_class = {
858 .name = "venc",
859};
860
861/* dss_venc */
Tero Kristo24d8d492017-05-31 17:59:59 +0300862static struct omap_hwmod_opt_clk dss_venc_opt_clks[] = {
863 { .role = "tv_clk", .clk = "dss_tv_clk" },
864};
865
Benoit Coussond63bd742011-01-27 11:17:03 +0000866static struct omap_hwmod omap44xx_dss_venc_hwmod = {
867 .name = "dss_venc",
868 .class = &omap44xx_venc_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600869 .clkdm_name = "l3_dss_clkdm",
Tomi Valkeinen4d0698d2011-11-08 03:16:12 -0700870 .main_clk = "dss_tv_clk",
Tero Kristo24d8d492017-05-31 17:59:59 +0300871 .flags = HWMOD_OPT_CLKS_NEEDED,
Benoit Coussond63bd742011-01-27 11:17:03 +0000872 .prcm = {
873 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600874 .clkctrl_offs = OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600875 .context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET,
Benoit Coussond63bd742011-01-27 11:17:03 +0000876 },
877 },
Tomi Valkeinen543b2842014-10-09 17:03:16 +0300878 .parent_hwmod = &omap44xx_dss_hwmod,
Tero Kristo24d8d492017-05-31 17:59:59 +0300879 .opt_clks = dss_venc_opt_clks,
880 .opt_clks_cnt = ARRAY_SIZE(dss_venc_opt_clks),
Benoit Coussond63bd742011-01-27 11:17:03 +0000881};
882
883/*
Paul Walmsley42b9e382012-04-19 13:33:54 -0600884 * 'elm' class
885 * bch error location module
886 */
887
888static struct omap_hwmod_class_sysconfig omap44xx_elm_sysc = {
889 .rev_offs = 0x0000,
890 .sysc_offs = 0x0010,
891 .syss_offs = 0x0014,
892 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
893 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
894 SYSS_HAS_RESET_STATUS),
895 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
896 .sysc_fields = &omap_hwmod_sysc_type1,
897};
898
899static struct omap_hwmod_class omap44xx_elm_hwmod_class = {
900 .name = "elm",
901 .sysc = &omap44xx_elm_sysc,
902};
903
904/* elm */
Paul Walmsley42b9e382012-04-19 13:33:54 -0600905static struct omap_hwmod omap44xx_elm_hwmod = {
906 .name = "elm",
907 .class = &omap44xx_elm_hwmod_class,
908 .clkdm_name = "l4_per_clkdm",
Paul Walmsley42b9e382012-04-19 13:33:54 -0600909 .prcm = {
910 .omap4 = {
911 .clkctrl_offs = OMAP4_CM_L4PER_ELM_CLKCTRL_OFFSET,
912 .context_offs = OMAP4_RM_L4PER_ELM_CONTEXT_OFFSET,
913 },
914 },
915};
916
917/*
Paul Walmsleybf30f952012-04-19 13:33:52 -0600918 * 'emif' class
919 * external memory interface no1
920 */
921
922static struct omap_hwmod_class_sysconfig omap44xx_emif_sysc = {
923 .rev_offs = 0x0000,
924};
925
926static struct omap_hwmod_class omap44xx_emif_hwmod_class = {
927 .name = "emif",
928 .sysc = &omap44xx_emif_sysc,
929};
930
931/* emif1 */
Paul Walmsleybf30f952012-04-19 13:33:52 -0600932static struct omap_hwmod omap44xx_emif1_hwmod = {
933 .name = "emif1",
934 .class = &omap44xx_emif_hwmod_class,
935 .clkdm_name = "l3_emif_clkdm",
Rajendra Nayakb2eb0002013-08-20 13:02:44 +0530936 .flags = HWMOD_INIT_NO_IDLE,
Paul Walmsleybf30f952012-04-19 13:33:52 -0600937 .main_clk = "ddrphy_ck",
938 .prcm = {
939 .omap4 = {
940 .clkctrl_offs = OMAP4_CM_MEMIF_EMIF_1_CLKCTRL_OFFSET,
941 .context_offs = OMAP4_RM_MEMIF_EMIF_1_CONTEXT_OFFSET,
942 .modulemode = MODULEMODE_HWCTRL,
943 },
944 },
945};
946
947/* emif2 */
Paul Walmsleybf30f952012-04-19 13:33:52 -0600948static struct omap_hwmod omap44xx_emif2_hwmod = {
949 .name = "emif2",
950 .class = &omap44xx_emif_hwmod_class,
951 .clkdm_name = "l3_emif_clkdm",
Rajendra Nayakb2eb0002013-08-20 13:02:44 +0530952 .flags = HWMOD_INIT_NO_IDLE,
Paul Walmsleybf30f952012-04-19 13:33:52 -0600953 .main_clk = "ddrphy_ck",
954 .prcm = {
955 .omap4 = {
956 .clkctrl_offs = OMAP4_CM_MEMIF_EMIF_2_CLKCTRL_OFFSET,
957 .context_offs = OMAP4_RM_MEMIF_EMIF_2_CONTEXT_OFFSET,
958 .modulemode = MODULEMODE_HWCTRL,
959 },
960 },
961};
962
963/*
Sebastian Reichel9a9ded82017-06-13 11:28:45 +0200964 Crypto modules AES0/1 belong to:
965 PD_L4_PER power domain
966 CD_L4_SEC clock domain
967 On the L3, the AES modules are mapped to
968 L3_CLK2: Peripherals and multimedia sub clock domain
969*/
970static struct omap_hwmod_class_sysconfig omap44xx_aes_sysc = {
971 .rev_offs = 0x80,
972 .sysc_offs = 0x84,
973 .syss_offs = 0x88,
974 .sysc_flags = SYSS_HAS_RESET_STATUS,
975};
976
977static struct omap_hwmod_class omap44xx_aes_hwmod_class = {
978 .name = "aes",
979 .sysc = &omap44xx_aes_sysc,
980};
981
982static struct omap_hwmod omap44xx_aes1_hwmod = {
983 .name = "aes1",
984 .class = &omap44xx_aes_hwmod_class,
985 .clkdm_name = "l4_secure_clkdm",
986 .main_clk = "l3_div_ck",
987 .prcm = {
988 .omap4 = {
989 .context_offs = OMAP4_RM_L4SEC_AES1_CONTEXT_OFFSET,
990 .clkctrl_offs = OMAP4_CM_L4SEC_AES1_CLKCTRL_OFFSET,
991 .modulemode = MODULEMODE_SWCTRL,
992 },
993 },
994};
995
996static struct omap_hwmod_ocp_if omap44xx_l3_main_2__aes1 = {
997 .master = &omap44xx_l4_per_hwmod,
998 .slave = &omap44xx_aes1_hwmod,
999 .clk = "l3_div_ck",
1000 .user = OCP_USER_MPU | OCP_USER_SDMA,
1001};
1002
1003/*
Ming Leib050f682012-04-19 13:33:50 -06001004 * 'fdif' class
1005 * face detection hw accelerator module
1006 */
1007
1008static struct omap_hwmod_class_sysconfig omap44xx_fdif_sysc = {
1009 .rev_offs = 0x0000,
1010 .sysc_offs = 0x0010,
1011 /*
1012 * FDIF needs 100 OCP clk cycles delay after a softreset before
1013 * accessing sysconfig again.
1014 * The lowest frequency at the moment for L3 bus is 100 MHz, so
1015 * 1usec delay is needed. Add an x2 margin to be safe (2 usecs).
1016 *
1017 * TODO: Indicate errata when available.
1018 */
1019 .srst_udelay = 2,
1020 .sysc_flags = (SYSC_HAS_MIDLEMODE | SYSC_HAS_RESET_STATUS |
1021 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
1022 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1023 MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
1024 .sysc_fields = &omap_hwmod_sysc_type2,
1025};
1026
1027static struct omap_hwmod_class omap44xx_fdif_hwmod_class = {
1028 .name = "fdif",
1029 .sysc = &omap44xx_fdif_sysc,
1030};
1031
1032/* fdif */
Ming Leib050f682012-04-19 13:33:50 -06001033static struct omap_hwmod omap44xx_fdif_hwmod = {
1034 .name = "fdif",
1035 .class = &omap44xx_fdif_hwmod_class,
1036 .clkdm_name = "iss_clkdm",
Ming Leib050f682012-04-19 13:33:50 -06001037 .main_clk = "fdif_fck",
1038 .prcm = {
1039 .omap4 = {
1040 .clkctrl_offs = OMAP4_CM_CAM_FDIF_CLKCTRL_OFFSET,
1041 .context_offs = OMAP4_RM_CAM_FDIF_CONTEXT_OFFSET,
1042 .modulemode = MODULEMODE_SWCTRL,
1043 },
1044 },
1045};
1046
1047/*
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001048 * 'gpio' class
1049 * general purpose io module
1050 */
1051
1052static struct omap_hwmod_class_sysconfig omap44xx_gpio_sysc = {
1053 .rev_offs = 0x0000,
1054 .sysc_offs = 0x0010,
1055 .syss_offs = 0x0114,
Benoit Cousson0cfe8752010-12-21 21:08:33 -07001056 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_ENAWAKEUP |
1057 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
1058 SYSS_HAS_RESET_STATUS),
Benoit Cousson7cffa6b2010-12-21 21:31:28 -07001059 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1060 SIDLE_SMART_WKUP),
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001061 .sysc_fields = &omap_hwmod_sysc_type1,
1062};
1063
1064static struct omap_hwmod_class omap44xx_gpio_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +00001065 .name = "gpio",
1066 .sysc = &omap44xx_gpio_sysc,
1067 .rev = 2,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001068};
1069
1070/* gpio dev_attr */
1071static struct omap_gpio_dev_attr gpio_dev_attr = {
Benoit Coussonfe134712010-12-23 22:30:32 +00001072 .bank_width = 32,
1073 .dbck_flag = true,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001074};
1075
1076/* gpio1 */
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001077static struct omap_hwmod_opt_clk gpio1_opt_clks[] = {
Benoit Coussonb399bca2010-12-21 21:08:34 -07001078 { .role = "dbclk", .clk = "gpio1_dbclk" },
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001079};
1080
1081static struct omap_hwmod omap44xx_gpio1_hwmod = {
1082 .name = "gpio1",
1083 .class = &omap44xx_gpio_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001084 .clkdm_name = "l4_wkup_clkdm",
Paul Walmsley17b7e7d2013-01-26 00:48:54 -07001085 .main_clk = "l4_wkup_clk_mux_ck",
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001086 .prcm = {
1087 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001088 .clkctrl_offs = OMAP4_CM_WKUP_GPIO1_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001089 .context_offs = OMAP4_RM_WKUP_GPIO1_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001090 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001091 },
1092 },
1093 .opt_clks = gpio1_opt_clks,
1094 .opt_clks_cnt = ARRAY_SIZE(gpio1_opt_clks),
1095 .dev_attr = &gpio_dev_attr,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001096};
1097
1098/* gpio2 */
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001099static struct omap_hwmod_opt_clk gpio2_opt_clks[] = {
Benoit Coussonb399bca2010-12-21 21:08:34 -07001100 { .role = "dbclk", .clk = "gpio2_dbclk" },
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001101};
1102
1103static struct omap_hwmod omap44xx_gpio2_hwmod = {
1104 .name = "gpio2",
1105 .class = &omap44xx_gpio_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001106 .clkdm_name = "l4_per_clkdm",
Benoit Coussonb399bca2010-12-21 21:08:34 -07001107 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
Paul Walmsley17b7e7d2013-01-26 00:48:54 -07001108 .main_clk = "l4_div_ck",
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001109 .prcm = {
1110 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001111 .clkctrl_offs = OMAP4_CM_L4PER_GPIO2_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001112 .context_offs = OMAP4_RM_L4PER_GPIO2_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001113 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001114 },
1115 },
1116 .opt_clks = gpio2_opt_clks,
1117 .opt_clks_cnt = ARRAY_SIZE(gpio2_opt_clks),
1118 .dev_attr = &gpio_dev_attr,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001119};
1120
1121/* gpio3 */
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001122static struct omap_hwmod_opt_clk gpio3_opt_clks[] = {
Benoit Coussonb399bca2010-12-21 21:08:34 -07001123 { .role = "dbclk", .clk = "gpio3_dbclk" },
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001124};
1125
1126static struct omap_hwmod omap44xx_gpio3_hwmod = {
1127 .name = "gpio3",
1128 .class = &omap44xx_gpio_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001129 .clkdm_name = "l4_per_clkdm",
Benoit Coussonb399bca2010-12-21 21:08:34 -07001130 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
Paul Walmsley17b7e7d2013-01-26 00:48:54 -07001131 .main_clk = "l4_div_ck",
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001132 .prcm = {
1133 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001134 .clkctrl_offs = OMAP4_CM_L4PER_GPIO3_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001135 .context_offs = OMAP4_RM_L4PER_GPIO3_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001136 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001137 },
1138 },
1139 .opt_clks = gpio3_opt_clks,
1140 .opt_clks_cnt = ARRAY_SIZE(gpio3_opt_clks),
1141 .dev_attr = &gpio_dev_attr,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001142};
1143
1144/* gpio4 */
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001145static struct omap_hwmod_opt_clk gpio4_opt_clks[] = {
Benoit Coussonb399bca2010-12-21 21:08:34 -07001146 { .role = "dbclk", .clk = "gpio4_dbclk" },
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001147};
1148
1149static struct omap_hwmod omap44xx_gpio4_hwmod = {
1150 .name = "gpio4",
1151 .class = &omap44xx_gpio_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001152 .clkdm_name = "l4_per_clkdm",
Benoit Coussonb399bca2010-12-21 21:08:34 -07001153 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
Paul Walmsley17b7e7d2013-01-26 00:48:54 -07001154 .main_clk = "l4_div_ck",
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001155 .prcm = {
1156 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001157 .clkctrl_offs = OMAP4_CM_L4PER_GPIO4_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001158 .context_offs = OMAP4_RM_L4PER_GPIO4_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001159 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001160 },
1161 },
1162 .opt_clks = gpio4_opt_clks,
1163 .opt_clks_cnt = ARRAY_SIZE(gpio4_opt_clks),
1164 .dev_attr = &gpio_dev_attr,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001165};
1166
1167/* gpio5 */
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001168static struct omap_hwmod_opt_clk gpio5_opt_clks[] = {
Benoit Coussonb399bca2010-12-21 21:08:34 -07001169 { .role = "dbclk", .clk = "gpio5_dbclk" },
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001170};
1171
1172static struct omap_hwmod omap44xx_gpio5_hwmod = {
1173 .name = "gpio5",
1174 .class = &omap44xx_gpio_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001175 .clkdm_name = "l4_per_clkdm",
Benoit Coussonb399bca2010-12-21 21:08:34 -07001176 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
Paul Walmsley17b7e7d2013-01-26 00:48:54 -07001177 .main_clk = "l4_div_ck",
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001178 .prcm = {
1179 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001180 .clkctrl_offs = OMAP4_CM_L4PER_GPIO5_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001181 .context_offs = OMAP4_RM_L4PER_GPIO5_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001182 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001183 },
1184 },
1185 .opt_clks = gpio5_opt_clks,
1186 .opt_clks_cnt = ARRAY_SIZE(gpio5_opt_clks),
1187 .dev_attr = &gpio_dev_attr,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001188};
1189
1190/* gpio6 */
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001191static struct omap_hwmod_opt_clk gpio6_opt_clks[] = {
Benoit Coussonb399bca2010-12-21 21:08:34 -07001192 { .role = "dbclk", .clk = "gpio6_dbclk" },
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001193};
1194
1195static struct omap_hwmod omap44xx_gpio6_hwmod = {
1196 .name = "gpio6",
1197 .class = &omap44xx_gpio_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001198 .clkdm_name = "l4_per_clkdm",
Benoit Coussonb399bca2010-12-21 21:08:34 -07001199 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
Paul Walmsley17b7e7d2013-01-26 00:48:54 -07001200 .main_clk = "l4_div_ck",
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001201 .prcm = {
1202 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001203 .clkctrl_offs = OMAP4_CM_L4PER_GPIO6_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001204 .context_offs = OMAP4_RM_L4PER_GPIO6_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001205 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001206 },
1207 },
1208 .opt_clks = gpio6_opt_clks,
1209 .opt_clks_cnt = ARRAY_SIZE(gpio6_opt_clks),
1210 .dev_attr = &gpio_dev_attr,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001211};
1212
1213/*
Benoît Coussoneb42b5d2012-04-19 13:33:51 -06001214 * 'gpmc' class
1215 * general purpose memory controller
1216 */
1217
1218static struct omap_hwmod_class_sysconfig omap44xx_gpmc_sysc = {
1219 .rev_offs = 0x0000,
1220 .sysc_offs = 0x0010,
1221 .syss_offs = 0x0014,
1222 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_SIDLEMODE |
1223 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
1224 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
1225 .sysc_fields = &omap_hwmod_sysc_type1,
1226};
1227
1228static struct omap_hwmod_class omap44xx_gpmc_hwmod_class = {
1229 .name = "gpmc",
1230 .sysc = &omap44xx_gpmc_sysc,
1231};
1232
1233/* gpmc */
Benoît Coussoneb42b5d2012-04-19 13:33:51 -06001234static struct omap_hwmod omap44xx_gpmc_hwmod = {
1235 .name = "gpmc",
1236 .class = &omap44xx_gpmc_hwmod_class,
1237 .clkdm_name = "l3_2_clkdm",
Tony Lindgren63aa9452015-06-01 19:22:10 -06001238 /* Skip reset for CONFIG_OMAP_GPMC_DEBUG for bootloader timings */
1239 .flags = DEBUG_OMAP_GPMC_HWMOD_FLAGS,
Benoît Coussoneb42b5d2012-04-19 13:33:51 -06001240 .prcm = {
1241 .omap4 = {
1242 .clkctrl_offs = OMAP4_CM_L3_2_GPMC_CLKCTRL_OFFSET,
1243 .context_offs = OMAP4_RM_L3_2_GPMC_CONTEXT_OFFSET,
1244 .modulemode = MODULEMODE_HWCTRL,
1245 },
1246 },
1247};
1248
1249/*
Paul Walmsley9def3902012-04-19 13:33:53 -06001250 * 'gpu' class
1251 * 2d/3d graphics accelerator
1252 */
1253
1254static struct omap_hwmod_class_sysconfig omap44xx_gpu_sysc = {
1255 .rev_offs = 0x1fc00,
1256 .sysc_offs = 0x1fc10,
1257 .sysc_flags = (SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE),
1258 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1259 SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
1260 MSTANDBY_SMART | MSTANDBY_SMART_WKUP),
1261 .sysc_fields = &omap_hwmod_sysc_type2,
1262};
1263
1264static struct omap_hwmod_class omap44xx_gpu_hwmod_class = {
1265 .name = "gpu",
1266 .sysc = &omap44xx_gpu_sysc,
1267};
1268
1269/* gpu */
Paul Walmsley9def3902012-04-19 13:33:53 -06001270static struct omap_hwmod omap44xx_gpu_hwmod = {
1271 .name = "gpu",
1272 .class = &omap44xx_gpu_hwmod_class,
1273 .clkdm_name = "l3_gfx_clkdm",
Paul Walmsleyee877ac2013-01-26 00:48:55 -07001274 .main_clk = "sgx_clk_mux",
Paul Walmsley9def3902012-04-19 13:33:53 -06001275 .prcm = {
1276 .omap4 = {
1277 .clkctrl_offs = OMAP4_CM_GFX_GFX_CLKCTRL_OFFSET,
1278 .context_offs = OMAP4_RM_GFX_GFX_CONTEXT_OFFSET,
1279 .modulemode = MODULEMODE_SWCTRL,
1280 },
1281 },
1282};
1283
1284/*
Paul Walmsleya091c082012-04-19 13:33:50 -06001285 * 'hdq1w' class
1286 * hdq / 1-wire serial interface controller
1287 */
1288
1289static struct omap_hwmod_class_sysconfig omap44xx_hdq1w_sysc = {
1290 .rev_offs = 0x0000,
1291 .sysc_offs = 0x0014,
1292 .syss_offs = 0x0018,
1293 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_SOFTRESET |
1294 SYSS_HAS_RESET_STATUS),
1295 .sysc_fields = &omap_hwmod_sysc_type1,
1296};
1297
1298static struct omap_hwmod_class omap44xx_hdq1w_hwmod_class = {
1299 .name = "hdq1w",
1300 .sysc = &omap44xx_hdq1w_sysc,
1301};
1302
1303/* hdq1w */
Paul Walmsleya091c082012-04-19 13:33:50 -06001304static struct omap_hwmod omap44xx_hdq1w_hwmod = {
1305 .name = "hdq1w",
1306 .class = &omap44xx_hdq1w_hwmod_class,
1307 .clkdm_name = "l4_per_clkdm",
1308 .flags = HWMOD_INIT_NO_RESET, /* XXX temporary */
Paul Walmsley17b7e7d2013-01-26 00:48:54 -07001309 .main_clk = "func_12m_fclk",
Paul Walmsleya091c082012-04-19 13:33:50 -06001310 .prcm = {
1311 .omap4 = {
1312 .clkctrl_offs = OMAP4_CM_L4PER_HDQ1W_CLKCTRL_OFFSET,
1313 .context_offs = OMAP4_RM_L4PER_HDQ1W_CONTEXT_OFFSET,
1314 .modulemode = MODULEMODE_SWCTRL,
1315 },
1316 },
1317};
1318
1319/*
Benoit Cousson407a6882011-02-15 22:39:48 +01001320 * 'hsi' class
1321 * mipi high-speed synchronous serial interface (multichannel and full-duplex
1322 * serial if)
1323 */
1324
1325static struct omap_hwmod_class_sysconfig omap44xx_hsi_sysc = {
1326 .rev_offs = 0x0000,
1327 .sysc_offs = 0x0010,
1328 .syss_offs = 0x0014,
1329 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_EMUFREE |
1330 SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE |
1331 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
1332 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1333 SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
Benoit Coussonc614ebf2011-07-01 22:54:01 +02001334 MSTANDBY_SMART | MSTANDBY_SMART_WKUP),
Benoit Cousson407a6882011-02-15 22:39:48 +01001335 .sysc_fields = &omap_hwmod_sysc_type1,
1336};
1337
1338static struct omap_hwmod_class omap44xx_hsi_hwmod_class = {
1339 .name = "hsi",
1340 .sysc = &omap44xx_hsi_sysc,
1341};
1342
1343/* hsi */
Benoit Cousson407a6882011-02-15 22:39:48 +01001344static struct omap_hwmod omap44xx_hsi_hwmod = {
1345 .name = "hsi",
1346 .class = &omap44xx_hsi_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001347 .clkdm_name = "l3_init_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +01001348 .main_clk = "hsi_fck",
Benoit Cousson00fe6102011-07-09 19:14:28 -06001349 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01001350 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001351 .clkctrl_offs = OMAP4_CM_L3INIT_HSI_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001352 .context_offs = OMAP4_RM_L3INIT_HSI_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001353 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01001354 },
1355 },
Benoit Cousson407a6882011-02-15 22:39:48 +01001356};
1357
1358/*
Benoit Coussonf7764712010-09-21 19:37:14 +05301359 * 'i2c' class
1360 * multimaster high-speed i2c controller
1361 */
1362
1363static struct omap_hwmod_class_sysconfig omap44xx_i2c_sysc = {
1364 .sysc_offs = 0x0010,
1365 .syss_offs = 0x0090,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001366 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
1367 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE |
Benoit Cousson0cfe8752010-12-21 21:08:33 -07001368 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
Benoit Cousson7cffa6b2010-12-21 21:31:28 -07001369 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1370 SIDLE_SMART_WKUP),
Benoit Coussonf7764712010-09-21 19:37:14 +05301371 .sysc_fields = &omap_hwmod_sysc_type1,
1372};
1373
1374static struct omap_hwmod_class omap44xx_i2c_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +00001375 .name = "i2c",
1376 .sysc = &omap44xx_i2c_sysc,
Andy Greendb791a72011-07-10 05:27:15 -06001377 .rev = OMAP_I2C_IP_VERSION_2,
Avinash.H.M6d3c55f2011-07-10 05:27:16 -06001378 .reset = &omap_i2c_reset,
Benoit Coussonf7764712010-09-21 19:37:14 +05301379};
1380
Andy Green4d4441a2011-07-10 05:27:16 -06001381static struct omap_i2c_dev_attr i2c_dev_attr = {
Shubhrajyoti D972deb42012-11-26 15:25:11 +05301382 .flags = OMAP_I2C_FLAG_BUS_SHIFT_NONE,
Andy Green4d4441a2011-07-10 05:27:16 -06001383};
1384
Benoit Coussonf7764712010-09-21 19:37:14 +05301385/* i2c1 */
Benoit Coussonf7764712010-09-21 19:37:14 +05301386static struct omap_hwmod omap44xx_i2c1_hwmod = {
1387 .name = "i2c1",
1388 .class = &omap44xx_i2c_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001389 .clkdm_name = "l4_per_clkdm",
Shubhrajyoti D3e47dc62011-12-13 16:25:54 +05301390 .flags = HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT,
Paul Walmsley17b7e7d2013-01-26 00:48:54 -07001391 .main_clk = "func_96m_fclk",
Benoit Coussonf7764712010-09-21 19:37:14 +05301392 .prcm = {
1393 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001394 .clkctrl_offs = OMAP4_CM_L4PER_I2C1_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001395 .context_offs = OMAP4_RM_L4PER_I2C1_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001396 .modulemode = MODULEMODE_SWCTRL,
Benoit Coussonf7764712010-09-21 19:37:14 +05301397 },
1398 },
Andy Green4d4441a2011-07-10 05:27:16 -06001399 .dev_attr = &i2c_dev_attr,
Benoit Coussonf7764712010-09-21 19:37:14 +05301400};
1401
1402/* i2c2 */
Benoit Coussonf7764712010-09-21 19:37:14 +05301403static struct omap_hwmod omap44xx_i2c2_hwmod = {
1404 .name = "i2c2",
1405 .class = &omap44xx_i2c_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001406 .clkdm_name = "l4_per_clkdm",
Shubhrajyoti D3e47dc62011-12-13 16:25:54 +05301407 .flags = HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT,
Paul Walmsley17b7e7d2013-01-26 00:48:54 -07001408 .main_clk = "func_96m_fclk",
Benoit Coussonf7764712010-09-21 19:37:14 +05301409 .prcm = {
1410 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001411 .clkctrl_offs = OMAP4_CM_L4PER_I2C2_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001412 .context_offs = OMAP4_RM_L4PER_I2C2_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001413 .modulemode = MODULEMODE_SWCTRL,
Benoit Coussonf7764712010-09-21 19:37:14 +05301414 },
1415 },
Andy Green4d4441a2011-07-10 05:27:16 -06001416 .dev_attr = &i2c_dev_attr,
Benoit Coussonf7764712010-09-21 19:37:14 +05301417};
1418
1419/* i2c3 */
Benoit Coussonf7764712010-09-21 19:37:14 +05301420static struct omap_hwmod omap44xx_i2c3_hwmod = {
1421 .name = "i2c3",
1422 .class = &omap44xx_i2c_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001423 .clkdm_name = "l4_per_clkdm",
Shubhrajyoti D3e47dc62011-12-13 16:25:54 +05301424 .flags = HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT,
Paul Walmsley17b7e7d2013-01-26 00:48:54 -07001425 .main_clk = "func_96m_fclk",
Benoit Coussonf7764712010-09-21 19:37:14 +05301426 .prcm = {
1427 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001428 .clkctrl_offs = OMAP4_CM_L4PER_I2C3_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001429 .context_offs = OMAP4_RM_L4PER_I2C3_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001430 .modulemode = MODULEMODE_SWCTRL,
Benoit Coussonf7764712010-09-21 19:37:14 +05301431 },
1432 },
Andy Green4d4441a2011-07-10 05:27:16 -06001433 .dev_attr = &i2c_dev_attr,
Benoit Coussonf7764712010-09-21 19:37:14 +05301434};
1435
1436/* i2c4 */
Benoit Coussonf7764712010-09-21 19:37:14 +05301437static struct omap_hwmod omap44xx_i2c4_hwmod = {
1438 .name = "i2c4",
1439 .class = &omap44xx_i2c_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001440 .clkdm_name = "l4_per_clkdm",
Shubhrajyoti D3e47dc62011-12-13 16:25:54 +05301441 .flags = HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT,
Paul Walmsley17b7e7d2013-01-26 00:48:54 -07001442 .main_clk = "func_96m_fclk",
Benoit Coussonf7764712010-09-21 19:37:14 +05301443 .prcm = {
1444 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001445 .clkctrl_offs = OMAP4_CM_L4PER_I2C4_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001446 .context_offs = OMAP4_RM_L4PER_I2C4_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001447 .modulemode = MODULEMODE_SWCTRL,
Benoit Coussonf7764712010-09-21 19:37:14 +05301448 },
1449 },
Andy Green4d4441a2011-07-10 05:27:16 -06001450 .dev_attr = &i2c_dev_attr,
Benoit Coussonf7764712010-09-21 19:37:14 +05301451};
1452
1453/*
Benoit Cousson407a6882011-02-15 22:39:48 +01001454 * 'ipu' class
1455 * imaging processor unit
1456 */
1457
1458static struct omap_hwmod_class omap44xx_ipu_hwmod_class = {
1459 .name = "ipu",
1460};
1461
1462/* ipu */
Benoit Cousson407a6882011-02-15 22:39:48 +01001463static struct omap_hwmod_rst_info omap44xx_ipu_resets[] = {
Paul Walmsleyf2f57362012-04-18 19:10:02 -06001464 { .name = "cpu0", .rst_shift = 0 },
1465 { .name = "cpu1", .rst_shift = 1 },
Benoit Cousson407a6882011-02-15 22:39:48 +01001466};
1467
Benoit Cousson407a6882011-02-15 22:39:48 +01001468static struct omap_hwmod omap44xx_ipu_hwmod = {
1469 .name = "ipu",
1470 .class = &omap44xx_ipu_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001471 .clkdm_name = "ducati_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +01001472 .rst_lines = omap44xx_ipu_resets,
1473 .rst_lines_cnt = ARRAY_SIZE(omap44xx_ipu_resets),
Omar Ramirez Luna298ea442012-11-19 19:05:52 -06001474 .main_clk = "ducati_clk_mux_ck",
Benoit Cousson00fe6102011-07-09 19:14:28 -06001475 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01001476 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001477 .clkctrl_offs = OMAP4_CM_DUCATI_DUCATI_CLKCTRL_OFFSET,
Benoit Coussoneaac3292011-07-10 05:56:31 -06001478 .rstctrl_offs = OMAP4_RM_DUCATI_RSTCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001479 .context_offs = OMAP4_RM_DUCATI_DUCATI_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001480 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01001481 },
1482 },
Benoit Cousson407a6882011-02-15 22:39:48 +01001483};
1484
1485/*
1486 * 'iss' class
1487 * external images sensor pixel data processor
1488 */
1489
1490static struct omap_hwmod_class_sysconfig omap44xx_iss_sysc = {
1491 .rev_offs = 0x0000,
1492 .sysc_offs = 0x0010,
Fernando Guzman Lugod99de7f2012-04-13 05:08:03 -06001493 /*
1494 * ISS needs 100 OCP clk cycles delay after a softreset before
1495 * accessing sysconfig again.
1496 * The lowest frequency at the moment for L3 bus is 100 MHz, so
1497 * 1usec delay is needed. Add an x2 margin to be safe (2 usecs).
1498 *
1499 * TODO: Indicate errata when available.
1500 */
1501 .srst_udelay = 2,
Benoit Cousson407a6882011-02-15 22:39:48 +01001502 .sysc_flags = (SYSC_HAS_MIDLEMODE | SYSC_HAS_RESET_STATUS |
1503 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
1504 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1505 SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
Benoit Coussonc614ebf2011-07-01 22:54:01 +02001506 MSTANDBY_SMART | MSTANDBY_SMART_WKUP),
Benoit Cousson407a6882011-02-15 22:39:48 +01001507 .sysc_fields = &omap_hwmod_sysc_type2,
1508};
1509
1510static struct omap_hwmod_class omap44xx_iss_hwmod_class = {
1511 .name = "iss",
1512 .sysc = &omap44xx_iss_sysc,
1513};
1514
1515/* iss */
Benoit Cousson407a6882011-02-15 22:39:48 +01001516static struct omap_hwmod_opt_clk iss_opt_clks[] = {
1517 { .role = "ctrlclk", .clk = "iss_ctrlclk" },
1518};
1519
1520static struct omap_hwmod omap44xx_iss_hwmod = {
1521 .name = "iss",
1522 .class = &omap44xx_iss_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001523 .clkdm_name = "iss_clkdm",
Paul Walmsley17b7e7d2013-01-26 00:48:54 -07001524 .main_clk = "ducati_clk_mux_ck",
Benoit Cousson00fe6102011-07-09 19:14:28 -06001525 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01001526 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001527 .clkctrl_offs = OMAP4_CM_CAM_ISS_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001528 .context_offs = OMAP4_RM_CAM_ISS_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001529 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01001530 },
1531 },
1532 .opt_clks = iss_opt_clks,
1533 .opt_clks_cnt = ARRAY_SIZE(iss_opt_clks),
Benoit Cousson407a6882011-02-15 22:39:48 +01001534};
1535
1536/*
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001537 * 'iva' class
1538 * multi-standard video encoder/decoder hardware accelerator
1539 */
1540
1541static struct omap_hwmod_class omap44xx_iva_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +00001542 .name = "iva",
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001543};
1544
1545/* iva */
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001546static struct omap_hwmod_rst_info omap44xx_iva_resets[] = {
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001547 { .name = "seq0", .rst_shift = 0 },
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001548 { .name = "seq1", .rst_shift = 1 },
Paul Walmsleyf2f57362012-04-18 19:10:02 -06001549 { .name = "logic", .rst_shift = 2 },
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001550};
1551
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001552static struct omap_hwmod omap44xx_iva_hwmod = {
1553 .name = "iva",
1554 .class = &omap44xx_iva_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001555 .clkdm_name = "ivahd_clkdm",
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001556 .rst_lines = omap44xx_iva_resets,
1557 .rst_lines_cnt = ARRAY_SIZE(omap44xx_iva_resets),
Paul Walmsley17b7e7d2013-01-26 00:48:54 -07001558 .main_clk = "dpll_iva_m5x2_ck",
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001559 .prcm = {
1560 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001561 .clkctrl_offs = OMAP4_CM_IVAHD_IVAHD_CLKCTRL_OFFSET,
Benoit Coussoneaac3292011-07-10 05:56:31 -06001562 .rstctrl_offs = OMAP4_RM_IVAHD_RSTCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001563 .context_offs = OMAP4_RM_IVAHD_IVAHD_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001564 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001565 },
1566 },
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001567};
1568
1569/*
Benoit Cousson407a6882011-02-15 22:39:48 +01001570 * 'kbd' class
1571 * keyboard controller
1572 */
1573
1574static struct omap_hwmod_class_sysconfig omap44xx_kbd_sysc = {
1575 .rev_offs = 0x0000,
1576 .sysc_offs = 0x0010,
1577 .syss_offs = 0x0014,
1578 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
1579 SYSC_HAS_EMUFREE | SYSC_HAS_ENAWAKEUP |
1580 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
1581 SYSS_HAS_RESET_STATUS),
1582 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
1583 .sysc_fields = &omap_hwmod_sysc_type1,
1584};
1585
1586static struct omap_hwmod_class omap44xx_kbd_hwmod_class = {
1587 .name = "kbd",
1588 .sysc = &omap44xx_kbd_sysc,
1589};
1590
1591/* kbd */
Benoit Cousson407a6882011-02-15 22:39:48 +01001592static struct omap_hwmod omap44xx_kbd_hwmod = {
1593 .name = "kbd",
1594 .class = &omap44xx_kbd_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001595 .clkdm_name = "l4_wkup_clkdm",
Paul Walmsley17b7e7d2013-01-26 00:48:54 -07001596 .main_clk = "sys_32k_ck",
Benoit Cousson00fe6102011-07-09 19:14:28 -06001597 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01001598 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001599 .clkctrl_offs = OMAP4_CM_WKUP_KEYBOARD_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001600 .context_offs = OMAP4_RM_WKUP_KEYBOARD_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001601 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01001602 },
1603 },
Benoit Cousson407a6882011-02-15 22:39:48 +01001604};
1605
1606/*
Benoit Coussonec5df922011-02-02 19:27:21 +00001607 * 'mailbox' class
1608 * mailbox module allowing communication between the on-chip processors using a
1609 * queued mailbox-interrupt mechanism.
1610 */
1611
1612static struct omap_hwmod_class_sysconfig omap44xx_mailbox_sysc = {
1613 .rev_offs = 0x0000,
1614 .sysc_offs = 0x0010,
1615 .sysc_flags = (SYSC_HAS_RESET_STATUS | SYSC_HAS_SIDLEMODE |
1616 SYSC_HAS_SOFTRESET),
1617 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
1618 .sysc_fields = &omap_hwmod_sysc_type2,
1619};
1620
1621static struct omap_hwmod_class omap44xx_mailbox_hwmod_class = {
1622 .name = "mailbox",
1623 .sysc = &omap44xx_mailbox_sysc,
1624};
1625
1626/* mailbox */
Benoit Coussonec5df922011-02-02 19:27:21 +00001627static struct omap_hwmod omap44xx_mailbox_hwmod = {
1628 .name = "mailbox",
1629 .class = &omap44xx_mailbox_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001630 .clkdm_name = "l4_cfg_clkdm",
Benoit Cousson00fe6102011-07-09 19:14:28 -06001631 .prcm = {
Benoit Coussonec5df922011-02-02 19:27:21 +00001632 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001633 .clkctrl_offs = OMAP4_CM_L4CFG_MAILBOX_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001634 .context_offs = OMAP4_RM_L4CFG_MAILBOX_CONTEXT_OFFSET,
Benoit Coussonec5df922011-02-02 19:27:21 +00001635 },
1636 },
Benoit Coussonec5df922011-02-02 19:27:21 +00001637};
1638
1639/*
Benoît Cousson896d4e92012-04-19 13:33:54 -06001640 * 'mcasp' class
1641 * multi-channel audio serial port controller
1642 */
1643
1644/* The IP is not compliant to type1 / type2 scheme */
1645static struct omap_hwmod_sysc_fields omap_hwmod_sysc_type_mcasp = {
1646 .sidle_shift = 0,
1647};
1648
1649static struct omap_hwmod_class_sysconfig omap44xx_mcasp_sysc = {
1650 .sysc_offs = 0x0004,
1651 .sysc_flags = SYSC_HAS_SIDLEMODE,
1652 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1653 SIDLE_SMART_WKUP),
1654 .sysc_fields = &omap_hwmod_sysc_type_mcasp,
1655};
1656
1657static struct omap_hwmod_class omap44xx_mcasp_hwmod_class = {
1658 .name = "mcasp",
1659 .sysc = &omap44xx_mcasp_sysc,
1660};
1661
1662/* mcasp */
Benoît Cousson896d4e92012-04-19 13:33:54 -06001663static struct omap_hwmod omap44xx_mcasp_hwmod = {
1664 .name = "mcasp",
1665 .class = &omap44xx_mcasp_hwmod_class,
1666 .clkdm_name = "abe_clkdm",
Paul Walmsleyee877ac2013-01-26 00:48:55 -07001667 .main_clk = "func_mcasp_abe_gfclk",
Benoît Cousson896d4e92012-04-19 13:33:54 -06001668 .prcm = {
1669 .omap4 = {
1670 .clkctrl_offs = OMAP4_CM1_ABE_MCASP_CLKCTRL_OFFSET,
1671 .context_offs = OMAP4_RM_ABE_MCASP_CONTEXT_OFFSET,
1672 .modulemode = MODULEMODE_SWCTRL,
1673 },
1674 },
1675};
1676
1677/*
Benoit Cousson4ddff492011-01-31 14:50:30 +00001678 * 'mcbsp' class
1679 * multi channel buffered serial port controller
1680 */
1681
1682static struct omap_hwmod_class_sysconfig omap44xx_mcbsp_sysc = {
1683 .sysc_offs = 0x008c,
1684 .sysc_flags = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_ENAWAKEUP |
1685 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
1686 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
1687 .sysc_fields = &omap_hwmod_sysc_type1,
1688};
1689
1690static struct omap_hwmod_class omap44xx_mcbsp_hwmod_class = {
1691 .name = "mcbsp",
1692 .sysc = &omap44xx_mcbsp_sysc,
Kishon Vijay Abraham Icb7e9de2011-02-24 15:16:50 +05301693 .rev = MCBSP_CONFIG_TYPE4,
Benoit Cousson4ddff492011-01-31 14:50:30 +00001694};
1695
1696/* mcbsp1 */
Paul Walmsley503d0ea2012-04-04 09:11:48 -06001697static struct omap_hwmod_opt_clk mcbsp1_opt_clks[] = {
1698 { .role = "pad_fck", .clk = "pad_clks_ck" },
Benoit Coussond7a0b512012-07-04 06:55:29 -06001699 { .role = "prcm_fck", .clk = "mcbsp1_sync_mux_ck" },
Paul Walmsley503d0ea2012-04-04 09:11:48 -06001700};
1701
Benoit Cousson4ddff492011-01-31 14:50:30 +00001702static struct omap_hwmod omap44xx_mcbsp1_hwmod = {
1703 .name = "mcbsp1",
1704 .class = &omap44xx_mcbsp_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001705 .clkdm_name = "abe_clkdm",
Paul Walmsleyee877ac2013-01-26 00:48:55 -07001706 .main_clk = "func_mcbsp1_gfclk",
Benoit Cousson4ddff492011-01-31 14:50:30 +00001707 .prcm = {
1708 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001709 .clkctrl_offs = OMAP4_CM1_ABE_MCBSP1_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001710 .context_offs = OMAP4_RM_ABE_MCBSP1_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001711 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson4ddff492011-01-31 14:50:30 +00001712 },
1713 },
Paul Walmsley503d0ea2012-04-04 09:11:48 -06001714 .opt_clks = mcbsp1_opt_clks,
1715 .opt_clks_cnt = ARRAY_SIZE(mcbsp1_opt_clks),
Benoit Cousson4ddff492011-01-31 14:50:30 +00001716};
1717
1718/* mcbsp2 */
Paul Walmsley503d0ea2012-04-04 09:11:48 -06001719static struct omap_hwmod_opt_clk mcbsp2_opt_clks[] = {
1720 { .role = "pad_fck", .clk = "pad_clks_ck" },
Benoit Coussond7a0b512012-07-04 06:55:29 -06001721 { .role = "prcm_fck", .clk = "mcbsp2_sync_mux_ck" },
Paul Walmsley503d0ea2012-04-04 09:11:48 -06001722};
1723
Benoit Cousson4ddff492011-01-31 14:50:30 +00001724static struct omap_hwmod omap44xx_mcbsp2_hwmod = {
1725 .name = "mcbsp2",
1726 .class = &omap44xx_mcbsp_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001727 .clkdm_name = "abe_clkdm",
Paul Walmsleyee877ac2013-01-26 00:48:55 -07001728 .main_clk = "func_mcbsp2_gfclk",
Benoit Cousson4ddff492011-01-31 14:50:30 +00001729 .prcm = {
1730 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001731 .clkctrl_offs = OMAP4_CM1_ABE_MCBSP2_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001732 .context_offs = OMAP4_RM_ABE_MCBSP2_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001733 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson4ddff492011-01-31 14:50:30 +00001734 },
1735 },
Paul Walmsley503d0ea2012-04-04 09:11:48 -06001736 .opt_clks = mcbsp2_opt_clks,
1737 .opt_clks_cnt = ARRAY_SIZE(mcbsp2_opt_clks),
Benoit Cousson4ddff492011-01-31 14:50:30 +00001738};
1739
1740/* mcbsp3 */
Paul Walmsley503d0ea2012-04-04 09:11:48 -06001741static struct omap_hwmod_opt_clk mcbsp3_opt_clks[] = {
1742 { .role = "pad_fck", .clk = "pad_clks_ck" },
Benoit Coussond7a0b512012-07-04 06:55:29 -06001743 { .role = "prcm_fck", .clk = "mcbsp3_sync_mux_ck" },
Paul Walmsley503d0ea2012-04-04 09:11:48 -06001744};
1745
Benoit Cousson4ddff492011-01-31 14:50:30 +00001746static struct omap_hwmod omap44xx_mcbsp3_hwmod = {
1747 .name = "mcbsp3",
1748 .class = &omap44xx_mcbsp_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001749 .clkdm_name = "abe_clkdm",
Paul Walmsleyee877ac2013-01-26 00:48:55 -07001750 .main_clk = "func_mcbsp3_gfclk",
Benoit Cousson4ddff492011-01-31 14:50:30 +00001751 .prcm = {
1752 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001753 .clkctrl_offs = OMAP4_CM1_ABE_MCBSP3_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001754 .context_offs = OMAP4_RM_ABE_MCBSP3_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001755 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson4ddff492011-01-31 14:50:30 +00001756 },
1757 },
Paul Walmsley503d0ea2012-04-04 09:11:48 -06001758 .opt_clks = mcbsp3_opt_clks,
1759 .opt_clks_cnt = ARRAY_SIZE(mcbsp3_opt_clks),
Benoit Cousson4ddff492011-01-31 14:50:30 +00001760};
1761
1762/* mcbsp4 */
Paul Walmsley503d0ea2012-04-04 09:11:48 -06001763static struct omap_hwmod_opt_clk mcbsp4_opt_clks[] = {
1764 { .role = "pad_fck", .clk = "pad_clks_ck" },
Benoit Coussond7a0b512012-07-04 06:55:29 -06001765 { .role = "prcm_fck", .clk = "mcbsp4_sync_mux_ck" },
Paul Walmsley503d0ea2012-04-04 09:11:48 -06001766};
1767
Benoit Cousson4ddff492011-01-31 14:50:30 +00001768static struct omap_hwmod omap44xx_mcbsp4_hwmod = {
1769 .name = "mcbsp4",
1770 .class = &omap44xx_mcbsp_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001771 .clkdm_name = "l4_per_clkdm",
Paul Walmsleyee877ac2013-01-26 00:48:55 -07001772 .main_clk = "per_mcbsp4_gfclk",
Benoit Cousson4ddff492011-01-31 14:50:30 +00001773 .prcm = {
1774 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001775 .clkctrl_offs = OMAP4_CM_L4PER_MCBSP4_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001776 .context_offs = OMAP4_RM_L4PER_MCBSP4_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001777 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson4ddff492011-01-31 14:50:30 +00001778 },
1779 },
Paul Walmsley503d0ea2012-04-04 09:11:48 -06001780 .opt_clks = mcbsp4_opt_clks,
1781 .opt_clks_cnt = ARRAY_SIZE(mcbsp4_opt_clks),
Benoit Cousson4ddff492011-01-31 14:50:30 +00001782};
1783
1784/*
Benoit Cousson407a6882011-02-15 22:39:48 +01001785 * 'mcpdm' class
1786 * multi channel pdm controller (proprietary interface with phoenix power
1787 * ic)
1788 */
1789
1790static struct omap_hwmod_class_sysconfig omap44xx_mcpdm_sysc = {
1791 .rev_offs = 0x0000,
1792 .sysc_offs = 0x0010,
1793 .sysc_flags = (SYSC_HAS_EMUFREE | SYSC_HAS_RESET_STATUS |
1794 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
1795 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1796 SIDLE_SMART_WKUP),
1797 .sysc_fields = &omap_hwmod_sysc_type2,
1798};
1799
1800static struct omap_hwmod_class omap44xx_mcpdm_hwmod_class = {
1801 .name = "mcpdm",
1802 .sysc = &omap44xx_mcpdm_sysc,
1803};
1804
1805/* mcpdm */
Benoit Cousson407a6882011-02-15 22:39:48 +01001806static struct omap_hwmod omap44xx_mcpdm_hwmod = {
1807 .name = "mcpdm",
1808 .class = &omap44xx_mcpdm_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001809 .clkdm_name = "abe_clkdm",
Paul Walmsleybc052442012-10-29 22:02:14 -06001810 /*
1811 * It's suspected that the McPDM requires an off-chip main
1812 * functional clock, controlled via I2C. This IP block is
1813 * currently reset very early during boot, before I2C is
1814 * available, so it doesn't seem that we have any choice in
1815 * the kernel other than to avoid resetting it.
Peter Ujfalusi12d82e42013-01-18 16:48:16 -07001816 *
1817 * Also, McPDM needs to be configured to NO_IDLE mode when it
1818 * is in used otherwise vital clocks will be gated which
1819 * results 'slow motion' audio playback.
Paul Walmsleybc052442012-10-29 22:02:14 -06001820 */
Peter Ujfalusi12d82e42013-01-18 16:48:16 -07001821 .flags = HWMOD_EXT_OPT_MAIN_CLK | HWMOD_SWSUP_SIDLE,
Paul Walmsley17b7e7d2013-01-26 00:48:54 -07001822 .main_clk = "pad_clks_ck",
Benoit Cousson00fe6102011-07-09 19:14:28 -06001823 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01001824 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001825 .clkctrl_offs = OMAP4_CM1_ABE_PDM_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001826 .context_offs = OMAP4_RM_ABE_PDM_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001827 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01001828 },
1829 },
Benoit Cousson407a6882011-02-15 22:39:48 +01001830};
1831
1832/*
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301833 * 'mcspi' class
1834 * multichannel serial port interface (mcspi) / master/slave synchronous serial
1835 * bus
1836 */
1837
1838static struct omap_hwmod_class_sysconfig omap44xx_mcspi_sysc = {
1839 .rev_offs = 0x0000,
1840 .sysc_offs = 0x0010,
1841 .sysc_flags = (SYSC_HAS_EMUFREE | SYSC_HAS_RESET_STATUS |
1842 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
1843 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1844 SIDLE_SMART_WKUP),
1845 .sysc_fields = &omap_hwmod_sysc_type2,
1846};
1847
1848static struct omap_hwmod_class omap44xx_mcspi_hwmod_class = {
1849 .name = "mcspi",
1850 .sysc = &omap44xx_mcspi_sysc,
Benoit Cousson905a74d2011-02-18 14:01:06 +01001851 .rev = OMAP4_MCSPI_REV,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301852};
1853
1854/* mcspi1 */
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301855static struct omap_hwmod_dma_info omap44xx_mcspi1_sdma_reqs[] = {
1856 { .name = "tx0", .dma_req = 34 + OMAP44XX_DMA_REQ_START },
1857 { .name = "rx0", .dma_req = 35 + OMAP44XX_DMA_REQ_START },
1858 { .name = "tx1", .dma_req = 36 + OMAP44XX_DMA_REQ_START },
1859 { .name = "rx1", .dma_req = 37 + OMAP44XX_DMA_REQ_START },
1860 { .name = "tx2", .dma_req = 38 + OMAP44XX_DMA_REQ_START },
1861 { .name = "rx2", .dma_req = 39 + OMAP44XX_DMA_REQ_START },
1862 { .name = "tx3", .dma_req = 40 + OMAP44XX_DMA_REQ_START },
1863 { .name = "rx3", .dma_req = 41 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06001864 { .dma_req = -1 }
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301865};
1866
Benoit Cousson905a74d2011-02-18 14:01:06 +01001867/* mcspi1 dev_attr */
1868static struct omap2_mcspi_dev_attr mcspi1_dev_attr = {
1869 .num_chipselect = 4,
1870};
1871
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301872static struct omap_hwmod omap44xx_mcspi1_hwmod = {
1873 .name = "mcspi1",
1874 .class = &omap44xx_mcspi_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001875 .clkdm_name = "l4_per_clkdm",
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301876 .sdma_reqs = omap44xx_mcspi1_sdma_reqs,
Paul Walmsley17b7e7d2013-01-26 00:48:54 -07001877 .main_clk = "func_48m_fclk",
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301878 .prcm = {
1879 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001880 .clkctrl_offs = OMAP4_CM_L4PER_MCSPI1_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001881 .context_offs = OMAP4_RM_L4PER_MCSPI1_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001882 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301883 },
1884 },
Benoit Cousson905a74d2011-02-18 14:01:06 +01001885 .dev_attr = &mcspi1_dev_attr,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301886};
1887
1888/* mcspi2 */
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301889static struct omap_hwmod_dma_info omap44xx_mcspi2_sdma_reqs[] = {
1890 { .name = "tx0", .dma_req = 42 + OMAP44XX_DMA_REQ_START },
1891 { .name = "rx0", .dma_req = 43 + OMAP44XX_DMA_REQ_START },
1892 { .name = "tx1", .dma_req = 44 + OMAP44XX_DMA_REQ_START },
1893 { .name = "rx1", .dma_req = 45 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06001894 { .dma_req = -1 }
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301895};
1896
Benoit Cousson905a74d2011-02-18 14:01:06 +01001897/* mcspi2 dev_attr */
1898static struct omap2_mcspi_dev_attr mcspi2_dev_attr = {
1899 .num_chipselect = 2,
1900};
1901
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301902static struct omap_hwmod omap44xx_mcspi2_hwmod = {
1903 .name = "mcspi2",
1904 .class = &omap44xx_mcspi_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001905 .clkdm_name = "l4_per_clkdm",
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301906 .sdma_reqs = omap44xx_mcspi2_sdma_reqs,
Paul Walmsley17b7e7d2013-01-26 00:48:54 -07001907 .main_clk = "func_48m_fclk",
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301908 .prcm = {
1909 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001910 .clkctrl_offs = OMAP4_CM_L4PER_MCSPI2_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001911 .context_offs = OMAP4_RM_L4PER_MCSPI2_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001912 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301913 },
1914 },
Benoit Cousson905a74d2011-02-18 14:01:06 +01001915 .dev_attr = &mcspi2_dev_attr,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301916};
1917
1918/* mcspi3 */
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301919static struct omap_hwmod_dma_info omap44xx_mcspi3_sdma_reqs[] = {
1920 { .name = "tx0", .dma_req = 14 + OMAP44XX_DMA_REQ_START },
1921 { .name = "rx0", .dma_req = 15 + OMAP44XX_DMA_REQ_START },
1922 { .name = "tx1", .dma_req = 22 + OMAP44XX_DMA_REQ_START },
1923 { .name = "rx1", .dma_req = 23 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06001924 { .dma_req = -1 }
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301925};
1926
Benoit Cousson905a74d2011-02-18 14:01:06 +01001927/* mcspi3 dev_attr */
1928static struct omap2_mcspi_dev_attr mcspi3_dev_attr = {
1929 .num_chipselect = 2,
1930};
1931
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301932static struct omap_hwmod omap44xx_mcspi3_hwmod = {
1933 .name = "mcspi3",
1934 .class = &omap44xx_mcspi_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001935 .clkdm_name = "l4_per_clkdm",
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301936 .sdma_reqs = omap44xx_mcspi3_sdma_reqs,
Paul Walmsley17b7e7d2013-01-26 00:48:54 -07001937 .main_clk = "func_48m_fclk",
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301938 .prcm = {
1939 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001940 .clkctrl_offs = OMAP4_CM_L4PER_MCSPI3_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001941 .context_offs = OMAP4_RM_L4PER_MCSPI3_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001942 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301943 },
1944 },
Benoit Cousson905a74d2011-02-18 14:01:06 +01001945 .dev_attr = &mcspi3_dev_attr,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301946};
1947
1948/* mcspi4 */
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301949static struct omap_hwmod_dma_info omap44xx_mcspi4_sdma_reqs[] = {
1950 { .name = "tx0", .dma_req = 69 + OMAP44XX_DMA_REQ_START },
1951 { .name = "rx0", .dma_req = 70 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06001952 { .dma_req = -1 }
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301953};
1954
Benoit Cousson905a74d2011-02-18 14:01:06 +01001955/* mcspi4 dev_attr */
1956static struct omap2_mcspi_dev_attr mcspi4_dev_attr = {
1957 .num_chipselect = 1,
1958};
1959
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301960static struct omap_hwmod omap44xx_mcspi4_hwmod = {
1961 .name = "mcspi4",
1962 .class = &omap44xx_mcspi_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001963 .clkdm_name = "l4_per_clkdm",
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301964 .sdma_reqs = omap44xx_mcspi4_sdma_reqs,
Paul Walmsley17b7e7d2013-01-26 00:48:54 -07001965 .main_clk = "func_48m_fclk",
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301966 .prcm = {
1967 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001968 .clkctrl_offs = OMAP4_CM_L4PER_MCSPI4_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001969 .context_offs = OMAP4_RM_L4PER_MCSPI4_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001970 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301971 },
1972 },
Benoit Cousson905a74d2011-02-18 14:01:06 +01001973 .dev_attr = &mcspi4_dev_attr,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301974};
1975
1976/*
Benoit Cousson407a6882011-02-15 22:39:48 +01001977 * 'mmc' class
1978 * multimedia card high-speed/sd/sdio (mmc/sd/sdio) host controller
1979 */
1980
1981static struct omap_hwmod_class_sysconfig omap44xx_mmc_sysc = {
1982 .rev_offs = 0x0000,
1983 .sysc_offs = 0x0010,
1984 .sysc_flags = (SYSC_HAS_EMUFREE | SYSC_HAS_MIDLEMODE |
1985 SYSC_HAS_RESET_STATUS | SYSC_HAS_SIDLEMODE |
1986 SYSC_HAS_SOFTRESET),
1987 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1988 SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
Benoit Coussonc614ebf2011-07-01 22:54:01 +02001989 MSTANDBY_SMART | MSTANDBY_SMART_WKUP),
Benoit Cousson407a6882011-02-15 22:39:48 +01001990 .sysc_fields = &omap_hwmod_sysc_type2,
1991};
1992
1993static struct omap_hwmod_class omap44xx_mmc_hwmod_class = {
1994 .name = "mmc",
1995 .sysc = &omap44xx_mmc_sysc,
1996};
1997
1998/* mmc1 */
Benoit Cousson407a6882011-02-15 22:39:48 +01001999static struct omap_hwmod_dma_info omap44xx_mmc1_sdma_reqs[] = {
2000 { .name = "tx", .dma_req = 60 + OMAP44XX_DMA_REQ_START },
2001 { .name = "rx", .dma_req = 61 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06002002 { .dma_req = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01002003};
2004
Kishore Kadiyala6ab89462011-03-01 13:12:56 -08002005/* mmc1 dev_attr */
Andreas Fenkart551434382014-11-08 15:33:09 +01002006static struct omap_hsmmc_dev_attr mmc1_dev_attr = {
Kishore Kadiyala6ab89462011-03-01 13:12:56 -08002007 .flags = OMAP_HSMMC_SUPPORTS_DUAL_VOLT,
2008};
2009
Benoit Cousson407a6882011-02-15 22:39:48 +01002010static struct omap_hwmod omap44xx_mmc1_hwmod = {
2011 .name = "mmc1",
2012 .class = &omap44xx_mmc_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002013 .clkdm_name = "l3_init_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +01002014 .sdma_reqs = omap44xx_mmc1_sdma_reqs,
Paul Walmsleyee877ac2013-01-26 00:48:55 -07002015 .main_clk = "hsmmc1_fclk",
Benoit Cousson00fe6102011-07-09 19:14:28 -06002016 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01002017 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002018 .clkctrl_offs = OMAP4_CM_L3INIT_MMC1_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002019 .context_offs = OMAP4_RM_L3INIT_MMC1_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002020 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01002021 },
2022 },
Kishore Kadiyala6ab89462011-03-01 13:12:56 -08002023 .dev_attr = &mmc1_dev_attr,
Benoit Cousson407a6882011-02-15 22:39:48 +01002024};
2025
2026/* mmc2 */
Benoit Cousson407a6882011-02-15 22:39:48 +01002027static struct omap_hwmod_dma_info omap44xx_mmc2_sdma_reqs[] = {
2028 { .name = "tx", .dma_req = 46 + OMAP44XX_DMA_REQ_START },
2029 { .name = "rx", .dma_req = 47 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06002030 { .dma_req = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01002031};
2032
Benoit Cousson407a6882011-02-15 22:39:48 +01002033static struct omap_hwmod omap44xx_mmc2_hwmod = {
2034 .name = "mmc2",
2035 .class = &omap44xx_mmc_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002036 .clkdm_name = "l3_init_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +01002037 .sdma_reqs = omap44xx_mmc2_sdma_reqs,
Paul Walmsleyee877ac2013-01-26 00:48:55 -07002038 .main_clk = "hsmmc2_fclk",
Benoit Cousson00fe6102011-07-09 19:14:28 -06002039 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01002040 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002041 .clkctrl_offs = OMAP4_CM_L3INIT_MMC2_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002042 .context_offs = OMAP4_RM_L3INIT_MMC2_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002043 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01002044 },
2045 },
Benoit Cousson407a6882011-02-15 22:39:48 +01002046};
2047
2048/* mmc3 */
Benoit Cousson407a6882011-02-15 22:39:48 +01002049static struct omap_hwmod_dma_info omap44xx_mmc3_sdma_reqs[] = {
2050 { .name = "tx", .dma_req = 76 + OMAP44XX_DMA_REQ_START },
2051 { .name = "rx", .dma_req = 77 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06002052 { .dma_req = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01002053};
2054
Benoit Cousson407a6882011-02-15 22:39:48 +01002055static struct omap_hwmod omap44xx_mmc3_hwmod = {
2056 .name = "mmc3",
2057 .class = &omap44xx_mmc_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002058 .clkdm_name = "l4_per_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +01002059 .sdma_reqs = omap44xx_mmc3_sdma_reqs,
Paul Walmsley17b7e7d2013-01-26 00:48:54 -07002060 .main_clk = "func_48m_fclk",
Benoit Cousson00fe6102011-07-09 19:14:28 -06002061 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01002062 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002063 .clkctrl_offs = OMAP4_CM_L4PER_MMCSD3_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002064 .context_offs = OMAP4_RM_L4PER_MMCSD3_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002065 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01002066 },
2067 },
Benoit Cousson407a6882011-02-15 22:39:48 +01002068};
2069
2070/* mmc4 */
Benoit Cousson407a6882011-02-15 22:39:48 +01002071static struct omap_hwmod_dma_info omap44xx_mmc4_sdma_reqs[] = {
2072 { .name = "tx", .dma_req = 56 + OMAP44XX_DMA_REQ_START },
2073 { .name = "rx", .dma_req = 57 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06002074 { .dma_req = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01002075};
2076
Benoit Cousson407a6882011-02-15 22:39:48 +01002077static struct omap_hwmod omap44xx_mmc4_hwmod = {
2078 .name = "mmc4",
2079 .class = &omap44xx_mmc_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002080 .clkdm_name = "l4_per_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +01002081 .sdma_reqs = omap44xx_mmc4_sdma_reqs,
Paul Walmsley17b7e7d2013-01-26 00:48:54 -07002082 .main_clk = "func_48m_fclk",
Benoit Cousson00fe6102011-07-09 19:14:28 -06002083 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01002084 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002085 .clkctrl_offs = OMAP4_CM_L4PER_MMCSD4_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002086 .context_offs = OMAP4_RM_L4PER_MMCSD4_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002087 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01002088 },
2089 },
Benoit Cousson407a6882011-02-15 22:39:48 +01002090};
2091
2092/* mmc5 */
Benoit Cousson407a6882011-02-15 22:39:48 +01002093static struct omap_hwmod_dma_info omap44xx_mmc5_sdma_reqs[] = {
2094 { .name = "tx", .dma_req = 58 + OMAP44XX_DMA_REQ_START },
2095 { .name = "rx", .dma_req = 59 + OMAP44XX_DMA_REQ_START },
Paul Walmsleybc614952011-07-09 19:14:07 -06002096 { .dma_req = -1 }
Benoit Cousson407a6882011-02-15 22:39:48 +01002097};
2098
Benoit Cousson407a6882011-02-15 22:39:48 +01002099static struct omap_hwmod omap44xx_mmc5_hwmod = {
2100 .name = "mmc5",
2101 .class = &omap44xx_mmc_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002102 .clkdm_name = "l4_per_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +01002103 .sdma_reqs = omap44xx_mmc5_sdma_reqs,
Paul Walmsley17b7e7d2013-01-26 00:48:54 -07002104 .main_clk = "func_48m_fclk",
Benoit Cousson00fe6102011-07-09 19:14:28 -06002105 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01002106 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002107 .clkctrl_offs = OMAP4_CM_L4PER_MMCSD5_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002108 .context_offs = OMAP4_RM_L4PER_MMCSD5_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002109 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01002110 },
2111 },
Benoit Cousson407a6882011-02-15 22:39:48 +01002112};
2113
2114/*
Omar Ramirez Luna230844d2012-09-23 17:28:24 -06002115 * 'mmu' class
2116 * The memory management unit performs virtual to physical address translation
2117 * for its requestors.
2118 */
2119
2120static struct omap_hwmod_class_sysconfig mmu_sysc = {
2121 .rev_offs = 0x000,
2122 .sysc_offs = 0x010,
2123 .syss_offs = 0x014,
2124 .sysc_flags = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
2125 SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE),
2126 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
2127 .sysc_fields = &omap_hwmod_sysc_type1,
2128};
2129
2130static struct omap_hwmod_class omap44xx_mmu_hwmod_class = {
2131 .name = "mmu",
2132 .sysc = &mmu_sysc,
2133};
2134
2135/* mmu ipu */
2136
Omar Ramirez Luna230844d2012-09-23 17:28:24 -06002137static struct omap_hwmod omap44xx_mmu_ipu_hwmod;
Omar Ramirez Luna230844d2012-09-23 17:28:24 -06002138static struct omap_hwmod_rst_info omap44xx_mmu_ipu_resets[] = {
2139 { .name = "mmu_cache", .rst_shift = 2 },
2140};
2141
Omar Ramirez Luna230844d2012-09-23 17:28:24 -06002142/* l3_main_2 -> mmu_ipu */
2143static struct omap_hwmod_ocp_if omap44xx_l3_main_2__mmu_ipu = {
2144 .master = &omap44xx_l3_main_2_hwmod,
2145 .slave = &omap44xx_mmu_ipu_hwmod,
2146 .clk = "l3_div_ck",
Omar Ramirez Luna230844d2012-09-23 17:28:24 -06002147 .user = OCP_USER_MPU | OCP_USER_SDMA,
2148};
2149
2150static struct omap_hwmod omap44xx_mmu_ipu_hwmod = {
2151 .name = "mmu_ipu",
2152 .class = &omap44xx_mmu_hwmod_class,
2153 .clkdm_name = "ducati_clkdm",
Omar Ramirez Luna230844d2012-09-23 17:28:24 -06002154 .rst_lines = omap44xx_mmu_ipu_resets,
2155 .rst_lines_cnt = ARRAY_SIZE(omap44xx_mmu_ipu_resets),
2156 .main_clk = "ducati_clk_mux_ck",
2157 .prcm = {
2158 .omap4 = {
2159 .clkctrl_offs = OMAP4_CM_DUCATI_DUCATI_CLKCTRL_OFFSET,
2160 .rstctrl_offs = OMAP4_RM_DUCATI_RSTCTRL_OFFSET,
2161 .context_offs = OMAP4_RM_DUCATI_DUCATI_CONTEXT_OFFSET,
2162 .modulemode = MODULEMODE_HWCTRL,
2163 },
2164 },
Omar Ramirez Luna230844d2012-09-23 17:28:24 -06002165};
2166
2167/* mmu dsp */
2168
Omar Ramirez Luna230844d2012-09-23 17:28:24 -06002169static struct omap_hwmod omap44xx_mmu_dsp_hwmod;
Omar Ramirez Luna230844d2012-09-23 17:28:24 -06002170static struct omap_hwmod_rst_info omap44xx_mmu_dsp_resets[] = {
2171 { .name = "mmu_cache", .rst_shift = 1 },
2172};
2173
Omar Ramirez Luna230844d2012-09-23 17:28:24 -06002174/* l4_cfg -> dsp */
2175static struct omap_hwmod_ocp_if omap44xx_l4_cfg__mmu_dsp = {
2176 .master = &omap44xx_l4_cfg_hwmod,
2177 .slave = &omap44xx_mmu_dsp_hwmod,
2178 .clk = "l4_div_ck",
Omar Ramirez Luna230844d2012-09-23 17:28:24 -06002179 .user = OCP_USER_MPU | OCP_USER_SDMA,
2180};
2181
2182static struct omap_hwmod omap44xx_mmu_dsp_hwmod = {
2183 .name = "mmu_dsp",
2184 .class = &omap44xx_mmu_hwmod_class,
2185 .clkdm_name = "tesla_clkdm",
Omar Ramirez Luna230844d2012-09-23 17:28:24 -06002186 .rst_lines = omap44xx_mmu_dsp_resets,
2187 .rst_lines_cnt = ARRAY_SIZE(omap44xx_mmu_dsp_resets),
2188 .main_clk = "dpll_iva_m4x2_ck",
2189 .prcm = {
2190 .omap4 = {
2191 .clkctrl_offs = OMAP4_CM_TESLA_TESLA_CLKCTRL_OFFSET,
2192 .rstctrl_offs = OMAP4_RM_TESLA_RSTCTRL_OFFSET,
2193 .context_offs = OMAP4_RM_TESLA_TESLA_CONTEXT_OFFSET,
2194 .modulemode = MODULEMODE_HWCTRL,
2195 },
2196 },
Omar Ramirez Luna230844d2012-09-23 17:28:24 -06002197};
2198
2199/*
Benoit Cousson55d2cb02010-05-12 17:54:36 +02002200 * 'mpu' class
2201 * mpu sub-system
2202 */
2203
2204static struct omap_hwmod_class omap44xx_mpu_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +00002205 .name = "mpu",
Benoit Cousson55d2cb02010-05-12 17:54:36 +02002206};
2207
2208/* mpu */
Benoit Cousson55d2cb02010-05-12 17:54:36 +02002209static struct omap_hwmod omap44xx_mpu_hwmod = {
2210 .name = "mpu",
2211 .class = &omap44xx_mpu_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002212 .clkdm_name = "mpuss_clkdm",
Rajendra Nayakb2eb0002013-08-20 13:02:44 +05302213 .flags = HWMOD_INIT_NO_IDLE,
Benoit Cousson55d2cb02010-05-12 17:54:36 +02002214 .main_clk = "dpll_mpu_m2_ck",
2215 .prcm = {
2216 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002217 .clkctrl_offs = OMAP4_CM_MPU_MPU_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002218 .context_offs = OMAP4_RM_MPU_MPU_CONTEXT_OFFSET,
Benoit Cousson55d2cb02010-05-12 17:54:36 +02002219 },
2220 },
Benoit Cousson55d2cb02010-05-12 17:54:36 +02002221};
2222
Benoit Cousson92b18d12010-09-23 20:02:41 +05302223/*
Paul Walmsleye17f18c2012-04-19 13:33:56 -06002224 * 'ocmc_ram' class
2225 * top-level core on-chip ram
2226 */
2227
2228static struct omap_hwmod_class omap44xx_ocmc_ram_hwmod_class = {
2229 .name = "ocmc_ram",
2230};
2231
2232/* ocmc_ram */
2233static struct omap_hwmod omap44xx_ocmc_ram_hwmod = {
2234 .name = "ocmc_ram",
2235 .class = &omap44xx_ocmc_ram_hwmod_class,
2236 .clkdm_name = "l3_2_clkdm",
2237 .prcm = {
2238 .omap4 = {
2239 .clkctrl_offs = OMAP4_CM_L3_2_OCMC_RAM_CLKCTRL_OFFSET,
2240 .context_offs = OMAP4_RM_L3_2_OCMC_RAM_CONTEXT_OFFSET,
2241 },
2242 },
2243};
2244
2245/*
Benoît Cousson0c668872012-04-19 13:33:55 -06002246 * 'ocp2scp' class
2247 * bridge to transform ocp interface protocol to scp (serial control port)
2248 * protocol
2249 */
2250
Benoit Cousson33c976e2012-09-23 17:28:21 -06002251static struct omap_hwmod_class_sysconfig omap44xx_ocp2scp_sysc = {
2252 .rev_offs = 0x0000,
2253 .sysc_offs = 0x0010,
2254 .syss_offs = 0x0014,
2255 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_SIDLEMODE |
2256 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
2257 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
2258 .sysc_fields = &omap_hwmod_sysc_type1,
2259};
2260
Benoît Cousson0c668872012-04-19 13:33:55 -06002261static struct omap_hwmod_class omap44xx_ocp2scp_hwmod_class = {
2262 .name = "ocp2scp",
Benoit Cousson33c976e2012-09-23 17:28:21 -06002263 .sysc = &omap44xx_ocp2scp_sysc,
Benoît Cousson0c668872012-04-19 13:33:55 -06002264};
2265
2266/* ocp2scp_usb_phy */
Benoît Cousson0c668872012-04-19 13:33:55 -06002267static struct omap_hwmod omap44xx_ocp2scp_usb_phy_hwmod = {
2268 .name = "ocp2scp_usb_phy",
2269 .class = &omap44xx_ocp2scp_hwmod_class,
2270 .clkdm_name = "l3_init_clkdm",
Kishon Vijay Abraham If4d7a532013-04-10 19:41:38 +00002271 /*
2272 * ocp2scp_usb_phy_phy_48m is provided by the OMAP4 PRCM IP
2273 * block as an "optional clock," and normally should never be
2274 * specified as the main_clk for an OMAP IP block. However it
2275 * turns out that this clock is actually the main clock for
2276 * the ocp2scp_usb_phy IP block:
2277 * http://lists.infradead.org/pipermail/linux-arm-kernel/2012-September/119943.html
2278 * So listing ocp2scp_usb_phy_phy_48m as a main_clk here seems
2279 * to be the best workaround.
2280 */
2281 .main_clk = "ocp2scp_usb_phy_phy_48m",
Benoît Cousson0c668872012-04-19 13:33:55 -06002282 .prcm = {
2283 .omap4 = {
2284 .clkctrl_offs = OMAP4_CM_L3INIT_USBPHYOCP2SCP_CLKCTRL_OFFSET,
2285 .context_offs = OMAP4_RM_L3INIT_USBPHYOCP2SCP_CONTEXT_OFFSET,
2286 .modulemode = MODULEMODE_HWCTRL,
2287 },
2288 },
Benoît Cousson0c668872012-04-19 13:33:55 -06002289};
2290
2291/*
Paul Walmsley794b4802012-04-19 13:33:58 -06002292 * 'prcm' class
2293 * power and reset manager (part of the prcm infrastructure) + clock manager 2
2294 * + clock manager 1 (in always on power domain) + local prm in mpu
2295 */
2296
2297static struct omap_hwmod_class omap44xx_prcm_hwmod_class = {
2298 .name = "prcm",
2299};
2300
2301/* prcm_mpu */
2302static struct omap_hwmod omap44xx_prcm_mpu_hwmod = {
2303 .name = "prcm_mpu",
2304 .class = &omap44xx_prcm_hwmod_class,
2305 .clkdm_name = "l4_wkup_clkdm",
Paul Walmsley53cce972012-09-23 17:28:22 -06002306 .flags = HWMOD_NO_IDLEST,
Tero Kristo46b3af22012-09-23 17:28:20 -06002307 .prcm = {
2308 .omap4 = {
2309 .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
2310 },
2311 },
Paul Walmsley794b4802012-04-19 13:33:58 -06002312};
2313
2314/* cm_core_aon */
2315static struct omap_hwmod omap44xx_cm_core_aon_hwmod = {
2316 .name = "cm_core_aon",
2317 .class = &omap44xx_prcm_hwmod_class,
Paul Walmsley53cce972012-09-23 17:28:22 -06002318 .flags = HWMOD_NO_IDLEST,
Tero Kristo46b3af22012-09-23 17:28:20 -06002319 .prcm = {
2320 .omap4 = {
2321 .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
2322 },
2323 },
Paul Walmsley794b4802012-04-19 13:33:58 -06002324};
2325
2326/* cm_core */
2327static struct omap_hwmod omap44xx_cm_core_hwmod = {
2328 .name = "cm_core",
2329 .class = &omap44xx_prcm_hwmod_class,
Paul Walmsley53cce972012-09-23 17:28:22 -06002330 .flags = HWMOD_NO_IDLEST,
Tero Kristo46b3af22012-09-23 17:28:20 -06002331 .prcm = {
2332 .omap4 = {
2333 .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
2334 },
2335 },
Paul Walmsley794b4802012-04-19 13:33:58 -06002336};
2337
2338/* prm */
Paul Walmsley794b4802012-04-19 13:33:58 -06002339static struct omap_hwmod_rst_info omap44xx_prm_resets[] = {
2340 { .name = "rst_global_warm_sw", .rst_shift = 0 },
2341 { .name = "rst_global_cold_sw", .rst_shift = 1 },
2342};
2343
2344static struct omap_hwmod omap44xx_prm_hwmod = {
2345 .name = "prm",
2346 .class = &omap44xx_prcm_hwmod_class,
Paul Walmsley794b4802012-04-19 13:33:58 -06002347 .rst_lines = omap44xx_prm_resets,
2348 .rst_lines_cnt = ARRAY_SIZE(omap44xx_prm_resets),
2349};
2350
2351/*
2352 * 'scrm' class
2353 * system clock and reset manager
2354 */
2355
2356static struct omap_hwmod_class omap44xx_scrm_hwmod_class = {
2357 .name = "scrm",
2358};
2359
2360/* scrm */
2361static struct omap_hwmod omap44xx_scrm_hwmod = {
2362 .name = "scrm",
2363 .class = &omap44xx_scrm_hwmod_class,
2364 .clkdm_name = "l4_wkup_clkdm",
Tero Kristo46b3af22012-09-23 17:28:20 -06002365 .prcm = {
2366 .omap4 = {
2367 .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
2368 },
2369 },
Paul Walmsley794b4802012-04-19 13:33:58 -06002370};
2371
2372/*
Paul Walmsley42b9e382012-04-19 13:33:54 -06002373 * 'sl2if' class
2374 * shared level 2 memory interface
2375 */
2376
2377static struct omap_hwmod_class omap44xx_sl2if_hwmod_class = {
2378 .name = "sl2if",
2379};
2380
2381/* sl2if */
2382static struct omap_hwmod omap44xx_sl2if_hwmod = {
2383 .name = "sl2if",
2384 .class = &omap44xx_sl2if_hwmod_class,
2385 .clkdm_name = "ivahd_clkdm",
2386 .prcm = {
2387 .omap4 = {
2388 .clkctrl_offs = OMAP4_CM_IVAHD_SL2_CLKCTRL_OFFSET,
2389 .context_offs = OMAP4_RM_IVAHD_SL2_CONTEXT_OFFSET,
2390 .modulemode = MODULEMODE_HWCTRL,
2391 },
2392 },
2393};
2394
2395/*
Benoît Cousson1e3b5e592012-04-19 13:33:53 -06002396 * 'slimbus' class
2397 * bidirectional, multi-drop, multi-channel two-line serial interface between
2398 * the device and external components
2399 */
2400
2401static struct omap_hwmod_class_sysconfig omap44xx_slimbus_sysc = {
2402 .rev_offs = 0x0000,
2403 .sysc_offs = 0x0010,
2404 .sysc_flags = (SYSC_HAS_RESET_STATUS | SYSC_HAS_SIDLEMODE |
2405 SYSC_HAS_SOFTRESET),
2406 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
2407 SIDLE_SMART_WKUP),
2408 .sysc_fields = &omap_hwmod_sysc_type2,
2409};
2410
2411static struct omap_hwmod_class omap44xx_slimbus_hwmod_class = {
2412 .name = "slimbus",
2413 .sysc = &omap44xx_slimbus_sysc,
2414};
2415
2416/* slimbus1 */
Benoît Cousson1e3b5e592012-04-19 13:33:53 -06002417static struct omap_hwmod_opt_clk slimbus1_opt_clks[] = {
2418 { .role = "fclk_1", .clk = "slimbus1_fclk_1" },
2419 { .role = "fclk_0", .clk = "slimbus1_fclk_0" },
2420 { .role = "fclk_2", .clk = "slimbus1_fclk_2" },
2421 { .role = "slimbus_clk", .clk = "slimbus1_slimbus_clk" },
2422};
2423
2424static struct omap_hwmod omap44xx_slimbus1_hwmod = {
2425 .name = "slimbus1",
2426 .class = &omap44xx_slimbus_hwmod_class,
2427 .clkdm_name = "abe_clkdm",
Benoît Cousson1e3b5e592012-04-19 13:33:53 -06002428 .prcm = {
2429 .omap4 = {
2430 .clkctrl_offs = OMAP4_CM1_ABE_SLIMBUS_CLKCTRL_OFFSET,
2431 .context_offs = OMAP4_RM_ABE_SLIMBUS_CONTEXT_OFFSET,
2432 .modulemode = MODULEMODE_SWCTRL,
2433 },
2434 },
2435 .opt_clks = slimbus1_opt_clks,
2436 .opt_clks_cnt = ARRAY_SIZE(slimbus1_opt_clks),
2437};
2438
2439/* slimbus2 */
Benoît Cousson1e3b5e592012-04-19 13:33:53 -06002440static struct omap_hwmod_opt_clk slimbus2_opt_clks[] = {
2441 { .role = "fclk_1", .clk = "slimbus2_fclk_1" },
2442 { .role = "fclk_0", .clk = "slimbus2_fclk_0" },
2443 { .role = "slimbus_clk", .clk = "slimbus2_slimbus_clk" },
2444};
2445
2446static struct omap_hwmod omap44xx_slimbus2_hwmod = {
2447 .name = "slimbus2",
2448 .class = &omap44xx_slimbus_hwmod_class,
2449 .clkdm_name = "l4_per_clkdm",
Benoît Cousson1e3b5e592012-04-19 13:33:53 -06002450 .prcm = {
2451 .omap4 = {
2452 .clkctrl_offs = OMAP4_CM_L4PER_SLIMBUS2_CLKCTRL_OFFSET,
2453 .context_offs = OMAP4_RM_L4PER_SLIMBUS2_CONTEXT_OFFSET,
2454 .modulemode = MODULEMODE_SWCTRL,
2455 },
2456 },
2457 .opt_clks = slimbus2_opt_clks,
2458 .opt_clks_cnt = ARRAY_SIZE(slimbus2_opt_clks),
2459};
2460
2461/*
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002462 * 'smartreflex' class
2463 * smartreflex module (monitor silicon performance and outputs a measure of
2464 * performance error)
2465 */
2466
2467/* The IP is not compliant to type1 / type2 scheme */
2468static struct omap_hwmod_sysc_fields omap_hwmod_sysc_type_smartreflex = {
2469 .sidle_shift = 24,
2470 .enwkup_shift = 26,
2471};
2472
2473static struct omap_hwmod_class_sysconfig omap44xx_smartreflex_sysc = {
2474 .sysc_offs = 0x0038,
2475 .sysc_flags = (SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE),
2476 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
2477 SIDLE_SMART_WKUP),
2478 .sysc_fields = &omap_hwmod_sysc_type_smartreflex,
2479};
2480
2481static struct omap_hwmod_class omap44xx_smartreflex_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +00002482 .name = "smartreflex",
2483 .sysc = &omap44xx_smartreflex_sysc,
2484 .rev = 2,
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002485};
2486
2487/* smartreflex_core */
Shweta Gulaticea6b942012-02-29 23:33:37 +01002488static struct omap_smartreflex_dev_attr smartreflex_core_dev_attr = {
2489 .sensor_voltdm_name = "core",
2490};
2491
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002492static struct omap_hwmod omap44xx_smartreflex_core_hwmod = {
2493 .name = "smartreflex_core",
2494 .class = &omap44xx_smartreflex_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002495 .clkdm_name = "l4_ao_clkdm",
Paul Walmsley212738a2011-07-09 19:14:06 -06002496
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002497 .main_clk = "smartreflex_core_fck",
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002498 .prcm = {
2499 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002500 .clkctrl_offs = OMAP4_CM_ALWON_SR_CORE_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002501 .context_offs = OMAP4_RM_ALWON_SR_CORE_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002502 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002503 },
2504 },
Shweta Gulaticea6b942012-02-29 23:33:37 +01002505 .dev_attr = &smartreflex_core_dev_attr,
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002506};
2507
2508/* smartreflex_iva */
Shweta Gulaticea6b942012-02-29 23:33:37 +01002509static struct omap_smartreflex_dev_attr smartreflex_iva_dev_attr = {
2510 .sensor_voltdm_name = "iva",
2511};
2512
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002513static struct omap_hwmod omap44xx_smartreflex_iva_hwmod = {
2514 .name = "smartreflex_iva",
2515 .class = &omap44xx_smartreflex_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002516 .clkdm_name = "l4_ao_clkdm",
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002517 .main_clk = "smartreflex_iva_fck",
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002518 .prcm = {
2519 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002520 .clkctrl_offs = OMAP4_CM_ALWON_SR_IVA_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002521 .context_offs = OMAP4_RM_ALWON_SR_IVA_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002522 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002523 },
2524 },
Shweta Gulaticea6b942012-02-29 23:33:37 +01002525 .dev_attr = &smartreflex_iva_dev_attr,
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002526};
2527
2528/* smartreflex_mpu */
Shweta Gulaticea6b942012-02-29 23:33:37 +01002529static struct omap_smartreflex_dev_attr smartreflex_mpu_dev_attr = {
2530 .sensor_voltdm_name = "mpu",
2531};
2532
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002533static struct omap_hwmod omap44xx_smartreflex_mpu_hwmod = {
2534 .name = "smartreflex_mpu",
2535 .class = &omap44xx_smartreflex_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002536 .clkdm_name = "l4_ao_clkdm",
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002537 .main_clk = "smartreflex_mpu_fck",
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002538 .prcm = {
2539 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002540 .clkctrl_offs = OMAP4_CM_ALWON_SR_MPU_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002541 .context_offs = OMAP4_RM_ALWON_SR_MPU_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002542 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002543 },
2544 },
Shweta Gulaticea6b942012-02-29 23:33:37 +01002545 .dev_attr = &smartreflex_mpu_dev_attr,
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002546};
2547
2548/*
Benoit Coussond11c2172011-02-02 12:04:36 +00002549 * 'spinlock' class
2550 * spinlock provides hardware assistance for synchronizing the processes
2551 * running on multiple processors
2552 */
2553
2554static struct omap_hwmod_class_sysconfig omap44xx_spinlock_sysc = {
2555 .rev_offs = 0x0000,
2556 .sysc_offs = 0x0010,
2557 .syss_offs = 0x0014,
2558 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
2559 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE |
2560 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
Suman Anna77319662013-12-23 16:48:48 -06002561 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
Benoit Coussond11c2172011-02-02 12:04:36 +00002562 .sysc_fields = &omap_hwmod_sysc_type1,
2563};
2564
2565static struct omap_hwmod_class omap44xx_spinlock_hwmod_class = {
2566 .name = "spinlock",
2567 .sysc = &omap44xx_spinlock_sysc,
2568};
2569
2570/* spinlock */
Benoit Coussond11c2172011-02-02 12:04:36 +00002571static struct omap_hwmod omap44xx_spinlock_hwmod = {
2572 .name = "spinlock",
2573 .class = &omap44xx_spinlock_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002574 .clkdm_name = "l4_cfg_clkdm",
Benoit Coussond11c2172011-02-02 12:04:36 +00002575 .prcm = {
2576 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002577 .clkctrl_offs = OMAP4_CM_L4CFG_HW_SEM_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002578 .context_offs = OMAP4_RM_L4CFG_HW_SEM_CONTEXT_OFFSET,
Benoit Coussond11c2172011-02-02 12:04:36 +00002579 },
2580 },
Benoit Coussond11c2172011-02-02 12:04:36 +00002581};
2582
2583/*
Benoit Cousson35d1a662011-02-11 11:17:14 +00002584 * 'timer' class
2585 * general purpose timer module with accurate 1ms tick
2586 * This class contains several variants: ['timer_1ms', 'timer']
2587 */
2588
2589static struct omap_hwmod_class_sysconfig omap44xx_timer_1ms_sysc = {
2590 .rev_offs = 0x0000,
2591 .sysc_offs = 0x0010,
2592 .syss_offs = 0x0014,
2593 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
2594 SYSC_HAS_EMUFREE | SYSC_HAS_ENAWAKEUP |
2595 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
2596 SYSS_HAS_RESET_STATUS),
2597 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
2598 .sysc_fields = &omap_hwmod_sysc_type1,
2599};
2600
2601static struct omap_hwmod_class omap44xx_timer_1ms_hwmod_class = {
2602 .name = "timer",
2603 .sysc = &omap44xx_timer_1ms_sysc,
2604};
2605
2606static struct omap_hwmod_class_sysconfig omap44xx_timer_sysc = {
2607 .rev_offs = 0x0000,
2608 .sysc_offs = 0x0010,
2609 .sysc_flags = (SYSC_HAS_EMUFREE | SYSC_HAS_RESET_STATUS |
2610 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
2611 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
2612 SIDLE_SMART_WKUP),
2613 .sysc_fields = &omap_hwmod_sysc_type2,
2614};
2615
2616static struct omap_hwmod_class omap44xx_timer_hwmod_class = {
2617 .name = "timer",
2618 .sysc = &omap44xx_timer_sysc,
2619};
2620
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +05302621/* always-on timers dev attribute */
2622static struct omap_timer_capability_dev_attr capability_alwon_dev_attr = {
2623 .timer_capability = OMAP_TIMER_ALWON,
2624};
2625
2626/* pwm timers dev attribute */
2627static struct omap_timer_capability_dev_attr capability_pwm_dev_attr = {
2628 .timer_capability = OMAP_TIMER_HAS_PWM,
2629};
2630
Jon Hunter5c3e4ec2012-09-23 17:28:27 -06002631/* timers with DSP interrupt dev attribute */
2632static struct omap_timer_capability_dev_attr capability_dsp_dev_attr = {
2633 .timer_capability = OMAP_TIMER_HAS_DSP_IRQ,
2634};
2635
2636/* pwm timers with DSP interrupt dev attribute */
2637static struct omap_timer_capability_dev_attr capability_dsp_pwm_dev_attr = {
2638 .timer_capability = OMAP_TIMER_HAS_DSP_IRQ | OMAP_TIMER_HAS_PWM,
2639};
2640
Benoit Cousson35d1a662011-02-11 11:17:14 +00002641/* timer1 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00002642static struct omap_hwmod omap44xx_timer1_hwmod = {
2643 .name = "timer1",
2644 .class = &omap44xx_timer_1ms_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002645 .clkdm_name = "l4_wkup_clkdm",
Jon Hunter10759e82012-07-11 13:00:13 -05002646 .flags = HWMOD_SET_DEFAULT_CLOCKACT,
Paul Walmsleyee877ac2013-01-26 00:48:55 -07002647 .main_clk = "dmt1_clk_mux",
Benoit Cousson35d1a662011-02-11 11:17:14 +00002648 .prcm = {
2649 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002650 .clkctrl_offs = OMAP4_CM_WKUP_TIMER1_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002651 .context_offs = OMAP4_RM_WKUP_TIMER1_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002652 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002653 },
2654 },
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +05302655 .dev_attr = &capability_alwon_dev_attr,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002656};
2657
2658/* timer2 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00002659static struct omap_hwmod omap44xx_timer2_hwmod = {
2660 .name = "timer2",
2661 .class = &omap44xx_timer_1ms_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002662 .clkdm_name = "l4_per_clkdm",
Jon Hunter10759e82012-07-11 13:00:13 -05002663 .flags = HWMOD_SET_DEFAULT_CLOCKACT,
Paul Walmsleyee877ac2013-01-26 00:48:55 -07002664 .main_clk = "cm2_dm2_mux",
Benoit Cousson35d1a662011-02-11 11:17:14 +00002665 .prcm = {
2666 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002667 .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER2_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002668 .context_offs = OMAP4_RM_L4PER_DMTIMER2_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002669 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002670 },
2671 },
Benoit Cousson35d1a662011-02-11 11:17:14 +00002672};
2673
2674/* timer3 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00002675static struct omap_hwmod omap44xx_timer3_hwmod = {
2676 .name = "timer3",
2677 .class = &omap44xx_timer_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002678 .clkdm_name = "l4_per_clkdm",
Paul Walmsleyee877ac2013-01-26 00:48:55 -07002679 .main_clk = "cm2_dm3_mux",
Benoit Cousson35d1a662011-02-11 11:17:14 +00002680 .prcm = {
2681 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002682 .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER3_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002683 .context_offs = OMAP4_RM_L4PER_DMTIMER3_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002684 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002685 },
2686 },
Benoit Cousson35d1a662011-02-11 11:17:14 +00002687};
2688
2689/* timer4 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00002690static struct omap_hwmod omap44xx_timer4_hwmod = {
2691 .name = "timer4",
2692 .class = &omap44xx_timer_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002693 .clkdm_name = "l4_per_clkdm",
Paul Walmsleyee877ac2013-01-26 00:48:55 -07002694 .main_clk = "cm2_dm4_mux",
Benoit Cousson35d1a662011-02-11 11:17:14 +00002695 .prcm = {
2696 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002697 .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER4_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002698 .context_offs = OMAP4_RM_L4PER_DMTIMER4_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002699 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002700 },
2701 },
Benoit Cousson35d1a662011-02-11 11:17:14 +00002702};
2703
2704/* timer5 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00002705static struct omap_hwmod omap44xx_timer5_hwmod = {
2706 .name = "timer5",
2707 .class = &omap44xx_timer_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002708 .clkdm_name = "abe_clkdm",
Paul Walmsleyee877ac2013-01-26 00:48:55 -07002709 .main_clk = "timer5_sync_mux",
Benoit Cousson35d1a662011-02-11 11:17:14 +00002710 .prcm = {
2711 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002712 .clkctrl_offs = OMAP4_CM1_ABE_TIMER5_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002713 .context_offs = OMAP4_RM_ABE_TIMER5_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002714 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002715 },
2716 },
Jon Hunter5c3e4ec2012-09-23 17:28:27 -06002717 .dev_attr = &capability_dsp_dev_attr,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002718};
2719
2720/* timer6 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00002721static struct omap_hwmod omap44xx_timer6_hwmod = {
2722 .name = "timer6",
2723 .class = &omap44xx_timer_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002724 .clkdm_name = "abe_clkdm",
Paul Walmsleyee877ac2013-01-26 00:48:55 -07002725 .main_clk = "timer6_sync_mux",
Benoit Cousson35d1a662011-02-11 11:17:14 +00002726 .prcm = {
2727 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002728 .clkctrl_offs = OMAP4_CM1_ABE_TIMER6_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002729 .context_offs = OMAP4_RM_ABE_TIMER6_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002730 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002731 },
2732 },
Jon Hunter5c3e4ec2012-09-23 17:28:27 -06002733 .dev_attr = &capability_dsp_dev_attr,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002734};
2735
2736/* timer7 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00002737static struct omap_hwmod omap44xx_timer7_hwmod = {
2738 .name = "timer7",
2739 .class = &omap44xx_timer_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002740 .clkdm_name = "abe_clkdm",
Paul Walmsleyee877ac2013-01-26 00:48:55 -07002741 .main_clk = "timer7_sync_mux",
Benoit Cousson35d1a662011-02-11 11:17:14 +00002742 .prcm = {
2743 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002744 .clkctrl_offs = OMAP4_CM1_ABE_TIMER7_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002745 .context_offs = OMAP4_RM_ABE_TIMER7_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002746 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002747 },
2748 },
Jon Hunter5c3e4ec2012-09-23 17:28:27 -06002749 .dev_attr = &capability_dsp_dev_attr,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002750};
2751
2752/* timer8 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00002753static struct omap_hwmod omap44xx_timer8_hwmod = {
2754 .name = "timer8",
2755 .class = &omap44xx_timer_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002756 .clkdm_name = "abe_clkdm",
Paul Walmsleyee877ac2013-01-26 00:48:55 -07002757 .main_clk = "timer8_sync_mux",
Benoit Cousson35d1a662011-02-11 11:17:14 +00002758 .prcm = {
2759 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002760 .clkctrl_offs = OMAP4_CM1_ABE_TIMER8_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002761 .context_offs = OMAP4_RM_ABE_TIMER8_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002762 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002763 },
2764 },
Jon Hunter5c3e4ec2012-09-23 17:28:27 -06002765 .dev_attr = &capability_dsp_pwm_dev_attr,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002766};
2767
2768/* timer9 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00002769static struct omap_hwmod omap44xx_timer9_hwmod = {
2770 .name = "timer9",
2771 .class = &omap44xx_timer_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002772 .clkdm_name = "l4_per_clkdm",
Paul Walmsleyee877ac2013-01-26 00:48:55 -07002773 .main_clk = "cm2_dm9_mux",
Benoit Cousson35d1a662011-02-11 11:17:14 +00002774 .prcm = {
2775 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002776 .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER9_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002777 .context_offs = OMAP4_RM_L4PER_DMTIMER9_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002778 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002779 },
2780 },
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +05302781 .dev_attr = &capability_pwm_dev_attr,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002782};
2783
2784/* timer10 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00002785static struct omap_hwmod omap44xx_timer10_hwmod = {
2786 .name = "timer10",
2787 .class = &omap44xx_timer_1ms_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002788 .clkdm_name = "l4_per_clkdm",
Jon Hunter10759e82012-07-11 13:00:13 -05002789 .flags = HWMOD_SET_DEFAULT_CLOCKACT,
Paul Walmsleyee877ac2013-01-26 00:48:55 -07002790 .main_clk = "cm2_dm10_mux",
Benoit Cousson35d1a662011-02-11 11:17:14 +00002791 .prcm = {
2792 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002793 .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER10_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002794 .context_offs = OMAP4_RM_L4PER_DMTIMER10_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002795 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002796 },
2797 },
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +05302798 .dev_attr = &capability_pwm_dev_attr,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002799};
2800
2801/* timer11 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00002802static struct omap_hwmod omap44xx_timer11_hwmod = {
2803 .name = "timer11",
2804 .class = &omap44xx_timer_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002805 .clkdm_name = "l4_per_clkdm",
Paul Walmsleyee877ac2013-01-26 00:48:55 -07002806 .main_clk = "cm2_dm11_mux",
Benoit Cousson35d1a662011-02-11 11:17:14 +00002807 .prcm = {
2808 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002809 .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER11_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002810 .context_offs = OMAP4_RM_L4PER_DMTIMER11_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002811 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002812 },
2813 },
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +05302814 .dev_attr = &capability_pwm_dev_attr,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002815};
2816
2817/*
Benoit Coussondb12ba52010-09-27 20:19:19 +05302818 * 'uart' class
2819 * universal asynchronous receiver/transmitter (uart)
2820 */
2821
2822static struct omap_hwmod_class_sysconfig omap44xx_uart_sysc = {
2823 .rev_offs = 0x0050,
2824 .sysc_offs = 0x0054,
2825 .syss_offs = 0x0058,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07002826 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_ENAWAKEUP |
Benoit Cousson0cfe8752010-12-21 21:08:33 -07002827 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
2828 SYSS_HAS_RESET_STATUS),
Benoit Cousson7cffa6b2010-12-21 21:31:28 -07002829 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
2830 SIDLE_SMART_WKUP),
Benoit Coussondb12ba52010-09-27 20:19:19 +05302831 .sysc_fields = &omap_hwmod_sysc_type1,
2832};
2833
2834static struct omap_hwmod_class omap44xx_uart_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +00002835 .name = "uart",
2836 .sysc = &omap44xx_uart_sysc,
Benoit Coussondb12ba52010-09-27 20:19:19 +05302837};
2838
2839/* uart1 */
Benoit Coussondb12ba52010-09-27 20:19:19 +05302840static struct omap_hwmod omap44xx_uart1_hwmod = {
2841 .name = "uart1",
2842 .class = &omap44xx_uart_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002843 .clkdm_name = "l4_per_clkdm",
Santosh Shilimkar66dde542013-05-15 20:18:39 +05302844 .flags = HWMOD_SWSUP_SIDLE_ACT,
Paul Walmsley17b7e7d2013-01-26 00:48:54 -07002845 .main_clk = "func_48m_fclk",
Benoit Coussondb12ba52010-09-27 20:19:19 +05302846 .prcm = {
2847 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002848 .clkctrl_offs = OMAP4_CM_L4PER_UART1_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002849 .context_offs = OMAP4_RM_L4PER_UART1_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002850 .modulemode = MODULEMODE_SWCTRL,
Benoit Coussondb12ba52010-09-27 20:19:19 +05302851 },
2852 },
Benoit Coussondb12ba52010-09-27 20:19:19 +05302853};
2854
2855/* uart2 */
Benoit Coussondb12ba52010-09-27 20:19:19 +05302856static struct omap_hwmod omap44xx_uart2_hwmod = {
2857 .name = "uart2",
2858 .class = &omap44xx_uart_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002859 .clkdm_name = "l4_per_clkdm",
Santosh Shilimkar66dde542013-05-15 20:18:39 +05302860 .flags = HWMOD_SWSUP_SIDLE_ACT,
Paul Walmsley17b7e7d2013-01-26 00:48:54 -07002861 .main_clk = "func_48m_fclk",
Benoit Coussondb12ba52010-09-27 20:19:19 +05302862 .prcm = {
2863 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002864 .clkctrl_offs = OMAP4_CM_L4PER_UART2_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002865 .context_offs = OMAP4_RM_L4PER_UART2_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002866 .modulemode = MODULEMODE_SWCTRL,
Benoit Coussondb12ba52010-09-27 20:19:19 +05302867 },
2868 },
Benoit Coussondb12ba52010-09-27 20:19:19 +05302869};
2870
2871/* uart3 */
Benoit Coussondb12ba52010-09-27 20:19:19 +05302872static struct omap_hwmod omap44xx_uart3_hwmod = {
2873 .name = "uart3",
2874 .class = &omap44xx_uart_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002875 .clkdm_name = "l4_per_clkdm",
Rajendra Nayak7dedd342013-07-28 23:01:48 -06002876 .flags = DEBUG_OMAP4UART3_FLAGS | HWMOD_SWSUP_SIDLE_ACT,
Paul Walmsley17b7e7d2013-01-26 00:48:54 -07002877 .main_clk = "func_48m_fclk",
Benoit Coussondb12ba52010-09-27 20:19:19 +05302878 .prcm = {
2879 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002880 .clkctrl_offs = OMAP4_CM_L4PER_UART3_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002881 .context_offs = OMAP4_RM_L4PER_UART3_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002882 .modulemode = MODULEMODE_SWCTRL,
Benoit Coussondb12ba52010-09-27 20:19:19 +05302883 },
2884 },
Benoit Coussondb12ba52010-09-27 20:19:19 +05302885};
2886
2887/* uart4 */
Benoit Coussondb12ba52010-09-27 20:19:19 +05302888static struct omap_hwmod omap44xx_uart4_hwmod = {
2889 .name = "uart4",
2890 .class = &omap44xx_uart_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002891 .clkdm_name = "l4_per_clkdm",
Rajendra Nayak7dedd342013-07-28 23:01:48 -06002892 .flags = DEBUG_OMAP4UART4_FLAGS | HWMOD_SWSUP_SIDLE_ACT,
Paul Walmsley17b7e7d2013-01-26 00:48:54 -07002893 .main_clk = "func_48m_fclk",
Benoit Coussondb12ba52010-09-27 20:19:19 +05302894 .prcm = {
2895 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002896 .clkctrl_offs = OMAP4_CM_L4PER_UART4_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002897 .context_offs = OMAP4_RM_L4PER_UART4_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002898 .modulemode = MODULEMODE_SWCTRL,
Benoit Coussondb12ba52010-09-27 20:19:19 +05302899 },
2900 },
Benoit Coussondb12ba52010-09-27 20:19:19 +05302901};
2902
Benoit Cousson9780a9c2010-12-07 16:26:57 -08002903/*
Benoît Cousson0c668872012-04-19 13:33:55 -06002904 * 'usb_host_fs' class
2905 * full-speed usb host controller
2906 */
2907
2908/* The IP is not compliant to type1 / type2 scheme */
2909static struct omap_hwmod_sysc_fields omap_hwmod_sysc_type_usb_host_fs = {
2910 .midle_shift = 4,
2911 .sidle_shift = 2,
2912 .srst_shift = 1,
2913};
2914
2915static struct omap_hwmod_class_sysconfig omap44xx_usb_host_fs_sysc = {
2916 .rev_offs = 0x0000,
2917 .sysc_offs = 0x0210,
2918 .sysc_flags = (SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE |
2919 SYSC_HAS_SOFTRESET),
2920 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
2921 SIDLE_SMART_WKUP),
2922 .sysc_fields = &omap_hwmod_sysc_type_usb_host_fs,
2923};
2924
2925static struct omap_hwmod_class omap44xx_usb_host_fs_hwmod_class = {
2926 .name = "usb_host_fs",
2927 .sysc = &omap44xx_usb_host_fs_sysc,
2928};
2929
2930/* usb_host_fs */
Benoît Cousson0c668872012-04-19 13:33:55 -06002931static struct omap_hwmod omap44xx_usb_host_fs_hwmod = {
2932 .name = "usb_host_fs",
2933 .class = &omap44xx_usb_host_fs_hwmod_class,
2934 .clkdm_name = "l3_init_clkdm",
Benoît Cousson0c668872012-04-19 13:33:55 -06002935 .main_clk = "usb_host_fs_fck",
2936 .prcm = {
2937 .omap4 = {
2938 .clkctrl_offs = OMAP4_CM_L3INIT_USB_HOST_FS_CLKCTRL_OFFSET,
2939 .context_offs = OMAP4_RM_L3INIT_USB_HOST_FS_CONTEXT_OFFSET,
2940 .modulemode = MODULEMODE_SWCTRL,
2941 },
2942 },
2943};
2944
2945/*
Benoit Coussonaf88fa92011-12-15 23:15:18 -07002946 * 'usb_host_hs' class
2947 * high-speed multi-port usb host controller
2948 */
Benoit Coussonaf88fa92011-12-15 23:15:18 -07002949
2950static struct omap_hwmod_class_sysconfig omap44xx_usb_host_hs_sysc = {
2951 .rev_offs = 0x0000,
2952 .sysc_offs = 0x0010,
2953 .syss_offs = 0x0014,
2954 .sysc_flags = (SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE |
Roger Quadrosb483a4a2013-12-03 16:25:46 +02002955 SYSC_HAS_SOFTRESET | SYSC_HAS_RESET_STATUS),
Benoit Coussonaf88fa92011-12-15 23:15:18 -07002956 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
2957 SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
2958 MSTANDBY_SMART | MSTANDBY_SMART_WKUP),
2959 .sysc_fields = &omap_hwmod_sysc_type2,
2960};
2961
2962static struct omap_hwmod_class omap44xx_usb_host_hs_hwmod_class = {
Paul Walmsley844a3b62012-04-19 04:04:33 -06002963 .name = "usb_host_hs",
2964 .sysc = &omap44xx_usb_host_hs_sysc,
Benoit Coussonaf88fa92011-12-15 23:15:18 -07002965};
2966
Paul Walmsley844a3b62012-04-19 04:04:33 -06002967/* usb_host_hs */
Benoit Coussonaf88fa92011-12-15 23:15:18 -07002968static struct omap_hwmod omap44xx_usb_host_hs_hwmod = {
2969 .name = "usb_host_hs",
2970 .class = &omap44xx_usb_host_hs_hwmod_class,
2971 .clkdm_name = "l3_init_clkdm",
2972 .main_clk = "usb_host_hs_fck",
2973 .prcm = {
2974 .omap4 = {
2975 .clkctrl_offs = OMAP4_CM_L3INIT_USB_HOST_CLKCTRL_OFFSET,
2976 .context_offs = OMAP4_RM_L3INIT_USB_HOST_CONTEXT_OFFSET,
2977 .modulemode = MODULEMODE_SWCTRL,
2978 },
2979 },
Benoit Coussonaf88fa92011-12-15 23:15:18 -07002980
2981 /*
2982 * Errata: USBHOST Configured In Smart-Idle Can Lead To a Deadlock
2983 * id: i660
2984 *
2985 * Description:
2986 * In the following configuration :
2987 * - USBHOST module is set to smart-idle mode
2988 * - PRCM asserts idle_req to the USBHOST module ( This typically
2989 * happens when the system is going to a low power mode : all ports
2990 * have been suspended, the master part of the USBHOST module has
2991 * entered the standby state, and SW has cut the functional clocks)
2992 * - an USBHOST interrupt occurs before the module is able to answer
2993 * idle_ack, typically a remote wakeup IRQ.
2994 * Then the USB HOST module will enter a deadlock situation where it
2995 * is no more accessible nor functional.
2996 *
2997 * Workaround:
2998 * Don't use smart idle; use only force idle, hence HWMOD_SWSUP_SIDLE
2999 */
3000
3001 /*
3002 * Errata: USB host EHCI may stall when entering smart-standby mode
3003 * Id: i571
3004 *
3005 * Description:
3006 * When the USBHOST module is set to smart-standby mode, and when it is
3007 * ready to enter the standby state (i.e. all ports are suspended and
3008 * all attached devices are in suspend mode), then it can wrongly assert
3009 * the Mstandby signal too early while there are still some residual OCP
3010 * transactions ongoing. If this condition occurs, the internal state
3011 * machine may go to an undefined state and the USB link may be stuck
3012 * upon the next resume.
3013 *
3014 * Workaround:
3015 * Don't use smart standby; use only force standby,
3016 * hence HWMOD_SWSUP_MSTANDBY
3017 */
3018
Roger Quadrosb483a4a2013-12-03 16:25:46 +02003019 .flags = HWMOD_SWSUP_SIDLE | HWMOD_SWSUP_MSTANDBY,
Benoit Coussonaf88fa92011-12-15 23:15:18 -07003020};
3021
3022/*
Paul Walmsley844a3b62012-04-19 04:04:33 -06003023 * 'usb_otg_hs' class
3024 * high-speed on-the-go universal serial bus (usb_otg_hs) controller
3025 */
3026
3027static struct omap_hwmod_class_sysconfig omap44xx_usb_otg_hs_sysc = {
3028 .rev_offs = 0x0400,
3029 .sysc_offs = 0x0404,
3030 .syss_offs = 0x0408,
3031 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_ENAWAKEUP |
3032 SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE |
3033 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
3034 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
3035 SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
3036 MSTANDBY_SMART),
3037 .sysc_fields = &omap_hwmod_sysc_type1,
3038};
3039
3040static struct omap_hwmod_class omap44xx_usb_otg_hs_hwmod_class = {
3041 .name = "usb_otg_hs",
3042 .sysc = &omap44xx_usb_otg_hs_sysc,
3043};
3044
3045/* usb_otg_hs */
Paul Walmsley844a3b62012-04-19 04:04:33 -06003046static struct omap_hwmod_opt_clk usb_otg_hs_opt_clks[] = {
3047 { .role = "xclk", .clk = "usb_otg_hs_xclk" },
3048};
3049
3050static struct omap_hwmod omap44xx_usb_otg_hs_hwmod = {
3051 .name = "usb_otg_hs",
3052 .class = &omap44xx_usb_otg_hs_hwmod_class,
3053 .clkdm_name = "l3_init_clkdm",
3054 .flags = HWMOD_SWSUP_SIDLE | HWMOD_SWSUP_MSTANDBY,
Paul Walmsley844a3b62012-04-19 04:04:33 -06003055 .main_clk = "usb_otg_hs_ick",
3056 .prcm = {
3057 .omap4 = {
3058 .clkctrl_offs = OMAP4_CM_L3INIT_USB_OTG_CLKCTRL_OFFSET,
3059 .context_offs = OMAP4_RM_L3INIT_USB_OTG_CONTEXT_OFFSET,
3060 .modulemode = MODULEMODE_HWCTRL,
3061 },
3062 },
3063 .opt_clks = usb_otg_hs_opt_clks,
3064 .opt_clks_cnt = ARRAY_SIZE(usb_otg_hs_opt_clks),
3065};
3066
3067/*
Benoit Coussonaf88fa92011-12-15 23:15:18 -07003068 * 'usb_tll_hs' class
3069 * usb_tll_hs module is the adapter on the usb_host_hs ports
3070 */
Paul Walmsley844a3b62012-04-19 04:04:33 -06003071
Benoit Coussonaf88fa92011-12-15 23:15:18 -07003072static struct omap_hwmod_class_sysconfig omap44xx_usb_tll_hs_sysc = {
3073 .rev_offs = 0x0000,
3074 .sysc_offs = 0x0010,
3075 .syss_offs = 0x0014,
3076 .sysc_flags = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
3077 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
3078 SYSC_HAS_AUTOIDLE),
3079 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
3080 .sysc_fields = &omap_hwmod_sysc_type1,
3081};
3082
3083static struct omap_hwmod_class omap44xx_usb_tll_hs_hwmod_class = {
Paul Walmsley844a3b62012-04-19 04:04:33 -06003084 .name = "usb_tll_hs",
3085 .sysc = &omap44xx_usb_tll_hs_sysc,
Benoit Coussonaf88fa92011-12-15 23:15:18 -07003086};
3087
Paul Walmsley844a3b62012-04-19 04:04:33 -06003088static struct omap_hwmod omap44xx_usb_tll_hs_hwmod = {
3089 .name = "usb_tll_hs",
3090 .class = &omap44xx_usb_tll_hs_hwmod_class,
3091 .clkdm_name = "l3_init_clkdm",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003092 .main_clk = "usb_tll_hs_ick",
3093 .prcm = {
3094 .omap4 = {
3095 .clkctrl_offs = OMAP4_CM_L3INIT_USB_TLL_CLKCTRL_OFFSET,
3096 .context_offs = OMAP4_RM_L3INIT_USB_TLL_CONTEXT_OFFSET,
3097 .modulemode = MODULEMODE_HWCTRL,
3098 },
3099 },
3100};
3101
3102/*
3103 * 'wd_timer' class
3104 * 32-bit watchdog upward counter that generates a pulse on the reset pin on
3105 * overflow condition
3106 */
3107
3108static struct omap_hwmod_class_sysconfig omap44xx_wd_timer_sysc = {
3109 .rev_offs = 0x0000,
3110 .sysc_offs = 0x0010,
3111 .syss_offs = 0x0014,
3112 .sysc_flags = (SYSC_HAS_EMUFREE | SYSC_HAS_SIDLEMODE |
3113 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
3114 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
3115 SIDLE_SMART_WKUP),
3116 .sysc_fields = &omap_hwmod_sysc_type1,
3117};
3118
3119static struct omap_hwmod_class omap44xx_wd_timer_hwmod_class = {
3120 .name = "wd_timer",
3121 .sysc = &omap44xx_wd_timer_sysc,
3122 .pre_shutdown = &omap2_wd_timer_disable,
Kevin Hilman414e4122012-05-08 11:34:30 -06003123 .reset = &omap2_wd_timer_reset,
Paul Walmsley844a3b62012-04-19 04:04:33 -06003124};
3125
3126/* wd_timer2 */
Paul Walmsley844a3b62012-04-19 04:04:33 -06003127static struct omap_hwmod omap44xx_wd_timer2_hwmod = {
3128 .name = "wd_timer2",
3129 .class = &omap44xx_wd_timer_hwmod_class,
3130 .clkdm_name = "l4_wkup_clkdm",
Paul Walmsley17b7e7d2013-01-26 00:48:54 -07003131 .main_clk = "sys_32k_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003132 .prcm = {
3133 .omap4 = {
3134 .clkctrl_offs = OMAP4_CM_WKUP_WDT2_CLKCTRL_OFFSET,
3135 .context_offs = OMAP4_RM_WKUP_WDT2_CONTEXT_OFFSET,
3136 .modulemode = MODULEMODE_SWCTRL,
3137 },
3138 },
3139};
3140
3141/* wd_timer3 */
Paul Walmsley844a3b62012-04-19 04:04:33 -06003142static struct omap_hwmod omap44xx_wd_timer3_hwmod = {
3143 .name = "wd_timer3",
3144 .class = &omap44xx_wd_timer_hwmod_class,
3145 .clkdm_name = "abe_clkdm",
Paul Walmsley17b7e7d2013-01-26 00:48:54 -07003146 .main_clk = "sys_32k_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003147 .prcm = {
3148 .omap4 = {
3149 .clkctrl_offs = OMAP4_CM1_ABE_WDT3_CLKCTRL_OFFSET,
3150 .context_offs = OMAP4_RM_ABE_WDT3_CONTEXT_OFFSET,
3151 .modulemode = MODULEMODE_SWCTRL,
3152 },
3153 },
3154};
3155
3156
3157/*
3158 * interfaces
3159 */
3160
3161/* l3_main_1 -> dmm */
3162static struct omap_hwmod_ocp_if omap44xx_l3_main_1__dmm = {
3163 .master = &omap44xx_l3_main_1_hwmod,
3164 .slave = &omap44xx_dmm_hwmod,
3165 .clk = "l3_div_ck",
3166 .user = OCP_USER_SDMA,
3167};
3168
Paul Walmsley844a3b62012-04-19 04:04:33 -06003169/* mpu -> dmm */
3170static struct omap_hwmod_ocp_if omap44xx_mpu__dmm = {
3171 .master = &omap44xx_mpu_hwmod,
3172 .slave = &omap44xx_dmm_hwmod,
3173 .clk = "l3_div_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003174 .user = OCP_USER_MPU,
3175};
3176
3177/* iva -> l3_instr */
3178static struct omap_hwmod_ocp_if omap44xx_iva__l3_instr = {
3179 .master = &omap44xx_iva_hwmod,
3180 .slave = &omap44xx_l3_instr_hwmod,
3181 .clk = "l3_div_ck",
3182 .user = OCP_USER_MPU | OCP_USER_SDMA,
3183};
3184
3185/* l3_main_3 -> l3_instr */
3186static struct omap_hwmod_ocp_if omap44xx_l3_main_3__l3_instr = {
3187 .master = &omap44xx_l3_main_3_hwmod,
3188 .slave = &omap44xx_l3_instr_hwmod,
3189 .clk = "l3_div_ck",
3190 .user = OCP_USER_MPU | OCP_USER_SDMA,
3191};
3192
Benoît Cousson9a817bc82012-04-19 13:33:56 -06003193/* ocp_wp_noc -> l3_instr */
3194static struct omap_hwmod_ocp_if omap44xx_ocp_wp_noc__l3_instr = {
3195 .master = &omap44xx_ocp_wp_noc_hwmod,
3196 .slave = &omap44xx_l3_instr_hwmod,
3197 .clk = "l3_div_ck",
3198 .user = OCP_USER_MPU | OCP_USER_SDMA,
3199};
3200
Paul Walmsley844a3b62012-04-19 04:04:33 -06003201/* dsp -> l3_main_1 */
3202static struct omap_hwmod_ocp_if omap44xx_dsp__l3_main_1 = {
3203 .master = &omap44xx_dsp_hwmod,
3204 .slave = &omap44xx_l3_main_1_hwmod,
3205 .clk = "l3_div_ck",
3206 .user = OCP_USER_MPU | OCP_USER_SDMA,
3207};
3208
3209/* dss -> l3_main_1 */
3210static struct omap_hwmod_ocp_if omap44xx_dss__l3_main_1 = {
3211 .master = &omap44xx_dss_hwmod,
3212 .slave = &omap44xx_l3_main_1_hwmod,
3213 .clk = "l3_div_ck",
3214 .user = OCP_USER_MPU | OCP_USER_SDMA,
3215};
3216
3217/* l3_main_2 -> l3_main_1 */
3218static struct omap_hwmod_ocp_if omap44xx_l3_main_2__l3_main_1 = {
3219 .master = &omap44xx_l3_main_2_hwmod,
3220 .slave = &omap44xx_l3_main_1_hwmod,
3221 .clk = "l3_div_ck",
3222 .user = OCP_USER_MPU | OCP_USER_SDMA,
3223};
3224
3225/* l4_cfg -> l3_main_1 */
3226static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l3_main_1 = {
3227 .master = &omap44xx_l4_cfg_hwmod,
3228 .slave = &omap44xx_l3_main_1_hwmod,
3229 .clk = "l4_div_ck",
3230 .user = OCP_USER_MPU | OCP_USER_SDMA,
3231};
3232
3233/* mmc1 -> l3_main_1 */
3234static struct omap_hwmod_ocp_if omap44xx_mmc1__l3_main_1 = {
3235 .master = &omap44xx_mmc1_hwmod,
3236 .slave = &omap44xx_l3_main_1_hwmod,
3237 .clk = "l3_div_ck",
3238 .user = OCP_USER_MPU | OCP_USER_SDMA,
3239};
3240
3241/* mmc2 -> l3_main_1 */
3242static struct omap_hwmod_ocp_if omap44xx_mmc2__l3_main_1 = {
3243 .master = &omap44xx_mmc2_hwmod,
3244 .slave = &omap44xx_l3_main_1_hwmod,
3245 .clk = "l3_div_ck",
3246 .user = OCP_USER_MPU | OCP_USER_SDMA,
3247};
3248
Paul Walmsley844a3b62012-04-19 04:04:33 -06003249/* mpu -> l3_main_1 */
3250static struct omap_hwmod_ocp_if omap44xx_mpu__l3_main_1 = {
3251 .master = &omap44xx_mpu_hwmod,
3252 .slave = &omap44xx_l3_main_1_hwmod,
3253 .clk = "l3_div_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003254 .user = OCP_USER_MPU,
3255};
3256
Benoît Cousson96566042012-04-19 13:33:59 -06003257/* debugss -> l3_main_2 */
3258static struct omap_hwmod_ocp_if omap44xx_debugss__l3_main_2 = {
3259 .master = &omap44xx_debugss_hwmod,
3260 .slave = &omap44xx_l3_main_2_hwmod,
3261 .clk = "dbgclk_mux_ck",
3262 .user = OCP_USER_MPU | OCP_USER_SDMA,
3263};
3264
Paul Walmsley844a3b62012-04-19 04:04:33 -06003265/* dma_system -> l3_main_2 */
3266static struct omap_hwmod_ocp_if omap44xx_dma_system__l3_main_2 = {
3267 .master = &omap44xx_dma_system_hwmod,
3268 .slave = &omap44xx_l3_main_2_hwmod,
3269 .clk = "l3_div_ck",
3270 .user = OCP_USER_MPU | OCP_USER_SDMA,
3271};
3272
Ming Leib050f682012-04-19 13:33:50 -06003273/* fdif -> l3_main_2 */
3274static struct omap_hwmod_ocp_if omap44xx_fdif__l3_main_2 = {
3275 .master = &omap44xx_fdif_hwmod,
3276 .slave = &omap44xx_l3_main_2_hwmod,
3277 .clk = "l3_div_ck",
3278 .user = OCP_USER_MPU | OCP_USER_SDMA,
3279};
3280
Paul Walmsley9def3902012-04-19 13:33:53 -06003281/* gpu -> l3_main_2 */
3282static struct omap_hwmod_ocp_if omap44xx_gpu__l3_main_2 = {
3283 .master = &omap44xx_gpu_hwmod,
3284 .slave = &omap44xx_l3_main_2_hwmod,
3285 .clk = "l3_div_ck",
3286 .user = OCP_USER_MPU | OCP_USER_SDMA,
3287};
3288
Paul Walmsley844a3b62012-04-19 04:04:33 -06003289/* hsi -> l3_main_2 */
3290static struct omap_hwmod_ocp_if omap44xx_hsi__l3_main_2 = {
3291 .master = &omap44xx_hsi_hwmod,
3292 .slave = &omap44xx_l3_main_2_hwmod,
3293 .clk = "l3_div_ck",
3294 .user = OCP_USER_MPU | OCP_USER_SDMA,
3295};
3296
3297/* ipu -> l3_main_2 */
3298static struct omap_hwmod_ocp_if omap44xx_ipu__l3_main_2 = {
3299 .master = &omap44xx_ipu_hwmod,
3300 .slave = &omap44xx_l3_main_2_hwmod,
3301 .clk = "l3_div_ck",
3302 .user = OCP_USER_MPU | OCP_USER_SDMA,
3303};
3304
3305/* iss -> l3_main_2 */
3306static struct omap_hwmod_ocp_if omap44xx_iss__l3_main_2 = {
3307 .master = &omap44xx_iss_hwmod,
3308 .slave = &omap44xx_l3_main_2_hwmod,
3309 .clk = "l3_div_ck",
3310 .user = OCP_USER_MPU | OCP_USER_SDMA,
3311};
3312
3313/* iva -> l3_main_2 */
3314static struct omap_hwmod_ocp_if omap44xx_iva__l3_main_2 = {
3315 .master = &omap44xx_iva_hwmod,
3316 .slave = &omap44xx_l3_main_2_hwmod,
3317 .clk = "l3_div_ck",
3318 .user = OCP_USER_MPU | OCP_USER_SDMA,
3319};
3320
Paul Walmsley844a3b62012-04-19 04:04:33 -06003321/* l3_main_1 -> l3_main_2 */
3322static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l3_main_2 = {
3323 .master = &omap44xx_l3_main_1_hwmod,
3324 .slave = &omap44xx_l3_main_2_hwmod,
3325 .clk = "l3_div_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003326 .user = OCP_USER_MPU,
3327};
3328
3329/* l4_cfg -> l3_main_2 */
3330static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l3_main_2 = {
3331 .master = &omap44xx_l4_cfg_hwmod,
3332 .slave = &omap44xx_l3_main_2_hwmod,
3333 .clk = "l4_div_ck",
3334 .user = OCP_USER_MPU | OCP_USER_SDMA,
3335};
3336
Benoît Cousson0c668872012-04-19 13:33:55 -06003337/* usb_host_fs -> l3_main_2 */
Paul Walmsleyb0a70cc2012-07-04 06:55:29 -06003338static struct omap_hwmod_ocp_if __maybe_unused omap44xx_usb_host_fs__l3_main_2 = {
Benoît Cousson0c668872012-04-19 13:33:55 -06003339 .master = &omap44xx_usb_host_fs_hwmod,
3340 .slave = &omap44xx_l3_main_2_hwmod,
3341 .clk = "l3_div_ck",
3342 .user = OCP_USER_MPU | OCP_USER_SDMA,
3343};
3344
Paul Walmsley844a3b62012-04-19 04:04:33 -06003345/* usb_host_hs -> l3_main_2 */
3346static struct omap_hwmod_ocp_if omap44xx_usb_host_hs__l3_main_2 = {
3347 .master = &omap44xx_usb_host_hs_hwmod,
3348 .slave = &omap44xx_l3_main_2_hwmod,
3349 .clk = "l3_div_ck",
3350 .user = OCP_USER_MPU | OCP_USER_SDMA,
3351};
3352
3353/* usb_otg_hs -> l3_main_2 */
3354static struct omap_hwmod_ocp_if omap44xx_usb_otg_hs__l3_main_2 = {
3355 .master = &omap44xx_usb_otg_hs_hwmod,
3356 .slave = &omap44xx_l3_main_2_hwmod,
3357 .clk = "l3_div_ck",
3358 .user = OCP_USER_MPU | OCP_USER_SDMA,
3359};
3360
Paul Walmsley844a3b62012-04-19 04:04:33 -06003361/* l3_main_1 -> l3_main_3 */
3362static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l3_main_3 = {
3363 .master = &omap44xx_l3_main_1_hwmod,
3364 .slave = &omap44xx_l3_main_3_hwmod,
3365 .clk = "l3_div_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003366 .user = OCP_USER_MPU,
3367};
3368
3369/* l3_main_2 -> l3_main_3 */
3370static struct omap_hwmod_ocp_if omap44xx_l3_main_2__l3_main_3 = {
3371 .master = &omap44xx_l3_main_2_hwmod,
3372 .slave = &omap44xx_l3_main_3_hwmod,
3373 .clk = "l3_div_ck",
3374 .user = OCP_USER_MPU | OCP_USER_SDMA,
3375};
3376
3377/* l4_cfg -> l3_main_3 */
3378static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l3_main_3 = {
3379 .master = &omap44xx_l4_cfg_hwmod,
3380 .slave = &omap44xx_l3_main_3_hwmod,
3381 .clk = "l4_div_ck",
3382 .user = OCP_USER_MPU | OCP_USER_SDMA,
3383};
3384
3385/* aess -> l4_abe */
Paul Walmsleyb0a70cc2012-07-04 06:55:29 -06003386static struct omap_hwmod_ocp_if __maybe_unused omap44xx_aess__l4_abe = {
Paul Walmsley844a3b62012-04-19 04:04:33 -06003387 .master = &omap44xx_aess_hwmod,
3388 .slave = &omap44xx_l4_abe_hwmod,
3389 .clk = "ocp_abe_iclk",
3390 .user = OCP_USER_MPU | OCP_USER_SDMA,
3391};
3392
3393/* dsp -> l4_abe */
3394static struct omap_hwmod_ocp_if omap44xx_dsp__l4_abe = {
3395 .master = &omap44xx_dsp_hwmod,
3396 .slave = &omap44xx_l4_abe_hwmod,
3397 .clk = "ocp_abe_iclk",
3398 .user = OCP_USER_MPU | OCP_USER_SDMA,
3399};
3400
3401/* l3_main_1 -> l4_abe */
3402static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l4_abe = {
3403 .master = &omap44xx_l3_main_1_hwmod,
3404 .slave = &omap44xx_l4_abe_hwmod,
3405 .clk = "l3_div_ck",
3406 .user = OCP_USER_MPU | OCP_USER_SDMA,
3407};
3408
3409/* mpu -> l4_abe */
3410static struct omap_hwmod_ocp_if omap44xx_mpu__l4_abe = {
3411 .master = &omap44xx_mpu_hwmod,
3412 .slave = &omap44xx_l4_abe_hwmod,
3413 .clk = "ocp_abe_iclk",
3414 .user = OCP_USER_MPU | OCP_USER_SDMA,
3415};
3416
3417/* l3_main_1 -> l4_cfg */
3418static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l4_cfg = {
3419 .master = &omap44xx_l3_main_1_hwmod,
3420 .slave = &omap44xx_l4_cfg_hwmod,
3421 .clk = "l3_div_ck",
3422 .user = OCP_USER_MPU | OCP_USER_SDMA,
3423};
3424
3425/* l3_main_2 -> l4_per */
3426static struct omap_hwmod_ocp_if omap44xx_l3_main_2__l4_per = {
3427 .master = &omap44xx_l3_main_2_hwmod,
3428 .slave = &omap44xx_l4_per_hwmod,
3429 .clk = "l3_div_ck",
3430 .user = OCP_USER_MPU | OCP_USER_SDMA,
3431};
3432
3433/* l4_cfg -> l4_wkup */
3434static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l4_wkup = {
3435 .master = &omap44xx_l4_cfg_hwmod,
3436 .slave = &omap44xx_l4_wkup_hwmod,
3437 .clk = "l4_div_ck",
3438 .user = OCP_USER_MPU | OCP_USER_SDMA,
3439};
3440
3441/* mpu -> mpu_private */
3442static struct omap_hwmod_ocp_if omap44xx_mpu__mpu_private = {
3443 .master = &omap44xx_mpu_hwmod,
3444 .slave = &omap44xx_mpu_private_hwmod,
3445 .clk = "l3_div_ck",
3446 .user = OCP_USER_MPU | OCP_USER_SDMA,
3447};
3448
Benoît Cousson9a817bc82012-04-19 13:33:56 -06003449/* l4_cfg -> ocp_wp_noc */
3450static struct omap_hwmod_ocp_if omap44xx_l4_cfg__ocp_wp_noc = {
3451 .master = &omap44xx_l4_cfg_hwmod,
3452 .slave = &omap44xx_ocp_wp_noc_hwmod,
3453 .clk = "l4_div_ck",
Benoît Cousson9a817bc82012-04-19 13:33:56 -06003454 .user = OCP_USER_MPU | OCP_USER_SDMA,
3455};
3456
Paul Walmsley844a3b62012-04-19 04:04:33 -06003457static struct omap_hwmod_addr_space omap44xx_aess_addrs[] = {
3458 {
Sebastien Guiriec9f0c5992013-02-10 11:22:24 -07003459 .name = "dmem",
3460 .pa_start = 0x40180000,
3461 .pa_end = 0x4018ffff
3462 },
3463 {
3464 .name = "cmem",
3465 .pa_start = 0x401a0000,
3466 .pa_end = 0x401a1fff
3467 },
3468 {
3469 .name = "smem",
3470 .pa_start = 0x401c0000,
3471 .pa_end = 0x401c5fff
3472 },
3473 {
3474 .name = "pmem",
3475 .pa_start = 0x401e0000,
3476 .pa_end = 0x401e1fff
3477 },
3478 {
3479 .name = "mpu",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003480 .pa_start = 0x401f1000,
3481 .pa_end = 0x401f13ff,
3482 .flags = ADDR_TYPE_RT
3483 },
3484 { }
3485};
3486
3487/* l4_abe -> aess */
Paul Walmsleyb0a70cc2012-07-04 06:55:29 -06003488static struct omap_hwmod_ocp_if __maybe_unused omap44xx_l4_abe__aess = {
Paul Walmsley844a3b62012-04-19 04:04:33 -06003489 .master = &omap44xx_l4_abe_hwmod,
3490 .slave = &omap44xx_aess_hwmod,
3491 .clk = "ocp_abe_iclk",
3492 .addr = omap44xx_aess_addrs,
3493 .user = OCP_USER_MPU,
3494};
3495
3496static struct omap_hwmod_addr_space omap44xx_aess_dma_addrs[] = {
3497 {
Sebastien Guiriec9f0c5992013-02-10 11:22:24 -07003498 .name = "dmem_dma",
3499 .pa_start = 0x49080000,
3500 .pa_end = 0x4908ffff
3501 },
3502 {
3503 .name = "cmem_dma",
3504 .pa_start = 0x490a0000,
3505 .pa_end = 0x490a1fff
3506 },
3507 {
3508 .name = "smem_dma",
3509 .pa_start = 0x490c0000,
3510 .pa_end = 0x490c5fff
3511 },
3512 {
3513 .name = "pmem_dma",
3514 .pa_start = 0x490e0000,
3515 .pa_end = 0x490e1fff
3516 },
3517 {
3518 .name = "dma",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003519 .pa_start = 0x490f1000,
3520 .pa_end = 0x490f13ff,
3521 .flags = ADDR_TYPE_RT
3522 },
3523 { }
3524};
3525
3526/* l4_abe -> aess (dma) */
Paul Walmsleyb0a70cc2012-07-04 06:55:29 -06003527static struct omap_hwmod_ocp_if __maybe_unused omap44xx_l4_abe__aess_dma = {
Paul Walmsley844a3b62012-04-19 04:04:33 -06003528 .master = &omap44xx_l4_abe_hwmod,
3529 .slave = &omap44xx_aess_hwmod,
3530 .clk = "ocp_abe_iclk",
3531 .addr = omap44xx_aess_dma_addrs,
3532 .user = OCP_USER_SDMA,
3533};
3534
Paul Walmsley42b9e382012-04-19 13:33:54 -06003535/* l3_main_2 -> c2c */
3536static struct omap_hwmod_ocp_if omap44xx_l3_main_2__c2c = {
3537 .master = &omap44xx_l3_main_2_hwmod,
3538 .slave = &omap44xx_c2c_hwmod,
3539 .clk = "l3_div_ck",
3540 .user = OCP_USER_MPU | OCP_USER_SDMA,
3541};
3542
Paul Walmsley844a3b62012-04-19 04:04:33 -06003543/* l4_wkup -> counter_32k */
3544static struct omap_hwmod_ocp_if omap44xx_l4_wkup__counter_32k = {
3545 .master = &omap44xx_l4_wkup_hwmod,
3546 .slave = &omap44xx_counter_32k_hwmod,
3547 .clk = "l4_wkup_clk_mux_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003548 .user = OCP_USER_MPU | OCP_USER_SDMA,
3549};
3550
Paul Walmsleya0b5d812012-04-19 13:33:57 -06003551static struct omap_hwmod_addr_space omap44xx_ctrl_module_core_addrs[] = {
3552 {
3553 .pa_start = 0x4a002000,
3554 .pa_end = 0x4a0027ff,
3555 .flags = ADDR_TYPE_RT
3556 },
3557 { }
3558};
3559
3560/* l4_cfg -> ctrl_module_core */
3561static struct omap_hwmod_ocp_if omap44xx_l4_cfg__ctrl_module_core = {
3562 .master = &omap44xx_l4_cfg_hwmod,
3563 .slave = &omap44xx_ctrl_module_core_hwmod,
3564 .clk = "l4_div_ck",
3565 .addr = omap44xx_ctrl_module_core_addrs,
3566 .user = OCP_USER_MPU | OCP_USER_SDMA,
3567};
3568
3569static struct omap_hwmod_addr_space omap44xx_ctrl_module_pad_core_addrs[] = {
3570 {
3571 .pa_start = 0x4a100000,
3572 .pa_end = 0x4a1007ff,
3573 .flags = ADDR_TYPE_RT
3574 },
3575 { }
3576};
3577
3578/* l4_cfg -> ctrl_module_pad_core */
3579static struct omap_hwmod_ocp_if omap44xx_l4_cfg__ctrl_module_pad_core = {
3580 .master = &omap44xx_l4_cfg_hwmod,
3581 .slave = &omap44xx_ctrl_module_pad_core_hwmod,
3582 .clk = "l4_div_ck",
3583 .addr = omap44xx_ctrl_module_pad_core_addrs,
3584 .user = OCP_USER_MPU | OCP_USER_SDMA,
3585};
3586
3587static struct omap_hwmod_addr_space omap44xx_ctrl_module_wkup_addrs[] = {
3588 {
3589 .pa_start = 0x4a30c000,
3590 .pa_end = 0x4a30c7ff,
3591 .flags = ADDR_TYPE_RT
3592 },
3593 { }
3594};
3595
3596/* l4_wkup -> ctrl_module_wkup */
3597static struct omap_hwmod_ocp_if omap44xx_l4_wkup__ctrl_module_wkup = {
3598 .master = &omap44xx_l4_wkup_hwmod,
3599 .slave = &omap44xx_ctrl_module_wkup_hwmod,
3600 .clk = "l4_wkup_clk_mux_ck",
3601 .addr = omap44xx_ctrl_module_wkup_addrs,
3602 .user = OCP_USER_MPU | OCP_USER_SDMA,
3603};
3604
3605static struct omap_hwmod_addr_space omap44xx_ctrl_module_pad_wkup_addrs[] = {
3606 {
3607 .pa_start = 0x4a31e000,
3608 .pa_end = 0x4a31e7ff,
3609 .flags = ADDR_TYPE_RT
3610 },
3611 { }
3612};
3613
3614/* l4_wkup -> ctrl_module_pad_wkup */
3615static struct omap_hwmod_ocp_if omap44xx_l4_wkup__ctrl_module_pad_wkup = {
3616 .master = &omap44xx_l4_wkup_hwmod,
3617 .slave = &omap44xx_ctrl_module_pad_wkup_hwmod,
3618 .clk = "l4_wkup_clk_mux_ck",
3619 .addr = omap44xx_ctrl_module_pad_wkup_addrs,
3620 .user = OCP_USER_MPU | OCP_USER_SDMA,
3621};
3622
Benoît Cousson96566042012-04-19 13:33:59 -06003623/* l3_instr -> debugss */
3624static struct omap_hwmod_ocp_if omap44xx_l3_instr__debugss = {
3625 .master = &omap44xx_l3_instr_hwmod,
3626 .slave = &omap44xx_debugss_hwmod,
3627 .clk = "l3_div_ck",
Benoît Cousson96566042012-04-19 13:33:59 -06003628 .user = OCP_USER_MPU | OCP_USER_SDMA,
3629};
3630
Paul Walmsley844a3b62012-04-19 04:04:33 -06003631static struct omap_hwmod_addr_space omap44xx_dma_system_addrs[] = {
3632 {
3633 .pa_start = 0x4a056000,
3634 .pa_end = 0x4a056fff,
3635 .flags = ADDR_TYPE_RT
3636 },
3637 { }
3638};
3639
3640/* l4_cfg -> dma_system */
3641static struct omap_hwmod_ocp_if omap44xx_l4_cfg__dma_system = {
3642 .master = &omap44xx_l4_cfg_hwmod,
3643 .slave = &omap44xx_dma_system_hwmod,
3644 .clk = "l4_div_ck",
3645 .addr = omap44xx_dma_system_addrs,
3646 .user = OCP_USER_MPU | OCP_USER_SDMA,
3647};
3648
Paul Walmsley844a3b62012-04-19 04:04:33 -06003649/* l4_abe -> dmic */
3650static struct omap_hwmod_ocp_if omap44xx_l4_abe__dmic = {
3651 .master = &omap44xx_l4_abe_hwmod,
3652 .slave = &omap44xx_dmic_hwmod,
3653 .clk = "ocp_abe_iclk",
Peter Ujfalusie3491792014-05-14 12:26:10 -06003654 .user = OCP_USER_MPU | OCP_USER_SDMA,
Paul Walmsley844a3b62012-04-19 04:04:33 -06003655};
3656
3657/* dsp -> iva */
3658static struct omap_hwmod_ocp_if omap44xx_dsp__iva = {
3659 .master = &omap44xx_dsp_hwmod,
3660 .slave = &omap44xx_iva_hwmod,
3661 .clk = "dpll_iva_m5x2_ck",
3662 .user = OCP_USER_DSP,
3663};
3664
Paul Walmsley42b9e382012-04-19 13:33:54 -06003665/* dsp -> sl2if */
Tero Kristob3601242012-09-03 11:50:53 -06003666static struct omap_hwmod_ocp_if __maybe_unused omap44xx_dsp__sl2if = {
Paul Walmsley42b9e382012-04-19 13:33:54 -06003667 .master = &omap44xx_dsp_hwmod,
3668 .slave = &omap44xx_sl2if_hwmod,
3669 .clk = "dpll_iva_m5x2_ck",
3670 .user = OCP_USER_DSP,
3671};
3672
Paul Walmsley844a3b62012-04-19 04:04:33 -06003673/* l4_cfg -> dsp */
3674static struct omap_hwmod_ocp_if omap44xx_l4_cfg__dsp = {
3675 .master = &omap44xx_l4_cfg_hwmod,
3676 .slave = &omap44xx_dsp_hwmod,
3677 .clk = "l4_div_ck",
3678 .user = OCP_USER_MPU | OCP_USER_SDMA,
3679};
3680
3681static struct omap_hwmod_addr_space omap44xx_dss_dma_addrs[] = {
3682 {
3683 .pa_start = 0x58000000,
3684 .pa_end = 0x5800007f,
3685 .flags = ADDR_TYPE_RT
3686 },
3687 { }
3688};
3689
3690/* l3_main_2 -> dss */
3691static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss = {
3692 .master = &omap44xx_l3_main_2_hwmod,
3693 .slave = &omap44xx_dss_hwmod,
Tomi Valkeinen7ede8562014-10-09 17:03:17 +03003694 .clk = "l3_div_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003695 .addr = omap44xx_dss_dma_addrs,
3696 .user = OCP_USER_SDMA,
3697};
3698
3699static struct omap_hwmod_addr_space omap44xx_dss_addrs[] = {
3700 {
3701 .pa_start = 0x48040000,
3702 .pa_end = 0x4804007f,
3703 .flags = ADDR_TYPE_RT
3704 },
3705 { }
3706};
3707
3708/* l4_per -> dss */
3709static struct omap_hwmod_ocp_if omap44xx_l4_per__dss = {
3710 .master = &omap44xx_l4_per_hwmod,
3711 .slave = &omap44xx_dss_hwmod,
3712 .clk = "l4_div_ck",
3713 .addr = omap44xx_dss_addrs,
3714 .user = OCP_USER_MPU,
3715};
3716
3717static struct omap_hwmod_addr_space omap44xx_dss_dispc_dma_addrs[] = {
3718 {
3719 .pa_start = 0x58001000,
3720 .pa_end = 0x58001fff,
3721 .flags = ADDR_TYPE_RT
3722 },
3723 { }
3724};
3725
3726/* l3_main_2 -> dss_dispc */
3727static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_dispc = {
3728 .master = &omap44xx_l3_main_2_hwmod,
3729 .slave = &omap44xx_dss_dispc_hwmod,
Tomi Valkeinen7ede8562014-10-09 17:03:17 +03003730 .clk = "l3_div_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003731 .addr = omap44xx_dss_dispc_dma_addrs,
3732 .user = OCP_USER_SDMA,
3733};
3734
3735static struct omap_hwmod_addr_space omap44xx_dss_dispc_addrs[] = {
3736 {
3737 .pa_start = 0x48041000,
3738 .pa_end = 0x48041fff,
3739 .flags = ADDR_TYPE_RT
3740 },
3741 { }
3742};
3743
3744/* l4_per -> dss_dispc */
3745static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_dispc = {
3746 .master = &omap44xx_l4_per_hwmod,
3747 .slave = &omap44xx_dss_dispc_hwmod,
3748 .clk = "l4_div_ck",
3749 .addr = omap44xx_dss_dispc_addrs,
3750 .user = OCP_USER_MPU,
3751};
3752
3753static struct omap_hwmod_addr_space omap44xx_dss_dsi1_dma_addrs[] = {
3754 {
3755 .pa_start = 0x58004000,
3756 .pa_end = 0x580041ff,
3757 .flags = ADDR_TYPE_RT
3758 },
3759 { }
3760};
3761
3762/* l3_main_2 -> dss_dsi1 */
3763static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_dsi1 = {
3764 .master = &omap44xx_l3_main_2_hwmod,
3765 .slave = &omap44xx_dss_dsi1_hwmod,
Tomi Valkeinen7ede8562014-10-09 17:03:17 +03003766 .clk = "l3_div_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003767 .addr = omap44xx_dss_dsi1_dma_addrs,
3768 .user = OCP_USER_SDMA,
3769};
3770
3771static struct omap_hwmod_addr_space omap44xx_dss_dsi1_addrs[] = {
3772 {
3773 .pa_start = 0x48044000,
3774 .pa_end = 0x480441ff,
3775 .flags = ADDR_TYPE_RT
3776 },
3777 { }
3778};
3779
3780/* l4_per -> dss_dsi1 */
3781static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_dsi1 = {
3782 .master = &omap44xx_l4_per_hwmod,
3783 .slave = &omap44xx_dss_dsi1_hwmod,
3784 .clk = "l4_div_ck",
3785 .addr = omap44xx_dss_dsi1_addrs,
3786 .user = OCP_USER_MPU,
3787};
3788
3789static struct omap_hwmod_addr_space omap44xx_dss_dsi2_dma_addrs[] = {
3790 {
3791 .pa_start = 0x58005000,
3792 .pa_end = 0x580051ff,
3793 .flags = ADDR_TYPE_RT
3794 },
3795 { }
3796};
3797
3798/* l3_main_2 -> dss_dsi2 */
3799static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_dsi2 = {
3800 .master = &omap44xx_l3_main_2_hwmod,
3801 .slave = &omap44xx_dss_dsi2_hwmod,
Tomi Valkeinen7ede8562014-10-09 17:03:17 +03003802 .clk = "l3_div_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003803 .addr = omap44xx_dss_dsi2_dma_addrs,
3804 .user = OCP_USER_SDMA,
3805};
3806
3807static struct omap_hwmod_addr_space omap44xx_dss_dsi2_addrs[] = {
3808 {
3809 .pa_start = 0x48045000,
3810 .pa_end = 0x480451ff,
3811 .flags = ADDR_TYPE_RT
3812 },
3813 { }
3814};
3815
3816/* l4_per -> dss_dsi2 */
3817static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_dsi2 = {
3818 .master = &omap44xx_l4_per_hwmod,
3819 .slave = &omap44xx_dss_dsi2_hwmod,
3820 .clk = "l4_div_ck",
3821 .addr = omap44xx_dss_dsi2_addrs,
3822 .user = OCP_USER_MPU,
3823};
3824
3825static struct omap_hwmod_addr_space omap44xx_dss_hdmi_dma_addrs[] = {
3826 {
3827 .pa_start = 0x58006000,
3828 .pa_end = 0x58006fff,
3829 .flags = ADDR_TYPE_RT
3830 },
3831 { }
3832};
3833
3834/* l3_main_2 -> dss_hdmi */
3835static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_hdmi = {
3836 .master = &omap44xx_l3_main_2_hwmod,
3837 .slave = &omap44xx_dss_hdmi_hwmod,
Tomi Valkeinen7ede8562014-10-09 17:03:17 +03003838 .clk = "l3_div_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003839 .addr = omap44xx_dss_hdmi_dma_addrs,
3840 .user = OCP_USER_SDMA,
3841};
3842
3843static struct omap_hwmod_addr_space omap44xx_dss_hdmi_addrs[] = {
3844 {
3845 .pa_start = 0x48046000,
3846 .pa_end = 0x48046fff,
3847 .flags = ADDR_TYPE_RT
3848 },
3849 { }
3850};
3851
3852/* l4_per -> dss_hdmi */
3853static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_hdmi = {
3854 .master = &omap44xx_l4_per_hwmod,
3855 .slave = &omap44xx_dss_hdmi_hwmod,
3856 .clk = "l4_div_ck",
3857 .addr = omap44xx_dss_hdmi_addrs,
3858 .user = OCP_USER_MPU,
3859};
3860
3861static struct omap_hwmod_addr_space omap44xx_dss_rfbi_dma_addrs[] = {
3862 {
3863 .pa_start = 0x58002000,
3864 .pa_end = 0x580020ff,
3865 .flags = ADDR_TYPE_RT
3866 },
3867 { }
3868};
3869
3870/* l3_main_2 -> dss_rfbi */
3871static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_rfbi = {
3872 .master = &omap44xx_l3_main_2_hwmod,
3873 .slave = &omap44xx_dss_rfbi_hwmod,
Tomi Valkeinen7ede8562014-10-09 17:03:17 +03003874 .clk = "l3_div_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003875 .addr = omap44xx_dss_rfbi_dma_addrs,
3876 .user = OCP_USER_SDMA,
3877};
3878
3879static struct omap_hwmod_addr_space omap44xx_dss_rfbi_addrs[] = {
3880 {
3881 .pa_start = 0x48042000,
3882 .pa_end = 0x480420ff,
3883 .flags = ADDR_TYPE_RT
3884 },
3885 { }
3886};
3887
3888/* l4_per -> dss_rfbi */
3889static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_rfbi = {
3890 .master = &omap44xx_l4_per_hwmod,
3891 .slave = &omap44xx_dss_rfbi_hwmod,
3892 .clk = "l4_div_ck",
3893 .addr = omap44xx_dss_rfbi_addrs,
3894 .user = OCP_USER_MPU,
3895};
3896
3897static struct omap_hwmod_addr_space omap44xx_dss_venc_dma_addrs[] = {
3898 {
3899 .pa_start = 0x58003000,
3900 .pa_end = 0x580030ff,
3901 .flags = ADDR_TYPE_RT
3902 },
3903 { }
3904};
3905
3906/* l3_main_2 -> dss_venc */
3907static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_venc = {
3908 .master = &omap44xx_l3_main_2_hwmod,
3909 .slave = &omap44xx_dss_venc_hwmod,
Tomi Valkeinen7ede8562014-10-09 17:03:17 +03003910 .clk = "l3_div_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003911 .addr = omap44xx_dss_venc_dma_addrs,
3912 .user = OCP_USER_SDMA,
3913};
3914
3915static struct omap_hwmod_addr_space omap44xx_dss_venc_addrs[] = {
3916 {
3917 .pa_start = 0x48043000,
3918 .pa_end = 0x480430ff,
3919 .flags = ADDR_TYPE_RT
3920 },
3921 { }
3922};
3923
3924/* l4_per -> dss_venc */
3925static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_venc = {
3926 .master = &omap44xx_l4_per_hwmod,
3927 .slave = &omap44xx_dss_venc_hwmod,
3928 .clk = "l4_div_ck",
3929 .addr = omap44xx_dss_venc_addrs,
3930 .user = OCP_USER_MPU,
3931};
3932
Paul Walmsley42b9e382012-04-19 13:33:54 -06003933/* l4_per -> elm */
3934static struct omap_hwmod_ocp_if omap44xx_l4_per__elm = {
3935 .master = &omap44xx_l4_per_hwmod,
3936 .slave = &omap44xx_elm_hwmod,
3937 .clk = "l4_div_ck",
Paul Walmsley42b9e382012-04-19 13:33:54 -06003938 .user = OCP_USER_MPU | OCP_USER_SDMA,
3939};
3940
Ming Leib050f682012-04-19 13:33:50 -06003941static struct omap_hwmod_addr_space omap44xx_fdif_addrs[] = {
3942 {
3943 .pa_start = 0x4a10a000,
3944 .pa_end = 0x4a10a1ff,
3945 .flags = ADDR_TYPE_RT
3946 },
3947 { }
3948};
3949
3950/* l4_cfg -> fdif */
3951static struct omap_hwmod_ocp_if omap44xx_l4_cfg__fdif = {
3952 .master = &omap44xx_l4_cfg_hwmod,
3953 .slave = &omap44xx_fdif_hwmod,
3954 .clk = "l4_div_ck",
3955 .addr = omap44xx_fdif_addrs,
3956 .user = OCP_USER_MPU | OCP_USER_SDMA,
3957};
3958
Paul Walmsley844a3b62012-04-19 04:04:33 -06003959/* l4_wkup -> gpio1 */
3960static struct omap_hwmod_ocp_if omap44xx_l4_wkup__gpio1 = {
3961 .master = &omap44xx_l4_wkup_hwmod,
3962 .slave = &omap44xx_gpio1_hwmod,
3963 .clk = "l4_wkup_clk_mux_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003964 .user = OCP_USER_MPU | OCP_USER_SDMA,
3965};
3966
Paul Walmsley844a3b62012-04-19 04:04:33 -06003967/* l4_per -> gpio2 */
3968static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio2 = {
3969 .master = &omap44xx_l4_per_hwmod,
3970 .slave = &omap44xx_gpio2_hwmod,
3971 .clk = "l4_div_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003972 .user = OCP_USER_MPU | OCP_USER_SDMA,
3973};
3974
Paul Walmsley844a3b62012-04-19 04:04:33 -06003975/* l4_per -> gpio3 */
3976static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio3 = {
3977 .master = &omap44xx_l4_per_hwmod,
3978 .slave = &omap44xx_gpio3_hwmod,
3979 .clk = "l4_div_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003980 .user = OCP_USER_MPU | OCP_USER_SDMA,
3981};
3982
Paul Walmsley844a3b62012-04-19 04:04:33 -06003983/* l4_per -> gpio4 */
3984static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio4 = {
3985 .master = &omap44xx_l4_per_hwmod,
3986 .slave = &omap44xx_gpio4_hwmod,
3987 .clk = "l4_div_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003988 .user = OCP_USER_MPU | OCP_USER_SDMA,
3989};
3990
Paul Walmsley844a3b62012-04-19 04:04:33 -06003991/* l4_per -> gpio5 */
3992static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio5 = {
3993 .master = &omap44xx_l4_per_hwmod,
3994 .slave = &omap44xx_gpio5_hwmod,
3995 .clk = "l4_div_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003996 .user = OCP_USER_MPU | OCP_USER_SDMA,
3997};
3998
Paul Walmsley844a3b62012-04-19 04:04:33 -06003999/* l4_per -> gpio6 */
4000static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio6 = {
4001 .master = &omap44xx_l4_per_hwmod,
4002 .slave = &omap44xx_gpio6_hwmod,
4003 .clk = "l4_div_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06004004 .user = OCP_USER_MPU | OCP_USER_SDMA,
4005};
4006
Benoît Coussoneb42b5d2012-04-19 13:33:51 -06004007/* l3_main_2 -> gpmc */
4008static struct omap_hwmod_ocp_if omap44xx_l3_main_2__gpmc = {
4009 .master = &omap44xx_l3_main_2_hwmod,
4010 .slave = &omap44xx_gpmc_hwmod,
4011 .clk = "l3_div_ck",
Benoît Coussoneb42b5d2012-04-19 13:33:51 -06004012 .user = OCP_USER_MPU | OCP_USER_SDMA,
4013};
4014
Paul Walmsley9def3902012-04-19 13:33:53 -06004015static struct omap_hwmod_addr_space omap44xx_gpu_addrs[] = {
4016 {
4017 .pa_start = 0x56000000,
4018 .pa_end = 0x5600ffff,
4019 .flags = ADDR_TYPE_RT
4020 },
4021 { }
4022};
4023
4024/* l3_main_2 -> gpu */
4025static struct omap_hwmod_ocp_if omap44xx_l3_main_2__gpu = {
4026 .master = &omap44xx_l3_main_2_hwmod,
4027 .slave = &omap44xx_gpu_hwmod,
4028 .clk = "l3_div_ck",
4029 .addr = omap44xx_gpu_addrs,
4030 .user = OCP_USER_MPU | OCP_USER_SDMA,
4031};
4032
Paul Walmsleya091c082012-04-19 13:33:50 -06004033static struct omap_hwmod_addr_space omap44xx_hdq1w_addrs[] = {
4034 {
4035 .pa_start = 0x480b2000,
4036 .pa_end = 0x480b201f,
4037 .flags = ADDR_TYPE_RT
4038 },
4039 { }
4040};
4041
4042/* l4_per -> hdq1w */
4043static struct omap_hwmod_ocp_if omap44xx_l4_per__hdq1w = {
4044 .master = &omap44xx_l4_per_hwmod,
4045 .slave = &omap44xx_hdq1w_hwmod,
4046 .clk = "l4_div_ck",
4047 .addr = omap44xx_hdq1w_addrs,
4048 .user = OCP_USER_MPU | OCP_USER_SDMA,
4049};
4050
Paul Walmsley844a3b62012-04-19 04:04:33 -06004051static struct omap_hwmod_addr_space omap44xx_hsi_addrs[] = {
4052 {
4053 .pa_start = 0x4a058000,
4054 .pa_end = 0x4a05bfff,
4055 .flags = ADDR_TYPE_RT
4056 },
4057 { }
4058};
4059
4060/* l4_cfg -> hsi */
4061static struct omap_hwmod_ocp_if omap44xx_l4_cfg__hsi = {
4062 .master = &omap44xx_l4_cfg_hwmod,
4063 .slave = &omap44xx_hsi_hwmod,
4064 .clk = "l4_div_ck",
4065 .addr = omap44xx_hsi_addrs,
4066 .user = OCP_USER_MPU | OCP_USER_SDMA,
4067};
4068
Paul Walmsley844a3b62012-04-19 04:04:33 -06004069/* l4_per -> i2c1 */
4070static struct omap_hwmod_ocp_if omap44xx_l4_per__i2c1 = {
4071 .master = &omap44xx_l4_per_hwmod,
4072 .slave = &omap44xx_i2c1_hwmod,
4073 .clk = "l4_div_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06004074 .user = OCP_USER_MPU | OCP_USER_SDMA,
4075};
4076
Paul Walmsley844a3b62012-04-19 04:04:33 -06004077/* l4_per -> i2c2 */
4078static struct omap_hwmod_ocp_if omap44xx_l4_per__i2c2 = {
4079 .master = &omap44xx_l4_per_hwmod,
4080 .slave = &omap44xx_i2c2_hwmod,
4081 .clk = "l4_div_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06004082 .user = OCP_USER_MPU | OCP_USER_SDMA,
4083};
4084
Paul Walmsley844a3b62012-04-19 04:04:33 -06004085/* l4_per -> i2c3 */
4086static struct omap_hwmod_ocp_if omap44xx_l4_per__i2c3 = {
4087 .master = &omap44xx_l4_per_hwmod,
4088 .slave = &omap44xx_i2c3_hwmod,
4089 .clk = "l4_div_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06004090 .user = OCP_USER_MPU | OCP_USER_SDMA,
4091};
4092
Paul Walmsley844a3b62012-04-19 04:04:33 -06004093/* l4_per -> i2c4 */
4094static struct omap_hwmod_ocp_if omap44xx_l4_per__i2c4 = {
4095 .master = &omap44xx_l4_per_hwmod,
4096 .slave = &omap44xx_i2c4_hwmod,
4097 .clk = "l4_div_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06004098 .user = OCP_USER_MPU | OCP_USER_SDMA,
4099};
4100
4101/* l3_main_2 -> ipu */
4102static struct omap_hwmod_ocp_if omap44xx_l3_main_2__ipu = {
4103 .master = &omap44xx_l3_main_2_hwmod,
4104 .slave = &omap44xx_ipu_hwmod,
4105 .clk = "l3_div_ck",
4106 .user = OCP_USER_MPU | OCP_USER_SDMA,
4107};
4108
4109static struct omap_hwmod_addr_space omap44xx_iss_addrs[] = {
4110 {
4111 .pa_start = 0x52000000,
4112 .pa_end = 0x520000ff,
4113 .flags = ADDR_TYPE_RT
4114 },
4115 { }
4116};
4117
4118/* l3_main_2 -> iss */
4119static struct omap_hwmod_ocp_if omap44xx_l3_main_2__iss = {
4120 .master = &omap44xx_l3_main_2_hwmod,
4121 .slave = &omap44xx_iss_hwmod,
4122 .clk = "l3_div_ck",
4123 .addr = omap44xx_iss_addrs,
4124 .user = OCP_USER_MPU | OCP_USER_SDMA,
4125};
4126
Paul Walmsley42b9e382012-04-19 13:33:54 -06004127/* iva -> sl2if */
Tero Kristob3601242012-09-03 11:50:53 -06004128static struct omap_hwmod_ocp_if __maybe_unused omap44xx_iva__sl2if = {
Paul Walmsley42b9e382012-04-19 13:33:54 -06004129 .master = &omap44xx_iva_hwmod,
4130 .slave = &omap44xx_sl2if_hwmod,
4131 .clk = "dpll_iva_m5x2_ck",
4132 .user = OCP_USER_IVA,
4133};
4134
Paul Walmsley844a3b62012-04-19 04:04:33 -06004135/* l3_main_2 -> iva */
4136static struct omap_hwmod_ocp_if omap44xx_l3_main_2__iva = {
4137 .master = &omap44xx_l3_main_2_hwmod,
4138 .slave = &omap44xx_iva_hwmod,
4139 .clk = "l3_div_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06004140 .user = OCP_USER_MPU,
4141};
4142
Paul Walmsley844a3b62012-04-19 04:04:33 -06004143/* l4_wkup -> kbd */
4144static struct omap_hwmod_ocp_if omap44xx_l4_wkup__kbd = {
4145 .master = &omap44xx_l4_wkup_hwmod,
4146 .slave = &omap44xx_kbd_hwmod,
4147 .clk = "l4_wkup_clk_mux_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06004148 .user = OCP_USER_MPU | OCP_USER_SDMA,
4149};
4150
Paul Walmsley844a3b62012-04-19 04:04:33 -06004151/* l4_cfg -> mailbox */
4152static struct omap_hwmod_ocp_if omap44xx_l4_cfg__mailbox = {
4153 .master = &omap44xx_l4_cfg_hwmod,
4154 .slave = &omap44xx_mailbox_hwmod,
4155 .clk = "l4_div_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06004156 .user = OCP_USER_MPU | OCP_USER_SDMA,
4157};
4158
Benoît Cousson896d4e92012-04-19 13:33:54 -06004159static struct omap_hwmod_addr_space omap44xx_mcasp_addrs[] = {
4160 {
4161 .pa_start = 0x40128000,
4162 .pa_end = 0x401283ff,
4163 .flags = ADDR_TYPE_RT
4164 },
4165 { }
4166};
4167
4168/* l4_abe -> mcasp */
4169static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcasp = {
4170 .master = &omap44xx_l4_abe_hwmod,
4171 .slave = &omap44xx_mcasp_hwmod,
4172 .clk = "ocp_abe_iclk",
4173 .addr = omap44xx_mcasp_addrs,
4174 .user = OCP_USER_MPU,
4175};
4176
4177static struct omap_hwmod_addr_space omap44xx_mcasp_dma_addrs[] = {
4178 {
4179 .pa_start = 0x49028000,
4180 .pa_end = 0x490283ff,
4181 .flags = ADDR_TYPE_RT
4182 },
4183 { }
4184};
4185
4186/* l4_abe -> mcasp (dma) */
4187static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcasp_dma = {
4188 .master = &omap44xx_l4_abe_hwmod,
4189 .slave = &omap44xx_mcasp_hwmod,
4190 .clk = "ocp_abe_iclk",
4191 .addr = omap44xx_mcasp_dma_addrs,
4192 .user = OCP_USER_SDMA,
4193};
4194
Paul Walmsley844a3b62012-04-19 04:04:33 -06004195/* l4_abe -> mcbsp1 */
4196static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp1 = {
4197 .master = &omap44xx_l4_abe_hwmod,
4198 .slave = &omap44xx_mcbsp1_hwmod,
4199 .clk = "ocp_abe_iclk",
Peter Ujfalusie3491792014-05-14 12:26:10 -06004200 .user = OCP_USER_MPU | OCP_USER_SDMA,
Paul Walmsley844a3b62012-04-19 04:04:33 -06004201};
4202
Paul Walmsley844a3b62012-04-19 04:04:33 -06004203/* l4_abe -> mcbsp2 */
4204static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp2 = {
4205 .master = &omap44xx_l4_abe_hwmod,
4206 .slave = &omap44xx_mcbsp2_hwmod,
4207 .clk = "ocp_abe_iclk",
Peter Ujfalusie3491792014-05-14 12:26:10 -06004208 .user = OCP_USER_MPU | OCP_USER_SDMA,
Paul Walmsley844a3b62012-04-19 04:04:33 -06004209};
4210
Paul Walmsley844a3b62012-04-19 04:04:33 -06004211/* l4_abe -> mcbsp3 */
4212static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp3 = {
4213 .master = &omap44xx_l4_abe_hwmod,
4214 .slave = &omap44xx_mcbsp3_hwmod,
4215 .clk = "ocp_abe_iclk",
Peter Ujfalusie3491792014-05-14 12:26:10 -06004216 .user = OCP_USER_MPU | OCP_USER_SDMA,
Paul Walmsley844a3b62012-04-19 04:04:33 -06004217};
4218
Paul Walmsley844a3b62012-04-19 04:04:33 -06004219/* l4_per -> mcbsp4 */
4220static struct omap_hwmod_ocp_if omap44xx_l4_per__mcbsp4 = {
4221 .master = &omap44xx_l4_per_hwmod,
4222 .slave = &omap44xx_mcbsp4_hwmod,
4223 .clk = "l4_div_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06004224 .user = OCP_USER_MPU | OCP_USER_SDMA,
4225};
4226
Paul Walmsley844a3b62012-04-19 04:04:33 -06004227/* l4_abe -> mcpdm */
4228static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcpdm = {
4229 .master = &omap44xx_l4_abe_hwmod,
4230 .slave = &omap44xx_mcpdm_hwmod,
4231 .clk = "ocp_abe_iclk",
Peter Ujfalusie3491792014-05-14 12:26:10 -06004232 .user = OCP_USER_MPU | OCP_USER_SDMA,
Paul Walmsley844a3b62012-04-19 04:04:33 -06004233};
4234
Paul Walmsley844a3b62012-04-19 04:04:33 -06004235/* l4_per -> mcspi1 */
4236static struct omap_hwmod_ocp_if omap44xx_l4_per__mcspi1 = {
4237 .master = &omap44xx_l4_per_hwmod,
4238 .slave = &omap44xx_mcspi1_hwmod,
4239 .clk = "l4_div_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06004240 .user = OCP_USER_MPU | OCP_USER_SDMA,
4241};
4242
Paul Walmsley844a3b62012-04-19 04:04:33 -06004243/* l4_per -> mcspi2 */
4244static struct omap_hwmod_ocp_if omap44xx_l4_per__mcspi2 = {
4245 .master = &omap44xx_l4_per_hwmod,
4246 .slave = &omap44xx_mcspi2_hwmod,
4247 .clk = "l4_div_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06004248 .user = OCP_USER_MPU | OCP_USER_SDMA,
4249};
4250
Paul Walmsley844a3b62012-04-19 04:04:33 -06004251/* l4_per -> mcspi3 */
4252static struct omap_hwmod_ocp_if omap44xx_l4_per__mcspi3 = {
4253 .master = &omap44xx_l4_per_hwmod,
4254 .slave = &omap44xx_mcspi3_hwmod,
4255 .clk = "l4_div_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06004256 .user = OCP_USER_MPU | OCP_USER_SDMA,
4257};
4258
Paul Walmsley844a3b62012-04-19 04:04:33 -06004259/* l4_per -> mcspi4 */
4260static struct omap_hwmod_ocp_if omap44xx_l4_per__mcspi4 = {
4261 .master = &omap44xx_l4_per_hwmod,
4262 .slave = &omap44xx_mcspi4_hwmod,
4263 .clk = "l4_div_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06004264 .user = OCP_USER_MPU | OCP_USER_SDMA,
4265};
4266
Paul Walmsley844a3b62012-04-19 04:04:33 -06004267/* l4_per -> mmc1 */
4268static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc1 = {
4269 .master = &omap44xx_l4_per_hwmod,
4270 .slave = &omap44xx_mmc1_hwmod,
4271 .clk = "l4_div_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06004272 .user = OCP_USER_MPU | OCP_USER_SDMA,
4273};
4274
Paul Walmsley844a3b62012-04-19 04:04:33 -06004275/* l4_per -> mmc2 */
4276static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc2 = {
4277 .master = &omap44xx_l4_per_hwmod,
4278 .slave = &omap44xx_mmc2_hwmod,
4279 .clk = "l4_div_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06004280 .user = OCP_USER_MPU | OCP_USER_SDMA,
4281};
4282
Paul Walmsley844a3b62012-04-19 04:04:33 -06004283/* l4_per -> mmc3 */
4284static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc3 = {
4285 .master = &omap44xx_l4_per_hwmod,
4286 .slave = &omap44xx_mmc3_hwmod,
4287 .clk = "l4_div_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06004288 .user = OCP_USER_MPU | OCP_USER_SDMA,
4289};
4290
Paul Walmsley844a3b62012-04-19 04:04:33 -06004291/* l4_per -> mmc4 */
4292static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc4 = {
4293 .master = &omap44xx_l4_per_hwmod,
4294 .slave = &omap44xx_mmc4_hwmod,
4295 .clk = "l4_div_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06004296 .user = OCP_USER_MPU | OCP_USER_SDMA,
4297};
4298
Paul Walmsley844a3b62012-04-19 04:04:33 -06004299/* l4_per -> mmc5 */
4300static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc5 = {
4301 .master = &omap44xx_l4_per_hwmod,
4302 .slave = &omap44xx_mmc5_hwmod,
4303 .clk = "l4_div_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06004304 .user = OCP_USER_MPU | OCP_USER_SDMA,
4305};
4306
Paul Walmsleye17f18c2012-04-19 13:33:56 -06004307/* l3_main_2 -> ocmc_ram */
4308static struct omap_hwmod_ocp_if omap44xx_l3_main_2__ocmc_ram = {
4309 .master = &omap44xx_l3_main_2_hwmod,
4310 .slave = &omap44xx_ocmc_ram_hwmod,
4311 .clk = "l3_div_ck",
4312 .user = OCP_USER_MPU | OCP_USER_SDMA,
4313};
4314
Benoît Cousson0c668872012-04-19 13:33:55 -06004315/* l4_cfg -> ocp2scp_usb_phy */
4316static struct omap_hwmod_ocp_if omap44xx_l4_cfg__ocp2scp_usb_phy = {
4317 .master = &omap44xx_l4_cfg_hwmod,
4318 .slave = &omap44xx_ocp2scp_usb_phy_hwmod,
4319 .clk = "l4_div_ck",
4320 .user = OCP_USER_MPU | OCP_USER_SDMA,
4321};
4322
Paul Walmsley794b4802012-04-19 13:33:58 -06004323/* mpu_private -> prcm_mpu */
4324static struct omap_hwmod_ocp_if omap44xx_mpu_private__prcm_mpu = {
4325 .master = &omap44xx_mpu_private_hwmod,
4326 .slave = &omap44xx_prcm_mpu_hwmod,
4327 .clk = "l3_div_ck",
Paul Walmsley794b4802012-04-19 13:33:58 -06004328 .user = OCP_USER_MPU | OCP_USER_SDMA,
4329};
4330
Paul Walmsley794b4802012-04-19 13:33:58 -06004331/* l4_wkup -> cm_core_aon */
4332static struct omap_hwmod_ocp_if omap44xx_l4_wkup__cm_core_aon = {
4333 .master = &omap44xx_l4_wkup_hwmod,
4334 .slave = &omap44xx_cm_core_aon_hwmod,
4335 .clk = "l4_wkup_clk_mux_ck",
Paul Walmsley794b4802012-04-19 13:33:58 -06004336 .user = OCP_USER_MPU | OCP_USER_SDMA,
4337};
4338
Paul Walmsley794b4802012-04-19 13:33:58 -06004339/* l4_cfg -> cm_core */
4340static struct omap_hwmod_ocp_if omap44xx_l4_cfg__cm_core = {
4341 .master = &omap44xx_l4_cfg_hwmod,
4342 .slave = &omap44xx_cm_core_hwmod,
4343 .clk = "l4_div_ck",
Paul Walmsley794b4802012-04-19 13:33:58 -06004344 .user = OCP_USER_MPU | OCP_USER_SDMA,
4345};
4346
Paul Walmsley794b4802012-04-19 13:33:58 -06004347/* l4_wkup -> prm */
4348static struct omap_hwmod_ocp_if omap44xx_l4_wkup__prm = {
4349 .master = &omap44xx_l4_wkup_hwmod,
4350 .slave = &omap44xx_prm_hwmod,
4351 .clk = "l4_wkup_clk_mux_ck",
Paul Walmsley794b4802012-04-19 13:33:58 -06004352 .user = OCP_USER_MPU | OCP_USER_SDMA,
4353};
4354
Paul Walmsley794b4802012-04-19 13:33:58 -06004355/* l4_wkup -> scrm */
4356static struct omap_hwmod_ocp_if omap44xx_l4_wkup__scrm = {
4357 .master = &omap44xx_l4_wkup_hwmod,
4358 .slave = &omap44xx_scrm_hwmod,
4359 .clk = "l4_wkup_clk_mux_ck",
Paul Walmsley794b4802012-04-19 13:33:58 -06004360 .user = OCP_USER_MPU | OCP_USER_SDMA,
4361};
4362
Paul Walmsley42b9e382012-04-19 13:33:54 -06004363/* l3_main_2 -> sl2if */
Tero Kristob3601242012-09-03 11:50:53 -06004364static struct omap_hwmod_ocp_if __maybe_unused omap44xx_l3_main_2__sl2if = {
Paul Walmsley42b9e382012-04-19 13:33:54 -06004365 .master = &omap44xx_l3_main_2_hwmod,
4366 .slave = &omap44xx_sl2if_hwmod,
4367 .clk = "l3_div_ck",
4368 .user = OCP_USER_MPU | OCP_USER_SDMA,
4369};
4370
Benoît Cousson1e3b5e592012-04-19 13:33:53 -06004371static struct omap_hwmod_addr_space omap44xx_slimbus1_addrs[] = {
4372 {
4373 .pa_start = 0x4012c000,
4374 .pa_end = 0x4012c3ff,
4375 .flags = ADDR_TYPE_RT
4376 },
4377 { }
4378};
4379
4380/* l4_abe -> slimbus1 */
4381static struct omap_hwmod_ocp_if omap44xx_l4_abe__slimbus1 = {
4382 .master = &omap44xx_l4_abe_hwmod,
4383 .slave = &omap44xx_slimbus1_hwmod,
4384 .clk = "ocp_abe_iclk",
4385 .addr = omap44xx_slimbus1_addrs,
4386 .user = OCP_USER_MPU,
4387};
4388
4389static struct omap_hwmod_addr_space omap44xx_slimbus1_dma_addrs[] = {
4390 {
4391 .pa_start = 0x4902c000,
4392 .pa_end = 0x4902c3ff,
4393 .flags = ADDR_TYPE_RT
4394 },
4395 { }
4396};
4397
4398/* l4_abe -> slimbus1 (dma) */
4399static struct omap_hwmod_ocp_if omap44xx_l4_abe__slimbus1_dma = {
4400 .master = &omap44xx_l4_abe_hwmod,
4401 .slave = &omap44xx_slimbus1_hwmod,
4402 .clk = "ocp_abe_iclk",
4403 .addr = omap44xx_slimbus1_dma_addrs,
4404 .user = OCP_USER_SDMA,
4405};
4406
4407static struct omap_hwmod_addr_space omap44xx_slimbus2_addrs[] = {
4408 {
4409 .pa_start = 0x48076000,
4410 .pa_end = 0x480763ff,
4411 .flags = ADDR_TYPE_RT
4412 },
4413 { }
4414};
4415
4416/* l4_per -> slimbus2 */
4417static struct omap_hwmod_ocp_if omap44xx_l4_per__slimbus2 = {
4418 .master = &omap44xx_l4_per_hwmod,
4419 .slave = &omap44xx_slimbus2_hwmod,
4420 .clk = "l4_div_ck",
4421 .addr = omap44xx_slimbus2_addrs,
4422 .user = OCP_USER_MPU | OCP_USER_SDMA,
4423};
4424
Paul Walmsley844a3b62012-04-19 04:04:33 -06004425static struct omap_hwmod_addr_space omap44xx_smartreflex_core_addrs[] = {
4426 {
4427 .pa_start = 0x4a0dd000,
4428 .pa_end = 0x4a0dd03f,
4429 .flags = ADDR_TYPE_RT
4430 },
4431 { }
4432};
4433
4434/* l4_cfg -> smartreflex_core */
4435static struct omap_hwmod_ocp_if omap44xx_l4_cfg__smartreflex_core = {
4436 .master = &omap44xx_l4_cfg_hwmod,
4437 .slave = &omap44xx_smartreflex_core_hwmod,
4438 .clk = "l4_div_ck",
4439 .addr = omap44xx_smartreflex_core_addrs,
4440 .user = OCP_USER_MPU | OCP_USER_SDMA,
4441};
4442
4443static struct omap_hwmod_addr_space omap44xx_smartreflex_iva_addrs[] = {
4444 {
4445 .pa_start = 0x4a0db000,
4446 .pa_end = 0x4a0db03f,
4447 .flags = ADDR_TYPE_RT
4448 },
4449 { }
4450};
4451
4452/* l4_cfg -> smartreflex_iva */
4453static struct omap_hwmod_ocp_if omap44xx_l4_cfg__smartreflex_iva = {
4454 .master = &omap44xx_l4_cfg_hwmod,
4455 .slave = &omap44xx_smartreflex_iva_hwmod,
4456 .clk = "l4_div_ck",
4457 .addr = omap44xx_smartreflex_iva_addrs,
4458 .user = OCP_USER_MPU | OCP_USER_SDMA,
4459};
4460
4461static struct omap_hwmod_addr_space omap44xx_smartreflex_mpu_addrs[] = {
4462 {
4463 .pa_start = 0x4a0d9000,
4464 .pa_end = 0x4a0d903f,
4465 .flags = ADDR_TYPE_RT
4466 },
4467 { }
4468};
4469
4470/* l4_cfg -> smartreflex_mpu */
4471static struct omap_hwmod_ocp_if omap44xx_l4_cfg__smartreflex_mpu = {
4472 .master = &omap44xx_l4_cfg_hwmod,
4473 .slave = &omap44xx_smartreflex_mpu_hwmod,
4474 .clk = "l4_div_ck",
4475 .addr = omap44xx_smartreflex_mpu_addrs,
4476 .user = OCP_USER_MPU | OCP_USER_SDMA,
4477};
4478
Paul Walmsley844a3b62012-04-19 04:04:33 -06004479/* l4_cfg -> spinlock */
4480static struct omap_hwmod_ocp_if omap44xx_l4_cfg__spinlock = {
4481 .master = &omap44xx_l4_cfg_hwmod,
4482 .slave = &omap44xx_spinlock_hwmod,
4483 .clk = "l4_div_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06004484 .user = OCP_USER_MPU | OCP_USER_SDMA,
4485};
4486
Paul Walmsley844a3b62012-04-19 04:04:33 -06004487/* l4_wkup -> timer1 */
4488static struct omap_hwmod_ocp_if omap44xx_l4_wkup__timer1 = {
4489 .master = &omap44xx_l4_wkup_hwmod,
4490 .slave = &omap44xx_timer1_hwmod,
4491 .clk = "l4_wkup_clk_mux_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06004492 .user = OCP_USER_MPU | OCP_USER_SDMA,
4493};
4494
Paul Walmsley844a3b62012-04-19 04:04:33 -06004495/* l4_per -> timer2 */
4496static struct omap_hwmod_ocp_if omap44xx_l4_per__timer2 = {
4497 .master = &omap44xx_l4_per_hwmod,
4498 .slave = &omap44xx_timer2_hwmod,
4499 .clk = "l4_div_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06004500 .user = OCP_USER_MPU | OCP_USER_SDMA,
4501};
4502
Paul Walmsley844a3b62012-04-19 04:04:33 -06004503/* l4_per -> timer3 */
4504static struct omap_hwmod_ocp_if omap44xx_l4_per__timer3 = {
4505 .master = &omap44xx_l4_per_hwmod,
4506 .slave = &omap44xx_timer3_hwmod,
4507 .clk = "l4_div_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06004508 .user = OCP_USER_MPU | OCP_USER_SDMA,
4509};
4510
Paul Walmsley844a3b62012-04-19 04:04:33 -06004511/* l4_per -> timer4 */
4512static struct omap_hwmod_ocp_if omap44xx_l4_per__timer4 = {
4513 .master = &omap44xx_l4_per_hwmod,
4514 .slave = &omap44xx_timer4_hwmod,
4515 .clk = "l4_div_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06004516 .user = OCP_USER_MPU | OCP_USER_SDMA,
4517};
4518
Paul Walmsley844a3b62012-04-19 04:04:33 -06004519/* l4_abe -> timer5 */
4520static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer5 = {
4521 .master = &omap44xx_l4_abe_hwmod,
4522 .slave = &omap44xx_timer5_hwmod,
4523 .clk = "ocp_abe_iclk",
Peter Ujfalusie3491792014-05-14 12:26:10 -06004524 .user = OCP_USER_MPU | OCP_USER_SDMA,
Paul Walmsley844a3b62012-04-19 04:04:33 -06004525};
4526
Paul Walmsley844a3b62012-04-19 04:04:33 -06004527/* l4_abe -> timer6 */
4528static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer6 = {
4529 .master = &omap44xx_l4_abe_hwmod,
4530 .slave = &omap44xx_timer6_hwmod,
4531 .clk = "ocp_abe_iclk",
Peter Ujfalusie3491792014-05-14 12:26:10 -06004532 .user = OCP_USER_MPU | OCP_USER_SDMA,
Paul Walmsley844a3b62012-04-19 04:04:33 -06004533};
4534
Paul Walmsley844a3b62012-04-19 04:04:33 -06004535/* l4_abe -> timer7 */
4536static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer7 = {
4537 .master = &omap44xx_l4_abe_hwmod,
4538 .slave = &omap44xx_timer7_hwmod,
4539 .clk = "ocp_abe_iclk",
Peter Ujfalusie3491792014-05-14 12:26:10 -06004540 .user = OCP_USER_MPU | OCP_USER_SDMA,
Paul Walmsley844a3b62012-04-19 04:04:33 -06004541};
4542
Paul Walmsley844a3b62012-04-19 04:04:33 -06004543/* l4_abe -> timer8 */
4544static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer8 = {
4545 .master = &omap44xx_l4_abe_hwmod,
4546 .slave = &omap44xx_timer8_hwmod,
4547 .clk = "ocp_abe_iclk",
Peter Ujfalusie3491792014-05-14 12:26:10 -06004548 .user = OCP_USER_MPU | OCP_USER_SDMA,
Paul Walmsley844a3b62012-04-19 04:04:33 -06004549};
4550
Paul Walmsley844a3b62012-04-19 04:04:33 -06004551/* l4_per -> timer9 */
4552static struct omap_hwmod_ocp_if omap44xx_l4_per__timer9 = {
4553 .master = &omap44xx_l4_per_hwmod,
4554 .slave = &omap44xx_timer9_hwmod,
4555 .clk = "l4_div_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06004556 .user = OCP_USER_MPU | OCP_USER_SDMA,
4557};
4558
Paul Walmsley844a3b62012-04-19 04:04:33 -06004559/* l4_per -> timer10 */
4560static struct omap_hwmod_ocp_if omap44xx_l4_per__timer10 = {
4561 .master = &omap44xx_l4_per_hwmod,
4562 .slave = &omap44xx_timer10_hwmod,
4563 .clk = "l4_div_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06004564 .user = OCP_USER_MPU | OCP_USER_SDMA,
4565};
4566
Paul Walmsley844a3b62012-04-19 04:04:33 -06004567/* l4_per -> timer11 */
4568static struct omap_hwmod_ocp_if omap44xx_l4_per__timer11 = {
4569 .master = &omap44xx_l4_per_hwmod,
4570 .slave = &omap44xx_timer11_hwmod,
4571 .clk = "l4_div_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06004572 .user = OCP_USER_MPU | OCP_USER_SDMA,
4573};
4574
Paul Walmsley844a3b62012-04-19 04:04:33 -06004575/* l4_per -> uart1 */
4576static struct omap_hwmod_ocp_if omap44xx_l4_per__uart1 = {
4577 .master = &omap44xx_l4_per_hwmod,
4578 .slave = &omap44xx_uart1_hwmod,
4579 .clk = "l4_div_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06004580 .user = OCP_USER_MPU | OCP_USER_SDMA,
4581};
4582
Paul Walmsley844a3b62012-04-19 04:04:33 -06004583/* l4_per -> uart2 */
4584static struct omap_hwmod_ocp_if omap44xx_l4_per__uart2 = {
4585 .master = &omap44xx_l4_per_hwmod,
4586 .slave = &omap44xx_uart2_hwmod,
4587 .clk = "l4_div_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06004588 .user = OCP_USER_MPU | OCP_USER_SDMA,
4589};
4590
Paul Walmsley844a3b62012-04-19 04:04:33 -06004591/* l4_per -> uart3 */
4592static struct omap_hwmod_ocp_if omap44xx_l4_per__uart3 = {
4593 .master = &omap44xx_l4_per_hwmod,
4594 .slave = &omap44xx_uart3_hwmod,
4595 .clk = "l4_div_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06004596 .user = OCP_USER_MPU | OCP_USER_SDMA,
4597};
4598
Paul Walmsley844a3b62012-04-19 04:04:33 -06004599/* l4_per -> uart4 */
4600static struct omap_hwmod_ocp_if omap44xx_l4_per__uart4 = {
4601 .master = &omap44xx_l4_per_hwmod,
4602 .slave = &omap44xx_uart4_hwmod,
4603 .clk = "l4_div_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06004604 .user = OCP_USER_MPU | OCP_USER_SDMA,
4605};
4606
Benoît Cousson0c668872012-04-19 13:33:55 -06004607/* l4_cfg -> usb_host_fs */
Paul Walmsleyb0a70cc2012-07-04 06:55:29 -06004608static struct omap_hwmod_ocp_if __maybe_unused omap44xx_l4_cfg__usb_host_fs = {
Benoît Cousson0c668872012-04-19 13:33:55 -06004609 .master = &omap44xx_l4_cfg_hwmod,
4610 .slave = &omap44xx_usb_host_fs_hwmod,
4611 .clk = "l4_div_ck",
Benoît Cousson0c668872012-04-19 13:33:55 -06004612 .user = OCP_USER_MPU | OCP_USER_SDMA,
4613};
4614
Paul Walmsley844a3b62012-04-19 04:04:33 -06004615/* l4_cfg -> usb_host_hs */
4616static struct omap_hwmod_ocp_if omap44xx_l4_cfg__usb_host_hs = {
4617 .master = &omap44xx_l4_cfg_hwmod,
4618 .slave = &omap44xx_usb_host_hs_hwmod,
4619 .clk = "l4_div_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06004620 .user = OCP_USER_MPU | OCP_USER_SDMA,
4621};
4622
Paul Walmsley844a3b62012-04-19 04:04:33 -06004623/* l4_cfg -> usb_otg_hs */
4624static struct omap_hwmod_ocp_if omap44xx_l4_cfg__usb_otg_hs = {
4625 .master = &omap44xx_l4_cfg_hwmod,
4626 .slave = &omap44xx_usb_otg_hs_hwmod,
4627 .clk = "l4_div_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06004628 .user = OCP_USER_MPU | OCP_USER_SDMA,
4629};
4630
Paul Walmsley844a3b62012-04-19 04:04:33 -06004631/* l4_cfg -> usb_tll_hs */
Benoit Coussonaf88fa92011-12-15 23:15:18 -07004632static struct omap_hwmod_ocp_if omap44xx_l4_cfg__usb_tll_hs = {
4633 .master = &omap44xx_l4_cfg_hwmod,
4634 .slave = &omap44xx_usb_tll_hs_hwmod,
4635 .clk = "l4_div_ck",
Benoit Coussonaf88fa92011-12-15 23:15:18 -07004636 .user = OCP_USER_MPU | OCP_USER_SDMA,
4637};
4638
Paul Walmsley844a3b62012-04-19 04:04:33 -06004639/* l4_wkup -> wd_timer2 */
4640static struct omap_hwmod_ocp_if omap44xx_l4_wkup__wd_timer2 = {
4641 .master = &omap44xx_l4_wkup_hwmod,
4642 .slave = &omap44xx_wd_timer2_hwmod,
4643 .clk = "l4_wkup_clk_mux_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06004644 .user = OCP_USER_MPU | OCP_USER_SDMA,
4645};
4646
4647static struct omap_hwmod_addr_space omap44xx_wd_timer3_addrs[] = {
4648 {
4649 .pa_start = 0x40130000,
4650 .pa_end = 0x4013007f,
4651 .flags = ADDR_TYPE_RT
4652 },
4653 { }
4654};
4655
4656/* l4_abe -> wd_timer3 */
4657static struct omap_hwmod_ocp_if omap44xx_l4_abe__wd_timer3 = {
4658 .master = &omap44xx_l4_abe_hwmod,
4659 .slave = &omap44xx_wd_timer3_hwmod,
4660 .clk = "ocp_abe_iclk",
4661 .addr = omap44xx_wd_timer3_addrs,
4662 .user = OCP_USER_MPU,
4663};
4664
4665static struct omap_hwmod_addr_space omap44xx_wd_timer3_dma_addrs[] = {
4666 {
4667 .pa_start = 0x49030000,
4668 .pa_end = 0x4903007f,
4669 .flags = ADDR_TYPE_RT
4670 },
4671 { }
4672};
4673
4674/* l4_abe -> wd_timer3 (dma) */
4675static struct omap_hwmod_ocp_if omap44xx_l4_abe__wd_timer3_dma = {
4676 .master = &omap44xx_l4_abe_hwmod,
4677 .slave = &omap44xx_wd_timer3_hwmod,
4678 .clk = "ocp_abe_iclk",
4679 .addr = omap44xx_wd_timer3_dma_addrs,
4680 .user = OCP_USER_SDMA,
Benoit Coussonaf88fa92011-12-15 23:15:18 -07004681};
4682
Sricharan R3b9b1012013-06-07 17:26:15 +05304683/* mpu -> emif1 */
4684static struct omap_hwmod_ocp_if omap44xx_mpu__emif1 = {
4685 .master = &omap44xx_mpu_hwmod,
4686 .slave = &omap44xx_emif1_hwmod,
4687 .clk = "l3_div_ck",
4688 .user = OCP_USER_MPU | OCP_USER_SDMA,
4689};
4690
4691/* mpu -> emif2 */
4692static struct omap_hwmod_ocp_if omap44xx_mpu__emif2 = {
4693 .master = &omap44xx_mpu_hwmod,
4694 .slave = &omap44xx_emif2_hwmod,
4695 .clk = "l3_div_ck",
4696 .user = OCP_USER_MPU | OCP_USER_SDMA,
4697};
4698
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004699static struct omap_hwmod_ocp_if *omap44xx_hwmod_ocp_ifs[] __initdata = {
4700 &omap44xx_l3_main_1__dmm,
4701 &omap44xx_mpu__dmm,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004702 &omap44xx_iva__l3_instr,
4703 &omap44xx_l3_main_3__l3_instr,
Benoît Cousson9a817bc82012-04-19 13:33:56 -06004704 &omap44xx_ocp_wp_noc__l3_instr,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004705 &omap44xx_dsp__l3_main_1,
4706 &omap44xx_dss__l3_main_1,
4707 &omap44xx_l3_main_2__l3_main_1,
4708 &omap44xx_l4_cfg__l3_main_1,
4709 &omap44xx_mmc1__l3_main_1,
4710 &omap44xx_mmc2__l3_main_1,
4711 &omap44xx_mpu__l3_main_1,
Benoît Cousson96566042012-04-19 13:33:59 -06004712 &omap44xx_debugss__l3_main_2,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004713 &omap44xx_dma_system__l3_main_2,
Ming Leib050f682012-04-19 13:33:50 -06004714 &omap44xx_fdif__l3_main_2,
Paul Walmsley9def3902012-04-19 13:33:53 -06004715 &omap44xx_gpu__l3_main_2,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004716 &omap44xx_hsi__l3_main_2,
4717 &omap44xx_ipu__l3_main_2,
4718 &omap44xx_iss__l3_main_2,
4719 &omap44xx_iva__l3_main_2,
4720 &omap44xx_l3_main_1__l3_main_2,
4721 &omap44xx_l4_cfg__l3_main_2,
Paul Walmsleyb0a70cc2012-07-04 06:55:29 -06004722 /* &omap44xx_usb_host_fs__l3_main_2, */
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004723 &omap44xx_usb_host_hs__l3_main_2,
4724 &omap44xx_usb_otg_hs__l3_main_2,
4725 &omap44xx_l3_main_1__l3_main_3,
4726 &omap44xx_l3_main_2__l3_main_3,
4727 &omap44xx_l4_cfg__l3_main_3,
Sebastien Guiriec5cebb232013-02-10 11:17:16 -07004728 &omap44xx_aess__l4_abe,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004729 &omap44xx_dsp__l4_abe,
4730 &omap44xx_l3_main_1__l4_abe,
4731 &omap44xx_mpu__l4_abe,
4732 &omap44xx_l3_main_1__l4_cfg,
4733 &omap44xx_l3_main_2__l4_per,
4734 &omap44xx_l4_cfg__l4_wkup,
4735 &omap44xx_mpu__mpu_private,
Benoît Cousson9a817bc82012-04-19 13:33:56 -06004736 &omap44xx_l4_cfg__ocp_wp_noc,
Sebastien Guiriec5cebb232013-02-10 11:17:16 -07004737 &omap44xx_l4_abe__aess,
4738 &omap44xx_l4_abe__aess_dma,
Paul Walmsley42b9e382012-04-19 13:33:54 -06004739 &omap44xx_l3_main_2__c2c,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004740 &omap44xx_l4_wkup__counter_32k,
Paul Walmsleya0b5d812012-04-19 13:33:57 -06004741 &omap44xx_l4_cfg__ctrl_module_core,
4742 &omap44xx_l4_cfg__ctrl_module_pad_core,
4743 &omap44xx_l4_wkup__ctrl_module_wkup,
4744 &omap44xx_l4_wkup__ctrl_module_pad_wkup,
Benoît Cousson96566042012-04-19 13:33:59 -06004745 &omap44xx_l3_instr__debugss,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004746 &omap44xx_l4_cfg__dma_system,
4747 &omap44xx_l4_abe__dmic,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004748 &omap44xx_dsp__iva,
Tero Kristob3601242012-09-03 11:50:53 -06004749 /* &omap44xx_dsp__sl2if, */
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004750 &omap44xx_l4_cfg__dsp,
4751 &omap44xx_l3_main_2__dss,
4752 &omap44xx_l4_per__dss,
4753 &omap44xx_l3_main_2__dss_dispc,
4754 &omap44xx_l4_per__dss_dispc,
4755 &omap44xx_l3_main_2__dss_dsi1,
4756 &omap44xx_l4_per__dss_dsi1,
4757 &omap44xx_l3_main_2__dss_dsi2,
4758 &omap44xx_l4_per__dss_dsi2,
4759 &omap44xx_l3_main_2__dss_hdmi,
4760 &omap44xx_l4_per__dss_hdmi,
4761 &omap44xx_l3_main_2__dss_rfbi,
4762 &omap44xx_l4_per__dss_rfbi,
4763 &omap44xx_l3_main_2__dss_venc,
4764 &omap44xx_l4_per__dss_venc,
Paul Walmsley42b9e382012-04-19 13:33:54 -06004765 &omap44xx_l4_per__elm,
Ming Leib050f682012-04-19 13:33:50 -06004766 &omap44xx_l4_cfg__fdif,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004767 &omap44xx_l4_wkup__gpio1,
4768 &omap44xx_l4_per__gpio2,
4769 &omap44xx_l4_per__gpio3,
4770 &omap44xx_l4_per__gpio4,
4771 &omap44xx_l4_per__gpio5,
4772 &omap44xx_l4_per__gpio6,
Benoît Coussoneb42b5d2012-04-19 13:33:51 -06004773 &omap44xx_l3_main_2__gpmc,
Paul Walmsley9def3902012-04-19 13:33:53 -06004774 &omap44xx_l3_main_2__gpu,
Paul Walmsleya091c082012-04-19 13:33:50 -06004775 &omap44xx_l4_per__hdq1w,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004776 &omap44xx_l4_cfg__hsi,
4777 &omap44xx_l4_per__i2c1,
4778 &omap44xx_l4_per__i2c2,
4779 &omap44xx_l4_per__i2c3,
4780 &omap44xx_l4_per__i2c4,
4781 &omap44xx_l3_main_2__ipu,
4782 &omap44xx_l3_main_2__iss,
Tero Kristob3601242012-09-03 11:50:53 -06004783 /* &omap44xx_iva__sl2if, */
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004784 &omap44xx_l3_main_2__iva,
4785 &omap44xx_l4_wkup__kbd,
4786 &omap44xx_l4_cfg__mailbox,
Benoît Cousson896d4e92012-04-19 13:33:54 -06004787 &omap44xx_l4_abe__mcasp,
4788 &omap44xx_l4_abe__mcasp_dma,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004789 &omap44xx_l4_abe__mcbsp1,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004790 &omap44xx_l4_abe__mcbsp2,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004791 &omap44xx_l4_abe__mcbsp3,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004792 &omap44xx_l4_per__mcbsp4,
4793 &omap44xx_l4_abe__mcpdm,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004794 &omap44xx_l4_per__mcspi1,
4795 &omap44xx_l4_per__mcspi2,
4796 &omap44xx_l4_per__mcspi3,
4797 &omap44xx_l4_per__mcspi4,
4798 &omap44xx_l4_per__mmc1,
4799 &omap44xx_l4_per__mmc2,
4800 &omap44xx_l4_per__mmc3,
4801 &omap44xx_l4_per__mmc4,
4802 &omap44xx_l4_per__mmc5,
Omar Ramirez Luna230844d2012-09-23 17:28:24 -06004803 &omap44xx_l3_main_2__mmu_ipu,
4804 &omap44xx_l4_cfg__mmu_dsp,
Paul Walmsleye17f18c2012-04-19 13:33:56 -06004805 &omap44xx_l3_main_2__ocmc_ram,
Benoît Cousson0c668872012-04-19 13:33:55 -06004806 &omap44xx_l4_cfg__ocp2scp_usb_phy,
Paul Walmsley794b4802012-04-19 13:33:58 -06004807 &omap44xx_mpu_private__prcm_mpu,
4808 &omap44xx_l4_wkup__cm_core_aon,
4809 &omap44xx_l4_cfg__cm_core,
4810 &omap44xx_l4_wkup__prm,
4811 &omap44xx_l4_wkup__scrm,
Tero Kristob3601242012-09-03 11:50:53 -06004812 /* &omap44xx_l3_main_2__sl2if, */
Benoît Cousson1e3b5e592012-04-19 13:33:53 -06004813 &omap44xx_l4_abe__slimbus1,
4814 &omap44xx_l4_abe__slimbus1_dma,
4815 &omap44xx_l4_per__slimbus2,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004816 &omap44xx_l4_cfg__smartreflex_core,
4817 &omap44xx_l4_cfg__smartreflex_iva,
4818 &omap44xx_l4_cfg__smartreflex_mpu,
4819 &omap44xx_l4_cfg__spinlock,
4820 &omap44xx_l4_wkup__timer1,
4821 &omap44xx_l4_per__timer2,
4822 &omap44xx_l4_per__timer3,
4823 &omap44xx_l4_per__timer4,
4824 &omap44xx_l4_abe__timer5,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004825 &omap44xx_l4_abe__timer6,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004826 &omap44xx_l4_abe__timer7,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004827 &omap44xx_l4_abe__timer8,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004828 &omap44xx_l4_per__timer9,
4829 &omap44xx_l4_per__timer10,
4830 &omap44xx_l4_per__timer11,
4831 &omap44xx_l4_per__uart1,
4832 &omap44xx_l4_per__uart2,
4833 &omap44xx_l4_per__uart3,
4834 &omap44xx_l4_per__uart4,
Paul Walmsleyb0a70cc2012-07-04 06:55:29 -06004835 /* &omap44xx_l4_cfg__usb_host_fs, */
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004836 &omap44xx_l4_cfg__usb_host_hs,
4837 &omap44xx_l4_cfg__usb_otg_hs,
4838 &omap44xx_l4_cfg__usb_tll_hs,
4839 &omap44xx_l4_wkup__wd_timer2,
4840 &omap44xx_l4_abe__wd_timer3,
4841 &omap44xx_l4_abe__wd_timer3_dma,
Sricharan R3b9b1012013-06-07 17:26:15 +05304842 &omap44xx_mpu__emif1,
4843 &omap44xx_mpu__emif2,
Sebastian Reichel9a9ded82017-06-13 11:28:45 +02004844 &omap44xx_l3_main_2__aes1,
Benoit Cousson55d2cb02010-05-12 17:54:36 +02004845 NULL,
4846};
4847
4848int __init omap44xx_hwmod_init(void)
4849{
Kevin Hilman9ebfd282012-06-18 12:12:23 -06004850 omap_hwmod_init();
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004851 return omap_hwmod_register_links(omap44xx_hwmod_ocp_ifs);
Benoit Cousson55d2cb02010-05-12 17:54:36 +02004852}
4853