Migrate to using the device managed intreface for clocks and clean up
the associated error paths.

Signed-off-by: Soren Brinkmann <soren.brinkm...@xilinx.com>
---
 drivers/net/ethernet/cadence/macb.c | 32 ++++++++++++++++++++------------
 1 file changed, 20 insertions(+), 12 deletions(-)

diff --git a/drivers/net/ethernet/cadence/macb.c 
b/drivers/net/ethernet/cadence/macb.c
index 389ccf1362d5..62aa136889a4 100644
--- a/drivers/net/ethernet/cadence/macb.c
+++ b/drivers/net/ethernet/cadence/macb.c
@@ -1790,19 +1790,31 @@ static int __init macb_probe(struct platform_device 
*pdev)
        spin_lock_init(&bp->lock);
        INIT_WORK(&bp->tx_error_task, macb_tx_error_task);
 
-       bp->pclk = clk_get(&pdev->dev, "pclk");
+       bp->pclk = devm_clk_get(&pdev->dev, "pclk");
        if (IS_ERR(bp->pclk)) {
-               dev_err(&pdev->dev, "failed to get macb_clk\n");
+               err = PTR_ERR(bp->pclk);
+               dev_err(&pdev->dev, "failed to get macb_clk (%u)\n", err);
                goto err_out_free_dev;
        }
-       clk_prepare_enable(bp->pclk);
 
-       bp->hclk = clk_get(&pdev->dev, "hclk");
+       bp->hclk = devm_clk_get(&pdev->dev, "hclk");
        if (IS_ERR(bp->hclk)) {
-               dev_err(&pdev->dev, "failed to get hclk\n");
-               goto err_out_put_pclk;
+               err = PTR_ERR(bp->hclk);
+               dev_err(&pdev->dev, "failed to get hclk (%u)\n", err);
+               goto err_out_free_dev;
+       }
+
+       err = clk_prepare_enable(bp->pclk);
+       if (err) {
+               dev_err(&pdev->dev, "failed to enable pclk (%u)\n", err);
+               goto err_out_free_dev;
+       }
+
+       err = clk_prepare_enable(bp->hclk);
+       if (err) {
+               dev_err(&pdev->dev, "failed to enable hclk (%u)\n", err);
+               goto err_out_disable_pclk;
        }
-       clk_prepare_enable(bp->hclk);
 
        bp->regs = ioremap(regs->start, resource_size(regs));
        if (!bp->regs) {
@@ -1908,10 +1920,8 @@ err_out_iounmap:
        iounmap(bp->regs);
 err_out_disable_clocks:
        clk_disable_unprepare(bp->hclk);
-       clk_put(bp->hclk);
+err_out_disable_pclk:
        clk_disable_unprepare(bp->pclk);
-err_out_put_pclk:
-       clk_put(bp->pclk);
 err_out_free_dev:
        free_netdev(dev);
 err_out:
@@ -1936,9 +1946,7 @@ static int __exit macb_remove(struct platform_device 
*pdev)
                free_irq(dev->irq, dev);
                iounmap(bp->regs);
                clk_disable_unprepare(bp->hclk);
-               clk_put(bp->hclk);
                clk_disable_unprepare(bp->pclk);
-               clk_put(bp->pclk);
                free_netdev(dev);
        }
 
-- 
1.8.4

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to