diff options
author | Benoit Cousson <b-cousson@ti.com> | 2011-01-31 09:50:30 -0500 |
---|---|---|
committer | Benoit Cousson <b-cousson@ti.com> | 2011-02-17 12:25:36 -0500 |
commit | 4ddff4932b31b8f21d1c57155ca5d4088693ce4b (patch) | |
tree | ff391a93f482c96b9b5791840d2187b40a864f47 /arch | |
parent | 8ca476da04e452a01d984dd5b5333b3a562207a7 (diff) |
OMAP4: hwmod data: Add McBSP
Add mcbsp data including a revision member in hwmod_class in
order to provide mcbsp revision information in different omap.
Signed-off-by: Benoit Cousson <b-cousson@ti.com>
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Charulatha V <charu@ti.com>
[b-cousson@ti.com: Remove the mcbsp4 memory name, re-order
properly the structures]
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/mach-omap2/omap_hwmod_44xx_data.c | 293 |
1 files changed, 289 insertions, 4 deletions
diff --git a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c index 1488438e4b03..f108614f02f6 100644 --- a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c | |||
@@ -530,10 +530,6 @@ static struct omap_hwmod omap44xx_mpu_private_hwmod = { | |||
530 | * iss | 530 | * iss |
531 | * kbd | 531 | * kbd |
532 | * mcasp | 532 | * mcasp |
533 | * mcbsp1 | ||
534 | * mcbsp2 | ||
535 | * mcbsp3 | ||
536 | * mcbsp4 | ||
537 | * mcpdm | 533 | * mcpdm |
538 | * mmc1 | 534 | * mmc1 |
539 | * mmc2 | 535 | * mmc2 |
@@ -2158,6 +2154,289 @@ static struct omap_hwmod omap44xx_mailbox_hwmod = { | |||
2158 | }; | 2154 | }; |
2159 | 2155 | ||
2160 | /* | 2156 | /* |
2157 | * 'mcbsp' class | ||
2158 | * multi channel buffered serial port controller | ||
2159 | */ | ||
2160 | |||
2161 | static struct omap_hwmod_class_sysconfig omap44xx_mcbsp_sysc = { | ||
2162 | .sysc_offs = 0x008c, | ||
2163 | .sysc_flags = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_ENAWAKEUP | | ||
2164 | SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET), | ||
2165 | .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), | ||
2166 | .sysc_fields = &omap_hwmod_sysc_type1, | ||
2167 | }; | ||
2168 | |||
2169 | static struct omap_hwmod_class omap44xx_mcbsp_hwmod_class = { | ||
2170 | .name = "mcbsp", | ||
2171 | .sysc = &omap44xx_mcbsp_sysc, | ||
2172 | }; | ||
2173 | |||
2174 | /* mcbsp1 */ | ||
2175 | static struct omap_hwmod omap44xx_mcbsp1_hwmod; | ||
2176 | static struct omap_hwmod_irq_info omap44xx_mcbsp1_irqs[] = { | ||
2177 | { .irq = 17 + OMAP44XX_IRQ_GIC_START }, | ||
2178 | }; | ||
2179 | |||
2180 | static struct omap_hwmod_dma_info omap44xx_mcbsp1_sdma_reqs[] = { | ||
2181 | { .name = "tx", .dma_req = 32 + OMAP44XX_DMA_REQ_START }, | ||
2182 | { .name = "rx", .dma_req = 33 + OMAP44XX_DMA_REQ_START }, | ||
2183 | }; | ||
2184 | |||
2185 | static struct omap_hwmod_addr_space omap44xx_mcbsp1_addrs[] = { | ||
2186 | { | ||
2187 | .pa_start = 0x40122000, | ||
2188 | .pa_end = 0x401220ff, | ||
2189 | .flags = ADDR_TYPE_RT | ||
2190 | }, | ||
2191 | }; | ||
2192 | |||
2193 | /* l4_abe -> mcbsp1 */ | ||
2194 | static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp1 = { | ||
2195 | .master = &omap44xx_l4_abe_hwmod, | ||
2196 | .slave = &omap44xx_mcbsp1_hwmod, | ||
2197 | .clk = "ocp_abe_iclk", | ||
2198 | .addr = omap44xx_mcbsp1_addrs, | ||
2199 | .addr_cnt = ARRAY_SIZE(omap44xx_mcbsp1_addrs), | ||
2200 | .user = OCP_USER_MPU, | ||
2201 | }; | ||
2202 | |||
2203 | static struct omap_hwmod_addr_space omap44xx_mcbsp1_dma_addrs[] = { | ||
2204 | { | ||
2205 | .pa_start = 0x49022000, | ||
2206 | .pa_end = 0x490220ff, | ||
2207 | .flags = ADDR_TYPE_RT | ||
2208 | }, | ||
2209 | }; | ||
2210 | |||
2211 | /* l4_abe -> mcbsp1 (dma) */ | ||
2212 | static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp1_dma = { | ||
2213 | .master = &omap44xx_l4_abe_hwmod, | ||
2214 | .slave = &omap44xx_mcbsp1_hwmod, | ||
2215 | .clk = "ocp_abe_iclk", | ||
2216 | .addr = omap44xx_mcbsp1_dma_addrs, | ||
2217 | .addr_cnt = ARRAY_SIZE(omap44xx_mcbsp1_dma_addrs), | ||
2218 | .user = OCP_USER_SDMA, | ||
2219 | }; | ||
2220 | |||
2221 | /* mcbsp1 slave ports */ | ||
2222 | static struct omap_hwmod_ocp_if *omap44xx_mcbsp1_slaves[] = { | ||
2223 | &omap44xx_l4_abe__mcbsp1, | ||
2224 | &omap44xx_l4_abe__mcbsp1_dma, | ||
2225 | }; | ||
2226 | |||
2227 | static struct omap_hwmod omap44xx_mcbsp1_hwmod = { | ||
2228 | .name = "mcbsp1", | ||
2229 | .class = &omap44xx_mcbsp_hwmod_class, | ||
2230 | .mpu_irqs = omap44xx_mcbsp1_irqs, | ||
2231 | .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_mcbsp1_irqs), | ||
2232 | .sdma_reqs = omap44xx_mcbsp1_sdma_reqs, | ||
2233 | .sdma_reqs_cnt = ARRAY_SIZE(omap44xx_mcbsp1_sdma_reqs), | ||
2234 | .main_clk = "mcbsp1_fck", | ||
2235 | .prcm = { | ||
2236 | .omap4 = { | ||
2237 | .clkctrl_reg = OMAP4430_CM1_ABE_MCBSP1_CLKCTRL, | ||
2238 | }, | ||
2239 | }, | ||
2240 | .slaves = omap44xx_mcbsp1_slaves, | ||
2241 | .slaves_cnt = ARRAY_SIZE(omap44xx_mcbsp1_slaves), | ||
2242 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430), | ||
2243 | }; | ||
2244 | |||
2245 | /* mcbsp2 */ | ||
2246 | static struct omap_hwmod omap44xx_mcbsp2_hwmod; | ||
2247 | static struct omap_hwmod_irq_info omap44xx_mcbsp2_irqs[] = { | ||
2248 | { .irq = 22 + OMAP44XX_IRQ_GIC_START }, | ||
2249 | }; | ||
2250 | |||
2251 | static struct omap_hwmod_dma_info omap44xx_mcbsp2_sdma_reqs[] = { | ||
2252 | { .name = "tx", .dma_req = 16 + OMAP44XX_DMA_REQ_START }, | ||
2253 | { .name = "rx", .dma_req = 17 + OMAP44XX_DMA_REQ_START }, | ||
2254 | }; | ||
2255 | |||
2256 | static struct omap_hwmod_addr_space omap44xx_mcbsp2_addrs[] = { | ||
2257 | { | ||
2258 | .pa_start = 0x40124000, | ||
2259 | .pa_end = 0x401240ff, | ||
2260 | .flags = ADDR_TYPE_RT | ||
2261 | }, | ||
2262 | }; | ||
2263 | |||
2264 | /* l4_abe -> mcbsp2 */ | ||
2265 | static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp2 = { | ||
2266 | .master = &omap44xx_l4_abe_hwmod, | ||
2267 | .slave = &omap44xx_mcbsp2_hwmod, | ||
2268 | .clk = "ocp_abe_iclk", | ||
2269 | .addr = omap44xx_mcbsp2_addrs, | ||
2270 | .addr_cnt = ARRAY_SIZE(omap44xx_mcbsp2_addrs), | ||
2271 | .user = OCP_USER_MPU, | ||
2272 | }; | ||
2273 | |||
2274 | static struct omap_hwmod_addr_space omap44xx_mcbsp2_dma_addrs[] = { | ||
2275 | { | ||
2276 | .pa_start = 0x49024000, | ||
2277 | .pa_end = 0x490240ff, | ||
2278 | .flags = ADDR_TYPE_RT | ||
2279 | }, | ||
2280 | }; | ||
2281 | |||
2282 | /* l4_abe -> mcbsp2 (dma) */ | ||
2283 | static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp2_dma = { | ||
2284 | .master = &omap44xx_l4_abe_hwmod, | ||
2285 | .slave = &omap44xx_mcbsp2_hwmod, | ||
2286 | .clk = "ocp_abe_iclk", | ||
2287 | .addr = omap44xx_mcbsp2_dma_addrs, | ||
2288 | .addr_cnt = ARRAY_SIZE(omap44xx_mcbsp2_dma_addrs), | ||
2289 | .user = OCP_USER_SDMA, | ||
2290 | }; | ||
2291 | |||
2292 | /* mcbsp2 slave ports */ | ||
2293 | static struct omap_hwmod_ocp_if *omap44xx_mcbsp2_slaves[] = { | ||
2294 | &omap44xx_l4_abe__mcbsp2, | ||
2295 | &omap44xx_l4_abe__mcbsp2_dma, | ||
2296 | }; | ||
2297 | |||
2298 | static struct omap_hwmod omap44xx_mcbsp2_hwmod = { | ||
2299 | .name = "mcbsp2", | ||
2300 | .class = &omap44xx_mcbsp_hwmod_class, | ||
2301 | .mpu_irqs = omap44xx_mcbsp2_irqs, | ||
2302 | .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_mcbsp2_irqs), | ||
2303 | .sdma_reqs = omap44xx_mcbsp2_sdma_reqs, | ||
2304 | .sdma_reqs_cnt = ARRAY_SIZE(omap44xx_mcbsp2_sdma_reqs), | ||
2305 | .main_clk = "mcbsp2_fck", | ||
2306 | .prcm = { | ||
2307 | .omap4 = { | ||
2308 | .clkctrl_reg = OMAP4430_CM1_ABE_MCBSP2_CLKCTRL, | ||
2309 | }, | ||
2310 | }, | ||
2311 | .slaves = omap44xx_mcbsp2_slaves, | ||
2312 | .slaves_cnt = ARRAY_SIZE(omap44xx_mcbsp2_slaves), | ||
2313 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430), | ||
2314 | }; | ||
2315 | |||
2316 | /* mcbsp3 */ | ||
2317 | static struct omap_hwmod omap44xx_mcbsp3_hwmod; | ||
2318 | static struct omap_hwmod_irq_info omap44xx_mcbsp3_irqs[] = { | ||
2319 | { .irq = 23 + OMAP44XX_IRQ_GIC_START }, | ||
2320 | }; | ||
2321 | |||
2322 | static struct omap_hwmod_dma_info omap44xx_mcbsp3_sdma_reqs[] = { | ||
2323 | { .name = "tx", .dma_req = 18 + OMAP44XX_DMA_REQ_START }, | ||
2324 | { .name = "rx", .dma_req = 19 + OMAP44XX_DMA_REQ_START }, | ||
2325 | }; | ||
2326 | |||
2327 | static struct omap_hwmod_addr_space omap44xx_mcbsp3_addrs[] = { | ||
2328 | { | ||
2329 | .pa_start = 0x40126000, | ||
2330 | .pa_end = 0x401260ff, | ||
2331 | .flags = ADDR_TYPE_RT | ||
2332 | }, | ||
2333 | }; | ||
2334 | |||
2335 | /* l4_abe -> mcbsp3 */ | ||
2336 | static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp3 = { | ||
2337 | .master = &omap44xx_l4_abe_hwmod, | ||
2338 | .slave = &omap44xx_mcbsp3_hwmod, | ||
2339 | .clk = "ocp_abe_iclk", | ||
2340 | .addr = omap44xx_mcbsp3_addrs, | ||
2341 | .addr_cnt = ARRAY_SIZE(omap44xx_mcbsp3_addrs), | ||
2342 | .user = OCP_USER_MPU, | ||
2343 | }; | ||
2344 | |||
2345 | static struct omap_hwmod_addr_space omap44xx_mcbsp3_dma_addrs[] = { | ||
2346 | { | ||
2347 | .pa_start = 0x49026000, | ||
2348 | .pa_end = 0x490260ff, | ||
2349 | .flags = ADDR_TYPE_RT | ||
2350 | }, | ||
2351 | }; | ||
2352 | |||
2353 | /* l4_abe -> mcbsp3 (dma) */ | ||
2354 | static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp3_dma = { | ||
2355 | .master = &omap44xx_l4_abe_hwmod, | ||
2356 | .slave = &omap44xx_mcbsp3_hwmod, | ||
2357 | .clk = "ocp_abe_iclk", | ||
2358 | .addr = omap44xx_mcbsp3_dma_addrs, | ||
2359 | .addr_cnt = ARRAY_SIZE(omap44xx_mcbsp3_dma_addrs), | ||
2360 | .user = OCP_USER_SDMA, | ||
2361 | }; | ||
2362 | |||
2363 | /* mcbsp3 slave ports */ | ||
2364 | static struct omap_hwmod_ocp_if *omap44xx_mcbsp3_slaves[] = { | ||
2365 | &omap44xx_l4_abe__mcbsp3, | ||
2366 | &omap44xx_l4_abe__mcbsp3_dma, | ||
2367 | }; | ||
2368 | |||
2369 | static struct omap_hwmod omap44xx_mcbsp3_hwmod = { | ||
2370 | .name = "mcbsp3", | ||
2371 | .class = &omap44xx_mcbsp_hwmod_class, | ||
2372 | .mpu_irqs = omap44xx_mcbsp3_irqs, | ||
2373 | .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_mcbsp3_irqs), | ||
2374 | .sdma_reqs = omap44xx_mcbsp3_sdma_reqs, | ||
2375 | .sdma_reqs_cnt = ARRAY_SIZE(omap44xx_mcbsp3_sdma_reqs), | ||
2376 | .main_clk = "mcbsp3_fck", | ||
2377 | .prcm = { | ||
2378 | .omap4 = { | ||
2379 | .clkctrl_reg = OMAP4430_CM1_ABE_MCBSP3_CLKCTRL, | ||
2380 | }, | ||
2381 | }, | ||
2382 | .slaves = omap44xx_mcbsp3_slaves, | ||
2383 | .slaves_cnt = ARRAY_SIZE(omap44xx_mcbsp3_slaves), | ||
2384 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430), | ||
2385 | }; | ||
2386 | |||
2387 | /* mcbsp4 */ | ||
2388 | static struct omap_hwmod omap44xx_mcbsp4_hwmod; | ||
2389 | static struct omap_hwmod_irq_info omap44xx_mcbsp4_irqs[] = { | ||
2390 | { .irq = 16 + OMAP44XX_IRQ_GIC_START }, | ||
2391 | }; | ||
2392 | |||
2393 | static struct omap_hwmod_dma_info omap44xx_mcbsp4_sdma_reqs[] = { | ||
2394 | { .name = "tx", .dma_req = 30 + OMAP44XX_DMA_REQ_START }, | ||
2395 | { .name = "rx", .dma_req = 31 + OMAP44XX_DMA_REQ_START }, | ||
2396 | }; | ||
2397 | |||
2398 | static struct omap_hwmod_addr_space omap44xx_mcbsp4_addrs[] = { | ||
2399 | { | ||
2400 | .pa_start = 0x48096000, | ||
2401 | .pa_end = 0x480960ff, | ||
2402 | .flags = ADDR_TYPE_RT | ||
2403 | }, | ||
2404 | }; | ||
2405 | |||
2406 | /* l4_per -> mcbsp4 */ | ||
2407 | static struct omap_hwmod_ocp_if omap44xx_l4_per__mcbsp4 = { | ||
2408 | .master = &omap44xx_l4_per_hwmod, | ||
2409 | .slave = &omap44xx_mcbsp4_hwmod, | ||
2410 | .clk = "l4_div_ck", | ||
2411 | .addr = omap44xx_mcbsp4_addrs, | ||
2412 | .addr_cnt = ARRAY_SIZE(omap44xx_mcbsp4_addrs), | ||
2413 | .user = OCP_USER_MPU | OCP_USER_SDMA, | ||
2414 | }; | ||
2415 | |||
2416 | /* mcbsp4 slave ports */ | ||
2417 | static struct omap_hwmod_ocp_if *omap44xx_mcbsp4_slaves[] = { | ||
2418 | &omap44xx_l4_per__mcbsp4, | ||
2419 | }; | ||
2420 | |||
2421 | static struct omap_hwmod omap44xx_mcbsp4_hwmod = { | ||
2422 | .name = "mcbsp4", | ||
2423 | .class = &omap44xx_mcbsp_hwmod_class, | ||
2424 | .mpu_irqs = omap44xx_mcbsp4_irqs, | ||
2425 | .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_mcbsp4_irqs), | ||
2426 | .sdma_reqs = omap44xx_mcbsp4_sdma_reqs, | ||
2427 | .sdma_reqs_cnt = ARRAY_SIZE(omap44xx_mcbsp4_sdma_reqs), | ||
2428 | .main_clk = "mcbsp4_fck", | ||
2429 | .prcm = { | ||
2430 | .omap4 = { | ||
2431 | .clkctrl_reg = OMAP4430_CM_L4PER_MCBSP4_CLKCTRL, | ||
2432 | }, | ||
2433 | }, | ||
2434 | .slaves = omap44xx_mcbsp4_slaves, | ||
2435 | .slaves_cnt = ARRAY_SIZE(omap44xx_mcbsp4_slaves), | ||
2436 | .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430), | ||
2437 | }; | ||
2438 | |||
2439 | /* | ||
2161 | * 'mcspi' class | 2440 | * 'mcspi' class |
2162 | * multichannel serial port interface (mcspi) / master/slave synchronous serial | 2441 | * multichannel serial port interface (mcspi) / master/slave synchronous serial |
2163 | * bus | 2442 | * bus |
@@ -3697,6 +3976,12 @@ static __initdata struct omap_hwmod *omap44xx_hwmods[] = { | |||
3697 | /* mailbox class */ | 3976 | /* mailbox class */ |
3698 | &omap44xx_mailbox_hwmod, | 3977 | &omap44xx_mailbox_hwmod, |
3699 | 3978 | ||
3979 | /* mcbsp class */ | ||
3980 | &omap44xx_mcbsp1_hwmod, | ||
3981 | &omap44xx_mcbsp2_hwmod, | ||
3982 | &omap44xx_mcbsp3_hwmod, | ||
3983 | &omap44xx_mcbsp4_hwmod, | ||
3984 | |||
3700 | /* mcspi class */ | 3985 | /* mcspi class */ |
3701 | &omap44xx_mcspi1_hwmod, | 3986 | &omap44xx_mcspi1_hwmod, |
3702 | &omap44xx_mcspi2_hwmod, | 3987 | &omap44xx_mcspi2_hwmod, |