Merge branch 'ras-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[sfrench/cifs-2.6.git] / arch / arm / mach-omap2 / omap_hwmod_44xx_data.c
1 /*
2  * Hardware modules present on the OMAP44xx chips
3  *
4  * Copyright (C) 2009-2012 Texas Instruments, Inc.
5  * Copyright (C) 2009-2010 Nokia Corporation
6  *
7  * Paul Walmsley
8  * Benoit Cousson
9  *
10  * This file is automatically generated from the OMAP hardware databases.
11  * We respectfully ask that any modifications to this file be coordinated
12  * with the public linux-omap@vger.kernel.org mailing list and the
13  * authors above to ensure that the autogeneration scripts are kept
14  * up-to-date with the file contents.
15  * Note that this file is currently not in sync with autogeneration scripts.
16  * The above note to be removed, once it is synced up.
17  *
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>
24 #include <linux/platform_data/hsmmc-omap.h>
25 #include <linux/power/smartreflex.h>
26 #include <linux/platform_data/i2c-omap.h>
27
28 #include <linux/omap-dma.h>
29
30 #include "omap_hwmod.h"
31 #include "omap_hwmod_common_data.h"
32 #include "cm1_44xx.h"
33 #include "cm2_44xx.h"
34 #include "prm44xx.h"
35 #include "prm-regbits-44xx.h"
36 #include "i2c.h"
37 #include "wd_timer.h"
38
39 /* Base offset for all OMAP4 interrupts external to MPUSS */
40 #define OMAP44XX_IRQ_GIC_START  32
41
42 /* Base offset for all OMAP4 dma requests */
43 #define OMAP44XX_DMA_REQ_START  1
44
45 /*
46  * IP blocks
47  */
48
49 /*
50  * 'dmm' class
51  * instance(s): dmm
52  */
53 static struct omap_hwmod_class omap44xx_dmm_hwmod_class = {
54         .name   = "dmm",
55 };
56
57 /* dmm */
58 static struct omap_hwmod omap44xx_dmm_hwmod = {
59         .name           = "dmm",
60         .class          = &omap44xx_dmm_hwmod_class,
61         .clkdm_name     = "l3_emif_clkdm",
62         .prcm = {
63                 .omap4 = {
64                         .clkctrl_offs = OMAP4_CM_MEMIF_DMM_CLKCTRL_OFFSET,
65                         .context_offs = OMAP4_RM_MEMIF_DMM_CONTEXT_OFFSET,
66                 },
67         },
68 };
69
70 /*
71  * 'l3' class
72  * instance(s): l3_instr, l3_main_1, l3_main_2, l3_main_3
73  */
74 static struct omap_hwmod_class omap44xx_l3_hwmod_class = {
75         .name   = "l3",
76 };
77
78 /* l3_instr */
79 static struct omap_hwmod omap44xx_l3_instr_hwmod = {
80         .name           = "l3_instr",
81         .class          = &omap44xx_l3_hwmod_class,
82         .clkdm_name     = "l3_instr_clkdm",
83         .prcm = {
84                 .omap4 = {
85                         .clkctrl_offs = OMAP4_CM_L3INSTR_L3_INSTR_CLKCTRL_OFFSET,
86                         .context_offs = OMAP4_RM_L3INSTR_L3_INSTR_CONTEXT_OFFSET,
87                         .modulemode   = MODULEMODE_HWCTRL,
88                 },
89         },
90 };
91
92 /* l3_main_1 */
93 static struct omap_hwmod omap44xx_l3_main_1_hwmod = {
94         .name           = "l3_main_1",
95         .class          = &omap44xx_l3_hwmod_class,
96         .clkdm_name     = "l3_1_clkdm",
97         .prcm = {
98                 .omap4 = {
99                         .clkctrl_offs = OMAP4_CM_L3_1_L3_1_CLKCTRL_OFFSET,
100                         .context_offs = OMAP4_RM_L3_1_L3_1_CONTEXT_OFFSET,
101                 },
102         },
103 };
104
105 /* l3_main_2 */
106 static struct omap_hwmod omap44xx_l3_main_2_hwmod = {
107         .name           = "l3_main_2",
108         .class          = &omap44xx_l3_hwmod_class,
109         .clkdm_name     = "l3_2_clkdm",
110         .prcm = {
111                 .omap4 = {
112                         .clkctrl_offs = OMAP4_CM_L3_2_L3_2_CLKCTRL_OFFSET,
113                         .context_offs = OMAP4_RM_L3_2_L3_2_CONTEXT_OFFSET,
114                 },
115         },
116 };
117
118 /* l3_main_3 */
119 static struct omap_hwmod omap44xx_l3_main_3_hwmod = {
120         .name           = "l3_main_3",
121         .class          = &omap44xx_l3_hwmod_class,
122         .clkdm_name     = "l3_instr_clkdm",
123         .prcm = {
124                 .omap4 = {
125                         .clkctrl_offs = OMAP4_CM_L3INSTR_L3_3_CLKCTRL_OFFSET,
126                         .context_offs = OMAP4_RM_L3INSTR_L3_3_CONTEXT_OFFSET,
127                         .modulemode   = MODULEMODE_HWCTRL,
128                 },
129         },
130 };
131
132 /*
133  * 'l4' class
134  * instance(s): l4_abe, l4_cfg, l4_per, l4_wkup
135  */
136 static struct omap_hwmod_class omap44xx_l4_hwmod_class = {
137         .name   = "l4",
138 };
139
140 /* l4_abe */
141 static struct omap_hwmod omap44xx_l4_abe_hwmod = {
142         .name           = "l4_abe",
143         .class          = &omap44xx_l4_hwmod_class,
144         .clkdm_name     = "abe_clkdm",
145         .prcm = {
146                 .omap4 = {
147                         .clkctrl_offs = OMAP4_CM1_ABE_L4ABE_CLKCTRL_OFFSET,
148                         .context_offs = OMAP4_RM_ABE_AESS_CONTEXT_OFFSET,
149                         .lostcontext_mask = OMAP4430_LOSTMEM_AESSMEM_MASK,
150                         .flags        = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
151                 },
152         },
153 };
154
155 /* l4_cfg */
156 static struct omap_hwmod omap44xx_l4_cfg_hwmod = {
157         .name           = "l4_cfg",
158         .class          = &omap44xx_l4_hwmod_class,
159         .clkdm_name     = "l4_cfg_clkdm",
160         .prcm = {
161                 .omap4 = {
162                         .clkctrl_offs = OMAP4_CM_L4CFG_L4_CFG_CLKCTRL_OFFSET,
163                         .context_offs = OMAP4_RM_L4CFG_L4_CFG_CONTEXT_OFFSET,
164                 },
165         },
166 };
167
168 /* l4_per */
169 static struct omap_hwmod omap44xx_l4_per_hwmod = {
170         .name           = "l4_per",
171         .class          = &omap44xx_l4_hwmod_class,
172         .clkdm_name     = "l4_per_clkdm",
173         .prcm = {
174                 .omap4 = {
175                         .clkctrl_offs = OMAP4_CM_L4PER_L4PER_CLKCTRL_OFFSET,
176                         .context_offs = OMAP4_RM_L4PER_L4_PER_CONTEXT_OFFSET,
177                 },
178         },
179 };
180
181 /* l4_wkup */
182 static struct omap_hwmod omap44xx_l4_wkup_hwmod = {
183         .name           = "l4_wkup",
184         .class          = &omap44xx_l4_hwmod_class,
185         .clkdm_name     = "l4_wkup_clkdm",
186         .prcm = {
187                 .omap4 = {
188                         .clkctrl_offs = OMAP4_CM_WKUP_L4WKUP_CLKCTRL_OFFSET,
189                         .context_offs = OMAP4_RM_WKUP_L4WKUP_CONTEXT_OFFSET,
190                 },
191         },
192 };
193
194 /*
195  * 'mpu_bus' class
196  * instance(s): mpu_private
197  */
198 static struct omap_hwmod_class omap44xx_mpu_bus_hwmod_class = {
199         .name   = "mpu_bus",
200 };
201
202 /* mpu_private */
203 static struct omap_hwmod omap44xx_mpu_private_hwmod = {
204         .name           = "mpu_private",
205         .class          = &omap44xx_mpu_bus_hwmod_class,
206         .clkdm_name     = "mpuss_clkdm",
207         .prcm = {
208                 .omap4 = {
209                         .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
210                 },
211         },
212 };
213
214 /*
215  * 'ocp_wp_noc' class
216  * instance(s): ocp_wp_noc
217  */
218 static struct omap_hwmod_class omap44xx_ocp_wp_noc_hwmod_class = {
219         .name   = "ocp_wp_noc",
220 };
221
222 /* ocp_wp_noc */
223 static struct omap_hwmod omap44xx_ocp_wp_noc_hwmod = {
224         .name           = "ocp_wp_noc",
225         .class          = &omap44xx_ocp_wp_noc_hwmod_class,
226         .clkdm_name     = "l3_instr_clkdm",
227         .prcm = {
228                 .omap4 = {
229                         .clkctrl_offs = OMAP4_CM_L3INSTR_OCP_WP1_CLKCTRL_OFFSET,
230                         .context_offs = OMAP4_RM_L3INSTR_OCP_WP1_CONTEXT_OFFSET,
231                         .modulemode   = MODULEMODE_HWCTRL,
232                 },
233         },
234 };
235
236 /*
237  * Modules omap_hwmod structures
238  *
239  * The following IPs are excluded for the moment because:
240  * - They do not need an explicit SW control using omap_hwmod API.
241  * - They still need to be validated with the driver
242  *   properly adapted to omap_hwmod / omap_device
243  *
244  * usim
245  */
246
247 /*
248  * 'aess' class
249  * audio engine sub system
250  */
251
252 static struct omap_hwmod_class_sysconfig omap44xx_aess_sysc = {
253         .rev_offs       = 0x0000,
254         .sysc_offs      = 0x0010,
255         .sysc_flags     = (SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE),
256         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
257                            MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART |
258                            MSTANDBY_SMART_WKUP),
259         .sysc_fields    = &omap_hwmod_sysc_type2,
260 };
261
262 static struct omap_hwmod_class omap44xx_aess_hwmod_class = {
263         .name   = "aess",
264         .sysc   = &omap44xx_aess_sysc,
265         .enable_preprogram = omap_hwmod_aess_preprogram,
266 };
267
268 /* aess */
269 static struct omap_hwmod omap44xx_aess_hwmod = {
270         .name           = "aess",
271         .class          = &omap44xx_aess_hwmod_class,
272         .clkdm_name     = "abe_clkdm",
273         .main_clk       = "aess_fclk",
274         .prcm = {
275                 .omap4 = {
276                         .clkctrl_offs = OMAP4_CM1_ABE_AESS_CLKCTRL_OFFSET,
277                         .context_offs = OMAP4_RM_ABE_AESS_CONTEXT_OFFSET,
278                         .lostcontext_mask = OMAP4430_LOSTCONTEXT_DFF_MASK,
279                         .modulemode   = MODULEMODE_SWCTRL,
280                 },
281         },
282 };
283
284 /*
285  * 'c2c' class
286  * chip 2 chip interface used to plug the ape soc (omap) with an external modem
287  * soc
288  */
289
290 static struct omap_hwmod_class omap44xx_c2c_hwmod_class = {
291         .name   = "c2c",
292 };
293
294 /* c2c */
295 static struct omap_hwmod omap44xx_c2c_hwmod = {
296         .name           = "c2c",
297         .class          = &omap44xx_c2c_hwmod_class,
298         .clkdm_name     = "d2d_clkdm",
299         .prcm = {
300                 .omap4 = {
301                         .clkctrl_offs = OMAP4_CM_D2D_SAD2D_CLKCTRL_OFFSET,
302                         .context_offs = OMAP4_RM_D2D_SAD2D_CONTEXT_OFFSET,
303                 },
304         },
305 };
306
307 /*
308  * 'counter' class
309  * 32-bit ordinary counter, clocked by the falling edge of the 32 khz clock
310  */
311
312 static struct omap_hwmod_class_sysconfig omap44xx_counter_sysc = {
313         .rev_offs       = 0x0000,
314         .sysc_offs      = 0x0004,
315         .sysc_flags     = SYSC_HAS_SIDLEMODE,
316         .idlemodes      = (SIDLE_FORCE | SIDLE_NO),
317         .sysc_fields    = &omap_hwmod_sysc_type1,
318 };
319
320 static struct omap_hwmod_class omap44xx_counter_hwmod_class = {
321         .name   = "counter",
322         .sysc   = &omap44xx_counter_sysc,
323 };
324
325 /* counter_32k */
326 static struct omap_hwmod omap44xx_counter_32k_hwmod = {
327         .name           = "counter_32k",
328         .class          = &omap44xx_counter_hwmod_class,
329         .clkdm_name     = "l4_wkup_clkdm",
330         .flags          = HWMOD_SWSUP_SIDLE,
331         .main_clk       = "sys_32k_ck",
332         .prcm = {
333                 .omap4 = {
334                         .clkctrl_offs = OMAP4_CM_WKUP_SYNCTIMER_CLKCTRL_OFFSET,
335                         .context_offs = OMAP4_RM_WKUP_SYNCTIMER_CONTEXT_OFFSET,
336                 },
337         },
338 };
339
340 /*
341  * 'ctrl_module' class
342  * attila core control module + core pad control module + wkup pad control
343  * module + attila wkup control module
344  */
345
346 static struct omap_hwmod_class_sysconfig omap44xx_ctrl_module_sysc = {
347         .rev_offs       = 0x0000,
348         .sysc_offs      = 0x0010,
349         .sysc_flags     = SYSC_HAS_SIDLEMODE,
350         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
351                            SIDLE_SMART_WKUP),
352         .sysc_fields    = &omap_hwmod_sysc_type2,
353 };
354
355 static struct omap_hwmod_class omap44xx_ctrl_module_hwmod_class = {
356         .name   = "ctrl_module",
357         .sysc   = &omap44xx_ctrl_module_sysc,
358 };
359
360 /* ctrl_module_core */
361 static struct omap_hwmod omap44xx_ctrl_module_core_hwmod = {
362         .name           = "ctrl_module_core",
363         .class          = &omap44xx_ctrl_module_hwmod_class,
364         .clkdm_name     = "l4_cfg_clkdm",
365         .prcm = {
366                 .omap4 = {
367                         .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
368                 },
369         },
370 };
371
372 /* ctrl_module_pad_core */
373 static struct omap_hwmod omap44xx_ctrl_module_pad_core_hwmod = {
374         .name           = "ctrl_module_pad_core",
375         .class          = &omap44xx_ctrl_module_hwmod_class,
376         .clkdm_name     = "l4_cfg_clkdm",
377         .prcm = {
378                 .omap4 = {
379                         .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
380                 },
381         },
382 };
383
384 /* ctrl_module_wkup */
385 static struct omap_hwmod omap44xx_ctrl_module_wkup_hwmod = {
386         .name           = "ctrl_module_wkup",
387         .class          = &omap44xx_ctrl_module_hwmod_class,
388         .clkdm_name     = "l4_wkup_clkdm",
389         .prcm = {
390                 .omap4 = {
391                         .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
392                 },
393         },
394 };
395
396 /* ctrl_module_pad_wkup */
397 static struct omap_hwmod omap44xx_ctrl_module_pad_wkup_hwmod = {
398         .name           = "ctrl_module_pad_wkup",
399         .class          = &omap44xx_ctrl_module_hwmod_class,
400         .clkdm_name     = "l4_wkup_clkdm",
401         .prcm = {
402                 .omap4 = {
403                         .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
404                 },
405         },
406 };
407
408 /*
409  * 'debugss' class
410  * debug and emulation sub system
411  */
412
413 static struct omap_hwmod_class omap44xx_debugss_hwmod_class = {
414         .name   = "debugss",
415 };
416
417 /* debugss */
418 static struct omap_hwmod omap44xx_debugss_hwmod = {
419         .name           = "debugss",
420         .class          = &omap44xx_debugss_hwmod_class,
421         .clkdm_name     = "emu_sys_clkdm",
422         .main_clk       = "trace_clk_div_ck",
423         .prcm = {
424                 .omap4 = {
425                         .clkctrl_offs = OMAP4_CM_EMU_DEBUGSS_CLKCTRL_OFFSET,
426                         .context_offs = OMAP4_RM_EMU_DEBUGSS_CONTEXT_OFFSET,
427                 },
428         },
429 };
430
431 /*
432  * 'dma' class
433  * dma controller for data exchange between memory to memory (i.e. internal or
434  * external memory) and gp peripherals to memory or memory to gp peripherals
435  */
436
437 static struct omap_hwmod_class_sysconfig omap44xx_dma_sysc = {
438         .rev_offs       = 0x0000,
439         .sysc_offs      = 0x002c,
440         .syss_offs      = 0x0028,
441         .sysc_flags     = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
442                            SYSC_HAS_EMUFREE | SYSC_HAS_MIDLEMODE |
443                            SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
444                            SYSS_HAS_RESET_STATUS),
445         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
446                            MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
447         .sysc_fields    = &omap_hwmod_sysc_type1,
448 };
449
450 static struct omap_hwmod_class omap44xx_dma_hwmod_class = {
451         .name   = "dma",
452         .sysc   = &omap44xx_dma_sysc,
453 };
454
455 /* dma dev_attr */
456 static struct omap_dma_dev_attr dma_dev_attr = {
457         .dev_caps       = RESERVE_CHANNEL | DMA_LINKED_LCH | GLOBAL_PRIORITY |
458                           IS_CSSA_32 | IS_CDSA_32 | IS_RW_PRIORITY,
459         .lch_count      = 32,
460 };
461
462 /* dma_system */
463 static struct omap_hwmod omap44xx_dma_system_hwmod = {
464         .name           = "dma_system",
465         .class          = &omap44xx_dma_hwmod_class,
466         .clkdm_name     = "l3_dma_clkdm",
467         .main_clk       = "l3_div_ck",
468         .prcm = {
469                 .omap4 = {
470                         .clkctrl_offs = OMAP4_CM_SDMA_SDMA_CLKCTRL_OFFSET,
471                         .context_offs = OMAP4_RM_SDMA_SDMA_CONTEXT_OFFSET,
472                 },
473         },
474         .dev_attr       = &dma_dev_attr,
475 };
476
477 /*
478  * 'dmic' class
479  * digital microphone controller
480  */
481
482 static struct omap_hwmod_class_sysconfig omap44xx_dmic_sysc = {
483         .rev_offs       = 0x0000,
484         .sysc_offs      = 0x0010,
485         .sysc_flags     = (SYSC_HAS_EMUFREE | SYSC_HAS_RESET_STATUS |
486                            SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
487         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
488                            SIDLE_SMART_WKUP),
489         .sysc_fields    = &omap_hwmod_sysc_type2,
490 };
491
492 static struct omap_hwmod_class omap44xx_dmic_hwmod_class = {
493         .name   = "dmic",
494         .sysc   = &omap44xx_dmic_sysc,
495 };
496
497 /* dmic */
498 static struct omap_hwmod omap44xx_dmic_hwmod = {
499         .name           = "dmic",
500         .class          = &omap44xx_dmic_hwmod_class,
501         .clkdm_name     = "abe_clkdm",
502         .main_clk       = "func_dmic_abe_gfclk",
503         .prcm = {
504                 .omap4 = {
505                         .clkctrl_offs = OMAP4_CM1_ABE_DMIC_CLKCTRL_OFFSET,
506                         .context_offs = OMAP4_RM_ABE_DMIC_CONTEXT_OFFSET,
507                         .modulemode   = MODULEMODE_SWCTRL,
508                 },
509         },
510 };
511
512 /*
513  * 'dsp' class
514  * dsp sub-system
515  */
516
517 static struct omap_hwmod_class omap44xx_dsp_hwmod_class = {
518         .name   = "dsp",
519 };
520
521 /* dsp */
522 static struct omap_hwmod_rst_info omap44xx_dsp_resets[] = {
523         { .name = "dsp", .rst_shift = 0 },
524 };
525
526 static struct omap_hwmod omap44xx_dsp_hwmod = {
527         .name           = "dsp",
528         .class          = &omap44xx_dsp_hwmod_class,
529         .clkdm_name     = "tesla_clkdm",
530         .rst_lines      = omap44xx_dsp_resets,
531         .rst_lines_cnt  = ARRAY_SIZE(omap44xx_dsp_resets),
532         .main_clk       = "dpll_iva_m4x2_ck",
533         .prcm = {
534                 .omap4 = {
535                         .clkctrl_offs = OMAP4_CM_TESLA_TESLA_CLKCTRL_OFFSET,
536                         .rstctrl_offs = OMAP4_RM_TESLA_RSTCTRL_OFFSET,
537                         .context_offs = OMAP4_RM_TESLA_TESLA_CONTEXT_OFFSET,
538                         .modulemode   = MODULEMODE_HWCTRL,
539                 },
540         },
541 };
542
543 /*
544  * 'dss' class
545  * display sub-system
546  */
547
548 static struct omap_hwmod_class_sysconfig omap44xx_dss_sysc = {
549         .rev_offs       = 0x0000,
550         .syss_offs      = 0x0014,
551         .sysc_flags     = SYSS_HAS_RESET_STATUS,
552 };
553
554 static struct omap_hwmod_class omap44xx_dss_hwmod_class = {
555         .name   = "dss",
556         .sysc   = &omap44xx_dss_sysc,
557         .reset  = omap_dss_reset,
558 };
559
560 /* dss */
561 static struct omap_hwmod_opt_clk dss_opt_clks[] = {
562         { .role = "sys_clk", .clk = "dss_sys_clk" },
563         { .role = "tv_clk", .clk = "dss_tv_clk" },
564         { .role = "hdmi_clk", .clk = "dss_48mhz_clk" },
565 };
566
567 static struct omap_hwmod omap44xx_dss_hwmod = {
568         .name           = "dss_core",
569         .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
570         .class          = &omap44xx_dss_hwmod_class,
571         .clkdm_name     = "l3_dss_clkdm",
572         .main_clk       = "dss_dss_clk",
573         .prcm = {
574                 .omap4 = {
575                         .clkctrl_offs = OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET,
576                         .context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET,
577                         .modulemode   = MODULEMODE_SWCTRL,
578                 },
579         },
580         .opt_clks       = dss_opt_clks,
581         .opt_clks_cnt   = ARRAY_SIZE(dss_opt_clks),
582 };
583
584 /*
585  * 'dispc' class
586  * display controller
587  */
588
589 static struct omap_hwmod_class_sysconfig omap44xx_dispc_sysc = {
590         .rev_offs       = 0x0000,
591         .sysc_offs      = 0x0010,
592         .syss_offs      = 0x0014,
593         .sysc_flags     = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
594                            SYSC_HAS_ENAWAKEUP | SYSC_HAS_MIDLEMODE |
595                            SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
596                            SYSS_HAS_RESET_STATUS),
597         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
598                            MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
599         .sysc_fields    = &omap_hwmod_sysc_type1,
600 };
601
602 static struct omap_hwmod_class omap44xx_dispc_hwmod_class = {
603         .name   = "dispc",
604         .sysc   = &omap44xx_dispc_sysc,
605 };
606
607 /* dss_dispc */
608 static struct omap_dss_dispc_dev_attr omap44xx_dss_dispc_dev_attr = {
609         .manager_count          = 3,
610         .has_framedonetv_irq    = 1
611 };
612
613 static struct omap_hwmod omap44xx_dss_dispc_hwmod = {
614         .name           = "dss_dispc",
615         .class          = &omap44xx_dispc_hwmod_class,
616         .clkdm_name     = "l3_dss_clkdm",
617         .main_clk       = "dss_dss_clk",
618         .prcm = {
619                 .omap4 = {
620                         .clkctrl_offs = OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET,
621                         .context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET,
622                 },
623         },
624         .dev_attr       = &omap44xx_dss_dispc_dev_attr,
625         .parent_hwmod   = &omap44xx_dss_hwmod,
626 };
627
628 /*
629  * 'dsi' class
630  * display serial interface controller
631  */
632
633 static struct omap_hwmod_class_sysconfig omap44xx_dsi_sysc = {
634         .rev_offs       = 0x0000,
635         .sysc_offs      = 0x0010,
636         .syss_offs      = 0x0014,
637         .sysc_flags     = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
638                            SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE |
639                            SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
640         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
641         .sysc_fields    = &omap_hwmod_sysc_type1,
642 };
643
644 static struct omap_hwmod_class omap44xx_dsi_hwmod_class = {
645         .name   = "dsi",
646         .sysc   = &omap44xx_dsi_sysc,
647 };
648
649 /* dss_dsi1 */
650 static struct omap_hwmod_opt_clk dss_dsi1_opt_clks[] = {
651         { .role = "sys_clk", .clk = "dss_sys_clk" },
652 };
653
654 static struct omap_hwmod omap44xx_dss_dsi1_hwmod = {
655         .name           = "dss_dsi1",
656         .class          = &omap44xx_dsi_hwmod_class,
657         .clkdm_name     = "l3_dss_clkdm",
658         .main_clk       = "dss_dss_clk",
659         .prcm = {
660                 .omap4 = {
661                         .clkctrl_offs = OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET,
662                         .context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET,
663                 },
664         },
665         .opt_clks       = dss_dsi1_opt_clks,
666         .opt_clks_cnt   = ARRAY_SIZE(dss_dsi1_opt_clks),
667         .parent_hwmod   = &omap44xx_dss_hwmod,
668 };
669
670 /* dss_dsi2 */
671 static struct omap_hwmod_opt_clk dss_dsi2_opt_clks[] = {
672         { .role = "sys_clk", .clk = "dss_sys_clk" },
673 };
674
675 static struct omap_hwmod omap44xx_dss_dsi2_hwmod = {
676         .name           = "dss_dsi2",
677         .class          = &omap44xx_dsi_hwmod_class,
678         .clkdm_name     = "l3_dss_clkdm",
679         .main_clk       = "dss_dss_clk",
680         .prcm = {
681                 .omap4 = {
682                         .clkctrl_offs = OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET,
683                         .context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET,
684                 },
685         },
686         .opt_clks       = dss_dsi2_opt_clks,
687         .opt_clks_cnt   = ARRAY_SIZE(dss_dsi2_opt_clks),
688         .parent_hwmod   = &omap44xx_dss_hwmod,
689 };
690
691 /*
692  * 'hdmi' class
693  * hdmi controller
694  */
695
696 static struct omap_hwmod_class_sysconfig omap44xx_hdmi_sysc = {
697         .rev_offs       = 0x0000,
698         .sysc_offs      = 0x0010,
699         .sysc_flags     = (SYSC_HAS_RESET_STATUS | SYSC_HAS_SIDLEMODE |
700                            SYSC_HAS_SOFTRESET),
701         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
702                            SIDLE_SMART_WKUP),
703         .sysc_fields    = &omap_hwmod_sysc_type2,
704 };
705
706 static struct omap_hwmod_class omap44xx_hdmi_hwmod_class = {
707         .name   = "hdmi",
708         .sysc   = &omap44xx_hdmi_sysc,
709 };
710
711 /* dss_hdmi */
712 static struct omap_hwmod_opt_clk dss_hdmi_opt_clks[] = {
713         { .role = "sys_clk", .clk = "dss_sys_clk" },
714         { .role = "hdmi_clk", .clk = "dss_48mhz_clk" },
715 };
716
717 static struct omap_hwmod omap44xx_dss_hdmi_hwmod = {
718         .name           = "dss_hdmi",
719         .class          = &omap44xx_hdmi_hwmod_class,
720         .clkdm_name     = "l3_dss_clkdm",
721         /*
722          * HDMI audio requires to use no-idle mode. Hence,
723          * set idle mode by software.
724          */
725         .flags          = HWMOD_SWSUP_SIDLE | HWMOD_OPT_CLKS_NEEDED,
726         .main_clk       = "dss_48mhz_clk",
727         .prcm = {
728                 .omap4 = {
729                         .clkctrl_offs = OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET,
730                         .context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET,
731                 },
732         },
733         .opt_clks       = dss_hdmi_opt_clks,
734         .opt_clks_cnt   = ARRAY_SIZE(dss_hdmi_opt_clks),
735         .parent_hwmod   = &omap44xx_dss_hwmod,
736 };
737
738 /*
739  * 'rfbi' class
740  * remote frame buffer interface
741  */
742
743 static struct omap_hwmod_class_sysconfig omap44xx_rfbi_sysc = {
744         .rev_offs       = 0x0000,
745         .sysc_offs      = 0x0010,
746         .syss_offs      = 0x0014,
747         .sysc_flags     = (SYSC_HAS_AUTOIDLE | SYSC_HAS_SIDLEMODE |
748                            SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
749         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
750         .sysc_fields    = &omap_hwmod_sysc_type1,
751 };
752
753 static struct omap_hwmod_class omap44xx_rfbi_hwmod_class = {
754         .name   = "rfbi",
755         .sysc   = &omap44xx_rfbi_sysc,
756 };
757
758 /* dss_rfbi */
759 static struct omap_hwmod_opt_clk dss_rfbi_opt_clks[] = {
760         { .role = "ick", .clk = "l3_div_ck" },
761 };
762
763 static struct omap_hwmod omap44xx_dss_rfbi_hwmod = {
764         .name           = "dss_rfbi",
765         .class          = &omap44xx_rfbi_hwmod_class,
766         .clkdm_name     = "l3_dss_clkdm",
767         .main_clk       = "dss_dss_clk",
768         .prcm = {
769                 .omap4 = {
770                         .clkctrl_offs = OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET,
771                         .context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET,
772                 },
773         },
774         .opt_clks       = dss_rfbi_opt_clks,
775         .opt_clks_cnt   = ARRAY_SIZE(dss_rfbi_opt_clks),
776         .parent_hwmod   = &omap44xx_dss_hwmod,
777 };
778
779 /*
780  * 'venc' class
781  * video encoder
782  */
783
784 static struct omap_hwmod_class omap44xx_venc_hwmod_class = {
785         .name   = "venc",
786 };
787
788 /* dss_venc */
789 static struct omap_hwmod_opt_clk dss_venc_opt_clks[] = {
790         { .role = "tv_clk", .clk = "dss_tv_clk" },
791 };
792
793 static struct omap_hwmod omap44xx_dss_venc_hwmod = {
794         .name           = "dss_venc",
795         .class          = &omap44xx_venc_hwmod_class,
796         .clkdm_name     = "l3_dss_clkdm",
797         .main_clk       = "dss_tv_clk",
798         .flags          = HWMOD_OPT_CLKS_NEEDED,
799         .prcm = {
800                 .omap4 = {
801                         .clkctrl_offs = OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET,
802                         .context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET,
803                 },
804         },
805         .parent_hwmod   = &omap44xx_dss_hwmod,
806         .opt_clks       = dss_venc_opt_clks,
807         .opt_clks_cnt   = ARRAY_SIZE(dss_venc_opt_clks),
808 };
809
810 /* sha0 HIB2 (the 'P' (public) device) */
811 static struct omap_hwmod_class_sysconfig omap44xx_sha0_sysc = {
812         .rev_offs       = 0x100,
813         .sysc_offs      = 0x110,
814         .syss_offs      = 0x114,
815         .sysc_flags     = SYSS_HAS_RESET_STATUS,
816 };
817
818 static struct omap_hwmod_class omap44xx_sha0_hwmod_class = {
819         .name           = "sham",
820         .sysc           = &omap44xx_sha0_sysc,
821 };
822
823 struct omap_hwmod omap44xx_sha0_hwmod = {
824         .name           = "sham",
825         .class          = &omap44xx_sha0_hwmod_class,
826         .clkdm_name     = "l4_secure_clkdm",
827         .main_clk       = "l3_div_ck",
828         .prcm           = {
829                 .omap4 = {
830                         .clkctrl_offs = OMAP4_CM_L4SEC_SHA2MD51_CLKCTRL_OFFSET,
831                         .context_offs = OMAP4_RM_L4SEC_SHA2MD51_CONTEXT_OFFSET,
832                         .modulemode   = MODULEMODE_SWCTRL,
833                 },
834         },
835 };
836
837 /*
838  * 'elm' class
839  * bch error location module
840  */
841
842 static struct omap_hwmod_class_sysconfig omap44xx_elm_sysc = {
843         .rev_offs       = 0x0000,
844         .sysc_offs      = 0x0010,
845         .syss_offs      = 0x0014,
846         .sysc_flags     = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
847                            SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
848                            SYSS_HAS_RESET_STATUS),
849         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
850         .sysc_fields    = &omap_hwmod_sysc_type1,
851 };
852
853 static struct omap_hwmod_class omap44xx_elm_hwmod_class = {
854         .name   = "elm",
855         .sysc   = &omap44xx_elm_sysc,
856 };
857
858 /* elm */
859 static struct omap_hwmod omap44xx_elm_hwmod = {
860         .name           = "elm",
861         .class          = &omap44xx_elm_hwmod_class,
862         .clkdm_name     = "l4_per_clkdm",
863         .prcm = {
864                 .omap4 = {
865                         .clkctrl_offs = OMAP4_CM_L4PER_ELM_CLKCTRL_OFFSET,
866                         .context_offs = OMAP4_RM_L4PER_ELM_CONTEXT_OFFSET,
867                 },
868         },
869 };
870
871 /*
872  * 'emif' class
873  * external memory interface no1
874  */
875
876 static struct omap_hwmod_class_sysconfig omap44xx_emif_sysc = {
877         .rev_offs       = 0x0000,
878 };
879
880 static struct omap_hwmod_class omap44xx_emif_hwmod_class = {
881         .name   = "emif",
882         .sysc   = &omap44xx_emif_sysc,
883 };
884
885 /* emif1 */
886 static struct omap_hwmod omap44xx_emif1_hwmod = {
887         .name           = "emif1",
888         .class          = &omap44xx_emif_hwmod_class,
889         .clkdm_name     = "l3_emif_clkdm",
890         .flags          = HWMOD_INIT_NO_IDLE,
891         .main_clk       = "ddrphy_ck",
892         .prcm = {
893                 .omap4 = {
894                         .clkctrl_offs = OMAP4_CM_MEMIF_EMIF_1_CLKCTRL_OFFSET,
895                         .context_offs = OMAP4_RM_MEMIF_EMIF_1_CONTEXT_OFFSET,
896                         .modulemode   = MODULEMODE_HWCTRL,
897                 },
898         },
899 };
900
901 /* emif2 */
902 static struct omap_hwmod omap44xx_emif2_hwmod = {
903         .name           = "emif2",
904         .class          = &omap44xx_emif_hwmod_class,
905         .clkdm_name     = "l3_emif_clkdm",
906         .flags          = HWMOD_INIT_NO_IDLE,
907         .main_clk       = "ddrphy_ck",
908         .prcm = {
909                 .omap4 = {
910                         .clkctrl_offs = OMAP4_CM_MEMIF_EMIF_2_CLKCTRL_OFFSET,
911                         .context_offs = OMAP4_RM_MEMIF_EMIF_2_CONTEXT_OFFSET,
912                         .modulemode   = MODULEMODE_HWCTRL,
913                 },
914         },
915 };
916
917 /*
918     Crypto modules AES0/1 belong to:
919         PD_L4_PER power domain
920         CD_L4_SEC clock domain
921         On the L3, the AES modules are mapped to
922         L3_CLK2: Peripherals and multimedia sub clock domain
923 */
924 static struct omap_hwmod_class_sysconfig omap44xx_aes_sysc = {
925         .rev_offs       = 0x80,
926         .sysc_offs      = 0x84,
927         .syss_offs      = 0x88,
928         .sysc_flags     = SYSS_HAS_RESET_STATUS,
929 };
930
931 static struct omap_hwmod_class omap44xx_aes_hwmod_class = {
932         .name           = "aes",
933         .sysc           = &omap44xx_aes_sysc,
934 };
935
936 static struct omap_hwmod omap44xx_aes1_hwmod = {
937         .name           = "aes1",
938         .class          = &omap44xx_aes_hwmod_class,
939         .clkdm_name     = "l4_secure_clkdm",
940         .main_clk       = "l3_div_ck",
941         .prcm           = {
942                 .omap4  = {
943                         .context_offs   = OMAP4_RM_L4SEC_AES1_CONTEXT_OFFSET,
944                         .clkctrl_offs   = OMAP4_CM_L4SEC_AES1_CLKCTRL_OFFSET,
945                         .modulemode     = MODULEMODE_SWCTRL,
946                 },
947         },
948 };
949
950 static struct omap_hwmod_ocp_if omap44xx_l3_main_2__aes1 = {
951         .master         = &omap44xx_l4_per_hwmod,
952         .slave          = &omap44xx_aes1_hwmod,
953         .clk            = "l3_div_ck",
954         .user           = OCP_USER_MPU | OCP_USER_SDMA,
955 };
956
957 static struct omap_hwmod omap44xx_aes2_hwmod = {
958         .name           = "aes2",
959         .class          = &omap44xx_aes_hwmod_class,
960         .clkdm_name     = "l4_secure_clkdm",
961         .main_clk       = "l3_div_ck",
962         .prcm           = {
963                 .omap4  = {
964                         .context_offs   = OMAP4_RM_L4SEC_AES2_CONTEXT_OFFSET,
965                         .clkctrl_offs   = OMAP4_CM_L4SEC_AES2_CLKCTRL_OFFSET,
966                         .modulemode     = MODULEMODE_SWCTRL,
967                 },
968         },
969 };
970
971 static struct omap_hwmod_ocp_if omap44xx_l3_main_2__aes2 = {
972         .master         = &omap44xx_l4_per_hwmod,
973         .slave          = &omap44xx_aes2_hwmod,
974         .clk            = "l3_div_ck",
975         .user           = OCP_USER_MPU | OCP_USER_SDMA,
976 };
977
978 /*
979  * 'des' class for DES3DES module
980  */
981 static struct omap_hwmod_class_sysconfig omap44xx_des_sysc = {
982         .rev_offs       = 0x30,
983         .sysc_offs      = 0x34,
984         .syss_offs      = 0x38,
985         .sysc_flags     = SYSS_HAS_RESET_STATUS,
986 };
987
988 static struct omap_hwmod_class omap44xx_des_hwmod_class = {
989         .name           = "des",
990         .sysc           = &omap44xx_des_sysc,
991 };
992
993 static struct omap_hwmod omap44xx_des_hwmod = {
994         .name           = "des",
995         .class          = &omap44xx_des_hwmod_class,
996         .clkdm_name     = "l4_secure_clkdm",
997         .main_clk       = "l3_div_ck",
998         .prcm           = {
999                 .omap4  = {
1000                         .context_offs   = OMAP4_RM_L4SEC_DES3DES_CONTEXT_OFFSET,
1001                         .clkctrl_offs   = OMAP4_CM_L4SEC_DES3DES_CLKCTRL_OFFSET,
1002                         .modulemode     = MODULEMODE_SWCTRL,
1003                 },
1004         },
1005 };
1006
1007 struct omap_hwmod_ocp_if omap44xx_l3_main_2__des = {
1008         .master         = &omap44xx_l3_main_2_hwmod,
1009         .slave          = &omap44xx_des_hwmod,
1010         .clk            = "l3_div_ck",
1011         .user           = OCP_USER_MPU | OCP_USER_SDMA,
1012 };
1013
1014 /*
1015  * 'fdif' class
1016  * face detection hw accelerator module
1017  */
1018
1019 static struct omap_hwmod_class_sysconfig omap44xx_fdif_sysc = {
1020         .rev_offs       = 0x0000,
1021         .sysc_offs      = 0x0010,
1022         /*
1023          * FDIF needs 100 OCP clk cycles delay after a softreset before
1024          * accessing sysconfig again.
1025          * The lowest frequency at the moment for L3 bus is 100 MHz, so
1026          * 1usec delay is needed. Add an x2 margin to be safe (2 usecs).
1027          *
1028          * TODO: Indicate errata when available.
1029          */
1030         .srst_udelay    = 2,
1031         .sysc_flags     = (SYSC_HAS_MIDLEMODE | SYSC_HAS_RESET_STATUS |
1032                            SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
1033         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1034                            MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
1035         .sysc_fields    = &omap_hwmod_sysc_type2,
1036 };
1037
1038 static struct omap_hwmod_class omap44xx_fdif_hwmod_class = {
1039         .name   = "fdif",
1040         .sysc   = &omap44xx_fdif_sysc,
1041 };
1042
1043 /* fdif */
1044 static struct omap_hwmod omap44xx_fdif_hwmod = {
1045         .name           = "fdif",
1046         .class          = &omap44xx_fdif_hwmod_class,
1047         .clkdm_name     = "iss_clkdm",
1048         .main_clk       = "fdif_fck",
1049         .prcm = {
1050                 .omap4 = {
1051                         .clkctrl_offs = OMAP4_CM_CAM_FDIF_CLKCTRL_OFFSET,
1052                         .context_offs = OMAP4_RM_CAM_FDIF_CONTEXT_OFFSET,
1053                         .modulemode   = MODULEMODE_SWCTRL,
1054                 },
1055         },
1056 };
1057
1058 /*
1059  * 'gpio' class
1060  * general purpose io module
1061  */
1062
1063 static struct omap_hwmod_class_sysconfig omap44xx_gpio_sysc = {
1064         .rev_offs       = 0x0000,
1065         .sysc_offs      = 0x0010,
1066         .syss_offs      = 0x0114,
1067         .sysc_flags     = (SYSC_HAS_AUTOIDLE | SYSC_HAS_ENAWAKEUP |
1068                            SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
1069                            SYSS_HAS_RESET_STATUS),
1070         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1071                            SIDLE_SMART_WKUP),
1072         .sysc_fields    = &omap_hwmod_sysc_type1,
1073 };
1074
1075 static struct omap_hwmod_class omap44xx_gpio_hwmod_class = {
1076         .name   = "gpio",
1077         .sysc   = &omap44xx_gpio_sysc,
1078         .rev    = 2,
1079 };
1080
1081 /* gpio1 */
1082 static struct omap_hwmod_opt_clk gpio1_opt_clks[] = {
1083         { .role = "dbclk", .clk = "gpio1_dbclk" },
1084 };
1085
1086 static struct omap_hwmod omap44xx_gpio1_hwmod = {
1087         .name           = "gpio1",
1088         .class          = &omap44xx_gpio_hwmod_class,
1089         .clkdm_name     = "l4_wkup_clkdm",
1090         .main_clk       = "l4_wkup_clk_mux_ck",
1091         .prcm = {
1092                 .omap4 = {
1093                         .clkctrl_offs = OMAP4_CM_WKUP_GPIO1_CLKCTRL_OFFSET,
1094                         .context_offs = OMAP4_RM_WKUP_GPIO1_CONTEXT_OFFSET,
1095                         .modulemode   = MODULEMODE_HWCTRL,
1096                 },
1097         },
1098         .opt_clks       = gpio1_opt_clks,
1099         .opt_clks_cnt   = ARRAY_SIZE(gpio1_opt_clks),
1100 };
1101
1102 /* gpio2 */
1103 static struct omap_hwmod_opt_clk gpio2_opt_clks[] = {
1104         { .role = "dbclk", .clk = "gpio2_dbclk" },
1105 };
1106
1107 static struct omap_hwmod omap44xx_gpio2_hwmod = {
1108         .name           = "gpio2",
1109         .class          = &omap44xx_gpio_hwmod_class,
1110         .clkdm_name     = "l4_per_clkdm",
1111         .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
1112         .main_clk       = "l4_div_ck",
1113         .prcm = {
1114                 .omap4 = {
1115                         .clkctrl_offs = OMAP4_CM_L4PER_GPIO2_CLKCTRL_OFFSET,
1116                         .context_offs = OMAP4_RM_L4PER_GPIO2_CONTEXT_OFFSET,
1117                         .modulemode   = MODULEMODE_HWCTRL,
1118                 },
1119         },
1120         .opt_clks       = gpio2_opt_clks,
1121         .opt_clks_cnt   = ARRAY_SIZE(gpio2_opt_clks),
1122 };
1123
1124 /* gpio3 */
1125 static struct omap_hwmod_opt_clk gpio3_opt_clks[] = {
1126         { .role = "dbclk", .clk = "gpio3_dbclk" },
1127 };
1128
1129 static struct omap_hwmod omap44xx_gpio3_hwmod = {
1130         .name           = "gpio3",
1131         .class          = &omap44xx_gpio_hwmod_class,
1132         .clkdm_name     = "l4_per_clkdm",
1133         .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
1134         .main_clk       = "l4_div_ck",
1135         .prcm = {
1136                 .omap4 = {
1137                         .clkctrl_offs = OMAP4_CM_L4PER_GPIO3_CLKCTRL_OFFSET,
1138                         .context_offs = OMAP4_RM_L4PER_GPIO3_CONTEXT_OFFSET,
1139                         .modulemode   = MODULEMODE_HWCTRL,
1140                 },
1141         },
1142         .opt_clks       = gpio3_opt_clks,
1143         .opt_clks_cnt   = ARRAY_SIZE(gpio3_opt_clks),
1144 };
1145
1146 /* gpio4 */
1147 static struct omap_hwmod_opt_clk gpio4_opt_clks[] = {
1148         { .role = "dbclk", .clk = "gpio4_dbclk" },
1149 };
1150
1151 static struct omap_hwmod omap44xx_gpio4_hwmod = {
1152         .name           = "gpio4",
1153         .class          = &omap44xx_gpio_hwmod_class,
1154         .clkdm_name     = "l4_per_clkdm",
1155         .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
1156         .main_clk       = "l4_div_ck",
1157         .prcm = {
1158                 .omap4 = {
1159                         .clkctrl_offs = OMAP4_CM_L4PER_GPIO4_CLKCTRL_OFFSET,
1160                         .context_offs = OMAP4_RM_L4PER_GPIO4_CONTEXT_OFFSET,
1161                         .modulemode   = MODULEMODE_HWCTRL,
1162                 },
1163         },
1164         .opt_clks       = gpio4_opt_clks,
1165         .opt_clks_cnt   = ARRAY_SIZE(gpio4_opt_clks),
1166 };
1167
1168 /* gpio5 */
1169 static struct omap_hwmod_opt_clk gpio5_opt_clks[] = {
1170         { .role = "dbclk", .clk = "gpio5_dbclk" },
1171 };
1172
1173 static struct omap_hwmod omap44xx_gpio5_hwmod = {
1174         .name           = "gpio5",
1175         .class          = &omap44xx_gpio_hwmod_class,
1176         .clkdm_name     = "l4_per_clkdm",
1177         .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
1178         .main_clk       = "l4_div_ck",
1179         .prcm = {
1180                 .omap4 = {
1181                         .clkctrl_offs = OMAP4_CM_L4PER_GPIO5_CLKCTRL_OFFSET,
1182                         .context_offs = OMAP4_RM_L4PER_GPIO5_CONTEXT_OFFSET,
1183                         .modulemode   = MODULEMODE_HWCTRL,
1184                 },
1185         },
1186         .opt_clks       = gpio5_opt_clks,
1187         .opt_clks_cnt   = ARRAY_SIZE(gpio5_opt_clks),
1188 };
1189
1190 /* gpio6 */
1191 static struct omap_hwmod_opt_clk gpio6_opt_clks[] = {
1192         { .role = "dbclk", .clk = "gpio6_dbclk" },
1193 };
1194
1195 static struct omap_hwmod omap44xx_gpio6_hwmod = {
1196         .name           = "gpio6",
1197         .class          = &omap44xx_gpio_hwmod_class,
1198         .clkdm_name     = "l4_per_clkdm",
1199         .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
1200         .main_clk       = "l4_div_ck",
1201         .prcm = {
1202                 .omap4 = {
1203                         .clkctrl_offs = OMAP4_CM_L4PER_GPIO6_CLKCTRL_OFFSET,
1204                         .context_offs = OMAP4_RM_L4PER_GPIO6_CONTEXT_OFFSET,
1205                         .modulemode   = MODULEMODE_HWCTRL,
1206                 },
1207         },
1208         .opt_clks       = gpio6_opt_clks,
1209         .opt_clks_cnt   = ARRAY_SIZE(gpio6_opt_clks),
1210 };
1211
1212 /*
1213  * 'gpmc' class
1214  * general purpose memory controller
1215  */
1216
1217 static struct omap_hwmod_class_sysconfig omap44xx_gpmc_sysc = {
1218         .rev_offs       = 0x0000,
1219         .sysc_offs      = 0x0010,
1220         .syss_offs      = 0x0014,
1221         .sysc_flags     = (SYSC_HAS_AUTOIDLE | SYSC_HAS_SIDLEMODE |
1222                            SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
1223         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
1224         .sysc_fields    = &omap_hwmod_sysc_type1,
1225 };
1226
1227 static struct omap_hwmod_class omap44xx_gpmc_hwmod_class = {
1228         .name   = "gpmc",
1229         .sysc   = &omap44xx_gpmc_sysc,
1230 };
1231
1232 /* gpmc */
1233 static struct omap_hwmod omap44xx_gpmc_hwmod = {
1234         .name           = "gpmc",
1235         .class          = &omap44xx_gpmc_hwmod_class,
1236         .clkdm_name     = "l3_2_clkdm",
1237         /* Skip reset for CONFIG_OMAP_GPMC_DEBUG for bootloader timings */
1238         .flags          = DEBUG_OMAP_GPMC_HWMOD_FLAGS,
1239         .prcm = {
1240                 .omap4 = {
1241                         .clkctrl_offs = OMAP4_CM_L3_2_GPMC_CLKCTRL_OFFSET,
1242                         .context_offs = OMAP4_RM_L3_2_GPMC_CONTEXT_OFFSET,
1243                         .modulemode   = MODULEMODE_HWCTRL,
1244                 },
1245         },
1246 };
1247
1248 /*
1249  * 'gpu' class
1250  * 2d/3d graphics accelerator
1251  */
1252
1253 static struct omap_hwmod_class_sysconfig omap44xx_gpu_sysc = {
1254         .rev_offs       = 0x1fc00,
1255         .sysc_offs      = 0x1fc10,
1256         .sysc_flags     = (SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE),
1257         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1258                            SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
1259                            MSTANDBY_SMART | MSTANDBY_SMART_WKUP),
1260         .sysc_fields    = &omap_hwmod_sysc_type2,
1261 };
1262
1263 static struct omap_hwmod_class omap44xx_gpu_hwmod_class = {
1264         .name   = "gpu",
1265         .sysc   = &omap44xx_gpu_sysc,
1266 };
1267
1268 /* gpu */
1269 static struct omap_hwmod omap44xx_gpu_hwmod = {
1270         .name           = "gpu",
1271         .class          = &omap44xx_gpu_hwmod_class,
1272         .clkdm_name     = "l3_gfx_clkdm",
1273         .main_clk       = "sgx_clk_mux",
1274         .prcm = {
1275                 .omap4 = {
1276                         .clkctrl_offs = OMAP4_CM_GFX_GFX_CLKCTRL_OFFSET,
1277                         .context_offs = OMAP4_RM_GFX_GFX_CONTEXT_OFFSET,
1278                         .modulemode   = MODULEMODE_SWCTRL,
1279                 },
1280         },
1281 };
1282
1283 /*
1284  * 'hdq1w' class
1285  * hdq / 1-wire serial interface controller
1286  */
1287
1288 static struct omap_hwmod_class_sysconfig omap44xx_hdq1w_sysc = {
1289         .rev_offs       = 0x0000,
1290         .sysc_offs      = 0x0014,
1291         .syss_offs      = 0x0018,
1292         .sysc_flags     = (SYSC_HAS_AUTOIDLE | SYSC_HAS_SOFTRESET |
1293                            SYSS_HAS_RESET_STATUS),
1294         .sysc_fields    = &omap_hwmod_sysc_type1,
1295 };
1296
1297 static struct omap_hwmod_class omap44xx_hdq1w_hwmod_class = {
1298         .name   = "hdq1w",
1299         .sysc   = &omap44xx_hdq1w_sysc,
1300 };
1301
1302 /* hdq1w */
1303 static struct omap_hwmod omap44xx_hdq1w_hwmod = {
1304         .name           = "hdq1w",
1305         .class          = &omap44xx_hdq1w_hwmod_class,
1306         .clkdm_name     = "l4_per_clkdm",
1307         .flags          = HWMOD_INIT_NO_RESET, /* XXX temporary */
1308         .main_clk       = "func_12m_fclk",
1309         .prcm = {
1310                 .omap4 = {
1311                         .clkctrl_offs = OMAP4_CM_L4PER_HDQ1W_CLKCTRL_OFFSET,
1312                         .context_offs = OMAP4_RM_L4PER_HDQ1W_CONTEXT_OFFSET,
1313                         .modulemode   = MODULEMODE_SWCTRL,
1314                 },
1315         },
1316 };
1317
1318 /*
1319  * 'hsi' class
1320  * mipi high-speed synchronous serial interface (multichannel and full-duplex
1321  * serial if)
1322  */
1323
1324 static struct omap_hwmod_class_sysconfig omap44xx_hsi_sysc = {
1325         .rev_offs       = 0x0000,
1326         .sysc_offs      = 0x0010,
1327         .syss_offs      = 0x0014,
1328         .sysc_flags     = (SYSC_HAS_AUTOIDLE | SYSC_HAS_EMUFREE |
1329                            SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE |
1330                            SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
1331         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1332                            SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
1333                            MSTANDBY_SMART | MSTANDBY_SMART_WKUP),
1334         .sysc_fields    = &omap_hwmod_sysc_type1,
1335 };
1336
1337 static struct omap_hwmod_class omap44xx_hsi_hwmod_class = {
1338         .name   = "hsi",
1339         .sysc   = &omap44xx_hsi_sysc,
1340 };
1341
1342 /* hsi */
1343 static struct omap_hwmod omap44xx_hsi_hwmod = {
1344         .name           = "hsi",
1345         .class          = &omap44xx_hsi_hwmod_class,
1346         .clkdm_name     = "l3_init_clkdm",
1347         .main_clk       = "hsi_fck",
1348         .prcm = {
1349                 .omap4 = {
1350                         .clkctrl_offs = OMAP4_CM_L3INIT_HSI_CLKCTRL_OFFSET,
1351                         .context_offs = OMAP4_RM_L3INIT_HSI_CONTEXT_OFFSET,
1352                         .modulemode   = MODULEMODE_HWCTRL,
1353                 },
1354         },
1355 };
1356
1357 /*
1358  * 'i2c' class
1359  * multimaster high-speed i2c controller
1360  */
1361
1362 static struct omap_hwmod_class_sysconfig omap44xx_i2c_sysc = {
1363         .rev_offs       = 0,
1364         .sysc_offs      = 0x0010,
1365         .syss_offs      = 0x0090,
1366         .sysc_flags     = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
1367                            SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE |
1368                            SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
1369         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1370                            SIDLE_SMART_WKUP),
1371         .sysc_fields    = &omap_hwmod_sysc_type1,
1372 };
1373
1374 static struct omap_hwmod_class omap44xx_i2c_hwmod_class = {
1375         .name   = "i2c",
1376         .sysc   = &omap44xx_i2c_sysc,
1377         .rev    = OMAP_I2C_IP_VERSION_2,
1378         .reset  = &omap_i2c_reset,
1379 };
1380
1381 /* i2c1 */
1382 static struct omap_hwmod omap44xx_i2c1_hwmod = {
1383         .name           = "i2c1",
1384         .class          = &omap44xx_i2c_hwmod_class,
1385         .clkdm_name     = "l4_per_clkdm",
1386         .flags          = HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT,
1387         .main_clk       = "func_96m_fclk",
1388         .prcm = {
1389                 .omap4 = {
1390                         .clkctrl_offs = OMAP4_CM_L4PER_I2C1_CLKCTRL_OFFSET,
1391                         .context_offs = OMAP4_RM_L4PER_I2C1_CONTEXT_OFFSET,
1392                         .modulemode   = MODULEMODE_SWCTRL,
1393                 },
1394         },
1395 };
1396
1397 /* i2c2 */
1398 static struct omap_hwmod omap44xx_i2c2_hwmod = {
1399         .name           = "i2c2",
1400         .class          = &omap44xx_i2c_hwmod_class,
1401         .clkdm_name     = "l4_per_clkdm",
1402         .flags          = HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT,
1403         .main_clk       = "func_96m_fclk",
1404         .prcm = {
1405                 .omap4 = {
1406                         .clkctrl_offs = OMAP4_CM_L4PER_I2C2_CLKCTRL_OFFSET,
1407                         .context_offs = OMAP4_RM_L4PER_I2C2_CONTEXT_OFFSET,
1408                         .modulemode   = MODULEMODE_SWCTRL,
1409                 },
1410         },
1411 };
1412
1413 /* i2c3 */
1414 static struct omap_hwmod omap44xx_i2c3_hwmod = {
1415         .name           = "i2c3",
1416         .class          = &omap44xx_i2c_hwmod_class,
1417         .clkdm_name     = "l4_per_clkdm",
1418         .flags          = HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT,
1419         .main_clk       = "func_96m_fclk",
1420         .prcm = {
1421                 .omap4 = {
1422                         .clkctrl_offs = OMAP4_CM_L4PER_I2C3_CLKCTRL_OFFSET,
1423                         .context_offs = OMAP4_RM_L4PER_I2C3_CONTEXT_OFFSET,
1424                         .modulemode   = MODULEMODE_SWCTRL,
1425                 },
1426         },
1427 };
1428
1429 /* i2c4 */
1430 static struct omap_hwmod omap44xx_i2c4_hwmod = {
1431         .name           = "i2c4",
1432         .class          = &omap44xx_i2c_hwmod_class,
1433         .clkdm_name     = "l4_per_clkdm",
1434         .flags          = HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT,
1435         .main_clk       = "func_96m_fclk",
1436         .prcm = {
1437                 .omap4 = {
1438                         .clkctrl_offs = OMAP4_CM_L4PER_I2C4_CLKCTRL_OFFSET,
1439                         .context_offs = OMAP4_RM_L4PER_I2C4_CONTEXT_OFFSET,
1440                         .modulemode   = MODULEMODE_SWCTRL,
1441                 },
1442         },
1443 };
1444
1445 /*
1446  * 'ipu' class
1447  * imaging processor unit
1448  */
1449
1450 static struct omap_hwmod_class omap44xx_ipu_hwmod_class = {
1451         .name   = "ipu",
1452 };
1453
1454 /* ipu */
1455 static struct omap_hwmod_rst_info omap44xx_ipu_resets[] = {
1456         { .name = "cpu0", .rst_shift = 0 },
1457         { .name = "cpu1", .rst_shift = 1 },
1458 };
1459
1460 static struct omap_hwmod omap44xx_ipu_hwmod = {
1461         .name           = "ipu",
1462         .class          = &omap44xx_ipu_hwmod_class,
1463         .clkdm_name     = "ducati_clkdm",
1464         .rst_lines      = omap44xx_ipu_resets,
1465         .rst_lines_cnt  = ARRAY_SIZE(omap44xx_ipu_resets),
1466         .main_clk       = "ducati_clk_mux_ck",
1467         .prcm = {
1468                 .omap4 = {
1469                         .clkctrl_offs = OMAP4_CM_DUCATI_DUCATI_CLKCTRL_OFFSET,
1470                         .rstctrl_offs = OMAP4_RM_DUCATI_RSTCTRL_OFFSET,
1471                         .context_offs = OMAP4_RM_DUCATI_DUCATI_CONTEXT_OFFSET,
1472                         .modulemode   = MODULEMODE_HWCTRL,
1473                 },
1474         },
1475 };
1476
1477 /*
1478  * 'iss' class
1479  * external images sensor pixel data processor
1480  */
1481
1482 static struct omap_hwmod_class_sysconfig omap44xx_iss_sysc = {
1483         .rev_offs       = 0x0000,
1484         .sysc_offs      = 0x0010,
1485         /*
1486          * ISS needs 100 OCP clk cycles delay after a softreset before
1487          * accessing sysconfig again.
1488          * The lowest frequency at the moment for L3 bus is 100 MHz, so
1489          * 1usec delay is needed. Add an x2 margin to be safe (2 usecs).
1490          *
1491          * TODO: Indicate errata when available.
1492          */
1493         .srst_udelay    = 2,
1494         .sysc_flags     = (SYSC_HAS_MIDLEMODE | SYSC_HAS_RESET_STATUS |
1495                            SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
1496         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1497                            SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
1498                            MSTANDBY_SMART | MSTANDBY_SMART_WKUP),
1499         .sysc_fields    = &omap_hwmod_sysc_type2,
1500 };
1501
1502 static struct omap_hwmod_class omap44xx_iss_hwmod_class = {
1503         .name   = "iss",
1504         .sysc   = &omap44xx_iss_sysc,
1505 };
1506
1507 /* iss */
1508 static struct omap_hwmod_opt_clk iss_opt_clks[] = {
1509         { .role = "ctrlclk", .clk = "iss_ctrlclk" },
1510 };
1511
1512 static struct omap_hwmod omap44xx_iss_hwmod = {
1513         .name           = "iss",
1514         .class          = &omap44xx_iss_hwmod_class,
1515         .clkdm_name     = "iss_clkdm",
1516         .main_clk       = "ducati_clk_mux_ck",
1517         .prcm = {
1518                 .omap4 = {
1519                         .clkctrl_offs = OMAP4_CM_CAM_ISS_CLKCTRL_OFFSET,
1520                         .context_offs = OMAP4_RM_CAM_ISS_CONTEXT_OFFSET,
1521                         .modulemode   = MODULEMODE_SWCTRL,
1522                 },
1523         },
1524         .opt_clks       = iss_opt_clks,
1525         .opt_clks_cnt   = ARRAY_SIZE(iss_opt_clks),
1526 };
1527
1528 /*
1529  * 'iva' class
1530  * multi-standard video encoder/decoder hardware accelerator
1531  */
1532
1533 static struct omap_hwmod_class omap44xx_iva_hwmod_class = {
1534         .name   = "iva",
1535 };
1536
1537 /* iva */
1538 static struct omap_hwmod_rst_info omap44xx_iva_resets[] = {
1539         { .name = "seq0", .rst_shift = 0 },
1540         { .name = "seq1", .rst_shift = 1 },
1541         { .name = "logic", .rst_shift = 2 },
1542 };
1543
1544 static struct omap_hwmod omap44xx_iva_hwmod = {
1545         .name           = "iva",
1546         .class          = &omap44xx_iva_hwmod_class,
1547         .clkdm_name     = "ivahd_clkdm",
1548         .rst_lines      = omap44xx_iva_resets,
1549         .rst_lines_cnt  = ARRAY_SIZE(omap44xx_iva_resets),
1550         .main_clk       = "dpll_iva_m5x2_ck",
1551         .prcm = {
1552                 .omap4 = {
1553                         .clkctrl_offs = OMAP4_CM_IVAHD_IVAHD_CLKCTRL_OFFSET,
1554                         .rstctrl_offs = OMAP4_RM_IVAHD_RSTCTRL_OFFSET,
1555                         .context_offs = OMAP4_RM_IVAHD_IVAHD_CONTEXT_OFFSET,
1556                         .modulemode   = MODULEMODE_HWCTRL,
1557                 },
1558         },
1559 };
1560
1561 /*
1562  * 'kbd' class
1563  * keyboard controller
1564  */
1565
1566 static struct omap_hwmod_class_sysconfig omap44xx_kbd_sysc = {
1567         .rev_offs       = 0x0000,
1568         .sysc_offs      = 0x0010,
1569         .syss_offs      = 0x0014,
1570         .sysc_flags     = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
1571                            SYSC_HAS_EMUFREE | SYSC_HAS_ENAWAKEUP |
1572                            SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
1573                            SYSS_HAS_RESET_STATUS),
1574         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
1575         .sysc_fields    = &omap_hwmod_sysc_type1,
1576 };
1577
1578 static struct omap_hwmod_class omap44xx_kbd_hwmod_class = {
1579         .name   = "kbd",
1580         .sysc   = &omap44xx_kbd_sysc,
1581 };
1582
1583 /* kbd */
1584 static struct omap_hwmod omap44xx_kbd_hwmod = {
1585         .name           = "kbd",
1586         .class          = &omap44xx_kbd_hwmod_class,
1587         .clkdm_name     = "l4_wkup_clkdm",
1588         .main_clk       = "sys_32k_ck",
1589         .prcm = {
1590                 .omap4 = {
1591                         .clkctrl_offs = OMAP4_CM_WKUP_KEYBOARD_CLKCTRL_OFFSET,
1592                         .context_offs = OMAP4_RM_WKUP_KEYBOARD_CONTEXT_OFFSET,
1593                         .modulemode   = MODULEMODE_SWCTRL,
1594                 },
1595         },
1596 };
1597
1598 /*
1599  * 'mailbox' class
1600  * mailbox module allowing communication between the on-chip processors using a
1601  * queued mailbox-interrupt mechanism.
1602  */
1603
1604 static struct omap_hwmod_class_sysconfig omap44xx_mailbox_sysc = {
1605         .rev_offs       = 0x0000,
1606         .sysc_offs      = 0x0010,
1607         .sysc_flags     = (SYSC_HAS_RESET_STATUS | SYSC_HAS_SIDLEMODE |
1608                            SYSC_HAS_SOFTRESET),
1609         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
1610         .sysc_fields    = &omap_hwmod_sysc_type2,
1611 };
1612
1613 static struct omap_hwmod_class omap44xx_mailbox_hwmod_class = {
1614         .name   = "mailbox",
1615         .sysc   = &omap44xx_mailbox_sysc,
1616 };
1617
1618 /* mailbox */
1619 static struct omap_hwmod omap44xx_mailbox_hwmod = {
1620         .name           = "mailbox",
1621         .class          = &omap44xx_mailbox_hwmod_class,
1622         .clkdm_name     = "l4_cfg_clkdm",
1623         .prcm = {
1624                 .omap4 = {
1625                         .clkctrl_offs = OMAP4_CM_L4CFG_MAILBOX_CLKCTRL_OFFSET,
1626                         .context_offs = OMAP4_RM_L4CFG_MAILBOX_CONTEXT_OFFSET,
1627                 },
1628         },
1629 };
1630
1631 /*
1632  * 'mcasp' class
1633  * multi-channel audio serial port controller
1634  */
1635
1636 /* The IP is not compliant to type1 / type2 scheme */
1637 static struct omap_hwmod_class_sysconfig omap44xx_mcasp_sysc = {
1638         .rev_offs       = 0,
1639         .sysc_offs      = 0x0004,
1640         .sysc_flags     = SYSC_HAS_SIDLEMODE,
1641         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1642                            SIDLE_SMART_WKUP),
1643         .sysc_fields    = &omap_hwmod_sysc_type_mcasp,
1644 };
1645
1646 static struct omap_hwmod_class omap44xx_mcasp_hwmod_class = {
1647         .name   = "mcasp",
1648         .sysc   = &omap44xx_mcasp_sysc,
1649 };
1650
1651 /* mcasp */
1652 static struct omap_hwmod omap44xx_mcasp_hwmod = {
1653         .name           = "mcasp",
1654         .class          = &omap44xx_mcasp_hwmod_class,
1655         .clkdm_name     = "abe_clkdm",
1656         .main_clk       = "func_mcasp_abe_gfclk",
1657         .prcm = {
1658                 .omap4 = {
1659                         .clkctrl_offs = OMAP4_CM1_ABE_MCASP_CLKCTRL_OFFSET,
1660                         .context_offs = OMAP4_RM_ABE_MCASP_CONTEXT_OFFSET,
1661                         .modulemode   = MODULEMODE_SWCTRL,
1662                 },
1663         },
1664 };
1665
1666 /*
1667  * 'mcbsp' class
1668  * multi channel buffered serial port controller
1669  */
1670
1671 static struct omap_hwmod_class_sysconfig omap44xx_mcbsp_sysc = {
1672         .rev_offs       = -ENODEV,
1673         .sysc_offs      = 0x008c,
1674         .sysc_flags     = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_ENAWAKEUP |
1675                            SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
1676         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
1677         .sysc_fields    = &omap_hwmod_sysc_type1,
1678 };
1679
1680 static struct omap_hwmod_class omap44xx_mcbsp_hwmod_class = {
1681         .name   = "mcbsp",
1682         .sysc   = &omap44xx_mcbsp_sysc,
1683 };
1684
1685 /* mcbsp1 */
1686 static struct omap_hwmod_opt_clk mcbsp1_opt_clks[] = {
1687         { .role = "pad_fck", .clk = "pad_clks_ck" },
1688         { .role = "prcm_fck", .clk = "mcbsp1_sync_mux_ck" },
1689 };
1690
1691 static struct omap_hwmod omap44xx_mcbsp1_hwmod = {
1692         .name           = "mcbsp1",
1693         .class          = &omap44xx_mcbsp_hwmod_class,
1694         .clkdm_name     = "abe_clkdm",
1695         .main_clk       = "func_mcbsp1_gfclk",
1696         .prcm = {
1697                 .omap4 = {
1698                         .clkctrl_offs = OMAP4_CM1_ABE_MCBSP1_CLKCTRL_OFFSET,
1699                         .context_offs = OMAP4_RM_ABE_MCBSP1_CONTEXT_OFFSET,
1700                         .modulemode   = MODULEMODE_SWCTRL,
1701                 },
1702         },
1703         .opt_clks       = mcbsp1_opt_clks,
1704         .opt_clks_cnt   = ARRAY_SIZE(mcbsp1_opt_clks),
1705 };
1706
1707 /* mcbsp2 */
1708 static struct omap_hwmod_opt_clk mcbsp2_opt_clks[] = {
1709         { .role = "pad_fck", .clk = "pad_clks_ck" },
1710         { .role = "prcm_fck", .clk = "mcbsp2_sync_mux_ck" },
1711 };
1712
1713 static struct omap_hwmod omap44xx_mcbsp2_hwmod = {
1714         .name           = "mcbsp2",
1715         .class          = &omap44xx_mcbsp_hwmod_class,
1716         .clkdm_name     = "abe_clkdm",
1717         .main_clk       = "func_mcbsp2_gfclk",
1718         .prcm = {
1719                 .omap4 = {
1720                         .clkctrl_offs = OMAP4_CM1_ABE_MCBSP2_CLKCTRL_OFFSET,
1721                         .context_offs = OMAP4_RM_ABE_MCBSP2_CONTEXT_OFFSET,
1722                         .modulemode   = MODULEMODE_SWCTRL,
1723                 },
1724         },
1725         .opt_clks       = mcbsp2_opt_clks,
1726         .opt_clks_cnt   = ARRAY_SIZE(mcbsp2_opt_clks),
1727 };
1728
1729 /* mcbsp3 */
1730 static struct omap_hwmod_opt_clk mcbsp3_opt_clks[] = {
1731         { .role = "pad_fck", .clk = "pad_clks_ck" },
1732         { .role = "prcm_fck", .clk = "mcbsp3_sync_mux_ck" },
1733 };
1734
1735 static struct omap_hwmod omap44xx_mcbsp3_hwmod = {
1736         .name           = "mcbsp3",
1737         .class          = &omap44xx_mcbsp_hwmod_class,
1738         .clkdm_name     = "abe_clkdm",
1739         .main_clk       = "func_mcbsp3_gfclk",
1740         .prcm = {
1741                 .omap4 = {
1742                         .clkctrl_offs = OMAP4_CM1_ABE_MCBSP3_CLKCTRL_OFFSET,
1743                         .context_offs = OMAP4_RM_ABE_MCBSP3_CONTEXT_OFFSET,
1744                         .modulemode   = MODULEMODE_SWCTRL,
1745                 },
1746         },
1747         .opt_clks       = mcbsp3_opt_clks,
1748         .opt_clks_cnt   = ARRAY_SIZE(mcbsp3_opt_clks),
1749 };
1750
1751 /* mcbsp4 */
1752 static struct omap_hwmod_opt_clk mcbsp4_opt_clks[] = {
1753         { .role = "pad_fck", .clk = "pad_clks_ck" },
1754         { .role = "prcm_fck", .clk = "mcbsp4_sync_mux_ck" },
1755 };
1756
1757 static struct omap_hwmod omap44xx_mcbsp4_hwmod = {
1758         .name           = "mcbsp4",
1759         .class          = &omap44xx_mcbsp_hwmod_class,
1760         .clkdm_name     = "l4_per_clkdm",
1761         .main_clk       = "per_mcbsp4_gfclk",
1762         .prcm = {
1763                 .omap4 = {
1764                         .clkctrl_offs = OMAP4_CM_L4PER_MCBSP4_CLKCTRL_OFFSET,
1765                         .context_offs = OMAP4_RM_L4PER_MCBSP4_CONTEXT_OFFSET,
1766                         .modulemode   = MODULEMODE_SWCTRL,
1767                 },
1768         },
1769         .opt_clks       = mcbsp4_opt_clks,
1770         .opt_clks_cnt   = ARRAY_SIZE(mcbsp4_opt_clks),
1771 };
1772
1773 /*
1774  * 'mcpdm' class
1775  * multi channel pdm controller (proprietary interface with phoenix power
1776  * ic)
1777  */
1778
1779 static struct omap_hwmod_class_sysconfig omap44xx_mcpdm_sysc = {
1780         .rev_offs       = 0x0000,
1781         .sysc_offs      = 0x0010,
1782         .sysc_flags     = (SYSC_HAS_EMUFREE | SYSC_HAS_RESET_STATUS |
1783                            SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
1784         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1785                            SIDLE_SMART_WKUP),
1786         .sysc_fields    = &omap_hwmod_sysc_type2,
1787 };
1788
1789 static struct omap_hwmod_class omap44xx_mcpdm_hwmod_class = {
1790         .name   = "mcpdm",
1791         .sysc   = &omap44xx_mcpdm_sysc,
1792 };
1793
1794 /* mcpdm */
1795 static struct omap_hwmod omap44xx_mcpdm_hwmod = {
1796         .name           = "mcpdm",
1797         .class          = &omap44xx_mcpdm_hwmod_class,
1798         .clkdm_name     = "abe_clkdm",
1799         /*
1800          * It's suspected that the McPDM requires an off-chip main
1801          * functional clock, controlled via I2C.  This IP block is
1802          * currently reset very early during boot, before I2C is
1803          * available, so it doesn't seem that we have any choice in
1804          * the kernel other than to avoid resetting it.
1805          *
1806          * Also, McPDM needs to be configured to NO_IDLE mode when it
1807          * is in used otherwise vital clocks will be gated which
1808          * results 'slow motion' audio playback.
1809          */
1810         .flags          = HWMOD_EXT_OPT_MAIN_CLK | HWMOD_SWSUP_SIDLE,
1811         .main_clk       = "pad_clks_ck",
1812         .prcm = {
1813                 .omap4 = {
1814                         .clkctrl_offs = OMAP4_CM1_ABE_PDM_CLKCTRL_OFFSET,
1815                         .context_offs = OMAP4_RM_ABE_PDM_CONTEXT_OFFSET,
1816                         .modulemode   = MODULEMODE_SWCTRL,
1817                 },
1818         },
1819 };
1820
1821 /*
1822  * 'mcspi' class
1823  * multichannel serial port interface (mcspi) / master/slave synchronous serial
1824  * bus
1825  */
1826
1827 static struct omap_hwmod_class_sysconfig omap44xx_mcspi_sysc = {
1828         .rev_offs       = 0x0000,
1829         .sysc_offs      = 0x0010,
1830         .sysc_flags     = (SYSC_HAS_EMUFREE | SYSC_HAS_RESET_STATUS |
1831                            SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
1832         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1833                            SIDLE_SMART_WKUP),
1834         .sysc_fields    = &omap_hwmod_sysc_type2,
1835 };
1836
1837 static struct omap_hwmod_class omap44xx_mcspi_hwmod_class = {
1838         .name   = "mcspi",
1839         .sysc   = &omap44xx_mcspi_sysc,
1840 };
1841
1842 /* mcspi1 */
1843 static struct omap_hwmod omap44xx_mcspi1_hwmod = {
1844         .name           = "mcspi1",
1845         .class          = &omap44xx_mcspi_hwmod_class,
1846         .clkdm_name     = "l4_per_clkdm",
1847         .main_clk       = "func_48m_fclk",
1848         .prcm = {
1849                 .omap4 = {
1850                         .clkctrl_offs = OMAP4_CM_L4PER_MCSPI1_CLKCTRL_OFFSET,
1851                         .context_offs = OMAP4_RM_L4PER_MCSPI1_CONTEXT_OFFSET,
1852                         .modulemode   = MODULEMODE_SWCTRL,
1853                 },
1854         },
1855 };
1856
1857 /* mcspi2 */
1858 static struct omap_hwmod omap44xx_mcspi2_hwmod = {
1859         .name           = "mcspi2",
1860         .class          = &omap44xx_mcspi_hwmod_class,
1861         .clkdm_name     = "l4_per_clkdm",
1862         .main_clk       = "func_48m_fclk",
1863         .prcm = {
1864                 .omap4 = {
1865                         .clkctrl_offs = OMAP4_CM_L4PER_MCSPI2_CLKCTRL_OFFSET,
1866                         .context_offs = OMAP4_RM_L4PER_MCSPI2_CONTEXT_OFFSET,
1867                         .modulemode   = MODULEMODE_SWCTRL,
1868                 },
1869         },
1870 };
1871
1872 /* mcspi3 */
1873 static struct omap_hwmod omap44xx_mcspi3_hwmod = {
1874         .name           = "mcspi3",
1875         .class          = &omap44xx_mcspi_hwmod_class,
1876         .clkdm_name     = "l4_per_clkdm",
1877         .main_clk       = "func_48m_fclk",
1878         .prcm = {
1879                 .omap4 = {
1880                         .clkctrl_offs = OMAP4_CM_L4PER_MCSPI3_CLKCTRL_OFFSET,
1881                         .context_offs = OMAP4_RM_L4PER_MCSPI3_CONTEXT_OFFSET,
1882                         .modulemode   = MODULEMODE_SWCTRL,
1883                 },
1884         },
1885 };
1886
1887 /* mcspi4 */
1888 static struct omap_hwmod omap44xx_mcspi4_hwmod = {
1889         .name           = "mcspi4",
1890         .class          = &omap44xx_mcspi_hwmod_class,
1891         .clkdm_name     = "l4_per_clkdm",
1892         .main_clk       = "func_48m_fclk",
1893         .prcm = {
1894                 .omap4 = {
1895                         .clkctrl_offs = OMAP4_CM_L4PER_MCSPI4_CLKCTRL_OFFSET,
1896                         .context_offs = OMAP4_RM_L4PER_MCSPI4_CONTEXT_OFFSET,
1897                         .modulemode   = MODULEMODE_SWCTRL,
1898                 },
1899         },
1900 };
1901
1902 /*
1903  * 'mmc' class
1904  * multimedia card high-speed/sd/sdio (mmc/sd/sdio) host controller
1905  */
1906
1907 static struct omap_hwmod_class_sysconfig omap44xx_mmc_sysc = {
1908         .rev_offs       = 0x0000,
1909         .sysc_offs      = 0x0010,
1910         .sysc_flags     = (SYSC_HAS_EMUFREE | SYSC_HAS_MIDLEMODE |
1911                            SYSC_HAS_RESET_STATUS | SYSC_HAS_SIDLEMODE |
1912                            SYSC_HAS_SOFTRESET),
1913         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1914                            SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
1915                            MSTANDBY_SMART | MSTANDBY_SMART_WKUP),
1916         .sysc_fields    = &omap_hwmod_sysc_type2,
1917 };
1918
1919 static struct omap_hwmod_class omap44xx_mmc_hwmod_class = {
1920         .name   = "mmc",
1921         .sysc   = &omap44xx_mmc_sysc,
1922 };
1923
1924 /* mmc1 */
1925 static struct omap_hsmmc_dev_attr mmc1_dev_attr = {
1926         .flags  = OMAP_HSMMC_SUPPORTS_DUAL_VOLT,
1927 };
1928
1929 static struct omap_hwmod omap44xx_mmc1_hwmod = {
1930         .name           = "mmc1",
1931         .class          = &omap44xx_mmc_hwmod_class,
1932         .clkdm_name     = "l3_init_clkdm",
1933         .main_clk       = "hsmmc1_fclk",
1934         .prcm = {
1935                 .omap4 = {
1936                         .clkctrl_offs = OMAP4_CM_L3INIT_MMC1_CLKCTRL_OFFSET,
1937                         .context_offs = OMAP4_RM_L3INIT_MMC1_CONTEXT_OFFSET,
1938                         .modulemode   = MODULEMODE_SWCTRL,
1939                 },
1940         },
1941         .dev_attr       = &mmc1_dev_attr,
1942 };
1943
1944 /* mmc2 */
1945 static struct omap_hwmod omap44xx_mmc2_hwmod = {
1946         .name           = "mmc2",
1947         .class          = &omap44xx_mmc_hwmod_class,
1948         .clkdm_name     = "l3_init_clkdm",
1949         .main_clk       = "hsmmc2_fclk",
1950         .prcm = {
1951                 .omap4 = {
1952                         .clkctrl_offs = OMAP4_CM_L3INIT_MMC2_CLKCTRL_OFFSET,
1953                         .context_offs = OMAP4_RM_L3INIT_MMC2_CONTEXT_OFFSET,
1954                         .modulemode   = MODULEMODE_SWCTRL,
1955                 },
1956         },
1957 };
1958
1959 /* mmc3 */
1960 static struct omap_hwmod omap44xx_mmc3_hwmod = {
1961         .name           = "mmc3",
1962         .class          = &omap44xx_mmc_hwmod_class,
1963         .clkdm_name     = "l4_per_clkdm",
1964         .main_clk       = "func_48m_fclk",
1965         .prcm = {
1966                 .omap4 = {
1967                         .clkctrl_offs = OMAP4_CM_L4PER_MMCSD3_CLKCTRL_OFFSET,
1968                         .context_offs = OMAP4_RM_L4PER_MMCSD3_CONTEXT_OFFSET,
1969                         .modulemode   = MODULEMODE_SWCTRL,
1970                 },
1971         },
1972 };
1973
1974 /* mmc4 */
1975 static struct omap_hwmod omap44xx_mmc4_hwmod = {
1976         .name           = "mmc4",
1977         .class          = &omap44xx_mmc_hwmod_class,
1978         .clkdm_name     = "l4_per_clkdm",
1979         .main_clk       = "func_48m_fclk",
1980         .prcm = {
1981                 .omap4 = {
1982                         .clkctrl_offs = OMAP4_CM_L4PER_MMCSD4_CLKCTRL_OFFSET,
1983                         .context_offs = OMAP4_RM_L4PER_MMCSD4_CONTEXT_OFFSET,
1984                         .modulemode   = MODULEMODE_SWCTRL,
1985                 },
1986         },
1987 };
1988
1989 /* mmc5 */
1990 static struct omap_hwmod omap44xx_mmc5_hwmod = {
1991         .name           = "mmc5",
1992         .class          = &omap44xx_mmc_hwmod_class,
1993         .clkdm_name     = "l4_per_clkdm",
1994         .main_clk       = "func_48m_fclk",
1995         .prcm = {
1996                 .omap4 = {
1997                         .clkctrl_offs = OMAP4_CM_L4PER_MMCSD5_CLKCTRL_OFFSET,
1998                         .context_offs = OMAP4_RM_L4PER_MMCSD5_CONTEXT_OFFSET,
1999                         .modulemode   = MODULEMODE_SWCTRL,
2000                 },
2001         },
2002 };
2003
2004 /*
2005  * 'mmu' class
2006  * The memory management unit performs virtual to physical address translation
2007  * for its requestors.
2008  */
2009
2010 static struct omap_hwmod_class_sysconfig mmu_sysc = {
2011         .rev_offs       = 0x000,
2012         .sysc_offs      = 0x010,
2013         .syss_offs      = 0x014,
2014         .sysc_flags     = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
2015                            SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE),
2016         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
2017         .sysc_fields    = &omap_hwmod_sysc_type1,
2018 };
2019
2020 static struct omap_hwmod_class omap44xx_mmu_hwmod_class = {
2021         .name = "mmu",
2022         .sysc = &mmu_sysc,
2023 };
2024
2025 /* mmu ipu */
2026
2027 static struct omap_hwmod omap44xx_mmu_ipu_hwmod;
2028 static struct omap_hwmod_rst_info omap44xx_mmu_ipu_resets[] = {
2029         { .name = "mmu_cache", .rst_shift = 2 },
2030 };
2031
2032 /* l3_main_2 -> mmu_ipu */
2033 static struct omap_hwmod_ocp_if omap44xx_l3_main_2__mmu_ipu = {
2034         .master         = &omap44xx_l3_main_2_hwmod,
2035         .slave          = &omap44xx_mmu_ipu_hwmod,
2036         .clk            = "l3_div_ck",
2037         .user           = OCP_USER_MPU | OCP_USER_SDMA,
2038 };
2039
2040 static struct omap_hwmod omap44xx_mmu_ipu_hwmod = {
2041         .name           = "mmu_ipu",
2042         .class          = &omap44xx_mmu_hwmod_class,
2043         .clkdm_name     = "ducati_clkdm",
2044         .rst_lines      = omap44xx_mmu_ipu_resets,
2045         .rst_lines_cnt  = ARRAY_SIZE(omap44xx_mmu_ipu_resets),
2046         .main_clk       = "ducati_clk_mux_ck",
2047         .prcm = {
2048                 .omap4 = {
2049                         .clkctrl_offs = OMAP4_CM_DUCATI_DUCATI_CLKCTRL_OFFSET,
2050                         .rstctrl_offs = OMAP4_RM_DUCATI_RSTCTRL_OFFSET,
2051                         .context_offs = OMAP4_RM_DUCATI_DUCATI_CONTEXT_OFFSET,
2052                         .modulemode   = MODULEMODE_HWCTRL,
2053                 },
2054         },
2055 };
2056
2057 /* mmu dsp */
2058
2059 static struct omap_hwmod omap44xx_mmu_dsp_hwmod;
2060 static struct omap_hwmod_rst_info omap44xx_mmu_dsp_resets[] = {
2061         { .name = "mmu_cache", .rst_shift = 1 },
2062 };
2063
2064 /* l4_cfg -> dsp */
2065 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__mmu_dsp = {
2066         .master         = &omap44xx_l4_cfg_hwmod,
2067         .slave          = &omap44xx_mmu_dsp_hwmod,
2068         .clk            = "l4_div_ck",
2069         .user           = OCP_USER_MPU | OCP_USER_SDMA,
2070 };
2071
2072 static struct omap_hwmod omap44xx_mmu_dsp_hwmod = {
2073         .name           = "mmu_dsp",
2074         .class          = &omap44xx_mmu_hwmod_class,
2075         .clkdm_name     = "tesla_clkdm",
2076         .rst_lines      = omap44xx_mmu_dsp_resets,
2077         .rst_lines_cnt  = ARRAY_SIZE(omap44xx_mmu_dsp_resets),
2078         .main_clk       = "dpll_iva_m4x2_ck",
2079         .prcm = {
2080                 .omap4 = {
2081                         .clkctrl_offs = OMAP4_CM_TESLA_TESLA_CLKCTRL_OFFSET,
2082                         .rstctrl_offs = OMAP4_RM_TESLA_RSTCTRL_OFFSET,
2083                         .context_offs = OMAP4_RM_TESLA_TESLA_CONTEXT_OFFSET,
2084                         .modulemode   = MODULEMODE_HWCTRL,
2085                 },
2086         },
2087 };
2088
2089 /*
2090  * 'mpu' class
2091  * mpu sub-system
2092  */
2093
2094 static struct omap_hwmod_class omap44xx_mpu_hwmod_class = {
2095         .name   = "mpu",
2096 };
2097
2098 /* mpu */
2099 static struct omap_hwmod omap44xx_mpu_hwmod = {
2100         .name           = "mpu",
2101         .class          = &omap44xx_mpu_hwmod_class,
2102         .clkdm_name     = "mpuss_clkdm",
2103         .flags          = HWMOD_INIT_NO_IDLE,
2104         .main_clk       = "dpll_mpu_m2_ck",
2105         .prcm = {
2106                 .omap4 = {
2107                         .clkctrl_offs = OMAP4_CM_MPU_MPU_CLKCTRL_OFFSET,
2108                         .context_offs = OMAP4_RM_MPU_MPU_CONTEXT_OFFSET,
2109                 },
2110         },
2111 };
2112
2113 /*
2114  * 'ocmc_ram' class
2115  * top-level core on-chip ram
2116  */
2117
2118 static struct omap_hwmod_class omap44xx_ocmc_ram_hwmod_class = {
2119         .name   = "ocmc_ram",
2120 };
2121
2122 /* ocmc_ram */
2123 static struct omap_hwmod omap44xx_ocmc_ram_hwmod = {
2124         .name           = "ocmc_ram",
2125         .class          = &omap44xx_ocmc_ram_hwmod_class,
2126         .clkdm_name     = "l3_2_clkdm",
2127         .prcm = {
2128                 .omap4 = {
2129                         .clkctrl_offs = OMAP4_CM_L3_2_OCMC_RAM_CLKCTRL_OFFSET,
2130                         .context_offs = OMAP4_RM_L3_2_OCMC_RAM_CONTEXT_OFFSET,
2131                 },
2132         },
2133 };
2134
2135 /*
2136  * 'ocp2scp' class
2137  * bridge to transform ocp interface protocol to scp (serial control port)
2138  * protocol
2139  */
2140
2141 static struct omap_hwmod_class_sysconfig omap44xx_ocp2scp_sysc = {
2142         .rev_offs       = 0x0000,
2143         .sysc_offs      = 0x0010,
2144         .syss_offs      = 0x0014,
2145         .sysc_flags     = (SYSC_HAS_AUTOIDLE | SYSC_HAS_SIDLEMODE |
2146                            SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
2147         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
2148         .sysc_fields    = &omap_hwmod_sysc_type1,
2149 };
2150
2151 static struct omap_hwmod_class omap44xx_ocp2scp_hwmod_class = {
2152         .name   = "ocp2scp",
2153         .sysc   = &omap44xx_ocp2scp_sysc,
2154 };
2155
2156 /* ocp2scp_usb_phy */
2157 static struct omap_hwmod omap44xx_ocp2scp_usb_phy_hwmod = {
2158         .name           = "ocp2scp_usb_phy",
2159         .class          = &omap44xx_ocp2scp_hwmod_class,
2160         .clkdm_name     = "l3_init_clkdm",
2161         /*
2162          * ocp2scp_usb_phy_phy_48m is provided by the OMAP4 PRCM IP
2163          * block as an "optional clock," and normally should never be
2164          * specified as the main_clk for an OMAP IP block.  However it
2165          * turns out that this clock is actually the main clock for
2166          * the ocp2scp_usb_phy IP block:
2167          * http://lists.infradead.org/pipermail/linux-arm-kernel/2012-September/119943.html
2168          * So listing ocp2scp_usb_phy_phy_48m as a main_clk here seems
2169          * to be the best workaround.
2170          */
2171         .main_clk       = "ocp2scp_usb_phy_phy_48m",
2172         .prcm = {
2173                 .omap4 = {
2174                         .clkctrl_offs = OMAP4_CM_L3INIT_USBPHYOCP2SCP_CLKCTRL_OFFSET,
2175                         .context_offs = OMAP4_RM_L3INIT_USBPHYOCP2SCP_CONTEXT_OFFSET,
2176                         .modulemode   = MODULEMODE_HWCTRL,
2177                 },
2178         },
2179 };
2180
2181 /*
2182  * 'prcm' class
2183  * power and reset manager (part of the prcm infrastructure) + clock manager 2
2184  * + clock manager 1 (in always on power domain) + local prm in mpu
2185  */
2186
2187 static struct omap_hwmod_class omap44xx_prcm_hwmod_class = {
2188         .name   = "prcm",
2189 };
2190
2191 /* prcm_mpu */
2192 static struct omap_hwmod omap44xx_prcm_mpu_hwmod = {
2193         .name           = "prcm_mpu",
2194         .class          = &omap44xx_prcm_hwmod_class,
2195         .clkdm_name     = "l4_wkup_clkdm",
2196         .flags          = HWMOD_NO_IDLEST,
2197         .prcm = {
2198                 .omap4 = {
2199                         .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
2200                 },
2201         },
2202 };
2203
2204 /* cm_core_aon */
2205 static struct omap_hwmod omap44xx_cm_core_aon_hwmod = {
2206         .name           = "cm_core_aon",
2207         .class          = &omap44xx_prcm_hwmod_class,
2208         .flags          = HWMOD_NO_IDLEST,
2209         .prcm = {
2210                 .omap4 = {
2211                         .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
2212                 },
2213         },
2214 };
2215
2216 /* cm_core */
2217 static struct omap_hwmod omap44xx_cm_core_hwmod = {
2218         .name           = "cm_core",
2219         .class          = &omap44xx_prcm_hwmod_class,
2220         .flags          = HWMOD_NO_IDLEST,
2221         .prcm = {
2222                 .omap4 = {
2223                         .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
2224                 },
2225         },
2226 };
2227
2228 /* prm */
2229 static struct omap_hwmod_rst_info omap44xx_prm_resets[] = {
2230         { .name = "rst_global_warm_sw", .rst_shift = 0 },
2231         { .name = "rst_global_cold_sw", .rst_shift = 1 },
2232 };
2233
2234 static struct omap_hwmod omap44xx_prm_hwmod = {
2235         .name           = "prm",
2236         .class          = &omap44xx_prcm_hwmod_class,
2237         .rst_lines      = omap44xx_prm_resets,
2238         .rst_lines_cnt  = ARRAY_SIZE(omap44xx_prm_resets),
2239 };
2240
2241 /*
2242  * 'scrm' class
2243  * system clock and reset manager
2244  */
2245
2246 static struct omap_hwmod_class omap44xx_scrm_hwmod_class = {
2247         .name   = "scrm",
2248 };
2249
2250 /* scrm */
2251 static struct omap_hwmod omap44xx_scrm_hwmod = {
2252         .name           = "scrm",
2253         .class          = &omap44xx_scrm_hwmod_class,
2254         .clkdm_name     = "l4_wkup_clkdm",
2255         .prcm = {
2256                 .omap4 = {
2257                         .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
2258                 },
2259         },
2260 };
2261
2262 /*
2263  * 'sl2if' class
2264  * shared level 2 memory interface
2265  */
2266
2267 static struct omap_hwmod_class omap44xx_sl2if_hwmod_class = {
2268         .name   = "sl2if",
2269 };
2270
2271 /* sl2if */
2272 static struct omap_hwmod omap44xx_sl2if_hwmod = {
2273         .name           = "sl2if",
2274         .class          = &omap44xx_sl2if_hwmod_class,
2275         .clkdm_name     = "ivahd_clkdm",
2276         .prcm = {
2277                 .omap4 = {
2278                         .clkctrl_offs = OMAP4_CM_IVAHD_SL2_CLKCTRL_OFFSET,
2279                         .context_offs = OMAP4_RM_IVAHD_SL2_CONTEXT_OFFSET,
2280                         .modulemode   = MODULEMODE_HWCTRL,
2281                 },
2282         },
2283 };
2284
2285 /*
2286  * 'slimbus' class
2287  * bidirectional, multi-drop, multi-channel two-line serial interface between
2288  * the device and external components
2289  */
2290
2291 static struct omap_hwmod_class_sysconfig omap44xx_slimbus_sysc = {
2292         .rev_offs       = 0x0000,
2293         .sysc_offs      = 0x0010,
2294         .sysc_flags     = (SYSC_HAS_RESET_STATUS | SYSC_HAS_SIDLEMODE |
2295                            SYSC_HAS_SOFTRESET),
2296         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
2297                            SIDLE_SMART_WKUP),
2298         .sysc_fields    = &omap_hwmod_sysc_type2,
2299 };
2300
2301 static struct omap_hwmod_class omap44xx_slimbus_hwmod_class = {
2302         .name   = "slimbus",
2303         .sysc   = &omap44xx_slimbus_sysc,
2304 };
2305
2306 /* slimbus1 */
2307 static struct omap_hwmod_opt_clk slimbus1_opt_clks[] = {
2308         { .role = "fclk_1", .clk = "slimbus1_fclk_1" },
2309         { .role = "fclk_0", .clk = "slimbus1_fclk_0" },
2310         { .role = "fclk_2", .clk = "slimbus1_fclk_2" },
2311         { .role = "slimbus_clk", .clk = "slimbus1_slimbus_clk" },
2312 };
2313
2314 static struct omap_hwmod omap44xx_slimbus1_hwmod = {
2315         .name           = "slimbus1",
2316         .class          = &omap44xx_slimbus_hwmod_class,
2317         .clkdm_name     = "abe_clkdm",
2318         .prcm = {
2319                 .omap4 = {
2320                         .clkctrl_offs = OMAP4_CM1_ABE_SLIMBUS_CLKCTRL_OFFSET,
2321                         .context_offs = OMAP4_RM_ABE_SLIMBUS_CONTEXT_OFFSET,
2322                         .modulemode   = MODULEMODE_SWCTRL,
2323                 },
2324         },
2325         .opt_clks       = slimbus1_opt_clks,
2326         .opt_clks_cnt   = ARRAY_SIZE(slimbus1_opt_clks),
2327 };
2328
2329 /* slimbus2 */
2330 static struct omap_hwmod_opt_clk slimbus2_opt_clks[] = {
2331         { .role = "fclk_1", .clk = "slimbus2_fclk_1" },
2332         { .role = "fclk_0", .clk = "slimbus2_fclk_0" },
2333         { .role = "slimbus_clk", .clk = "slimbus2_slimbus_clk" },
2334 };
2335
2336 static struct omap_hwmod omap44xx_slimbus2_hwmod = {
2337         .name           = "slimbus2",
2338         .class          = &omap44xx_slimbus_hwmod_class,
2339         .clkdm_name     = "l4_per_clkdm",
2340         .prcm = {
2341                 .omap4 = {
2342                         .clkctrl_offs = OMAP4_CM_L4PER_SLIMBUS2_CLKCTRL_OFFSET,
2343                         .context_offs = OMAP4_RM_L4PER_SLIMBUS2_CONTEXT_OFFSET,
2344                         .modulemode   = MODULEMODE_SWCTRL,
2345                 },
2346         },
2347         .opt_clks       = slimbus2_opt_clks,
2348         .opt_clks_cnt   = ARRAY_SIZE(slimbus2_opt_clks),
2349 };
2350
2351 /*
2352  * 'smartreflex' class
2353  * smartreflex module (monitor silicon performance and outputs a measure of
2354  * performance error)
2355  */
2356
2357 /* The IP is not compliant to type1 / type2 scheme */
2358 static struct omap_hwmod_class_sysconfig omap44xx_smartreflex_sysc = {
2359         .rev_offs       = -ENODEV,
2360         .sysc_offs      = 0x0038,
2361         .sysc_flags     = (SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE),
2362         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
2363                            SIDLE_SMART_WKUP),
2364         .sysc_fields    = &omap36xx_sr_sysc_fields,
2365 };
2366
2367 static struct omap_hwmod_class omap44xx_smartreflex_hwmod_class = {
2368         .name   = "smartreflex",
2369         .sysc   = &omap44xx_smartreflex_sysc,
2370         .rev    = 2,
2371 };
2372
2373 /* smartreflex_core */
2374 static struct omap_smartreflex_dev_attr smartreflex_core_dev_attr = {
2375         .sensor_voltdm_name   = "core",
2376 };
2377
2378 static struct omap_hwmod omap44xx_smartreflex_core_hwmod = {
2379         .name           = "smartreflex_core",
2380         .class          = &omap44xx_smartreflex_hwmod_class,
2381         .clkdm_name     = "l4_ao_clkdm",
2382
2383         .main_clk       = "smartreflex_core_fck",
2384         .prcm = {
2385                 .omap4 = {
2386                         .clkctrl_offs = OMAP4_CM_ALWON_SR_CORE_CLKCTRL_OFFSET,
2387                         .context_offs = OMAP4_RM_ALWON_SR_CORE_CONTEXT_OFFSET,
2388                         .modulemode   = MODULEMODE_SWCTRL,
2389                 },
2390         },
2391         .dev_attr       = &smartreflex_core_dev_attr,
2392 };
2393
2394 /* smartreflex_iva */
2395 static struct omap_smartreflex_dev_attr smartreflex_iva_dev_attr = {
2396         .sensor_voltdm_name     = "iva",
2397 };
2398
2399 static struct omap_hwmod omap44xx_smartreflex_iva_hwmod = {
2400         .name           = "smartreflex_iva",
2401         .class          = &omap44xx_smartreflex_hwmod_class,
2402         .clkdm_name     = "l4_ao_clkdm",
2403         .main_clk       = "smartreflex_iva_fck",
2404         .prcm = {
2405                 .omap4 = {
2406                         .clkctrl_offs = OMAP4_CM_ALWON_SR_IVA_CLKCTRL_OFFSET,
2407                         .context_offs = OMAP4_RM_ALWON_SR_IVA_CONTEXT_OFFSET,
2408                         .modulemode   = MODULEMODE_SWCTRL,
2409                 },
2410         },
2411         .dev_attr       = &smartreflex_iva_dev_attr,
2412 };
2413
2414 /* smartreflex_mpu */
2415 static struct omap_smartreflex_dev_attr smartreflex_mpu_dev_attr = {
2416         .sensor_voltdm_name     = "mpu",
2417 };
2418
2419 static struct omap_hwmod omap44xx_smartreflex_mpu_hwmod = {
2420         .name           = "smartreflex_mpu",
2421         .class          = &omap44xx_smartreflex_hwmod_class,
2422         .clkdm_name     = "l4_ao_clkdm",
2423         .main_clk       = "smartreflex_mpu_fck",
2424         .prcm = {
2425                 .omap4 = {
2426                         .clkctrl_offs = OMAP4_CM_ALWON_SR_MPU_CLKCTRL_OFFSET,
2427                         .context_offs = OMAP4_RM_ALWON_SR_MPU_CONTEXT_OFFSET,
2428                         .modulemode   = MODULEMODE_SWCTRL,
2429                 },
2430         },
2431         .dev_attr       = &smartreflex_mpu_dev_attr,
2432 };
2433
2434 /*
2435  * 'spinlock' class
2436  * spinlock provides hardware assistance for synchronizing the processes
2437  * running on multiple processors
2438  */
2439
2440 static struct omap_hwmod_class_sysconfig omap44xx_spinlock_sysc = {
2441         .rev_offs       = 0x0000,
2442         .sysc_offs      = 0x0010,
2443         .syss_offs      = 0x0014,
2444         .sysc_flags     = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
2445                            SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE |
2446                            SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
2447         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
2448         .sysc_fields    = &omap_hwmod_sysc_type1,
2449 };
2450
2451 static struct omap_hwmod_class omap44xx_spinlock_hwmod_class = {
2452         .name   = "spinlock",
2453         .sysc   = &omap44xx_spinlock_sysc,
2454 };
2455
2456 /* spinlock */
2457 static struct omap_hwmod omap44xx_spinlock_hwmod = {
2458         .name           = "spinlock",
2459         .class          = &omap44xx_spinlock_hwmod_class,
2460         .clkdm_name     = "l4_cfg_clkdm",
2461         .prcm = {
2462                 .omap4 = {
2463                         .clkctrl_offs = OMAP4_CM_L4CFG_HW_SEM_CLKCTRL_OFFSET,
2464                         .context_offs = OMAP4_RM_L4CFG_HW_SEM_CONTEXT_OFFSET,
2465                 },
2466         },
2467 };
2468
2469 /*
2470  * 'timer' class
2471  * general purpose timer module with accurate 1ms tick
2472  * This class contains several variants: ['timer_1ms', 'timer']
2473  */
2474
2475 static struct omap_hwmod_class_sysconfig omap44xx_timer_1ms_sysc = {
2476         .rev_offs       = 0x0000,
2477         .sysc_offs      = 0x0010,
2478         .syss_offs      = 0x0014,
2479         .sysc_flags     = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
2480                            SYSC_HAS_EMUFREE | SYSC_HAS_ENAWAKEUP |
2481                            SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
2482                            SYSS_HAS_RESET_STATUS),
2483         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
2484         .sysc_fields    = &omap_hwmod_sysc_type1,
2485 };
2486
2487 static struct omap_hwmod_class omap44xx_timer_1ms_hwmod_class = {
2488         .name   = "timer",
2489         .sysc   = &omap44xx_timer_1ms_sysc,
2490 };
2491
2492 static struct omap_hwmod_class_sysconfig omap44xx_timer_sysc = {
2493         .rev_offs       = 0x0000,
2494         .sysc_offs      = 0x0010,
2495         .sysc_flags     = (SYSC_HAS_EMUFREE | SYSC_HAS_RESET_STATUS |
2496                            SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
2497         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
2498                            SIDLE_SMART_WKUP),
2499         .sysc_fields    = &omap_hwmod_sysc_type2,
2500 };
2501
2502 static struct omap_hwmod_class omap44xx_timer_hwmod_class = {
2503         .name   = "timer",
2504         .sysc   = &omap44xx_timer_sysc,
2505 };
2506
2507 /* timer1 */
2508 static struct omap_hwmod omap44xx_timer1_hwmod = {
2509         .name           = "timer1",
2510         .class          = &omap44xx_timer_1ms_hwmod_class,
2511         .clkdm_name     = "l4_wkup_clkdm",
2512         .flags          = HWMOD_SET_DEFAULT_CLOCKACT,
2513         .main_clk       = "dmt1_clk_mux",
2514         .prcm = {
2515                 .omap4 = {
2516                         .clkctrl_offs = OMAP4_CM_WKUP_TIMER1_CLKCTRL_OFFSET,
2517                         .context_offs = OMAP4_RM_WKUP_TIMER1_CONTEXT_OFFSET,
2518                         .modulemode   = MODULEMODE_SWCTRL,
2519                 },
2520         },
2521 };
2522
2523 /* timer2 */
2524 static struct omap_hwmod omap44xx_timer2_hwmod = {
2525         .name           = "timer2",
2526         .class          = &omap44xx_timer_1ms_hwmod_class,
2527         .clkdm_name     = "l4_per_clkdm",
2528         .flags          = HWMOD_SET_DEFAULT_CLOCKACT,
2529         .main_clk       = "cm2_dm2_mux",
2530         .prcm = {
2531                 .omap4 = {
2532                         .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER2_CLKCTRL_OFFSET,
2533                         .context_offs = OMAP4_RM_L4PER_DMTIMER2_CONTEXT_OFFSET,
2534                         .modulemode   = MODULEMODE_SWCTRL,
2535                 },
2536         },
2537 };
2538
2539 /* timer3 */
2540 static struct omap_hwmod omap44xx_timer3_hwmod = {
2541         .name           = "timer3",
2542         .class          = &omap44xx_timer_hwmod_class,
2543         .clkdm_name     = "l4_per_clkdm",
2544         .main_clk       = "cm2_dm3_mux",
2545         .prcm = {
2546                 .omap4 = {
2547                         .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER3_CLKCTRL_OFFSET,
2548                         .context_offs = OMAP4_RM_L4PER_DMTIMER3_CONTEXT_OFFSET,
2549                         .modulemode   = MODULEMODE_SWCTRL,
2550                 },
2551         },
2552 };
2553
2554 /* timer4 */
2555 static struct omap_hwmod omap44xx_timer4_hwmod = {
2556         .name           = "timer4",
2557         .class          = &omap44xx_timer_hwmod_class,
2558         .clkdm_name     = "l4_per_clkdm",
2559         .main_clk       = "cm2_dm4_mux",
2560         .prcm = {
2561                 .omap4 = {
2562                         .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER4_CLKCTRL_OFFSET,
2563                         .context_offs = OMAP4_RM_L4PER_DMTIMER4_CONTEXT_OFFSET,
2564                         .modulemode   = MODULEMODE_SWCTRL,
2565                 },
2566         },
2567 };
2568
2569 /* timer5 */
2570 static struct omap_hwmod omap44xx_timer5_hwmod = {
2571         .name           = "timer5",
2572         .class          = &omap44xx_timer_hwmod_class,
2573         .clkdm_name     = "abe_clkdm",
2574         .main_clk       = "timer5_sync_mux",
2575         .prcm = {
2576                 .omap4 = {
2577                         .clkctrl_offs = OMAP4_CM1_ABE_TIMER5_CLKCTRL_OFFSET,
2578                         .context_offs = OMAP4_RM_ABE_TIMER5_CONTEXT_OFFSET,
2579                         .modulemode   = MODULEMODE_SWCTRL,
2580                 },
2581         },
2582 };
2583
2584 /* timer6 */
2585 static struct omap_hwmod omap44xx_timer6_hwmod = {
2586         .name           = "timer6",
2587         .class          = &omap44xx_timer_hwmod_class,
2588         .clkdm_name     = "abe_clkdm",
2589         .main_clk       = "timer6_sync_mux",
2590         .prcm = {
2591                 .omap4 = {
2592                         .clkctrl_offs = OMAP4_CM1_ABE_TIMER6_CLKCTRL_OFFSET,
2593                         .context_offs = OMAP4_RM_ABE_TIMER6_CONTEXT_OFFSET,
2594                         .modulemode   = MODULEMODE_SWCTRL,
2595                 },
2596         },
2597 };
2598
2599 /* timer7 */
2600 static struct omap_hwmod omap44xx_timer7_hwmod = {
2601         .name           = "timer7",
2602         .class          = &omap44xx_timer_hwmod_class,
2603         .clkdm_name     = "abe_clkdm",
2604         .main_clk       = "timer7_sync_mux",
2605         .prcm = {
2606                 .omap4 = {
2607                         .clkctrl_offs = OMAP4_CM1_ABE_TIMER7_CLKCTRL_OFFSET,
2608                         .context_offs = OMAP4_RM_ABE_TIMER7_CONTEXT_OFFSET,
2609                         .modulemode   = MODULEMODE_SWCTRL,
2610                 },
2611         },
2612 };
2613
2614 /* timer8 */
2615 static struct omap_hwmod omap44xx_timer8_hwmod = {
2616         .name           = "timer8",
2617         .class          = &omap44xx_timer_hwmod_class,
2618         .clkdm_name     = "abe_clkdm",
2619         .main_clk       = "timer8_sync_mux",
2620         .prcm = {
2621                 .omap4 = {
2622                         .clkctrl_offs = OMAP4_CM1_ABE_TIMER8_CLKCTRL_OFFSET,
2623                         .context_offs = OMAP4_RM_ABE_TIMER8_CONTEXT_OFFSET,
2624                         .modulemode   = MODULEMODE_SWCTRL,
2625                 },
2626         },
2627 };
2628
2629 /* timer9 */
2630 static struct omap_hwmod omap44xx_timer9_hwmod = {
2631         .name           = "timer9",
2632         .class          = &omap44xx_timer_hwmod_class,
2633         .clkdm_name     = "l4_per_clkdm",
2634         .main_clk       = "cm2_dm9_mux",
2635         .prcm = {
2636                 .omap4 = {
2637                         .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER9_CLKCTRL_OFFSET,
2638                         .context_offs = OMAP4_RM_L4PER_DMTIMER9_CONTEXT_OFFSET,
2639                         .modulemode   = MODULEMODE_SWCTRL,
2640                 },
2641         },
2642 };
2643
2644 /* timer10 */
2645 static struct omap_hwmod omap44xx_timer10_hwmod = {
2646         .name           = "timer10",
2647         .class          = &omap44xx_timer_1ms_hwmod_class,
2648         .clkdm_name     = "l4_per_clkdm",
2649         .flags          = HWMOD_SET_DEFAULT_CLOCKACT,
2650         .main_clk       = "cm2_dm10_mux",
2651         .prcm = {
2652                 .omap4 = {
2653                         .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER10_CLKCTRL_OFFSET,
2654                         .context_offs = OMAP4_RM_L4PER_DMTIMER10_CONTEXT_OFFSET,
2655                         .modulemode   = MODULEMODE_SWCTRL,
2656                 },
2657         },
2658 };
2659
2660 /* timer11 */
2661 static struct omap_hwmod omap44xx_timer11_hwmod = {
2662         .name           = "timer11",
2663         .class          = &omap44xx_timer_hwmod_class,
2664         .clkdm_name     = "l4_per_clkdm",
2665         .main_clk       = "cm2_dm11_mux",
2666         .prcm = {
2667                 .omap4 = {
2668                         .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER11_CLKCTRL_OFFSET,
2669                         .context_offs = OMAP4_RM_L4PER_DMTIMER11_CONTEXT_OFFSET,
2670                         .modulemode   = MODULEMODE_SWCTRL,
2671                 },
2672         },
2673 };
2674
2675 /*
2676  * 'uart' class
2677  * universal asynchronous receiver/transmitter (uart)
2678  */
2679
2680 static struct omap_hwmod_class_sysconfig omap44xx_uart_sysc = {
2681         .rev_offs       = 0x0050,
2682         .sysc_offs      = 0x0054,
2683         .syss_offs      = 0x0058,
2684         .sysc_flags     = (SYSC_HAS_AUTOIDLE | SYSC_HAS_ENAWAKEUP |
2685                            SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
2686                            SYSS_HAS_RESET_STATUS),
2687         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
2688                            SIDLE_SMART_WKUP),
2689         .sysc_fields    = &omap_hwmod_sysc_type1,
2690 };
2691
2692 static struct omap_hwmod_class omap44xx_uart_hwmod_class = {
2693         .name   = "uart",
2694         .sysc   = &omap44xx_uart_sysc,
2695 };
2696
2697 /* uart1 */
2698 static struct omap_hwmod omap44xx_uart1_hwmod = {
2699         .name           = "uart1",
2700         .class          = &omap44xx_uart_hwmod_class,
2701         .clkdm_name     = "l4_per_clkdm",
2702         .flags          = HWMOD_SWSUP_SIDLE_ACT,
2703         .main_clk       = "func_48m_fclk",
2704         .prcm = {
2705                 .omap4 = {
2706                         .clkctrl_offs = OMAP4_CM_L4PER_UART1_CLKCTRL_OFFSET,
2707                         .context_offs = OMAP4_RM_L4PER_UART1_CONTEXT_OFFSET,
2708                         .modulemode   = MODULEMODE_SWCTRL,
2709                 },
2710         },
2711 };
2712
2713 /* uart2 */
2714 static struct omap_hwmod omap44xx_uart2_hwmod = {
2715         .name           = "uart2",
2716         .class          = &omap44xx_uart_hwmod_class,
2717         .clkdm_name     = "l4_per_clkdm",
2718         .flags          = HWMOD_SWSUP_SIDLE_ACT,
2719         .main_clk       = "func_48m_fclk",
2720         .prcm = {
2721                 .omap4 = {
2722                         .clkctrl_offs = OMAP4_CM_L4PER_UART2_CLKCTRL_OFFSET,
2723                         .context_offs = OMAP4_RM_L4PER_UART2_CONTEXT_OFFSET,
2724                         .modulemode   = MODULEMODE_SWCTRL,
2725                 },
2726         },
2727 };
2728
2729 /* uart3 */
2730 static struct omap_hwmod omap44xx_uart3_hwmod = {
2731         .name           = "uart3",
2732         .class          = &omap44xx_uart_hwmod_class,
2733         .clkdm_name     = "l4_per_clkdm",
2734         .flags          = DEBUG_OMAP4UART3_FLAGS | HWMOD_SWSUP_SIDLE_ACT,
2735         .main_clk       = "func_48m_fclk",
2736         .prcm = {
2737                 .omap4 = {
2738                         .clkctrl_offs = OMAP4_CM_L4PER_UART3_CLKCTRL_OFFSET,
2739                         .context_offs = OMAP4_RM_L4PER_UART3_CONTEXT_OFFSET,
2740                         .modulemode   = MODULEMODE_SWCTRL,
2741                 },
2742         },
2743 };
2744
2745 /* uart4 */
2746 static struct omap_hwmod omap44xx_uart4_hwmod = {
2747         .name           = "uart4",
2748         .class          = &omap44xx_uart_hwmod_class,
2749         .clkdm_name     = "l4_per_clkdm",
2750         .flags          = DEBUG_OMAP4UART4_FLAGS | HWMOD_SWSUP_SIDLE_ACT,
2751         .main_clk       = "func_48m_fclk",
2752         .prcm = {
2753                 .omap4 = {
2754                         .clkctrl_offs = OMAP4_CM_L4PER_UART4_CLKCTRL_OFFSET,
2755                         .context_offs = OMAP4_RM_L4PER_UART4_CONTEXT_OFFSET,
2756                         .modulemode   = MODULEMODE_SWCTRL,
2757                 },
2758         },
2759 };
2760
2761 /*
2762  * 'usb_host_fs' class
2763  * full-speed usb host controller
2764  */
2765
2766 /* The IP is not compliant to type1 / type2 scheme */
2767 static struct omap_hwmod_class_sysconfig omap44xx_usb_host_fs_sysc = {
2768         .rev_offs       = 0x0000,
2769         .sysc_offs      = 0x0210,
2770         .sysc_flags     = (SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE |
2771                            SYSC_HAS_SOFTRESET),
2772         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
2773                            SIDLE_SMART_WKUP),
2774         .sysc_fields    = &omap_hwmod_sysc_type_usb_host_fs,
2775 };
2776
2777 static struct omap_hwmod_class omap44xx_usb_host_fs_hwmod_class = {
2778         .name   = "usb_host_fs",
2779         .sysc   = &omap44xx_usb_host_fs_sysc,
2780 };
2781
2782 /* usb_host_fs */
2783 static struct omap_hwmod omap44xx_usb_host_fs_hwmod = {
2784         .name           = "usb_host_fs",
2785         .class          = &omap44xx_usb_host_fs_hwmod_class,
2786         .clkdm_name     = "l3_init_clkdm",
2787         .main_clk       = "usb_host_fs_fck",
2788         .prcm = {
2789                 .omap4 = {
2790                         .clkctrl_offs = OMAP4_CM_L3INIT_USB_HOST_FS_CLKCTRL_OFFSET,
2791                         .context_offs = OMAP4_RM_L3INIT_USB_HOST_FS_CONTEXT_OFFSET,
2792                         .modulemode   = MODULEMODE_SWCTRL,
2793                 },
2794         },
2795 };
2796
2797 /*
2798  * 'usb_host_hs' class
2799  * high-speed multi-port usb host controller
2800  */
2801
2802 static struct omap_hwmod_class_sysconfig omap44xx_usb_host_hs_sysc = {
2803         .rev_offs       = 0x0000,
2804         .sysc_offs      = 0x0010,
2805         .syss_offs      = 0x0014,
2806         .sysc_flags     = (SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE |
2807                            SYSC_HAS_SOFTRESET | SYSC_HAS_RESET_STATUS),
2808         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
2809                            SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
2810                            MSTANDBY_SMART | MSTANDBY_SMART_WKUP),
2811         .sysc_fields    = &omap_hwmod_sysc_type2,
2812 };
2813
2814 static struct omap_hwmod_class omap44xx_usb_host_hs_hwmod_class = {
2815         .name   = "usb_host_hs",
2816         .sysc   = &omap44xx_usb_host_hs_sysc,
2817 };
2818
2819 /* usb_host_hs */
2820 static struct omap_hwmod omap44xx_usb_host_hs_hwmod = {
2821         .name           = "usb_host_hs",
2822         .class          = &omap44xx_usb_host_hs_hwmod_class,
2823         .clkdm_name     = "l3_init_clkdm",
2824         .main_clk       = "usb_host_hs_fck",
2825         .prcm = {
2826                 .omap4 = {
2827                         .clkctrl_offs = OMAP4_CM_L3INIT_USB_HOST_CLKCTRL_OFFSET,
2828                         .context_offs = OMAP4_RM_L3INIT_USB_HOST_CONTEXT_OFFSET,
2829                         .modulemode   = MODULEMODE_SWCTRL,
2830                 },
2831         },
2832
2833         /*
2834          * Errata: USBHOST Configured In Smart-Idle Can Lead To a Deadlock
2835          * id: i660
2836          *
2837          * Description:
2838          * In the following configuration :
2839          * - USBHOST module is set to smart-idle mode
2840          * - PRCM asserts idle_req to the USBHOST module ( This typically
2841          *   happens when the system is going to a low power mode : all ports
2842          *   have been suspended, the master part of the USBHOST module has
2843          *   entered the standby state, and SW has cut the functional clocks)
2844          * - an USBHOST interrupt occurs before the module is able to answer
2845          *   idle_ack, typically a remote wakeup IRQ.
2846          * Then the USB HOST module will enter a deadlock situation where it
2847          * is no more accessible nor functional.
2848          *
2849          * Workaround:
2850          * Don't use smart idle; use only force idle, hence HWMOD_SWSUP_SIDLE
2851          */
2852
2853         /*
2854          * Errata: USB host EHCI may stall when entering smart-standby mode
2855          * Id: i571
2856          *
2857          * Description:
2858          * When the USBHOST module is set to smart-standby mode, and when it is
2859          * ready to enter the standby state (i.e. all ports are suspended and
2860          * all attached devices are in suspend mode), then it can wrongly assert
2861          * the Mstandby signal too early while there are still some residual OCP
2862          * transactions ongoing. If this condition occurs, the internal state
2863          * machine may go to an undefined state and the USB link may be stuck
2864          * upon the next resume.
2865          *
2866          * Workaround:
2867          * Don't use smart standby; use only force standby,
2868          * hence HWMOD_SWSUP_MSTANDBY
2869          */
2870
2871         .flags          = HWMOD_SWSUP_SIDLE | HWMOD_SWSUP_MSTANDBY,
2872 };
2873
2874 /*
2875  * 'usb_otg_hs' class
2876  * high-speed on-the-go universal serial bus (usb_otg_hs) controller
2877  */
2878
2879 static struct omap_hwmod_class_sysconfig omap44xx_usb_otg_hs_sysc = {
2880         .rev_offs       = 0x0400,
2881         .sysc_offs      = 0x0404,
2882         .syss_offs      = 0x0408,
2883         .sysc_flags     = (SYSC_HAS_AUTOIDLE | SYSC_HAS_ENAWAKEUP |
2884                            SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE |
2885                            SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
2886         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
2887                            SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
2888                            MSTANDBY_SMART),
2889         .sysc_fields    = &omap_hwmod_sysc_type1,
2890 };
2891
2892 static struct omap_hwmod_class omap44xx_usb_otg_hs_hwmod_class = {
2893         .name   = "usb_otg_hs",
2894         .sysc   = &omap44xx_usb_otg_hs_sysc,
2895 };
2896
2897 /* usb_otg_hs */
2898 static struct omap_hwmod_opt_clk usb_otg_hs_opt_clks[] = {
2899         { .role = "xclk", .clk = "usb_otg_hs_xclk" },
2900 };
2901
2902 static struct omap_hwmod omap44xx_usb_otg_hs_hwmod = {
2903         .name           = "usb_otg_hs",
2904         .class          = &omap44xx_usb_otg_hs_hwmod_class,
2905         .clkdm_name     = "l3_init_clkdm",
2906         .flags          = HWMOD_SWSUP_SIDLE | HWMOD_SWSUP_MSTANDBY,
2907         .main_clk       = "usb_otg_hs_ick",
2908         .prcm = {
2909                 .omap4 = {
2910                         .clkctrl_offs = OMAP4_CM_L3INIT_USB_OTG_CLKCTRL_OFFSET,
2911                         .context_offs = OMAP4_RM_L3INIT_USB_OTG_CONTEXT_OFFSET,
2912                         .modulemode   = MODULEMODE_HWCTRL,
2913                 },
2914         },
2915         .opt_clks       = usb_otg_hs_opt_clks,
2916         .opt_clks_cnt   = ARRAY_SIZE(usb_otg_hs_opt_clks),
2917 };
2918
2919 /*
2920  * 'usb_tll_hs' class
2921  * usb_tll_hs module is the adapter on the usb_host_hs ports
2922  */
2923
2924 static struct omap_hwmod_class_sysconfig omap44xx_usb_tll_hs_sysc = {
2925         .rev_offs       = 0x0000,
2926         .sysc_offs      = 0x0010,
2927         .syss_offs      = 0x0014,
2928         .sysc_flags     = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
2929                            SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
2930                            SYSC_HAS_AUTOIDLE),
2931         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
2932         .sysc_fields    = &omap_hwmod_sysc_type1,
2933 };
2934
2935 static struct omap_hwmod_class omap44xx_usb_tll_hs_hwmod_class = {
2936         .name   = "usb_tll_hs",
2937         .sysc   = &omap44xx_usb_tll_hs_sysc,
2938 };
2939
2940 static struct omap_hwmod omap44xx_usb_tll_hs_hwmod = {
2941         .name           = "usb_tll_hs",
2942         .class          = &omap44xx_usb_tll_hs_hwmod_class,
2943         .clkdm_name     = "l3_init_clkdm",
2944         .main_clk       = "usb_tll_hs_ick",
2945         .prcm = {
2946                 .omap4 = {
2947                         .clkctrl_offs = OMAP4_CM_L3INIT_USB_TLL_CLKCTRL_OFFSET,
2948                         .context_offs = OMAP4_RM_L3INIT_USB_TLL_CONTEXT_OFFSET,
2949                         .modulemode   = MODULEMODE_HWCTRL,
2950                 },
2951         },
2952 };
2953
2954 /*
2955  * 'wd_timer' class
2956  * 32-bit watchdog upward counter that generates a pulse on the reset pin on
2957  * overflow condition
2958  */
2959
2960 static struct omap_hwmod_class_sysconfig omap44xx_wd_timer_sysc = {
2961         .rev_offs       = 0x0000,
2962         .sysc_offs      = 0x0010,
2963         .syss_offs      = 0x0014,
2964         .sysc_flags     = (SYSC_HAS_EMUFREE | SYSC_HAS_SIDLEMODE |
2965                            SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
2966         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
2967                            SIDLE_SMART_WKUP),
2968         .sysc_fields    = &omap_hwmod_sysc_type1,
2969 };
2970
2971 static struct omap_hwmod_class omap44xx_wd_timer_hwmod_class = {
2972         .name           = "wd_timer",
2973         .sysc           = &omap44xx_wd_timer_sysc,
2974         .pre_shutdown   = &omap2_wd_timer_disable,
2975         .reset          = &omap2_wd_timer_reset,
2976 };
2977
2978 /* wd_timer2 */
2979 static struct omap_hwmod omap44xx_wd_timer2_hwmod = {
2980         .name           = "wd_timer2",
2981         .class          = &omap44xx_wd_timer_hwmod_class,
2982         .clkdm_name     = "l4_wkup_clkdm",
2983         .main_clk       = "sys_32k_ck",
2984         .prcm = {
2985                 .omap4 = {
2986                         .clkctrl_offs = OMAP4_CM_WKUP_WDT2_CLKCTRL_OFFSET,
2987                         .context_offs = OMAP4_RM_WKUP_WDT2_CONTEXT_OFFSET,
2988                         .modulemode   = MODULEMODE_SWCTRL,
2989                 },
2990         },
2991 };
2992
2993 /* wd_timer3 */
2994 static struct omap_hwmod omap44xx_wd_timer3_hwmod = {
2995         .name           = "wd_timer3",
2996         .class          = &omap44xx_wd_timer_hwmod_class,
2997         .clkdm_name     = "abe_clkdm",
2998         .main_clk       = "sys_32k_ck",
2999         .prcm = {
3000                 .omap4 = {
3001                         .clkctrl_offs = OMAP4_CM1_ABE_WDT3_CLKCTRL_OFFSET,
3002                         .context_offs = OMAP4_RM_ABE_WDT3_CONTEXT_OFFSET,
3003                         .modulemode   = MODULEMODE_SWCTRL,
3004                 },
3005         },
3006 };
3007
3008
3009 /*
3010  * interfaces
3011  */
3012
3013 /* l3_main_1 -> dmm */
3014 static struct omap_hwmod_ocp_if omap44xx_l3_main_1__dmm = {
3015         .master         = &omap44xx_l3_main_1_hwmod,
3016         .slave          = &omap44xx_dmm_hwmod,
3017         .clk            = "l3_div_ck",
3018         .user           = OCP_USER_SDMA,
3019 };
3020
3021 /* mpu -> dmm */
3022 static struct omap_hwmod_ocp_if omap44xx_mpu__dmm = {
3023         .master         = &omap44xx_mpu_hwmod,
3024         .slave          = &omap44xx_dmm_hwmod,
3025         .clk            = "l3_div_ck",
3026         .user           = OCP_USER_MPU,
3027 };
3028
3029 /* iva -> l3_instr */
3030 static struct omap_hwmod_ocp_if omap44xx_iva__l3_instr = {
3031         .master         = &omap44xx_iva_hwmod,
3032         .slave          = &omap44xx_l3_instr_hwmod,
3033         .clk            = "l3_div_ck",
3034         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3035 };
3036
3037 /* l3_main_3 -> l3_instr */
3038 static struct omap_hwmod_ocp_if omap44xx_l3_main_3__l3_instr = {
3039         .master         = &omap44xx_l3_main_3_hwmod,
3040         .slave          = &omap44xx_l3_instr_hwmod,
3041         .clk            = "l3_div_ck",
3042         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3043 };
3044
3045 /* ocp_wp_noc -> l3_instr */
3046 static struct omap_hwmod_ocp_if omap44xx_ocp_wp_noc__l3_instr = {
3047         .master         = &omap44xx_ocp_wp_noc_hwmod,
3048         .slave          = &omap44xx_l3_instr_hwmod,
3049         .clk            = "l3_div_ck",
3050         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3051 };
3052
3053 /* dsp -> l3_main_1 */
3054 static struct omap_hwmod_ocp_if omap44xx_dsp__l3_main_1 = {
3055         .master         = &omap44xx_dsp_hwmod,
3056         .slave          = &omap44xx_l3_main_1_hwmod,
3057         .clk            = "l3_div_ck",
3058         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3059 };
3060
3061 /* dss -> l3_main_1 */
3062 static struct omap_hwmod_ocp_if omap44xx_dss__l3_main_1 = {
3063         .master         = &omap44xx_dss_hwmod,
3064         .slave          = &omap44xx_l3_main_1_hwmod,
3065         .clk            = "l3_div_ck",
3066         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3067 };
3068
3069 /* l3_main_2 -> l3_main_1 */
3070 static struct omap_hwmod_ocp_if omap44xx_l3_main_2__l3_main_1 = {
3071         .master         = &omap44xx_l3_main_2_hwmod,
3072         .slave          = &omap44xx_l3_main_1_hwmod,
3073         .clk            = "l3_div_ck",
3074         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3075 };
3076
3077 /* l4_cfg -> l3_main_1 */
3078 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l3_main_1 = {
3079         .master         = &omap44xx_l4_cfg_hwmod,
3080         .slave          = &omap44xx_l3_main_1_hwmod,
3081         .clk            = "l4_div_ck",
3082         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3083 };
3084
3085 /* mmc1 -> l3_main_1 */
3086 static struct omap_hwmod_ocp_if omap44xx_mmc1__l3_main_1 = {
3087         .master         = &omap44xx_mmc1_hwmod,
3088         .slave          = &omap44xx_l3_main_1_hwmod,
3089         .clk            = "l3_div_ck",
3090         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3091 };
3092
3093 /* mmc2 -> l3_main_1 */
3094 static struct omap_hwmod_ocp_if omap44xx_mmc2__l3_main_1 = {
3095         .master         = &omap44xx_mmc2_hwmod,
3096         .slave          = &omap44xx_l3_main_1_hwmod,
3097         .clk            = "l3_div_ck",
3098         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3099 };
3100
3101 /* mpu -> l3_main_1 */
3102 static struct omap_hwmod_ocp_if omap44xx_mpu__l3_main_1 = {
3103         .master         = &omap44xx_mpu_hwmod,
3104         .slave          = &omap44xx_l3_main_1_hwmod,
3105         .clk            = "l3_div_ck",
3106         .user           = OCP_USER_MPU,
3107 };
3108
3109 /* debugss -> l3_main_2 */
3110 static struct omap_hwmod_ocp_if omap44xx_debugss__l3_main_2 = {
3111         .master         = &omap44xx_debugss_hwmod,
3112         .slave          = &omap44xx_l3_main_2_hwmod,
3113         .clk            = "dbgclk_mux_ck",
3114         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3115 };
3116
3117 /* dma_system -> l3_main_2 */
3118 static struct omap_hwmod_ocp_if omap44xx_dma_system__l3_main_2 = {
3119         .master         = &omap44xx_dma_system_hwmod,
3120         .slave          = &omap44xx_l3_main_2_hwmod,
3121         .clk            = "l3_div_ck",
3122         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3123 };
3124
3125 /* fdif -> l3_main_2 */
3126 static struct omap_hwmod_ocp_if omap44xx_fdif__l3_main_2 = {
3127         .master         = &omap44xx_fdif_hwmod,
3128         .slave          = &omap44xx_l3_main_2_hwmod,
3129         .clk            = "l3_div_ck",
3130         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3131 };
3132
3133 /* gpu -> l3_main_2 */
3134 static struct omap_hwmod_ocp_if omap44xx_gpu__l3_main_2 = {
3135         .master         = &omap44xx_gpu_hwmod,
3136         .slave          = &omap44xx_l3_main_2_hwmod,
3137         .clk            = "l3_div_ck",
3138         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3139 };
3140
3141 /* hsi -> l3_main_2 */
3142 static struct omap_hwmod_ocp_if omap44xx_hsi__l3_main_2 = {
3143         .master         = &omap44xx_hsi_hwmod,
3144         .slave          = &omap44xx_l3_main_2_hwmod,
3145         .clk            = "l3_div_ck",
3146         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3147 };
3148
3149 /* ipu -> l3_main_2 */
3150 static struct omap_hwmod_ocp_if omap44xx_ipu__l3_main_2 = {
3151         .master         = &omap44xx_ipu_hwmod,
3152         .slave          = &omap44xx_l3_main_2_hwmod,
3153         .clk            = "l3_div_ck",
3154         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3155 };
3156
3157 /* iss -> l3_main_2 */
3158 static struct omap_hwmod_ocp_if omap44xx_iss__l3_main_2 = {
3159         .master         = &omap44xx_iss_hwmod,
3160         .slave          = &omap44xx_l3_main_2_hwmod,
3161         .clk            = "l3_div_ck",
3162         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3163 };
3164
3165 /* iva -> l3_main_2 */
3166 static struct omap_hwmod_ocp_if omap44xx_iva__l3_main_2 = {
3167         .master         = &omap44xx_iva_hwmod,
3168         .slave          = &omap44xx_l3_main_2_hwmod,
3169         .clk            = "l3_div_ck",
3170         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3171 };
3172
3173 /* l3_main_1 -> l3_main_2 */
3174 static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l3_main_2 = {
3175         .master         = &omap44xx_l3_main_1_hwmod,
3176         .slave          = &omap44xx_l3_main_2_hwmod,
3177         .clk            = "l3_div_ck",
3178         .user           = OCP_USER_MPU,
3179 };
3180
3181 /* l4_cfg -> l3_main_2 */
3182 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l3_main_2 = {
3183         .master         = &omap44xx_l4_cfg_hwmod,
3184         .slave          = &omap44xx_l3_main_2_hwmod,
3185         .clk            = "l4_div_ck",
3186         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3187 };
3188
3189 /* usb_host_fs -> l3_main_2 */
3190 static struct omap_hwmod_ocp_if __maybe_unused omap44xx_usb_host_fs__l3_main_2 = {
3191         .master         = &omap44xx_usb_host_fs_hwmod,
3192         .slave          = &omap44xx_l3_main_2_hwmod,
3193         .clk            = "l3_div_ck",
3194         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3195 };
3196
3197 /* usb_host_hs -> l3_main_2 */
3198 static struct omap_hwmod_ocp_if omap44xx_usb_host_hs__l3_main_2 = {
3199         .master         = &omap44xx_usb_host_hs_hwmod,
3200         .slave          = &omap44xx_l3_main_2_hwmod,
3201         .clk            = "l3_div_ck",
3202         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3203 };
3204
3205 /* usb_otg_hs -> l3_main_2 */
3206 static struct omap_hwmod_ocp_if omap44xx_usb_otg_hs__l3_main_2 = {
3207         .master         = &omap44xx_usb_otg_hs_hwmod,
3208         .slave          = &omap44xx_l3_main_2_hwmod,
3209         .clk            = "l3_div_ck",
3210         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3211 };
3212
3213 /* l3_main_1 -> l3_main_3 */
3214 static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l3_main_3 = {
3215         .master         = &omap44xx_l3_main_1_hwmod,
3216         .slave          = &omap44xx_l3_main_3_hwmod,
3217         .clk            = "l3_div_ck",
3218         .user           = OCP_USER_MPU,
3219 };
3220
3221 /* l3_main_2 -> l3_main_3 */
3222 static struct omap_hwmod_ocp_if omap44xx_l3_main_2__l3_main_3 = {
3223         .master         = &omap44xx_l3_main_2_hwmod,
3224         .slave          = &omap44xx_l3_main_3_hwmod,
3225         .clk            = "l3_div_ck",
3226         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3227 };
3228
3229 /* l4_cfg -> l3_main_3 */
3230 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l3_main_3 = {
3231         .master         = &omap44xx_l4_cfg_hwmod,
3232         .slave          = &omap44xx_l3_main_3_hwmod,
3233         .clk            = "l4_div_ck",
3234         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3235 };
3236
3237 /* aess -> l4_abe */
3238 static struct omap_hwmod_ocp_if __maybe_unused omap44xx_aess__l4_abe = {
3239         .master         = &omap44xx_aess_hwmod,
3240         .slave          = &omap44xx_l4_abe_hwmod,
3241         .clk            = "ocp_abe_iclk",
3242         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3243 };
3244
3245 /* dsp -> l4_abe */
3246 static struct omap_hwmod_ocp_if omap44xx_dsp__l4_abe = {
3247         .master         = &omap44xx_dsp_hwmod,
3248         .slave          = &omap44xx_l4_abe_hwmod,
3249         .clk            = "ocp_abe_iclk",
3250         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3251 };
3252
3253 /* l3_main_1 -> l4_abe */
3254 static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l4_abe = {
3255         .master         = &omap44xx_l3_main_1_hwmod,
3256         .slave          = &omap44xx_l4_abe_hwmod,
3257         .clk            = "l3_div_ck",
3258         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3259 };
3260
3261 /* mpu -> l4_abe */
3262 static struct omap_hwmod_ocp_if omap44xx_mpu__l4_abe = {
3263         .master         = &omap44xx_mpu_hwmod,
3264         .slave          = &omap44xx_l4_abe_hwmod,
3265         .clk            = "ocp_abe_iclk",
3266         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3267 };
3268
3269 /* l3_main_1 -> l4_cfg */
3270 static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l4_cfg = {
3271         .master         = &omap44xx_l3_main_1_hwmod,
3272         .slave          = &omap44xx_l4_cfg_hwmod,
3273         .clk            = "l3_div_ck",
3274         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3275 };
3276
3277 /* l3_main_2 -> l4_per */
3278 static struct omap_hwmod_ocp_if omap44xx_l3_main_2__l4_per = {
3279         .master         = &omap44xx_l3_main_2_hwmod,
3280         .slave          = &omap44xx_l4_per_hwmod,
3281         .clk            = "l3_div_ck",
3282         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3283 };
3284
3285 /* l4_cfg -> l4_wkup */
3286 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l4_wkup = {
3287         .master         = &omap44xx_l4_cfg_hwmod,
3288         .slave          = &omap44xx_l4_wkup_hwmod,
3289         .clk            = "l4_div_ck",
3290         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3291 };
3292
3293 /* mpu -> mpu_private */
3294 static struct omap_hwmod_ocp_if omap44xx_mpu__mpu_private = {
3295         .master         = &omap44xx_mpu_hwmod,
3296         .slave          = &omap44xx_mpu_private_hwmod,
3297         .clk            = "l3_div_ck",
3298         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3299 };
3300
3301 /* l4_cfg -> ocp_wp_noc */
3302 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__ocp_wp_noc = {
3303         .master         = &omap44xx_l4_cfg_hwmod,
3304         .slave          = &omap44xx_ocp_wp_noc_hwmod,
3305         .clk            = "l4_div_ck",
3306         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3307 };
3308
3309 /* l4_abe -> aess */
3310 static struct omap_hwmod_ocp_if __maybe_unused omap44xx_l4_abe__aess = {
3311         .master         = &omap44xx_l4_abe_hwmod,
3312         .slave          = &omap44xx_aess_hwmod,
3313         .clk            = "ocp_abe_iclk",
3314         .user           = OCP_USER_MPU,
3315 };
3316
3317 /* l4_abe -> aess (dma) */
3318 static struct omap_hwmod_ocp_if __maybe_unused omap44xx_l4_abe__aess_dma = {
3319         .master         = &omap44xx_l4_abe_hwmod,
3320         .slave          = &omap44xx_aess_hwmod,
3321         .clk            = "ocp_abe_iclk",
3322         .user           = OCP_USER_SDMA,
3323 };
3324
3325 /* l3_main_2 -> c2c */
3326 static struct omap_hwmod_ocp_if omap44xx_l3_main_2__c2c = {
3327         .master         = &omap44xx_l3_main_2_hwmod,
3328         .slave          = &omap44xx_c2c_hwmod,
3329         .clk            = "l3_div_ck",
3330         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3331 };
3332
3333 /* l4_wkup -> counter_32k */
3334 static struct omap_hwmod_ocp_if omap44xx_l4_wkup__counter_32k = {
3335         .master         = &omap44xx_l4_wkup_hwmod,
3336         .slave          = &omap44xx_counter_32k_hwmod,
3337         .clk            = "l4_wkup_clk_mux_ck",
3338         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3339 };
3340
3341 /* l4_cfg -> ctrl_module_core */
3342 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__ctrl_module_core = {
3343         .master         = &omap44xx_l4_cfg_hwmod,
3344         .slave          = &omap44xx_ctrl_module_core_hwmod,
3345         .clk            = "l4_div_ck",
3346         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3347 };
3348
3349 /* l4_cfg -> ctrl_module_pad_core */
3350 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__ctrl_module_pad_core = {
3351         .master         = &omap44xx_l4_cfg_hwmod,
3352         .slave          = &omap44xx_ctrl_module_pad_core_hwmod,
3353         .clk            = "l4_div_ck",
3354         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3355 };
3356
3357 /* l4_wkup -> ctrl_module_wkup */
3358 static struct omap_hwmod_ocp_if omap44xx_l4_wkup__ctrl_module_wkup = {
3359         .master         = &omap44xx_l4_wkup_hwmod,
3360         .slave          = &omap44xx_ctrl_module_wkup_hwmod,
3361         .clk            = "l4_wkup_clk_mux_ck",
3362         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3363 };
3364
3365 /* l4_wkup -> ctrl_module_pad_wkup */
3366 static struct omap_hwmod_ocp_if omap44xx_l4_wkup__ctrl_module_pad_wkup = {
3367         .master         = &omap44xx_l4_wkup_hwmod,
3368         .slave          = &omap44xx_ctrl_module_pad_wkup_hwmod,
3369         .clk            = "l4_wkup_clk_mux_ck",
3370         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3371 };
3372
3373 /* l3_instr -> debugss */
3374 static struct omap_hwmod_ocp_if omap44xx_l3_instr__debugss = {
3375         .master         = &omap44xx_l3_instr_hwmod,
3376         .slave          = &omap44xx_debugss_hwmod,
3377         .clk            = "l3_div_ck",
3378         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3379 };
3380
3381 /* l4_cfg -> dma_system */
3382 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__dma_system = {
3383         .master         = &omap44xx_l4_cfg_hwmod,
3384         .slave          = &omap44xx_dma_system_hwmod,
3385         .clk            = "l4_div_ck",
3386         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3387 };
3388
3389 /* l4_abe -> dmic */
3390 static struct omap_hwmod_ocp_if omap44xx_l4_abe__dmic = {
3391         .master         = &omap44xx_l4_abe_hwmod,
3392         .slave          = &omap44xx_dmic_hwmod,
3393         .clk            = "ocp_abe_iclk",
3394         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3395 };
3396
3397 /* dsp -> iva */
3398 static struct omap_hwmod_ocp_if omap44xx_dsp__iva = {
3399         .master         = &omap44xx_dsp_hwmod,
3400         .slave          = &omap44xx_iva_hwmod,
3401         .clk            = "dpll_iva_m5x2_ck",
3402         .user           = OCP_USER_DSP,
3403 };
3404
3405 /* dsp -> sl2if */
3406 static struct omap_hwmod_ocp_if __maybe_unused omap44xx_dsp__sl2if = {
3407         .master         = &omap44xx_dsp_hwmod,
3408         .slave          = &omap44xx_sl2if_hwmod,
3409         .clk            = "dpll_iva_m5x2_ck",
3410         .user           = OCP_USER_DSP,
3411 };
3412
3413 /* l4_cfg -> dsp */
3414 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__dsp = {
3415         .master         = &omap44xx_l4_cfg_hwmod,
3416         .slave          = &omap44xx_dsp_hwmod,
3417         .clk            = "l4_div_ck",
3418         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3419 };
3420
3421 /* l3_main_2 -> dss */
3422 static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss = {
3423         .master         = &omap44xx_l3_main_2_hwmod,
3424         .slave          = &omap44xx_dss_hwmod,
3425         .clk            = "l3_div_ck",
3426         .user           = OCP_USER_SDMA,
3427 };
3428
3429 /* l4_per -> dss */
3430 static struct omap_hwmod_ocp_if omap44xx_l4_per__dss = {
3431         .master         = &omap44xx_l4_per_hwmod,
3432         .slave          = &omap44xx_dss_hwmod,
3433         .clk            = "l4_div_ck",
3434         .user           = OCP_USER_MPU,
3435 };
3436
3437 /* l3_main_2 -> dss_dispc */
3438 static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_dispc = {
3439         .master         = &omap44xx_l3_main_2_hwmod,
3440         .slave          = &omap44xx_dss_dispc_hwmod,
3441         .clk            = "l3_div_ck",
3442         .user           = OCP_USER_SDMA,
3443 };
3444
3445 /* l4_per -> dss_dispc */
3446 static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_dispc = {
3447         .master         = &omap44xx_l4_per_hwmod,
3448         .slave          = &omap44xx_dss_dispc_hwmod,
3449         .clk            = "l4_div_ck",
3450         .user           = OCP_USER_MPU,
3451 };
3452
3453 /* l3_main_2 -> dss_dsi1 */
3454 static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_dsi1 = {
3455         .master         = &omap44xx_l3_main_2_hwmod,
3456         .slave          = &omap44xx_dss_dsi1_hwmod,
3457         .clk            = "l3_div_ck",
3458         .user           = OCP_USER_SDMA,
3459 };
3460
3461 /* l4_per -> dss_dsi1 */
3462 static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_dsi1 = {
3463         .master         = &omap44xx_l4_per_hwmod,
3464         .slave          = &omap44xx_dss_dsi1_hwmod,
3465         .clk            = "l4_div_ck",
3466         .user           = OCP_USER_MPU,
3467 };
3468
3469 /* l3_main_2 -> dss_dsi2 */
3470 static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_dsi2 = {
3471         .master         = &omap44xx_l3_main_2_hwmod,
3472         .slave          = &omap44xx_dss_dsi2_hwmod,
3473         .clk            = "l3_div_ck",
3474         .user           = OCP_USER_SDMA,
3475 };
3476
3477 /* l4_per -> dss_dsi2 */
3478 static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_dsi2 = {
3479         .master         = &omap44xx_l4_per_hwmod,
3480         .slave          = &omap44xx_dss_dsi2_hwmod,
3481         .clk            = "l4_div_ck",
3482         .user           = OCP_USER_MPU,
3483 };
3484
3485 /* l3_main_2 -> dss_hdmi */
3486 static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_hdmi = {
3487         .master         = &omap44xx_l3_main_2_hwmod,
3488         .slave          = &omap44xx_dss_hdmi_hwmod,
3489         .clk            = "l3_div_ck",
3490         .user           = OCP_USER_SDMA,
3491 };
3492
3493 /* l4_per -> dss_hdmi */
3494 static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_hdmi = {
3495         .master         = &omap44xx_l4_per_hwmod,
3496         .slave          = &omap44xx_dss_hdmi_hwmod,
3497         .clk            = "l4_div_ck",
3498         .user           = OCP_USER_MPU,
3499 };
3500
3501 /* l3_main_2 -> dss_rfbi */
3502 static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_rfbi = {
3503         .master         = &omap44xx_l3_main_2_hwmod,
3504         .slave          = &omap44xx_dss_rfbi_hwmod,
3505         .clk            = "l3_div_ck",
3506         .user           = OCP_USER_SDMA,
3507 };
3508
3509 /* l4_per -> dss_rfbi */
3510 static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_rfbi = {
3511         .master         = &omap44xx_l4_per_hwmod,
3512         .slave          = &omap44xx_dss_rfbi_hwmod,
3513         .clk            = "l4_div_ck",
3514         .user           = OCP_USER_MPU,
3515 };
3516
3517 /* l3_main_2 -> dss_venc */
3518 static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_venc = {
3519         .master         = &omap44xx_l3_main_2_hwmod,
3520         .slave          = &omap44xx_dss_venc_hwmod,
3521         .clk            = "l3_div_ck",
3522         .user           = OCP_USER_SDMA,
3523 };
3524
3525 /* l4_per -> dss_venc */
3526 static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_venc = {
3527         .master         = &omap44xx_l4_per_hwmod,
3528         .slave          = &omap44xx_dss_venc_hwmod,
3529         .clk            = "l4_div_ck",
3530         .user           = OCP_USER_MPU,
3531 };
3532
3533 /* l3_main_2 -> sham */
3534 static struct omap_hwmod_ocp_if omap44xx_l3_main_2__sha0 = {
3535         .master         = &omap44xx_l3_main_2_hwmod,
3536         .slave          = &omap44xx_sha0_hwmod,
3537         .clk            = "l3_div_ck",
3538         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3539 };
3540
3541 /* l4_per -> elm */
3542 static struct omap_hwmod_ocp_if omap44xx_l4_per__elm = {
3543         .master         = &omap44xx_l4_per_hwmod,
3544         .slave          = &omap44xx_elm_hwmod,
3545         .clk            = "l4_div_ck",
3546         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3547 };
3548
3549 /* l4_cfg -> fdif */
3550 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__fdif = {
3551         .master         = &omap44xx_l4_cfg_hwmod,
3552         .slave          = &omap44xx_fdif_hwmod,
3553         .clk            = "l4_div_ck",
3554         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3555 };
3556
3557 /* l4_wkup -> gpio1 */
3558 static struct omap_hwmod_ocp_if omap44xx_l4_wkup__gpio1 = {
3559         .master         = &omap44xx_l4_wkup_hwmod,
3560         .slave          = &omap44xx_gpio1_hwmod,
3561         .clk            = "l4_wkup_clk_mux_ck",
3562         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3563 };
3564
3565 /* l4_per -> gpio2 */
3566 static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio2 = {
3567         .master         = &omap44xx_l4_per_hwmod,
3568         .slave          = &omap44xx_gpio2_hwmod,
3569         .clk            = "l4_div_ck",
3570         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3571 };
3572
3573 /* l4_per -> gpio3 */
3574 static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio3 = {
3575         .master         = &omap44xx_l4_per_hwmod,
3576         .slave          = &omap44xx_gpio3_hwmod,
3577         .clk            = "l4_div_ck",
3578         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3579 };
3580
3581 /* l4_per -> gpio4 */
3582 static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio4 = {
3583         .master         = &omap44xx_l4_per_hwmod,
3584         .slave          = &omap44xx_gpio4_hwmod,
3585         .clk            = "l4_div_ck",
3586         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3587 };
3588
3589 /* l4_per -> gpio5 */
3590 static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio5 = {
3591         .master         = &omap44xx_l4_per_hwmod,
3592         .slave          = &omap44xx_gpio5_hwmod,
3593         .clk            = "l4_div_ck",
3594         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3595 };
3596
3597 /* l4_per -> gpio6 */
3598 static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio6 = {
3599         .master         = &omap44xx_l4_per_hwmod,
3600         .slave          = &omap44xx_gpio6_hwmod,
3601         .clk            = "l4_div_ck",
3602         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3603 };
3604
3605 /* l3_main_2 -> gpmc */
3606 static struct omap_hwmod_ocp_if omap44xx_l3_main_2__gpmc = {
3607         .master         = &omap44xx_l3_main_2_hwmod,
3608         .slave          = &omap44xx_gpmc_hwmod,
3609         .clk            = "l3_div_ck",
3610         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3611 };
3612
3613 /* l3_main_2 -> gpu */
3614 static struct omap_hwmod_ocp_if omap44xx_l3_main_2__gpu = {
3615         .master         = &omap44xx_l3_main_2_hwmod,
3616         .slave          = &omap44xx_gpu_hwmod,
3617         .clk            = "l3_div_ck",
3618         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3619 };
3620
3621 /* l4_per -> hdq1w */
3622 static struct omap_hwmod_ocp_if omap44xx_l4_per__hdq1w = {
3623         .master         = &omap44xx_l4_per_hwmod,
3624         .slave          = &omap44xx_hdq1w_hwmod,
3625         .clk            = "l4_div_ck",
3626         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3627 };
3628
3629 /* l4_cfg -> hsi */
3630 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__hsi = {
3631         .master         = &omap44xx_l4_cfg_hwmod,
3632         .slave          = &omap44xx_hsi_hwmod,
3633         .clk            = "l4_div_ck",
3634         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3635 };
3636
3637 /* l4_per -> i2c1 */
3638 static struct omap_hwmod_ocp_if omap44xx_l4_per__i2c1 = {
3639         .master         = &omap44xx_l4_per_hwmod,
3640         .slave          = &omap44xx_i2c1_hwmod,
3641         .clk            = "l4_div_ck",
3642         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3643 };
3644
3645 /* l4_per -> i2c2 */
3646 static struct omap_hwmod_ocp_if omap44xx_l4_per__i2c2 = {
3647         .master         = &omap44xx_l4_per_hwmod,
3648         .slave          = &omap44xx_i2c2_hwmod,
3649         .clk            = "l4_div_ck",
3650         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3651 };
3652
3653 /* l4_per -> i2c3 */
3654 static struct omap_hwmod_ocp_if omap44xx_l4_per__i2c3 = {
3655         .master         = &omap44xx_l4_per_hwmod,
3656         .slave          = &omap44xx_i2c3_hwmod,
3657         .clk            = "l4_div_ck",
3658         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3659 };
3660
3661 /* l4_per -> i2c4 */
3662 static struct omap_hwmod_ocp_if omap44xx_l4_per__i2c4 = {
3663         .master         = &omap44xx_l4_per_hwmod,
3664         .slave          = &omap44xx_i2c4_hwmod,
3665         .clk            = "l4_div_ck",
3666         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3667 };
3668
3669 /* l3_main_2 -> ipu */
3670 static struct omap_hwmod_ocp_if omap44xx_l3_main_2__ipu = {
3671         .master         = &omap44xx_l3_main_2_hwmod,
3672         .slave          = &omap44xx_ipu_hwmod,
3673         .clk            = "l3_div_ck",
3674         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3675 };
3676
3677 /* l3_main_2 -> iss */
3678 static struct omap_hwmod_ocp_if omap44xx_l3_main_2__iss = {
3679         .master         = &omap44xx_l3_main_2_hwmod,
3680         .slave          = &omap44xx_iss_hwmod,
3681         .clk            = "l3_div_ck",
3682         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3683 };
3684
3685 /* iva -> sl2if */
3686 static struct omap_hwmod_ocp_if __maybe_unused omap44xx_iva__sl2if = {
3687         .master         = &omap44xx_iva_hwmod,
3688         .slave          = &omap44xx_sl2if_hwmod,
3689         .clk            = "dpll_iva_m5x2_ck",
3690         .user           = OCP_USER_IVA,
3691 };
3692
3693 /* l3_main_2 -> iva */
3694 static struct omap_hwmod_ocp_if omap44xx_l3_main_2__iva = {
3695         .master         = &omap44xx_l3_main_2_hwmod,
3696         .slave          = &omap44xx_iva_hwmod,
3697         .clk            = "l3_div_ck",
3698         .user           = OCP_USER_MPU,
3699 };
3700
3701 /* l4_wkup -> kbd */
3702 static struct omap_hwmod_ocp_if omap44xx_l4_wkup__kbd = {
3703         .master         = &omap44xx_l4_wkup_hwmod,
3704         .slave          = &omap44xx_kbd_hwmod,
3705         .clk            = "l4_wkup_clk_mux_ck",
3706         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3707 };
3708
3709 /* l4_cfg -> mailbox */
3710 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__mailbox = {
3711         .master         = &omap44xx_l4_cfg_hwmod,
3712         .slave          = &omap44xx_mailbox_hwmod,
3713         .clk            = "l4_div_ck",
3714         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3715 };
3716
3717 /* l4_abe -> mcasp */
3718 static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcasp = {
3719         .master         = &omap44xx_l4_abe_hwmod,
3720         .slave          = &omap44xx_mcasp_hwmod,
3721         .clk            = "ocp_abe_iclk",
3722         .user           = OCP_USER_MPU,
3723 };
3724
3725 /* l4_abe -> mcasp (dma) */
3726 static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcasp_dma = {
3727         .master         = &omap44xx_l4_abe_hwmod,
3728         .slave          = &omap44xx_mcasp_hwmod,
3729         .clk            = "ocp_abe_iclk",
3730         .user           = OCP_USER_SDMA,
3731 };
3732
3733 /* l4_abe -> mcbsp1 */
3734 static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp1 = {
3735         .master         = &omap44xx_l4_abe_hwmod,
3736         .slave          = &omap44xx_mcbsp1_hwmod,
3737         .clk            = "ocp_abe_iclk",
3738         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3739 };
3740
3741 /* l4_abe -> mcbsp2 */
3742 static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp2 = {
3743         .master         = &omap44xx_l4_abe_hwmod,
3744         .slave          = &omap44xx_mcbsp2_hwmod,
3745         .clk            = "ocp_abe_iclk",
3746         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3747 };
3748
3749 /* l4_abe -> mcbsp3 */
3750 static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp3 = {
3751         .master         = &omap44xx_l4_abe_hwmod,
3752         .slave          = &omap44xx_mcbsp3_hwmod,
3753         .clk            = "ocp_abe_iclk",
3754         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3755 };
3756
3757 /* l4_per -> mcbsp4 */
3758 static struct omap_hwmod_ocp_if omap44xx_l4_per__mcbsp4 = {
3759         .master         = &omap44xx_l4_per_hwmod,
3760         .slave          = &omap44xx_mcbsp4_hwmod,
3761         .clk            = "l4_div_ck",
3762         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3763 };
3764
3765 /* l4_abe -> mcpdm */
3766 static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcpdm = {
3767         .master         = &omap44xx_l4_abe_hwmod,
3768         .slave          = &omap44xx_mcpdm_hwmod,
3769         .clk            = "ocp_abe_iclk",
3770         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3771 };
3772
3773 /* l4_per -> mcspi1 */
3774 static struct omap_hwmod_ocp_if omap44xx_l4_per__mcspi1 = {
3775         .master         = &omap44xx_l4_per_hwmod,
3776         .slave          = &omap44xx_mcspi1_hwmod,
3777         .clk            = "l4_div_ck",
3778         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3779 };
3780
3781 /* l4_per -> mcspi2 */
3782 static struct omap_hwmod_ocp_if omap44xx_l4_per__mcspi2 = {
3783         .master         = &omap44xx_l4_per_hwmod,
3784         .slave          = &omap44xx_mcspi2_hwmod,
3785         .clk            = "l4_div_ck",
3786         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3787 };
3788
3789 /* l4_per -> mcspi3 */
3790 static struct omap_hwmod_ocp_if omap44xx_l4_per__mcspi3 = {
3791         .master         = &omap44xx_l4_per_hwmod,
3792         .slave          = &omap44xx_mcspi3_hwmod,
3793         .clk            = "l4_div_ck",
3794         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3795 };
3796
3797 /* l4_per -> mcspi4 */
3798 static struct omap_hwmod_ocp_if omap44xx_l4_per__mcspi4 = {
3799         .master         = &omap44xx_l4_per_hwmod,
3800         .slave          = &omap44xx_mcspi4_hwmod,
3801         .clk            = "l4_div_ck",
3802         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3803 };
3804
3805 /* l4_per -> mmc1 */
3806 static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc1 = {
3807         .master         = &omap44xx_l4_per_hwmod,
3808         .slave          = &omap44xx_mmc1_hwmod,
3809         .clk            = "l4_div_ck",
3810         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3811 };
3812
3813 /* l4_per -> mmc2 */
3814 static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc2 = {
3815         .master         = &omap44xx_l4_per_hwmod,
3816         .slave          = &omap44xx_mmc2_hwmod,
3817         .clk            = "l4_div_ck",
3818         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3819 };
3820
3821 /* l4_per -> mmc3 */
3822 static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc3 = {
3823         .master         = &omap44xx_l4_per_hwmod,
3824         .slave          = &omap44xx_mmc3_hwmod,
3825         .clk            = "l4_div_ck",
3826         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3827 };
3828
3829 /* l4_per -> mmc4 */
3830 static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc4 = {
3831         .master         = &omap44xx_l4_per_hwmod,
3832         .slave          = &omap44xx_mmc4_hwmod,
3833         .clk            = "l4_div_ck",
3834         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3835 };
3836
3837 /* l4_per -> mmc5 */
3838 static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc5 = {
3839         .master         = &omap44xx_l4_per_hwmod,
3840         .slave          = &omap44xx_mmc5_hwmod,
3841         .clk            = "l4_div_ck",
3842         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3843 };
3844
3845 /* l3_main_2 -> ocmc_ram */
3846 static struct omap_hwmod_ocp_if omap44xx_l3_main_2__ocmc_ram = {
3847         .master         = &omap44xx_l3_main_2_hwmod,
3848         .slave          = &omap44xx_ocmc_ram_hwmod,
3849         .clk            = "l3_div_ck",
3850         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3851 };
3852
3853 /* l4_cfg -> ocp2scp_usb_phy */
3854 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__ocp2scp_usb_phy = {
3855         .master         = &omap44xx_l4_cfg_hwmod,
3856         .slave          = &omap44xx_ocp2scp_usb_phy_hwmod,
3857         .clk            = "l4_div_ck",
3858         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3859 };
3860
3861 /* mpu_private -> prcm_mpu */
3862 static struct omap_hwmod_ocp_if omap44xx_mpu_private__prcm_mpu = {
3863         .master         = &omap44xx_mpu_private_hwmod,
3864         .slave          = &omap44xx_prcm_mpu_hwmod,
3865         .clk            = "l3_div_ck",
3866         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3867 };
3868
3869 /* l4_wkup -> cm_core_aon */
3870 static struct omap_hwmod_ocp_if omap44xx_l4_wkup__cm_core_aon = {
3871         .master         = &omap44xx_l4_wkup_hwmod,
3872         .slave          = &omap44xx_cm_core_aon_hwmod,
3873         .clk            = "l4_wkup_clk_mux_ck",
3874         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3875 };
3876
3877 /* l4_cfg -> cm_core */
3878 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__cm_core = {
3879         .master         = &omap44xx_l4_cfg_hwmod,
3880         .slave          = &omap44xx_cm_core_hwmod,
3881         .clk            = "l4_div_ck",
3882         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3883 };
3884
3885 /* l4_wkup -> prm */
3886 static struct omap_hwmod_ocp_if omap44xx_l4_wkup__prm = {
3887         .master         = &omap44xx_l4_wkup_hwmod,
3888         .slave          = &omap44xx_prm_hwmod,
3889         .clk            = "l4_wkup_clk_mux_ck",
3890         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3891 };
3892
3893 /* l4_wkup -> scrm */
3894 static struct omap_hwmod_ocp_if omap44xx_l4_wkup__scrm = {
3895         .master         = &omap44xx_l4_wkup_hwmod,
3896         .slave          = &omap44xx_scrm_hwmod,
3897         .clk            = "l4_wkup_clk_mux_ck",
3898         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3899 };
3900
3901 /* l3_main_2 -> sl2if */
3902 static struct omap_hwmod_ocp_if __maybe_unused omap44xx_l3_main_2__sl2if = {
3903         .master         = &omap44xx_l3_main_2_hwmod,
3904         .slave          = &omap44xx_sl2if_hwmod,
3905         .clk            = "l3_div_ck",
3906         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3907 };
3908
3909 /* l4_abe -> slimbus1 */
3910 static struct omap_hwmod_ocp_if omap44xx_l4_abe__slimbus1 = {
3911         .master         = &omap44xx_l4_abe_hwmod,
3912         .slave          = &omap44xx_slimbus1_hwmod,
3913         .clk            = "ocp_abe_iclk",
3914         .user           = OCP_USER_MPU,
3915 };
3916
3917 /* l4_abe -> slimbus1 (dma) */
3918 static struct omap_hwmod_ocp_if omap44xx_l4_abe__slimbus1_dma = {
3919         .master         = &omap44xx_l4_abe_hwmod,
3920         .slave          = &omap44xx_slimbus1_hwmod,
3921         .clk            = "ocp_abe_iclk",
3922         .user           = OCP_USER_SDMA,
3923 };
3924
3925 /* l4_per -> slimbus2 */
3926 static struct omap_hwmod_ocp_if omap44xx_l4_per__slimbus2 = {
3927         .master         = &omap44xx_l4_per_hwmod,
3928         .slave          = &omap44xx_slimbus2_hwmod,
3929         .clk            = "l4_div_ck",
3930         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3931 };
3932
3933 /* l4_cfg -> smartreflex_core */
3934 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__smartreflex_core = {
3935         .master         = &omap44xx_l4_cfg_hwmod,
3936         .slave          = &omap44xx_smartreflex_core_hwmod,
3937         .clk            = "l4_div_ck",
3938         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3939 };
3940
3941 /* l4_cfg -> smartreflex_iva */
3942 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__smartreflex_iva = {
3943         .master         = &omap44xx_l4_cfg_hwmod,
3944         .slave          = &omap44xx_smartreflex_iva_hwmod,
3945         .clk            = "l4_div_ck",
3946         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3947 };
3948
3949 /* l4_cfg -> smartreflex_mpu */
3950 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__smartreflex_mpu = {
3951         .master         = &omap44xx_l4_cfg_hwmod,
3952         .slave          = &omap44xx_smartreflex_mpu_hwmod,
3953         .clk            = "l4_div_ck",
3954         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3955 };
3956
3957 /* l4_cfg -> spinlock */
3958 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__spinlock = {
3959         .master         = &omap44xx_l4_cfg_hwmod,
3960         .slave          = &omap44xx_spinlock_hwmod,
3961         .clk            = "l4_div_ck",
3962         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3963 };
3964
3965 /* l4_wkup -> timer1 */
3966 static struct omap_hwmod_ocp_if omap44xx_l4_wkup__timer1 = {
3967         .master         = &omap44xx_l4_wkup_hwmod,
3968         .slave          = &omap44xx_timer1_hwmod,
3969         .clk            = "l4_wkup_clk_mux_ck",
3970         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3971 };
3972
3973 /* l4_per -> timer2 */
3974 static struct omap_hwmod_ocp_if omap44xx_l4_per__timer2 = {
3975         .master         = &omap44xx_l4_per_hwmod,
3976         .slave          = &omap44xx_timer2_hwmod,
3977         .clk            = "l4_div_ck",
3978         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3979 };
3980
3981 /* l4_per -> timer3 */
3982 static struct omap_hwmod_ocp_if omap44xx_l4_per__timer3 = {
3983         .master         = &omap44xx_l4_per_hwmod,
3984         .slave          = &omap44xx_timer3_hwmod,
3985         .clk            = "l4_div_ck",
3986         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3987 };
3988
3989 /* l4_per -> timer4 */
3990 static struct omap_hwmod_ocp_if omap44xx_l4_per__timer4 = {
3991         .master         = &omap44xx_l4_per_hwmod,
3992         .slave          = &omap44xx_timer4_hwmod,
3993         .clk            = "l4_div_ck",
3994         .user           = OCP_USER_MPU | OCP_USER_SDMA,
3995 };
3996
3997 /* l4_abe -> timer5 */
3998 static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer5 = {
3999         .master         = &omap44xx_l4_abe_hwmod,
4000         .slave          = &omap44xx_timer5_hwmod,
4001         .clk            = "ocp_abe_iclk",
4002         .user           = OCP_USER_MPU | OCP_USER_SDMA,
4003 };
4004
4005 /* l4_abe -> timer6 */
4006 static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer6 = {
4007         .master         = &omap44xx_l4_abe_hwmod,
4008         .slave          = &omap44xx_timer6_hwmod,
4009         .clk            = "ocp_abe_iclk",
4010         .user           = OCP_USER_MPU | OCP_USER_SDMA,
4011 };
4012
4013 /* l4_abe -> timer7 */
4014 static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer7 = {
4015         .master         = &omap44xx_l4_abe_hwmod,
4016         .slave          = &omap44xx_timer7_hwmod,
4017         .clk            = "ocp_abe_iclk",
4018         .user           = OCP_USER_MPU | OCP_USER_SDMA,
4019 };
4020
4021 /* l4_abe -> timer8 */
4022 static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer8 = {
4023         .master         = &omap44xx_l4_abe_hwmod,
4024         .slave          = &omap44xx_timer8_hwmod,
4025         .clk            = "ocp_abe_iclk",
4026         .user           = OCP_USER_MPU | OCP_USER_SDMA,
4027 };
4028
4029 /* l4_per -> timer9 */
4030 static struct omap_hwmod_ocp_if omap44xx_l4_per__timer9 = {
4031         .master         = &omap44xx_l4_per_hwmod,
4032         .slave          = &omap44xx_timer9_hwmod,
4033         .clk            = "l4_div_ck",
4034         .user           = OCP_USER_MPU | OCP_USER_SDMA,
4035 };
4036
4037 /* l4_per -> timer10 */
4038 static struct omap_hwmod_ocp_if omap44xx_l4_per__timer10 = {
4039         .master         = &omap44xx_l4_per_hwmod,
4040         .slave          = &omap44xx_timer10_hwmod,
4041         .clk            = "l4_div_ck",
4042         .user           = OCP_USER_MPU | OCP_USER_SDMA,
4043 };
4044
4045 /* l4_per -> timer11 */
4046 static struct omap_hwmod_ocp_if omap44xx_l4_per__timer11 = {
4047         .master         = &omap44xx_l4_per_hwmod,
4048         .slave          = &omap44xx_timer11_hwmod,
4049         .clk            = "l4_div_ck",
4050         .user           = OCP_USER_MPU | OCP_USER_SDMA,
4051 };
4052
4053 /* l4_per -> uart1 */
4054 static struct omap_hwmod_ocp_if omap44xx_l4_per__uart1 = {
4055         .master         = &omap44xx_l4_per_hwmod,
4056         .slave          = &omap44xx_uart1_hwmod,
4057         .clk            = "l4_div_ck",
4058         .user           = OCP_USER_MPU | OCP_USER_SDMA,
4059 };
4060
4061 /* l4_per -> uart2 */
4062 static struct omap_hwmod_ocp_if omap44xx_l4_per__uart2 = {
4063         .master         = &omap44xx_l4_per_hwmod,
4064         .slave          = &omap44xx_uart2_hwmod,
4065         .clk            = "l4_div_ck",
4066         .user           = OCP_USER_MPU | OCP_USER_SDMA,
4067 };
4068
4069 /* l4_per -> uart3 */
4070 static struct omap_hwmod_ocp_if omap44xx_l4_per__uart3 = {
4071         .master         = &omap44xx_l4_per_hwmod,
4072         .slave          = &omap44xx_uart3_hwmod,
4073         .clk            = "l4_div_ck",
4074         .user           = OCP_USER_MPU | OCP_USER_SDMA,
4075 };
4076
4077 /* l4_per -> uart4 */
4078 static struct omap_hwmod_ocp_if omap44xx_l4_per__uart4 = {
4079         .master         = &omap44xx_l4_per_hwmod,
4080         .slave          = &omap44xx_uart4_hwmod,
4081         .clk            = "l4_div_ck",
4082         .user           = OCP_USER_MPU | OCP_USER_SDMA,
4083 };
4084
4085 /* l4_cfg -> usb_host_fs */
4086 static struct omap_hwmod_ocp_if __maybe_unused omap44xx_l4_cfg__usb_host_fs = {
4087         .master         = &omap44xx_l4_cfg_hwmod,
4088         .slave          = &omap44xx_usb_host_fs_hwmod,
4089         .clk            = "l4_div_ck",
4090         .user           = OCP_USER_MPU | OCP_USER_SDMA,
4091 };
4092
4093 /* l4_cfg -> usb_host_hs */
4094 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__usb_host_hs = {
4095         .master         = &omap44xx_l4_cfg_hwmod,
4096         .slave          = &omap44xx_usb_host_hs_hwmod,
4097         .clk            = "l4_div_ck",
4098         .user           = OCP_USER_MPU | OCP_USER_SDMA,
4099 };
4100
4101 /* l4_cfg -> usb_otg_hs */
4102 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__usb_otg_hs = {
4103         .master         = &omap44xx_l4_cfg_hwmod,
4104         .slave          = &omap44xx_usb_otg_hs_hwmod,
4105         .clk            = "l4_div_ck",
4106         .user           = OCP_USER_MPU | OCP_USER_SDMA,
4107 };
4108
4109 /* l4_cfg -> usb_tll_hs */
4110 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__usb_tll_hs = {
4111         .master         = &omap44xx_l4_cfg_hwmod,
4112         .slave          = &omap44xx_usb_tll_hs_hwmod,
4113         .clk            = "l4_div_ck",
4114         .user           = OCP_USER_MPU | OCP_USER_SDMA,
4115 };
4116
4117 /* l4_wkup -> wd_timer2 */
4118 static struct omap_hwmod_ocp_if omap44xx_l4_wkup__wd_timer2 = {
4119         .master         = &omap44xx_l4_wkup_hwmod,
4120         .slave          = &omap44xx_wd_timer2_hwmod,
4121         .clk            = "l4_wkup_clk_mux_ck",
4122         .user           = OCP_USER_MPU | OCP_USER_SDMA,
4123 };
4124
4125 /* l4_abe -> wd_timer3 */
4126 static struct omap_hwmod_ocp_if omap44xx_l4_abe__wd_timer3 = {
4127         .master         = &omap44xx_l4_abe_hwmod,
4128         .slave          = &omap44xx_wd_timer3_hwmod,
4129         .clk            = "ocp_abe_iclk",
4130         .user           = OCP_USER_MPU,
4131 };
4132
4133 /* l4_abe -> wd_timer3 (dma) */
4134 static struct omap_hwmod_ocp_if omap44xx_l4_abe__wd_timer3_dma = {
4135         .master         = &omap44xx_l4_abe_hwmod,
4136         .slave          = &omap44xx_wd_timer3_hwmod,
4137         .clk            = "ocp_abe_iclk",
4138         .user           = OCP_USER_SDMA,
4139 };
4140
4141 /* mpu -> emif1 */
4142 static struct omap_hwmod_ocp_if omap44xx_mpu__emif1 = {
4143         .master         = &omap44xx_mpu_hwmod,
4144         .slave          = &omap44xx_emif1_hwmod,
4145         .clk            = "l3_div_ck",
4146         .user           = OCP_USER_MPU | OCP_USER_SDMA,
4147 };
4148
4149 /* mpu -> emif2 */
4150 static struct omap_hwmod_ocp_if omap44xx_mpu__emif2 = {
4151         .master         = &omap44xx_mpu_hwmod,
4152         .slave          = &omap44xx_emif2_hwmod,
4153         .clk            = "l3_div_ck",
4154         .user           = OCP_USER_MPU | OCP_USER_SDMA,
4155 };
4156
4157 static struct omap_hwmod_ocp_if *omap44xx_hwmod_ocp_ifs[] __initdata = {
4158         &omap44xx_l3_main_1__dmm,
4159         &omap44xx_mpu__dmm,
4160         &omap44xx_iva__l3_instr,
4161         &omap44xx_l3_main_3__l3_instr,
4162         &omap44xx_ocp_wp_noc__l3_instr,
4163         &omap44xx_dsp__l3_main_1,
4164         &omap44xx_dss__l3_main_1,
4165         &omap44xx_l3_main_2__l3_main_1,
4166         &omap44xx_l4_cfg__l3_main_1,
4167         &omap44xx_mmc1__l3_main_1,
4168         &omap44xx_mmc2__l3_main_1,
4169         &omap44xx_mpu__l3_main_1,
4170         &omap44xx_debugss__l3_main_2,
4171         &omap44xx_dma_system__l3_main_2,
4172         &omap44xx_fdif__l3_main_2,
4173         &omap44xx_gpu__l3_main_2,
4174         &omap44xx_hsi__l3_main_2,
4175         &omap44xx_ipu__l3_main_2,
4176         &omap44xx_iss__l3_main_2,
4177         &omap44xx_iva__l3_main_2,
4178         &omap44xx_l3_main_1__l3_main_2,
4179         &omap44xx_l4_cfg__l3_main_2,
4180         /* &omap44xx_usb_host_fs__l3_main_2, */
4181         &omap44xx_usb_host_hs__l3_main_2,
4182         &omap44xx_usb_otg_hs__l3_main_2,
4183         &omap44xx_l3_main_1__l3_main_3,
4184         &omap44xx_l3_main_2__l3_main_3,
4185         &omap44xx_l4_cfg__l3_main_3,
4186         &omap44xx_aess__l4_abe,
4187         &omap44xx_dsp__l4_abe,
4188         &omap44xx_l3_main_1__l4_abe,
4189         &omap44xx_mpu__l4_abe,
4190         &omap44xx_l3_main_1__l4_cfg,
4191         &omap44xx_l3_main_2__l4_per,
4192         &omap44xx_l4_cfg__l4_wkup,
4193         &omap44xx_mpu__mpu_private,
4194         &omap44xx_l4_cfg__ocp_wp_noc,
4195         &omap44xx_l4_abe__aess,
4196         &omap44xx_l4_abe__aess_dma,
4197         &omap44xx_l3_main_2__c2c,
4198         &omap44xx_l4_wkup__counter_32k,
4199         &omap44xx_l4_cfg__ctrl_module_core,
4200         &omap44xx_l4_cfg__ctrl_module_pad_core,
4201         &omap44xx_l4_wkup__ctrl_module_wkup,
4202         &omap44xx_l4_wkup__ctrl_module_pad_wkup,
4203         &omap44xx_l3_instr__debugss,
4204         &omap44xx_l4_cfg__dma_system,
4205         &omap44xx_l4_abe__dmic,
4206         &omap44xx_dsp__iva,
4207         /* &omap44xx_dsp__sl2if, */
4208         &omap44xx_l4_cfg__dsp,
4209         &omap44xx_l3_main_2__dss,
4210         &omap44xx_l4_per__dss,
4211         &omap44xx_l3_main_2__dss_dispc,
4212         &omap44xx_l4_per__dss_dispc,
4213         &omap44xx_l3_main_2__dss_dsi1,
4214         &omap44xx_l4_per__dss_dsi1,
4215         &omap44xx_l3_main_2__dss_dsi2,
4216         &omap44xx_l4_per__dss_dsi2,
4217         &omap44xx_l3_main_2__dss_hdmi,
4218         &omap44xx_l4_per__dss_hdmi,
4219         &omap44xx_l3_main_2__dss_rfbi,
4220         &omap44xx_l4_per__dss_rfbi,
4221         &omap44xx_l3_main_2__dss_venc,
4222         &omap44xx_l4_per__dss_venc,
4223         &omap44xx_l4_per__elm,
4224         &omap44xx_l4_cfg__fdif,
4225         &omap44xx_l4_wkup__gpio1,
4226         &omap44xx_l4_per__gpio2,
4227         &omap44xx_l4_per__gpio3,
4228         &omap44xx_l4_per__gpio4,
4229         &omap44xx_l4_per__gpio5,
4230         &omap44xx_l4_per__gpio6,
4231         &omap44xx_l3_main_2__gpmc,
4232         &omap44xx_l3_main_2__gpu,
4233         &omap44xx_l4_per__hdq1w,
4234         &omap44xx_l4_cfg__hsi,
4235         &omap44xx_l4_per__i2c1,
4236         &omap44xx_l4_per__i2c2,
4237         &omap44xx_l4_per__i2c3,
4238         &omap44xx_l4_per__i2c4,
4239         &omap44xx_l3_main_2__ipu,
4240         &omap44xx_l3_main_2__iss,
4241         /* &omap44xx_iva__sl2if, */
4242         &omap44xx_l3_main_2__iva,
4243         &omap44xx_l4_wkup__kbd,
4244         &omap44xx_l4_cfg__mailbox,
4245         &omap44xx_l4_abe__mcasp,
4246         &omap44xx_l4_abe__mcasp_dma,
4247         &omap44xx_l4_abe__mcbsp1,
4248         &omap44xx_l4_abe__mcbsp2,
4249         &omap44xx_l4_abe__mcbsp3,
4250         &omap44xx_l4_per__mcbsp4,
4251         &omap44xx_l4_abe__mcpdm,
4252         &omap44xx_l4_per__mcspi1,
4253         &omap44xx_l4_per__mcspi2,
4254         &omap44xx_l4_per__mcspi3,
4255         &omap44xx_l4_per__mcspi4,
4256         &omap44xx_l4_per__mmc1,
4257         &omap44xx_l4_per__mmc2,
4258         &omap44xx_l4_per__mmc3,
4259         &omap44xx_l4_per__mmc4,
4260         &omap44xx_l4_per__mmc5,
4261         &omap44xx_l3_main_2__mmu_ipu,
4262         &omap44xx_l4_cfg__mmu_dsp,
4263         &omap44xx_l3_main_2__ocmc_ram,
4264         &omap44xx_l4_cfg__ocp2scp_usb_phy,
4265         &omap44xx_mpu_private__prcm_mpu,
4266         &omap44xx_l4_wkup__cm_core_aon,
4267         &omap44xx_l4_cfg__cm_core,
4268         &omap44xx_l4_wkup__prm,
4269         &omap44xx_l4_wkup__scrm,
4270         /* &omap44xx_l3_main_2__sl2if, */
4271         &omap44xx_l4_abe__slimbus1,
4272         &omap44xx_l4_abe__slimbus1_dma,
4273         &omap44xx_l4_per__slimbus2,
4274         &omap44xx_l4_cfg__smartreflex_core,
4275         &omap44xx_l4_cfg__smartreflex_iva,
4276         &omap44xx_l4_cfg__smartreflex_mpu,
4277         &omap44xx_l4_cfg__spinlock,
4278         &omap44xx_l4_wkup__timer1,
4279         &omap44xx_l4_per__timer2,
4280         &omap44xx_l4_per__timer3,
4281         &omap44xx_l4_per__timer4,
4282         &omap44xx_l4_abe__timer5,
4283         &omap44xx_l4_abe__timer6,
4284         &omap44xx_l4_abe__timer7,
4285         &omap44xx_l4_abe__timer8,
4286         &omap44xx_l4_per__timer9,
4287         &omap44xx_l4_per__timer10,
4288         &omap44xx_l4_per__timer11,
4289         &omap44xx_l4_per__uart1,
4290         &omap44xx_l4_per__uart2,
4291         &omap44xx_l4_per__uart3,
4292         &omap44xx_l4_per__uart4,
4293         /* &omap44xx_l4_cfg__usb_host_fs, */
4294         &omap44xx_l4_cfg__usb_host_hs,
4295         &omap44xx_l4_cfg__usb_otg_hs,
4296         &omap44xx_l4_cfg__usb_tll_hs,
4297         &omap44xx_l4_wkup__wd_timer2,
4298         &omap44xx_l4_abe__wd_timer3,
4299         &omap44xx_l4_abe__wd_timer3_dma,
4300         &omap44xx_mpu__emif1,
4301         &omap44xx_mpu__emif2,
4302         &omap44xx_l3_main_2__aes1,
4303         &omap44xx_l3_main_2__aes2,
4304         &omap44xx_l3_main_2__des,
4305         &omap44xx_l3_main_2__sha0,
4306         NULL,
4307 };
4308
4309 int __init omap44xx_hwmod_init(void)
4310 {
4311         omap_hwmod_init();
4312         return omap_hwmod_register_links(omap44xx_hwmod_ocp_ifs);
4313 }
4314