[PATCH] mtd: rawnand: mtk: Fix WAITRDY break condition and timeout
Boris Brezillon
boris.brezillon at collabora.com
Tue Mar 9 07:06:08 GMT 2021
On Tue, 9 Mar 2021 01:01:07 +0100
Hauke Mehrtens <hauke at hauke-m.de> wrote:
> This fixes NAND_OP_WAITRDY_INSTR operation in the driver. Without this
> change the driver waits till the system is busy, but we should wait till
> the busy flag is cleared. The readl_poll_timeout() function gets a break
> condition, not a wait condition.
>
> In addition fix the timeout. The timeout_ms is given in ms, but the
> readl_poll_timeout() function takes the timeout in us. Multiple the
> given timeout by 1000 to convert it.
>
> Without this change, the driver does not work at all, it doesn't even
> identify the NAND chip.
>
> Fixes: 5197360f9e09 ("mtd: rawnand: mtk: Convert the driver to exec_op()")
> Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
Reviewed-by: Boris Brezillon <boris.brezillon at collabora.com>
> ---
> drivers/mtd/nand/raw/mtk_nand.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/mtd/nand/raw/mtk_nand.c b/drivers/mtd/nand/raw/mtk_nand.c
> index 57f1f1708994..5c5c92132287 100644
> --- a/drivers/mtd/nand/raw/mtk_nand.c
> +++ b/drivers/mtd/nand/raw/mtk_nand.c
> @@ -488,8 +488,8 @@ static int mtk_nfc_exec_instr(struct nand_chip *chip,
> return 0;
> case NAND_OP_WAITRDY_INSTR:
> return readl_poll_timeout(nfc->regs + NFI_STA, status,
> - status & STA_BUSY, 20,
> - instr->ctx.waitrdy.timeout_ms);
> + !(status & STA_BUSY), 20,
> + instr->ctx.waitrdy.timeout_ms * 1000);
> default:
> break;
> }
More information about the Linux-mediatek
mailing list