|
@@ -1460,7 +1460,9 @@ static int __init at_dma_probe(struct platform_device *pdev)
|
|
|
err = PTR_ERR(atdma->clk);
|
|
|
goto err_clk;
|
|
|
}
|
|
|
- clk_enable(atdma->clk);
|
|
|
+ err = clk_prepare_enable(atdma->clk);
|
|
|
+ if (err)
|
|
|
+ goto err_clk_prepare;
|
|
|
|
|
|
/* force dma off, just in case */
|
|
|
at_dma_off(atdma);
|
|
@@ -1560,7 +1562,8 @@ err_of_dma_controller_register:
|
|
|
err_pool_create:
|
|
|
free_irq(platform_get_irq(pdev, 0), atdma);
|
|
|
err_irq:
|
|
|
- clk_disable(atdma->clk);
|
|
|
+ clk_disable_unprepare(atdma->clk);
|
|
|
+err_clk_prepare:
|
|
|
clk_put(atdma->clk);
|
|
|
err_clk:
|
|
|
iounmap(atdma->regs);
|
|
@@ -1596,7 +1599,7 @@ static int at_dma_remove(struct platform_device *pdev)
|
|
|
list_del(&chan->device_node);
|
|
|
}
|
|
|
|
|
|
- clk_disable(atdma->clk);
|
|
|
+ clk_disable_unprepare(atdma->clk);
|
|
|
clk_put(atdma->clk);
|
|
|
|
|
|
iounmap(atdma->regs);
|
|
@@ -1615,7 +1618,7 @@ static void at_dma_shutdown(struct platform_device *pdev)
|
|
|
struct at_dma *atdma = platform_get_drvdata(pdev);
|
|
|
|
|
|
at_dma_off(platform_get_drvdata(pdev));
|
|
|
- clk_disable(atdma->clk);
|
|
|
+ clk_disable_unprepare(atdma->clk);
|
|
|
}
|
|
|
|
|
|
static int at_dma_prepare(struct device *dev)
|
|
@@ -1672,7 +1675,7 @@ static int at_dma_suspend_noirq(struct device *dev)
|
|
|
|
|
|
/* disable DMA controller */
|
|
|
at_dma_off(atdma);
|
|
|
- clk_disable(atdma->clk);
|
|
|
+ clk_disable_unprepare(atdma->clk);
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
@@ -1702,7 +1705,7 @@ static int at_dma_resume_noirq(struct device *dev)
|
|
|
struct dma_chan *chan, *_chan;
|
|
|
|
|
|
/* bring back DMA controller */
|
|
|
- clk_enable(atdma->clk);
|
|
|
+ clk_prepare_enable(atdma->clk);
|
|
|
dma_writel(atdma, EN, AT_DMA_ENABLE);
|
|
|
|
|
|
/* clear any pending interrupt */
|