dmaengine: mmp_pdma: convert callback to helper function
authorDave Jiang <dave.jiang@intel.com>
Wed, 20 Jul 2016 20:11:56 +0000 (13:11 -0700)
committerVinod Koul <vinod.koul@intel.com>
Mon, 8 Aug 2016 02:41:39 +0000 (08:11 +0530)
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>
drivers/dma/mmp_pdma.c

index f4b25fb0d0402668bafad206b4576bcf808005cb..eb3a1f42ab065793fbd4c30197b7cbc2300ec7f7 100644 (file)
@@ -864,19 +864,15 @@ static void dma_do_tasklet(unsigned long data)
        struct mmp_pdma_desc_sw *desc, *_desc;
        LIST_HEAD(chain_cleanup);
        unsigned long flags;
+       struct dmaengine_desc_callback cb;
 
        if (chan->cyclic_first) {
-               dma_async_tx_callback cb = NULL;
-               void *cb_data = NULL;
-
                spin_lock_irqsave(&chan->desc_lock, flags);
                desc = chan->cyclic_first;
-               cb = desc->async_tx.callback;
-               cb_data = desc->async_tx.callback_param;
+               dmaengine_desc_get_callback(&desc->async_tx, &cb);
                spin_unlock_irqrestore(&chan->desc_lock, flags);
 
-               if (cb)
-                       cb(cb_data);
+               dmaengine_desc_callback_invoke(&cb, NULL);
 
                return;
        }
@@ -921,8 +917,8 @@ static void dma_do_tasklet(unsigned long data)
                /* Remove from the list of transactions */
                list_del(&desc->node);
                /* Run the link descriptor callback function */
-               if (txd->callback)
-                       txd->callback(txd->callback_param);
+               dmaengine_desc_get_callback(txd, &cb);
+               dmaengine_desc_callback_invoke(&cb, NULL);
 
                dma_pool_free(chan->desc_pool, desc, txd->phys);
        }