ARM: OMAP2+: DMA: Add slave map entries for 24xx external request lines
authorPeter Ujfalusi <peter.ujfalusi@ti.com>
Fri, 16 Jun 2017 15:41:02 +0000 (10:41 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 20 Jun 2017 03:45:01 +0000 (11:45 +0800)
The external request lines are used by tusb6010 on OMAP24xx platforms.
Update the map so the driver can use dmaengine API to request the DMA
channel. At the same time add temporary map containing only the external
DMA request numbers for DT booted case on omap24xx since the tusb6010 stack
is not yet supports DT boot.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Acked-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Bin Liu <b-liu@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/arm/mach-omap2/dma.c

index e58c13a9bea5e78943e1c01fa158bea2aee31851..0b77a01760184edf3694e208b6e526a2352c144a 100644 (file)
@@ -249,6 +249,24 @@ static const struct dma_slave_map omap24xx_sdma_map[] = {
        { "omap_uart.2", "rx", SDMA_FILTER_PARAM(54) },
        { "omap_hsmmc.0", "tx", SDMA_FILTER_PARAM(61) },
        { "omap_hsmmc.0", "rx", SDMA_FILTER_PARAM(62) },
+
+       /* external DMA requests when tusb6010 is used */
+       { "musb-tusb", "dmareq0", SDMA_FILTER_PARAM(2) },
+       { "musb-tusb", "dmareq1", SDMA_FILTER_PARAM(3) },
+       { "musb-tusb", "dmareq2", SDMA_FILTER_PARAM(14) }, /* OMAP2420 only */
+       { "musb-tusb", "dmareq3", SDMA_FILTER_PARAM(15) }, /* OMAP2420 only */
+       { "musb-tusb", "dmareq4", SDMA_FILTER_PARAM(16) }, /* OMAP2420 only */
+       { "musb-tusb", "dmareq5", SDMA_FILTER_PARAM(64) }, /* OMAP2420 only */
+};
+
+static const struct dma_slave_map omap24xx_sdma_dt_map[] = {
+       /* external DMA requests when tusb6010 is used */
+       { "musb-hdrc.1.auto", "dmareq0", SDMA_FILTER_PARAM(2) },
+       { "musb-hdrc.1.auto", "dmareq1", SDMA_FILTER_PARAM(3) },
+       { "musb-hdrc.1.auto", "dmareq2", SDMA_FILTER_PARAM(14) }, /* OMAP2420 only */
+       { "musb-hdrc.1.auto", "dmareq3", SDMA_FILTER_PARAM(15) }, /* OMAP2420 only */
+       { "musb-hdrc.1.auto", "dmareq4", SDMA_FILTER_PARAM(16) }, /* OMAP2420 only */
+       { "musb-hdrc.1.auto", "dmareq5", SDMA_FILTER_PARAM(64) }, /* OMAP2420 only */
 };
 
 static const struct dma_slave_map omap3xxx_sdma_map[] = {
@@ -346,6 +364,12 @@ static int __init omap2_system_dma_init_dev(struct omap_hwmod *oh, void *unused)
                               __func__);
                        return -ENODEV;
                }
+       } else {
+               if (soc_is_omap24xx()) {
+                       /* DMA slave map for drivers not yet converted to DT */
+                       p.slave_map = omap24xx_sdma_dt_map;
+                       p.slavecnt = ARRAY_SIZE(omap24xx_sdma_dt_map);
+               }
        }
 
        pdev = omap_device_build(name, 0, oh, &p, sizeof(p));