diff mbox series

[-next,v3,RESEND] mtd: rawnand: Propagate error and simplify ternary operators for brcmstb_nand_wait_for_completion()

Message ID 20230808032943.3890545-1-ruanjinjie@huawei.com
State Accepted
Headers show
Series [-next,v3,RESEND] mtd: rawnand: Propagate error and simplify ternary operators for brcmstb_nand_wait_for_completion() | expand

Commit Message

Jinjie Ruan Aug. 8, 2023, 3:29 a.m. UTC
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>
---
v3:
- Update the commit title and message.
- Do not change the return type from bool to int.
- Return -ETIMEDOUT if err is true.
v2:
- Update the commit title and message.
- Propagate the error instead of upon error.
---
 drivers/mtd/nand/raw/brcmnand/brcmnand.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

Comments

William Zhang Aug. 8, 2023, 10:32 p.m. UTC | #1
On 08/07/2023 08:29 PM, 'Ruan Jinjie' via BCM-KERNEL-FEEDBACK-LIST,PDL 
wrote:
> 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>
> ---
> v3:
> - Update the commit title and message.
> - Do not change the return type from bool to int.
> - Return -ETIMEDOUT if err is true.
> v2:
> - Update the commit title and message.
> - Propagate the error instead of upon error.
> ---
>   drivers/mtd/nand/raw/brcmnand/brcmnand.c | 7 ++++---
>   1 file changed, 4 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/mtd/nand/raw/brcmnand/brcmnand.c b/drivers/mtd/nand/raw/brcmnand/brcmnand.c
> index 03764b589ec5..440bef477930 100644
> --- a/drivers/mtd/nand/raw/brcmnand/brcmnand.c
> +++ b/drivers/mtd/nand/raw/brcmnand/brcmnand.c
> @@ -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;
>   }
> 

Reviewed-by: William Zhang <william.zhang@broadcom.com>
Miquel Raynal Aug. 18, 2023, 2:41 p.m. UTC | #2
On Tue, 2023-08-08 at 03:29:43 UTC, Ruan Jinjie wrote:
> 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>

Applied to https://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git nand/next, thanks.

Miquel
diff mbox series

Patch

diff --git a/drivers/mtd/nand/raw/brcmnand/brcmnand.c b/drivers/mtd/nand/raw/brcmnand/brcmnand.c
index 03764b589ec5..440bef477930 100644
--- a/drivers/mtd/nand/raw/brcmnand/brcmnand.c
+++ b/drivers/mtd/nand/raw/brcmnand/brcmnand.c
@@ -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;
 }