OSDN Git Service

dmaengine: sa11x0: add DMA filters
authorRussell King <rmk+kernel@armlinux.org.uk>
Tue, 26 Sep 2017 14:10:02 +0000 (15:10 +0100)
committerVinod Koul <vinod.koul@intel.com>
Wed, 27 Sep 2017 10:41:51 +0000 (16:11 +0530)
Add DMA filters for the sa11x0 DMA channels.  This will allow us to
migrate away from directly using the DMA filter function in drivers.

Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
drivers/dma/sa11x0-dma.c

index 1adeb32..c7a89c2 100644 (file)
@@ -823,6 +823,13 @@ static const struct sa11x0_dma_channel_desc chan_desc[] = {
        CD(Ser4SSPRc, DDAR_RW),
 };
 
+static const struct dma_slave_map sa11x0_dma_map[] = {
+       { "sa11x0-ir", "tx", "Ser2ICPTr" },
+       { "sa11x0-ir", "rx", "Ser2ICPRc" },
+       { "sa11x0-ssp", "tx", "Ser4SSPTr" },
+       { "sa11x0-ssp", "rx", "Ser4SSPRc" },
+};
+
 static int sa11x0_dma_init_dmadev(struct dma_device *dmadev,
        struct device *dev)
 {
@@ -909,6 +916,10 @@ static int sa11x0_dma_probe(struct platform_device *pdev)
        spin_lock_init(&d->lock);
        INIT_LIST_HEAD(&d->chan_pending);
 
+       d->slave.filter.fn = sa11x0_dma_filter_fn;
+       d->slave.filter.mapcnt = ARRAY_SIZE(sa11x0_dma_map);
+       d->slave.filter.map = sa11x0_dma_map;
+
        d->base = ioremap(res->start, resource_size(res));
        if (!d->base) {
                ret = -ENOMEM;