aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/dma/dma-jz4780.c
diff options
context:
space:
mode:
authorAlex Smith <alex.smith@imgtec.com>2015-07-24 12:24:26 -0400
committerVinod Koul <vinod.koul@intel.com>2015-08-18 12:58:50 -0400
commitd509a83cea8a64478c7899f28e961543b6569cfc (patch)
tree1e56568240c884e391b9a9921c881fbb95b3560c /drivers/dma/dma-jz4780.c
parentd3597236fd30d76bef4ba8b4713013006842f117 (diff)
dmaengine: jz4780: Don't use devm_*_irq() functions
We must explicitly free the IRQ before the device is unregistered in case any device interrupt still occurs, so there's no point in using the managed variations of the IRQ functions. Change to the regular versions. Signed-off-by: Alex Smith <alex.smith@imgtec.com> Cc: Vinod Koul <vinod.koul@intel.com> Cc: Zubair Lutfullah Kakakhel <Zubair.Kakakhel@imgtec.com> Cc: dmaengine@vger.kernel.org Signed-off-by: Vinod Koul <vinod.koul@intel.com>
Diffstat (limited to 'drivers/dma/dma-jz4780.c')
-rw-r--r--drivers/dma/dma-jz4780.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/drivers/dma/dma-jz4780.c b/drivers/dma/dma-jz4780.c
index 572e07e4b42d..d6cae6cb5b7a 100644
--- a/drivers/dma/dma-jz4780.c
+++ b/drivers/dma/dma-jz4780.c
@@ -774,8 +774,8 @@ static int jz4780_dma_probe(struct platform_device *pdev)
774 774
775 jzdma->irq = ret; 775 jzdma->irq = ret;
776 776
777 ret = devm_request_irq(dev, jzdma->irq, jz4780_dma_irq_handler, 0, 777 ret = request_irq(jzdma->irq, jz4780_dma_irq_handler, 0, dev_name(dev),
778 dev_name(dev), jzdma); 778 jzdma);
779 if (ret) { 779 if (ret) {
780 dev_err(dev, "failed to request IRQ %u!\n", jzdma->irq); 780 dev_err(dev, "failed to request IRQ %u!\n", jzdma->irq);
781 return ret; 781 return ret;
@@ -784,7 +784,8 @@ static int jz4780_dma_probe(struct platform_device *pdev)
784 jzdma->clk = devm_clk_get(dev, NULL); 784 jzdma->clk = devm_clk_get(dev, NULL);
785 if (IS_ERR(jzdma->clk)) { 785 if (IS_ERR(jzdma->clk)) {
786 dev_err(dev, "failed to get clock\n"); 786 dev_err(dev, "failed to get clock\n");
787 return PTR_ERR(jzdma->clk); 787 ret = PTR_ERR(jzdma->clk);
788 goto err_free_irq;
788 } 789 }
789 790
790 clk_prepare_enable(jzdma->clk); 791 clk_prepare_enable(jzdma->clk);
@@ -856,6 +857,9 @@ err_unregister_dev:
856 857
857err_disable_clk: 858err_disable_clk:
858 clk_disable_unprepare(jzdma->clk); 859 clk_disable_unprepare(jzdma->clk);
860
861err_free_irq:
862 free_irq(jzdma->irq, jzdma);
859 return ret; 863 return ret;
860} 864}
861 865
@@ -864,7 +868,7 @@ static int jz4780_dma_remove(struct platform_device *pdev)
864 struct jz4780_dma_dev *jzdma = platform_get_drvdata(pdev); 868 struct jz4780_dma_dev *jzdma = platform_get_drvdata(pdev);
865 869
866 of_dma_controller_free(pdev->dev.of_node); 870 of_dma_controller_free(pdev->dev.of_node);
867 devm_free_irq(&pdev->dev, jzdma->irq, jzdma); 871 free_irq(jzdma->irq, jzdma);
868 dma_async_device_unregister(&jzdma->dma_device); 872 dma_async_device_unregister(&jzdma->dma_device);
869 return 0; 873 return 0;
870} 874}