ramips: mt7621_nand: use clk_get_optional_enabled
authorRosen Penev <rosenp@gmail.com>
Sun, 11 Aug 2024 01:05:28 +0000 (18:05 -0700)
committerRobert Marko <robimarko@gmail.com>
Mon, 12 Aug 2024 17:40:48 +0000 (19:40 +0200)
Simplifies the code by removing clk_disable_unprepare.

Also removed gotos and used dev_err_probe.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/16133
Signed-off-by: Robert Marko <robimarko@gmail.com>
target/linux/ramips/files/drivers/mtd/nand/raw/mt7621_nand.c

index 89cc7e2624af089bc76aad99bf2120377f1ff94e..880c8578bd608a9f6ce50b86077e1ff09ebe8497 100644 (file)
@@ -1290,44 +1290,28 @@ static int mt7621_nfc_probe(struct platform_device *pdev)
        res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "nfi");
        nfc->nfi_base = res->start;
        nfc->nfi_regs = devm_ioremap_resource(dev, res);
-       if (IS_ERR(nfc->nfi_regs)) {
-               ret = PTR_ERR(nfc->nfi_regs);
-               return ret;
-       }
+       if (IS_ERR(nfc->nfi_regs))
+               return PTR_ERR(nfc->nfi_regs);
 
        res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "ecc");
        nfc->ecc_regs = devm_ioremap_resource(dev, res);
-       if (IS_ERR(nfc->ecc_regs)) {
-               ret = PTR_ERR(nfc->ecc_regs);
-               return ret;
-       }
+       if (IS_ERR(nfc->ecc_regs))
+               return PTR_ERR(nfc->ecc_regs);
 
-       nfc->nfi_clk = devm_clk_get(dev, "nfi_clk");
-       if (IS_ERR(nfc->nfi_clk)) {
+       nfc->nfi_clk = devm_clk_get_optional_enabled(dev, "nfi_clk");
+       if (IS_ERR(nfc->nfi_clk))
+               return PTR_ERR(nfc->nfi_clk);
+
+       if (!nfc->nfi_clk)
                dev_warn(dev, "nfi clk not provided\n");
-               nfc->nfi_clk = NULL;
-       } else {
-               ret = clk_prepare_enable(nfc->nfi_clk);
-               if (ret) {
-                       dev_err(dev, "Failed to enable nfi core clock\n");
-                       return ret;
-               }
-       }
 
        platform_set_drvdata(pdev, nfc);
 
        ret = mt7621_nfc_init_chip(nfc);
-       if (ret) {
-               dev_err(dev, "Failed to initialize nand chip\n");
-               goto clk_disable;
-       }
+       if (ret)
+               return dev_err_probe(dev, ret, "Failed to initialize nand chip\n");
 
        return 0;
-
-clk_disable:
-       clk_disable_unprepare(nfc->nfi_clk);
-
-       return ret;
 }
 
 static int mt7621_nfc_remove(struct platform_device *pdev)
@@ -1339,7 +1323,6 @@ static int mt7621_nfc_remove(struct platform_device *pdev)
        mtk_bmt_detach(mtd);
        mtd_device_unregister(mtd);
        nand_cleanup(nand);
-       clk_disable_unprepare(nfc->nfi_clk);
 
        return 0;
 }