summaryrefslogtreecommitdiffstats
path: root/drivers/dma
diff options
context:
space:
mode:
authorVinod Koul2016-07-05 06:28:33 +0200
committerVinod Koul2016-07-16 16:49:05 +0200
commit898dbbf65f1d041d5c1b29a0880286e26fac5076 (patch)
tree8765e3a8ec011d76cc7df4dd2de5680b1d36c520 /drivers/dma
parentdmaengine: mpc512x: kill the tasklets upon exit (diff)
downloadkernel-qcow2-linux-898dbbf65f1d041d5c1b29a0880286e26fac5076.tar.gz
kernel-qcow2-linux-898dbbf65f1d041d5c1b29a0880286e26fac5076.tar.xz
kernel-qcow2-linux-898dbbf65f1d041d5c1b29a0880286e26fac5076.zip
dmaengine: omap-dma: explicitly freeup irq
dmaengine device should explicitly call devm_free_irq() when using devm_request_irq(). The irq is still ON when devices remove is executed and irq should be quiesced before remove is completed. Signed-off-by: Vinod Koul <vinod.koul@intel.com> Acked-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Diffstat (limited to 'drivers/dma')
-rw-r--r--drivers/dma/omap-dma.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/dma/omap-dma.c b/drivers/dma/omap-dma.c
index 1e984e18c126..5ff52998172a 100644
--- a/drivers/dma/omap-dma.c
+++ b/drivers/dma/omap-dma.c
@@ -1204,10 +1204,14 @@ static int omap_dma_probe(struct platform_device *pdev)
static int omap_dma_remove(struct platform_device *pdev)
{
struct omap_dmadev *od = platform_get_drvdata(pdev);
+ int irq;
if (pdev->dev.of_node)
of_dma_controller_free(pdev->dev.of_node);
+ irq = platform_get_irq(pdev, 1);
+ devm_free_irq(&pdev->dev, irq, od);
+
dma_async_device_unregister(&od->ddev);
if (!od->legacy) {