GNU Linux-libre 5.4.274-gnu1
[releases.git] / arch / arm / mach-omap2 / omap_hwmod_2430_data.c
1 // SPDX-License-Identifier: GPL-2.0-only
2 /*
3  * omap_hwmod_2430_data.c - hardware modules present on the OMAP2430 chips
4  *
5  * Copyright (C) 2009-2011 Nokia Corporation
6  * Copyright (C) 2012 Texas Instruments, Inc.
7  * Paul Walmsley
8  *
9  * XXX handle crossbar/shared link difference for L3?
10  * XXX these should be marked initdata for multi-OMAP kernels
11  */
12
13 #include <linux/platform_data/i2c-omap.h>
14 #include <linux/platform_data/hsmmc-omap.h>
15 #include <linux/omap-dma.h>
16
17 #include "omap_hwmod.h"
18 #include "l3_2xxx.h"
19
20 #include "soc.h"
21 #include "omap_hwmod_common_data.h"
22 #include "prm-regbits-24xx.h"
23 #include "cm-regbits-24xx.h"
24 #include "i2c.h"
25 #include "wd_timer.h"
26
27 /*
28  * OMAP2430 hardware module integration data
29  *
30  * All of the data in this section should be autogeneratable from the
31  * TI hardware database or other technical documentation.  Data that
32  * is driver-specific or driver-kernel integration-specific belongs
33  * elsewhere.
34  */
35
36 /*
37  * IP blocks
38  */
39
40 /* IVA2 (IVA2) */
41 static struct omap_hwmod_rst_info omap2430_iva_resets[] = {
42         { .name = "logic", .rst_shift = 0 },
43         { .name = "mmu", .rst_shift = 1 },
44 };
45
46 static struct omap_hwmod omap2430_iva_hwmod = {
47         .name           = "iva",
48         .class          = &iva_hwmod_class,
49         .clkdm_name     = "dsp_clkdm",
50         .rst_lines      = omap2430_iva_resets,
51         .rst_lines_cnt  = ARRAY_SIZE(omap2430_iva_resets),
52         .main_clk       = "dsp_fck",
53 };
54
55 /* I2C common */
56 static struct omap_hwmod_class_sysconfig i2c_sysc = {
57         .rev_offs       = 0x00,
58         .sysc_offs      = 0x20,
59         .syss_offs      = 0x10,
60         .sysc_flags     = (SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE |
61                            SYSS_HAS_RESET_STATUS),
62         .sysc_fields    = &omap_hwmod_sysc_type1,
63 };
64
65 static struct omap_hwmod_class i2c_class = {
66         .name           = "i2c",
67         .sysc           = &i2c_sysc,
68         .reset          = &omap_i2c_reset,
69 };
70
71 /* I2C1 */
72 static struct omap_hwmod omap2430_i2c1_hwmod = {
73         .name           = "i2c1",
74         .flags          = HWMOD_16BIT_REG,
75         .main_clk       = "i2chs1_fck",
76         .prcm           = {
77                 .omap2 = {
78                         /*
79                          * NOTE: The CM_FCLKEN* and CM_ICLKEN* for
80                          * I2CHS IP's do not follow the usual pattern.
81                          * prcm_reg_id alone cannot be used to program
82                          * the iclk and fclk. Needs to be handled using
83                          * additional flags when clk handling is moved
84                          * to hwmod framework.
85                          */
86                         .module_offs = CORE_MOD,
87                         .idlest_reg_id = 1,
88                         .idlest_idle_bit = OMAP2430_ST_I2CHS1_SHIFT,
89                 },
90         },
91         .class          = &i2c_class,
92 };
93
94 /* I2C2 */
95 static struct omap_hwmod omap2430_i2c2_hwmod = {
96         .name           = "i2c2",
97         .flags          = HWMOD_16BIT_REG,
98         .main_clk       = "i2chs2_fck",
99         .prcm           = {
100                 .omap2 = {
101                         .module_offs = CORE_MOD,
102                         .idlest_reg_id = 1,
103                         .idlest_idle_bit = OMAP2430_ST_I2CHS2_SHIFT,
104                 },
105         },
106         .class          = &i2c_class,
107 };
108
109 /* gpio5 */
110 static struct omap_hwmod omap2430_gpio5_hwmod = {
111         .name           = "gpio5",
112         .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
113         .main_clk       = "gpio5_fck",
114         .prcm           = {
115                 .omap2 = {
116                         .module_offs = CORE_MOD,
117                         .idlest_reg_id = 2,
118                         .idlest_idle_bit = OMAP2430_ST_GPIO5_SHIFT,
119                 },
120         },
121         .class          = &omap2xxx_gpio_hwmod_class,
122 };
123
124 /* dma attributes */
125 static struct omap_dma_dev_attr dma_dev_attr = {
126         .dev_caps  = RESERVE_CHANNEL | DMA_LINKED_LCH | GLOBAL_PRIORITY |
127                                 IS_CSSA_32 | IS_CDSA_32 | IS_RW_PRIORITY,
128         .lch_count = 32,
129 };
130
131 static struct omap_hwmod omap2430_dma_system_hwmod = {
132         .name           = "dma",
133         .class          = &omap2xxx_dma_hwmod_class,
134         .main_clk       = "core_l3_ck",
135         .dev_attr       = &dma_dev_attr,
136         .flags          = HWMOD_NO_IDLEST,
137 };
138
139 /* mailbox */
140 static struct omap_hwmod omap2430_mailbox_hwmod = {
141         .name           = "mailbox",
142         .class          = &omap2xxx_mailbox_hwmod_class,
143         .main_clk       = "mailboxes_ick",
144         .prcm           = {
145                 .omap2 = {
146                         .module_offs = CORE_MOD,
147                         .idlest_reg_id = 1,
148                         .idlest_idle_bit = OMAP24XX_ST_MAILBOXES_SHIFT,
149                 },
150         },
151 };
152
153 /* mcspi3 */
154 static struct omap_hwmod omap2430_mcspi3_hwmod = {
155         .name           = "mcspi3",
156         .main_clk       = "mcspi3_fck",
157         .prcm           = {
158                 .omap2 = {
159                         .module_offs = CORE_MOD,
160                         .idlest_reg_id = 2,
161                         .idlest_idle_bit = OMAP2430_ST_MCSPI3_SHIFT,
162                 },
163         },
164         .class          = &omap2xxx_mcspi_class,
165 };
166
167 /* usbhsotg */
168 static struct omap_hwmod_class_sysconfig omap2430_usbhsotg_sysc = {
169         .rev_offs       = 0x0400,
170         .sysc_offs      = 0x0404,
171         .syss_offs      = 0x0408,
172         .sysc_flags     = (SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE|
173                           SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
174                           SYSC_HAS_AUTOIDLE),
175         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
176                           MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
177         .sysc_fields    = &omap_hwmod_sysc_type1,
178 };
179
180 static struct omap_hwmod_class usbotg_class = {
181         .name = "usbotg",
182         .sysc = &omap2430_usbhsotg_sysc,
183 };
184
185 /* usb_otg_hs */
186 static struct omap_hwmod omap2430_usbhsotg_hwmod = {
187         .name           = "usb_otg_hs",
188         .main_clk       = "usbhs_ick",
189         .prcm           = {
190                 .omap2 = {
191                         .module_offs = CORE_MOD,
192                         .idlest_reg_id = 1,
193                         .idlest_idle_bit = OMAP2430_ST_USBHS_SHIFT,
194                 },
195         },
196         .class          = &usbotg_class,
197         /*
198          * Erratum ID: i479  idle_req / idle_ack mechanism potentially
199          * broken when autoidle is enabled
200          * workaround is to disable the autoidle bit at module level.
201          */
202         .flags          = HWMOD_NO_OCP_AUTOIDLE | HWMOD_SWSUP_SIDLE
203                                 | HWMOD_SWSUP_MSTANDBY,
204 };
205
206 /*
207  * 'mcbsp' class
208  * multi channel buffered serial port controller
209  */
210
211 static struct omap_hwmod_class_sysconfig omap2430_mcbsp_sysc = {
212         .rev_offs       = 0x007C,
213         .sysc_offs      = 0x008C,
214         .sysc_flags     = (SYSC_HAS_SOFTRESET),
215         .sysc_fields    = &omap_hwmod_sysc_type1,
216 };
217
218 static struct omap_hwmod_class omap2430_mcbsp_hwmod_class = {
219         .name = "mcbsp",
220         .sysc = &omap2430_mcbsp_sysc,
221 };
222
223 static struct omap_hwmod_opt_clk mcbsp_opt_clks[] = {
224         { .role = "pad_fck", .clk = "mcbsp_clks" },
225         { .role = "prcm_fck", .clk = "func_96m_ck" },
226 };
227
228 /* mcbsp1 */
229 static struct omap_hwmod omap2430_mcbsp1_hwmod = {
230         .name           = "mcbsp1",
231         .class          = &omap2430_mcbsp_hwmod_class,
232         .main_clk       = "mcbsp1_fck",
233         .prcm           = {
234                 .omap2 = {
235                         .module_offs = CORE_MOD,
236                         .idlest_reg_id = 1,
237                         .idlest_idle_bit = OMAP24XX_ST_MCBSP1_SHIFT,
238                 },
239         },
240         .opt_clks       = mcbsp_opt_clks,
241         .opt_clks_cnt   = ARRAY_SIZE(mcbsp_opt_clks),
242 };
243
244 /* mcbsp2 */
245 static struct omap_hwmod omap2430_mcbsp2_hwmod = {
246         .name           = "mcbsp2",
247         .class          = &omap2430_mcbsp_hwmod_class,
248         .main_clk       = "mcbsp2_fck",
249         .prcm           = {
250                 .omap2 = {
251                         .module_offs = CORE_MOD,
252                         .idlest_reg_id = 1,
253                         .idlest_idle_bit = OMAP24XX_ST_MCBSP2_SHIFT,
254                 },
255         },
256         .opt_clks       = mcbsp_opt_clks,
257         .opt_clks_cnt   = ARRAY_SIZE(mcbsp_opt_clks),
258 };
259
260 /* mcbsp3 */
261 static struct omap_hwmod omap2430_mcbsp3_hwmod = {
262         .name           = "mcbsp3",
263         .class          = &omap2430_mcbsp_hwmod_class,
264         .main_clk       = "mcbsp3_fck",
265         .prcm           = {
266                 .omap2 = {
267                         .module_offs = CORE_MOD,
268                         .idlest_reg_id = 2,
269                         .idlest_idle_bit = OMAP2430_ST_MCBSP3_SHIFT,
270                 },
271         },
272         .opt_clks       = mcbsp_opt_clks,
273         .opt_clks_cnt   = ARRAY_SIZE(mcbsp_opt_clks),
274 };
275
276 /* mcbsp4 */
277 static struct omap_hwmod omap2430_mcbsp4_hwmod = {
278         .name           = "mcbsp4",
279         .class          = &omap2430_mcbsp_hwmod_class,
280         .main_clk       = "mcbsp4_fck",
281         .prcm           = {
282                 .omap2 = {
283                         .module_offs = CORE_MOD,
284                         .idlest_reg_id = 2,
285                         .idlest_idle_bit = OMAP2430_ST_MCBSP4_SHIFT,
286                 },
287         },
288         .opt_clks       = mcbsp_opt_clks,
289         .opt_clks_cnt   = ARRAY_SIZE(mcbsp_opt_clks),
290 };
291
292 /* mcbsp5 */
293 static struct omap_hwmod omap2430_mcbsp5_hwmod = {
294         .name           = "mcbsp5",
295         .class          = &omap2430_mcbsp_hwmod_class,
296         .main_clk       = "mcbsp5_fck",
297         .prcm           = {
298                 .omap2 = {
299                         .module_offs = CORE_MOD,
300                         .idlest_reg_id = 2,
301                         .idlest_idle_bit = OMAP2430_ST_MCBSP5_SHIFT,
302                 },
303         },
304         .opt_clks       = mcbsp_opt_clks,
305         .opt_clks_cnt   = ARRAY_SIZE(mcbsp_opt_clks),
306 };
307
308 /* MMC/SD/SDIO common */
309 static struct omap_hwmod_class_sysconfig omap2430_mmc_sysc = {
310         .rev_offs       = 0x1fc,
311         .sysc_offs      = 0x10,
312         .syss_offs      = 0x14,
313         .sysc_flags     = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
314                            SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
315                            SYSC_HAS_AUTOIDLE | SYSS_HAS_RESET_STATUS),
316         .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
317         .sysc_fields    = &omap_hwmod_sysc_type1,
318 };
319
320 static struct omap_hwmod_class omap2430_mmc_class = {
321         .name = "mmc",
322         .sysc = &omap2430_mmc_sysc,
323 };
324
325 /* MMC/SD/SDIO1 */
326 static struct omap_hwmod_opt_clk omap2430_mmc1_opt_clks[] = {
327         { .role = "dbck", .clk = "mmchsdb1_fck" },
328 };
329
330 static struct omap_hsmmc_dev_attr mmc1_dev_attr = {
331         .flags = OMAP_HSMMC_SUPPORTS_DUAL_VOLT,
332 };
333
334 static struct omap_hwmod omap2430_mmc1_hwmod = {
335         .name           = "mmc1",
336         .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
337         .opt_clks       = omap2430_mmc1_opt_clks,
338         .opt_clks_cnt   = ARRAY_SIZE(omap2430_mmc1_opt_clks),
339         .main_clk       = "mmchs1_fck",
340         .prcm           = {
341                 .omap2 = {
342                         .module_offs = CORE_MOD,
343                         .idlest_reg_id = 2,
344                         .idlest_idle_bit = OMAP2430_ST_MMCHS1_SHIFT,
345                 },
346         },
347         .dev_attr       = &mmc1_dev_attr,
348         .class          = &omap2430_mmc_class,
349 };
350
351 /* MMC/SD/SDIO2 */
352 static struct omap_hwmod_opt_clk omap2430_mmc2_opt_clks[] = {
353         { .role = "dbck", .clk = "mmchsdb2_fck" },
354 };
355
356 static struct omap_hwmod omap2430_mmc2_hwmod = {
357         .name           = "mmc2",
358         .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
359         .opt_clks       = omap2430_mmc2_opt_clks,
360         .opt_clks_cnt   = ARRAY_SIZE(omap2430_mmc2_opt_clks),
361         .main_clk       = "mmchs2_fck",
362         .prcm           = {
363                 .omap2 = {
364                         .module_offs = CORE_MOD,
365                         .idlest_reg_id = 2,
366                         .idlest_idle_bit = OMAP2430_ST_MMCHS2_SHIFT,
367                 },
368         },
369         .class          = &omap2430_mmc_class,
370 };
371
372 /* HDQ1W/1-wire */
373 static struct omap_hwmod omap2430_hdq1w_hwmod = {
374         .name           = "hdq1w",
375         .main_clk       = "hdq_fck",
376         .prcm           = {
377                 .omap2 = {
378                         .module_offs = CORE_MOD,
379                         .idlest_reg_id = 1,
380                         .idlest_idle_bit = OMAP24XX_ST_HDQ_SHIFT,
381                 },
382         },
383         .class          = &omap2_hdq1w_class,
384 };
385
386 /*
387  * interfaces
388  */
389
390 /* L3 -> L4_CORE interface */
391 /* l3_core -> usbhsotg  interface */
392 static struct omap_hwmod_ocp_if omap2430_usbhsotg__l3 = {
393         .master         = &omap2430_usbhsotg_hwmod,
394         .slave          = &omap2xxx_l3_main_hwmod,
395         .clk            = "core_l3_ck",
396         .user           = OCP_USER_MPU,
397 };
398
399 /* L4 CORE -> I2C1 interface */
400 static struct omap_hwmod_ocp_if omap2430_l4_core__i2c1 = {
401         .master         = &omap2xxx_l4_core_hwmod,
402         .slave          = &omap2430_i2c1_hwmod,
403         .clk            = "i2c1_ick",
404         .user           = OCP_USER_MPU | OCP_USER_SDMA,
405 };
406
407 /* L4 CORE -> I2C2 interface */
408 static struct omap_hwmod_ocp_if omap2430_l4_core__i2c2 = {
409         .master         = &omap2xxx_l4_core_hwmod,
410         .slave          = &omap2430_i2c2_hwmod,
411         .clk            = "i2c2_ick",
412         .user           = OCP_USER_MPU | OCP_USER_SDMA,
413 };
414
415 /*  l4_core ->usbhsotg  interface */
416 static struct omap_hwmod_ocp_if omap2430_l4_core__usbhsotg = {
417         .master         = &omap2xxx_l4_core_hwmod,
418         .slave          = &omap2430_usbhsotg_hwmod,
419         .clk            = "usb_l4_ick",
420         .user           = OCP_USER_MPU,
421 };
422
423 /* L4 CORE -> MMC1 interface */
424 static struct omap_hwmod_ocp_if omap2430_l4_core__mmc1 = {
425         .master         = &omap2xxx_l4_core_hwmod,
426         .slave          = &omap2430_mmc1_hwmod,
427         .clk            = "mmchs1_ick",
428         .user           = OCP_USER_MPU | OCP_USER_SDMA,
429 };
430
431 /* L4 CORE -> MMC2 interface */
432 static struct omap_hwmod_ocp_if omap2430_l4_core__mmc2 = {
433         .master         = &omap2xxx_l4_core_hwmod,
434         .slave          = &omap2430_mmc2_hwmod,
435         .clk            = "mmchs2_ick",
436         .user           = OCP_USER_MPU | OCP_USER_SDMA,
437 };
438
439 /* l4 core -> mcspi3 interface */
440 static struct omap_hwmod_ocp_if omap2430_l4_core__mcspi3 = {
441         .master         = &omap2xxx_l4_core_hwmod,
442         .slave          = &omap2430_mcspi3_hwmod,
443         .clk            = "mcspi3_ick",
444         .user           = OCP_USER_MPU | OCP_USER_SDMA,
445 };
446
447 /* IVA2 <- L3 interface */
448 static struct omap_hwmod_ocp_if omap2430_l3__iva = {
449         .master         = &omap2xxx_l3_main_hwmod,
450         .slave          = &omap2430_iva_hwmod,
451         .clk            = "core_l3_ck",
452         .user           = OCP_USER_MPU | OCP_USER_SDMA,
453 };
454
455 /* l4_wkup -> timer1 */
456 static struct omap_hwmod_ocp_if omap2430_l4_wkup__timer1 = {
457         .master         = &omap2xxx_l4_wkup_hwmod,
458         .slave          = &omap2xxx_timer1_hwmod,
459         .clk            = "gpt1_ick",
460         .user           = OCP_USER_MPU | OCP_USER_SDMA,
461 };
462
463 /* l4_wkup -> wd_timer2 */
464 static struct omap_hwmod_ocp_if omap2430_l4_wkup__wd_timer2 = {
465         .master         = &omap2xxx_l4_wkup_hwmod,
466         .slave          = &omap2xxx_wd_timer2_hwmod,
467         .clk            = "mpu_wdt_ick",
468         .user           = OCP_USER_MPU | OCP_USER_SDMA,
469 };
470
471 /* l4_wkup -> gpio1 */
472 static struct omap_hwmod_ocp_if omap2430_l4_wkup__gpio1 = {
473         .master         = &omap2xxx_l4_wkup_hwmod,
474         .slave          = &omap2xxx_gpio1_hwmod,
475         .clk            = "gpios_ick",
476         .user           = OCP_USER_MPU | OCP_USER_SDMA,
477 };
478
479 /* l4_wkup -> gpio2 */
480 static struct omap_hwmod_ocp_if omap2430_l4_wkup__gpio2 = {
481         .master         = &omap2xxx_l4_wkup_hwmod,
482         .slave          = &omap2xxx_gpio2_hwmod,
483         .clk            = "gpios_ick",
484         .user           = OCP_USER_MPU | OCP_USER_SDMA,
485 };
486
487 /* l4_wkup -> gpio3 */
488 static struct omap_hwmod_ocp_if omap2430_l4_wkup__gpio3 = {
489         .master         = &omap2xxx_l4_wkup_hwmod,
490         .slave          = &omap2xxx_gpio3_hwmod,
491         .clk            = "gpios_ick",
492         .user           = OCP_USER_MPU | OCP_USER_SDMA,
493 };
494
495 /* l4_wkup -> gpio4 */
496 static struct omap_hwmod_ocp_if omap2430_l4_wkup__gpio4 = {
497         .master         = &omap2xxx_l4_wkup_hwmod,
498         .slave          = &omap2xxx_gpio4_hwmod,
499         .clk            = "gpios_ick",
500         .user           = OCP_USER_MPU | OCP_USER_SDMA,
501 };
502
503 /* l4_core -> gpio5 */
504 static struct omap_hwmod_ocp_if omap2430_l4_core__gpio5 = {
505         .master         = &omap2xxx_l4_core_hwmod,
506         .slave          = &omap2430_gpio5_hwmod,
507         .clk            = "gpio5_ick",
508         .user           = OCP_USER_MPU | OCP_USER_SDMA,
509 };
510
511 /* dma_system -> L3 */
512 static struct omap_hwmod_ocp_if omap2430_dma_system__l3 = {
513         .master         = &omap2430_dma_system_hwmod,
514         .slave          = &omap2xxx_l3_main_hwmod,
515         .clk            = "core_l3_ck",
516         .user           = OCP_USER_MPU | OCP_USER_SDMA,
517 };
518
519 /* l4_core -> dma_system */
520 static struct omap_hwmod_ocp_if omap2430_l4_core__dma_system = {
521         .master         = &omap2xxx_l4_core_hwmod,
522         .slave          = &omap2430_dma_system_hwmod,
523         .clk            = "sdma_ick",
524         .user           = OCP_USER_MPU | OCP_USER_SDMA,
525 };
526
527 /* l4_core -> mailbox */
528 static struct omap_hwmod_ocp_if omap2430_l4_core__mailbox = {
529         .master         = &omap2xxx_l4_core_hwmod,
530         .slave          = &omap2430_mailbox_hwmod,
531         .user           = OCP_USER_MPU | OCP_USER_SDMA,
532 };
533
534 /* l4_core -> mcbsp1 */
535 static struct omap_hwmod_ocp_if omap2430_l4_core__mcbsp1 = {
536         .master         = &omap2xxx_l4_core_hwmod,
537         .slave          = &omap2430_mcbsp1_hwmod,
538         .clk            = "mcbsp1_ick",
539         .user           = OCP_USER_MPU | OCP_USER_SDMA,
540 };
541
542 /* l4_core -> mcbsp2 */
543 static struct omap_hwmod_ocp_if omap2430_l4_core__mcbsp2 = {
544         .master         = &omap2xxx_l4_core_hwmod,
545         .slave          = &omap2430_mcbsp2_hwmod,
546         .clk            = "mcbsp2_ick",
547         .user           = OCP_USER_MPU | OCP_USER_SDMA,
548 };
549
550 /* l4_core -> mcbsp3 */
551 static struct omap_hwmod_ocp_if omap2430_l4_core__mcbsp3 = {
552         .master         = &omap2xxx_l4_core_hwmod,
553         .slave          = &omap2430_mcbsp3_hwmod,
554         .clk            = "mcbsp3_ick",
555         .user           = OCP_USER_MPU | OCP_USER_SDMA,
556 };
557
558 /* l4_core -> mcbsp4 */
559 static struct omap_hwmod_ocp_if omap2430_l4_core__mcbsp4 = {
560         .master         = &omap2xxx_l4_core_hwmod,
561         .slave          = &omap2430_mcbsp4_hwmod,
562         .clk            = "mcbsp4_ick",
563         .user           = OCP_USER_MPU | OCP_USER_SDMA,
564 };
565
566 /* l4_core -> mcbsp5 */
567 static struct omap_hwmod_ocp_if omap2430_l4_core__mcbsp5 = {
568         .master         = &omap2xxx_l4_core_hwmod,
569         .slave          = &omap2430_mcbsp5_hwmod,
570         .clk            = "mcbsp5_ick",
571         .user           = OCP_USER_MPU | OCP_USER_SDMA,
572 };
573
574 /* l4_core -> hdq1w */
575 static struct omap_hwmod_ocp_if omap2430_l4_core__hdq1w = {
576         .master         = &omap2xxx_l4_core_hwmod,
577         .slave          = &omap2430_hdq1w_hwmod,
578         .clk            = "hdq_ick",
579         .user           = OCP_USER_MPU | OCP_USER_SDMA,
580         .flags          = OMAP_FIREWALL_L4 | OCPIF_SWSUP_IDLE,
581 };
582
583 /* l4_wkup -> 32ksync_counter */
584 static struct omap_hwmod_ocp_if omap2430_l4_wkup__counter_32k = {
585         .master         = &omap2xxx_l4_wkup_hwmod,
586         .slave          = &omap2xxx_counter_32k_hwmod,
587         .clk            = "sync_32k_ick",
588         .user           = OCP_USER_MPU | OCP_USER_SDMA,
589 };
590
591 static struct omap_hwmod_ocp_if omap2430_l3__gpmc = {
592         .master         = &omap2xxx_l3_main_hwmod,
593         .slave          = &omap2xxx_gpmc_hwmod,
594         .clk            = "core_l3_ck",
595         .user           = OCP_USER_MPU | OCP_USER_SDMA,
596 };
597
598 static struct omap_hwmod_ocp_if *omap2430_hwmod_ocp_ifs[] __initdata = {
599         &omap2xxx_l3_main__l4_core,
600         &omap2xxx_mpu__l3_main,
601         &omap2xxx_dss__l3,
602         &omap2430_usbhsotg__l3,
603         &omap2430_l4_core__i2c1,
604         &omap2430_l4_core__i2c2,
605         &omap2xxx_l4_core__l4_wkup,
606         &omap2_l4_core__uart1,
607         &omap2_l4_core__uart2,
608         &omap2_l4_core__uart3,
609         &omap2430_l4_core__usbhsotg,
610         &omap2430_l4_core__mmc1,
611         &omap2430_l4_core__mmc2,
612         &omap2xxx_l4_core__mcspi1,
613         &omap2xxx_l4_core__mcspi2,
614         &omap2430_l4_core__mcspi3,
615         &omap2430_l3__iva,
616         &omap2430_l4_wkup__timer1,
617         &omap2xxx_l4_core__timer2,
618         &omap2xxx_l4_core__timer3,
619         &omap2xxx_l4_core__timer4,
620         &omap2xxx_l4_core__timer5,
621         &omap2xxx_l4_core__timer6,
622         &omap2xxx_l4_core__timer7,
623         &omap2xxx_l4_core__timer8,
624         &omap2xxx_l4_core__timer9,
625         &omap2xxx_l4_core__timer10,
626         &omap2xxx_l4_core__timer11,
627         &omap2xxx_l4_core__timer12,
628         &omap2430_l4_wkup__wd_timer2,
629         &omap2xxx_l4_core__dss,
630         &omap2xxx_l4_core__dss_dispc,
631         &omap2xxx_l4_core__dss_rfbi,
632         &omap2xxx_l4_core__dss_venc,
633         &omap2430_l4_wkup__gpio1,
634         &omap2430_l4_wkup__gpio2,
635         &omap2430_l4_wkup__gpio3,
636         &omap2430_l4_wkup__gpio4,
637         &omap2430_l4_core__gpio5,
638         &omap2430_dma_system__l3,
639         &omap2430_l4_core__dma_system,
640         &omap2430_l4_core__mailbox,
641         &omap2430_l4_core__mcbsp1,
642         &omap2430_l4_core__mcbsp2,
643         &omap2430_l4_core__mcbsp3,
644         &omap2430_l4_core__mcbsp4,
645         &omap2430_l4_core__mcbsp5,
646         &omap2430_l4_core__hdq1w,
647         &omap2xxx_l4_core__rng,
648         &omap2xxx_l4_core__sham,
649         &omap2xxx_l4_core__aes,
650         &omap2430_l4_wkup__counter_32k,
651         &omap2430_l3__gpmc,
652         NULL,
653 };
654
655 int __init omap2430_hwmod_init(void)
656 {
657         omap_hwmod_init();
658         return omap_hwmod_register_links(omap2430_hwmod_ocp_ifs);
659 }