By using the dmaengine_get_dma_device() to get the device for
dma_api use, the dmatest can support per channel coherency if it is
supported by the DMA controller.

Signed-off-by: Peter Ujfalusi <peter.ujfal...@ti.com>
---
 drivers/dma/dmatest.c | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/drivers/dma/dmatest.c b/drivers/dma/dmatest.c
index a3a172173e34..f696246f57fd 100644
--- a/drivers/dma/dmatest.c
+++ b/drivers/dma/dmatest.c
@@ -573,6 +573,7 @@ static int dmatest_func(void *data)
        struct dmatest_params   *params;
        struct dma_chan         *chan;
        struct dma_device       *dev;
+       struct device           *dma_dev;
        unsigned int            error_count;
        unsigned int            failed_tests = 0;
        unsigned int            total_tests = 0;
@@ -606,6 +607,8 @@ static int dmatest_func(void *data)
        params = &info->params;
        chan = thread->chan;
        dev = chan->device;
+       dma_dev = dmaengine_get_dma_device(chan);
+
        src = &thread->src;
        dst = &thread->dst;
        if (thread->type == DMA_MEMCPY) {
@@ -730,7 +733,7 @@ static int dmatest_func(void *data)
                        filltime = ktime_add(filltime, diff);
                }
 
-               um = dmaengine_get_unmap_data(dev->dev, src->cnt + dst->cnt,
+               um = dmaengine_get_unmap_data(dma_dev, src->cnt + dst->cnt,
                                              GFP_KERNEL);
                if (!um) {
                        failed_tests++;
@@ -745,10 +748,10 @@ static int dmatest_func(void *data)
                        struct page *pg = virt_to_page(buf);
                        unsigned long pg_off = offset_in_page(buf);
 
-                       um->addr[i] = dma_map_page(dev->dev, pg, pg_off,
+                       um->addr[i] = dma_map_page(dma_dev, pg, pg_off,
                                                   um->len, DMA_TO_DEVICE);
                        srcs[i] = um->addr[i] + src->off;
-                       ret = dma_mapping_error(dev->dev, um->addr[i]);
+                       ret = dma_mapping_error(dma_dev, um->addr[i]);
                        if (ret) {
                                result("src mapping error", total_tests,
                                       src->off, dst->off, len, ret);
@@ -763,9 +766,9 @@ static int dmatest_func(void *data)
                        struct page *pg = virt_to_page(buf);
                        unsigned long pg_off = offset_in_page(buf);
 
-                       dsts[i] = dma_map_page(dev->dev, pg, pg_off, um->len,
+                       dsts[i] = dma_map_page(dma_dev, pg, pg_off, um->len,
                                               DMA_BIDIRECTIONAL);
-                       ret = dma_mapping_error(dev->dev, dsts[i]);
+                       ret = dma_mapping_error(dma_dev, dsts[i]);
                        if (ret) {
                                result("dst mapping error", total_tests,
                                       src->off, dst->off, len, ret);
-- 
Peter

Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki.
Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki

Reply via email to