dmaengine: add helper function for slave_single
authorVinod Koul <vinod.koul@intel.com>
Mon, 25 Jul 2011 14:27:52 +0000 (19:57 +0530)
committerVinod Koul <vinod.koul@intel.com>
Mon, 8 Aug 2011 11:18:14 +0000 (16:48 +0530)
For clients which require a single slave transfer and dont want to be bothered
about the scatterlist api, this helper gives simple API for this transfer and
creates single scatterlist for DMA API

Idea from Russell King

Signed-off-by: Vinod Koul <vinod.koul@intel.com>
include/linux/dmaengine.h

index 8fbf40e0713cfc9a4dd7ec64bc66010a42afc644..0d738c95fe4e7eaf5111e7f69f8a276ff5d8a1e8 100644 (file)
@@ -24,6 +24,7 @@
 #include <linux/device.h>
 #include <linux/uio.h>
 #include <linux/dma-direction.h>
+#include <linux/scatterlist.h>
 
 struct scatterlist;
 
@@ -519,6 +520,16 @@ static inline int dmaengine_slave_config(struct dma_chan *chan,
                        (unsigned long)config);
 }
 
+static inline struct dma_async_tx_descriptor *dmaengine_prep_slave_single(
+       struct dma_chan *chan, void *buf, size_t len,
+       enum dma_data_direction dir, unsigned long flags)
+{
+       struct scatterlist sg;
+       sg_init_one(&sg, buf, len);
+
+       return chan->device->device_prep_slave_sg(chan, &sg, 1, dir, flags);
+}
+
 static inline int dmaengine_terminate_all(struct dma_chan *chan)
 {
        return dmaengine_device_control(chan, DMA_TERMINATE_ALL, 0);