dmaengine: virt-dma: Add helper to free/reuse a descriptor
authorPeter Ujfalusi <peter.ujfalusi@ti.com>
Tue, 14 Nov 2017 14:32:03 +0000 (16:32 +0200)
committerVinod Koul <vinod.koul@intel.com>
Mon, 4 Dec 2017 17:03:51 +0000 (22:33 +0530)
The vchan_vdesc_fini() can be used to free or reuse a given descriptor
after it has been marked as completed.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
drivers/dma/virt-dma.c
drivers/dma/virt-dma.h

index 545e972..88ad8ed 100644 (file)
@@ -107,10 +107,7 @@ static void vchan_complete(unsigned long arg)
                dmaengine_desc_get_callback(&vd->tx, &cb);
 
                list_del(&vd->node);
-               if (dmaengine_desc_test_reuse(&vd->tx))
-                       list_add(&vd->node, &vc->desc_allocated);
-               else
-                       vc->desc_free(vd);
+               vchan_vdesc_fini(vd);
 
                dmaengine_desc_callback_invoke(&cb, NULL);
        }
index 3f776a4..2edb055 100644 (file)
@@ -103,6 +103,20 @@ static inline void vchan_cookie_complete(struct virt_dma_desc *vd)
        tasklet_schedule(&vc->task);
 }
 
+/**
+ * vchan_vdesc_fini - Free or reuse a descriptor
+ * @vd: virtual descriptor to free/reuse
+ */
+static inline void vchan_vdesc_fini(struct virt_dma_desc *vd)
+{
+       struct virt_dma_chan *vc = to_virt_chan(vd->tx.chan);
+
+       if (dmaengine_desc_test_reuse(&vd->tx))
+               list_add(&vd->node, &vc->desc_allocated);
+       else
+               vc->desc_free(vd);
+}
+
 /**
  * vchan_cyclic_callback - report the completion of a period
  * @vd: virtual descriptor