g***@linuxfoundation.org
2014-10-23 06:37:03 UTC
The patch below does not apply to the 3.17-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <***@vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
Date: Thu, 18 Sep 2014 20:08:53 +0300
Subject: [PATCH] spi: dw-mid: terminate ongoing transfers at exit
Do full clean up at exit, means terminate all ongoing DMA transfers.
Signed-off-by: Andy Shevchenko <***@linux.intel.com>
Signed-off-by: Mark Brown <***@kernel.org>
Cc: ***@vger.kernel.org
diff --git a/drivers/spi/spi-dw-mid.c b/drivers/spi/spi-dw-mid.c
index f7f0ad285ae6..ecae30fe28af 100644
--- a/drivers/spi/spi-dw-mid.c
+++ b/drivers/spi/spi-dw-mid.c
@@ -89,7 +89,11 @@ static void mid_spi_dma_exit(struct dw_spi *dws)
{
if (!dws->dma_inited)
return;
+
+ dmaengine_terminate_all(dws->txchan);
dma_release_channel(dws->txchan);
+
+ dmaengine_terminate_all(dws->rxchan);
dma_release_channel(dws->rxchan);
}
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <***@vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 8e45ef682cb31fda62ed4eeede5d9745a0a1b1e2 Mon Sep 17 00:00:00 2001
From: Andy Shevchenko <***@linux.intel.com>Date: Thu, 18 Sep 2014 20:08:53 +0300
Subject: [PATCH] spi: dw-mid: terminate ongoing transfers at exit
Do full clean up at exit, means terminate all ongoing DMA transfers.
Signed-off-by: Andy Shevchenko <***@linux.intel.com>
Signed-off-by: Mark Brown <***@kernel.org>
Cc: ***@vger.kernel.org
diff --git a/drivers/spi/spi-dw-mid.c b/drivers/spi/spi-dw-mid.c
index f7f0ad285ae6..ecae30fe28af 100644
--- a/drivers/spi/spi-dw-mid.c
+++ b/drivers/spi/spi-dw-mid.c
@@ -89,7 +89,11 @@ static void mid_spi_dma_exit(struct dw_spi *dws)
{
if (!dws->dma_inited)
return;
+
+ dmaengine_terminate_all(dws->txchan);
dma_release_channel(dws->txchan);
+
+ dmaengine_terminate_all(dws->rxchan);
dma_release_channel(dws->rxchan);
}