blob: 234ee0eec81575c5e2e921955f0dd0171cd4ae48 [file] [log] [blame]
Benoit Cousson55d2cb02010-05-12 17:54:36 +02001/*
2 * Hardware modules present on the OMAP44xx chips
3 *
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004 * Copyright (C) 2009-2012 Texas Instruments, Inc.
Benoit Cousson55d2cb02010-05-12 17:54:36 +02005 * Copyright (C) 2009-2010 Nokia Corporation
6 *
7 * Paul Walmsley
8 * Benoit Cousson
9 *
10 * This file is automatically generated from the OMAP hardware databases.
11 * We respectfully ask that any modifications to this file be coordinated
12 * with the public linux-omap@vger.kernel.org mailing list and the
13 * authors above to ensure that the autogeneration scripts are kept
14 * up-to-date with the file contents.
Sricharan R3b9b1012013-06-07 17:26:15 +053015 * Note that this file is currently not in sync with autogeneration scripts.
16 * The above note to be removed, once it is synced up.
Benoit Cousson55d2cb02010-05-12 17:54:36 +020017 *
18 * This program is free software; you can redistribute it and/or modify
19 * it under the terms of the GNU General Public License version 2 as
20 * published by the Free Software Foundation.
21 */
22
23#include <linux/io.h>
Andreas Fenkart551434382014-11-08 15:33:09 +010024#include <linux/platform_data/hsmmc-omap.h>
Jean Pihetb86aeaf2012-04-25 16:06:20 +053025#include <linux/power/smartreflex.h>
Tony Lindgren3a8761c2012-10-08 09:11:22 -070026#include <linux/i2c-omap.h>
Benoit Cousson55d2cb02010-05-12 17:54:36 +020027
Tony Lindgren45c3eb72012-11-30 08:41:50 -080028#include <linux/omap-dma.h>
Tony Lindgren2a296c82012-10-02 17:41:35 -070029
Tony Lindgren2a296c82012-10-02 17:41:35 -070030#include "omap_hwmod.h"
Benoit Cousson55d2cb02010-05-12 17:54:36 +020031#include "omap_hwmod_common_data.h"
Paul Walmsleyd198b512010-12-21 15:30:54 -070032#include "cm1_44xx.h"
33#include "cm2_44xx.h"
34#include "prm44xx.h"
Benoit Cousson55d2cb02010-05-12 17:54:36 +020035#include "prm-regbits-44xx.h"
Tony Lindgren3a8761c2012-10-08 09:11:22 -070036#include "i2c.h"
Paul Walmsleyff2516f2010-12-21 15:39:15 -070037#include "wd_timer.h"
Benoit Cousson55d2cb02010-05-12 17:54:36 +020038
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 */
Paul Walmsley844a3b62012-04-19 04:04:33 -060043#define OMAP44XX_DMA_REQ_START 1
Benoit Cousson55d2cb02010-05-12 17:54:36 +020044
45/*
Paul Walmsley844a3b62012-04-19 04:04:33 -060046 * IP blocks
Benoit Cousson55d2cb02010-05-12 17:54:36 +020047 */
48
49/*
50 * 'dmm' class
51 * instance(s): dmm
52 */
53static struct omap_hwmod_class omap44xx_dmm_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +000054 .name = "dmm",
Benoit Cousson55d2cb02010-05-12 17:54:36 +020055};
56
Benoit Cousson7e69ed92011-07-09 19:14:28 -060057/* dmm */
Benoit Cousson55d2cb02010-05-12 17:54:36 +020058static struct omap_hwmod omap44xx_dmm_hwmod = {
59 .name = "dmm",
60 .class = &omap44xx_dmm_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -060061 .clkdm_name = "l3_emif_clkdm",
Benoit Coussond0f06312011-07-10 05:56:30 -060062 .prcm = {
63 .omap4 = {
64 .clkctrl_offs = OMAP4_CM_MEMIF_DMM_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -060065 .context_offs = OMAP4_RM_MEMIF_DMM_CONTEXT_OFFSET,
Benoit Coussond0f06312011-07-10 05:56:30 -060066 },
67 },
Benoit Cousson55d2cb02010-05-12 17:54:36 +020068};
69
70/*
Benoit Cousson55d2cb02010-05-12 17:54:36 +020071 * 'l3' class
72 * instance(s): l3_instr, l3_main_1, l3_main_2, l3_main_3
73 */
74static struct omap_hwmod_class omap44xx_l3_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +000075 .name = "l3",
Benoit Cousson55d2cb02010-05-12 17:54:36 +020076};
77
Benoit Cousson7e69ed92011-07-09 19:14:28 -060078/* l3_instr */
Benoit Cousson55d2cb02010-05-12 17:54:36 +020079static struct omap_hwmod omap44xx_l3_instr_hwmod = {
80 .name = "l3_instr",
81 .class = &omap44xx_l3_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -060082 .clkdm_name = "l3_instr_clkdm",
Benoit Coussond0f06312011-07-10 05:56:30 -060083 .prcm = {
84 .omap4 = {
85 .clkctrl_offs = OMAP4_CM_L3INSTR_L3_INSTR_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -060086 .context_offs = OMAP4_RM_L3INSTR_L3_INSTR_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -060087 .modulemode = MODULEMODE_HWCTRL,
Benoit Coussond0f06312011-07-10 05:56:30 -060088 },
89 },
Benoit Cousson55d2cb02010-05-12 17:54:36 +020090};
91
Benoit Cousson7e69ed92011-07-09 19:14:28 -060092/* l3_main_1 */
Benoit Cousson55d2cb02010-05-12 17:54:36 +020093static struct omap_hwmod omap44xx_l3_main_1_hwmod = {
94 .name = "l3_main_1",
95 .class = &omap44xx_l3_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -060096 .clkdm_name = "l3_1_clkdm",
Benoit Coussond0f06312011-07-10 05:56:30 -060097 .prcm = {
98 .omap4 = {
99 .clkctrl_offs = OMAP4_CM_L3_1_L3_1_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600100 .context_offs = OMAP4_RM_L3_1_L3_1_CONTEXT_OFFSET,
Benoit Coussond0f06312011-07-10 05:56:30 -0600101 },
102 },
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200103};
104
Benoit Cousson7e69ed92011-07-09 19:14:28 -0600105/* l3_main_2 */
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200106static struct omap_hwmod omap44xx_l3_main_2_hwmod = {
107 .name = "l3_main_2",
108 .class = &omap44xx_l3_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600109 .clkdm_name = "l3_2_clkdm",
Benoit Coussond0f06312011-07-10 05:56:30 -0600110 .prcm = {
111 .omap4 = {
112 .clkctrl_offs = OMAP4_CM_L3_2_L3_2_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600113 .context_offs = OMAP4_RM_L3_2_L3_2_CONTEXT_OFFSET,
Benoit Coussond0f06312011-07-10 05:56:30 -0600114 },
115 },
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200116};
117
Benoit Cousson7e69ed92011-07-09 19:14:28 -0600118/* l3_main_3 */
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200119static struct omap_hwmod omap44xx_l3_main_3_hwmod = {
120 .name = "l3_main_3",
121 .class = &omap44xx_l3_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600122 .clkdm_name = "l3_instr_clkdm",
Benoit Coussond0f06312011-07-10 05:56:30 -0600123 .prcm = {
124 .omap4 = {
125 .clkctrl_offs = OMAP4_CM_L3INSTR_L3_3_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600126 .context_offs = OMAP4_RM_L3INSTR_L3_3_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -0600127 .modulemode = MODULEMODE_HWCTRL,
Benoit Coussond0f06312011-07-10 05:56:30 -0600128 },
129 },
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200130};
131
132/*
133 * 'l4' class
134 * instance(s): l4_abe, l4_cfg, l4_per, l4_wkup
135 */
136static struct omap_hwmod_class omap44xx_l4_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +0000137 .name = "l4",
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200138};
139
Benoit Cousson7e69ed92011-07-09 19:14:28 -0600140/* l4_abe */
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200141static struct omap_hwmod omap44xx_l4_abe_hwmod = {
142 .name = "l4_abe",
143 .class = &omap44xx_l4_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600144 .clkdm_name = "abe_clkdm",
Benoit Coussond0f06312011-07-10 05:56:30 -0600145 .prcm = {
146 .omap4 = {
147 .clkctrl_offs = OMAP4_CM1_ABE_L4ABE_CLKCTRL_OFFSET,
Tero Kristoce809792012-09-23 17:28:19 -0600148 .context_offs = OMAP4_RM_ABE_AESS_CONTEXT_OFFSET,
149 .lostcontext_mask = OMAP4430_LOSTMEM_AESSMEM_MASK,
Tero Kristo46b3af22012-09-23 17:28:20 -0600150 .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
Benoit Coussond0f06312011-07-10 05:56:30 -0600151 },
152 },
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200153};
154
Benoit Cousson7e69ed92011-07-09 19:14:28 -0600155/* l4_cfg */
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200156static struct omap_hwmod omap44xx_l4_cfg_hwmod = {
157 .name = "l4_cfg",
158 .class = &omap44xx_l4_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600159 .clkdm_name = "l4_cfg_clkdm",
Benoit Coussond0f06312011-07-10 05:56:30 -0600160 .prcm = {
161 .omap4 = {
162 .clkctrl_offs = OMAP4_CM_L4CFG_L4_CFG_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600163 .context_offs = OMAP4_RM_L4CFG_L4_CFG_CONTEXT_OFFSET,
Benoit Coussond0f06312011-07-10 05:56:30 -0600164 },
165 },
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200166};
167
Benoit Cousson7e69ed92011-07-09 19:14:28 -0600168/* l4_per */
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200169static struct omap_hwmod omap44xx_l4_per_hwmod = {
170 .name = "l4_per",
171 .class = &omap44xx_l4_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600172 .clkdm_name = "l4_per_clkdm",
Benoit Coussond0f06312011-07-10 05:56:30 -0600173 .prcm = {
174 .omap4 = {
175 .clkctrl_offs = OMAP4_CM_L4PER_L4PER_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600176 .context_offs = OMAP4_RM_L4PER_L4_PER_CONTEXT_OFFSET,
Benoit Coussond0f06312011-07-10 05:56:30 -0600177 },
178 },
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200179};
180
Benoit Cousson7e69ed92011-07-09 19:14:28 -0600181/* l4_wkup */
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200182static struct omap_hwmod omap44xx_l4_wkup_hwmod = {
183 .name = "l4_wkup",
184 .class = &omap44xx_l4_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600185 .clkdm_name = "l4_wkup_clkdm",
Benoit Coussond0f06312011-07-10 05:56:30 -0600186 .prcm = {
187 .omap4 = {
188 .clkctrl_offs = OMAP4_CM_WKUP_L4WKUP_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600189 .context_offs = OMAP4_RM_WKUP_L4WKUP_CONTEXT_OFFSET,
Benoit Coussond0f06312011-07-10 05:56:30 -0600190 },
191 },
Benoit Cousson55d2cb02010-05-12 17:54:36 +0200192};
193
194/*
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700195 * 'mpu_bus' class
196 * instance(s): mpu_private
197 */
198static struct omap_hwmod_class omap44xx_mpu_bus_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +0000199 .name = "mpu_bus",
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700200};
201
Benoit Cousson7e69ed92011-07-09 19:14:28 -0600202/* mpu_private */
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700203static struct omap_hwmod omap44xx_mpu_private_hwmod = {
204 .name = "mpu_private",
205 .class = &omap44xx_mpu_bus_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600206 .clkdm_name = "mpuss_clkdm",
Tero Kristo46b3af22012-09-23 17:28:20 -0600207 .prcm = {
208 .omap4 = {
209 .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
210 },
211 },
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700212};
213
214/*
Benoît Cousson9a817bc82012-04-19 13:33:56 -0600215 * 'ocp_wp_noc' class
216 * instance(s): ocp_wp_noc
217 */
218static struct omap_hwmod_class omap44xx_ocp_wp_noc_hwmod_class = {
219 .name = "ocp_wp_noc",
220};
221
222/* ocp_wp_noc */
223static 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/*
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700237 * 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 *
Benoît Cousson96566042012-04-19 13:33:59 -0600244 * usim
Benoit Cousson3b54baa2010-12-21 21:08:33 -0700245 */
246
247/*
Benoit Cousson407a6882011-02-15 22:39:48 +0100248 * 'aess' class
249 * audio engine sub system
250 */
251
252static 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 |
Benoit Coussonc614ebf2011-07-01 22:54:01 +0200257 MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART |
258 MSTANDBY_SMART_WKUP),
Benoit Cousson407a6882011-02-15 22:39:48 +0100259 .sysc_fields = &omap_hwmod_sysc_type2,
260};
261
262static struct omap_hwmod_class omap44xx_aess_hwmod_class = {
263 .name = "aess",
264 .sysc = &omap44xx_aess_sysc,
Paul Walmsleyc02060d2013-02-10 11:22:23 -0700265 .enable_preprogram = omap_hwmod_aess_preprogram,
Benoit Cousson407a6882011-02-15 22:39:48 +0100266};
267
268/* aess */
Benoit Cousson407a6882011-02-15 22:39:48 +0100269static struct omap_hwmod omap44xx_aess_hwmod = {
270 .name = "aess",
271 .class = &omap44xx_aess_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600272 .clkdm_name = "abe_clkdm",
Sebastien Guiriec9f0c5992013-02-10 11:22:24 -0700273 .main_clk = "aess_fclk",
Benoit Cousson00fe6102011-07-09 19:14:28 -0600274 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +0100275 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600276 .clkctrl_offs = OMAP4_CM1_ABE_AESS_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600277 .context_offs = OMAP4_RM_ABE_AESS_CONTEXT_OFFSET,
Tero Kristoce809792012-09-23 17:28:19 -0600278 .lostcontext_mask = OMAP4430_LOSTCONTEXT_DFF_MASK,
Benoit Cousson03fdefe52011-07-10 05:56:32 -0600279 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +0100280 },
281 },
Benoit Cousson407a6882011-02-15 22:39:48 +0100282};
283
284/*
Paul Walmsley42b9e382012-04-19 13:33:54 -0600285 * 'c2c' class
286 * chip 2 chip interface used to plug the ape soc (omap) with an external modem
287 * soc
288 */
289
290static struct omap_hwmod_class omap44xx_c2c_hwmod_class = {
291 .name = "c2c",
292};
293
294/* c2c */
Paul Walmsley42b9e382012-04-19 13:33:54 -0600295static struct omap_hwmod omap44xx_c2c_hwmod = {
296 .name = "c2c",
297 .class = &omap44xx_c2c_hwmod_class,
298 .clkdm_name = "d2d_clkdm",
Paul Walmsley42b9e382012-04-19 13:33:54 -0600299 .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/*
Benoit Cousson407a6882011-02-15 22:39:48 +0100308 * 'counter' class
309 * 32-bit ordinary counter, clocked by the falling edge of the 32 khz clock
310 */
311
312static struct omap_hwmod_class_sysconfig omap44xx_counter_sysc = {
313 .rev_offs = 0x0000,
314 .sysc_offs = 0x0004,
315 .sysc_flags = SYSC_HAS_SIDLEMODE,
Paul Walmsley252a4c52012-06-17 11:57:51 -0600316 .idlemodes = (SIDLE_FORCE | SIDLE_NO),
Benoit Cousson407a6882011-02-15 22:39:48 +0100317 .sysc_fields = &omap_hwmod_sysc_type1,
318};
319
320static struct omap_hwmod_class omap44xx_counter_hwmod_class = {
321 .name = "counter",
322 .sysc = &omap44xx_counter_sysc,
323};
324
325/* counter_32k */
Benoit Cousson407a6882011-02-15 22:39:48 +0100326static struct omap_hwmod omap44xx_counter_32k_hwmod = {
327 .name = "counter_32k",
328 .class = &omap44xx_counter_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600329 .clkdm_name = "l4_wkup_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +0100330 .flags = HWMOD_SWSUP_SIDLE,
331 .main_clk = "sys_32k_ck",
Benoit Cousson00fe6102011-07-09 19:14:28 -0600332 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +0100333 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600334 .clkctrl_offs = OMAP4_CM_WKUP_SYNCTIMER_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600335 .context_offs = OMAP4_RM_WKUP_SYNCTIMER_CONTEXT_OFFSET,
Benoit Cousson407a6882011-02-15 22:39:48 +0100336 },
337 },
Benoit Cousson407a6882011-02-15 22:39:48 +0100338};
339
340/*
Paul Walmsleya0b5d812012-04-19 13:33:57 -0600341 * 'ctrl_module' class
342 * attila core control module + core pad control module + wkup pad control
343 * module + attila wkup control module
344 */
345
346static 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
355static 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 */
Paul Walmsleya0b5d812012-04-19 13:33:57 -0600361static 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",
Tero Kristo46b3af22012-09-23 17:28:20 -0600365 .prcm = {
366 .omap4 = {
367 .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
368 },
369 },
Paul Walmsleya0b5d812012-04-19 13:33:57 -0600370};
371
372/* ctrl_module_pad_core */
373static 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",
Tero Kristo46b3af22012-09-23 17:28:20 -0600377 .prcm = {
378 .omap4 = {
379 .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
380 },
381 },
Paul Walmsleya0b5d812012-04-19 13:33:57 -0600382};
383
384/* ctrl_module_wkup */
385static 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",
Tero Kristo46b3af22012-09-23 17:28:20 -0600389 .prcm = {
390 .omap4 = {
391 .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
392 },
393 },
Paul Walmsleya0b5d812012-04-19 13:33:57 -0600394};
395
396/* ctrl_module_pad_wkup */
397static 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",
Tero Kristo46b3af22012-09-23 17:28:20 -0600401 .prcm = {
402 .omap4 = {
403 .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
404 },
405 },
Paul Walmsleya0b5d812012-04-19 13:33:57 -0600406};
407
408/*
Benoît Cousson96566042012-04-19 13:33:59 -0600409 * 'debugss' class
410 * debug and emulation sub system
411 */
412
413static struct omap_hwmod_class omap44xx_debugss_hwmod_class = {
414 .name = "debugss",
415};
416
417/* debugss */
418static 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/*
Benoit Coussond7cf5f32010-12-23 22:30:31 +0000432 * '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
437static 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
450static struct omap_hwmod_class omap44xx_dma_hwmod_class = {
451 .name = "dma",
452 .sysc = &omap44xx_dma_sysc,
453};
454
455/* dma dev_attr */
456static 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 */
Benoit Coussond7cf5f32010-12-23 22:30:31 +0000463static struct omap_hwmod omap44xx_dma_system_hwmod = {
464 .name = "dma_system",
465 .class = &omap44xx_dma_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600466 .clkdm_name = "l3_dma_clkdm",
Benoit Coussond7cf5f32010-12-23 22:30:31 +0000467 .main_clk = "l3_div_ck",
468 .prcm = {
469 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600470 .clkctrl_offs = OMAP4_CM_SDMA_SDMA_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600471 .context_offs = OMAP4_RM_SDMA_SDMA_CONTEXT_OFFSET,
Benoit Coussond7cf5f32010-12-23 22:30:31 +0000472 },
473 },
474 .dev_attr = &dma_dev_attr,
Benoit Coussond7cf5f32010-12-23 22:30:31 +0000475};
476
477/*
Benoit Cousson8ca476d2011-01-25 22:01:00 +0000478 * 'dmic' class
479 * digital microphone controller
480 */
481
482static 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
492static struct omap_hwmod_class omap44xx_dmic_hwmod_class = {
493 .name = "dmic",
494 .sysc = &omap44xx_dmic_sysc,
495};
496
497/* dmic */
Benoit Cousson8ca476d2011-01-25 22:01:00 +0000498static struct omap_hwmod omap44xx_dmic_hwmod = {
499 .name = "dmic",
500 .class = &omap44xx_dmic_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600501 .clkdm_name = "abe_clkdm",
Paul Walmsleyee877ac2013-01-26 00:48:55 -0700502 .main_clk = "func_dmic_abe_gfclk",
Benoit Cousson00fe6102011-07-09 19:14:28 -0600503 .prcm = {
Benoit Cousson8ca476d2011-01-25 22:01:00 +0000504 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600505 .clkctrl_offs = OMAP4_CM1_ABE_DMIC_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600506 .context_offs = OMAP4_RM_ABE_DMIC_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -0600507 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson8ca476d2011-01-25 22:01:00 +0000508 },
509 },
Benoit Cousson8ca476d2011-01-25 22:01:00 +0000510};
511
512/*
Benoit Cousson8f25bdc2010-12-21 21:08:34 -0700513 * 'dsp' class
514 * dsp sub-system
515 */
516
517static struct omap_hwmod_class omap44xx_dsp_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +0000518 .name = "dsp",
Benoit Cousson8f25bdc2010-12-21 21:08:34 -0700519};
520
521/* dsp */
Benoit Cousson8f25bdc2010-12-21 21:08:34 -0700522static struct omap_hwmod_rst_info omap44xx_dsp_resets[] = {
Benoit Cousson8f25bdc2010-12-21 21:08:34 -0700523 { .name = "dsp", .rst_shift = 0 },
524};
525
Benoit Cousson8f25bdc2010-12-21 21:08:34 -0700526static struct omap_hwmod omap44xx_dsp_hwmod = {
527 .name = "dsp",
528 .class = &omap44xx_dsp_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600529 .clkdm_name = "tesla_clkdm",
Benoit Cousson8f25bdc2010-12-21 21:08:34 -0700530 .rst_lines = omap44xx_dsp_resets,
531 .rst_lines_cnt = ARRAY_SIZE(omap44xx_dsp_resets),
Omar Ramirez Luna298ea442012-11-19 19:05:52 -0600532 .main_clk = "dpll_iva_m4x2_ck",
Benoit Cousson8f25bdc2010-12-21 21:08:34 -0700533 .prcm = {
534 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600535 .clkctrl_offs = OMAP4_CM_TESLA_TESLA_CLKCTRL_OFFSET,
Benoit Coussoneaac3292011-07-10 05:56:31 -0600536 .rstctrl_offs = OMAP4_RM_TESLA_RSTCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600537 .context_offs = OMAP4_RM_TESLA_TESLA_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -0600538 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson8f25bdc2010-12-21 21:08:34 -0700539 },
540 },
Benoit Cousson8f25bdc2010-12-21 21:08:34 -0700541};
542
543/*
Benoit Coussond63bd742011-01-27 11:17:03 +0000544 * 'dss' class
545 * display sub-system
546 */
547
548static 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
554static struct omap_hwmod_class omap44xx_dss_hwmod_class = {
555 .name = "dss",
556 .sysc = &omap44xx_dss_sysc,
Tomi Valkeinen13662dc2011-11-08 03:16:13 -0700557 .reset = omap_dss_reset,
Benoit Coussond63bd742011-01-27 11:17:03 +0000558};
559
560/* dss */
Benoit Coussond63bd742011-01-27 11:17:03 +0000561static struct omap_hwmod_opt_clk dss_opt_clks[] = {
562 { .role = "sys_clk", .clk = "dss_sys_clk" },
563 { .role = "tv_clk", .clk = "dss_tv_clk" },
Tomi Valkeinen4d0698d2011-11-08 03:16:12 -0700564 { .role = "hdmi_clk", .clk = "dss_48mhz_clk" },
Benoit Coussond63bd742011-01-27 11:17:03 +0000565};
566
567static struct omap_hwmod omap44xx_dss_hwmod = {
568 .name = "dss_core",
Tomi Valkeinen37ad0852011-11-08 03:16:11 -0700569 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
Benoit Coussond63bd742011-01-27 11:17:03 +0000570 .class = &omap44xx_dss_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600571 .clkdm_name = "l3_dss_clkdm",
Tomi Valkeinenda7cdfa2011-07-09 20:39:45 -0600572 .main_clk = "dss_dss_clk",
Benoit Coussond63bd742011-01-27 11:17:03 +0000573 .prcm = {
574 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600575 .clkctrl_offs = OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600576 .context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET,
Tomi Valkeinen7ede8562014-10-09 17:03:17 +0300577 .modulemode = MODULEMODE_SWCTRL,
Benoit Coussond63bd742011-01-27 11:17:03 +0000578 },
579 },
580 .opt_clks = dss_opt_clks,
581 .opt_clks_cnt = ARRAY_SIZE(dss_opt_clks),
Benoit Coussond63bd742011-01-27 11:17:03 +0000582};
583
584/*
585 * 'dispc' class
586 * display controller
587 */
588
589static 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
602static struct omap_hwmod_class omap44xx_dispc_hwmod_class = {
603 .name = "dispc",
604 .sysc = &omap44xx_dispc_sysc,
605};
606
607/* dss_dispc */
Archit Tanejab923d402011-10-06 18:04:08 -0600608static struct omap_dss_dispc_dev_attr omap44xx_dss_dispc_dev_attr = {
609 .manager_count = 3,
610 .has_framedonetv_irq = 1
611};
612
Benoit Coussond63bd742011-01-27 11:17:03 +0000613static struct omap_hwmod omap44xx_dss_dispc_hwmod = {
614 .name = "dss_dispc",
615 .class = &omap44xx_dispc_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600616 .clkdm_name = "l3_dss_clkdm",
Tomi Valkeinenda7cdfa2011-07-09 20:39:45 -0600617 .main_clk = "dss_dss_clk",
Benoit Coussond63bd742011-01-27 11:17:03 +0000618 .prcm = {
619 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600620 .clkctrl_offs = OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600621 .context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET,
Benoit Coussond63bd742011-01-27 11:17:03 +0000622 },
623 },
Tomi Valkeinen543b2842014-10-09 17:03:16 +0300624 .dev_attr = &omap44xx_dss_dispc_dev_attr,
625 .parent_hwmod = &omap44xx_dss_hwmod,
Benoit Coussond63bd742011-01-27 11:17:03 +0000626};
627
628/*
629 * 'dsi' class
630 * display serial interface controller
631 */
632
633static 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
644static struct omap_hwmod_class omap44xx_dsi_hwmod_class = {
645 .name = "dsi",
646 .sysc = &omap44xx_dsi_sysc,
647};
648
649/* dss_dsi1 */
Tomi Valkeinen3a23aaf2011-07-09 20:39:44 -0600650static struct omap_hwmod_opt_clk dss_dsi1_opt_clks[] = {
651 { .role = "sys_clk", .clk = "dss_sys_clk" },
652};
653
Benoit Coussond63bd742011-01-27 11:17:03 +0000654static struct omap_hwmod omap44xx_dss_dsi1_hwmod = {
655 .name = "dss_dsi1",
656 .class = &omap44xx_dsi_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600657 .clkdm_name = "l3_dss_clkdm",
Tomi Valkeinenda7cdfa2011-07-09 20:39:45 -0600658 .main_clk = "dss_dss_clk",
Benoit Coussond63bd742011-01-27 11:17:03 +0000659 .prcm = {
660 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600661 .clkctrl_offs = OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600662 .context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET,
Benoit Coussond63bd742011-01-27 11:17:03 +0000663 },
664 },
Tomi Valkeinen3a23aaf2011-07-09 20:39:44 -0600665 .opt_clks = dss_dsi1_opt_clks,
666 .opt_clks_cnt = ARRAY_SIZE(dss_dsi1_opt_clks),
Tomi Valkeinen543b2842014-10-09 17:03:16 +0300667 .parent_hwmod = &omap44xx_dss_hwmod,
Benoit Coussond63bd742011-01-27 11:17:03 +0000668};
669
670/* dss_dsi2 */
Tomi Valkeinen3a23aaf2011-07-09 20:39:44 -0600671static struct omap_hwmod_opt_clk dss_dsi2_opt_clks[] = {
672 { .role = "sys_clk", .clk = "dss_sys_clk" },
673};
674
Benoit Coussond63bd742011-01-27 11:17:03 +0000675static struct omap_hwmod omap44xx_dss_dsi2_hwmod = {
676 .name = "dss_dsi2",
677 .class = &omap44xx_dsi_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600678 .clkdm_name = "l3_dss_clkdm",
Tomi Valkeinenda7cdfa2011-07-09 20:39:45 -0600679 .main_clk = "dss_dss_clk",
Benoit Coussond63bd742011-01-27 11:17:03 +0000680 .prcm = {
681 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600682 .clkctrl_offs = OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600683 .context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET,
Benoit Coussond63bd742011-01-27 11:17:03 +0000684 },
685 },
Tomi Valkeinen3a23aaf2011-07-09 20:39:44 -0600686 .opt_clks = dss_dsi2_opt_clks,
687 .opt_clks_cnt = ARRAY_SIZE(dss_dsi2_opt_clks),
Tomi Valkeinen543b2842014-10-09 17:03:16 +0300688 .parent_hwmod = &omap44xx_dss_hwmod,
Benoit Coussond63bd742011-01-27 11:17:03 +0000689};
690
691/*
692 * 'hdmi' class
693 * hdmi controller
694 */
695
696static struct omap_hwmod_class_sysconfig omap44xx_hdmi_sysc = {
697 .rev_offs = 0x0000,
698 .sysc_offs = 0x0010,
699 .sysc_flags = (SYSC_HAS_RESET_STATUS | SYSC_HAS_SIDLEMODE |
700 SYSC_HAS_SOFTRESET),
701 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
702 SIDLE_SMART_WKUP),
703 .sysc_fields = &omap_hwmod_sysc_type2,
704};
705
706static struct omap_hwmod_class omap44xx_hdmi_hwmod_class = {
707 .name = "hdmi",
708 .sysc = &omap44xx_hdmi_sysc,
709};
710
711/* dss_hdmi */
Tomi Valkeinen3a23aaf2011-07-09 20:39:44 -0600712static struct omap_hwmod_opt_clk dss_hdmi_opt_clks[] = {
713 { .role = "sys_clk", .clk = "dss_sys_clk" },
Tero Kristo24d8d492017-05-31 17:59:59 +0300714 { .role = "hdmi_clk", .clk = "dss_48mhz_clk" },
Tomi Valkeinen3a23aaf2011-07-09 20:39:44 -0600715};
716
Benoit Coussond63bd742011-01-27 11:17:03 +0000717static struct omap_hwmod omap44xx_dss_hdmi_hwmod = {
718 .name = "dss_hdmi",
719 .class = &omap44xx_hdmi_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600720 .clkdm_name = "l3_dss_clkdm",
Ricardo Neridc57aef2012-06-21 10:08:53 +0200721 /*
722 * HDMI audio requires to use no-idle mode. Hence,
723 * set idle mode by software.
724 */
Tero Kristo24d8d492017-05-31 17:59:59 +0300725 .flags = HWMOD_SWSUP_SIDLE | HWMOD_OPT_CLKS_NEEDED,
Tomi Valkeinen4d0698d2011-11-08 03:16:12 -0700726 .main_clk = "dss_48mhz_clk",
Benoit Coussond63bd742011-01-27 11:17:03 +0000727 .prcm = {
728 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600729 .clkctrl_offs = OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600730 .context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET,
Benoit Coussond63bd742011-01-27 11:17:03 +0000731 },
732 },
Tomi Valkeinen3a23aaf2011-07-09 20:39:44 -0600733 .opt_clks = dss_hdmi_opt_clks,
734 .opt_clks_cnt = ARRAY_SIZE(dss_hdmi_opt_clks),
Tomi Valkeinen543b2842014-10-09 17:03:16 +0300735 .parent_hwmod = &omap44xx_dss_hwmod,
Benoit Coussond63bd742011-01-27 11:17:03 +0000736};
737
738/*
739 * 'rfbi' class
740 * remote frame buffer interface
741 */
742
743static 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
753static struct omap_hwmod_class omap44xx_rfbi_hwmod_class = {
754 .name = "rfbi",
755 .sysc = &omap44xx_rfbi_sysc,
756};
757
758/* dss_rfbi */
Tomi Valkeinen3a23aaf2011-07-09 20:39:44 -0600759static struct omap_hwmod_opt_clk dss_rfbi_opt_clks[] = {
Tomi Valkeinen2cc84f42014-10-09 17:03:18 +0300760 { .role = "ick", .clk = "l3_div_ck" },
Tomi Valkeinen3a23aaf2011-07-09 20:39:44 -0600761};
762
Benoit Coussond63bd742011-01-27 11:17:03 +0000763static struct omap_hwmod omap44xx_dss_rfbi_hwmod = {
764 .name = "dss_rfbi",
765 .class = &omap44xx_rfbi_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600766 .clkdm_name = "l3_dss_clkdm",
Tomi Valkeinenda7cdfa2011-07-09 20:39:45 -0600767 .main_clk = "dss_dss_clk",
Benoit Coussond63bd742011-01-27 11:17:03 +0000768 .prcm = {
769 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600770 .clkctrl_offs = OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600771 .context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET,
Benoit Coussond63bd742011-01-27 11:17:03 +0000772 },
773 },
Tomi Valkeinen3a23aaf2011-07-09 20:39:44 -0600774 .opt_clks = dss_rfbi_opt_clks,
775 .opt_clks_cnt = ARRAY_SIZE(dss_rfbi_opt_clks),
Tomi Valkeinen543b2842014-10-09 17:03:16 +0300776 .parent_hwmod = &omap44xx_dss_hwmod,
Benoit Coussond63bd742011-01-27 11:17:03 +0000777};
778
779/*
780 * 'venc' class
781 * video encoder
782 */
783
784static struct omap_hwmod_class omap44xx_venc_hwmod_class = {
785 .name = "venc",
786};
787
788/* dss_venc */
Tero Kristo24d8d492017-05-31 17:59:59 +0300789static struct omap_hwmod_opt_clk dss_venc_opt_clks[] = {
790 { .role = "tv_clk", .clk = "dss_tv_clk" },
791};
792
Benoit Coussond63bd742011-01-27 11:17:03 +0000793static struct omap_hwmod omap44xx_dss_venc_hwmod = {
794 .name = "dss_venc",
795 .class = &omap44xx_venc_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -0600796 .clkdm_name = "l3_dss_clkdm",
Tomi Valkeinen4d0698d2011-11-08 03:16:12 -0700797 .main_clk = "dss_tv_clk",
Tero Kristo24d8d492017-05-31 17:59:59 +0300798 .flags = HWMOD_OPT_CLKS_NEEDED,
Benoit Coussond63bd742011-01-27 11:17:03 +0000799 .prcm = {
800 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -0600801 .clkctrl_offs = OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -0600802 .context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET,
Benoit Coussond63bd742011-01-27 11:17:03 +0000803 },
804 },
Tomi Valkeinen543b2842014-10-09 17:03:16 +0300805 .parent_hwmod = &omap44xx_dss_hwmod,
Tero Kristo24d8d492017-05-31 17:59:59 +0300806 .opt_clks = dss_venc_opt_clks,
807 .opt_clks_cnt = ARRAY_SIZE(dss_venc_opt_clks),
Benoit Coussond63bd742011-01-27 11:17:03 +0000808};
809
Tero Kristo1df5eaa2017-06-13 16:45:50 +0300810/* sha0 HIB2 (the 'P' (public) device) */
811static 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
818static struct omap_hwmod_class omap44xx_sha0_hwmod_class = {
819 .name = "sham",
820 .sysc = &omap44xx_sha0_sysc,
821};
822
823struct 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
Benoit Coussond63bd742011-01-27 11:17:03 +0000837/*
Paul Walmsley42b9e382012-04-19 13:33:54 -0600838 * 'elm' class
839 * bch error location module
840 */
841
842static 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
853static struct omap_hwmod_class omap44xx_elm_hwmod_class = {
854 .name = "elm",
855 .sysc = &omap44xx_elm_sysc,
856};
857
858/* elm */
Paul Walmsley42b9e382012-04-19 13:33:54 -0600859static struct omap_hwmod omap44xx_elm_hwmod = {
860 .name = "elm",
861 .class = &omap44xx_elm_hwmod_class,
862 .clkdm_name = "l4_per_clkdm",
Paul Walmsley42b9e382012-04-19 13:33:54 -0600863 .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/*
Paul Walmsleybf30f952012-04-19 13:33:52 -0600872 * 'emif' class
873 * external memory interface no1
874 */
875
876static struct omap_hwmod_class_sysconfig omap44xx_emif_sysc = {
877 .rev_offs = 0x0000,
878};
879
880static struct omap_hwmod_class omap44xx_emif_hwmod_class = {
881 .name = "emif",
882 .sysc = &omap44xx_emif_sysc,
883};
884
885/* emif1 */
Paul Walmsleybf30f952012-04-19 13:33:52 -0600886static struct omap_hwmod omap44xx_emif1_hwmod = {
887 .name = "emif1",
888 .class = &omap44xx_emif_hwmod_class,
889 .clkdm_name = "l3_emif_clkdm",
Rajendra Nayakb2eb0002013-08-20 13:02:44 +0530890 .flags = HWMOD_INIT_NO_IDLE,
Paul Walmsleybf30f952012-04-19 13:33:52 -0600891 .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 */
Paul Walmsleybf30f952012-04-19 13:33:52 -0600902static struct omap_hwmod omap44xx_emif2_hwmod = {
903 .name = "emif2",
904 .class = &omap44xx_emif_hwmod_class,
905 .clkdm_name = "l3_emif_clkdm",
Rajendra Nayakb2eb0002013-08-20 13:02:44 +0530906 .flags = HWMOD_INIT_NO_IDLE,
Paul Walmsleybf30f952012-04-19 13:33:52 -0600907 .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/*
Sebastian Reichel9a9ded82017-06-13 11:28:45 +0200918 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*/
924static 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
931static struct omap_hwmod_class omap44xx_aes_hwmod_class = {
932 .name = "aes",
933 .sysc = &omap44xx_aes_sysc,
934};
935
936static 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
950static 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
Sebastian Reichel478523d2017-06-13 11:28:46 +0200957static 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
971static 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
Sebastian Reichel9a9ded82017-06-13 11:28:45 +0200978/*
Sebastian Reichelebea90d2017-06-13 11:28:47 +0200979 * 'des' class for DES3DES module
980 */
981static 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
988static struct omap_hwmod_class omap44xx_des_hwmod_class = {
989 .name = "des",
990 .sysc = &omap44xx_des_sysc,
991};
992
993static 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
1007struct 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/*
Ming Leib050f682012-04-19 13:33:50 -06001015 * 'fdif' class
1016 * face detection hw accelerator module
1017 */
1018
1019static 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
1038static struct omap_hwmod_class omap44xx_fdif_hwmod_class = {
1039 .name = "fdif",
1040 .sysc = &omap44xx_fdif_sysc,
1041};
1042
1043/* fdif */
Ming Leib050f682012-04-19 13:33:50 -06001044static struct omap_hwmod omap44xx_fdif_hwmod = {
1045 .name = "fdif",
1046 .class = &omap44xx_fdif_hwmod_class,
1047 .clkdm_name = "iss_clkdm",
Ming Leib050f682012-04-19 13:33:50 -06001048 .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/*
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001059 * 'gpio' class
1060 * general purpose io module
1061 */
1062
1063static struct omap_hwmod_class_sysconfig omap44xx_gpio_sysc = {
1064 .rev_offs = 0x0000,
1065 .sysc_offs = 0x0010,
1066 .syss_offs = 0x0114,
Benoit Cousson0cfe8752010-12-21 21:08:33 -07001067 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_ENAWAKEUP |
1068 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
1069 SYSS_HAS_RESET_STATUS),
Benoit Cousson7cffa6b2010-12-21 21:31:28 -07001070 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1071 SIDLE_SMART_WKUP),
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001072 .sysc_fields = &omap_hwmod_sysc_type1,
1073};
1074
1075static struct omap_hwmod_class omap44xx_gpio_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +00001076 .name = "gpio",
1077 .sysc = &omap44xx_gpio_sysc,
1078 .rev = 2,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001079};
1080
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001081/* gpio1 */
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001082static struct omap_hwmod_opt_clk gpio1_opt_clks[] = {
Benoit Coussonb399bca2010-12-21 21:08:34 -07001083 { .role = "dbclk", .clk = "gpio1_dbclk" },
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001084};
1085
1086static struct omap_hwmod omap44xx_gpio1_hwmod = {
1087 .name = "gpio1",
1088 .class = &omap44xx_gpio_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001089 .clkdm_name = "l4_wkup_clkdm",
Paul Walmsley17b7e7d2013-01-26 00:48:54 -07001090 .main_clk = "l4_wkup_clk_mux_ck",
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001091 .prcm = {
1092 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001093 .clkctrl_offs = OMAP4_CM_WKUP_GPIO1_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001094 .context_offs = OMAP4_RM_WKUP_GPIO1_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001095 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001096 },
1097 },
1098 .opt_clks = gpio1_opt_clks,
1099 .opt_clks_cnt = ARRAY_SIZE(gpio1_opt_clks),
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001100};
1101
1102/* gpio2 */
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001103static struct omap_hwmod_opt_clk gpio2_opt_clks[] = {
Benoit Coussonb399bca2010-12-21 21:08:34 -07001104 { .role = "dbclk", .clk = "gpio2_dbclk" },
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001105};
1106
1107static struct omap_hwmod omap44xx_gpio2_hwmod = {
1108 .name = "gpio2",
1109 .class = &omap44xx_gpio_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001110 .clkdm_name = "l4_per_clkdm",
Benoit Coussonb399bca2010-12-21 21:08:34 -07001111 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
Paul Walmsley17b7e7d2013-01-26 00:48:54 -07001112 .main_clk = "l4_div_ck",
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001113 .prcm = {
1114 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001115 .clkctrl_offs = OMAP4_CM_L4PER_GPIO2_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001116 .context_offs = OMAP4_RM_L4PER_GPIO2_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001117 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001118 },
1119 },
1120 .opt_clks = gpio2_opt_clks,
1121 .opt_clks_cnt = ARRAY_SIZE(gpio2_opt_clks),
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001122};
1123
1124/* gpio3 */
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001125static struct omap_hwmod_opt_clk gpio3_opt_clks[] = {
Benoit Coussonb399bca2010-12-21 21:08:34 -07001126 { .role = "dbclk", .clk = "gpio3_dbclk" },
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001127};
1128
1129static struct omap_hwmod omap44xx_gpio3_hwmod = {
1130 .name = "gpio3",
1131 .class = &omap44xx_gpio_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001132 .clkdm_name = "l4_per_clkdm",
Benoit Coussonb399bca2010-12-21 21:08:34 -07001133 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
Paul Walmsley17b7e7d2013-01-26 00:48:54 -07001134 .main_clk = "l4_div_ck",
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001135 .prcm = {
1136 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001137 .clkctrl_offs = OMAP4_CM_L4PER_GPIO3_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001138 .context_offs = OMAP4_RM_L4PER_GPIO3_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001139 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001140 },
1141 },
1142 .opt_clks = gpio3_opt_clks,
1143 .opt_clks_cnt = ARRAY_SIZE(gpio3_opt_clks),
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001144};
1145
1146/* gpio4 */
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001147static struct omap_hwmod_opt_clk gpio4_opt_clks[] = {
Benoit Coussonb399bca2010-12-21 21:08:34 -07001148 { .role = "dbclk", .clk = "gpio4_dbclk" },
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001149};
1150
1151static struct omap_hwmod omap44xx_gpio4_hwmod = {
1152 .name = "gpio4",
1153 .class = &omap44xx_gpio_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001154 .clkdm_name = "l4_per_clkdm",
Benoit Coussonb399bca2010-12-21 21:08:34 -07001155 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
Paul Walmsley17b7e7d2013-01-26 00:48:54 -07001156 .main_clk = "l4_div_ck",
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001157 .prcm = {
1158 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001159 .clkctrl_offs = OMAP4_CM_L4PER_GPIO4_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001160 .context_offs = OMAP4_RM_L4PER_GPIO4_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001161 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001162 },
1163 },
1164 .opt_clks = gpio4_opt_clks,
1165 .opt_clks_cnt = ARRAY_SIZE(gpio4_opt_clks),
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001166};
1167
1168/* gpio5 */
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001169static struct omap_hwmod_opt_clk gpio5_opt_clks[] = {
Benoit Coussonb399bca2010-12-21 21:08:34 -07001170 { .role = "dbclk", .clk = "gpio5_dbclk" },
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001171};
1172
1173static struct omap_hwmod omap44xx_gpio5_hwmod = {
1174 .name = "gpio5",
1175 .class = &omap44xx_gpio_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001176 .clkdm_name = "l4_per_clkdm",
Benoit Coussonb399bca2010-12-21 21:08:34 -07001177 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
Paul Walmsley17b7e7d2013-01-26 00:48:54 -07001178 .main_clk = "l4_div_ck",
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001179 .prcm = {
1180 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001181 .clkctrl_offs = OMAP4_CM_L4PER_GPIO5_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001182 .context_offs = OMAP4_RM_L4PER_GPIO5_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001183 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001184 },
1185 },
1186 .opt_clks = gpio5_opt_clks,
1187 .opt_clks_cnt = ARRAY_SIZE(gpio5_opt_clks),
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001188};
1189
1190/* gpio6 */
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001191static struct omap_hwmod_opt_clk gpio6_opt_clks[] = {
Benoit Coussonb399bca2010-12-21 21:08:34 -07001192 { .role = "dbclk", .clk = "gpio6_dbclk" },
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001193};
1194
1195static struct omap_hwmod omap44xx_gpio6_hwmod = {
1196 .name = "gpio6",
1197 .class = &omap44xx_gpio_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001198 .clkdm_name = "l4_per_clkdm",
Benoit Coussonb399bca2010-12-21 21:08:34 -07001199 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
Paul Walmsley17b7e7d2013-01-26 00:48:54 -07001200 .main_clk = "l4_div_ck",
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001201 .prcm = {
1202 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001203 .clkctrl_offs = OMAP4_CM_L4PER_GPIO6_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001204 .context_offs = OMAP4_RM_L4PER_GPIO6_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001205 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001206 },
1207 },
1208 .opt_clks = gpio6_opt_clks,
1209 .opt_clks_cnt = ARRAY_SIZE(gpio6_opt_clks),
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001210};
1211
1212/*
Benoît Coussoneb42b5d2012-04-19 13:33:51 -06001213 * 'gpmc' class
1214 * general purpose memory controller
1215 */
1216
1217static 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
1227static struct omap_hwmod_class omap44xx_gpmc_hwmod_class = {
1228 .name = "gpmc",
1229 .sysc = &omap44xx_gpmc_sysc,
1230};
1231
1232/* gpmc */
Benoît Coussoneb42b5d2012-04-19 13:33:51 -06001233static struct omap_hwmod omap44xx_gpmc_hwmod = {
1234 .name = "gpmc",
1235 .class = &omap44xx_gpmc_hwmod_class,
1236 .clkdm_name = "l3_2_clkdm",
Tony Lindgren63aa9452015-06-01 19:22:10 -06001237 /* Skip reset for CONFIG_OMAP_GPMC_DEBUG for bootloader timings */
1238 .flags = DEBUG_OMAP_GPMC_HWMOD_FLAGS,
Benoît Coussoneb42b5d2012-04-19 13:33:51 -06001239 .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/*
Paul Walmsley9def3902012-04-19 13:33:53 -06001249 * 'gpu' class
1250 * 2d/3d graphics accelerator
1251 */
1252
1253static 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
1263static struct omap_hwmod_class omap44xx_gpu_hwmod_class = {
1264 .name = "gpu",
1265 .sysc = &omap44xx_gpu_sysc,
1266};
1267
1268/* gpu */
Paul Walmsley9def3902012-04-19 13:33:53 -06001269static struct omap_hwmod omap44xx_gpu_hwmod = {
1270 .name = "gpu",
1271 .class = &omap44xx_gpu_hwmod_class,
1272 .clkdm_name = "l3_gfx_clkdm",
Paul Walmsleyee877ac2013-01-26 00:48:55 -07001273 .main_clk = "sgx_clk_mux",
Paul Walmsley9def3902012-04-19 13:33:53 -06001274 .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/*
Paul Walmsleya091c082012-04-19 13:33:50 -06001284 * 'hdq1w' class
1285 * hdq / 1-wire serial interface controller
1286 */
1287
1288static 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
1297static struct omap_hwmod_class omap44xx_hdq1w_hwmod_class = {
1298 .name = "hdq1w",
1299 .sysc = &omap44xx_hdq1w_sysc,
1300};
1301
1302/* hdq1w */
Paul Walmsleya091c082012-04-19 13:33:50 -06001303static 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 */
Paul Walmsley17b7e7d2013-01-26 00:48:54 -07001308 .main_clk = "func_12m_fclk",
Paul Walmsleya091c082012-04-19 13:33:50 -06001309 .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/*
Benoit Cousson407a6882011-02-15 22:39:48 +01001319 * 'hsi' class
1320 * mipi high-speed synchronous serial interface (multichannel and full-duplex
1321 * serial if)
1322 */
1323
1324static 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 |
Benoit Coussonc614ebf2011-07-01 22:54:01 +02001333 MSTANDBY_SMART | MSTANDBY_SMART_WKUP),
Benoit Cousson407a6882011-02-15 22:39:48 +01001334 .sysc_fields = &omap_hwmod_sysc_type1,
1335};
1336
1337static struct omap_hwmod_class omap44xx_hsi_hwmod_class = {
1338 .name = "hsi",
1339 .sysc = &omap44xx_hsi_sysc,
1340};
1341
1342/* hsi */
Benoit Cousson407a6882011-02-15 22:39:48 +01001343static struct omap_hwmod omap44xx_hsi_hwmod = {
1344 .name = "hsi",
1345 .class = &omap44xx_hsi_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001346 .clkdm_name = "l3_init_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +01001347 .main_clk = "hsi_fck",
Benoit Cousson00fe6102011-07-09 19:14:28 -06001348 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01001349 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001350 .clkctrl_offs = OMAP4_CM_L3INIT_HSI_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001351 .context_offs = OMAP4_RM_L3INIT_HSI_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001352 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01001353 },
1354 },
Benoit Cousson407a6882011-02-15 22:39:48 +01001355};
1356
1357/*
Benoit Coussonf7764712010-09-21 19:37:14 +05301358 * 'i2c' class
1359 * multimaster high-speed i2c controller
1360 */
1361
1362static struct omap_hwmod_class_sysconfig omap44xx_i2c_sysc = {
Tony Lindgren103fd8e2018-04-16 10:21:15 -07001363 .rev_offs = 0,
Benoit Coussonf7764712010-09-21 19:37:14 +05301364 .sysc_offs = 0x0010,
1365 .syss_offs = 0x0090,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07001366 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
1367 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE |
Benoit Cousson0cfe8752010-12-21 21:08:33 -07001368 SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
Benoit Cousson7cffa6b2010-12-21 21:31:28 -07001369 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1370 SIDLE_SMART_WKUP),
Benoit Coussonf7764712010-09-21 19:37:14 +05301371 .sysc_fields = &omap_hwmod_sysc_type1,
1372};
1373
1374static struct omap_hwmod_class omap44xx_i2c_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +00001375 .name = "i2c",
1376 .sysc = &omap44xx_i2c_sysc,
Andy Greendb791a72011-07-10 05:27:15 -06001377 .rev = OMAP_I2C_IP_VERSION_2,
Avinash.H.M6d3c55f2011-07-10 05:27:16 -06001378 .reset = &omap_i2c_reset,
Benoit Coussonf7764712010-09-21 19:37:14 +05301379};
1380
1381/* i2c1 */
Benoit Coussonf7764712010-09-21 19:37:14 +05301382static struct omap_hwmod omap44xx_i2c1_hwmod = {
1383 .name = "i2c1",
1384 .class = &omap44xx_i2c_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001385 .clkdm_name = "l4_per_clkdm",
Shubhrajyoti D3e47dc62011-12-13 16:25:54 +05301386 .flags = HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT,
Paul Walmsley17b7e7d2013-01-26 00:48:54 -07001387 .main_clk = "func_96m_fclk",
Benoit Coussonf7764712010-09-21 19:37:14 +05301388 .prcm = {
1389 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001390 .clkctrl_offs = OMAP4_CM_L4PER_I2C1_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001391 .context_offs = OMAP4_RM_L4PER_I2C1_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001392 .modulemode = MODULEMODE_SWCTRL,
Benoit Coussonf7764712010-09-21 19:37:14 +05301393 },
1394 },
Benoit Coussonf7764712010-09-21 19:37:14 +05301395};
1396
1397/* i2c2 */
Benoit Coussonf7764712010-09-21 19:37:14 +05301398static struct omap_hwmod omap44xx_i2c2_hwmod = {
1399 .name = "i2c2",
1400 .class = &omap44xx_i2c_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001401 .clkdm_name = "l4_per_clkdm",
Shubhrajyoti D3e47dc62011-12-13 16:25:54 +05301402 .flags = HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT,
Paul Walmsley17b7e7d2013-01-26 00:48:54 -07001403 .main_clk = "func_96m_fclk",
Benoit Coussonf7764712010-09-21 19:37:14 +05301404 .prcm = {
1405 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001406 .clkctrl_offs = OMAP4_CM_L4PER_I2C2_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001407 .context_offs = OMAP4_RM_L4PER_I2C2_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001408 .modulemode = MODULEMODE_SWCTRL,
Benoit Coussonf7764712010-09-21 19:37:14 +05301409 },
1410 },
Benoit Coussonf7764712010-09-21 19:37:14 +05301411};
1412
1413/* i2c3 */
Benoit Coussonf7764712010-09-21 19:37:14 +05301414static struct omap_hwmod omap44xx_i2c3_hwmod = {
1415 .name = "i2c3",
1416 .class = &omap44xx_i2c_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001417 .clkdm_name = "l4_per_clkdm",
Shubhrajyoti D3e47dc62011-12-13 16:25:54 +05301418 .flags = HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT,
Paul Walmsley17b7e7d2013-01-26 00:48:54 -07001419 .main_clk = "func_96m_fclk",
Benoit Coussonf7764712010-09-21 19:37:14 +05301420 .prcm = {
1421 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001422 .clkctrl_offs = OMAP4_CM_L4PER_I2C3_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001423 .context_offs = OMAP4_RM_L4PER_I2C3_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001424 .modulemode = MODULEMODE_SWCTRL,
Benoit Coussonf7764712010-09-21 19:37:14 +05301425 },
1426 },
Benoit Coussonf7764712010-09-21 19:37:14 +05301427};
1428
1429/* i2c4 */
Benoit Coussonf7764712010-09-21 19:37:14 +05301430static struct omap_hwmod omap44xx_i2c4_hwmod = {
1431 .name = "i2c4",
1432 .class = &omap44xx_i2c_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001433 .clkdm_name = "l4_per_clkdm",
Shubhrajyoti D3e47dc62011-12-13 16:25:54 +05301434 .flags = HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT,
Paul Walmsley17b7e7d2013-01-26 00:48:54 -07001435 .main_clk = "func_96m_fclk",
Benoit Coussonf7764712010-09-21 19:37:14 +05301436 .prcm = {
1437 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001438 .clkctrl_offs = OMAP4_CM_L4PER_I2C4_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001439 .context_offs = OMAP4_RM_L4PER_I2C4_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001440 .modulemode = MODULEMODE_SWCTRL,
Benoit Coussonf7764712010-09-21 19:37:14 +05301441 },
1442 },
Benoit Coussonf7764712010-09-21 19:37:14 +05301443};
1444
1445/*
Benoit Cousson407a6882011-02-15 22:39:48 +01001446 * 'ipu' class
1447 * imaging processor unit
1448 */
1449
1450static struct omap_hwmod_class omap44xx_ipu_hwmod_class = {
1451 .name = "ipu",
1452};
1453
1454/* ipu */
Benoit Cousson407a6882011-02-15 22:39:48 +01001455static struct omap_hwmod_rst_info omap44xx_ipu_resets[] = {
Paul Walmsleyf2f57362012-04-18 19:10:02 -06001456 { .name = "cpu0", .rst_shift = 0 },
1457 { .name = "cpu1", .rst_shift = 1 },
Benoit Cousson407a6882011-02-15 22:39:48 +01001458};
1459
Benoit Cousson407a6882011-02-15 22:39:48 +01001460static struct omap_hwmod omap44xx_ipu_hwmod = {
1461 .name = "ipu",
1462 .class = &omap44xx_ipu_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001463 .clkdm_name = "ducati_clkdm",
Benoit Cousson407a6882011-02-15 22:39:48 +01001464 .rst_lines = omap44xx_ipu_resets,
1465 .rst_lines_cnt = ARRAY_SIZE(omap44xx_ipu_resets),
Omar Ramirez Luna298ea442012-11-19 19:05:52 -06001466 .main_clk = "ducati_clk_mux_ck",
Benoit Cousson00fe6102011-07-09 19:14:28 -06001467 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01001468 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001469 .clkctrl_offs = OMAP4_CM_DUCATI_DUCATI_CLKCTRL_OFFSET,
Benoit Coussoneaac3292011-07-10 05:56:31 -06001470 .rstctrl_offs = OMAP4_RM_DUCATI_RSTCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001471 .context_offs = OMAP4_RM_DUCATI_DUCATI_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001472 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01001473 },
1474 },
Benoit Cousson407a6882011-02-15 22:39:48 +01001475};
1476
1477/*
1478 * 'iss' class
1479 * external images sensor pixel data processor
1480 */
1481
1482static struct omap_hwmod_class_sysconfig omap44xx_iss_sysc = {
1483 .rev_offs = 0x0000,
1484 .sysc_offs = 0x0010,
Fernando Guzman Lugod99de7f2012-04-13 05:08:03 -06001485 /*
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,
Benoit Cousson407a6882011-02-15 22:39:48 +01001494 .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 |
Benoit Coussonc614ebf2011-07-01 22:54:01 +02001498 MSTANDBY_SMART | MSTANDBY_SMART_WKUP),
Benoit Cousson407a6882011-02-15 22:39:48 +01001499 .sysc_fields = &omap_hwmod_sysc_type2,
1500};
1501
1502static struct omap_hwmod_class omap44xx_iss_hwmod_class = {
1503 .name = "iss",
1504 .sysc = &omap44xx_iss_sysc,
1505};
1506
1507/* iss */
Benoit Cousson407a6882011-02-15 22:39:48 +01001508static struct omap_hwmod_opt_clk iss_opt_clks[] = {
1509 { .role = "ctrlclk", .clk = "iss_ctrlclk" },
1510};
1511
1512static struct omap_hwmod omap44xx_iss_hwmod = {
1513 .name = "iss",
1514 .class = &omap44xx_iss_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001515 .clkdm_name = "iss_clkdm",
Paul Walmsley17b7e7d2013-01-26 00:48:54 -07001516 .main_clk = "ducati_clk_mux_ck",
Benoit Cousson00fe6102011-07-09 19:14:28 -06001517 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01001518 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001519 .clkctrl_offs = OMAP4_CM_CAM_ISS_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001520 .context_offs = OMAP4_RM_CAM_ISS_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001521 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01001522 },
1523 },
1524 .opt_clks = iss_opt_clks,
1525 .opt_clks_cnt = ARRAY_SIZE(iss_opt_clks),
Benoit Cousson407a6882011-02-15 22:39:48 +01001526};
1527
1528/*
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001529 * 'iva' class
1530 * multi-standard video encoder/decoder hardware accelerator
1531 */
1532
1533static struct omap_hwmod_class omap44xx_iva_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +00001534 .name = "iva",
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001535};
1536
1537/* iva */
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001538static struct omap_hwmod_rst_info omap44xx_iva_resets[] = {
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001539 { .name = "seq0", .rst_shift = 0 },
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001540 { .name = "seq1", .rst_shift = 1 },
Paul Walmsleyf2f57362012-04-18 19:10:02 -06001541 { .name = "logic", .rst_shift = 2 },
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001542};
1543
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001544static struct omap_hwmod omap44xx_iva_hwmod = {
1545 .name = "iva",
1546 .class = &omap44xx_iva_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001547 .clkdm_name = "ivahd_clkdm",
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001548 .rst_lines = omap44xx_iva_resets,
1549 .rst_lines_cnt = ARRAY_SIZE(omap44xx_iva_resets),
Paul Walmsley17b7e7d2013-01-26 00:48:54 -07001550 .main_clk = "dpll_iva_m5x2_ck",
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001551 .prcm = {
1552 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001553 .clkctrl_offs = OMAP4_CM_IVAHD_IVAHD_CLKCTRL_OFFSET,
Benoit Coussoneaac3292011-07-10 05:56:31 -06001554 .rstctrl_offs = OMAP4_RM_IVAHD_RSTCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001555 .context_offs = OMAP4_RM_IVAHD_IVAHD_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001556 .modulemode = MODULEMODE_HWCTRL,
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001557 },
1558 },
Benoit Cousson8f25bdc2010-12-21 21:08:34 -07001559};
1560
1561/*
Benoit Cousson407a6882011-02-15 22:39:48 +01001562 * 'kbd' class
1563 * keyboard controller
1564 */
1565
1566static 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
1578static struct omap_hwmod_class omap44xx_kbd_hwmod_class = {
1579 .name = "kbd",
1580 .sysc = &omap44xx_kbd_sysc,
1581};
1582
1583/* kbd */
Benoit Cousson407a6882011-02-15 22:39:48 +01001584static struct omap_hwmod omap44xx_kbd_hwmod = {
1585 .name = "kbd",
1586 .class = &omap44xx_kbd_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001587 .clkdm_name = "l4_wkup_clkdm",
Paul Walmsley17b7e7d2013-01-26 00:48:54 -07001588 .main_clk = "sys_32k_ck",
Benoit Cousson00fe6102011-07-09 19:14:28 -06001589 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01001590 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001591 .clkctrl_offs = OMAP4_CM_WKUP_KEYBOARD_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001592 .context_offs = OMAP4_RM_WKUP_KEYBOARD_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001593 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01001594 },
1595 },
Benoit Cousson407a6882011-02-15 22:39:48 +01001596};
1597
1598/*
Benoit Coussonec5df922011-02-02 19:27:21 +00001599 * 'mailbox' class
1600 * mailbox module allowing communication between the on-chip processors using a
1601 * queued mailbox-interrupt mechanism.
1602 */
1603
1604static 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
1613static struct omap_hwmod_class omap44xx_mailbox_hwmod_class = {
1614 .name = "mailbox",
1615 .sysc = &omap44xx_mailbox_sysc,
1616};
1617
1618/* mailbox */
Benoit Coussonec5df922011-02-02 19:27:21 +00001619static struct omap_hwmod omap44xx_mailbox_hwmod = {
1620 .name = "mailbox",
1621 .class = &omap44xx_mailbox_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001622 .clkdm_name = "l4_cfg_clkdm",
Benoit Cousson00fe6102011-07-09 19:14:28 -06001623 .prcm = {
Benoit Coussonec5df922011-02-02 19:27:21 +00001624 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001625 .clkctrl_offs = OMAP4_CM_L4CFG_MAILBOX_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001626 .context_offs = OMAP4_RM_L4CFG_MAILBOX_CONTEXT_OFFSET,
Benoit Coussonec5df922011-02-02 19:27:21 +00001627 },
1628 },
Benoit Coussonec5df922011-02-02 19:27:21 +00001629};
1630
1631/*
Benoît Cousson896d4e92012-04-19 13:33:54 -06001632 * 'mcasp' class
1633 * multi-channel audio serial port controller
1634 */
1635
1636/* The IP is not compliant to type1 / type2 scheme */
Benoît Cousson896d4e92012-04-19 13:33:54 -06001637static struct omap_hwmod_class_sysconfig omap44xx_mcasp_sysc = {
Tony Lindgren103fd8e2018-04-16 10:21:15 -07001638 .rev_offs = 0,
Benoît Cousson896d4e92012-04-19 13:33:54 -06001639 .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
1646static struct omap_hwmod_class omap44xx_mcasp_hwmod_class = {
1647 .name = "mcasp",
1648 .sysc = &omap44xx_mcasp_sysc,
1649};
1650
1651/* mcasp */
Benoît Cousson896d4e92012-04-19 13:33:54 -06001652static struct omap_hwmod omap44xx_mcasp_hwmod = {
1653 .name = "mcasp",
1654 .class = &omap44xx_mcasp_hwmod_class,
1655 .clkdm_name = "abe_clkdm",
Paul Walmsleyee877ac2013-01-26 00:48:55 -07001656 .main_clk = "func_mcasp_abe_gfclk",
Benoît Cousson896d4e92012-04-19 13:33:54 -06001657 .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/*
Benoit Cousson4ddff492011-01-31 14:50:30 +00001667 * 'mcbsp' class
1668 * multi channel buffered serial port controller
1669 */
1670
1671static struct omap_hwmod_class_sysconfig omap44xx_mcbsp_sysc = {
Tony Lindgren103fd8e2018-04-16 10:21:15 -07001672 .rev_offs = -ENODEV,
Benoit Cousson4ddff492011-01-31 14:50:30 +00001673 .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
1680static struct omap_hwmod_class omap44xx_mcbsp_hwmod_class = {
1681 .name = "mcbsp",
1682 .sysc = &omap44xx_mcbsp_sysc,
1683};
1684
1685/* mcbsp1 */
Paul Walmsley503d0ea2012-04-04 09:11:48 -06001686static struct omap_hwmod_opt_clk mcbsp1_opt_clks[] = {
1687 { .role = "pad_fck", .clk = "pad_clks_ck" },
Benoit Coussond7a0b512012-07-04 06:55:29 -06001688 { .role = "prcm_fck", .clk = "mcbsp1_sync_mux_ck" },
Paul Walmsley503d0ea2012-04-04 09:11:48 -06001689};
1690
Benoit Cousson4ddff492011-01-31 14:50:30 +00001691static struct omap_hwmod omap44xx_mcbsp1_hwmod = {
1692 .name = "mcbsp1",
1693 .class = &omap44xx_mcbsp_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001694 .clkdm_name = "abe_clkdm",
Paul Walmsleyee877ac2013-01-26 00:48:55 -07001695 .main_clk = "func_mcbsp1_gfclk",
Benoit Cousson4ddff492011-01-31 14:50:30 +00001696 .prcm = {
1697 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001698 .clkctrl_offs = OMAP4_CM1_ABE_MCBSP1_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001699 .context_offs = OMAP4_RM_ABE_MCBSP1_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001700 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson4ddff492011-01-31 14:50:30 +00001701 },
1702 },
Paul Walmsley503d0ea2012-04-04 09:11:48 -06001703 .opt_clks = mcbsp1_opt_clks,
1704 .opt_clks_cnt = ARRAY_SIZE(mcbsp1_opt_clks),
Benoit Cousson4ddff492011-01-31 14:50:30 +00001705};
1706
1707/* mcbsp2 */
Paul Walmsley503d0ea2012-04-04 09:11:48 -06001708static struct omap_hwmod_opt_clk mcbsp2_opt_clks[] = {
1709 { .role = "pad_fck", .clk = "pad_clks_ck" },
Benoit Coussond7a0b512012-07-04 06:55:29 -06001710 { .role = "prcm_fck", .clk = "mcbsp2_sync_mux_ck" },
Paul Walmsley503d0ea2012-04-04 09:11:48 -06001711};
1712
Benoit Cousson4ddff492011-01-31 14:50:30 +00001713static struct omap_hwmod omap44xx_mcbsp2_hwmod = {
1714 .name = "mcbsp2",
1715 .class = &omap44xx_mcbsp_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001716 .clkdm_name = "abe_clkdm",
Paul Walmsleyee877ac2013-01-26 00:48:55 -07001717 .main_clk = "func_mcbsp2_gfclk",
Benoit Cousson4ddff492011-01-31 14:50:30 +00001718 .prcm = {
1719 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001720 .clkctrl_offs = OMAP4_CM1_ABE_MCBSP2_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001721 .context_offs = OMAP4_RM_ABE_MCBSP2_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001722 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson4ddff492011-01-31 14:50:30 +00001723 },
1724 },
Paul Walmsley503d0ea2012-04-04 09:11:48 -06001725 .opt_clks = mcbsp2_opt_clks,
1726 .opt_clks_cnt = ARRAY_SIZE(mcbsp2_opt_clks),
Benoit Cousson4ddff492011-01-31 14:50:30 +00001727};
1728
1729/* mcbsp3 */
Paul Walmsley503d0ea2012-04-04 09:11:48 -06001730static struct omap_hwmod_opt_clk mcbsp3_opt_clks[] = {
1731 { .role = "pad_fck", .clk = "pad_clks_ck" },
Benoit Coussond7a0b512012-07-04 06:55:29 -06001732 { .role = "prcm_fck", .clk = "mcbsp3_sync_mux_ck" },
Paul Walmsley503d0ea2012-04-04 09:11:48 -06001733};
1734
Benoit Cousson4ddff492011-01-31 14:50:30 +00001735static struct omap_hwmod omap44xx_mcbsp3_hwmod = {
1736 .name = "mcbsp3",
1737 .class = &omap44xx_mcbsp_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001738 .clkdm_name = "abe_clkdm",
Paul Walmsleyee877ac2013-01-26 00:48:55 -07001739 .main_clk = "func_mcbsp3_gfclk",
Benoit Cousson4ddff492011-01-31 14:50:30 +00001740 .prcm = {
1741 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001742 .clkctrl_offs = OMAP4_CM1_ABE_MCBSP3_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001743 .context_offs = OMAP4_RM_ABE_MCBSP3_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001744 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson4ddff492011-01-31 14:50:30 +00001745 },
1746 },
Paul Walmsley503d0ea2012-04-04 09:11:48 -06001747 .opt_clks = mcbsp3_opt_clks,
1748 .opt_clks_cnt = ARRAY_SIZE(mcbsp3_opt_clks),
Benoit Cousson4ddff492011-01-31 14:50:30 +00001749};
1750
1751/* mcbsp4 */
Paul Walmsley503d0ea2012-04-04 09:11:48 -06001752static struct omap_hwmod_opt_clk mcbsp4_opt_clks[] = {
1753 { .role = "pad_fck", .clk = "pad_clks_ck" },
Benoit Coussond7a0b512012-07-04 06:55:29 -06001754 { .role = "prcm_fck", .clk = "mcbsp4_sync_mux_ck" },
Paul Walmsley503d0ea2012-04-04 09:11:48 -06001755};
1756
Benoit Cousson4ddff492011-01-31 14:50:30 +00001757static struct omap_hwmod omap44xx_mcbsp4_hwmod = {
1758 .name = "mcbsp4",
1759 .class = &omap44xx_mcbsp_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001760 .clkdm_name = "l4_per_clkdm",
Paul Walmsleyee877ac2013-01-26 00:48:55 -07001761 .main_clk = "per_mcbsp4_gfclk",
Benoit Cousson4ddff492011-01-31 14:50:30 +00001762 .prcm = {
1763 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001764 .clkctrl_offs = OMAP4_CM_L4PER_MCBSP4_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001765 .context_offs = OMAP4_RM_L4PER_MCBSP4_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001766 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson4ddff492011-01-31 14:50:30 +00001767 },
1768 },
Paul Walmsley503d0ea2012-04-04 09:11:48 -06001769 .opt_clks = mcbsp4_opt_clks,
1770 .opt_clks_cnt = ARRAY_SIZE(mcbsp4_opt_clks),
Benoit Cousson4ddff492011-01-31 14:50:30 +00001771};
1772
1773/*
Benoit Cousson407a6882011-02-15 22:39:48 +01001774 * 'mcpdm' class
1775 * multi channel pdm controller (proprietary interface with phoenix power
1776 * ic)
1777 */
1778
1779static 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
1789static struct omap_hwmod_class omap44xx_mcpdm_hwmod_class = {
1790 .name = "mcpdm",
1791 .sysc = &omap44xx_mcpdm_sysc,
1792};
1793
1794/* mcpdm */
Benoit Cousson407a6882011-02-15 22:39:48 +01001795static struct omap_hwmod omap44xx_mcpdm_hwmod = {
1796 .name = "mcpdm",
1797 .class = &omap44xx_mcpdm_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001798 .clkdm_name = "abe_clkdm",
Paul Walmsleybc052442012-10-29 22:02:14 -06001799 /*
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.
Peter Ujfalusi12d82e42013-01-18 16:48:16 -07001805 *
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.
Paul Walmsleybc052442012-10-29 22:02:14 -06001809 */
Peter Ujfalusi12d82e42013-01-18 16:48:16 -07001810 .flags = HWMOD_EXT_OPT_MAIN_CLK | HWMOD_SWSUP_SIDLE,
Paul Walmsley17b7e7d2013-01-26 00:48:54 -07001811 .main_clk = "pad_clks_ck",
Benoit Cousson00fe6102011-07-09 19:14:28 -06001812 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01001813 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001814 .clkctrl_offs = OMAP4_CM1_ABE_PDM_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001815 .context_offs = OMAP4_RM_ABE_PDM_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001816 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01001817 },
1818 },
Benoit Cousson407a6882011-02-15 22:39:48 +01001819};
1820
1821/*
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301822 * 'mcspi' class
1823 * multichannel serial port interface (mcspi) / master/slave synchronous serial
1824 * bus
1825 */
1826
1827static 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
1837static struct omap_hwmod_class omap44xx_mcspi_hwmod_class = {
1838 .name = "mcspi",
1839 .sysc = &omap44xx_mcspi_sysc,
1840};
1841
1842/* mcspi1 */
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301843static struct omap_hwmod omap44xx_mcspi1_hwmod = {
1844 .name = "mcspi1",
1845 .class = &omap44xx_mcspi_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001846 .clkdm_name = "l4_per_clkdm",
Paul Walmsley17b7e7d2013-01-26 00:48:54 -07001847 .main_clk = "func_48m_fclk",
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301848 .prcm = {
1849 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001850 .clkctrl_offs = OMAP4_CM_L4PER_MCSPI1_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001851 .context_offs = OMAP4_RM_L4PER_MCSPI1_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001852 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301853 },
1854 },
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301855};
1856
1857/* mcspi2 */
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301858static struct omap_hwmod omap44xx_mcspi2_hwmod = {
1859 .name = "mcspi2",
1860 .class = &omap44xx_mcspi_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001861 .clkdm_name = "l4_per_clkdm",
Paul Walmsley17b7e7d2013-01-26 00:48:54 -07001862 .main_clk = "func_48m_fclk",
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301863 .prcm = {
1864 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001865 .clkctrl_offs = OMAP4_CM_L4PER_MCSPI2_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001866 .context_offs = OMAP4_RM_L4PER_MCSPI2_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001867 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301868 },
1869 },
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301870};
1871
1872/* mcspi3 */
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301873static struct omap_hwmod omap44xx_mcspi3_hwmod = {
1874 .name = "mcspi3",
1875 .class = &omap44xx_mcspi_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001876 .clkdm_name = "l4_per_clkdm",
Paul Walmsley17b7e7d2013-01-26 00:48:54 -07001877 .main_clk = "func_48m_fclk",
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301878 .prcm = {
1879 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001880 .clkctrl_offs = OMAP4_CM_L4PER_MCSPI3_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001881 .context_offs = OMAP4_RM_L4PER_MCSPI3_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001882 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301883 },
1884 },
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301885};
1886
1887/* mcspi4 */
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301888static struct omap_hwmod omap44xx_mcspi4_hwmod = {
1889 .name = "mcspi4",
1890 .class = &omap44xx_mcspi_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001891 .clkdm_name = "l4_per_clkdm",
Paul Walmsley17b7e7d2013-01-26 00:48:54 -07001892 .main_clk = "func_48m_fclk",
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301893 .prcm = {
1894 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001895 .clkctrl_offs = OMAP4_CM_L4PER_MCSPI4_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001896 .context_offs = OMAP4_RM_L4PER_MCSPI4_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001897 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301898 },
1899 },
Benoit Cousson9bcbd7f2011-02-02 17:52:13 +05301900};
1901
1902/*
Benoit Cousson407a6882011-02-15 22:39:48 +01001903 * 'mmc' class
1904 * multimedia card high-speed/sd/sdio (mmc/sd/sdio) host controller
1905 */
1906
1907static 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 |
Benoit Coussonc614ebf2011-07-01 22:54:01 +02001915 MSTANDBY_SMART | MSTANDBY_SMART_WKUP),
Benoit Cousson407a6882011-02-15 22:39:48 +01001916 .sysc_fields = &omap_hwmod_sysc_type2,
1917};
1918
1919static struct omap_hwmod_class omap44xx_mmc_hwmod_class = {
1920 .name = "mmc",
1921 .sysc = &omap44xx_mmc_sysc,
1922};
1923
1924/* mmc1 */
Andreas Fenkart551434382014-11-08 15:33:09 +01001925static struct omap_hsmmc_dev_attr mmc1_dev_attr = {
Kishore Kadiyala6ab89462011-03-01 13:12:56 -08001926 .flags = OMAP_HSMMC_SUPPORTS_DUAL_VOLT,
1927};
1928
Benoit Cousson407a6882011-02-15 22:39:48 +01001929static struct omap_hwmod omap44xx_mmc1_hwmod = {
1930 .name = "mmc1",
1931 .class = &omap44xx_mmc_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001932 .clkdm_name = "l3_init_clkdm",
Paul Walmsleyee877ac2013-01-26 00:48:55 -07001933 .main_clk = "hsmmc1_fclk",
Benoit Cousson00fe6102011-07-09 19:14:28 -06001934 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01001935 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001936 .clkctrl_offs = OMAP4_CM_L3INIT_MMC1_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001937 .context_offs = OMAP4_RM_L3INIT_MMC1_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001938 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01001939 },
1940 },
Kishore Kadiyala6ab89462011-03-01 13:12:56 -08001941 .dev_attr = &mmc1_dev_attr,
Benoit Cousson407a6882011-02-15 22:39:48 +01001942};
1943
1944/* mmc2 */
Benoit Cousson407a6882011-02-15 22:39:48 +01001945static struct omap_hwmod omap44xx_mmc2_hwmod = {
1946 .name = "mmc2",
1947 .class = &omap44xx_mmc_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001948 .clkdm_name = "l3_init_clkdm",
Paul Walmsleyee877ac2013-01-26 00:48:55 -07001949 .main_clk = "hsmmc2_fclk",
Benoit Cousson00fe6102011-07-09 19:14:28 -06001950 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01001951 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001952 .clkctrl_offs = OMAP4_CM_L3INIT_MMC2_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001953 .context_offs = OMAP4_RM_L3INIT_MMC2_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001954 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01001955 },
1956 },
Benoit Cousson407a6882011-02-15 22:39:48 +01001957};
1958
1959/* mmc3 */
Benoit Cousson407a6882011-02-15 22:39:48 +01001960static struct omap_hwmod omap44xx_mmc3_hwmod = {
1961 .name = "mmc3",
1962 .class = &omap44xx_mmc_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001963 .clkdm_name = "l4_per_clkdm",
Paul Walmsley17b7e7d2013-01-26 00:48:54 -07001964 .main_clk = "func_48m_fclk",
Benoit Cousson00fe6102011-07-09 19:14:28 -06001965 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01001966 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001967 .clkctrl_offs = OMAP4_CM_L4PER_MMCSD3_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001968 .context_offs = OMAP4_RM_L4PER_MMCSD3_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001969 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01001970 },
1971 },
Benoit Cousson407a6882011-02-15 22:39:48 +01001972};
1973
1974/* mmc4 */
Benoit Cousson407a6882011-02-15 22:39:48 +01001975static struct omap_hwmod omap44xx_mmc4_hwmod = {
1976 .name = "mmc4",
1977 .class = &omap44xx_mmc_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001978 .clkdm_name = "l4_per_clkdm",
Paul Walmsley17b7e7d2013-01-26 00:48:54 -07001979 .main_clk = "func_48m_fclk",
Benoit Cousson00fe6102011-07-09 19:14:28 -06001980 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01001981 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001982 .clkctrl_offs = OMAP4_CM_L4PER_MMCSD4_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001983 .context_offs = OMAP4_RM_L4PER_MMCSD4_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001984 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01001985 },
1986 },
Benoit Cousson407a6882011-02-15 22:39:48 +01001987};
1988
1989/* mmc5 */
Benoit Cousson407a6882011-02-15 22:39:48 +01001990static struct omap_hwmod omap44xx_mmc5_hwmod = {
1991 .name = "mmc5",
1992 .class = &omap44xx_mmc_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06001993 .clkdm_name = "l4_per_clkdm",
Paul Walmsley17b7e7d2013-01-26 00:48:54 -07001994 .main_clk = "func_48m_fclk",
Benoit Cousson00fe6102011-07-09 19:14:28 -06001995 .prcm = {
Benoit Cousson407a6882011-02-15 22:39:48 +01001996 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06001997 .clkctrl_offs = OMAP4_CM_L4PER_MMCSD5_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06001998 .context_offs = OMAP4_RM_L4PER_MMCSD5_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06001999 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson407a6882011-02-15 22:39:48 +01002000 },
2001 },
Benoit Cousson407a6882011-02-15 22:39:48 +01002002};
2003
2004/*
Omar Ramirez Luna230844d2012-09-23 17:28:24 -06002005 * 'mmu' class
2006 * The memory management unit performs virtual to physical address translation
2007 * for its requestors.
2008 */
2009
2010static 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
2020static struct omap_hwmod_class omap44xx_mmu_hwmod_class = {
2021 .name = "mmu",
2022 .sysc = &mmu_sysc,
2023};
2024
2025/* mmu ipu */
2026
Omar Ramirez Luna230844d2012-09-23 17:28:24 -06002027static struct omap_hwmod omap44xx_mmu_ipu_hwmod;
Omar Ramirez Luna230844d2012-09-23 17:28:24 -06002028static struct omap_hwmod_rst_info omap44xx_mmu_ipu_resets[] = {
2029 { .name = "mmu_cache", .rst_shift = 2 },
2030};
2031
Omar Ramirez Luna230844d2012-09-23 17:28:24 -06002032/* l3_main_2 -> mmu_ipu */
2033static 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",
Omar Ramirez Luna230844d2012-09-23 17:28:24 -06002037 .user = OCP_USER_MPU | OCP_USER_SDMA,
2038};
2039
2040static struct omap_hwmod omap44xx_mmu_ipu_hwmod = {
2041 .name = "mmu_ipu",
2042 .class = &omap44xx_mmu_hwmod_class,
2043 .clkdm_name = "ducati_clkdm",
Omar Ramirez Luna230844d2012-09-23 17:28:24 -06002044 .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 },
Omar Ramirez Luna230844d2012-09-23 17:28:24 -06002055};
2056
2057/* mmu dsp */
2058
Omar Ramirez Luna230844d2012-09-23 17:28:24 -06002059static struct omap_hwmod omap44xx_mmu_dsp_hwmod;
Omar Ramirez Luna230844d2012-09-23 17:28:24 -06002060static struct omap_hwmod_rst_info omap44xx_mmu_dsp_resets[] = {
2061 { .name = "mmu_cache", .rst_shift = 1 },
2062};
2063
Omar Ramirez Luna230844d2012-09-23 17:28:24 -06002064/* l4_cfg -> dsp */
2065static 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",
Omar Ramirez Luna230844d2012-09-23 17:28:24 -06002069 .user = OCP_USER_MPU | OCP_USER_SDMA,
2070};
2071
2072static struct omap_hwmod omap44xx_mmu_dsp_hwmod = {
2073 .name = "mmu_dsp",
2074 .class = &omap44xx_mmu_hwmod_class,
2075 .clkdm_name = "tesla_clkdm",
Omar Ramirez Luna230844d2012-09-23 17:28:24 -06002076 .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 },
Omar Ramirez Luna230844d2012-09-23 17:28:24 -06002087};
2088
2089/*
Benoit Cousson55d2cb02010-05-12 17:54:36 +02002090 * 'mpu' class
2091 * mpu sub-system
2092 */
2093
2094static struct omap_hwmod_class omap44xx_mpu_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +00002095 .name = "mpu",
Benoit Cousson55d2cb02010-05-12 17:54:36 +02002096};
2097
2098/* mpu */
Benoit Cousson55d2cb02010-05-12 17:54:36 +02002099static struct omap_hwmod omap44xx_mpu_hwmod = {
2100 .name = "mpu",
2101 .class = &omap44xx_mpu_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002102 .clkdm_name = "mpuss_clkdm",
Rajendra Nayakb2eb0002013-08-20 13:02:44 +05302103 .flags = HWMOD_INIT_NO_IDLE,
Benoit Cousson55d2cb02010-05-12 17:54:36 +02002104 .main_clk = "dpll_mpu_m2_ck",
2105 .prcm = {
2106 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002107 .clkctrl_offs = OMAP4_CM_MPU_MPU_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002108 .context_offs = OMAP4_RM_MPU_MPU_CONTEXT_OFFSET,
Benoit Cousson55d2cb02010-05-12 17:54:36 +02002109 },
2110 },
Benoit Cousson55d2cb02010-05-12 17:54:36 +02002111};
2112
Benoit Cousson92b18d12010-09-23 20:02:41 +05302113/*
Paul Walmsleye17f18c2012-04-19 13:33:56 -06002114 * 'ocmc_ram' class
2115 * top-level core on-chip ram
2116 */
2117
2118static struct omap_hwmod_class omap44xx_ocmc_ram_hwmod_class = {
2119 .name = "ocmc_ram",
2120};
2121
2122/* ocmc_ram */
2123static 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/*
Benoît Cousson0c668872012-04-19 13:33:55 -06002136 * 'ocp2scp' class
2137 * bridge to transform ocp interface protocol to scp (serial control port)
2138 * protocol
2139 */
2140
Benoit Cousson33c976e2012-09-23 17:28:21 -06002141static 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
Benoît Cousson0c668872012-04-19 13:33:55 -06002151static struct omap_hwmod_class omap44xx_ocp2scp_hwmod_class = {
2152 .name = "ocp2scp",
Benoit Cousson33c976e2012-09-23 17:28:21 -06002153 .sysc = &omap44xx_ocp2scp_sysc,
Benoît Cousson0c668872012-04-19 13:33:55 -06002154};
2155
2156/* ocp2scp_usb_phy */
Benoît Cousson0c668872012-04-19 13:33:55 -06002157static 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",
Kishon Vijay Abraham If4d7a532013-04-10 19:41:38 +00002161 /*
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",
Benoît Cousson0c668872012-04-19 13:33:55 -06002172 .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 },
Benoît Cousson0c668872012-04-19 13:33:55 -06002179};
2180
2181/*
Paul Walmsley794b4802012-04-19 13:33:58 -06002182 * '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
2187static struct omap_hwmod_class omap44xx_prcm_hwmod_class = {
2188 .name = "prcm",
2189};
2190
2191/* prcm_mpu */
2192static struct omap_hwmod omap44xx_prcm_mpu_hwmod = {
2193 .name = "prcm_mpu",
2194 .class = &omap44xx_prcm_hwmod_class,
2195 .clkdm_name = "l4_wkup_clkdm",
Paul Walmsley53cce972012-09-23 17:28:22 -06002196 .flags = HWMOD_NO_IDLEST,
Tero Kristo46b3af22012-09-23 17:28:20 -06002197 .prcm = {
2198 .omap4 = {
2199 .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
2200 },
2201 },
Paul Walmsley794b4802012-04-19 13:33:58 -06002202};
2203
2204/* cm_core_aon */
2205static struct omap_hwmod omap44xx_cm_core_aon_hwmod = {
2206 .name = "cm_core_aon",
2207 .class = &omap44xx_prcm_hwmod_class,
Paul Walmsley53cce972012-09-23 17:28:22 -06002208 .flags = HWMOD_NO_IDLEST,
Tero Kristo46b3af22012-09-23 17:28:20 -06002209 .prcm = {
2210 .omap4 = {
2211 .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
2212 },
2213 },
Paul Walmsley794b4802012-04-19 13:33:58 -06002214};
2215
2216/* cm_core */
2217static struct omap_hwmod omap44xx_cm_core_hwmod = {
2218 .name = "cm_core",
2219 .class = &omap44xx_prcm_hwmod_class,
Paul Walmsley53cce972012-09-23 17:28:22 -06002220 .flags = HWMOD_NO_IDLEST,
Tero Kristo46b3af22012-09-23 17:28:20 -06002221 .prcm = {
2222 .omap4 = {
2223 .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
2224 },
2225 },
Paul Walmsley794b4802012-04-19 13:33:58 -06002226};
2227
2228/* prm */
Paul Walmsley794b4802012-04-19 13:33:58 -06002229static 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
2234static struct omap_hwmod omap44xx_prm_hwmod = {
2235 .name = "prm",
2236 .class = &omap44xx_prcm_hwmod_class,
Paul Walmsley794b4802012-04-19 13:33:58 -06002237 .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
2246static struct omap_hwmod_class omap44xx_scrm_hwmod_class = {
2247 .name = "scrm",
2248};
2249
2250/* scrm */
2251static struct omap_hwmod omap44xx_scrm_hwmod = {
2252 .name = "scrm",
2253 .class = &omap44xx_scrm_hwmod_class,
2254 .clkdm_name = "l4_wkup_clkdm",
Tero Kristo46b3af22012-09-23 17:28:20 -06002255 .prcm = {
2256 .omap4 = {
2257 .flags = HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT,
2258 },
2259 },
Paul Walmsley794b4802012-04-19 13:33:58 -06002260};
2261
2262/*
Paul Walmsley42b9e382012-04-19 13:33:54 -06002263 * 'sl2if' class
2264 * shared level 2 memory interface
2265 */
2266
2267static struct omap_hwmod_class omap44xx_sl2if_hwmod_class = {
2268 .name = "sl2if",
2269};
2270
2271/* sl2if */
2272static 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/*
Benoît Cousson1e3b5e592012-04-19 13:33:53 -06002286 * 'slimbus' class
2287 * bidirectional, multi-drop, multi-channel two-line serial interface between
2288 * the device and external components
2289 */
2290
2291static 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
2301static struct omap_hwmod_class omap44xx_slimbus_hwmod_class = {
2302 .name = "slimbus",
2303 .sysc = &omap44xx_slimbus_sysc,
2304};
2305
2306/* slimbus1 */
Benoît Cousson1e3b5e592012-04-19 13:33:53 -06002307static 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
2314static struct omap_hwmod omap44xx_slimbus1_hwmod = {
2315 .name = "slimbus1",
2316 .class = &omap44xx_slimbus_hwmod_class,
2317 .clkdm_name = "abe_clkdm",
Benoît Cousson1e3b5e592012-04-19 13:33:53 -06002318 .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 */
Benoît Cousson1e3b5e592012-04-19 13:33:53 -06002330static 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
2336static struct omap_hwmod omap44xx_slimbus2_hwmod = {
2337 .name = "slimbus2",
2338 .class = &omap44xx_slimbus_hwmod_class,
2339 .clkdm_name = "l4_per_clkdm",
Benoît Cousson1e3b5e592012-04-19 13:33:53 -06002340 .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/*
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002352 * '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 */
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002358static struct omap_hwmod_class_sysconfig omap44xx_smartreflex_sysc = {
Tony Lindgren103fd8e2018-04-16 10:21:15 -07002359 .rev_offs = -ENODEV,
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002360 .sysc_offs = 0x0038,
2361 .sysc_flags = (SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE),
2362 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
2363 SIDLE_SMART_WKUP),
Tony Lindgrenbf807052017-12-15 09:41:01 -08002364 .sysc_fields = &omap36xx_sr_sysc_fields,
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002365};
2366
2367static struct omap_hwmod_class omap44xx_smartreflex_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +00002368 .name = "smartreflex",
2369 .sysc = &omap44xx_smartreflex_sysc,
2370 .rev = 2,
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002371};
2372
2373/* smartreflex_core */
Shweta Gulaticea6b942012-02-29 23:33:37 +01002374static struct omap_smartreflex_dev_attr smartreflex_core_dev_attr = {
2375 .sensor_voltdm_name = "core",
2376};
2377
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002378static struct omap_hwmod omap44xx_smartreflex_core_hwmod = {
2379 .name = "smartreflex_core",
2380 .class = &omap44xx_smartreflex_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002381 .clkdm_name = "l4_ao_clkdm",
Paul Walmsley212738a2011-07-09 19:14:06 -06002382
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002383 .main_clk = "smartreflex_core_fck",
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002384 .prcm = {
2385 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002386 .clkctrl_offs = OMAP4_CM_ALWON_SR_CORE_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002387 .context_offs = OMAP4_RM_ALWON_SR_CORE_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002388 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002389 },
2390 },
Shweta Gulaticea6b942012-02-29 23:33:37 +01002391 .dev_attr = &smartreflex_core_dev_attr,
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002392};
2393
2394/* smartreflex_iva */
Shweta Gulaticea6b942012-02-29 23:33:37 +01002395static struct omap_smartreflex_dev_attr smartreflex_iva_dev_attr = {
2396 .sensor_voltdm_name = "iva",
2397};
2398
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002399static struct omap_hwmod omap44xx_smartreflex_iva_hwmod = {
2400 .name = "smartreflex_iva",
2401 .class = &omap44xx_smartreflex_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002402 .clkdm_name = "l4_ao_clkdm",
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002403 .main_clk = "smartreflex_iva_fck",
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002404 .prcm = {
2405 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002406 .clkctrl_offs = OMAP4_CM_ALWON_SR_IVA_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002407 .context_offs = OMAP4_RM_ALWON_SR_IVA_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002408 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002409 },
2410 },
Shweta Gulaticea6b942012-02-29 23:33:37 +01002411 .dev_attr = &smartreflex_iva_dev_attr,
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002412};
2413
2414/* smartreflex_mpu */
Shweta Gulaticea6b942012-02-29 23:33:37 +01002415static struct omap_smartreflex_dev_attr smartreflex_mpu_dev_attr = {
2416 .sensor_voltdm_name = "mpu",
2417};
2418
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002419static struct omap_hwmod omap44xx_smartreflex_mpu_hwmod = {
2420 .name = "smartreflex_mpu",
2421 .class = &omap44xx_smartreflex_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002422 .clkdm_name = "l4_ao_clkdm",
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002423 .main_clk = "smartreflex_mpu_fck",
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002424 .prcm = {
2425 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002426 .clkctrl_offs = OMAP4_CM_ALWON_SR_MPU_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002427 .context_offs = OMAP4_RM_ALWON_SR_MPU_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002428 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002429 },
2430 },
Shweta Gulaticea6b942012-02-29 23:33:37 +01002431 .dev_attr = &smartreflex_mpu_dev_attr,
Benoit Cousson1f6a7172010-12-23 22:30:30 +00002432};
2433
2434/*
Benoit Coussond11c2172011-02-02 12:04:36 +00002435 * 'spinlock' class
2436 * spinlock provides hardware assistance for synchronizing the processes
2437 * running on multiple processors
2438 */
2439
2440static 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),
Suman Anna77319662013-12-23 16:48:48 -06002447 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
Benoit Coussond11c2172011-02-02 12:04:36 +00002448 .sysc_fields = &omap_hwmod_sysc_type1,
2449};
2450
2451static struct omap_hwmod_class omap44xx_spinlock_hwmod_class = {
2452 .name = "spinlock",
2453 .sysc = &omap44xx_spinlock_sysc,
2454};
2455
2456/* spinlock */
Benoit Coussond11c2172011-02-02 12:04:36 +00002457static struct omap_hwmod omap44xx_spinlock_hwmod = {
2458 .name = "spinlock",
2459 .class = &omap44xx_spinlock_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002460 .clkdm_name = "l4_cfg_clkdm",
Benoit Coussond11c2172011-02-02 12:04:36 +00002461 .prcm = {
2462 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002463 .clkctrl_offs = OMAP4_CM_L4CFG_HW_SEM_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002464 .context_offs = OMAP4_RM_L4CFG_HW_SEM_CONTEXT_OFFSET,
Benoit Coussond11c2172011-02-02 12:04:36 +00002465 },
2466 },
Benoit Coussond11c2172011-02-02 12:04:36 +00002467};
2468
2469/*
Benoit Cousson35d1a662011-02-11 11:17:14 +00002470 * 'timer' class
2471 * general purpose timer module with accurate 1ms tick
2472 * This class contains several variants: ['timer_1ms', 'timer']
2473 */
2474
2475static 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
2487static struct omap_hwmod_class omap44xx_timer_1ms_hwmod_class = {
2488 .name = "timer",
2489 .sysc = &omap44xx_timer_1ms_sysc,
2490};
2491
2492static 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
2502static struct omap_hwmod_class omap44xx_timer_hwmod_class = {
2503 .name = "timer",
2504 .sysc = &omap44xx_timer_sysc,
2505};
2506
2507/* timer1 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00002508static struct omap_hwmod omap44xx_timer1_hwmod = {
2509 .name = "timer1",
2510 .class = &omap44xx_timer_1ms_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002511 .clkdm_name = "l4_wkup_clkdm",
Jon Hunter10759e82012-07-11 13:00:13 -05002512 .flags = HWMOD_SET_DEFAULT_CLOCKACT,
Paul Walmsleyee877ac2013-01-26 00:48:55 -07002513 .main_clk = "dmt1_clk_mux",
Benoit Cousson35d1a662011-02-11 11:17:14 +00002514 .prcm = {
2515 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002516 .clkctrl_offs = OMAP4_CM_WKUP_TIMER1_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002517 .context_offs = OMAP4_RM_WKUP_TIMER1_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002518 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002519 },
2520 },
Benoit Cousson35d1a662011-02-11 11:17:14 +00002521};
2522
2523/* timer2 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00002524static struct omap_hwmod omap44xx_timer2_hwmod = {
2525 .name = "timer2",
2526 .class = &omap44xx_timer_1ms_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002527 .clkdm_name = "l4_per_clkdm",
Jon Hunter10759e82012-07-11 13:00:13 -05002528 .flags = HWMOD_SET_DEFAULT_CLOCKACT,
Paul Walmsleyee877ac2013-01-26 00:48:55 -07002529 .main_clk = "cm2_dm2_mux",
Benoit Cousson35d1a662011-02-11 11:17:14 +00002530 .prcm = {
2531 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002532 .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER2_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002533 .context_offs = OMAP4_RM_L4PER_DMTIMER2_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002534 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002535 },
2536 },
Benoit Cousson35d1a662011-02-11 11:17:14 +00002537};
2538
2539/* timer3 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00002540static struct omap_hwmod omap44xx_timer3_hwmod = {
2541 .name = "timer3",
2542 .class = &omap44xx_timer_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002543 .clkdm_name = "l4_per_clkdm",
Paul Walmsleyee877ac2013-01-26 00:48:55 -07002544 .main_clk = "cm2_dm3_mux",
Benoit Cousson35d1a662011-02-11 11:17:14 +00002545 .prcm = {
2546 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002547 .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER3_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002548 .context_offs = OMAP4_RM_L4PER_DMTIMER3_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002549 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002550 },
2551 },
Benoit Cousson35d1a662011-02-11 11:17:14 +00002552};
2553
2554/* timer4 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00002555static struct omap_hwmod omap44xx_timer4_hwmod = {
2556 .name = "timer4",
2557 .class = &omap44xx_timer_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002558 .clkdm_name = "l4_per_clkdm",
Paul Walmsleyee877ac2013-01-26 00:48:55 -07002559 .main_clk = "cm2_dm4_mux",
Benoit Cousson35d1a662011-02-11 11:17:14 +00002560 .prcm = {
2561 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002562 .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER4_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002563 .context_offs = OMAP4_RM_L4PER_DMTIMER4_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002564 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002565 },
2566 },
Benoit Cousson35d1a662011-02-11 11:17:14 +00002567};
2568
2569/* timer5 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00002570static struct omap_hwmod omap44xx_timer5_hwmod = {
2571 .name = "timer5",
2572 .class = &omap44xx_timer_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002573 .clkdm_name = "abe_clkdm",
Paul Walmsleyee877ac2013-01-26 00:48:55 -07002574 .main_clk = "timer5_sync_mux",
Benoit Cousson35d1a662011-02-11 11:17:14 +00002575 .prcm = {
2576 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002577 .clkctrl_offs = OMAP4_CM1_ABE_TIMER5_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002578 .context_offs = OMAP4_RM_ABE_TIMER5_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002579 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002580 },
2581 },
Benoit Cousson35d1a662011-02-11 11:17:14 +00002582};
2583
2584/* timer6 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00002585static struct omap_hwmod omap44xx_timer6_hwmod = {
2586 .name = "timer6",
2587 .class = &omap44xx_timer_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002588 .clkdm_name = "abe_clkdm",
Paul Walmsleyee877ac2013-01-26 00:48:55 -07002589 .main_clk = "timer6_sync_mux",
Benoit Cousson35d1a662011-02-11 11:17:14 +00002590 .prcm = {
2591 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002592 .clkctrl_offs = OMAP4_CM1_ABE_TIMER6_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002593 .context_offs = OMAP4_RM_ABE_TIMER6_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002594 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002595 },
2596 },
Benoit Cousson35d1a662011-02-11 11:17:14 +00002597};
2598
2599/* timer7 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00002600static struct omap_hwmod omap44xx_timer7_hwmod = {
2601 .name = "timer7",
2602 .class = &omap44xx_timer_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002603 .clkdm_name = "abe_clkdm",
Paul Walmsleyee877ac2013-01-26 00:48:55 -07002604 .main_clk = "timer7_sync_mux",
Benoit Cousson35d1a662011-02-11 11:17:14 +00002605 .prcm = {
2606 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002607 .clkctrl_offs = OMAP4_CM1_ABE_TIMER7_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002608 .context_offs = OMAP4_RM_ABE_TIMER7_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002609 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002610 },
2611 },
Benoit Cousson35d1a662011-02-11 11:17:14 +00002612};
2613
2614/* timer8 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00002615static struct omap_hwmod omap44xx_timer8_hwmod = {
2616 .name = "timer8",
2617 .class = &omap44xx_timer_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002618 .clkdm_name = "abe_clkdm",
Paul Walmsleyee877ac2013-01-26 00:48:55 -07002619 .main_clk = "timer8_sync_mux",
Benoit Cousson35d1a662011-02-11 11:17:14 +00002620 .prcm = {
2621 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002622 .clkctrl_offs = OMAP4_CM1_ABE_TIMER8_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002623 .context_offs = OMAP4_RM_ABE_TIMER8_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002624 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002625 },
2626 },
Benoit Cousson35d1a662011-02-11 11:17:14 +00002627};
2628
2629/* timer9 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00002630static struct omap_hwmod omap44xx_timer9_hwmod = {
2631 .name = "timer9",
2632 .class = &omap44xx_timer_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002633 .clkdm_name = "l4_per_clkdm",
Paul Walmsleyee877ac2013-01-26 00:48:55 -07002634 .main_clk = "cm2_dm9_mux",
Benoit Cousson35d1a662011-02-11 11:17:14 +00002635 .prcm = {
2636 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002637 .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER9_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002638 .context_offs = OMAP4_RM_L4PER_DMTIMER9_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002639 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002640 },
2641 },
Benoit Cousson35d1a662011-02-11 11:17:14 +00002642};
2643
2644/* timer10 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00002645static struct omap_hwmod omap44xx_timer10_hwmod = {
2646 .name = "timer10",
2647 .class = &omap44xx_timer_1ms_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002648 .clkdm_name = "l4_per_clkdm",
Jon Hunter10759e82012-07-11 13:00:13 -05002649 .flags = HWMOD_SET_DEFAULT_CLOCKACT,
Paul Walmsleyee877ac2013-01-26 00:48:55 -07002650 .main_clk = "cm2_dm10_mux",
Benoit Cousson35d1a662011-02-11 11:17:14 +00002651 .prcm = {
2652 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002653 .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER10_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002654 .context_offs = OMAP4_RM_L4PER_DMTIMER10_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002655 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002656 },
2657 },
Benoit Cousson35d1a662011-02-11 11:17:14 +00002658};
2659
2660/* timer11 */
Benoit Cousson35d1a662011-02-11 11:17:14 +00002661static struct omap_hwmod omap44xx_timer11_hwmod = {
2662 .name = "timer11",
2663 .class = &omap44xx_timer_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002664 .clkdm_name = "l4_per_clkdm",
Paul Walmsleyee877ac2013-01-26 00:48:55 -07002665 .main_clk = "cm2_dm11_mux",
Benoit Cousson35d1a662011-02-11 11:17:14 +00002666 .prcm = {
2667 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002668 .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER11_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002669 .context_offs = OMAP4_RM_L4PER_DMTIMER11_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002670 .modulemode = MODULEMODE_SWCTRL,
Benoit Cousson35d1a662011-02-11 11:17:14 +00002671 },
2672 },
Benoit Cousson35d1a662011-02-11 11:17:14 +00002673};
2674
2675/*
Benoit Coussondb12ba52010-09-27 20:19:19 +05302676 * 'uart' class
2677 * universal asynchronous receiver/transmitter (uart)
2678 */
2679
2680static struct omap_hwmod_class_sysconfig omap44xx_uart_sysc = {
2681 .rev_offs = 0x0050,
2682 .sysc_offs = 0x0054,
2683 .syss_offs = 0x0058,
Benoit Cousson3b54baa2010-12-21 21:08:33 -07002684 .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_ENAWAKEUP |
Benoit Cousson0cfe8752010-12-21 21:08:33 -07002685 SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
2686 SYSS_HAS_RESET_STATUS),
Benoit Cousson7cffa6b2010-12-21 21:31:28 -07002687 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
2688 SIDLE_SMART_WKUP),
Benoit Coussondb12ba52010-09-27 20:19:19 +05302689 .sysc_fields = &omap_hwmod_sysc_type1,
2690};
2691
2692static struct omap_hwmod_class omap44xx_uart_hwmod_class = {
Benoit Coussonfe134712010-12-23 22:30:32 +00002693 .name = "uart",
2694 .sysc = &omap44xx_uart_sysc,
Benoit Coussondb12ba52010-09-27 20:19:19 +05302695};
2696
2697/* uart1 */
Benoit Coussondb12ba52010-09-27 20:19:19 +05302698static struct omap_hwmod omap44xx_uart1_hwmod = {
2699 .name = "uart1",
2700 .class = &omap44xx_uart_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002701 .clkdm_name = "l4_per_clkdm",
Santosh Shilimkar66dde542013-05-15 20:18:39 +05302702 .flags = HWMOD_SWSUP_SIDLE_ACT,
Paul Walmsley17b7e7d2013-01-26 00:48:54 -07002703 .main_clk = "func_48m_fclk",
Benoit Coussondb12ba52010-09-27 20:19:19 +05302704 .prcm = {
2705 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002706 .clkctrl_offs = OMAP4_CM_L4PER_UART1_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002707 .context_offs = OMAP4_RM_L4PER_UART1_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002708 .modulemode = MODULEMODE_SWCTRL,
Benoit Coussondb12ba52010-09-27 20:19:19 +05302709 },
2710 },
Benoit Coussondb12ba52010-09-27 20:19:19 +05302711};
2712
2713/* uart2 */
Benoit Coussondb12ba52010-09-27 20:19:19 +05302714static struct omap_hwmod omap44xx_uart2_hwmod = {
2715 .name = "uart2",
2716 .class = &omap44xx_uart_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002717 .clkdm_name = "l4_per_clkdm",
Santosh Shilimkar66dde542013-05-15 20:18:39 +05302718 .flags = HWMOD_SWSUP_SIDLE_ACT,
Paul Walmsley17b7e7d2013-01-26 00:48:54 -07002719 .main_clk = "func_48m_fclk",
Benoit Coussondb12ba52010-09-27 20:19:19 +05302720 .prcm = {
2721 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002722 .clkctrl_offs = OMAP4_CM_L4PER_UART2_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002723 .context_offs = OMAP4_RM_L4PER_UART2_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002724 .modulemode = MODULEMODE_SWCTRL,
Benoit Coussondb12ba52010-09-27 20:19:19 +05302725 },
2726 },
Benoit Coussondb12ba52010-09-27 20:19:19 +05302727};
2728
2729/* uart3 */
Benoit Coussondb12ba52010-09-27 20:19:19 +05302730static struct omap_hwmod omap44xx_uart3_hwmod = {
2731 .name = "uart3",
2732 .class = &omap44xx_uart_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002733 .clkdm_name = "l4_per_clkdm",
Rajendra Nayak7dedd342013-07-28 23:01:48 -06002734 .flags = DEBUG_OMAP4UART3_FLAGS | HWMOD_SWSUP_SIDLE_ACT,
Paul Walmsley17b7e7d2013-01-26 00:48:54 -07002735 .main_clk = "func_48m_fclk",
Benoit Coussondb12ba52010-09-27 20:19:19 +05302736 .prcm = {
2737 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002738 .clkctrl_offs = OMAP4_CM_L4PER_UART3_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002739 .context_offs = OMAP4_RM_L4PER_UART3_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002740 .modulemode = MODULEMODE_SWCTRL,
Benoit Coussondb12ba52010-09-27 20:19:19 +05302741 },
2742 },
Benoit Coussondb12ba52010-09-27 20:19:19 +05302743};
2744
2745/* uart4 */
Benoit Coussondb12ba52010-09-27 20:19:19 +05302746static struct omap_hwmod omap44xx_uart4_hwmod = {
2747 .name = "uart4",
2748 .class = &omap44xx_uart_hwmod_class,
Benoit Coussona5322c62011-07-10 05:56:29 -06002749 .clkdm_name = "l4_per_clkdm",
Rajendra Nayak7dedd342013-07-28 23:01:48 -06002750 .flags = DEBUG_OMAP4UART4_FLAGS | HWMOD_SWSUP_SIDLE_ACT,
Paul Walmsley17b7e7d2013-01-26 00:48:54 -07002751 .main_clk = "func_48m_fclk",
Benoit Coussondb12ba52010-09-27 20:19:19 +05302752 .prcm = {
2753 .omap4 = {
Benoit Coussond0f06312011-07-10 05:56:30 -06002754 .clkctrl_offs = OMAP4_CM_L4PER_UART4_CLKCTRL_OFFSET,
Benoit Cousson27bb00b2011-07-10 05:56:32 -06002755 .context_offs = OMAP4_RM_L4PER_UART4_CONTEXT_OFFSET,
Benoit Cousson03fdefe52011-07-10 05:56:32 -06002756 .modulemode = MODULEMODE_SWCTRL,
Benoit Coussondb12ba52010-09-27 20:19:19 +05302757 },
2758 },
Benoit Coussondb12ba52010-09-27 20:19:19 +05302759};
2760
Benoit Cousson9780a9c2010-12-07 16:26:57 -08002761/*
Benoît Cousson0c668872012-04-19 13:33:55 -06002762 * 'usb_host_fs' class
2763 * full-speed usb host controller
2764 */
2765
2766/* The IP is not compliant to type1 / type2 scheme */
Benoît Cousson0c668872012-04-19 13:33:55 -06002767static 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
2777static 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 */
Benoît Cousson0c668872012-04-19 13:33:55 -06002783static 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",
Benoît Cousson0c668872012-04-19 13:33:55 -06002787 .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/*
Benoit Coussonaf88fa92011-12-15 23:15:18 -07002798 * 'usb_host_hs' class
2799 * high-speed multi-port usb host controller
2800 */
Benoit Coussonaf88fa92011-12-15 23:15:18 -07002801
2802static 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 |
Roger Quadrosb483a4a2013-12-03 16:25:46 +02002807 SYSC_HAS_SOFTRESET | SYSC_HAS_RESET_STATUS),
Benoit Coussonaf88fa92011-12-15 23:15:18 -07002808 .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
2814static struct omap_hwmod_class omap44xx_usb_host_hs_hwmod_class = {
Paul Walmsley844a3b62012-04-19 04:04:33 -06002815 .name = "usb_host_hs",
2816 .sysc = &omap44xx_usb_host_hs_sysc,
Benoit Coussonaf88fa92011-12-15 23:15:18 -07002817};
2818
Paul Walmsley844a3b62012-04-19 04:04:33 -06002819/* usb_host_hs */
Benoit Coussonaf88fa92011-12-15 23:15:18 -07002820static 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 },
Benoit Coussonaf88fa92011-12-15 23:15:18 -07002832
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
Roger Quadrosb483a4a2013-12-03 16:25:46 +02002871 .flags = HWMOD_SWSUP_SIDLE | HWMOD_SWSUP_MSTANDBY,
Benoit Coussonaf88fa92011-12-15 23:15:18 -07002872};
2873
2874/*
Paul Walmsley844a3b62012-04-19 04:04:33 -06002875 * 'usb_otg_hs' class
2876 * high-speed on-the-go universal serial bus (usb_otg_hs) controller
2877 */
2878
2879static 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
2892static 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 */
Paul Walmsley844a3b62012-04-19 04:04:33 -06002898static struct omap_hwmod_opt_clk usb_otg_hs_opt_clks[] = {
2899 { .role = "xclk", .clk = "usb_otg_hs_xclk" },
2900};
2901
2902static 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,
Paul Walmsley844a3b62012-04-19 04:04:33 -06002907 .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/*
Benoit Coussonaf88fa92011-12-15 23:15:18 -07002920 * 'usb_tll_hs' class
2921 * usb_tll_hs module is the adapter on the usb_host_hs ports
2922 */
Paul Walmsley844a3b62012-04-19 04:04:33 -06002923
Benoit Coussonaf88fa92011-12-15 23:15:18 -07002924static 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
2935static struct omap_hwmod_class omap44xx_usb_tll_hs_hwmod_class = {
Paul Walmsley844a3b62012-04-19 04:04:33 -06002936 .name = "usb_tll_hs",
2937 .sysc = &omap44xx_usb_tll_hs_sysc,
Benoit Coussonaf88fa92011-12-15 23:15:18 -07002938};
2939
Paul Walmsley844a3b62012-04-19 04:04:33 -06002940static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06002944 .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
2960static 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
2971static 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,
Kevin Hilman414e4122012-05-08 11:34:30 -06002975 .reset = &omap2_wd_timer_reset,
Paul Walmsley844a3b62012-04-19 04:04:33 -06002976};
2977
2978/* wd_timer2 */
Paul Walmsley844a3b62012-04-19 04:04:33 -06002979static struct omap_hwmod omap44xx_wd_timer2_hwmod = {
2980 .name = "wd_timer2",
2981 .class = &omap44xx_wd_timer_hwmod_class,
2982 .clkdm_name = "l4_wkup_clkdm",
Paul Walmsley17b7e7d2013-01-26 00:48:54 -07002983 .main_clk = "sys_32k_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06002984 .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 */
Paul Walmsley844a3b62012-04-19 04:04:33 -06002994static struct omap_hwmod omap44xx_wd_timer3_hwmod = {
2995 .name = "wd_timer3",
2996 .class = &omap44xx_wd_timer_hwmod_class,
2997 .clkdm_name = "abe_clkdm",
Paul Walmsley17b7e7d2013-01-26 00:48:54 -07002998 .main_clk = "sys_32k_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06002999 .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 */
3014static 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
Paul Walmsley844a3b62012-04-19 04:04:33 -06003021/* mpu -> dmm */
3022static struct omap_hwmod_ocp_if omap44xx_mpu__dmm = {
3023 .master = &omap44xx_mpu_hwmod,
3024 .slave = &omap44xx_dmm_hwmod,
3025 .clk = "l3_div_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003026 .user = OCP_USER_MPU,
3027};
3028
3029/* iva -> l3_instr */
3030static 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 */
3038static 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
Benoît Cousson9a817bc82012-04-19 13:33:56 -06003045/* ocp_wp_noc -> l3_instr */
3046static 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
Paul Walmsley844a3b62012-04-19 04:04:33 -06003053/* dsp -> l3_main_1 */
3054static 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 */
3062static 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 */
3070static 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 */
3078static 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 */
3086static 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 */
3094static 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
Paul Walmsley844a3b62012-04-19 04:04:33 -06003101/* mpu -> l3_main_1 */
3102static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003106 .user = OCP_USER_MPU,
3107};
3108
Benoît Cousson96566042012-04-19 13:33:59 -06003109/* debugss -> l3_main_2 */
3110static 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
Paul Walmsley844a3b62012-04-19 04:04:33 -06003117/* dma_system -> l3_main_2 */
3118static 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
Ming Leib050f682012-04-19 13:33:50 -06003125/* fdif -> l3_main_2 */
3126static 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
Paul Walmsley9def3902012-04-19 13:33:53 -06003133/* gpu -> l3_main_2 */
3134static 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
Paul Walmsley844a3b62012-04-19 04:04:33 -06003141/* hsi -> l3_main_2 */
3142static 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 */
3150static 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 */
3158static 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 */
3166static 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
Paul Walmsley844a3b62012-04-19 04:04:33 -06003173/* l3_main_1 -> l3_main_2 */
3174static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003178 .user = OCP_USER_MPU,
3179};
3180
3181/* l4_cfg -> l3_main_2 */
3182static 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
Benoît Cousson0c668872012-04-19 13:33:55 -06003189/* usb_host_fs -> l3_main_2 */
Paul Walmsleyb0a70cc2012-07-04 06:55:29 -06003190static struct omap_hwmod_ocp_if __maybe_unused omap44xx_usb_host_fs__l3_main_2 = {
Benoît Cousson0c668872012-04-19 13:33:55 -06003191 .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
Paul Walmsley844a3b62012-04-19 04:04:33 -06003197/* usb_host_hs -> l3_main_2 */
3198static 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 */
3206static 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
Paul Walmsley844a3b62012-04-19 04:04:33 -06003213/* l3_main_1 -> l3_main_3 */
3214static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003218 .user = OCP_USER_MPU,
3219};
3220
3221/* l3_main_2 -> l3_main_3 */
3222static 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 */
3230static 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 */
Paul Walmsleyb0a70cc2012-07-04 06:55:29 -06003238static struct omap_hwmod_ocp_if __maybe_unused omap44xx_aess__l4_abe = {
Paul Walmsley844a3b62012-04-19 04:04:33 -06003239 .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 */
3246static 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 */
3254static 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 */
3262static 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 */
3270static 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 */
3278static 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 */
3286static 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 */
3294static 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
Benoît Cousson9a817bc82012-04-19 13:33:56 -06003301/* l4_cfg -> ocp_wp_noc */
3302static 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",
Benoît Cousson9a817bc82012-04-19 13:33:56 -06003306 .user = OCP_USER_MPU | OCP_USER_SDMA,
3307};
3308
Paul Walmsley844a3b62012-04-19 04:04:33 -06003309/* l4_abe -> aess */
Paul Walmsleyb0a70cc2012-07-04 06:55:29 -06003310static struct omap_hwmod_ocp_if __maybe_unused omap44xx_l4_abe__aess = {
Paul Walmsley844a3b62012-04-19 04:04:33 -06003311 .master = &omap44xx_l4_abe_hwmod,
3312 .slave = &omap44xx_aess_hwmod,
3313 .clk = "ocp_abe_iclk",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003314 .user = OCP_USER_MPU,
3315};
3316
Paul Walmsley844a3b62012-04-19 04:04:33 -06003317/* l4_abe -> aess (dma) */
Paul Walmsleyb0a70cc2012-07-04 06:55:29 -06003318static struct omap_hwmod_ocp_if __maybe_unused omap44xx_l4_abe__aess_dma = {
Paul Walmsley844a3b62012-04-19 04:04:33 -06003319 .master = &omap44xx_l4_abe_hwmod,
3320 .slave = &omap44xx_aess_hwmod,
3321 .clk = "ocp_abe_iclk",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003322 .user = OCP_USER_SDMA,
3323};
3324
Paul Walmsley42b9e382012-04-19 13:33:54 -06003325/* l3_main_2 -> c2c */
3326static 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
Paul Walmsley844a3b62012-04-19 04:04:33 -06003333/* l4_wkup -> counter_32k */
3334static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003338 .user = OCP_USER_MPU | OCP_USER_SDMA,
3339};
3340
Paul Walmsleya0b5d812012-04-19 13:33:57 -06003341/* l4_cfg -> ctrl_module_core */
3342static 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",
Paul Walmsleya0b5d812012-04-19 13:33:57 -06003346 .user = OCP_USER_MPU | OCP_USER_SDMA,
3347};
3348
Paul Walmsleya0b5d812012-04-19 13:33:57 -06003349/* l4_cfg -> ctrl_module_pad_core */
3350static 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",
Paul Walmsleya0b5d812012-04-19 13:33:57 -06003354 .user = OCP_USER_MPU | OCP_USER_SDMA,
3355};
3356
Paul Walmsleya0b5d812012-04-19 13:33:57 -06003357/* l4_wkup -> ctrl_module_wkup */
3358static 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",
Paul Walmsleya0b5d812012-04-19 13:33:57 -06003362 .user = OCP_USER_MPU | OCP_USER_SDMA,
3363};
3364
Paul Walmsleya0b5d812012-04-19 13:33:57 -06003365/* l4_wkup -> ctrl_module_pad_wkup */
3366static 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",
Paul Walmsleya0b5d812012-04-19 13:33:57 -06003370 .user = OCP_USER_MPU | OCP_USER_SDMA,
3371};
3372
Benoît Cousson96566042012-04-19 13:33:59 -06003373/* l3_instr -> debugss */
3374static 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",
Benoît Cousson96566042012-04-19 13:33:59 -06003378 .user = OCP_USER_MPU | OCP_USER_SDMA,
3379};
3380
Paul Walmsley844a3b62012-04-19 04:04:33 -06003381/* l4_cfg -> dma_system */
3382static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003386 .user = OCP_USER_MPU | OCP_USER_SDMA,
3387};
3388
Paul Walmsley844a3b62012-04-19 04:04:33 -06003389/* l4_abe -> dmic */
3390static 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",
Peter Ujfalusie3491792014-05-14 12:26:10 -06003394 .user = OCP_USER_MPU | OCP_USER_SDMA,
Paul Walmsley844a3b62012-04-19 04:04:33 -06003395};
3396
3397/* dsp -> iva */
3398static 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
Paul Walmsley42b9e382012-04-19 13:33:54 -06003405/* dsp -> sl2if */
Tero Kristob3601242012-09-03 11:50:53 -06003406static struct omap_hwmod_ocp_if __maybe_unused omap44xx_dsp__sl2if = {
Paul Walmsley42b9e382012-04-19 13:33:54 -06003407 .master = &omap44xx_dsp_hwmod,
3408 .slave = &omap44xx_sl2if_hwmod,
3409 .clk = "dpll_iva_m5x2_ck",
3410 .user = OCP_USER_DSP,
3411};
3412
Paul Walmsley844a3b62012-04-19 04:04:33 -06003413/* l4_cfg -> dsp */
3414static 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
Paul Walmsley844a3b62012-04-19 04:04:33 -06003421/* l3_main_2 -> dss */
3422static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss = {
3423 .master = &omap44xx_l3_main_2_hwmod,
3424 .slave = &omap44xx_dss_hwmod,
Tomi Valkeinen7ede8562014-10-09 17:03:17 +03003425 .clk = "l3_div_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003426 .user = OCP_USER_SDMA,
3427};
3428
Paul Walmsley844a3b62012-04-19 04:04:33 -06003429/* l4_per -> dss */
3430static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003434 .user = OCP_USER_MPU,
3435};
3436
Paul Walmsley844a3b62012-04-19 04:04:33 -06003437/* l3_main_2 -> dss_dispc */
3438static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_dispc = {
3439 .master = &omap44xx_l3_main_2_hwmod,
3440 .slave = &omap44xx_dss_dispc_hwmod,
Tomi Valkeinen7ede8562014-10-09 17:03:17 +03003441 .clk = "l3_div_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003442 .user = OCP_USER_SDMA,
3443};
3444
Paul Walmsley844a3b62012-04-19 04:04:33 -06003445/* l4_per -> dss_dispc */
3446static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003450 .user = OCP_USER_MPU,
3451};
3452
Paul Walmsley844a3b62012-04-19 04:04:33 -06003453/* l3_main_2 -> dss_dsi1 */
3454static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_dsi1 = {
3455 .master = &omap44xx_l3_main_2_hwmod,
3456 .slave = &omap44xx_dss_dsi1_hwmod,
Tomi Valkeinen7ede8562014-10-09 17:03:17 +03003457 .clk = "l3_div_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003458 .user = OCP_USER_SDMA,
3459};
3460
Paul Walmsley844a3b62012-04-19 04:04:33 -06003461/* l4_per -> dss_dsi1 */
3462static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003466 .user = OCP_USER_MPU,
3467};
3468
Paul Walmsley844a3b62012-04-19 04:04:33 -06003469/* l3_main_2 -> dss_dsi2 */
3470static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_dsi2 = {
3471 .master = &omap44xx_l3_main_2_hwmod,
3472 .slave = &omap44xx_dss_dsi2_hwmod,
Tomi Valkeinen7ede8562014-10-09 17:03:17 +03003473 .clk = "l3_div_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003474 .user = OCP_USER_SDMA,
3475};
3476
Paul Walmsley844a3b62012-04-19 04:04:33 -06003477/* l4_per -> dss_dsi2 */
3478static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003482 .user = OCP_USER_MPU,
3483};
3484
Paul Walmsley844a3b62012-04-19 04:04:33 -06003485/* l3_main_2 -> dss_hdmi */
3486static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_hdmi = {
3487 .master = &omap44xx_l3_main_2_hwmod,
3488 .slave = &omap44xx_dss_hdmi_hwmod,
Tomi Valkeinen7ede8562014-10-09 17:03:17 +03003489 .clk = "l3_div_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003490 .user = OCP_USER_SDMA,
3491};
3492
Paul Walmsley844a3b62012-04-19 04:04:33 -06003493/* l4_per -> dss_hdmi */
3494static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003498 .user = OCP_USER_MPU,
3499};
3500
Paul Walmsley844a3b62012-04-19 04:04:33 -06003501/* l3_main_2 -> dss_rfbi */
3502static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_rfbi = {
3503 .master = &omap44xx_l3_main_2_hwmod,
3504 .slave = &omap44xx_dss_rfbi_hwmod,
Tomi Valkeinen7ede8562014-10-09 17:03:17 +03003505 .clk = "l3_div_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003506 .user = OCP_USER_SDMA,
3507};
3508
Paul Walmsley844a3b62012-04-19 04:04:33 -06003509/* l4_per -> dss_rfbi */
3510static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003514 .user = OCP_USER_MPU,
3515};
3516
Paul Walmsley844a3b62012-04-19 04:04:33 -06003517/* l3_main_2 -> dss_venc */
3518static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_venc = {
3519 .master = &omap44xx_l3_main_2_hwmod,
3520 .slave = &omap44xx_dss_venc_hwmod,
Tomi Valkeinen7ede8562014-10-09 17:03:17 +03003521 .clk = "l3_div_ck",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003522 .user = OCP_USER_SDMA,
3523};
3524
Paul Walmsley844a3b62012-04-19 04:04:33 -06003525/* l4_per -> dss_venc */
3526static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003530 .user = OCP_USER_MPU,
3531};
3532
Tero Kristo1df5eaa2017-06-13 16:45:50 +03003533/* l3_main_2 -> sham */
3534static 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
Paul Walmsley42b9e382012-04-19 13:33:54 -06003541/* l4_per -> elm */
3542static 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",
Paul Walmsley42b9e382012-04-19 13:33:54 -06003546 .user = OCP_USER_MPU | OCP_USER_SDMA,
3547};
3548
Ming Leib050f682012-04-19 13:33:50 -06003549/* l4_cfg -> fdif */
3550static 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",
Ming Leib050f682012-04-19 13:33:50 -06003554 .user = OCP_USER_MPU | OCP_USER_SDMA,
3555};
3556
Paul Walmsley844a3b62012-04-19 04:04:33 -06003557/* l4_wkup -> gpio1 */
3558static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003562 .user = OCP_USER_MPU | OCP_USER_SDMA,
3563};
3564
Paul Walmsley844a3b62012-04-19 04:04:33 -06003565/* l4_per -> gpio2 */
3566static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003570 .user = OCP_USER_MPU | OCP_USER_SDMA,
3571};
3572
Paul Walmsley844a3b62012-04-19 04:04:33 -06003573/* l4_per -> gpio3 */
3574static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003578 .user = OCP_USER_MPU | OCP_USER_SDMA,
3579};
3580
Paul Walmsley844a3b62012-04-19 04:04:33 -06003581/* l4_per -> gpio4 */
3582static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003586 .user = OCP_USER_MPU | OCP_USER_SDMA,
3587};
3588
Paul Walmsley844a3b62012-04-19 04:04:33 -06003589/* l4_per -> gpio5 */
3590static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003594 .user = OCP_USER_MPU | OCP_USER_SDMA,
3595};
3596
Paul Walmsley844a3b62012-04-19 04:04:33 -06003597/* l4_per -> gpio6 */
3598static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003602 .user = OCP_USER_MPU | OCP_USER_SDMA,
3603};
3604
Benoît Coussoneb42b5d2012-04-19 13:33:51 -06003605/* l3_main_2 -> gpmc */
3606static 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",
Benoît Coussoneb42b5d2012-04-19 13:33:51 -06003610 .user = OCP_USER_MPU | OCP_USER_SDMA,
3611};
3612
Paul Walmsley9def3902012-04-19 13:33:53 -06003613/* l3_main_2 -> gpu */
3614static 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",
Paul Walmsley9def3902012-04-19 13:33:53 -06003618 .user = OCP_USER_MPU | OCP_USER_SDMA,
3619};
3620
Paul Walmsleya091c082012-04-19 13:33:50 -06003621/* l4_per -> hdq1w */
3622static 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",
Paul Walmsleya091c082012-04-19 13:33:50 -06003626 .user = OCP_USER_MPU | OCP_USER_SDMA,
3627};
3628
Paul Walmsley844a3b62012-04-19 04:04:33 -06003629/* l4_cfg -> hsi */
3630static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003634 .user = OCP_USER_MPU | OCP_USER_SDMA,
3635};
3636
Paul Walmsley844a3b62012-04-19 04:04:33 -06003637/* l4_per -> i2c1 */
3638static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003642 .user = OCP_USER_MPU | OCP_USER_SDMA,
3643};
3644
Paul Walmsley844a3b62012-04-19 04:04:33 -06003645/* l4_per -> i2c2 */
3646static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003650 .user = OCP_USER_MPU | OCP_USER_SDMA,
3651};
3652
Paul Walmsley844a3b62012-04-19 04:04:33 -06003653/* l4_per -> i2c3 */
3654static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003658 .user = OCP_USER_MPU | OCP_USER_SDMA,
3659};
3660
Paul Walmsley844a3b62012-04-19 04:04:33 -06003661/* l4_per -> i2c4 */
3662static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003666 .user = OCP_USER_MPU | OCP_USER_SDMA,
3667};
3668
3669/* l3_main_2 -> ipu */
3670static 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
Paul Walmsley844a3b62012-04-19 04:04:33 -06003677/* l3_main_2 -> iss */
3678static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003682 .user = OCP_USER_MPU | OCP_USER_SDMA,
3683};
3684
Paul Walmsley42b9e382012-04-19 13:33:54 -06003685/* iva -> sl2if */
Tero Kristob3601242012-09-03 11:50:53 -06003686static struct omap_hwmod_ocp_if __maybe_unused omap44xx_iva__sl2if = {
Paul Walmsley42b9e382012-04-19 13:33:54 -06003687 .master = &omap44xx_iva_hwmod,
3688 .slave = &omap44xx_sl2if_hwmod,
3689 .clk = "dpll_iva_m5x2_ck",
3690 .user = OCP_USER_IVA,
3691};
3692
Paul Walmsley844a3b62012-04-19 04:04:33 -06003693/* l3_main_2 -> iva */
3694static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003698 .user = OCP_USER_MPU,
3699};
3700
Paul Walmsley844a3b62012-04-19 04:04:33 -06003701/* l4_wkup -> kbd */
3702static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003706 .user = OCP_USER_MPU | OCP_USER_SDMA,
3707};
3708
Paul Walmsley844a3b62012-04-19 04:04:33 -06003709/* l4_cfg -> mailbox */
3710static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003714 .user = OCP_USER_MPU | OCP_USER_SDMA,
3715};
3716
Benoît Cousson896d4e92012-04-19 13:33:54 -06003717/* l4_abe -> mcasp */
3718static 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",
Benoît Cousson896d4e92012-04-19 13:33:54 -06003722 .user = OCP_USER_MPU,
3723};
3724
Benoît Cousson896d4e92012-04-19 13:33:54 -06003725/* l4_abe -> mcasp (dma) */
3726static 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",
Benoît Cousson896d4e92012-04-19 13:33:54 -06003730 .user = OCP_USER_SDMA,
3731};
3732
Paul Walmsley844a3b62012-04-19 04:04:33 -06003733/* l4_abe -> mcbsp1 */
3734static 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",
Peter Ujfalusie3491792014-05-14 12:26:10 -06003738 .user = OCP_USER_MPU | OCP_USER_SDMA,
Paul Walmsley844a3b62012-04-19 04:04:33 -06003739};
3740
Paul Walmsley844a3b62012-04-19 04:04:33 -06003741/* l4_abe -> mcbsp2 */
3742static 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",
Peter Ujfalusie3491792014-05-14 12:26:10 -06003746 .user = OCP_USER_MPU | OCP_USER_SDMA,
Paul Walmsley844a3b62012-04-19 04:04:33 -06003747};
3748
Paul Walmsley844a3b62012-04-19 04:04:33 -06003749/* l4_abe -> mcbsp3 */
3750static 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",
Peter Ujfalusie3491792014-05-14 12:26:10 -06003754 .user = OCP_USER_MPU | OCP_USER_SDMA,
Paul Walmsley844a3b62012-04-19 04:04:33 -06003755};
3756
Paul Walmsley844a3b62012-04-19 04:04:33 -06003757/* l4_per -> mcbsp4 */
3758static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003762 .user = OCP_USER_MPU | OCP_USER_SDMA,
3763};
3764
Paul Walmsley844a3b62012-04-19 04:04:33 -06003765/* l4_abe -> mcpdm */
3766static 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",
Peter Ujfalusie3491792014-05-14 12:26:10 -06003770 .user = OCP_USER_MPU | OCP_USER_SDMA,
Paul Walmsley844a3b62012-04-19 04:04:33 -06003771};
3772
Paul Walmsley844a3b62012-04-19 04:04:33 -06003773/* l4_per -> mcspi1 */
3774static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003778 .user = OCP_USER_MPU | OCP_USER_SDMA,
3779};
3780
Paul Walmsley844a3b62012-04-19 04:04:33 -06003781/* l4_per -> mcspi2 */
3782static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003786 .user = OCP_USER_MPU | OCP_USER_SDMA,
3787};
3788
Paul Walmsley844a3b62012-04-19 04:04:33 -06003789/* l4_per -> mcspi3 */
3790static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003794 .user = OCP_USER_MPU | OCP_USER_SDMA,
3795};
3796
Paul Walmsley844a3b62012-04-19 04:04:33 -06003797/* l4_per -> mcspi4 */
3798static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003802 .user = OCP_USER_MPU | OCP_USER_SDMA,
3803};
3804
Paul Walmsley844a3b62012-04-19 04:04:33 -06003805/* l4_per -> mmc1 */
3806static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003810 .user = OCP_USER_MPU | OCP_USER_SDMA,
3811};
3812
Paul Walmsley844a3b62012-04-19 04:04:33 -06003813/* l4_per -> mmc2 */
3814static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003818 .user = OCP_USER_MPU | OCP_USER_SDMA,
3819};
3820
Paul Walmsley844a3b62012-04-19 04:04:33 -06003821/* l4_per -> mmc3 */
3822static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003826 .user = OCP_USER_MPU | OCP_USER_SDMA,
3827};
3828
Paul Walmsley844a3b62012-04-19 04:04:33 -06003829/* l4_per -> mmc4 */
3830static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003834 .user = OCP_USER_MPU | OCP_USER_SDMA,
3835};
3836
Paul Walmsley844a3b62012-04-19 04:04:33 -06003837/* l4_per -> mmc5 */
3838static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003842 .user = OCP_USER_MPU | OCP_USER_SDMA,
3843};
3844
Paul Walmsleye17f18c2012-04-19 13:33:56 -06003845/* l3_main_2 -> ocmc_ram */
3846static 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
Benoît Cousson0c668872012-04-19 13:33:55 -06003853/* l4_cfg -> ocp2scp_usb_phy */
3854static 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
Paul Walmsley794b4802012-04-19 13:33:58 -06003861/* mpu_private -> prcm_mpu */
3862static 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",
Paul Walmsley794b4802012-04-19 13:33:58 -06003866 .user = OCP_USER_MPU | OCP_USER_SDMA,
3867};
3868
Paul Walmsley794b4802012-04-19 13:33:58 -06003869/* l4_wkup -> cm_core_aon */
3870static 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",
Paul Walmsley794b4802012-04-19 13:33:58 -06003874 .user = OCP_USER_MPU | OCP_USER_SDMA,
3875};
3876
Paul Walmsley794b4802012-04-19 13:33:58 -06003877/* l4_cfg -> cm_core */
3878static 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",
Paul Walmsley794b4802012-04-19 13:33:58 -06003882 .user = OCP_USER_MPU | OCP_USER_SDMA,
3883};
3884
Paul Walmsley794b4802012-04-19 13:33:58 -06003885/* l4_wkup -> prm */
3886static 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",
Paul Walmsley794b4802012-04-19 13:33:58 -06003890 .user = OCP_USER_MPU | OCP_USER_SDMA,
3891};
3892
Paul Walmsley794b4802012-04-19 13:33:58 -06003893/* l4_wkup -> scrm */
3894static 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",
Paul Walmsley794b4802012-04-19 13:33:58 -06003898 .user = OCP_USER_MPU | OCP_USER_SDMA,
3899};
3900
Paul Walmsley42b9e382012-04-19 13:33:54 -06003901/* l3_main_2 -> sl2if */
Tero Kristob3601242012-09-03 11:50:53 -06003902static struct omap_hwmod_ocp_if __maybe_unused omap44xx_l3_main_2__sl2if = {
Paul Walmsley42b9e382012-04-19 13:33:54 -06003903 .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
Benoît Cousson1e3b5e592012-04-19 13:33:53 -06003909/* l4_abe -> slimbus1 */
3910static 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",
Benoît Cousson1e3b5e592012-04-19 13:33:53 -06003914 .user = OCP_USER_MPU,
3915};
3916
Benoît Cousson1e3b5e592012-04-19 13:33:53 -06003917/* l4_abe -> slimbus1 (dma) */
3918static 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",
Benoît Cousson1e3b5e592012-04-19 13:33:53 -06003922 .user = OCP_USER_SDMA,
3923};
3924
Benoît Cousson1e3b5e592012-04-19 13:33:53 -06003925/* l4_per -> slimbus2 */
3926static 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",
Benoît Cousson1e3b5e592012-04-19 13:33:53 -06003930 .user = OCP_USER_MPU | OCP_USER_SDMA,
3931};
3932
Paul Walmsley844a3b62012-04-19 04:04:33 -06003933/* l4_cfg -> smartreflex_core */
3934static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003938 .user = OCP_USER_MPU | OCP_USER_SDMA,
3939};
3940
Paul Walmsley844a3b62012-04-19 04:04:33 -06003941/* l4_cfg -> smartreflex_iva */
3942static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003946 .user = OCP_USER_MPU | OCP_USER_SDMA,
3947};
3948
Paul Walmsley844a3b62012-04-19 04:04:33 -06003949/* l4_cfg -> smartreflex_mpu */
3950static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003954 .user = OCP_USER_MPU | OCP_USER_SDMA,
3955};
3956
Paul Walmsley844a3b62012-04-19 04:04:33 -06003957/* l4_cfg -> spinlock */
3958static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003962 .user = OCP_USER_MPU | OCP_USER_SDMA,
3963};
3964
Paul Walmsley844a3b62012-04-19 04:04:33 -06003965/* l4_wkup -> timer1 */
3966static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003970 .user = OCP_USER_MPU | OCP_USER_SDMA,
3971};
3972
Paul Walmsley844a3b62012-04-19 04:04:33 -06003973/* l4_per -> timer2 */
3974static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003978 .user = OCP_USER_MPU | OCP_USER_SDMA,
3979};
3980
Paul Walmsley844a3b62012-04-19 04:04:33 -06003981/* l4_per -> timer3 */
3982static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003986 .user = OCP_USER_MPU | OCP_USER_SDMA,
3987};
3988
Paul Walmsley844a3b62012-04-19 04:04:33 -06003989/* l4_per -> timer4 */
3990static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06003994 .user = OCP_USER_MPU | OCP_USER_SDMA,
3995};
3996
Paul Walmsley844a3b62012-04-19 04:04:33 -06003997/* l4_abe -> timer5 */
3998static 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",
Peter Ujfalusie3491792014-05-14 12:26:10 -06004002 .user = OCP_USER_MPU | OCP_USER_SDMA,
Paul Walmsley844a3b62012-04-19 04:04:33 -06004003};
4004
Paul Walmsley844a3b62012-04-19 04:04:33 -06004005/* l4_abe -> timer6 */
4006static 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",
Peter Ujfalusie3491792014-05-14 12:26:10 -06004010 .user = OCP_USER_MPU | OCP_USER_SDMA,
Paul Walmsley844a3b62012-04-19 04:04:33 -06004011};
4012
Paul Walmsley844a3b62012-04-19 04:04:33 -06004013/* l4_abe -> timer7 */
4014static 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",
Peter Ujfalusie3491792014-05-14 12:26:10 -06004018 .user = OCP_USER_MPU | OCP_USER_SDMA,
Paul Walmsley844a3b62012-04-19 04:04:33 -06004019};
4020
Paul Walmsley844a3b62012-04-19 04:04:33 -06004021/* l4_abe -> timer8 */
4022static 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",
Peter Ujfalusie3491792014-05-14 12:26:10 -06004026 .user = OCP_USER_MPU | OCP_USER_SDMA,
Paul Walmsley844a3b62012-04-19 04:04:33 -06004027};
4028
Paul Walmsley844a3b62012-04-19 04:04:33 -06004029/* l4_per -> timer9 */
4030static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06004034 .user = OCP_USER_MPU | OCP_USER_SDMA,
4035};
4036
Paul Walmsley844a3b62012-04-19 04:04:33 -06004037/* l4_per -> timer10 */
4038static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06004042 .user = OCP_USER_MPU | OCP_USER_SDMA,
4043};
4044
Paul Walmsley844a3b62012-04-19 04:04:33 -06004045/* l4_per -> timer11 */
4046static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06004050 .user = OCP_USER_MPU | OCP_USER_SDMA,
4051};
4052
Paul Walmsley844a3b62012-04-19 04:04:33 -06004053/* l4_per -> uart1 */
4054static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06004058 .user = OCP_USER_MPU | OCP_USER_SDMA,
4059};
4060
Paul Walmsley844a3b62012-04-19 04:04:33 -06004061/* l4_per -> uart2 */
4062static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06004066 .user = OCP_USER_MPU | OCP_USER_SDMA,
4067};
4068
Paul Walmsley844a3b62012-04-19 04:04:33 -06004069/* l4_per -> uart3 */
4070static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06004074 .user = OCP_USER_MPU | OCP_USER_SDMA,
4075};
4076
Paul Walmsley844a3b62012-04-19 04:04:33 -06004077/* l4_per -> uart4 */
4078static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06004082 .user = OCP_USER_MPU | OCP_USER_SDMA,
4083};
4084
Benoît Cousson0c668872012-04-19 13:33:55 -06004085/* l4_cfg -> usb_host_fs */
Paul Walmsleyb0a70cc2012-07-04 06:55:29 -06004086static struct omap_hwmod_ocp_if __maybe_unused omap44xx_l4_cfg__usb_host_fs = {
Benoît Cousson0c668872012-04-19 13:33:55 -06004087 .master = &omap44xx_l4_cfg_hwmod,
4088 .slave = &omap44xx_usb_host_fs_hwmod,
4089 .clk = "l4_div_ck",
Benoît Cousson0c668872012-04-19 13:33:55 -06004090 .user = OCP_USER_MPU | OCP_USER_SDMA,
4091};
4092
Paul Walmsley844a3b62012-04-19 04:04:33 -06004093/* l4_cfg -> usb_host_hs */
4094static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06004098 .user = OCP_USER_MPU | OCP_USER_SDMA,
4099};
4100
Paul Walmsley844a3b62012-04-19 04:04:33 -06004101/* l4_cfg -> usb_otg_hs */
4102static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06004106 .user = OCP_USER_MPU | OCP_USER_SDMA,
4107};
4108
Paul Walmsley844a3b62012-04-19 04:04:33 -06004109/* l4_cfg -> usb_tll_hs */
Benoit Coussonaf88fa92011-12-15 23:15:18 -07004110static 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",
Benoit Coussonaf88fa92011-12-15 23:15:18 -07004114 .user = OCP_USER_MPU | OCP_USER_SDMA,
4115};
4116
Paul Walmsley844a3b62012-04-19 04:04:33 -06004117/* l4_wkup -> wd_timer2 */
4118static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06004122 .user = OCP_USER_MPU | OCP_USER_SDMA,
4123};
4124
Paul Walmsley844a3b62012-04-19 04:04:33 -06004125/* l4_abe -> wd_timer3 */
4126static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06004130 .user = OCP_USER_MPU,
4131};
4132
Paul Walmsley844a3b62012-04-19 04:04:33 -06004133/* l4_abe -> wd_timer3 (dma) */
4134static 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",
Paul Walmsley844a3b62012-04-19 04:04:33 -06004138 .user = OCP_USER_SDMA,
Benoit Coussonaf88fa92011-12-15 23:15:18 -07004139};
4140
Sricharan R3b9b1012013-06-07 17:26:15 +05304141/* mpu -> emif1 */
4142static 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 */
4150static 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
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004157static struct omap_hwmod_ocp_if *omap44xx_hwmod_ocp_ifs[] __initdata = {
4158 &omap44xx_l3_main_1__dmm,
4159 &omap44xx_mpu__dmm,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004160 &omap44xx_iva__l3_instr,
4161 &omap44xx_l3_main_3__l3_instr,
Benoît Cousson9a817bc82012-04-19 13:33:56 -06004162 &omap44xx_ocp_wp_noc__l3_instr,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004163 &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,
Benoît Cousson96566042012-04-19 13:33:59 -06004170 &omap44xx_debugss__l3_main_2,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004171 &omap44xx_dma_system__l3_main_2,
Ming Leib050f682012-04-19 13:33:50 -06004172 &omap44xx_fdif__l3_main_2,
Paul Walmsley9def3902012-04-19 13:33:53 -06004173 &omap44xx_gpu__l3_main_2,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004174 &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,
Paul Walmsleyb0a70cc2012-07-04 06:55:29 -06004180 /* &omap44xx_usb_host_fs__l3_main_2, */
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004181 &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,
Sebastien Guiriec5cebb232013-02-10 11:17:16 -07004186 &omap44xx_aess__l4_abe,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004187 &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,
Benoît Cousson9a817bc82012-04-19 13:33:56 -06004194 &omap44xx_l4_cfg__ocp_wp_noc,
Sebastien Guiriec5cebb232013-02-10 11:17:16 -07004195 &omap44xx_l4_abe__aess,
4196 &omap44xx_l4_abe__aess_dma,
Paul Walmsley42b9e382012-04-19 13:33:54 -06004197 &omap44xx_l3_main_2__c2c,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004198 &omap44xx_l4_wkup__counter_32k,
Paul Walmsleya0b5d812012-04-19 13:33:57 -06004199 &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,
Benoît Cousson96566042012-04-19 13:33:59 -06004203 &omap44xx_l3_instr__debugss,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004204 &omap44xx_l4_cfg__dma_system,
4205 &omap44xx_l4_abe__dmic,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004206 &omap44xx_dsp__iva,
Tero Kristob3601242012-09-03 11:50:53 -06004207 /* &omap44xx_dsp__sl2if, */
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004208 &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,
Paul Walmsley42b9e382012-04-19 13:33:54 -06004223 &omap44xx_l4_per__elm,
Ming Leib050f682012-04-19 13:33:50 -06004224 &omap44xx_l4_cfg__fdif,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004225 &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,
Benoît Coussoneb42b5d2012-04-19 13:33:51 -06004231 &omap44xx_l3_main_2__gpmc,
Paul Walmsley9def3902012-04-19 13:33:53 -06004232 &omap44xx_l3_main_2__gpu,
Paul Walmsleya091c082012-04-19 13:33:50 -06004233 &omap44xx_l4_per__hdq1w,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004234 &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,
Tero Kristob3601242012-09-03 11:50:53 -06004241 /* &omap44xx_iva__sl2if, */
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004242 &omap44xx_l3_main_2__iva,
4243 &omap44xx_l4_wkup__kbd,
4244 &omap44xx_l4_cfg__mailbox,
Benoît Cousson896d4e92012-04-19 13:33:54 -06004245 &omap44xx_l4_abe__mcasp,
4246 &omap44xx_l4_abe__mcasp_dma,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004247 &omap44xx_l4_abe__mcbsp1,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004248 &omap44xx_l4_abe__mcbsp2,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004249 &omap44xx_l4_abe__mcbsp3,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004250 &omap44xx_l4_per__mcbsp4,
4251 &omap44xx_l4_abe__mcpdm,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004252 &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,
Omar Ramirez Luna230844d2012-09-23 17:28:24 -06004261 &omap44xx_l3_main_2__mmu_ipu,
4262 &omap44xx_l4_cfg__mmu_dsp,
Paul Walmsleye17f18c2012-04-19 13:33:56 -06004263 &omap44xx_l3_main_2__ocmc_ram,
Benoît Cousson0c668872012-04-19 13:33:55 -06004264 &omap44xx_l4_cfg__ocp2scp_usb_phy,
Paul Walmsley794b4802012-04-19 13:33:58 -06004265 &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,
Tero Kristob3601242012-09-03 11:50:53 -06004270 /* &omap44xx_l3_main_2__sl2if, */
Benoît Cousson1e3b5e592012-04-19 13:33:53 -06004271 &omap44xx_l4_abe__slimbus1,
4272 &omap44xx_l4_abe__slimbus1_dma,
4273 &omap44xx_l4_per__slimbus2,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004274 &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,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004283 &omap44xx_l4_abe__timer6,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004284 &omap44xx_l4_abe__timer7,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004285 &omap44xx_l4_abe__timer8,
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004286 &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,
Paul Walmsleyb0a70cc2012-07-04 06:55:29 -06004293 /* &omap44xx_l4_cfg__usb_host_fs, */
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004294 &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,
Sricharan R3b9b1012013-06-07 17:26:15 +05304300 &omap44xx_mpu__emif1,
4301 &omap44xx_mpu__emif2,
Sebastian Reichel9a9ded82017-06-13 11:28:45 +02004302 &omap44xx_l3_main_2__aes1,
Sebastian Reichel478523d2017-06-13 11:28:46 +02004303 &omap44xx_l3_main_2__aes2,
Sebastian Reichelebea90d2017-06-13 11:28:47 +02004304 &omap44xx_l3_main_2__des,
Tero Kristo1df5eaa2017-06-13 16:45:50 +03004305 &omap44xx_l3_main_2__sha0,
Benoit Cousson55d2cb02010-05-12 17:54:36 +02004306 NULL,
4307};
4308
4309int __init omap44xx_hwmod_init(void)
4310{
Kevin Hilman9ebfd282012-06-18 12:12:23 -06004311 omap_hwmod_init();
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06004312 return omap_hwmod_register_links(omap44xx_hwmod_ocp_ifs);
Benoit Cousson55d2cb02010-05-12 17:54:36 +02004313}
4314