瀏覽代碼

dmaengine: virt-dma: convert callback to helper function

This is in preperation of moving to a callback that provides results to the
callback for the transaction. The conversion will maintain current behavior
and the driver must convert to new callback mechanism at a later time in
order to receive results.

Signed-off-by: Dave Jiang <dave.jiang@intel.com>
Reviewed-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
Dave Jiang 9 年之前
父節點
當前提交
4f03ac6a2d
共有 1 個文件被更改,包括 7 次插入10 次删除
  1. 7 10
      drivers/dma/virt-dma.c

+ 7 - 10
drivers/dma/virt-dma.c

@@ -87,8 +87,7 @@ static void vchan_complete(unsigned long arg)
 {
 {
 	struct virt_dma_chan *vc = (struct virt_dma_chan *)arg;
 	struct virt_dma_chan *vc = (struct virt_dma_chan *)arg;
 	struct virt_dma_desc *vd;
 	struct virt_dma_desc *vd;
-	dma_async_tx_callback cb = NULL;
-	void *cb_data = NULL;
+	struct dmaengine_desc_callback cb;
 	LIST_HEAD(head);
 	LIST_HEAD(head);
 
 
 	spin_lock_irq(&vc->lock);
 	spin_lock_irq(&vc->lock);
@@ -96,18 +95,17 @@ static void vchan_complete(unsigned long arg)
 	vd = vc->cyclic;
 	vd = vc->cyclic;
 	if (vd) {
 	if (vd) {
 		vc->cyclic = NULL;
 		vc->cyclic = NULL;
-		cb = vd->tx.callback;
-		cb_data = vd->tx.callback_param;
+		dmaengine_desc_get_callback(&vd->tx, &cb);
+	} else {
+		memset(&cb, 0, sizeof(cb));
 	}
 	}
 	spin_unlock_irq(&vc->lock);
 	spin_unlock_irq(&vc->lock);
 
 
-	if (cb)
-		cb(cb_data);
+	dmaengine_desc_callback_invoke(&cb, NULL);
 
 
 	while (!list_empty(&head)) {
 	while (!list_empty(&head)) {
 		vd = list_first_entry(&head, struct virt_dma_desc, node);
 		vd = list_first_entry(&head, struct virt_dma_desc, node);
-		cb = vd->tx.callback;
-		cb_data = vd->tx.callback_param;
+		dmaengine_desc_get_callback(&vd->tx, &cb);
 
 
 		list_del(&vd->node);
 		list_del(&vd->node);
 		if (dmaengine_desc_test_reuse(&vd->tx))
 		if (dmaengine_desc_test_reuse(&vd->tx))
@@ -115,8 +113,7 @@ static void vchan_complete(unsigned long arg)
 		else
 		else
 			vc->desc_free(vd);
 			vc->desc_free(vd);
 
 
-		if (cb)
-			cb(cb_data);
+		dmaengine_desc_callback_invoke(&cb, NULL);
 	}
 	}
 }
 }