mmc: sdhi/tmio: make DMA filter implementation specific

So far only the SDHI implementation uses TMIO MMC with DMA. That way a DMA
channel filter function, defined in the TMIO driver wasn't a problem.
However, such a filter function is DMA controller specific. Since the SDHI
glue is only running on systems with the SHDMA DMA controller, the filter
function can safely be provided by it. Move it into SDHI.

Signed-off-by: Guennadi Liakhovetski <g.liakhovetski+renesas@gmail.com>
Acked-by: Samuel Ortiz <sameo@linux.intel.com>
Signed-off-by: Chris Ball <cjb@laptop.org>
This commit is contained in:
Guennadi Liakhovetski
2013-04-26 17:47:17 +02:00
zatwierdzone przez Chris Ball
rodzic fc79a4d6df
commit 03a0675b2a
3 zmienionych plików z 14 dodań i 10 usunięć

Wyświetl plik

@@ -20,6 +20,7 @@
#include <linux/kernel.h>
#include <linux/clk.h>
#include <linux/dmaengine.h>
#include <linux/slab.h>
#include <linux/mod_devicetable.h>
#include <linux/module.h>
@@ -124,6 +125,13 @@ static void sh_mobile_sdhi_cd_wakeup(const struct platform_device *pdev)
mmc_detect_change(dev_get_drvdata(&pdev->dev), msecs_to_jiffies(100));
}
static bool sh_mobile_sdhi_filter(struct dma_chan *chan, void *arg)
{
dev_dbg(chan->device->dev, "%s: slave data %p\n", __func__, arg);
chan->private = arg;
return true;
}
static const struct sh_mobile_sdhi_ops sdhi_ops = {
.cd_wakeup = sh_mobile_sdhi_cd_wakeup,
};
@@ -191,6 +199,7 @@ static int sh_mobile_sdhi_probe(struct platform_device *pdev)
priv->dma_priv.chan_priv_tx = &priv->param_tx.shdma_slave;
priv->dma_priv.chan_priv_rx = &priv->param_rx.shdma_slave;
priv->dma_priv.alignment_shift = 1; /* 2-byte alignment */
priv->dma_priv.filter = sh_mobile_sdhi_filter;
mmc_data->dma = &priv->dma_priv;
}
}