diff options
| -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, |
