]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
mtd: rawnand: denali: Use the devm_clk_get_enabled() helper function
authorJinjie Ruan <ruanjinjie@huawei.com>
Mon, 26 Aug 2024 08:04:08 +0000 (16:04 +0800)
committerMiquel Raynal <miquel.raynal@bootlin.com>
Fri, 6 Sep 2024 14:59:39 +0000 (16:59 +0200)
The devm_clk_get_enabled() helper:
  - calls devm_clk_get()
  - calls clk_prepare_enable() and registers what is needed in order to
    call clk_disable_unprepare() when needed, as a managed resource.

This simplifies the code.

Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Link: https://lore.kernel.org/linux-mtd/20240826080408.2522978-1-ruanjinjie@huawei.com
drivers/mtd/nand/raw/denali_dt.c

index edac8749bb9391adcea02e285cc2cc3ee9601e7e..2f5666511fda8d944cc42c24bb1a41f825223d14 100644 (file)
@@ -145,15 +145,15 @@ static int denali_dt_probe(struct platform_device *pdev)
        if (IS_ERR(denali->host))
                return PTR_ERR(denali->host);
 
-       dt->clk = devm_clk_get(dev, "nand");
+       dt->clk = devm_clk_get_enabled(dev, "nand");
        if (IS_ERR(dt->clk))
                return PTR_ERR(dt->clk);
 
-       dt->clk_x = devm_clk_get(dev, "nand_x");
+       dt->clk_x = devm_clk_get_enabled(dev, "nand_x");
        if (IS_ERR(dt->clk_x))
                return PTR_ERR(dt->clk_x);
 
-       dt->clk_ecc = devm_clk_get(dev, "ecc");
+       dt->clk_ecc = devm_clk_get_enabled(dev, "ecc");
        if (IS_ERR(dt->clk_ecc))
                return PTR_ERR(dt->clk_ecc);
 
@@ -165,18 +165,6 @@ static int denali_dt_probe(struct platform_device *pdev)
        if (IS_ERR(dt->rst_reg))
                return PTR_ERR(dt->rst_reg);
 
-       ret = clk_prepare_enable(dt->clk);
-       if (ret)
-               return ret;
-
-       ret = clk_prepare_enable(dt->clk_x);
-       if (ret)
-               goto out_disable_clk;
-
-       ret = clk_prepare_enable(dt->clk_ecc);
-       if (ret)
-               goto out_disable_clk_x;
-
        denali->clk_rate = clk_get_rate(dt->clk);
        denali->clk_x_rate = clk_get_rate(dt->clk_x);
 
@@ -187,7 +175,7 @@ static int denali_dt_probe(struct platform_device *pdev)
         */
        ret = reset_control_deassert(dt->rst_reg);
        if (ret)
-               goto out_disable_clk_ecc;
+               return ret;
 
        ret = reset_control_deassert(dt->rst);
        if (ret)
@@ -222,12 +210,6 @@ out_assert_rst:
        reset_control_assert(dt->rst);
 out_assert_rst_reg:
        reset_control_assert(dt->rst_reg);
-out_disable_clk_ecc:
-       clk_disable_unprepare(dt->clk_ecc);
-out_disable_clk_x:
-       clk_disable_unprepare(dt->clk_x);
-out_disable_clk:
-       clk_disable_unprepare(dt->clk);
 
        return ret;
 }
@@ -239,9 +221,6 @@ static void denali_dt_remove(struct platform_device *pdev)
        denali_remove(&dt->controller);
        reset_control_assert(dt->rst);
        reset_control_assert(dt->rst_reg);
-       clk_disable_unprepare(dt->clk_ecc);
-       clk_disable_unprepare(dt->clk_x);
-       clk_disable_unprepare(dt->clk);
 }
 
 static struct platform_driver denali_dt_driver = {