dmaengine: fsl-edma: implement .device_synchronize callback
authorAndrey Smirnov <andrew.smirnov@gmail.com>
Wed, 31 Jul 2019 17:36:59 +0000 (10:36 -0700)
committerVinod Koul <vkoul@kernel.org>
Thu, 8 Aug 2019 13:31:58 +0000 (19:01 +0530)
Implement .device_synchronize callback in order to be able to use
dmaengine_terminate_sync() and other primitives relying on said
callback.

Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>
Cc: Stefan Agner <stefan@agner.ch>
Cc: Chris Healy <cphealy@gmail.com>
Cc: Vinod Koul <vkoul@kernel.org>
Cc: linux-imx@nxp.com
Cc: dmaengine@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Link: https://lore.kernel.org/r/20190731173659.14778-1-andrew.smirnov@gmail.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/dma/fsl-edma.c

index dfce75c..b626c06 100644 (file)
 
 #include "fsl-edma-common.h"
 
+static void fsl_edma_synchronize(struct dma_chan *chan)
+{
+       struct fsl_edma_chan *fsl_chan = to_fsl_edma_chan(chan);
+
+       vchan_synchronize(&fsl_chan->vchan);
+}
+
 static irqreturn_t fsl_edma_tx_handler(int irq, void *dev_id)
 {
        struct fsl_edma_engine *fsl_edma = dev_id;
@@ -363,6 +370,7 @@ static int fsl_edma_probe(struct platform_device *pdev)
        fsl_edma->dma_dev.device_pause = fsl_edma_pause;
        fsl_edma->dma_dev.device_resume = fsl_edma_resume;
        fsl_edma->dma_dev.device_terminate_all = fsl_edma_terminate_all;
+       fsl_edma->dma_dev.device_synchronize = fsl_edma_synchronize;
        fsl_edma->dma_dev.device_issue_pending = fsl_edma_issue_pending;
 
        fsl_edma->dma_dev.src_addr_widths = FSL_EDMA_BUSWIDTHS;