1
2#include <plat/omap_hwmod.h>
3#include <mach/irqs.h>
4#include <plat/cpu.h>
5#include <plat/dma.h>
6
7#include "omap_hwmod_common_data.h"
8
9#include "prm-regbits-24xx.h"
10
11/*
12 * OMAP2430 hardware module integration data
13 *
14 * ALl of the data in this section should be autogeneratable from the
15 * TI hardware database or other technical documentation.  Data that
16 * is driver-specific or driver-kernel integration-specific belongs
17 * elsewhere.
18 */
19
20static struct omap_hwmod omap2430_mpu_hwmod;
21static struct omap_hwmod omap2430_iva_hwmod;
22static struct omap_hwmod omap2430_l3_main_hwmod;
23static struct omap_hwmod omap2430_l4_core_hwmod;
24
25/* L3 -> L4_CORE interface */
26static struct omap_hwmod_ocp_if omap2430_l3_main__l4_core = {
27	.master	= &omap2430_l3_main_hwmod,
28	.slave	= &omap2430_l4_core_hwmod,
29	.user	= OCP_USER_MPU | OCP_USER_SDMA,
30};
31
32/* MPU -> L3 interface */
33static struct omap_hwmod_ocp_if omap2430_mpu__l3_main = {
34	.master = &omap2430_mpu_hwmod,
35	.slave	= &omap2430_l3_main_hwmod,
36	.user	= OCP_USER_MPU,
37};
38
39/* Slave interfaces on the L3 interconnect */
40static struct omap_hwmod_ocp_if *omap2430_l3_main_slaves[] = {
41	&omap2430_mpu__l3_main,
42};
43
44/* Master interfaces on the L3 interconnect */
45static struct omap_hwmod_ocp_if *omap2430_l3_main_masters[] = {
46	&omap2430_l3_main__l4_core,
47};
48
49/* L3 */
50static struct omap_hwmod omap2430_l3_main_hwmod = {
51	.name		= "l3_main",
52	.class		= &l3_hwmod_class,
53	.masters	= omap2430_l3_main_masters,
54	.masters_cnt	= ARRAY_SIZE(omap2430_l3_main_masters),
55	.slaves		= omap2430_l3_main_slaves,
56	.slaves_cnt	= ARRAY_SIZE(omap2430_l3_main_slaves),
57	.omap_chip	= OMAP_CHIP_INIT(CHIP_IS_OMAP2430),
58	.flags		= HWMOD_NO_IDLEST,
59};
60
61static struct omap_hwmod omap2430_l4_wkup_hwmod;
62
63/* L4_CORE -> L4_WKUP interface */
64static struct omap_hwmod_ocp_if omap2430_l4_core__l4_wkup = {
65	.master	= &omap2430_l4_core_hwmod,
66	.slave	= &omap2430_l4_wkup_hwmod,
67	.user	= OCP_USER_MPU | OCP_USER_SDMA,
68};
69
70/* Slave interfaces on the L4_CORE interconnect */
71static struct omap_hwmod_ocp_if *omap2430_l4_core_slaves[] = {
72	&omap2430_l3_main__l4_core,
73};
74
75/* Master interfaces on the L4_CORE interconnect */
76static struct omap_hwmod_ocp_if *omap2430_l4_core_masters[] = {
77	&omap2430_l4_core__l4_wkup,
78};
79
80/* L4 CORE */
81static struct omap_hwmod omap2430_l4_core_hwmod = {
82	.name		= "l4_core",
83	.class		= &l4_hwmod_class,
84	.masters	= omap2430_l4_core_masters,
85	.masters_cnt	= ARRAY_SIZE(omap2430_l4_core_masters),
86	.slaves		= omap2430_l4_core_slaves,
87	.slaves_cnt	= ARRAY_SIZE(omap2430_l4_core_slaves),
88	.omap_chip	= OMAP_CHIP_INIT(CHIP_IS_OMAP2430),
89	.flags		= HWMOD_NO_IDLEST,
90};
91
92/* Slave interfaces on the L4_WKUP interconnect */
93static struct omap_hwmod_ocp_if *omap2430_l4_wkup_slaves[] = {
94	&omap2430_l4_core__l4_wkup,
95};
96
97/* Master interfaces on the L4_WKUP interconnect */
98static struct omap_hwmod_ocp_if *omap2430_l4_wkup_masters[] = {
99};
100
101/* L4 WKUP */
102static struct omap_hwmod omap2430_l4_wkup_hwmod = {
103	.name		= "l4_wkup",
104	.class		= &l4_hwmod_class,
105	.masters	= omap2430_l4_wkup_masters,
106	.masters_cnt	= ARRAY_SIZE(omap2430_l4_wkup_masters),
107	.slaves		= omap2430_l4_wkup_slaves,
108	.slaves_cnt	= ARRAY_SIZE(omap2430_l4_wkup_slaves),
109	.omap_chip	= OMAP_CHIP_INIT(CHIP_IS_OMAP2430),
110	.flags		= HWMOD_NO_IDLEST,
111};
112
113/* Master interfaces on the MPU device */
114static struct omap_hwmod_ocp_if *omap2430_mpu_masters[] = {
115	&omap2430_mpu__l3_main,
116};
117
118/* MPU */
119static struct omap_hwmod omap2430_mpu_hwmod = {
120	.name		= "mpu",
121	.class		= &mpu_hwmod_class,
122	.main_clk	= "mpu_ck",
123	.masters	= omap2430_mpu_masters,
124	.masters_cnt	= ARRAY_SIZE(omap2430_mpu_masters),
125	.omap_chip	= OMAP_CHIP_INIT(CHIP_IS_OMAP2430),
126};
127
128/*
129 * IVA2_1 interface data
130 */
131
132/* IVA2 <- L3 interface */
133static struct omap_hwmod_ocp_if omap2430_l3__iva = {
134	.master		= &omap2430_l3_main_hwmod,
135	.slave		= &omap2430_iva_hwmod,
136	.clk		= "dsp_fck",
137	.user		= OCP_USER_MPU | OCP_USER_SDMA,
138};
139
140static struct omap_hwmod_ocp_if *omap2430_iva_masters[] = {
141	&omap2430_l3__iva,
142};
143
144/*
145 * IVA2 (IVA2)
146 */
147
148static struct omap_hwmod omap2430_iva_hwmod = {
149	.name		= "iva",
150	.class		= &iva_hwmod_class,
151	.masters	= omap2430_iva_masters,
152	.masters_cnt	= ARRAY_SIZE(omap2430_iva_masters),
153	.omap_chip	= OMAP_CHIP_INIT(CHIP_IS_OMAP2430)
154};
155
156static __initdata struct omap_hwmod *omap2430_hwmods[] = {
157	&omap2430_l3_main_hwmod,
158	&omap2430_l4_core_hwmod,
159	&omap2430_l4_wkup_hwmod,
160	&omap2430_mpu_hwmod,
161	&omap2430_iva_hwmod,
162	NULL,
163};
164
165int __init omap2430_hwmod_init(void)
166{
167	return omap_hwmod_init(omap2430_hwmods);
168}
169