Sfoglia il codice sorgente

dmaengine: sh_rcar-dmac: 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 anni fa
parent
commit
964b2fd88b
1 ha cambiato i file con 7 aggiunte e 9 eliminazioni
  1. 7 9
      drivers/dma/sh/rcar-dmac.c

+ 7 - 9
drivers/dma/sh/rcar-dmac.c

@@ -1389,21 +1389,18 @@ static irqreturn_t rcar_dmac_isr_channel_thread(int irq, void *dev)
 {
 {
 	struct rcar_dmac_chan *chan = dev;
 	struct rcar_dmac_chan *chan = dev;
 	struct rcar_dmac_desc *desc;
 	struct rcar_dmac_desc *desc;
+	struct dmaengine_desc_callback cb;
 
 
 	spin_lock_irq(&chan->lock);
 	spin_lock_irq(&chan->lock);
 
 
 	/* For cyclic transfers notify the user after every chunk. */
 	/* For cyclic transfers notify the user after every chunk. */
 	if (chan->desc.running && chan->desc.running->cyclic) {
 	if (chan->desc.running && chan->desc.running->cyclic) {
-		dma_async_tx_callback callback;
-		void *callback_param;
-
 		desc = chan->desc.running;
 		desc = chan->desc.running;
-		callback = desc->async_tx.callback;
-		callback_param = desc->async_tx.callback_param;
+		dmaengine_desc_get_callback(&desc->async_tx, &cb);
 
 
-		if (callback) {
+		if (dmaengine_desc_callback_valid(&cb)) {
 			spin_unlock_irq(&chan->lock);
 			spin_unlock_irq(&chan->lock);
-			callback(callback_param);
+			dmaengine_desc_callback_invoke(&cb, NULL);
 			spin_lock_irq(&chan->lock);
 			spin_lock_irq(&chan->lock);
 		}
 		}
 	}
 	}
@@ -1418,14 +1415,15 @@ static irqreturn_t rcar_dmac_isr_channel_thread(int irq, void *dev)
 		dma_cookie_complete(&desc->async_tx);
 		dma_cookie_complete(&desc->async_tx);
 		list_del(&desc->node);
 		list_del(&desc->node);
 
 
-		if (desc->async_tx.callback) {
+		dmaengine_desc_get_callback(&desc->async_tx, &cb);
+		if (dmaengine_desc_callback_valid(&cb)) {
 			spin_unlock_irq(&chan->lock);
 			spin_unlock_irq(&chan->lock);
 			/*
 			/*
 			 * We own the only reference to this descriptor, we can
 			 * We own the only reference to this descriptor, we can
 			 * safely dereference it without holding the channel
 			 * safely dereference it without holding the channel
 			 * lock.
 			 * lock.
 			 */
 			 */
-			desc->async_tx.callback(desc->async_tx.callback_param);
+			dmaengine_desc_callback_invoke(&cb, NULL);
 			spin_lock_irq(&chan->lock);
 			spin_lock_irq(&chan->lock);
 		}
 		}