diff options
author | Paul Walmsley <paul@pwsan.com> | 2009-09-03 13:14:05 -0400 |
---|---|---|
committer | paul <paul@twilight.(none)> | 2009-09-03 13:14:05 -0400 |
commit | 02bfc030e4417003b7a94393102c92e39b2dfa65 (patch) | |
tree | c0e3bd849ab948379169cd7277d4668ebabc9af3 /arch/arm | |
parent | 63c852384125ca0eff0e695f92cbbd439bed4aa3 (diff) |
OMAP: omap_hwmod: call omap_hwmod init at boot; create interconnects
Connect the omap_hwmod code to the kernel boot. Create some basic
interconnect and device structures for OMAP2/3 chips.
Signed-off-by: Paul Walmsley <paul@pwsan.com>
Diffstat (limited to 'arch/arm')
-rw-r--r-- | arch/arm/mach-omap2/io.c | 17 | ||||
-rw-r--r-- | arch/arm/mach-omap2/omap_hwmod.c | 3 | ||||
-rw-r--r-- | arch/arm/mach-omap2/omap_hwmod_2420.h | 141 | ||||
-rw-r--r-- | arch/arm/mach-omap2/omap_hwmod_2430.h | 143 | ||||
-rw-r--r-- | arch/arm/mach-omap2/omap_hwmod_34xx.h | 168 |
5 files changed, 469 insertions, 3 deletions
diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c index 470b1d10c4e5..7574b6f20e8e 100644 --- a/arch/arm/mach-omap2/io.c +++ b/arch/arm/mach-omap2/io.c | |||
@@ -39,12 +39,16 @@ | |||
39 | 39 | ||
40 | #include <mach/omap-pm.h> | 40 | #include <mach/omap-pm.h> |
41 | #include <mach/powerdomain.h> | 41 | #include <mach/powerdomain.h> |
42 | |||
43 | #include "powerdomains.h" | 42 | #include "powerdomains.h" |
44 | 43 | ||
45 | #include <mach/clockdomain.h> | 44 | #include <mach/clockdomain.h> |
46 | #include "clockdomains.h" | 45 | #include "clockdomains.h" |
47 | #endif | 46 | #endif |
47 | #include <mach/omap_hwmod.h> | ||
48 | #include "omap_hwmod_2420.h" | ||
49 | #include "omap_hwmod_2430.h" | ||
50 | #include "omap_hwmod_34xx.h" | ||
51 | |||
48 | /* | 52 | /* |
49 | * The machine specific code may provide the extra mapping besides the | 53 | * The machine specific code may provide the extra mapping besides the |
50 | * default mapping provided here. | 54 | * default mapping provided here. |
@@ -281,6 +285,16 @@ static int __init _omap2_init_reprogram_sdrc(void) | |||
281 | void __init omap2_init_common_hw(struct omap_sdrc_params *sdrc_cs0, | 285 | void __init omap2_init_common_hw(struct omap_sdrc_params *sdrc_cs0, |
282 | struct omap_sdrc_params *sdrc_cs1) | 286 | struct omap_sdrc_params *sdrc_cs1) |
283 | { | 287 | { |
288 | struct omap_hwmod **hwmods = NULL; | ||
289 | |||
290 | if (cpu_is_omap2420()) | ||
291 | hwmods = omap2420_hwmods; | ||
292 | else if (cpu_is_omap2430()) | ||
293 | hwmods = omap2430_hwmods; | ||
294 | else if (cpu_is_omap34xx()) | ||
295 | hwmods = omap34xx_hwmods; | ||
296 | |||
297 | omap_hwmod_init(hwmods); | ||
284 | omap2_mux_init(); | 298 | omap2_mux_init(); |
285 | #ifndef CONFIG_ARCH_OMAP4 /* FIXME: Remove this once the clkdev is ready */ | 299 | #ifndef CONFIG_ARCH_OMAP4 /* FIXME: Remove this once the clkdev is ready */ |
286 | /* The OPP tables have to be registered before a clk init */ | 300 | /* The OPP tables have to be registered before a clk init */ |
@@ -289,6 +303,7 @@ void __init omap2_init_common_hw(struct omap_sdrc_params *sdrc_cs0, | |||
289 | clkdm_init(clockdomains_omap, clkdm_pwrdm_autodeps); | 303 | clkdm_init(clockdomains_omap, clkdm_pwrdm_autodeps); |
290 | omap2_clk_init(); | 304 | omap2_clk_init(); |
291 | omap_serial_early_init(); | 305 | omap_serial_early_init(); |
306 | omap_hwmod_late_init(); | ||
292 | omap_pm_if_init(); | 307 | omap_pm_if_init(); |
293 | omap2_sdrc_init(sdrc_cs0, sdrc_cs1); | 308 | omap2_sdrc_init(sdrc_cs0, sdrc_cs1); |
294 | _omap2_init_reprogram_sdrc(); | 309 | _omap2_init_reprogram_sdrc(); |
diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c index 3b10ad6c47d3..d2e0f1c95961 100644 --- a/arch/arm/mach-omap2/omap_hwmod.c +++ b/arch/arm/mach-omap2/omap_hwmod.c | |||
@@ -765,8 +765,7 @@ static int _reset(struct omap_hwmod *oh) | |||
765 | WARN(1, "omap_hwmod: %s: failed to reset in %d usec\n", | 765 | WARN(1, "omap_hwmod: %s: failed to reset in %d usec\n", |
766 | oh->name, MAX_MODULE_RESET_WAIT); | 766 | oh->name, MAX_MODULE_RESET_WAIT); |
767 | else | 767 | else |
768 | pr_debug("omap_hwmod: %s: reset in %d usec\n", oh->name, | 768 | pr_debug("omap_hwmod: %s: reset in %d usec\n", oh->name, c); |
769 | MAX_MODULE_RESET_WAIT); | ||
770 | 769 | ||
771 | /* | 770 | /* |
772 | * XXX add _HWMOD_STATE_WEDGED for modules that don't come back from | 771 | * XXX add _HWMOD_STATE_WEDGED for modules that don't come back from |
diff --git a/arch/arm/mach-omap2/omap_hwmod_2420.h b/arch/arm/mach-omap2/omap_hwmod_2420.h new file mode 100644 index 000000000000..767e4965ac4e --- /dev/null +++ b/arch/arm/mach-omap2/omap_hwmod_2420.h | |||
@@ -0,0 +1,141 @@ | |||
1 | /* | ||
2 | * omap_hwmod_2420.h - hardware modules present on the OMAP2420 chips | ||
3 | * | ||
4 | * Copyright (C) 2009 Nokia Corporation | ||
5 | * Paul Walmsley | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License version 2 as | ||
9 | * published by the Free Software Foundation. | ||
10 | * | ||
11 | * XXX handle crossbar/shared link difference for L3? | ||
12 | * | ||
13 | */ | ||
14 | #ifndef __ARCH_ARM_PLAT_OMAP_INCLUDE_MACH_OMAP_HWMOD2420_H | ||
15 | #define __ARCH_ARM_PLAT_OMAP_INCLUDE_MACH_OMAP_HWMOD2420_H | ||
16 | |||
17 | #ifdef CONFIG_ARCH_OMAP2420 | ||
18 | |||
19 | #include <mach/omap_hwmod.h> | ||
20 | #include <mach/irqs.h> | ||
21 | #include <mach/cpu.h> | ||
22 | #include <mach/dma.h> | ||
23 | |||
24 | #include "prm-regbits-24xx.h" | ||
25 | |||
26 | static struct omap_hwmod omap2420_mpu_hwmod; | ||
27 | static struct omap_hwmod omap2420_l3_hwmod; | ||
28 | static struct omap_hwmod omap2420_l4_core_hwmod; | ||
29 | |||
30 | /* L3 -> L4_CORE interface */ | ||
31 | static struct omap_hwmod_ocp_if omap2420_l3__l4_core = { | ||
32 | .master = &omap2420_l3_hwmod, | ||
33 | .slave = &omap2420_l4_core_hwmod, | ||
34 | .user = OCP_USER_MPU | OCP_USER_SDMA, | ||
35 | }; | ||
36 | |||
37 | /* MPU -> L3 interface */ | ||
38 | static struct omap_hwmod_ocp_if omap2420_mpu__l3 = { | ||
39 | .master = &omap2420_mpu_hwmod, | ||
40 | .slave = &omap2420_l3_hwmod, | ||
41 | .user = OCP_USER_MPU, | ||
42 | }; | ||
43 | |||
44 | /* Slave interfaces on the L3 interconnect */ | ||
45 | static struct omap_hwmod_ocp_if *omap2420_l3_slaves[] = { | ||
46 | &omap2420_mpu__l3, | ||
47 | }; | ||
48 | |||
49 | /* Master interfaces on the L3 interconnect */ | ||
50 | static struct omap_hwmod_ocp_if *omap2420_l3_masters[] = { | ||
51 | &omap2420_l3__l4_core, | ||
52 | }; | ||
53 | |||
54 | /* L3 */ | ||
55 | static struct omap_hwmod omap2420_l3_hwmod = { | ||
56 | .name = "l3_hwmod", | ||
57 | .masters = omap2420_l3_masters, | ||
58 | .masters_cnt = ARRAY_SIZE(omap2420_l3_masters), | ||
59 | .slaves = omap2420_l3_slaves, | ||
60 | .slaves_cnt = ARRAY_SIZE(omap2420_l3_slaves), | ||
61 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420) | ||
62 | }; | ||
63 | |||
64 | static struct omap_hwmod omap2420_l4_wkup_hwmod; | ||
65 | |||
66 | /* L4_CORE -> L4_WKUP interface */ | ||
67 | static struct omap_hwmod_ocp_if omap2420_l4_core__l4_wkup = { | ||
68 | .master = &omap2420_l4_core_hwmod, | ||
69 | .slave = &omap2420_l4_wkup_hwmod, | ||
70 | .user = OCP_USER_MPU | OCP_USER_SDMA, | ||
71 | }; | ||
72 | |||
73 | /* Slave interfaces on the L4_CORE interconnect */ | ||
74 | static struct omap_hwmod_ocp_if *omap2420_l4_core_slaves[] = { | ||
75 | &omap2420_l3__l4_core, | ||
76 | }; | ||
77 | |||
78 | /* Master interfaces on the L4_CORE interconnect */ | ||
79 | static struct omap_hwmod_ocp_if *omap2420_l4_core_masters[] = { | ||
80 | &omap2420_l4_core__l4_wkup, | ||
81 | }; | ||
82 | |||
83 | /* L4 CORE */ | ||
84 | static struct omap_hwmod omap2420_l4_core_hwmod = { | ||
85 | .name = "l4_core_hwmod", | ||
86 | .masters = omap2420_l4_core_masters, | ||
87 | .masters_cnt = ARRAY_SIZE(omap2420_l4_core_masters), | ||
88 | .slaves = omap2420_l4_core_slaves, | ||
89 | .slaves_cnt = ARRAY_SIZE(omap2420_l4_core_slaves), | ||
90 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420) | ||
91 | }; | ||
92 | |||
93 | /* Slave interfaces on the L4_WKUP interconnect */ | ||
94 | static struct omap_hwmod_ocp_if *omap2420_l4_wkup_slaves[] = { | ||
95 | &omap2420_l4_core__l4_wkup, | ||
96 | }; | ||
97 | |||
98 | /* Master interfaces on the L4_WKUP interconnect */ | ||
99 | static struct omap_hwmod_ocp_if *omap2420_l4_wkup_masters[] = { | ||
100 | }; | ||
101 | |||
102 | /* L4 WKUP */ | ||
103 | static struct omap_hwmod omap2420_l4_wkup_hwmod = { | ||
104 | .name = "l4_wkup_hwmod", | ||
105 | .masters = omap2420_l4_wkup_masters, | ||
106 | .masters_cnt = ARRAY_SIZE(omap2420_l4_wkup_masters), | ||
107 | .slaves = omap2420_l4_wkup_slaves, | ||
108 | .slaves_cnt = ARRAY_SIZE(omap2420_l4_wkup_slaves), | ||
109 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420) | ||
110 | }; | ||
111 | |||
112 | /* Master interfaces on the MPU device */ | ||
113 | static struct omap_hwmod_ocp_if *omap2420_mpu_masters[] = { | ||
114 | &omap2420_mpu__l3, | ||
115 | }; | ||
116 | |||
117 | /* MPU */ | ||
118 | static struct omap_hwmod omap2420_mpu_hwmod = { | ||
119 | .name = "mpu_hwmod", | ||
120 | .clkdev_dev_id = NULL, | ||
121 | .clkdev_con_id = "mpu_ck", | ||
122 | .masters = omap2420_mpu_masters, | ||
123 | .masters_cnt = ARRAY_SIZE(omap2420_mpu_masters), | ||
124 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), | ||
125 | }; | ||
126 | |||
127 | static __initdata struct omap_hwmod *omap2420_hwmods[] = { | ||
128 | &omap2420_l3_hwmod, | ||
129 | &omap2420_l4_core_hwmod, | ||
130 | &omap2420_l4_wkup_hwmod, | ||
131 | &omap2420_mpu_hwmod, | ||
132 | NULL, | ||
133 | }; | ||
134 | |||
135 | #else | ||
136 | # define omap2420_hwmods 0 | ||
137 | #endif | ||
138 | |||
139 | #endif | ||
140 | |||
141 | |||
diff --git a/arch/arm/mach-omap2/omap_hwmod_2430.h b/arch/arm/mach-omap2/omap_hwmod_2430.h new file mode 100644 index 000000000000..a412be6420ec --- /dev/null +++ b/arch/arm/mach-omap2/omap_hwmod_2430.h | |||
@@ -0,0 +1,143 @@ | |||
1 | /* | ||
2 | * omap_hwmod_2430.h - hardware modules present on the OMAP2430 chips | ||
3 | * | ||
4 | * Copyright (C) 2009 Nokia Corporation | ||
5 | * Paul Walmsley | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License version 2 as | ||
9 | * published by the Free Software Foundation. | ||
10 | * | ||
11 | * XXX handle crossbar/shared link difference for L3? | ||
12 | * | ||
13 | */ | ||
14 | #ifndef __ARCH_ARM_PLAT_OMAP_INCLUDE_MACH_OMAP_HWMOD2430_H | ||
15 | #define __ARCH_ARM_PLAT_OMAP_INCLUDE_MACH_OMAP_HWMOD2430_H | ||
16 | |||
17 | #ifdef CONFIG_ARCH_OMAP2430 | ||
18 | |||
19 | #include <mach/omap_hwmod.h> | ||
20 | #include <mach/irqs.h> | ||
21 | #include <mach/cpu.h> | ||
22 | #include <mach/dma.h> | ||
23 | |||
24 | #include "prm-regbits-24xx.h" | ||
25 | |||
26 | static struct omap_hwmod omap2430_mpu_hwmod; | ||
27 | static struct omap_hwmod omap2430_l3_hwmod; | ||
28 | static struct omap_hwmod omap2430_l4_core_hwmod; | ||
29 | |||
30 | /* L3 -> L4_CORE interface */ | ||
31 | static struct omap_hwmod_ocp_if omap2430_l3__l4_core = { | ||
32 | .master = &omap2430_l3_hwmod, | ||
33 | .slave = &omap2430_l4_core_hwmod, | ||
34 | .user = OCP_USER_MPU | OCP_USER_SDMA, | ||
35 | }; | ||
36 | |||
37 | /* MPU -> L3 interface */ | ||
38 | static struct omap_hwmod_ocp_if omap2430_mpu__l3 = { | ||
39 | .master = &omap2430_mpu_hwmod, | ||
40 | .slave = &omap2430_l3_hwmod, | ||
41 | .user = OCP_USER_MPU, | ||
42 | }; | ||
43 | |||
44 | /* Slave interfaces on the L3 interconnect */ | ||
45 | static struct omap_hwmod_ocp_if *omap2430_l3_slaves[] = { | ||
46 | &omap2430_mpu__l3, | ||
47 | }; | ||
48 | |||
49 | /* Master interfaces on the L3 interconnect */ | ||
50 | static struct omap_hwmod_ocp_if *omap2430_l3_masters[] = { | ||
51 | &omap2430_l3__l4_core, | ||
52 | }; | ||
53 | |||
54 | /* L3 */ | ||
55 | static struct omap_hwmod omap2430_l3_hwmod = { | ||
56 | .name = "l3_hwmod", | ||
57 | .masters = omap2430_l3_masters, | ||
58 | .masters_cnt = ARRAY_SIZE(omap2430_l3_masters), | ||
59 | .slaves = omap2430_l3_slaves, | ||
60 | .slaves_cnt = ARRAY_SIZE(omap2430_l3_slaves), | ||
61 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430) | ||
62 | }; | ||
63 | |||
64 | static struct omap_hwmod omap2430_l4_wkup_hwmod; | ||
65 | static struct omap_hwmod omap2430_mmc1_hwmod; | ||
66 | static struct omap_hwmod omap2430_mmc2_hwmod; | ||
67 | |||
68 | /* L4_CORE -> L4_WKUP interface */ | ||
69 | static struct omap_hwmod_ocp_if omap2430_l4_core__l4_wkup = { | ||
70 | .master = &omap2430_l4_core_hwmod, | ||
71 | .slave = &omap2430_l4_wkup_hwmod, | ||
72 | .user = OCP_USER_MPU | OCP_USER_SDMA, | ||
73 | }; | ||
74 | |||
75 | /* Slave interfaces on the L4_CORE interconnect */ | ||
76 | static struct omap_hwmod_ocp_if *omap2430_l4_core_slaves[] = { | ||
77 | &omap2430_l3__l4_core, | ||
78 | }; | ||
79 | |||
80 | /* Master interfaces on the L4_CORE interconnect */ | ||
81 | static struct omap_hwmod_ocp_if *omap2430_l4_core_masters[] = { | ||
82 | &omap2430_l4_core__l4_wkup, | ||
83 | }; | ||
84 | |||
85 | /* L4 CORE */ | ||
86 | static struct omap_hwmod omap2430_l4_core_hwmod = { | ||
87 | .name = "l4_core_hwmod", | ||
88 | .masters = omap2430_l4_core_masters, | ||
89 | .masters_cnt = ARRAY_SIZE(omap2430_l4_core_masters), | ||
90 | .slaves = omap2430_l4_core_slaves, | ||
91 | .slaves_cnt = ARRAY_SIZE(omap2430_l4_core_slaves), | ||
92 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430) | ||
93 | }; | ||
94 | |||
95 | /* Slave interfaces on the L4_WKUP interconnect */ | ||
96 | static struct omap_hwmod_ocp_if *omap2430_l4_wkup_slaves[] = { | ||
97 | &omap2430_l4_core__l4_wkup, | ||
98 | }; | ||
99 | |||
100 | /* Master interfaces on the L4_WKUP interconnect */ | ||
101 | static struct omap_hwmod_ocp_if *omap2430_l4_wkup_masters[] = { | ||
102 | }; | ||
103 | |||
104 | /* L4 WKUP */ | ||
105 | static struct omap_hwmod omap2430_l4_wkup_hwmod = { | ||
106 | .name = "l4_wkup_hwmod", | ||
107 | .masters = omap2430_l4_wkup_masters, | ||
108 | .masters_cnt = ARRAY_SIZE(omap2430_l4_wkup_masters), | ||
109 | .slaves = omap2430_l4_wkup_slaves, | ||
110 | .slaves_cnt = ARRAY_SIZE(omap2430_l4_wkup_slaves), | ||
111 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430) | ||
112 | }; | ||
113 | |||
114 | /* Master interfaces on the MPU device */ | ||
115 | static struct omap_hwmod_ocp_if *omap2430_mpu_masters[] = { | ||
116 | &omap2430_mpu__l3, | ||
117 | }; | ||
118 | |||
119 | /* MPU */ | ||
120 | static struct omap_hwmod omap2430_mpu_hwmod = { | ||
121 | .name = "mpu_hwmod", | ||
122 | .clkdev_dev_id = NULL, | ||
123 | .clkdev_con_id = "mpu_ck", | ||
124 | .masters = omap2430_mpu_masters, | ||
125 | .masters_cnt = ARRAY_SIZE(omap2430_mpu_masters), | ||
126 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430), | ||
127 | }; | ||
128 | |||
129 | static __initdata struct omap_hwmod *omap2430_hwmods[] = { | ||
130 | &omap2430_l3_hwmod, | ||
131 | &omap2430_l4_core_hwmod, | ||
132 | &omap2430_l4_wkup_hwmod, | ||
133 | &omap2430_mpu_hwmod, | ||
134 | NULL, | ||
135 | }; | ||
136 | |||
137 | #else | ||
138 | # define omap2430_hwmods 0 | ||
139 | #endif | ||
140 | |||
141 | #endif | ||
142 | |||
143 | |||
diff --git a/arch/arm/mach-omap2/omap_hwmod_34xx.h b/arch/arm/mach-omap2/omap_hwmod_34xx.h new file mode 100644 index 000000000000..1e069f831575 --- /dev/null +++ b/arch/arm/mach-omap2/omap_hwmod_34xx.h | |||
@@ -0,0 +1,168 @@ | |||
1 | /* | ||
2 | * omap_hwmod_34xx.h - hardware modules present on the OMAP34xx chips | ||
3 | * | ||
4 | * Copyright (C) 2009 Nokia Corporation | ||
5 | * Paul Walmsley | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License version 2 as | ||
9 | * published by the Free Software Foundation. | ||
10 | * | ||
11 | */ | ||
12 | #ifndef __ARCH_ARM_PLAT_OMAP_INCLUDE_MACH_OMAP_HWMOD34XX_H | ||
13 | #define __ARCH_ARM_PLAT_OMAP_INCLUDE_MACH_OMAP_HWMOD34XX_H | ||
14 | |||
15 | #ifdef CONFIG_ARCH_OMAP34XX | ||
16 | |||
17 | #include <mach/omap_hwmod.h> | ||
18 | #include <mach/irqs.h> | ||
19 | #include <mach/cpu.h> | ||
20 | #include <mach/dma.h> | ||
21 | |||
22 | #include "prm-regbits-34xx.h" | ||
23 | |||
24 | static struct omap_hwmod omap34xx_mpu_hwmod; | ||
25 | static struct omap_hwmod omap34xx_l3_hwmod; | ||
26 | static struct omap_hwmod omap34xx_l4_core_hwmod; | ||
27 | static struct omap_hwmod omap34xx_l4_per_hwmod; | ||
28 | |||
29 | /* L3 -> L4_CORE interface */ | ||
30 | static struct omap_hwmod_ocp_if omap34xx_l3__l4_core = { | ||
31 | .master = &omap34xx_l3_hwmod, | ||
32 | .slave = &omap34xx_l4_core_hwmod, | ||
33 | .user = OCP_USER_MPU | OCP_USER_SDMA, | ||
34 | }; | ||
35 | |||
36 | /* L3 -> L4_PER interface */ | ||
37 | static struct omap_hwmod_ocp_if omap34xx_l3__l4_per = { | ||
38 | .master = &omap34xx_l3_hwmod, | ||
39 | .slave = &omap34xx_l4_per_hwmod, | ||
40 | .user = OCP_USER_MPU | OCP_USER_SDMA, | ||
41 | }; | ||
42 | |||
43 | /* MPU -> L3 interface */ | ||
44 | static struct omap_hwmod_ocp_if omap34xx_mpu__l3 = { | ||
45 | .master = &omap34xx_mpu_hwmod, | ||
46 | .slave = &omap34xx_l3_hwmod, | ||
47 | .user = OCP_USER_MPU, | ||
48 | }; | ||
49 | |||
50 | /* Slave interfaces on the L3 interconnect */ | ||
51 | static struct omap_hwmod_ocp_if *omap34xx_l3_slaves[] = { | ||
52 | &omap34xx_mpu__l3, | ||
53 | }; | ||
54 | |||
55 | /* Master interfaces on the L3 interconnect */ | ||
56 | static struct omap_hwmod_ocp_if *omap34xx_l3_masters[] = { | ||
57 | &omap34xx_l3__l4_core, | ||
58 | &omap34xx_l3__l4_per, | ||
59 | }; | ||
60 | |||
61 | /* L3 */ | ||
62 | static struct omap_hwmod omap34xx_l3_hwmod = { | ||
63 | .name = "l3_hwmod", | ||
64 | .masters = omap34xx_l3_masters, | ||
65 | .masters_cnt = ARRAY_SIZE(omap34xx_l3_masters), | ||
66 | .slaves = omap34xx_l3_slaves, | ||
67 | .slaves_cnt = ARRAY_SIZE(omap34xx_l3_slaves), | ||
68 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430) | ||
69 | }; | ||
70 | |||
71 | static struct omap_hwmod omap34xx_l4_wkup_hwmod; | ||
72 | |||
73 | /* L4_CORE -> L4_WKUP interface */ | ||
74 | static struct omap_hwmod_ocp_if omap34xx_l4_core__l4_wkup = { | ||
75 | .master = &omap34xx_l4_core_hwmod, | ||
76 | .slave = &omap34xx_l4_wkup_hwmod, | ||
77 | .user = OCP_USER_MPU | OCP_USER_SDMA, | ||
78 | }; | ||
79 | |||
80 | /* Slave interfaces on the L4_CORE interconnect */ | ||
81 | static struct omap_hwmod_ocp_if *omap34xx_l4_core_slaves[] = { | ||
82 | &omap34xx_l3__l4_core, | ||
83 | }; | ||
84 | |||
85 | /* Master interfaces on the L4_CORE interconnect */ | ||
86 | static struct omap_hwmod_ocp_if *omap34xx_l4_core_masters[] = { | ||
87 | &omap34xx_l4_core__l4_wkup, | ||
88 | }; | ||
89 | |||
90 | /* L4 CORE */ | ||
91 | static struct omap_hwmod omap34xx_l4_core_hwmod = { | ||
92 | .name = "l4_core_hwmod", | ||
93 | .masters = omap34xx_l4_core_masters, | ||
94 | .masters_cnt = ARRAY_SIZE(omap34xx_l4_core_masters), | ||
95 | .slaves = omap34xx_l4_core_slaves, | ||
96 | .slaves_cnt = ARRAY_SIZE(omap34xx_l4_core_slaves), | ||
97 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430) | ||
98 | }; | ||
99 | |||
100 | /* Slave interfaces on the L4_PER interconnect */ | ||
101 | static struct omap_hwmod_ocp_if *omap34xx_l4_per_slaves[] = { | ||
102 | &omap34xx_l3__l4_per, | ||
103 | }; | ||
104 | |||
105 | /* Master interfaces on the L4_PER interconnect */ | ||
106 | static struct omap_hwmod_ocp_if *omap34xx_l4_per_masters[] = { | ||
107 | }; | ||
108 | |||
109 | /* L4 PER */ | ||
110 | static struct omap_hwmod omap34xx_l4_per_hwmod = { | ||
111 | .name = "l4_per_hwmod", | ||
112 | .masters = omap34xx_l4_per_masters, | ||
113 | .masters_cnt = ARRAY_SIZE(omap34xx_l4_per_masters), | ||
114 | .slaves = omap34xx_l4_per_slaves, | ||
115 | .slaves_cnt = ARRAY_SIZE(omap34xx_l4_per_slaves), | ||
116 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430) | ||
117 | }; | ||
118 | |||
119 | /* Slave interfaces on the L4_WKUP interconnect */ | ||
120 | static struct omap_hwmod_ocp_if *omap34xx_l4_wkup_slaves[] = { | ||
121 | &omap34xx_l4_core__l4_wkup, | ||
122 | }; | ||
123 | |||
124 | /* Master interfaces on the L4_WKUP interconnect */ | ||
125 | static struct omap_hwmod_ocp_if *omap34xx_l4_wkup_masters[] = { | ||
126 | }; | ||
127 | |||
128 | /* L4 WKUP */ | ||
129 | static struct omap_hwmod omap34xx_l4_wkup_hwmod = { | ||
130 | .name = "l4_wkup_hwmod", | ||
131 | .masters = omap34xx_l4_wkup_masters, | ||
132 | .masters_cnt = ARRAY_SIZE(omap34xx_l4_wkup_masters), | ||
133 | .slaves = omap34xx_l4_wkup_slaves, | ||
134 | .slaves_cnt = ARRAY_SIZE(omap34xx_l4_wkup_slaves), | ||
135 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430) | ||
136 | }; | ||
137 | |||
138 | /* Master interfaces on the MPU device */ | ||
139 | static struct omap_hwmod_ocp_if *omap34xx_mpu_masters[] = { | ||
140 | &omap34xx_mpu__l3, | ||
141 | }; | ||
142 | |||
143 | /* MPU */ | ||
144 | static struct omap_hwmod omap34xx_mpu_hwmod = { | ||
145 | .name = "mpu_hwmod", | ||
146 | .clkdev_dev_id = NULL, | ||
147 | .clkdev_con_id = "arm_fck", | ||
148 | .masters = omap34xx_mpu_masters, | ||
149 | .masters_cnt = ARRAY_SIZE(omap34xx_mpu_masters), | ||
150 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430), | ||
151 | }; | ||
152 | |||
153 | static __initdata struct omap_hwmod *omap34xx_hwmods[] = { | ||
154 | &omap34xx_l3_hwmod, | ||
155 | &omap34xx_l4_core_hwmod, | ||
156 | &omap34xx_l4_per_hwmod, | ||
157 | &omap34xx_l4_wkup_hwmod, | ||
158 | &omap34xx_mpu_hwmod, | ||
159 | NULL, | ||
160 | }; | ||
161 | |||
162 | #else | ||
163 | # define omap34xx_hwmods 0 | ||
164 | #endif | ||
165 | |||
166 | #endif | ||
167 | |||
168 | |||