mtd: rawnand: Propagate error and simplify ternary operators for brcmstb_nand_wait_fo...
authorRuan Jinjie <ruanjinjie@huawei.com>
Tue, 8 Aug 2023 03:29:43 +0000 (11:29 +0800)
committerMiquel Raynal <miquel.raynal@bootlin.com>
Fri, 18 Aug 2023 14:38:33 +0000 (16:38 +0200)
As bcmnand_ctrl_poll_status() return negative errno, so return true if
sts < 0. The < 0 case does not exist for wait_for_completion_timeout(),
so return true if sts = 0 and zero otherwise. Both of the true return
of them can be considered as a -ETIMEDOUT err, so return -ETIMEDOUT
if err is true to propagate err from its caller.

Signed-off-by: Ruan Jinjie <ruanjinjie@huawei.com>
Reviewed-by: William Zhang <william.zhang@broadcom.com>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Link: https://lore.kernel.org/linux-mtd/20230808032943.3890545-1-ruanjinjie@huawei.com
drivers/mtd/nand/raw/brcmnand/brcmnand.c

index 03764b5..440bef4 100644 (file)
@@ -1666,13 +1666,13 @@ static bool brcmstb_nand_wait_for_completion(struct nand_chip *chip)
                disable_ctrl_irqs(ctrl);
                sts = bcmnand_ctrl_poll_status(ctrl, NAND_CTRL_RDY,
                                               NAND_CTRL_RDY, 0);
-               err = (sts < 0) ? true : false;
+               err = sts < 0;
        } else {
                unsigned long timeo = msecs_to_jiffies(
                                                NAND_POLL_STATUS_TIMEOUT_MS);
                /* wait for completion interrupt */
                sts = wait_for_completion_timeout(&ctrl->done, timeo);
-               err = (sts <= 0) ? true : false;
+               err = !sts;
        }
 
        return err;
@@ -1688,6 +1688,7 @@ static int brcmnand_waitfunc(struct nand_chip *chip)
        if (ctrl->cmd_pending)
                err = brcmstb_nand_wait_for_completion(chip);
 
+       ctrl->cmd_pending = 0;
        if (err) {
                u32 cmd = brcmnand_read_reg(ctrl, BRCMNAND_CMD_START)
                                        >> brcmnand_cmd_shift(ctrl);
@@ -1696,8 +1697,8 @@ static int brcmnand_waitfunc(struct nand_chip *chip)
                        "timeout waiting for command %#02x\n", cmd);
                dev_err_ratelimited(ctrl->dev, "intfc status %08x\n",
                        brcmnand_read_reg(ctrl, BRCMNAND_INTFC_STATUS));
+               return -ETIMEDOUT;
        }
-       ctrl->cmd_pending = 0;
        return brcmnand_read_reg(ctrl, BRCMNAND_INTFC_STATUS) &
                                 INTFC_FLASH_STATUS;
 }