ata: pata_imx: Use helper function devm_clk_get_enabled()
authorLi Zetao <lizetao1@huawei.com>
Tue, 15 Aug 2023 15:13:52 +0000 (23:13 +0800)
committerDamien Le Moal <dlemoal@kernel.org>
Wed, 16 Aug 2023 22:45:32 +0000 (07:45 +0900)
After the commit 7ef9651e9792 ("clk: Provide new devm_clk helpers for
prepared and enabled clocks"), the pair of functions devm_clk_get() and
clk_prepare_enable() can be replaced with the single function
devm_clk_get_enabled(). Moreover, the driver will keep the clock
prepared (or enabled) during the whole lifetime of the device, so it is
unnecessary to unprepare and disable the clock explicitly when removing
the device or in the error handling path.

Signed-off-by: Li Zetao <lizetao1@huawei.com>
Reviewed-by: Sergey Shtylyov <s.shtylyov@omp.ru>
Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
drivers/ata/pata_imx.c

index 91da7ecec0fc0d6500277fb58c73f3ac44f4c95e..d0aa8fc929b4508b5d6d3f6a9e93f87e5e9fe72d 100644 (file)
@@ -141,21 +141,15 @@ static int pata_imx_probe(struct platform_device *pdev)
        if (!priv)
                return -ENOMEM;
 
-       priv->clk = devm_clk_get(&pdev->dev, NULL);
+       priv->clk = devm_clk_get_enabled(&pdev->dev, NULL);
        if (IS_ERR(priv->clk)) {
-               dev_err(&pdev->dev, "Failed to get clock\n");
+               dev_err(&pdev->dev, "Failed to get and enable clock\n");
                return PTR_ERR(priv->clk);
        }
 
-       ret = clk_prepare_enable(priv->clk);
-       if (ret)
-               return ret;
-
        host = ata_host_alloc(&pdev->dev, 1);
-       if (!host) {
-               ret = -ENOMEM;
-               goto err;
-       }
+       if (!host)
+               return -ENOMEM;
 
        host->private_data = priv;
        ap = host->ports[0];
@@ -165,10 +159,8 @@ static int pata_imx_probe(struct platform_device *pdev)
        ap->flags |= ATA_FLAG_SLAVE_POSS;
 
        priv->host_regs = devm_platform_get_and_ioremap_resource(pdev, 0, &io_res);
-       if (IS_ERR(priv->host_regs)) {
-               ret = PTR_ERR(priv->host_regs);
-               goto err;
-       }
+       if (IS_ERR(priv->host_regs))
+               return PTR_ERR(priv->host_regs);
 
        ap->ioaddr.cmd_addr = priv->host_regs + PATA_IMX_DRIVE_DATA;
        ap->ioaddr.ctl_addr = priv->host_regs + PATA_IMX_DRIVE_CONTROL;
@@ -194,13 +186,9 @@ static int pata_imx_probe(struct platform_device *pdev)
                                &pata_imx_sht);
 
        if (ret)
-               goto err;
+               return ret;
 
        return 0;
-err:
-       clk_disable_unprepare(priv->clk);
-
-       return ret;
 }
 
 static void pata_imx_remove(struct platform_device *pdev)
@@ -211,8 +199,6 @@ static void pata_imx_remove(struct platform_device *pdev)
        ata_host_detach(host);
 
        __raw_writel(0, priv->host_regs + PATA_IMX_ATA_INT_EN);
-
-       clk_disable_unprepare(priv->clk);
 }
 
 #ifdef CONFIG_PM_SLEEP