diff options
author | Benoît Cousson <b-cousson@ti.com> | 2012-04-19 15:33:53 -0400 |
---|---|---|
committer | Paul Walmsley <paul@pwsan.com> | 2012-04-19 15:33:53 -0400 |
commit | 1e3b5e59532c6f1f57e38b8f8ad7e74bc7cb6f4e (patch) | |
tree | 1e59b04daeb57f61127abc4727231efdb02994e9 /arch/arm/mach-omap2/omap_hwmod_44xx_data.c | |
parent | 9def390ea3f7a8a61d33c18f3af1783293b5608f (diff) |
ARM: OMAP4: hwmod data: add the Slimbus IP blocks
Add the Slimbus hwmods and associated interconnect data. The Slimbus
IP blocks implement a two-wire serial interface.
Signed-off-by: Benoît Cousson <b-cousson@ti.com>
Signed-off-by: Paul Walmsley <paul@pwsan.com>
Diffstat (limited to 'arch/arm/mach-omap2/omap_hwmod_44xx_data.c')
-rw-r--r-- | arch/arm/mach-omap2/omap_hwmod_44xx_data.c | 163 |
1 files changed, 161 insertions, 2 deletions
diff --git a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c index 2f257728a9be..4c5add709d75 100644 --- a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c | |||
@@ -271,8 +271,6 @@ static struct omap_hwmod omap44xx_mpu_private_hwmod = { | |||
271 | * prm | 271 | * prm |
272 | * scrm | 272 | * scrm |
273 | * sl2if | 273 | * sl2if |
274 | * slimbus1 | ||
275 | * slimbus2 | ||
276 | * usb_host_fs | 274 | * usb_host_fs |
277 | * usb_host_hs | 275 | * usb_host_hs |
278 | * usb_phy_cm | 276 | * usb_phy_cm |
@@ -2248,6 +2246,110 @@ static struct omap_hwmod omap44xx_mpu_hwmod = { | |||
2248 | }; | 2246 | }; |
2249 | 2247 | ||
2250 | /* | 2248 | /* |
2249 | * 'slimbus' class | ||
2250 | * bidirectional, multi-drop, multi-channel two-line serial interface between | ||
2251 | * the device and external components | ||
2252 | */ | ||
2253 | |||
2254 | static struct omap_hwmod_class_sysconfig omap44xx_slimbus_sysc = { | ||
2255 | .rev_offs = 0x0000, | ||
2256 | .sysc_offs = 0x0010, | ||
2257 | .sysc_flags = (SYSC_HAS_RESET_STATUS | SYSC_HAS_SIDLEMODE | | ||
2258 | SYSC_HAS_SOFTRESET), | ||
2259 | .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | | ||
2260 | SIDLE_SMART_WKUP), | ||
2261 | .sysc_fields = &omap_hwmod_sysc_type2, | ||
2262 | }; | ||
2263 | |||
2264 | static struct omap_hwmod_class omap44xx_slimbus_hwmod_class = { | ||
2265 | .name = "slimbus", | ||
2266 | .sysc = &omap44xx_slimbus_sysc, | ||
2267 | }; | ||
2268 | |||
2269 | /* slimbus1 */ | ||
2270 | static struct omap_hwmod_irq_info omap44xx_slimbus1_irqs[] = { | ||
2271 | { .irq = 97 + OMAP44XX_IRQ_GIC_START }, | ||
2272 | { .irq = -1 } | ||
2273 | }; | ||
2274 | |||
2275 | static struct omap_hwmod_dma_info omap44xx_slimbus1_sdma_reqs[] = { | ||
2276 | { .name = "tx0", .dma_req = 84 + OMAP44XX_DMA_REQ_START }, | ||
2277 | { .name = "tx1", .dma_req = 85 + OMAP44XX_DMA_REQ_START }, | ||
2278 | { .name = "tx2", .dma_req = 86 + OMAP44XX_DMA_REQ_START }, | ||
2279 | { .name = "tx3", .dma_req = 87 + OMAP44XX_DMA_REQ_START }, | ||
2280 | { .name = "rx0", .dma_req = 88 + OMAP44XX_DMA_REQ_START }, | ||
2281 | { .name = "rx1", .dma_req = 89 + OMAP44XX_DMA_REQ_START }, | ||
2282 | { .name = "rx2", .dma_req = 90 + OMAP44XX_DMA_REQ_START }, | ||
2283 | { .name = "rx3", .dma_req = 91 + OMAP44XX_DMA_REQ_START }, | ||
2284 | { .dma_req = -1 } | ||
2285 | }; | ||
2286 | |||
2287 | static struct omap_hwmod_opt_clk slimbus1_opt_clks[] = { | ||
2288 | { .role = "fclk_1", .clk = "slimbus1_fclk_1" }, | ||
2289 | { .role = "fclk_0", .clk = "slimbus1_fclk_0" }, | ||
2290 | { .role = "fclk_2", .clk = "slimbus1_fclk_2" }, | ||
2291 | { .role = "slimbus_clk", .clk = "slimbus1_slimbus_clk" }, | ||
2292 | }; | ||
2293 | |||
2294 | static struct omap_hwmod omap44xx_slimbus1_hwmod = { | ||
2295 | .name = "slimbus1", | ||
2296 | .class = &omap44xx_slimbus_hwmod_class, | ||
2297 | .clkdm_name = "abe_clkdm", | ||
2298 | .mpu_irqs = omap44xx_slimbus1_irqs, | ||
2299 | .sdma_reqs = omap44xx_slimbus1_sdma_reqs, | ||
2300 | .prcm = { | ||
2301 | .omap4 = { | ||
2302 | .clkctrl_offs = OMAP4_CM1_ABE_SLIMBUS_CLKCTRL_OFFSET, | ||
2303 | .context_offs = OMAP4_RM_ABE_SLIMBUS_CONTEXT_OFFSET, | ||
2304 | .modulemode = MODULEMODE_SWCTRL, | ||
2305 | }, | ||
2306 | }, | ||
2307 | .opt_clks = slimbus1_opt_clks, | ||
2308 | .opt_clks_cnt = ARRAY_SIZE(slimbus1_opt_clks), | ||
2309 | }; | ||
2310 | |||
2311 | /* slimbus2 */ | ||
2312 | static struct omap_hwmod_irq_info omap44xx_slimbus2_irqs[] = { | ||
2313 | { .irq = 98 + OMAP44XX_IRQ_GIC_START }, | ||
2314 | { .irq = -1 } | ||
2315 | }; | ||
2316 | |||
2317 | static struct omap_hwmod_dma_info omap44xx_slimbus2_sdma_reqs[] = { | ||
2318 | { .name = "tx0", .dma_req = 92 + OMAP44XX_DMA_REQ_START }, | ||
2319 | { .name = "tx1", .dma_req = 93 + OMAP44XX_DMA_REQ_START }, | ||
2320 | { .name = "tx2", .dma_req = 94 + OMAP44XX_DMA_REQ_START }, | ||
2321 | { .name = "tx3", .dma_req = 95 + OMAP44XX_DMA_REQ_START }, | ||
2322 | { .name = "rx0", .dma_req = 96 + OMAP44XX_DMA_REQ_START }, | ||
2323 | { .name = "rx1", .dma_req = 97 + OMAP44XX_DMA_REQ_START }, | ||
2324 | { .name = "rx2", .dma_req = 98 + OMAP44XX_DMA_REQ_START }, | ||
2325 | { .name = "rx3", .dma_req = 99 + OMAP44XX_DMA_REQ_START }, | ||
2326 | { .dma_req = -1 } | ||
2327 | }; | ||
2328 | |||
2329 | static struct omap_hwmod_opt_clk slimbus2_opt_clks[] = { | ||
2330 | { .role = "fclk_1", .clk = "slimbus2_fclk_1" }, | ||
2331 | { .role = "fclk_0", .clk = "slimbus2_fclk_0" }, | ||
2332 | { .role = "slimbus_clk", .clk = "slimbus2_slimbus_clk" }, | ||
2333 | }; | ||
2334 | |||
2335 | static struct omap_hwmod omap44xx_slimbus2_hwmod = { | ||
2336 | .name = "slimbus2", | ||
2337 | .class = &omap44xx_slimbus_hwmod_class, | ||
2338 | .clkdm_name = "l4_per_clkdm", | ||
2339 | .mpu_irqs = omap44xx_slimbus2_irqs, | ||
2340 | .sdma_reqs = omap44xx_slimbus2_sdma_reqs, | ||
2341 | .prcm = { | ||
2342 | .omap4 = { | ||
2343 | .clkctrl_offs = OMAP4_CM_L4PER_SLIMBUS2_CLKCTRL_OFFSET, | ||
2344 | .context_offs = OMAP4_RM_L4PER_SLIMBUS2_CONTEXT_OFFSET, | ||
2345 | .modulemode = MODULEMODE_SWCTRL, | ||
2346 | }, | ||
2347 | }, | ||
2348 | .opt_clks = slimbus2_opt_clks, | ||
2349 | .opt_clks_cnt = ARRAY_SIZE(slimbus2_opt_clks), | ||
2350 | }; | ||
2351 | |||
2352 | /* | ||
2251 | * 'smartreflex' class | 2353 | * 'smartreflex' class |
2252 | * smartreflex module (monitor silicon performance and outputs a measure of | 2354 | * smartreflex module (monitor silicon performance and outputs a measure of |
2253 | * performance error) | 2355 | * performance error) |
@@ -4493,6 +4595,60 @@ static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc5 = { | |||
4493 | .user = OCP_USER_MPU | OCP_USER_SDMA, | 4595 | .user = OCP_USER_MPU | OCP_USER_SDMA, |
4494 | }; | 4596 | }; |
4495 | 4597 | ||
4598 | static struct omap_hwmod_addr_space omap44xx_slimbus1_addrs[] = { | ||
4599 | { | ||
4600 | .pa_start = 0x4012c000, | ||
4601 | .pa_end = 0x4012c3ff, | ||
4602 | .flags = ADDR_TYPE_RT | ||
4603 | }, | ||
4604 | { } | ||
4605 | }; | ||
4606 | |||
4607 | /* l4_abe -> slimbus1 */ | ||
4608 | static struct omap_hwmod_ocp_if omap44xx_l4_abe__slimbus1 = { | ||
4609 | .master = &omap44xx_l4_abe_hwmod, | ||
4610 | .slave = &omap44xx_slimbus1_hwmod, | ||
4611 | .clk = "ocp_abe_iclk", | ||
4612 | .addr = omap44xx_slimbus1_addrs, | ||
4613 | .user = OCP_USER_MPU, | ||
4614 | }; | ||
4615 | |||
4616 | static struct omap_hwmod_addr_space omap44xx_slimbus1_dma_addrs[] = { | ||
4617 | { | ||
4618 | .pa_start = 0x4902c000, | ||
4619 | .pa_end = 0x4902c3ff, | ||
4620 | .flags = ADDR_TYPE_RT | ||
4621 | }, | ||
4622 | { } | ||
4623 | }; | ||
4624 | |||
4625 | /* l4_abe -> slimbus1 (dma) */ | ||
4626 | static struct omap_hwmod_ocp_if omap44xx_l4_abe__slimbus1_dma = { | ||
4627 | .master = &omap44xx_l4_abe_hwmod, | ||
4628 | .slave = &omap44xx_slimbus1_hwmod, | ||
4629 | .clk = "ocp_abe_iclk", | ||
4630 | .addr = omap44xx_slimbus1_dma_addrs, | ||
4631 | .user = OCP_USER_SDMA, | ||
4632 | }; | ||
4633 | |||
4634 | static struct omap_hwmod_addr_space omap44xx_slimbus2_addrs[] = { | ||
4635 | { | ||
4636 | .pa_start = 0x48076000, | ||
4637 | .pa_end = 0x480763ff, | ||
4638 | .flags = ADDR_TYPE_RT | ||
4639 | }, | ||
4640 | { } | ||
4641 | }; | ||
4642 | |||
4643 | /* l4_per -> slimbus2 */ | ||
4644 | static struct omap_hwmod_ocp_if omap44xx_l4_per__slimbus2 = { | ||
4645 | .master = &omap44xx_l4_per_hwmod, | ||
4646 | .slave = &omap44xx_slimbus2_hwmod, | ||
4647 | .clk = "l4_div_ck", | ||
4648 | .addr = omap44xx_slimbus2_addrs, | ||
4649 | .user = OCP_USER_MPU | OCP_USER_SDMA, | ||
4650 | }; | ||
4651 | |||
4496 | static struct omap_hwmod_addr_space omap44xx_smartreflex_core_addrs[] = { | 4652 | static struct omap_hwmod_addr_space omap44xx_smartreflex_core_addrs[] = { |
4497 | { | 4653 | { |
4498 | .pa_start = 0x4a0dd000, | 4654 | .pa_start = 0x4a0dd000, |
@@ -5125,6 +5281,9 @@ static struct omap_hwmod_ocp_if *omap44xx_hwmod_ocp_ifs[] __initdata = { | |||
5125 | &omap44xx_l4_per__mmc3, | 5281 | &omap44xx_l4_per__mmc3, |
5126 | &omap44xx_l4_per__mmc4, | 5282 | &omap44xx_l4_per__mmc4, |
5127 | &omap44xx_l4_per__mmc5, | 5283 | &omap44xx_l4_per__mmc5, |
5284 | &omap44xx_l4_abe__slimbus1, | ||
5285 | &omap44xx_l4_abe__slimbus1_dma, | ||
5286 | &omap44xx_l4_per__slimbus2, | ||
5128 | &omap44xx_l4_cfg__smartreflex_core, | 5287 | &omap44xx_l4_cfg__smartreflex_core, |
5129 | &omap44xx_l4_cfg__smartreflex_iva, | 5288 | &omap44xx_l4_cfg__smartreflex_iva, |
5130 | &omap44xx_l4_cfg__smartreflex_mpu, | 5289 | &omap44xx_l4_cfg__smartreflex_mpu, |