Message ID | 20210309000107.1368404-1-hauke@hauke-m.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | mtd: rawnand: mtk: Fix WAITRDY break condition and timeout | expand |
On Tue, 9 Mar 2021 01:01:07 +0100 Hauke Mehrtens <hauke@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@hauke-m.de> Reviewed-by: Boris Brezillon <boris.brezillon@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; > }
Hi Hauke, Hauke Mehrtens <hauke@hauke-m.de> wrote on Tue, 9 Mar 2021 01:01:07 +0100: > 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@hauke-m.de> > --- > 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; > } Applied to mtd/fixes. Thanks, Miquèl
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; }
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@hauke-m.de> --- drivers/mtd/nand/raw/mtk_nand.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)