]> Pileus Git - ~andy/linux/commitdiff
dmatest: implement two helpers to unmap dma memory
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Mon, 17 Dec 2012 23:59:52 +0000 (15:59 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 18 Dec 2012 01:15:13 +0000 (17:15 -0800)
The unmap_src() and unmap_dst() will be used later as well.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Cc: Vinod Koul <vinod.koul@intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
drivers/dma/dmatest.c

index 24225f0fdcd85f93d5feccae6d935e1563a679fb..6be893baadd9bdf6c82fa2f4d931e7ff905480f1 100644 (file)
@@ -228,6 +228,20 @@ static void dmatest_callback(void *arg)
        wake_up_all(done->wait);
 }
 
+static inline void unmap_src(struct device *dev, dma_addr_t *addr, size_t len,
+                            unsigned int count)
+{
+       while (count--)
+               dma_unmap_single(dev, addr[count], len, DMA_TO_DEVICE);
+}
+
+static inline void unmap_dst(struct device *dev, dma_addr_t *addr, size_t len,
+                            unsigned int count)
+{
+       while (count--)
+               dma_unmap_single(dev, addr[count], len, DMA_BIDIRECTIONAL);
+}
+
 /*
  * This function repeatedly tests DMA transfers of various lengths and
  * offsets for a given operation type until it is told to exit by
@@ -383,13 +397,8 @@ static int dmatest_func(void *data)
                }
 
                if (!tx) {
-                       for (i = 0; i < src_cnt; i++)
-                               dma_unmap_single(dev->dev, dma_srcs[i], len,
-                                                DMA_TO_DEVICE);
-                       for (i = 0; i < dst_cnt; i++)
-                               dma_unmap_single(dev->dev, dma_dsts[i],
-                                                test_buf_size,
-                                                DMA_BIDIRECTIONAL);
+                       unmap_src(dev->dev, dma_srcs, len, src_cnt);
+                       unmap_dst(dev->dev, dma_dsts, test_buf_size, dst_cnt);
                        pr_warning("%s: #%u: prep error with src_off=0x%x "
                                        "dst_off=0x%x len=0x%x\n",
                                        thread_name, total_tests - 1,
@@ -443,9 +452,7 @@ static int dmatest_func(void *data)
                }
 
                /* Unmap by myself (see DMA_COMPL_SKIP_DEST_UNMAP above) */
-               for (i = 0; i < dst_cnt; i++)
-                       dma_unmap_single(dev->dev, dma_dsts[i], test_buf_size,
-                                        DMA_BIDIRECTIONAL);
+               unmap_dst(dev->dev, dma_dsts, test_buf_size, dst_cnt);
 
                error_count = 0;