dmaengine: dmatest: Use dmaengine_get_dma_device
authorPeter Ujfalusi <peter.ujfalusi@ti.com>
Tue, 8 Dec 2020 09:04:30 +0000 (11:04 +0200)
committerVinod Koul <vkoul@kernel.org>
Fri, 11 Dec 2020 15:50:08 +0000 (21:20 +0530)
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.ujfalusi@ti.com>
Link: https://lore.kernel.org/r/20201208090440.31792-11-peter.ujfalusi@ti.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/dma/dmatest.c

index a3a1721..f696246 100644 (file)
@@ -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);