blob: da8fef06fae0b23c04902caf521f3a697195f485 [file] [log] [blame]
Paul Walmsley02bfc032009-09-03 20:14:05 +03001/*
Paul Walmsley73591542010-02-22 22:09:32 -07002 * omap_hwmod_2430_data.c - hardware modules present on the OMAP2430 chips
Paul Walmsley02bfc032009-09-03 20:14:05 +03003 *
Paul Walmsley78183f32011-07-09 19:14:05 -06004 * Copyright (C) 2009-2011 Nokia Corporation
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06005 * Copyright (C) 2012 Texas Instruments, Inc.
Paul Walmsley02bfc032009-09-03 20:14:05 +03006 * Paul Walmsley
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License version 2 as
10 * published by the Free Software Foundation.
11 *
12 * XXX handle crossbar/shared link difference for L3?
Paul Walmsley73591542010-02-22 22:09:32 -070013 * XXX these should be marked initdata for multi-OMAP kernels
Paul Walmsley02bfc032009-09-03 20:14:05 +030014 */
Tony Lindgrence491cf2009-10-20 09:40:47 -070015#include <plat/omap_hwmod.h>
Paul Walmsley02bfc032009-09-03 20:14:05 +030016#include <mach/irqs.h>
Tony Lindgrence491cf2009-10-20 09:40:47 -070017#include <plat/cpu.h>
18#include <plat/dma.h>
Kevin Hilman046465b2010-09-27 20:19:30 +053019#include <plat/serial.h>
Paul Walmsley20042902010-09-30 02:40:12 +053020#include <plat/i2c.h>
Varadarajan, Charulathaaeac0e42010-12-07 16:26:56 -080021#include <plat/gpio.h>
Charulatha V37801b32011-02-24 12:51:46 -080022#include <plat/mcbsp.h>
Charulatha V7f904c72011-02-17 09:53:10 -080023#include <plat/mcspi.h>
Thara Gopinathb6b58222011-02-23 00:14:05 -070024#include <plat/dmtimer.h>
Kishore Kadiyala6ab89462011-03-01 13:12:56 -080025#include <plat/mmc.h>
Senthilvadivu Guruswamyde56dbb2011-02-22 09:51:15 +020026#include <plat/l3_2xxx.h>
Paul Walmsley02bfc032009-09-03 20:14:05 +030027
Paul Walmsley43b40992010-02-22 22:09:34 -070028#include "omap_hwmod_common_data.h"
29
Paul Walmsley02bfc032009-09-03 20:14:05 +030030#include "prm-regbits-24xx.h"
Varadarajan, Charulatha165e2162010-09-23 20:02:40 +053031#include "cm-regbits-24xx.h"
Paul Walmsleyff2516f2010-12-21 15:39:15 -070032#include "wd_timer.h"
Paul Walmsley02bfc032009-09-03 20:14:05 +030033
Paul Walmsley73591542010-02-22 22:09:32 -070034/*
35 * OMAP2430 hardware module integration data
36 *
Paul Walmsley844a3b62012-04-19 04:04:33 -060037 * All of the data in this section should be autogeneratable from the
Paul Walmsley73591542010-02-22 22:09:32 -070038 * TI hardware database or other technical documentation. Data that
39 * is driver-specific or driver-kernel integration-specific belongs
40 * elsewhere.
41 */
42
Paul Walmsley844a3b62012-04-19 04:04:33 -060043/*
44 * IP blocks
45 */
Senthilvadivu Guruswamyde56dbb2011-02-22 09:51:15 +020046
Paul Walmsley02bfc032009-09-03 20:14:05 +030047/* L3 */
Kevin Hilman4a7cf902010-07-26 16:34:32 -060048static struct omap_hwmod omap2430_l3_main_hwmod = {
Benoit Coussonfa983472010-07-26 16:34:29 -060049 .name = "l3_main",
Paul Walmsley43b40992010-02-22 22:09:34 -070050 .class = &l3_hwmod_class,
Kevin Hilman2eb18752010-07-26 16:34:28 -060051 .flags = HWMOD_NO_IDLEST,
Paul Walmsley02bfc032009-09-03 20:14:05 +030052};
53
Paul Walmsley02bfc032009-09-03 20:14:05 +030054/* L4 CORE */
55static struct omap_hwmod omap2430_l4_core_hwmod = {
Benoit Coussonfa983472010-07-26 16:34:29 -060056 .name = "l4_core",
Paul Walmsley43b40992010-02-22 22:09:34 -070057 .class = &l4_hwmod_class,
Kevin Hilman2eb18752010-07-26 16:34:28 -060058 .flags = HWMOD_NO_IDLEST,
Paul Walmsley02bfc032009-09-03 20:14:05 +030059};
60
Paul Walmsley02bfc032009-09-03 20:14:05 +030061/* L4 WKUP */
62static struct omap_hwmod omap2430_l4_wkup_hwmod = {
Benoit Coussonfa983472010-07-26 16:34:29 -060063 .name = "l4_wkup",
Paul Walmsley43b40992010-02-22 22:09:34 -070064 .class = &l4_hwmod_class,
Kevin Hilman2eb18752010-07-26 16:34:28 -060065 .flags = HWMOD_NO_IDLEST,
Paul Walmsley02bfc032009-09-03 20:14:05 +030066};
67
Paul Walmsley02bfc032009-09-03 20:14:05 +030068/* MPU */
69static struct omap_hwmod omap2430_mpu_hwmod = {
Benoit Cousson5c2c0292010-05-20 12:31:10 -060070 .name = "mpu",
Paul Walmsley43b40992010-02-22 22:09:34 -070071 .class = &mpu_hwmod_class,
Paul Walmsley50ebdac2010-02-22 22:09:31 -070072 .main_clk = "mpu_ck",
Paul Walmsley02bfc032009-09-03 20:14:05 +030073};
74
Paul Walmsley844a3b62012-04-19 04:04:33 -060075/* IVA2 (IVA2) */
Paul Walmsley08072ac2010-07-26 16:34:33 -060076static struct omap_hwmod omap2430_iva_hwmod = {
77 .name = "iva",
78 .class = &iva_hwmod_class,
Paul Walmsley08072ac2010-07-26 16:34:33 -060079};
80
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +053081/* always-on timers dev attribute */
82static struct omap_timer_capability_dev_attr capability_alwon_dev_attr = {
Paul Walmsley844a3b62012-04-19 04:04:33 -060083 .timer_capability = OMAP_TIMER_ALWON,
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +053084};
85
86/* pwm timers dev attribute */
87static struct omap_timer_capability_dev_attr capability_pwm_dev_attr = {
Paul Walmsley844a3b62012-04-19 04:04:33 -060088 .timer_capability = OMAP_TIMER_HAS_PWM,
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +053089};
90
Thara Gopinathb6b58222011-02-23 00:14:05 -070091/* timer1 */
Thara Gopinathb6b58222011-02-23 00:14:05 -070092static struct omap_hwmod omap2430_timer1_hwmod = {
93 .name = "timer1",
Paul Walmsley0d619a82011-07-09 19:14:07 -060094 .mpu_irqs = omap2_timer1_mpu_irqs,
Thara Gopinathb6b58222011-02-23 00:14:05 -070095 .main_clk = "gpt1_fck",
96 .prcm = {
97 .omap2 = {
98 .prcm_reg_id = 1,
99 .module_bit = OMAP24XX_EN_GPT1_SHIFT,
100 .module_offs = WKUP_MOD,
101 .idlest_reg_id = 1,
102 .idlest_idle_bit = OMAP24XX_ST_GPT1_SHIFT,
103 },
104 },
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +0530105 .dev_attr = &capability_alwon_dev_attr,
Paul Walmsley273b9462011-07-09 19:14:08 -0600106 .class = &omap2xxx_timer_hwmod_class,
Thara Gopinathb6b58222011-02-23 00:14:05 -0700107};
108
109/* timer2 */
Thara Gopinathb6b58222011-02-23 00:14:05 -0700110static struct omap_hwmod omap2430_timer2_hwmod = {
111 .name = "timer2",
Paul Walmsley0d619a82011-07-09 19:14:07 -0600112 .mpu_irqs = omap2_timer2_mpu_irqs,
Thara Gopinathb6b58222011-02-23 00:14:05 -0700113 .main_clk = "gpt2_fck",
114 .prcm = {
115 .omap2 = {
116 .prcm_reg_id = 1,
117 .module_bit = OMAP24XX_EN_GPT2_SHIFT,
118 .module_offs = CORE_MOD,
119 .idlest_reg_id = 1,
120 .idlest_idle_bit = OMAP24XX_ST_GPT2_SHIFT,
121 },
122 },
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +0530123 .dev_attr = &capability_alwon_dev_attr,
Paul Walmsley273b9462011-07-09 19:14:08 -0600124 .class = &omap2xxx_timer_hwmod_class,
Thara Gopinathb6b58222011-02-23 00:14:05 -0700125};
126
127/* timer3 */
Thara Gopinathb6b58222011-02-23 00:14:05 -0700128static struct omap_hwmod omap2430_timer3_hwmod = {
129 .name = "timer3",
Paul Walmsley0d619a82011-07-09 19:14:07 -0600130 .mpu_irqs = omap2_timer3_mpu_irqs,
Thara Gopinathb6b58222011-02-23 00:14:05 -0700131 .main_clk = "gpt3_fck",
132 .prcm = {
133 .omap2 = {
134 .prcm_reg_id = 1,
135 .module_bit = OMAP24XX_EN_GPT3_SHIFT,
136 .module_offs = CORE_MOD,
137 .idlest_reg_id = 1,
138 .idlest_idle_bit = OMAP24XX_ST_GPT3_SHIFT,
139 },
140 },
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +0530141 .dev_attr = &capability_alwon_dev_attr,
Paul Walmsley273b9462011-07-09 19:14:08 -0600142 .class = &omap2xxx_timer_hwmod_class,
Thara Gopinathb6b58222011-02-23 00:14:05 -0700143};
144
145/* timer4 */
Thara Gopinathb6b58222011-02-23 00:14:05 -0700146static struct omap_hwmod omap2430_timer4_hwmod = {
147 .name = "timer4",
Paul Walmsley0d619a82011-07-09 19:14:07 -0600148 .mpu_irqs = omap2_timer4_mpu_irqs,
Thara Gopinathb6b58222011-02-23 00:14:05 -0700149 .main_clk = "gpt4_fck",
150 .prcm = {
151 .omap2 = {
152 .prcm_reg_id = 1,
153 .module_bit = OMAP24XX_EN_GPT4_SHIFT,
154 .module_offs = CORE_MOD,
155 .idlest_reg_id = 1,
156 .idlest_idle_bit = OMAP24XX_ST_GPT4_SHIFT,
157 },
158 },
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +0530159 .dev_attr = &capability_alwon_dev_attr,
Paul Walmsley273b9462011-07-09 19:14:08 -0600160 .class = &omap2xxx_timer_hwmod_class,
Thara Gopinathb6b58222011-02-23 00:14:05 -0700161};
162
163/* timer5 */
Thara Gopinathb6b58222011-02-23 00:14:05 -0700164static struct omap_hwmod omap2430_timer5_hwmod = {
165 .name = "timer5",
Paul Walmsley0d619a82011-07-09 19:14:07 -0600166 .mpu_irqs = omap2_timer5_mpu_irqs,
Thara Gopinathb6b58222011-02-23 00:14:05 -0700167 .main_clk = "gpt5_fck",
168 .prcm = {
169 .omap2 = {
170 .prcm_reg_id = 1,
171 .module_bit = OMAP24XX_EN_GPT5_SHIFT,
172 .module_offs = CORE_MOD,
173 .idlest_reg_id = 1,
174 .idlest_idle_bit = OMAP24XX_ST_GPT5_SHIFT,
175 },
176 },
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +0530177 .dev_attr = &capability_alwon_dev_attr,
Paul Walmsley273b9462011-07-09 19:14:08 -0600178 .class = &omap2xxx_timer_hwmod_class,
Thara Gopinathb6b58222011-02-23 00:14:05 -0700179};
180
181/* timer6 */
Thara Gopinathb6b58222011-02-23 00:14:05 -0700182static struct omap_hwmod omap2430_timer6_hwmod = {
183 .name = "timer6",
Paul Walmsley0d619a82011-07-09 19:14:07 -0600184 .mpu_irqs = omap2_timer6_mpu_irqs,
Thara Gopinathb6b58222011-02-23 00:14:05 -0700185 .main_clk = "gpt6_fck",
186 .prcm = {
187 .omap2 = {
188 .prcm_reg_id = 1,
189 .module_bit = OMAP24XX_EN_GPT6_SHIFT,
190 .module_offs = CORE_MOD,
191 .idlest_reg_id = 1,
192 .idlest_idle_bit = OMAP24XX_ST_GPT6_SHIFT,
193 },
194 },
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +0530195 .dev_attr = &capability_alwon_dev_attr,
Paul Walmsley273b9462011-07-09 19:14:08 -0600196 .class = &omap2xxx_timer_hwmod_class,
Thara Gopinathb6b58222011-02-23 00:14:05 -0700197};
198
199/* timer7 */
Thara Gopinathb6b58222011-02-23 00:14:05 -0700200static struct omap_hwmod omap2430_timer7_hwmod = {
201 .name = "timer7",
Paul Walmsley0d619a82011-07-09 19:14:07 -0600202 .mpu_irqs = omap2_timer7_mpu_irqs,
Thara Gopinathb6b58222011-02-23 00:14:05 -0700203 .main_clk = "gpt7_fck",
204 .prcm = {
205 .omap2 = {
206 .prcm_reg_id = 1,
207 .module_bit = OMAP24XX_EN_GPT7_SHIFT,
208 .module_offs = CORE_MOD,
209 .idlest_reg_id = 1,
210 .idlest_idle_bit = OMAP24XX_ST_GPT7_SHIFT,
211 },
212 },
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +0530213 .dev_attr = &capability_alwon_dev_attr,
Paul Walmsley273b9462011-07-09 19:14:08 -0600214 .class = &omap2xxx_timer_hwmod_class,
Thara Gopinathb6b58222011-02-23 00:14:05 -0700215};
216
217/* timer8 */
Thara Gopinathb6b58222011-02-23 00:14:05 -0700218static struct omap_hwmod omap2430_timer8_hwmod = {
219 .name = "timer8",
Paul Walmsley0d619a82011-07-09 19:14:07 -0600220 .mpu_irqs = omap2_timer8_mpu_irqs,
Thara Gopinathb6b58222011-02-23 00:14:05 -0700221 .main_clk = "gpt8_fck",
222 .prcm = {
223 .omap2 = {
224 .prcm_reg_id = 1,
225 .module_bit = OMAP24XX_EN_GPT8_SHIFT,
226 .module_offs = CORE_MOD,
227 .idlest_reg_id = 1,
228 .idlest_idle_bit = OMAP24XX_ST_GPT8_SHIFT,
229 },
230 },
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +0530231 .dev_attr = &capability_alwon_dev_attr,
Paul Walmsley273b9462011-07-09 19:14:08 -0600232 .class = &omap2xxx_timer_hwmod_class,
Thara Gopinathb6b58222011-02-23 00:14:05 -0700233};
234
235/* timer9 */
Thara Gopinathb6b58222011-02-23 00:14:05 -0700236static struct omap_hwmod omap2430_timer9_hwmod = {
237 .name = "timer9",
Paul Walmsley0d619a82011-07-09 19:14:07 -0600238 .mpu_irqs = omap2_timer9_mpu_irqs,
Thara Gopinathb6b58222011-02-23 00:14:05 -0700239 .main_clk = "gpt9_fck",
240 .prcm = {
241 .omap2 = {
242 .prcm_reg_id = 1,
243 .module_bit = OMAP24XX_EN_GPT9_SHIFT,
244 .module_offs = CORE_MOD,
245 .idlest_reg_id = 1,
246 .idlest_idle_bit = OMAP24XX_ST_GPT9_SHIFT,
247 },
248 },
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +0530249 .dev_attr = &capability_pwm_dev_attr,
Paul Walmsley273b9462011-07-09 19:14:08 -0600250 .class = &omap2xxx_timer_hwmod_class,
Thara Gopinathb6b58222011-02-23 00:14:05 -0700251};
252
253/* timer10 */
Thara Gopinathb6b58222011-02-23 00:14:05 -0700254static struct omap_hwmod omap2430_timer10_hwmod = {
255 .name = "timer10",
Paul Walmsley0d619a82011-07-09 19:14:07 -0600256 .mpu_irqs = omap2_timer10_mpu_irqs,
Thara Gopinathb6b58222011-02-23 00:14:05 -0700257 .main_clk = "gpt10_fck",
258 .prcm = {
259 .omap2 = {
260 .prcm_reg_id = 1,
261 .module_bit = OMAP24XX_EN_GPT10_SHIFT,
262 .module_offs = CORE_MOD,
263 .idlest_reg_id = 1,
264 .idlest_idle_bit = OMAP24XX_ST_GPT10_SHIFT,
265 },
266 },
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +0530267 .dev_attr = &capability_pwm_dev_attr,
Paul Walmsley273b9462011-07-09 19:14:08 -0600268 .class = &omap2xxx_timer_hwmod_class,
Thara Gopinathb6b58222011-02-23 00:14:05 -0700269};
270
271/* timer11 */
Thara Gopinathb6b58222011-02-23 00:14:05 -0700272static struct omap_hwmod omap2430_timer11_hwmod = {
273 .name = "timer11",
Paul Walmsley0d619a82011-07-09 19:14:07 -0600274 .mpu_irqs = omap2_timer11_mpu_irqs,
Thara Gopinathb6b58222011-02-23 00:14:05 -0700275 .main_clk = "gpt11_fck",
276 .prcm = {
277 .omap2 = {
278 .prcm_reg_id = 1,
279 .module_bit = OMAP24XX_EN_GPT11_SHIFT,
280 .module_offs = CORE_MOD,
281 .idlest_reg_id = 1,
282 .idlest_idle_bit = OMAP24XX_ST_GPT11_SHIFT,
283 },
284 },
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +0530285 .dev_attr = &capability_pwm_dev_attr,
Paul Walmsley273b9462011-07-09 19:14:08 -0600286 .class = &omap2xxx_timer_hwmod_class,
Thara Gopinathb6b58222011-02-23 00:14:05 -0700287};
288
289/* timer12 */
Thara Gopinathb6b58222011-02-23 00:14:05 -0700290static struct omap_hwmod omap2430_timer12_hwmod = {
291 .name = "timer12",
Paul Walmsley0d619a82011-07-09 19:14:07 -0600292 .mpu_irqs = omap2xxx_timer12_mpu_irqs,
Thara Gopinathb6b58222011-02-23 00:14:05 -0700293 .main_clk = "gpt12_fck",
294 .prcm = {
295 .omap2 = {
296 .prcm_reg_id = 1,
297 .module_bit = OMAP24XX_EN_GPT12_SHIFT,
298 .module_offs = CORE_MOD,
299 .idlest_reg_id = 1,
300 .idlest_idle_bit = OMAP24XX_ST_GPT12_SHIFT,
301 },
302 },
Tarun Kanti DebBarmac345c8b2011-09-20 17:00:18 +0530303 .dev_attr = &capability_pwm_dev_attr,
Paul Walmsley273b9462011-07-09 19:14:08 -0600304 .class = &omap2xxx_timer_hwmod_class,
Thara Gopinathb6b58222011-02-23 00:14:05 -0700305};
306
Varadarajan, Charulatha165e2162010-09-23 20:02:40 +0530307static struct omap_hwmod omap2430_wd_timer2_hwmod = {
308 .name = "wd_timer2",
Paul Walmsley273b9462011-07-09 19:14:08 -0600309 .class = &omap2xxx_wd_timer_hwmod_class,
Varadarajan, Charulatha165e2162010-09-23 20:02:40 +0530310 .main_clk = "mpu_wdt_fck",
311 .prcm = {
312 .omap2 = {
313 .prcm_reg_id = 1,
314 .module_bit = OMAP24XX_EN_MPU_WDT_SHIFT,
315 .module_offs = WKUP_MOD,
316 .idlest_reg_id = 1,
317 .idlest_idle_bit = OMAP24XX_ST_MPU_WDT_SHIFT,
318 },
319 },
Varadarajan, Charulatha165e2162010-09-23 20:02:40 +0530320};
321
Kevin Hilman046465b2010-09-27 20:19:30 +0530322/* UART1 */
Kevin Hilman046465b2010-09-27 20:19:30 +0530323static struct omap_hwmod omap2430_uart1_hwmod = {
324 .name = "uart1",
Paul Walmsley0d619a82011-07-09 19:14:07 -0600325 .mpu_irqs = omap2_uart1_mpu_irqs,
Paul Walmsleyd826ebf2011-07-09 19:14:07 -0600326 .sdma_reqs = omap2_uart1_sdma_reqs,
Kevin Hilman046465b2010-09-27 20:19:30 +0530327 .main_clk = "uart1_fck",
328 .prcm = {
329 .omap2 = {
330 .module_offs = CORE_MOD,
331 .prcm_reg_id = 1,
332 .module_bit = OMAP24XX_EN_UART1_SHIFT,
333 .idlest_reg_id = 1,
334 .idlest_idle_bit = OMAP24XX_EN_UART1_SHIFT,
335 },
336 },
Paul Walmsley273b9462011-07-09 19:14:08 -0600337 .class = &omap2_uart_class,
Kevin Hilman046465b2010-09-27 20:19:30 +0530338};
339
340/* UART2 */
Kevin Hilman046465b2010-09-27 20:19:30 +0530341static struct omap_hwmod omap2430_uart2_hwmod = {
342 .name = "uart2",
Paul Walmsley0d619a82011-07-09 19:14:07 -0600343 .mpu_irqs = omap2_uart2_mpu_irqs,
Paul Walmsleyd826ebf2011-07-09 19:14:07 -0600344 .sdma_reqs = omap2_uart2_sdma_reqs,
Kevin Hilman046465b2010-09-27 20:19:30 +0530345 .main_clk = "uart2_fck",
346 .prcm = {
347 .omap2 = {
348 .module_offs = CORE_MOD,
349 .prcm_reg_id = 1,
350 .module_bit = OMAP24XX_EN_UART2_SHIFT,
351 .idlest_reg_id = 1,
352 .idlest_idle_bit = OMAP24XX_EN_UART2_SHIFT,
353 },
354 },
Paul Walmsley273b9462011-07-09 19:14:08 -0600355 .class = &omap2_uart_class,
Kevin Hilman046465b2010-09-27 20:19:30 +0530356};
357
358/* UART3 */
Kevin Hilman046465b2010-09-27 20:19:30 +0530359static struct omap_hwmod omap2430_uart3_hwmod = {
360 .name = "uart3",
Paul Walmsley0d619a82011-07-09 19:14:07 -0600361 .mpu_irqs = omap2_uart3_mpu_irqs,
Paul Walmsleyd826ebf2011-07-09 19:14:07 -0600362 .sdma_reqs = omap2_uart3_sdma_reqs,
Kevin Hilman046465b2010-09-27 20:19:30 +0530363 .main_clk = "uart3_fck",
364 .prcm = {
365 .omap2 = {
366 .module_offs = CORE_MOD,
367 .prcm_reg_id = 2,
368 .module_bit = OMAP24XX_EN_UART3_SHIFT,
369 .idlest_reg_id = 2,
370 .idlest_idle_bit = OMAP24XX_EN_UART3_SHIFT,
371 },
372 },
Paul Walmsley273b9462011-07-09 19:14:08 -0600373 .class = &omap2_uart_class,
Kevin Hilman046465b2010-09-27 20:19:30 +0530374};
375
Senthilvadivu Guruswamyde56dbb2011-02-22 09:51:15 +0200376/* dss */
Senthilvadivu Guruswamyde56dbb2011-02-22 09:51:15 +0200377static struct omap_hwmod_opt_clk dss_opt_clks[] = {
Tomi Valkeinen1258ea52011-11-08 03:16:09 -0700378 /*
379 * The DSS HW needs all DSS clocks enabled during reset. The dss_core
380 * driver does not use these clocks.
381 */
Senthilvadivu Guruswamyde56dbb2011-02-22 09:51:15 +0200382 { .role = "tv_clk", .clk = "dss_54m_fck" },
383 { .role = "sys_clk", .clk = "dss2_fck" },
384};
385
386static struct omap_hwmod omap2430_dss_core_hwmod = {
387 .name = "dss_core",
Paul Walmsley273b9462011-07-09 19:14:08 -0600388 .class = &omap2_dss_hwmod_class,
Senthilvadivu Guruswamyde56dbb2011-02-22 09:51:15 +0200389 .main_clk = "dss1_fck", /* instead of dss_fck */
Paul Walmsleyd826ebf2011-07-09 19:14:07 -0600390 .sdma_reqs = omap2xxx_dss_sdma_chs,
Senthilvadivu Guruswamyde56dbb2011-02-22 09:51:15 +0200391 .prcm = {
392 .omap2 = {
393 .prcm_reg_id = 1,
394 .module_bit = OMAP24XX_EN_DSS1_SHIFT,
395 .module_offs = CORE_MOD,
396 .idlest_reg_id = 1,
397 .idlest_stdby_bit = OMAP24XX_ST_DSS_SHIFT,
398 },
399 },
400 .opt_clks = dss_opt_clks,
401 .opt_clks_cnt = ARRAY_SIZE(dss_opt_clks),
Tomi Valkeinen1258ea52011-11-08 03:16:09 -0700402 .flags = HWMOD_NO_IDLEST | HWMOD_CONTROL_OPT_CLKS_IN_RESET,
Senthilvadivu Guruswamyde56dbb2011-02-22 09:51:15 +0200403};
404
Senthilvadivu Guruswamyde56dbb2011-02-22 09:51:15 +0200405static struct omap_hwmod omap2430_dss_dispc_hwmod = {
406 .name = "dss_dispc",
Paul Walmsley273b9462011-07-09 19:14:08 -0600407 .class = &omap2_dispc_hwmod_class,
Paul Walmsley0d619a82011-07-09 19:14:07 -0600408 .mpu_irqs = omap2_dispc_irqs,
Senthilvadivu Guruswamyde56dbb2011-02-22 09:51:15 +0200409 .main_clk = "dss1_fck",
410 .prcm = {
411 .omap2 = {
412 .prcm_reg_id = 1,
413 .module_bit = OMAP24XX_EN_DSS1_SHIFT,
414 .module_offs = CORE_MOD,
415 .idlest_reg_id = 1,
416 .idlest_stdby_bit = OMAP24XX_ST_DSS_SHIFT,
417 },
418 },
Senthilvadivu Guruswamyde56dbb2011-02-22 09:51:15 +0200419 .flags = HWMOD_NO_IDLEST,
Archit Tanejab923d402011-10-06 18:04:08 -0600420 .dev_attr = &omap2_3_dss_dispc_dev_attr
Senthilvadivu Guruswamyde56dbb2011-02-22 09:51:15 +0200421};
422
Tomi Valkeinenb8ac10d2011-11-08 03:16:09 -0700423static struct omap_hwmod_opt_clk dss_rfbi_opt_clks[] = {
424 { .role = "ick", .clk = "dss_ick" },
425};
426
Senthilvadivu Guruswamyde56dbb2011-02-22 09:51:15 +0200427static struct omap_hwmod omap2430_dss_rfbi_hwmod = {
428 .name = "dss_rfbi",
Paul Walmsley273b9462011-07-09 19:14:08 -0600429 .class = &omap2_rfbi_hwmod_class,
Senthilvadivu Guruswamyde56dbb2011-02-22 09:51:15 +0200430 .main_clk = "dss1_fck",
431 .prcm = {
432 .omap2 = {
433 .prcm_reg_id = 1,
434 .module_bit = OMAP24XX_EN_DSS1_SHIFT,
435 .module_offs = CORE_MOD,
436 },
437 },
Tomi Valkeinenb8ac10d2011-11-08 03:16:09 -0700438 .opt_clks = dss_rfbi_opt_clks,
439 .opt_clks_cnt = ARRAY_SIZE(dss_rfbi_opt_clks),
Senthilvadivu Guruswamyde56dbb2011-02-22 09:51:15 +0200440 .flags = HWMOD_NO_IDLEST,
441};
442
Senthilvadivu Guruswamyde56dbb2011-02-22 09:51:15 +0200443static struct omap_hwmod omap2430_dss_venc_hwmod = {
444 .name = "dss_venc",
Paul Walmsley273b9462011-07-09 19:14:08 -0600445 .class = &omap2_venc_hwmod_class,
Tomi Valkeinenb8ac10d2011-11-08 03:16:09 -0700446 .main_clk = "dss_54m_fck",
Senthilvadivu Guruswamyde56dbb2011-02-22 09:51:15 +0200447 .prcm = {
448 .omap2 = {
449 .prcm_reg_id = 1,
450 .module_bit = OMAP24XX_EN_DSS1_SHIFT,
451 .module_offs = CORE_MOD,
452 },
453 },
Senthilvadivu Guruswamyde56dbb2011-02-22 09:51:15 +0200454 .flags = HWMOD_NO_IDLEST,
455};
456
Paul Walmsley20042902010-09-30 02:40:12 +0530457/* I2C common */
458static struct omap_hwmod_class_sysconfig i2c_sysc = {
459 .rev_offs = 0x00,
460 .sysc_offs = 0x20,
461 .syss_offs = 0x10,
Avinash.H.Md73d65f2011-03-03 14:22:46 -0700462 .sysc_flags = (SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE |
463 SYSS_HAS_RESET_STATUS),
Paul Walmsley20042902010-09-30 02:40:12 +0530464 .sysc_fields = &omap_hwmod_sysc_type1,
465};
466
467static struct omap_hwmod_class i2c_class = {
468 .name = "i2c",
469 .sysc = &i2c_sysc,
Andy Greendb791a72011-07-10 05:27:15 -0600470 .rev = OMAP_I2C_IP_VERSION_1,
Avinash.H.M6d3c55f2011-07-10 05:27:16 -0600471 .reset = &omap_i2c_reset,
Paul Walmsley20042902010-09-30 02:40:12 +0530472};
473
Benoit Cousson50ebb772010-12-21 21:08:34 -0700474static struct omap_i2c_dev_attr i2c_dev_attr = {
Paul Walmsley20042902010-09-30 02:40:12 +0530475 .fifo_depth = 8, /* bytes */
Andy Green4d4441a2011-07-10 05:27:16 -0600476 .flags = OMAP_I2C_FLAG_APPLY_ERRATA_I207 |
477 OMAP_I2C_FLAG_BUS_SHIFT_2 |
478 OMAP_I2C_FLAG_FORCE_19200_INT_CLK,
Paul Walmsley20042902010-09-30 02:40:12 +0530479};
480
Benoit Cousson50ebb772010-12-21 21:08:34 -0700481/* I2C1 */
Paul Walmsley20042902010-09-30 02:40:12 +0530482static struct omap_hwmod omap2430_i2c1_hwmod = {
483 .name = "i2c1",
Andy Green3e600522011-07-10 05:27:14 -0600484 .flags = HWMOD_16BIT_REG,
Paul Walmsley0d619a82011-07-09 19:14:07 -0600485 .mpu_irqs = omap2_i2c1_mpu_irqs,
Paul Walmsleyd826ebf2011-07-09 19:14:07 -0600486 .sdma_reqs = omap2_i2c1_sdma_reqs,
Paul Walmsley20042902010-09-30 02:40:12 +0530487 .main_clk = "i2chs1_fck",
488 .prcm = {
489 .omap2 = {
490 /*
491 * NOTE: The CM_FCLKEN* and CM_ICLKEN* for
492 * I2CHS IP's do not follow the usual pattern.
493 * prcm_reg_id alone cannot be used to program
494 * the iclk and fclk. Needs to be handled using
Lucas De Marchi25985ed2011-03-30 22:57:33 -0300495 * additional flags when clk handling is moved
Paul Walmsley20042902010-09-30 02:40:12 +0530496 * to hwmod framework.
497 */
498 .module_offs = CORE_MOD,
499 .prcm_reg_id = 1,
500 .module_bit = OMAP2430_EN_I2CHS1_SHIFT,
501 .idlest_reg_id = 1,
502 .idlest_idle_bit = OMAP2430_ST_I2CHS1_SHIFT,
503 },
504 },
Paul Walmsley20042902010-09-30 02:40:12 +0530505 .class = &i2c_class,
Benoit Cousson50ebb772010-12-21 21:08:34 -0700506 .dev_attr = &i2c_dev_attr,
Paul Walmsley20042902010-09-30 02:40:12 +0530507};
508
509/* I2C2 */
Paul Walmsley20042902010-09-30 02:40:12 +0530510static struct omap_hwmod omap2430_i2c2_hwmod = {
511 .name = "i2c2",
Andy Green3e600522011-07-10 05:27:14 -0600512 .flags = HWMOD_16BIT_REG,
Paul Walmsley0d619a82011-07-09 19:14:07 -0600513 .mpu_irqs = omap2_i2c2_mpu_irqs,
Paul Walmsleyd826ebf2011-07-09 19:14:07 -0600514 .sdma_reqs = omap2_i2c2_sdma_reqs,
Paul Walmsley20042902010-09-30 02:40:12 +0530515 .main_clk = "i2chs2_fck",
516 .prcm = {
517 .omap2 = {
518 .module_offs = CORE_MOD,
519 .prcm_reg_id = 1,
520 .module_bit = OMAP2430_EN_I2CHS2_SHIFT,
521 .idlest_reg_id = 1,
522 .idlest_idle_bit = OMAP2430_ST_I2CHS2_SHIFT,
523 },
524 },
Paul Walmsley20042902010-09-30 02:40:12 +0530525 .class = &i2c_class,
Benoit Cousson50ebb772010-12-21 21:08:34 -0700526 .dev_attr = &i2c_dev_attr,
Paul Walmsley20042902010-09-30 02:40:12 +0530527};
528
Varadarajan, Charulathaaeac0e42010-12-07 16:26:56 -0800529/* gpio dev_attr */
530static struct omap_gpio_dev_attr gpio_dev_attr = {
531 .bank_width = 32,
532 .dbck_flag = false,
533};
534
Varadarajan, Charulathaaeac0e42010-12-07 16:26:56 -0800535/* gpio1 */
Varadarajan, Charulathaaeac0e42010-12-07 16:26:56 -0800536static struct omap_hwmod omap2430_gpio1_hwmod = {
537 .name = "gpio1",
Avinash.H.Mf95440c2011-04-05 21:10:15 +0530538 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
Paul Walmsley0d619a82011-07-09 19:14:07 -0600539 .mpu_irqs = omap2_gpio1_irqs,
Varadarajan, Charulathaaeac0e42010-12-07 16:26:56 -0800540 .main_clk = "gpios_fck",
541 .prcm = {
542 .omap2 = {
543 .prcm_reg_id = 1,
544 .module_bit = OMAP24XX_EN_GPIOS_SHIFT,
545 .module_offs = WKUP_MOD,
546 .idlest_reg_id = 1,
547 .idlest_idle_bit = OMAP24XX_EN_GPIOS_SHIFT,
548 },
549 },
Paul Walmsley273b9462011-07-09 19:14:08 -0600550 .class = &omap2xxx_gpio_hwmod_class,
Varadarajan, Charulathaaeac0e42010-12-07 16:26:56 -0800551 .dev_attr = &gpio_dev_attr,
Varadarajan, Charulathaaeac0e42010-12-07 16:26:56 -0800552};
553
554/* gpio2 */
Varadarajan, Charulathaaeac0e42010-12-07 16:26:56 -0800555static struct omap_hwmod omap2430_gpio2_hwmod = {
556 .name = "gpio2",
Avinash.H.Mf95440c2011-04-05 21:10:15 +0530557 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
Paul Walmsley0d619a82011-07-09 19:14:07 -0600558 .mpu_irqs = omap2_gpio2_irqs,
Varadarajan, Charulathaaeac0e42010-12-07 16:26:56 -0800559 .main_clk = "gpios_fck",
560 .prcm = {
561 .omap2 = {
562 .prcm_reg_id = 1,
563 .module_bit = OMAP24XX_EN_GPIOS_SHIFT,
564 .module_offs = WKUP_MOD,
565 .idlest_reg_id = 1,
566 .idlest_idle_bit = OMAP24XX_ST_GPIOS_SHIFT,
567 },
568 },
Paul Walmsley273b9462011-07-09 19:14:08 -0600569 .class = &omap2xxx_gpio_hwmod_class,
Varadarajan, Charulathaaeac0e42010-12-07 16:26:56 -0800570 .dev_attr = &gpio_dev_attr,
Varadarajan, Charulathaaeac0e42010-12-07 16:26:56 -0800571};
572
573/* gpio3 */
Varadarajan, Charulathaaeac0e42010-12-07 16:26:56 -0800574static struct omap_hwmod omap2430_gpio3_hwmod = {
575 .name = "gpio3",
Avinash.H.Mf95440c2011-04-05 21:10:15 +0530576 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
Paul Walmsley0d619a82011-07-09 19:14:07 -0600577 .mpu_irqs = omap2_gpio3_irqs,
Varadarajan, Charulathaaeac0e42010-12-07 16:26:56 -0800578 .main_clk = "gpios_fck",
579 .prcm = {
580 .omap2 = {
581 .prcm_reg_id = 1,
582 .module_bit = OMAP24XX_EN_GPIOS_SHIFT,
583 .module_offs = WKUP_MOD,
584 .idlest_reg_id = 1,
585 .idlest_idle_bit = OMAP24XX_ST_GPIOS_SHIFT,
586 },
587 },
Paul Walmsley273b9462011-07-09 19:14:08 -0600588 .class = &omap2xxx_gpio_hwmod_class,
Varadarajan, Charulathaaeac0e42010-12-07 16:26:56 -0800589 .dev_attr = &gpio_dev_attr,
Varadarajan, Charulathaaeac0e42010-12-07 16:26:56 -0800590};
591
592/* gpio4 */
Varadarajan, Charulathaaeac0e42010-12-07 16:26:56 -0800593static struct omap_hwmod omap2430_gpio4_hwmod = {
594 .name = "gpio4",
Avinash.H.Mf95440c2011-04-05 21:10:15 +0530595 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
Paul Walmsley0d619a82011-07-09 19:14:07 -0600596 .mpu_irqs = omap2_gpio4_irqs,
Varadarajan, Charulathaaeac0e42010-12-07 16:26:56 -0800597 .main_clk = "gpios_fck",
598 .prcm = {
599 .omap2 = {
600 .prcm_reg_id = 1,
601 .module_bit = OMAP24XX_EN_GPIOS_SHIFT,
602 .module_offs = WKUP_MOD,
603 .idlest_reg_id = 1,
604 .idlest_idle_bit = OMAP24XX_ST_GPIOS_SHIFT,
605 },
606 },
Paul Walmsley273b9462011-07-09 19:14:08 -0600607 .class = &omap2xxx_gpio_hwmod_class,
Varadarajan, Charulathaaeac0e42010-12-07 16:26:56 -0800608 .dev_attr = &gpio_dev_attr,
Varadarajan, Charulathaaeac0e42010-12-07 16:26:56 -0800609};
610
611/* gpio5 */
612static struct omap_hwmod_irq_info omap243x_gpio5_irqs[] = {
613 { .irq = 33 }, /* INT_24XX_GPIO_BANK5 */
Paul Walmsley212738a2011-07-09 19:14:06 -0600614 { .irq = -1 }
Varadarajan, Charulathaaeac0e42010-12-07 16:26:56 -0800615};
616
Varadarajan, Charulathaaeac0e42010-12-07 16:26:56 -0800617static struct omap_hwmod omap2430_gpio5_hwmod = {
618 .name = "gpio5",
Avinash.H.Mf95440c2011-04-05 21:10:15 +0530619 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
Varadarajan, Charulathaaeac0e42010-12-07 16:26:56 -0800620 .mpu_irqs = omap243x_gpio5_irqs,
Varadarajan, Charulathaaeac0e42010-12-07 16:26:56 -0800621 .main_clk = "gpio5_fck",
622 .prcm = {
623 .omap2 = {
624 .prcm_reg_id = 2,
625 .module_bit = OMAP2430_EN_GPIO5_SHIFT,
626 .module_offs = CORE_MOD,
627 .idlest_reg_id = 2,
628 .idlest_idle_bit = OMAP2430_ST_GPIO5_SHIFT,
629 },
630 },
Paul Walmsley273b9462011-07-09 19:14:08 -0600631 .class = &omap2xxx_gpio_hwmod_class,
Varadarajan, Charulathaaeac0e42010-12-07 16:26:56 -0800632 .dev_attr = &gpio_dev_attr,
Varadarajan, Charulathaaeac0e42010-12-07 16:26:56 -0800633};
634
G, Manjunath Kondaiah82cbd1a2010-12-20 18:27:18 -0800635/* dma attributes */
636static struct omap_dma_dev_attr dma_dev_attr = {
637 .dev_caps = RESERVE_CHANNEL | DMA_LINKED_LCH | GLOBAL_PRIORITY |
638 IS_CSSA_32 | IS_CDSA_32 | IS_RW_PRIORITY,
639 .lch_count = 32,
640};
641
G, Manjunath Kondaiah82cbd1a2010-12-20 18:27:18 -0800642static struct omap_hwmod omap2430_dma_system_hwmod = {
643 .name = "dma",
Paul Walmsley273b9462011-07-09 19:14:08 -0600644 .class = &omap2xxx_dma_hwmod_class,
Paul Walmsley0d619a82011-07-09 19:14:07 -0600645 .mpu_irqs = omap2_dma_system_irqs,
G, Manjunath Kondaiah82cbd1a2010-12-20 18:27:18 -0800646 .main_clk = "core_l3_ck",
G, Manjunath Kondaiah82cbd1a2010-12-20 18:27:18 -0800647 .dev_attr = &dma_dev_attr,
G, Manjunath Kondaiah82cbd1a2010-12-20 18:27:18 -0800648 .flags = HWMOD_NO_IDLEST,
649};
650
Omar Ramirez Lunafca1ab52011-02-24 12:51:32 -0800651/* mailbox */
Omar Ramirez Lunafca1ab52011-02-24 12:51:32 -0800652static struct omap_hwmod_irq_info omap2430_mailbox_irqs[] = {
653 { .irq = 26 },
Paul Walmsley212738a2011-07-09 19:14:06 -0600654 { .irq = -1 }
Omar Ramirez Lunafca1ab52011-02-24 12:51:32 -0800655};
656
Omar Ramirez Lunafca1ab52011-02-24 12:51:32 -0800657static struct omap_hwmod omap2430_mailbox_hwmod = {
658 .name = "mailbox",
Paul Walmsley273b9462011-07-09 19:14:08 -0600659 .class = &omap2xxx_mailbox_hwmod_class,
Omar Ramirez Lunafca1ab52011-02-24 12:51:32 -0800660 .mpu_irqs = omap2430_mailbox_irqs,
Omar Ramirez Lunafca1ab52011-02-24 12:51:32 -0800661 .main_clk = "mailboxes_ick",
662 .prcm = {
663 .omap2 = {
664 .prcm_reg_id = 1,
665 .module_bit = OMAP24XX_EN_MAILBOXES_SHIFT,
666 .module_offs = CORE_MOD,
667 .idlest_reg_id = 1,
668 .idlest_idle_bit = OMAP24XX_ST_MAILBOXES_SHIFT,
669 },
670 },
Omar Ramirez Lunafca1ab52011-02-24 12:51:32 -0800671};
672
Charulatha V7f904c72011-02-17 09:53:10 -0800673/* mcspi1 */
Charulatha V7f904c72011-02-17 09:53:10 -0800674static struct omap2_mcspi_dev_attr omap_mcspi1_dev_attr = {
675 .num_chipselect = 4,
676};
677
678static struct omap_hwmod omap2430_mcspi1_hwmod = {
Paul Walmsleybec93812012-04-19 04:03:50 -0600679 .name = "mcspi1",
Paul Walmsley0d619a82011-07-09 19:14:07 -0600680 .mpu_irqs = omap2_mcspi1_mpu_irqs,
Paul Walmsleyd826ebf2011-07-09 19:14:07 -0600681 .sdma_reqs = omap2_mcspi1_sdma_reqs,
Charulatha V7f904c72011-02-17 09:53:10 -0800682 .main_clk = "mcspi1_fck",
683 .prcm = {
684 .omap2 = {
685 .module_offs = CORE_MOD,
686 .prcm_reg_id = 1,
687 .module_bit = OMAP24XX_EN_MCSPI1_SHIFT,
688 .idlest_reg_id = 1,
689 .idlest_idle_bit = OMAP24XX_ST_MCSPI1_SHIFT,
690 },
691 },
Paul Walmsley273b9462011-07-09 19:14:08 -0600692 .class = &omap2xxx_mcspi_class,
693 .dev_attr = &omap_mcspi1_dev_attr,
Charulatha V7f904c72011-02-17 09:53:10 -0800694};
695
696/* mcspi2 */
Charulatha V7f904c72011-02-17 09:53:10 -0800697static struct omap2_mcspi_dev_attr omap_mcspi2_dev_attr = {
698 .num_chipselect = 2,
699};
700
701static struct omap_hwmod omap2430_mcspi2_hwmod = {
Paul Walmsleybec93812012-04-19 04:03:50 -0600702 .name = "mcspi2",
Paul Walmsley0d619a82011-07-09 19:14:07 -0600703 .mpu_irqs = omap2_mcspi2_mpu_irqs,
Paul Walmsleyd826ebf2011-07-09 19:14:07 -0600704 .sdma_reqs = omap2_mcspi2_sdma_reqs,
Charulatha V7f904c72011-02-17 09:53:10 -0800705 .main_clk = "mcspi2_fck",
706 .prcm = {
707 .omap2 = {
708 .module_offs = CORE_MOD,
709 .prcm_reg_id = 1,
710 .module_bit = OMAP24XX_EN_MCSPI2_SHIFT,
711 .idlest_reg_id = 1,
712 .idlest_idle_bit = OMAP24XX_ST_MCSPI2_SHIFT,
713 },
714 },
Paul Walmsley273b9462011-07-09 19:14:08 -0600715 .class = &omap2xxx_mcspi_class,
716 .dev_attr = &omap_mcspi2_dev_attr,
Charulatha V7f904c72011-02-17 09:53:10 -0800717};
718
719/* mcspi3 */
720static struct omap_hwmod_irq_info omap2430_mcspi3_mpu_irqs[] = {
721 { .irq = 91 },
Paul Walmsley212738a2011-07-09 19:14:06 -0600722 { .irq = -1 }
Charulatha V7f904c72011-02-17 09:53:10 -0800723};
724
725static struct omap_hwmod_dma_info omap2430_mcspi3_sdma_reqs[] = {
726 { .name = "tx0", .dma_req = 15 }, /* DMA_SPI3_TX0 */
727 { .name = "rx0", .dma_req = 16 }, /* DMA_SPI3_RX0 */
728 { .name = "tx1", .dma_req = 23 }, /* DMA_SPI3_TX1 */
729 { .name = "rx1", .dma_req = 24 }, /* DMA_SPI3_RX1 */
Paul Walmsleybc614952011-07-09 19:14:07 -0600730 { .dma_req = -1 }
Charulatha V7f904c72011-02-17 09:53:10 -0800731};
732
Charulatha V7f904c72011-02-17 09:53:10 -0800733static struct omap2_mcspi_dev_attr omap_mcspi3_dev_attr = {
734 .num_chipselect = 2,
735};
736
737static struct omap_hwmod omap2430_mcspi3_hwmod = {
Paul Walmsleybec93812012-04-19 04:03:50 -0600738 .name = "mcspi3",
Charulatha V7f904c72011-02-17 09:53:10 -0800739 .mpu_irqs = omap2430_mcspi3_mpu_irqs,
Charulatha V7f904c72011-02-17 09:53:10 -0800740 .sdma_reqs = omap2430_mcspi3_sdma_reqs,
Charulatha V7f904c72011-02-17 09:53:10 -0800741 .main_clk = "mcspi3_fck",
742 .prcm = {
743 .omap2 = {
744 .module_offs = CORE_MOD,
745 .prcm_reg_id = 2,
746 .module_bit = OMAP2430_EN_MCSPI3_SHIFT,
747 .idlest_reg_id = 2,
748 .idlest_idle_bit = OMAP2430_ST_MCSPI3_SHIFT,
749 },
750 },
Paul Walmsley273b9462011-07-09 19:14:08 -0600751 .class = &omap2xxx_mcspi_class,
752 .dev_attr = &omap_mcspi3_dev_attr,
Charulatha V7f904c72011-02-17 09:53:10 -0800753};
754
Paul Walmsley844a3b62012-04-19 04:04:33 -0600755/* usbhsotg */
Hema HK44d02ac2011-02-17 12:07:17 +0530756static struct omap_hwmod_class_sysconfig omap2430_usbhsotg_sysc = {
757 .rev_offs = 0x0400,
758 .sysc_offs = 0x0404,
759 .syss_offs = 0x0408,
760 .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE|
761 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
762 SYSC_HAS_AUTOIDLE),
763 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
764 MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
765 .sysc_fields = &omap_hwmod_sysc_type1,
766};
767
768static struct omap_hwmod_class usbotg_class = {
769 .name = "usbotg",
770 .sysc = &omap2430_usbhsotg_sysc,
771};
772
773/* usb_otg_hs */
774static struct omap_hwmod_irq_info omap2430_usbhsotg_mpu_irqs[] = {
775
776 { .name = "mc", .irq = 92 },
777 { .name = "dma", .irq = 93 },
Paul Walmsley212738a2011-07-09 19:14:06 -0600778 { .irq = -1 }
Hema HK44d02ac2011-02-17 12:07:17 +0530779};
780
781static struct omap_hwmod omap2430_usbhsotg_hwmod = {
782 .name = "usb_otg_hs",
783 .mpu_irqs = omap2430_usbhsotg_mpu_irqs,
Hema HK44d02ac2011-02-17 12:07:17 +0530784 .main_clk = "usbhs_ick",
785 .prcm = {
786 .omap2 = {
787 .prcm_reg_id = 1,
788 .module_bit = OMAP2430_EN_USBHS_MASK,
789 .module_offs = CORE_MOD,
790 .idlest_reg_id = 1,
791 .idlest_idle_bit = OMAP2430_ST_USBHS_SHIFT,
792 },
793 },
Hema HK44d02ac2011-02-17 12:07:17 +0530794 .class = &usbotg_class,
795 /*
796 * Erratum ID: i479 idle_req / idle_ack mechanism potentially
797 * broken when autoidle is enabled
798 * workaround is to disable the autoidle bit at module level.
799 */
800 .flags = HWMOD_NO_OCP_AUTOIDLE | HWMOD_SWSUP_SIDLE
801 | HWMOD_SWSUP_MSTANDBY,
Hema HK44d02ac2011-02-17 12:07:17 +0530802};
803
Charulatha V37801b32011-02-24 12:51:46 -0800804/*
805 * 'mcbsp' class
806 * multi channel buffered serial port controller
807 */
Tony Lindgren04aa67d2011-02-22 10:54:12 -0800808
Charulatha V37801b32011-02-24 12:51:46 -0800809static struct omap_hwmod_class_sysconfig omap2430_mcbsp_sysc = {
810 .rev_offs = 0x007C,
811 .sysc_offs = 0x008C,
812 .sysc_flags = (SYSC_HAS_SOFTRESET),
813 .sysc_fields = &omap_hwmod_sysc_type1,
814};
815
816static struct omap_hwmod_class omap2430_mcbsp_hwmod_class = {
817 .name = "mcbsp",
818 .sysc = &omap2430_mcbsp_sysc,
819 .rev = MCBSP_CONFIG_TYPE2,
820};
821
822/* mcbsp1 */
823static struct omap_hwmod_irq_info omap2430_mcbsp1_irqs[] = {
824 { .name = "tx", .irq = 59 },
825 { .name = "rx", .irq = 60 },
826 { .name = "ovr", .irq = 61 },
827 { .name = "common", .irq = 64 },
Paul Walmsley212738a2011-07-09 19:14:06 -0600828 { .irq = -1 }
Charulatha V37801b32011-02-24 12:51:46 -0800829};
830
Charulatha V37801b32011-02-24 12:51:46 -0800831static struct omap_hwmod omap2430_mcbsp1_hwmod = {
832 .name = "mcbsp1",
833 .class = &omap2430_mcbsp_hwmod_class,
834 .mpu_irqs = omap2430_mcbsp1_irqs,
Paul Walmsleyd826ebf2011-07-09 19:14:07 -0600835 .sdma_reqs = omap2_mcbsp1_sdma_reqs,
Charulatha V37801b32011-02-24 12:51:46 -0800836 .main_clk = "mcbsp1_fck",
837 .prcm = {
838 .omap2 = {
839 .prcm_reg_id = 1,
840 .module_bit = OMAP24XX_EN_MCBSP1_SHIFT,
841 .module_offs = CORE_MOD,
842 .idlest_reg_id = 1,
843 .idlest_idle_bit = OMAP24XX_ST_MCBSP1_SHIFT,
844 },
845 },
Charulatha V37801b32011-02-24 12:51:46 -0800846};
847
848/* mcbsp2 */
849static struct omap_hwmod_irq_info omap2430_mcbsp2_irqs[] = {
850 { .name = "tx", .irq = 62 },
851 { .name = "rx", .irq = 63 },
852 { .name = "common", .irq = 16 },
Paul Walmsley212738a2011-07-09 19:14:06 -0600853 { .irq = -1 }
Charulatha V37801b32011-02-24 12:51:46 -0800854};
855
Charulatha V37801b32011-02-24 12:51:46 -0800856static struct omap_hwmod omap2430_mcbsp2_hwmod = {
857 .name = "mcbsp2",
858 .class = &omap2430_mcbsp_hwmod_class,
859 .mpu_irqs = omap2430_mcbsp2_irqs,
Paul Walmsleyd826ebf2011-07-09 19:14:07 -0600860 .sdma_reqs = omap2_mcbsp2_sdma_reqs,
Charulatha V37801b32011-02-24 12:51:46 -0800861 .main_clk = "mcbsp2_fck",
862 .prcm = {
863 .omap2 = {
864 .prcm_reg_id = 1,
865 .module_bit = OMAP24XX_EN_MCBSP2_SHIFT,
866 .module_offs = CORE_MOD,
867 .idlest_reg_id = 1,
868 .idlest_idle_bit = OMAP24XX_ST_MCBSP2_SHIFT,
869 },
870 },
Charulatha V37801b32011-02-24 12:51:46 -0800871};
872
873/* mcbsp3 */
874static struct omap_hwmod_irq_info omap2430_mcbsp3_irqs[] = {
875 { .name = "tx", .irq = 89 },
876 { .name = "rx", .irq = 90 },
877 { .name = "common", .irq = 17 },
Paul Walmsley212738a2011-07-09 19:14:06 -0600878 { .irq = -1 }
Charulatha V37801b32011-02-24 12:51:46 -0800879};
880
Charulatha V37801b32011-02-24 12:51:46 -0800881static struct omap_hwmod omap2430_mcbsp3_hwmod = {
882 .name = "mcbsp3",
883 .class = &omap2430_mcbsp_hwmod_class,
884 .mpu_irqs = omap2430_mcbsp3_irqs,
Paul Walmsleyd826ebf2011-07-09 19:14:07 -0600885 .sdma_reqs = omap2_mcbsp3_sdma_reqs,
Charulatha V37801b32011-02-24 12:51:46 -0800886 .main_clk = "mcbsp3_fck",
887 .prcm = {
888 .omap2 = {
889 .prcm_reg_id = 1,
890 .module_bit = OMAP2430_EN_MCBSP3_SHIFT,
891 .module_offs = CORE_MOD,
892 .idlest_reg_id = 2,
893 .idlest_idle_bit = OMAP2430_ST_MCBSP3_SHIFT,
894 },
895 },
Charulatha V37801b32011-02-24 12:51:46 -0800896};
897
898/* mcbsp4 */
899static struct omap_hwmod_irq_info omap2430_mcbsp4_irqs[] = {
900 { .name = "tx", .irq = 54 },
901 { .name = "rx", .irq = 55 },
902 { .name = "common", .irq = 18 },
Paul Walmsley212738a2011-07-09 19:14:06 -0600903 { .irq = -1 }
Charulatha V37801b32011-02-24 12:51:46 -0800904};
905
906static struct omap_hwmod_dma_info omap2430_mcbsp4_sdma_chs[] = {
907 { .name = "rx", .dma_req = 20 },
908 { .name = "tx", .dma_req = 19 },
Paul Walmsleybc614952011-07-09 19:14:07 -0600909 { .dma_req = -1 }
Charulatha V37801b32011-02-24 12:51:46 -0800910};
911
Charulatha V37801b32011-02-24 12:51:46 -0800912static struct omap_hwmod omap2430_mcbsp4_hwmod = {
913 .name = "mcbsp4",
914 .class = &omap2430_mcbsp_hwmod_class,
915 .mpu_irqs = omap2430_mcbsp4_irqs,
Charulatha V37801b32011-02-24 12:51:46 -0800916 .sdma_reqs = omap2430_mcbsp4_sdma_chs,
Charulatha V37801b32011-02-24 12:51:46 -0800917 .main_clk = "mcbsp4_fck",
918 .prcm = {
919 .omap2 = {
920 .prcm_reg_id = 1,
921 .module_bit = OMAP2430_EN_MCBSP4_SHIFT,
922 .module_offs = CORE_MOD,
923 .idlest_reg_id = 2,
924 .idlest_idle_bit = OMAP2430_ST_MCBSP4_SHIFT,
925 },
926 },
Charulatha V37801b32011-02-24 12:51:46 -0800927};
928
929/* mcbsp5 */
930static struct omap_hwmod_irq_info omap2430_mcbsp5_irqs[] = {
931 { .name = "tx", .irq = 81 },
932 { .name = "rx", .irq = 82 },
933 { .name = "common", .irq = 19 },
Paul Walmsley212738a2011-07-09 19:14:06 -0600934 { .irq = -1 }
Charulatha V37801b32011-02-24 12:51:46 -0800935};
936
937static struct omap_hwmod_dma_info omap2430_mcbsp5_sdma_chs[] = {
938 { .name = "rx", .dma_req = 22 },
939 { .name = "tx", .dma_req = 21 },
Paul Walmsleybc614952011-07-09 19:14:07 -0600940 { .dma_req = -1 }
Charulatha V37801b32011-02-24 12:51:46 -0800941};
942
Charulatha V37801b32011-02-24 12:51:46 -0800943static struct omap_hwmod omap2430_mcbsp5_hwmod = {
944 .name = "mcbsp5",
945 .class = &omap2430_mcbsp_hwmod_class,
946 .mpu_irqs = omap2430_mcbsp5_irqs,
Charulatha V37801b32011-02-24 12:51:46 -0800947 .sdma_reqs = omap2430_mcbsp5_sdma_chs,
Charulatha V37801b32011-02-24 12:51:46 -0800948 .main_clk = "mcbsp5_fck",
949 .prcm = {
950 .omap2 = {
951 .prcm_reg_id = 1,
952 .module_bit = OMAP2430_EN_MCBSP5_SHIFT,
953 .module_offs = CORE_MOD,
954 .idlest_reg_id = 2,
955 .idlest_idle_bit = OMAP2430_ST_MCBSP5_SHIFT,
956 },
957 },
Charulatha V37801b32011-02-24 12:51:46 -0800958};
Tony Lindgren04aa67d2011-02-22 10:54:12 -0800959
Paul Walmsleybce06f32011-03-01 13:12:55 -0800960/* MMC/SD/SDIO common */
Paul Walmsleybce06f32011-03-01 13:12:55 -0800961static struct omap_hwmod_class_sysconfig omap2430_mmc_sysc = {
962 .rev_offs = 0x1fc,
963 .sysc_offs = 0x10,
964 .syss_offs = 0x14,
965 .sysc_flags = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
966 SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
967 SYSC_HAS_AUTOIDLE | SYSS_HAS_RESET_STATUS),
968 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
969 .sysc_fields = &omap_hwmod_sysc_type1,
970};
971
972static struct omap_hwmod_class omap2430_mmc_class = {
973 .name = "mmc",
974 .sysc = &omap2430_mmc_sysc,
975};
976
977/* MMC/SD/SDIO1 */
Paul Walmsleybce06f32011-03-01 13:12:55 -0800978static struct omap_hwmod_irq_info omap2430_mmc1_mpu_irqs[] = {
979 { .irq = 83 },
Paul Walmsley212738a2011-07-09 19:14:06 -0600980 { .irq = -1 }
Paul Walmsleybce06f32011-03-01 13:12:55 -0800981};
982
983static struct omap_hwmod_dma_info omap2430_mmc1_sdma_reqs[] = {
984 { .name = "tx", .dma_req = 61 }, /* DMA_MMC1_TX */
985 { .name = "rx", .dma_req = 62 }, /* DMA_MMC1_RX */
Paul Walmsleybc614952011-07-09 19:14:07 -0600986 { .dma_req = -1 }
Paul Walmsleybce06f32011-03-01 13:12:55 -0800987};
988
989static struct omap_hwmod_opt_clk omap2430_mmc1_opt_clks[] = {
990 { .role = "dbck", .clk = "mmchsdb1_fck" },
991};
992
Kishore Kadiyala6ab89462011-03-01 13:12:56 -0800993static struct omap_mmc_dev_attr mmc1_dev_attr = {
994 .flags = OMAP_HSMMC_SUPPORTS_DUAL_VOLT,
995};
996
Paul Walmsleybce06f32011-03-01 13:12:55 -0800997static struct omap_hwmod omap2430_mmc1_hwmod = {
998 .name = "mmc1",
999 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
1000 .mpu_irqs = omap2430_mmc1_mpu_irqs,
Paul Walmsleybce06f32011-03-01 13:12:55 -08001001 .sdma_reqs = omap2430_mmc1_sdma_reqs,
Paul Walmsleybce06f32011-03-01 13:12:55 -08001002 .opt_clks = omap2430_mmc1_opt_clks,
1003 .opt_clks_cnt = ARRAY_SIZE(omap2430_mmc1_opt_clks),
1004 .main_clk = "mmchs1_fck",
1005 .prcm = {
1006 .omap2 = {
1007 .module_offs = CORE_MOD,
1008 .prcm_reg_id = 2,
1009 .module_bit = OMAP2430_EN_MMCHS1_SHIFT,
1010 .idlest_reg_id = 2,
1011 .idlest_idle_bit = OMAP2430_ST_MMCHS1_SHIFT,
1012 },
1013 },
Kishore Kadiyala6ab89462011-03-01 13:12:56 -08001014 .dev_attr = &mmc1_dev_attr,
Paul Walmsleybce06f32011-03-01 13:12:55 -08001015 .class = &omap2430_mmc_class,
Paul Walmsleybce06f32011-03-01 13:12:55 -08001016};
1017
1018/* MMC/SD/SDIO2 */
Paul Walmsleybce06f32011-03-01 13:12:55 -08001019static struct omap_hwmod_irq_info omap2430_mmc2_mpu_irqs[] = {
1020 { .irq = 86 },
Paul Walmsley212738a2011-07-09 19:14:06 -06001021 { .irq = -1 }
Paul Walmsleybce06f32011-03-01 13:12:55 -08001022};
1023
1024static struct omap_hwmod_dma_info omap2430_mmc2_sdma_reqs[] = {
1025 { .name = "tx", .dma_req = 47 }, /* DMA_MMC2_TX */
1026 { .name = "rx", .dma_req = 48 }, /* DMA_MMC2_RX */
Paul Walmsleybc614952011-07-09 19:14:07 -06001027 { .dma_req = -1 }
Paul Walmsleybce06f32011-03-01 13:12:55 -08001028};
1029
1030static struct omap_hwmod_opt_clk omap2430_mmc2_opt_clks[] = {
1031 { .role = "dbck", .clk = "mmchsdb2_fck" },
1032};
1033
Paul Walmsleybce06f32011-03-01 13:12:55 -08001034static struct omap_hwmod omap2430_mmc2_hwmod = {
1035 .name = "mmc2",
1036 .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
1037 .mpu_irqs = omap2430_mmc2_mpu_irqs,
Paul Walmsleybce06f32011-03-01 13:12:55 -08001038 .sdma_reqs = omap2430_mmc2_sdma_reqs,
Paul Walmsleybce06f32011-03-01 13:12:55 -08001039 .opt_clks = omap2430_mmc2_opt_clks,
1040 .opt_clks_cnt = ARRAY_SIZE(omap2430_mmc2_opt_clks),
1041 .main_clk = "mmchs2_fck",
1042 .prcm = {
1043 .omap2 = {
1044 .module_offs = CORE_MOD,
1045 .prcm_reg_id = 2,
1046 .module_bit = OMAP2430_EN_MMCHS2_SHIFT,
1047 .idlest_reg_id = 2,
1048 .idlest_idle_bit = OMAP2430_ST_MMCHS2_SHIFT,
1049 },
1050 },
Paul Walmsleybce06f32011-03-01 13:12:55 -08001051 .class = &omap2430_mmc_class,
Paul Walmsleybce06f32011-03-01 13:12:55 -08001052};
Paul Walmsley02bfc032009-09-03 20:14:05 +03001053
Paul Walmsley844a3b62012-04-19 04:04:33 -06001054/*
1055 * interfaces
1056 */
1057
1058/* L3 -> L4_CORE interface */
1059static struct omap_hwmod_ocp_if omap2430_l3_main__l4_core = {
1060 .master = &omap2430_l3_main_hwmod,
1061 .slave = &omap2430_l4_core_hwmod,
1062 .user = OCP_USER_MPU | OCP_USER_SDMA,
1063};
1064
1065/* MPU -> L3 interface */
1066static struct omap_hwmod_ocp_if omap2430_mpu__l3_main = {
1067 .master = &omap2430_mpu_hwmod,
1068 .slave = &omap2430_l3_main_hwmod,
1069 .user = OCP_USER_MPU,
1070};
1071
1072/* DSS -> l3 */
1073static struct omap_hwmod_ocp_if omap2430_dss__l3 = {
1074 .master = &omap2430_dss_core_hwmod,
1075 .slave = &omap2430_l3_main_hwmod,
1076 .fw = {
1077 .omap2 = {
1078 .l3_perm_bit = OMAP2_L3_CORE_FW_CONNID_DSS,
1079 .flags = OMAP_FIREWALL_L3,
1080 }
1081 },
1082 .user = OCP_USER_MPU | OCP_USER_SDMA,
1083};
1084
1085/* l3_core -> usbhsotg interface */
1086static struct omap_hwmod_ocp_if omap2430_usbhsotg__l3 = {
1087 .master = &omap2430_usbhsotg_hwmod,
1088 .slave = &omap2430_l3_main_hwmod,
1089 .clk = "core_l3_ck",
1090 .user = OCP_USER_MPU,
1091};
1092
1093/* L4 CORE -> I2C1 interface */
1094static struct omap_hwmod_ocp_if omap2430_l4_core__i2c1 = {
1095 .master = &omap2430_l4_core_hwmod,
1096 .slave = &omap2430_i2c1_hwmod,
1097 .clk = "i2c1_ick",
1098 .addr = omap2_i2c1_addr_space,
1099 .user = OCP_USER_MPU | OCP_USER_SDMA,
1100};
1101
1102/* L4 CORE -> I2C2 interface */
1103static struct omap_hwmod_ocp_if omap2430_l4_core__i2c2 = {
1104 .master = &omap2430_l4_core_hwmod,
1105 .slave = &omap2430_i2c2_hwmod,
1106 .clk = "i2c2_ick",
1107 .addr = omap2_i2c2_addr_space,
1108 .user = OCP_USER_MPU | OCP_USER_SDMA,
1109};
1110
1111/* L4_CORE -> L4_WKUP interface */
1112static struct omap_hwmod_ocp_if omap2430_l4_core__l4_wkup = {
1113 .master = &omap2430_l4_core_hwmod,
1114 .slave = &omap2430_l4_wkup_hwmod,
1115 .user = OCP_USER_MPU | OCP_USER_SDMA,
1116};
1117
1118/* L4 CORE -> UART1 interface */
1119static struct omap_hwmod_ocp_if omap2_l4_core__uart1 = {
1120 .master = &omap2430_l4_core_hwmod,
1121 .slave = &omap2430_uart1_hwmod,
1122 .clk = "uart1_ick",
1123 .addr = omap2xxx_uart1_addr_space,
1124 .user = OCP_USER_MPU | OCP_USER_SDMA,
1125};
1126
1127/* L4 CORE -> UART2 interface */
1128static struct omap_hwmod_ocp_if omap2_l4_core__uart2 = {
1129 .master = &omap2430_l4_core_hwmod,
1130 .slave = &omap2430_uart2_hwmod,
1131 .clk = "uart2_ick",
1132 .addr = omap2xxx_uart2_addr_space,
1133 .user = OCP_USER_MPU | OCP_USER_SDMA,
1134};
1135
1136/* L4 PER -> UART3 interface */
1137static struct omap_hwmod_ocp_if omap2_l4_core__uart3 = {
1138 .master = &omap2430_l4_core_hwmod,
1139 .slave = &omap2430_uart3_hwmod,
1140 .clk = "uart3_ick",
1141 .addr = omap2xxx_uart3_addr_space,
1142 .user = OCP_USER_MPU | OCP_USER_SDMA,
1143};
1144
1145static struct omap_hwmod_addr_space omap2430_usbhsotg_addrs[] = {
1146 {
1147 .pa_start = OMAP243X_HS_BASE,
1148 .pa_end = OMAP243X_HS_BASE + SZ_4K - 1,
1149 .flags = ADDR_TYPE_RT
1150 },
1151 { }
1152};
1153
1154/* l4_core ->usbhsotg interface */
1155static struct omap_hwmod_ocp_if omap2430_l4_core__usbhsotg = {
1156 .master = &omap2430_l4_core_hwmod,
1157 .slave = &omap2430_usbhsotg_hwmod,
1158 .clk = "usb_l4_ick",
1159 .addr = omap2430_usbhsotg_addrs,
1160 .user = OCP_USER_MPU,
1161};
1162
1163/* L4 CORE -> MMC1 interface */
1164static struct omap_hwmod_ocp_if omap2430_l4_core__mmc1 = {
1165 .master = &omap2430_l4_core_hwmod,
1166 .slave = &omap2430_mmc1_hwmod,
1167 .clk = "mmchs1_ick",
1168 .addr = omap2430_mmc1_addr_space,
1169 .user = OCP_USER_MPU | OCP_USER_SDMA,
1170};
1171
1172/* L4 CORE -> MMC2 interface */
1173static struct omap_hwmod_ocp_if omap2430_l4_core__mmc2 = {
1174 .master = &omap2430_l4_core_hwmod,
1175 .slave = &omap2430_mmc2_hwmod,
1176 .clk = "mmchs2_ick",
1177 .addr = omap2430_mmc2_addr_space,
1178 .user = OCP_USER_MPU | OCP_USER_SDMA,
1179};
1180
1181/* l4 core -> mcspi1 interface */
1182static struct omap_hwmod_ocp_if omap2430_l4_core__mcspi1 = {
1183 .master = &omap2430_l4_core_hwmod,
1184 .slave = &omap2430_mcspi1_hwmod,
1185 .clk = "mcspi1_ick",
1186 .addr = omap2_mcspi1_addr_space,
1187 .user = OCP_USER_MPU | OCP_USER_SDMA,
1188};
1189
1190/* l4 core -> mcspi2 interface */
1191static struct omap_hwmod_ocp_if omap2430_l4_core__mcspi2 = {
1192 .master = &omap2430_l4_core_hwmod,
1193 .slave = &omap2430_mcspi2_hwmod,
1194 .clk = "mcspi2_ick",
1195 .addr = omap2_mcspi2_addr_space,
1196 .user = OCP_USER_MPU | OCP_USER_SDMA,
1197};
1198
1199/* l4 core -> mcspi3 interface */
1200static struct omap_hwmod_ocp_if omap2430_l4_core__mcspi3 = {
1201 .master = &omap2430_l4_core_hwmod,
1202 .slave = &omap2430_mcspi3_hwmod,
1203 .clk = "mcspi3_ick",
1204 .addr = omap2430_mcspi3_addr_space,
1205 .user = OCP_USER_MPU | OCP_USER_SDMA,
1206};
1207
1208/* IVA2 <- L3 interface */
1209static struct omap_hwmod_ocp_if omap2430_l3__iva = {
1210 .master = &omap2430_l3_main_hwmod,
1211 .slave = &omap2430_iva_hwmod,
1212 .clk = "dsp_fck",
1213 .user = OCP_USER_MPU | OCP_USER_SDMA,
1214};
1215
1216static struct omap_hwmod_addr_space omap2430_timer1_addrs[] = {
1217 {
1218 .pa_start = 0x49018000,
1219 .pa_end = 0x49018000 + SZ_1K - 1,
1220 .flags = ADDR_TYPE_RT
1221 },
1222 { }
1223};
1224
1225/* l4_wkup -> timer1 */
1226static struct omap_hwmod_ocp_if omap2430_l4_wkup__timer1 = {
1227 .master = &omap2430_l4_wkup_hwmod,
1228 .slave = &omap2430_timer1_hwmod,
1229 .clk = "gpt1_ick",
1230 .addr = omap2430_timer1_addrs,
1231 .user = OCP_USER_MPU | OCP_USER_SDMA,
1232};
1233
1234/* l4_core -> timer2 */
1235static struct omap_hwmod_ocp_if omap2430_l4_core__timer2 = {
1236 .master = &omap2430_l4_core_hwmod,
1237 .slave = &omap2430_timer2_hwmod,
1238 .clk = "gpt2_ick",
1239 .addr = omap2xxx_timer2_addrs,
1240 .user = OCP_USER_MPU | OCP_USER_SDMA,
1241};
1242
1243/* l4_core -> timer3 */
1244static struct omap_hwmod_ocp_if omap2430_l4_core__timer3 = {
1245 .master = &omap2430_l4_core_hwmod,
1246 .slave = &omap2430_timer3_hwmod,
1247 .clk = "gpt3_ick",
1248 .addr = omap2xxx_timer3_addrs,
1249 .user = OCP_USER_MPU | OCP_USER_SDMA,
1250};
1251
1252/* l4_core -> timer4 */
1253static struct omap_hwmod_ocp_if omap2430_l4_core__timer4 = {
1254 .master = &omap2430_l4_core_hwmod,
1255 .slave = &omap2430_timer4_hwmod,
1256 .clk = "gpt4_ick",
1257 .addr = omap2xxx_timer4_addrs,
1258 .user = OCP_USER_MPU | OCP_USER_SDMA,
1259};
1260
1261/* l4_core -> timer5 */
1262static struct omap_hwmod_ocp_if omap2430_l4_core__timer5 = {
1263 .master = &omap2430_l4_core_hwmod,
1264 .slave = &omap2430_timer5_hwmod,
1265 .clk = "gpt5_ick",
1266 .addr = omap2xxx_timer5_addrs,
1267 .user = OCP_USER_MPU | OCP_USER_SDMA,
1268};
1269
1270/* l4_core -> timer6 */
1271static struct omap_hwmod_ocp_if omap2430_l4_core__timer6 = {
1272 .master = &omap2430_l4_core_hwmod,
1273 .slave = &omap2430_timer6_hwmod,
1274 .clk = "gpt6_ick",
1275 .addr = omap2xxx_timer6_addrs,
1276 .user = OCP_USER_MPU | OCP_USER_SDMA,
1277};
1278
1279/* l4_core -> timer7 */
1280static struct omap_hwmod_ocp_if omap2430_l4_core__timer7 = {
1281 .master = &omap2430_l4_core_hwmod,
1282 .slave = &omap2430_timer7_hwmod,
1283 .clk = "gpt7_ick",
1284 .addr = omap2xxx_timer7_addrs,
1285 .user = OCP_USER_MPU | OCP_USER_SDMA,
1286};
1287
1288/* l4_core -> timer8 */
1289static struct omap_hwmod_ocp_if omap2430_l4_core__timer8 = {
1290 .master = &omap2430_l4_core_hwmod,
1291 .slave = &omap2430_timer8_hwmod,
1292 .clk = "gpt8_ick",
1293 .addr = omap2xxx_timer8_addrs,
1294 .user = OCP_USER_MPU | OCP_USER_SDMA,
1295};
1296
1297/* l4_core -> timer9 */
1298static struct omap_hwmod_ocp_if omap2430_l4_core__timer9 = {
1299 .master = &omap2430_l4_core_hwmod,
1300 .slave = &omap2430_timer9_hwmod,
1301 .clk = "gpt9_ick",
1302 .addr = omap2xxx_timer9_addrs,
1303 .user = OCP_USER_MPU | OCP_USER_SDMA,
1304};
1305
1306/* l4_core -> timer10 */
1307static struct omap_hwmod_ocp_if omap2430_l4_core__timer10 = {
1308 .master = &omap2430_l4_core_hwmod,
1309 .slave = &omap2430_timer10_hwmod,
1310 .clk = "gpt10_ick",
1311 .addr = omap2_timer10_addrs,
1312 .user = OCP_USER_MPU | OCP_USER_SDMA,
1313};
1314
1315/* l4_core -> timer11 */
1316static struct omap_hwmod_ocp_if omap2430_l4_core__timer11 = {
1317 .master = &omap2430_l4_core_hwmod,
1318 .slave = &omap2430_timer11_hwmod,
1319 .clk = "gpt11_ick",
1320 .addr = omap2_timer11_addrs,
1321 .user = OCP_USER_MPU | OCP_USER_SDMA,
1322};
1323
1324/* l4_core -> timer12 */
1325static struct omap_hwmod_ocp_if omap2430_l4_core__timer12 = {
1326 .master = &omap2430_l4_core_hwmod,
1327 .slave = &omap2430_timer12_hwmod,
1328 .clk = "gpt12_ick",
1329 .addr = omap2xxx_timer12_addrs,
1330 .user = OCP_USER_MPU | OCP_USER_SDMA,
1331};
1332
1333/* l4_wkup -> wd_timer2 */
1334static struct omap_hwmod_addr_space omap2430_wd_timer2_addrs[] = {
1335 {
1336 .pa_start = 0x49016000,
1337 .pa_end = 0x4901607f,
1338 .flags = ADDR_TYPE_RT
1339 },
1340 { }
1341};
1342
1343static struct omap_hwmod_ocp_if omap2430_l4_wkup__wd_timer2 = {
1344 .master = &omap2430_l4_wkup_hwmod,
1345 .slave = &omap2430_wd_timer2_hwmod,
1346 .clk = "mpu_wdt_ick",
1347 .addr = omap2430_wd_timer2_addrs,
1348 .user = OCP_USER_MPU | OCP_USER_SDMA,
1349};
1350
1351/* l4_core -> dss */
1352static struct omap_hwmod_ocp_if omap2430_l4_core__dss = {
1353 .master = &omap2430_l4_core_hwmod,
1354 .slave = &omap2430_dss_core_hwmod,
1355 .clk = "dss_ick",
1356 .addr = omap2_dss_addrs,
1357 .user = OCP_USER_MPU | OCP_USER_SDMA,
1358};
1359
1360/* l4_core -> dss_dispc */
1361static struct omap_hwmod_ocp_if omap2430_l4_core__dss_dispc = {
1362 .master = &omap2430_l4_core_hwmod,
1363 .slave = &omap2430_dss_dispc_hwmod,
1364 .clk = "dss_ick",
1365 .addr = omap2_dss_dispc_addrs,
1366 .user = OCP_USER_MPU | OCP_USER_SDMA,
1367};
1368
1369/* l4_core -> dss_rfbi */
1370static struct omap_hwmod_ocp_if omap2430_l4_core__dss_rfbi = {
1371 .master = &omap2430_l4_core_hwmod,
1372 .slave = &omap2430_dss_rfbi_hwmod,
1373 .clk = "dss_ick",
1374 .addr = omap2_dss_rfbi_addrs,
1375 .user = OCP_USER_MPU | OCP_USER_SDMA,
1376};
1377
1378/* l4_core -> dss_venc */
1379static struct omap_hwmod_ocp_if omap2430_l4_core__dss_venc = {
1380 .master = &omap2430_l4_core_hwmod,
1381 .slave = &omap2430_dss_venc_hwmod,
1382 .clk = "dss_ick",
1383 .addr = omap2_dss_venc_addrs,
1384 .flags = OCPIF_SWSUP_IDLE,
1385 .user = OCP_USER_MPU | OCP_USER_SDMA,
1386};
1387
1388/* l4_wkup -> gpio1 */
1389static struct omap_hwmod_addr_space omap2430_gpio1_addr_space[] = {
1390 {
1391 .pa_start = 0x4900C000,
1392 .pa_end = 0x4900C1ff,
1393 .flags = ADDR_TYPE_RT
1394 },
1395 { }
1396};
1397
1398static struct omap_hwmod_ocp_if omap2430_l4_wkup__gpio1 = {
1399 .master = &omap2430_l4_wkup_hwmod,
1400 .slave = &omap2430_gpio1_hwmod,
1401 .clk = "gpios_ick",
1402 .addr = omap2430_gpio1_addr_space,
1403 .user = OCP_USER_MPU | OCP_USER_SDMA,
1404};
1405
1406/* l4_wkup -> gpio2 */
1407static struct omap_hwmod_addr_space omap2430_gpio2_addr_space[] = {
1408 {
1409 .pa_start = 0x4900E000,
1410 .pa_end = 0x4900E1ff,
1411 .flags = ADDR_TYPE_RT
1412 },
1413 { }
1414};
1415
1416static struct omap_hwmod_ocp_if omap2430_l4_wkup__gpio2 = {
1417 .master = &omap2430_l4_wkup_hwmod,
1418 .slave = &omap2430_gpio2_hwmod,
1419 .clk = "gpios_ick",
1420 .addr = omap2430_gpio2_addr_space,
1421 .user = OCP_USER_MPU | OCP_USER_SDMA,
1422};
1423
1424/* l4_wkup -> gpio3 */
1425static struct omap_hwmod_addr_space omap2430_gpio3_addr_space[] = {
1426 {
1427 .pa_start = 0x49010000,
1428 .pa_end = 0x490101ff,
1429 .flags = ADDR_TYPE_RT
1430 },
1431 { }
1432};
1433
1434static struct omap_hwmod_ocp_if omap2430_l4_wkup__gpio3 = {
1435 .master = &omap2430_l4_wkup_hwmod,
1436 .slave = &omap2430_gpio3_hwmod,
1437 .clk = "gpios_ick",
1438 .addr = omap2430_gpio3_addr_space,
1439 .user = OCP_USER_MPU | OCP_USER_SDMA,
1440};
1441
1442/* l4_wkup -> gpio4 */
1443static struct omap_hwmod_addr_space omap2430_gpio4_addr_space[] = {
1444 {
1445 .pa_start = 0x49012000,
1446 .pa_end = 0x490121ff,
1447 .flags = ADDR_TYPE_RT
1448 },
1449 { }
1450};
1451
1452static struct omap_hwmod_ocp_if omap2430_l4_wkup__gpio4 = {
1453 .master = &omap2430_l4_wkup_hwmod,
1454 .slave = &omap2430_gpio4_hwmod,
1455 .clk = "gpios_ick",
1456 .addr = omap2430_gpio4_addr_space,
1457 .user = OCP_USER_MPU | OCP_USER_SDMA,
1458};
1459
1460/* l4_core -> gpio5 */
1461static struct omap_hwmod_addr_space omap2430_gpio5_addr_space[] = {
1462 {
1463 .pa_start = 0x480B6000,
1464 .pa_end = 0x480B61ff,
1465 .flags = ADDR_TYPE_RT
1466 },
1467 { }
1468};
1469
1470static struct omap_hwmod_ocp_if omap2430_l4_core__gpio5 = {
1471 .master = &omap2430_l4_core_hwmod,
1472 .slave = &omap2430_gpio5_hwmod,
1473 .clk = "gpio5_ick",
1474 .addr = omap2430_gpio5_addr_space,
1475 .user = OCP_USER_MPU | OCP_USER_SDMA,
1476};
1477
1478/* dma_system -> L3 */
1479static struct omap_hwmod_ocp_if omap2430_dma_system__l3 = {
1480 .master = &omap2430_dma_system_hwmod,
1481 .slave = &omap2430_l3_main_hwmod,
1482 .clk = "core_l3_ck",
1483 .user = OCP_USER_MPU | OCP_USER_SDMA,
1484};
1485
1486/* l4_core -> dma_system */
1487static struct omap_hwmod_ocp_if omap2430_l4_core__dma_system = {
1488 .master = &omap2430_l4_core_hwmod,
1489 .slave = &omap2430_dma_system_hwmod,
1490 .clk = "sdma_ick",
1491 .addr = omap2_dma_system_addrs,
1492 .user = OCP_USER_MPU | OCP_USER_SDMA,
1493};
1494
1495/* l4_core -> mailbox */
1496static struct omap_hwmod_ocp_if omap2430_l4_core__mailbox = {
1497 .master = &omap2430_l4_core_hwmod,
1498 .slave = &omap2430_mailbox_hwmod,
1499 .addr = omap2_mailbox_addrs,
1500 .user = OCP_USER_MPU | OCP_USER_SDMA,
1501};
1502
1503/* l4_core -> mcbsp1 */
1504static struct omap_hwmod_ocp_if omap2430_l4_core__mcbsp1 = {
1505 .master = &omap2430_l4_core_hwmod,
1506 .slave = &omap2430_mcbsp1_hwmod,
1507 .clk = "mcbsp1_ick",
1508 .addr = omap2_mcbsp1_addrs,
1509 .user = OCP_USER_MPU | OCP_USER_SDMA,
1510};
1511
1512/* l4_core -> mcbsp2 */
1513static struct omap_hwmod_ocp_if omap2430_l4_core__mcbsp2 = {
1514 .master = &omap2430_l4_core_hwmod,
1515 .slave = &omap2430_mcbsp2_hwmod,
1516 .clk = "mcbsp2_ick",
1517 .addr = omap2xxx_mcbsp2_addrs,
1518 .user = OCP_USER_MPU | OCP_USER_SDMA,
1519};
1520
1521static struct omap_hwmod_addr_space omap2430_mcbsp3_addrs[] = {
1522 {
1523 .name = "mpu",
1524 .pa_start = 0x4808C000,
1525 .pa_end = 0x4808C0ff,
1526 .flags = ADDR_TYPE_RT
1527 },
1528 { }
1529};
1530
1531/* l4_core -> mcbsp3 */
1532static struct omap_hwmod_ocp_if omap2430_l4_core__mcbsp3 = {
1533 .master = &omap2430_l4_core_hwmod,
1534 .slave = &omap2430_mcbsp3_hwmod,
1535 .clk = "mcbsp3_ick",
1536 .addr = omap2430_mcbsp3_addrs,
1537 .user = OCP_USER_MPU | OCP_USER_SDMA,
1538};
1539
1540static struct omap_hwmod_addr_space omap2430_mcbsp4_addrs[] = {
1541 {
1542 .name = "mpu",
1543 .pa_start = 0x4808E000,
1544 .pa_end = 0x4808E0ff,
1545 .flags = ADDR_TYPE_RT
1546 },
1547 { }
1548};
1549
1550/* l4_core -> mcbsp4 */
1551static struct omap_hwmod_ocp_if omap2430_l4_core__mcbsp4 = {
1552 .master = &omap2430_l4_core_hwmod,
1553 .slave = &omap2430_mcbsp4_hwmod,
1554 .clk = "mcbsp4_ick",
1555 .addr = omap2430_mcbsp4_addrs,
1556 .user = OCP_USER_MPU | OCP_USER_SDMA,
1557};
1558
1559static struct omap_hwmod_addr_space omap2430_mcbsp5_addrs[] = {
1560 {
1561 .name = "mpu",
1562 .pa_start = 0x48096000,
1563 .pa_end = 0x480960ff,
1564 .flags = ADDR_TYPE_RT
1565 },
1566 { }
1567};
1568
1569/* l4_core -> mcbsp5 */
1570static struct omap_hwmod_ocp_if omap2430_l4_core__mcbsp5 = {
1571 .master = &omap2430_l4_core_hwmod,
1572 .slave = &omap2430_mcbsp5_hwmod,
1573 .clk = "mcbsp5_ick",
1574 .addr = omap2430_mcbsp5_addrs,
1575 .user = OCP_USER_MPU | OCP_USER_SDMA,
1576};
1577
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06001578static struct omap_hwmod_ocp_if *omap2430_hwmod_ocp_ifs[] __initdata = {
1579 &omap2430_l3_main__l4_core,
1580 &omap2430_mpu__l3_main,
1581 &omap2430_dss__l3,
1582 &omap2430_usbhsotg__l3,
1583 &omap2430_l4_core__i2c1,
1584 &omap2430_l4_core__i2c2,
1585 &omap2430_l4_core__l4_wkup,
1586 &omap2_l4_core__uart1,
1587 &omap2_l4_core__uart2,
1588 &omap2_l4_core__uart3,
1589 &omap2430_l4_core__usbhsotg,
1590 &omap2430_l4_core__mmc1,
1591 &omap2430_l4_core__mmc2,
1592 &omap2430_l4_core__mcspi1,
1593 &omap2430_l4_core__mcspi2,
1594 &omap2430_l4_core__mcspi3,
1595 &omap2430_l3__iva,
1596 &omap2430_l4_wkup__timer1,
1597 &omap2430_l4_core__timer2,
1598 &omap2430_l4_core__timer3,
1599 &omap2430_l4_core__timer4,
1600 &omap2430_l4_core__timer5,
1601 &omap2430_l4_core__timer6,
1602 &omap2430_l4_core__timer7,
1603 &omap2430_l4_core__timer8,
1604 &omap2430_l4_core__timer9,
1605 &omap2430_l4_core__timer10,
1606 &omap2430_l4_core__timer11,
1607 &omap2430_l4_core__timer12,
1608 &omap2430_l4_wkup__wd_timer2,
1609 &omap2430_l4_core__dss,
1610 &omap2430_l4_core__dss_dispc,
1611 &omap2430_l4_core__dss_rfbi,
1612 &omap2430_l4_core__dss_venc,
1613 &omap2430_l4_wkup__gpio1,
1614 &omap2430_l4_wkup__gpio2,
1615 &omap2430_l4_wkup__gpio3,
1616 &omap2430_l4_wkup__gpio4,
1617 &omap2430_l4_core__gpio5,
1618 &omap2430_dma_system__l3,
1619 &omap2430_l4_core__dma_system,
1620 &omap2430_l4_core__mailbox,
1621 &omap2430_l4_core__mcbsp1,
1622 &omap2430_l4_core__mcbsp2,
1623 &omap2430_l4_core__mcbsp3,
1624 &omap2430_l4_core__mcbsp4,
1625 &omap2430_l4_core__mcbsp5,
Paul Walmsley02bfc032009-09-03 20:14:05 +03001626 NULL,
1627};
1628
Paul Walmsley73591542010-02-22 22:09:32 -07001629int __init omap2430_hwmod_init(void)
1630{
Paul Walmsley0a78c5c2012-04-19 04:04:31 -06001631 return omap_hwmod_register_links(omap2430_hwmod_ocp_ifs);
Paul Walmsley73591542010-02-22 22:09:32 -07001632}