mtd: rawnand: marvell: set reg_clk to NULL if it can't be obtained
authorDaniel Mack <daniel@zonque.org>
Sun, 8 Jul 2018 00:10:08 +0000 (02:10 +0200)
committerMiquel Raynal <miquel.raynal@bootlin.com>
Wed, 18 Jul 2018 08:10:15 +0000 (10:10 +0200)
Don't keep an error-pointer around in the private struct. If this optional
clock can't be obtained, simply set the pointer to NULL instead so we can
use clk_prepare_enable() on it without further checks,

Signed-off-by: Daniel Mack <daniel@zonque.org>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
drivers/mtd/nand/raw/marvell_nand.c

index 638a0c8b44b8ac46ec5badee3d67fc6e45c32dae..80a074cccb8227b798da8493298d1cfa9bf6243e 100644 (file)
@@ -2773,17 +2773,19 @@ static int marvell_nfc_probe(struct platform_device *pdev)
                return ret;
 
        nfc->reg_clk = devm_clk_get(&pdev->dev, "reg");
-       if (PTR_ERR(nfc->reg_clk) != -ENOENT) {
-               if (!IS_ERR(nfc->reg_clk)) {
-                       ret = clk_prepare_enable(nfc->reg_clk);
-                       if (ret)
-                               goto unprepare_core_clk;
-               } else {
+       if (IS_ERR(nfc->reg_clk)) {
+               if (PTR_ERR(nfc->reg_clk) != -ENOENT) {
                        ret = PTR_ERR(nfc->reg_clk);
                        goto unprepare_core_clk;
                }
+
+               nfc->reg_clk = NULL;
        }
 
+       ret = clk_prepare_enable(nfc->reg_clk);
+       if (ret)
+               goto unprepare_core_clk;
+
        marvell_nfc_disable_int(nfc, NDCR_ALL_INT);
        marvell_nfc_clear_int(nfc, NDCR_ALL_INT);
        ret = devm_request_irq(dev, irq, marvell_nfc_isr,
@@ -2864,11 +2866,9 @@ static int __maybe_unused marvell_nfc_resume(struct device *dev)
        if (ret < 0)
                return ret;
 
-       if (!IS_ERR(nfc->reg_clk)) {
-               ret = clk_prepare_enable(nfc->reg_clk);
-               if (ret < 0)
-                       return ret;
-       }
+       ret = clk_prepare_enable(nfc->reg_clk);
+       if (ret < 0)
+               return ret;
 
        /*
         * Reset nfc->selected_chip so the next command will cause the timing