]> git.karo-electronics.de Git - linux-beck.git/commitdiff
dmaengine: ipu: convert callback to helper function
authorDave Jiang <dave.jiang@intel.com>
Wed, 20 Jul 2016 20:11:45 +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/ipu/ipu_idmac.c

index b54f62de92323ed52e53b384860eafd5f788ab28..ed76044ce4b92a41bccfd0169df7df66b58841ca 100644 (file)
@@ -1160,11 +1160,10 @@ static irqreturn_t idmac_interrupt(int irq, void *dev_id)
        struct scatterlist **sg, *sgnext, *sgnew = NULL;
        /* Next transfer descriptor */
        struct idmac_tx_desc *desc, *descnew;
-       dma_async_tx_callback callback;
-       void *callback_param;
        bool done = false;
        u32 ready0, ready1, curbuf, err;
        unsigned long flags;
+       struct dmaengine_desc_callback cb;
 
        /* IDMAC has cleared the respective BUFx_RDY bit, we manage the buffer */
 
@@ -1278,12 +1277,12 @@ static irqreturn_t idmac_interrupt(int irq, void *dev_id)
 
        if (likely(sgnew) &&
            ipu_submit_buffer(ichan, descnew, sgnew, ichan->active_buffer) < 0) {
-               callback = descnew->txd.callback;
-               callback_param = descnew->txd.callback_param;
+               dmaengine_desc_get_callback(&descnew->txd, &cb);
+
                list_del_init(&descnew->list);
                spin_unlock(&ichan->lock);
-               if (callback)
-                       callback(callback_param);
+
+               dmaengine_desc_callback_invoke(&cb, NULL);
                spin_lock(&ichan->lock);
        }
 
@@ -1292,13 +1291,12 @@ static irqreturn_t idmac_interrupt(int irq, void *dev_id)
        if (done)
                dma_cookie_complete(&desc->txd);
 
-       callback = desc->txd.callback;
-       callback_param = desc->txd.callback_param;
+       dmaengine_desc_get_callback(&desc->txd, &cb);
 
        spin_unlock(&ichan->lock);
 
-       if (done && (desc->txd.flags & DMA_PREP_INTERRUPT) && callback)
-               callback(callback_param);
+       if (done && (desc->txd.flags & DMA_PREP_INTERRUPT))
+               dmaengine_desc_callback_invoke(&cb, NULL);
 
        return IRQ_HANDLED;
 }