From: Viresh Kumar Date: Wed, 10 Aug 2011 08:50:58 +0000 (+0530) Subject: spi/spi-pl022: Call pl022_dma_remove(pl022) only if enable_dma is true X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=3e3ea716270dc64810f624ad6a3672440b45d3d4;p=mv-sheeva.git spi/spi-pl022: Call pl022_dma_remove(pl022) only if enable_dma is true pl022_dma_remove() should be called only if enable_dma is true. There is no point calling it when pl022_dma_probe() is not called, which again depends on enable_dma. Signed-off-by: Viresh Kumar Tested-by: Linus Walleij Signed-off-by: Grant Likely --- diff --git a/drivers/spi/spi-pl022.c b/drivers/spi/spi-pl022.c index 4e1a1e3b2a8..c828dc607d9 100644 --- a/drivers/spi/spi-pl022.c +++ b/drivers/spi/spi-pl022.c @@ -2237,7 +2237,9 @@ pl022_probe(struct amba_device *adev, const struct amba_id *id) err_start_queue: err_init_queue: destroy_queue(pl022); - pl022_dma_remove(pl022); + if (platform_info->enable_dma) + pl022_dma_remove(pl022); + free_irq(adev->irq[0], pl022); pm_runtime_disable(&adev->dev); err_no_irq: @@ -2265,7 +2267,9 @@ pl022_remove(struct amba_device *adev) if (destroy_queue(pl022) != 0) dev_err(&adev->dev, "queue remove failed\n"); load_ssp_default_config(pl022); - pl022_dma_remove(pl022); + if (pl022->master_info->enable_dma) + pl022_dma_remove(pl022); + free_irq(adev->irq[0], pl022); clk_disable(pl022->clk); clk_put(pl022->clk);