diff options
author | Wei Yongjun <weiyj.lk@gmail.com> | 2016-08-09 23:17:09 -0400 |
---|---|---|
committer | Vinod Koul <vinod.koul@intel.com> | 2016-08-22 02:22:25 -0400 |
commit | 6a8b0c6b18f62a277ffb2139d0c0253fe35d7feb (patch) | |
tree | 36d9f4f2ac1a62fabbb2fadad1719a6b428caf5d | |
parent | 93e11eb1b745ee8dbd4f98f24b542d496c8f1e03 (diff) |
dmaengine: at_xdmac: fix to pass correct device identity to free_irq()
free_irq() expects the same device identity that was passed to
corresponding request_irq(), otherwise the IRQ is not freed.
Fixes: e1f7c9eee707 ("dmaengine: at_xdmac: creation of the atmel eXtended DMA Controller driver")
Signed-off-by: Wei Yongjun <weiyj.lk@gmail.com>
Acked-by: Ludovic Desroches <ludovic.desroches@atmel.com>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
-rw-r--r-- | drivers/dma/at_xdmac.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/dma/at_xdmac.c b/drivers/dma/at_xdmac.c index e434ffe7bc5c..832cbd647145 100644 --- a/drivers/dma/at_xdmac.c +++ b/drivers/dma/at_xdmac.c | |||
@@ -2067,7 +2067,7 @@ err_dma_unregister: | |||
2067 | err_clk_disable: | 2067 | err_clk_disable: |
2068 | clk_disable_unprepare(atxdmac->clk); | 2068 | clk_disable_unprepare(atxdmac->clk); |
2069 | err_free_irq: | 2069 | err_free_irq: |
2070 | free_irq(atxdmac->irq, atxdmac->dma.dev); | 2070 | free_irq(atxdmac->irq, atxdmac); |
2071 | return ret; | 2071 | return ret; |
2072 | } | 2072 | } |
2073 | 2073 | ||
@@ -2081,7 +2081,7 @@ static int at_xdmac_remove(struct platform_device *pdev) | |||
2081 | dma_async_device_unregister(&atxdmac->dma); | 2081 | dma_async_device_unregister(&atxdmac->dma); |
2082 | clk_disable_unprepare(atxdmac->clk); | 2082 | clk_disable_unprepare(atxdmac->clk); |
2083 | 2083 | ||
2084 | free_irq(atxdmac->irq, atxdmac->dma.dev); | 2084 | free_irq(atxdmac->irq, atxdmac); |
2085 | 2085 | ||
2086 | for (i = 0; i < atxdmac->dma.chancnt; i++) { | 2086 | for (i = 0; i < atxdmac->dma.chancnt; i++) { |
2087 | struct at_xdmac_chan *atchan = &atxdmac->chan[i]; | 2087 | struct at_xdmac_chan *atchan = &atxdmac->chan[i]; |