> -----Original Message----- > From: Linus Walleij <linus.wall...@linaro.org> > Sent: Monday, September 16, 2024 2:59 AM > To: u-boot@lists.denx.de; Dario Binacchi > <dario.binac...@amarulasolutions.com>; Michael Trimarchi > <mich...@amarulasolutions.com>; Anand Gore > <anand.g...@broadcom.com>; William Zhang > <william.zh...@broadcom.com>; Kursad Oney > <kursad.o...@broadcom.com>; Philippe Reynes > <philippe.rey...@softathome.com> > Cc: Linus Walleij <linus.wall...@linaro.org>; Florian Fainelli > <florian.faine...@broadcom.com>; Miquel Raynal > <miquel.ray...@bootlin.com> > Subject: [PATCH v2 2/7] mtd: rawnand: brcmnand: Fix potential false time > out warning > > From: William Zhang <william.zh...@broadcom.com> > > Backport from the Linux kernel: > commit 9cc0a598b944816f2968baf2631757f22721b996 > "mtd: rawnand: brcmnand: Fix potential false time out warning" > > If system is busy during the command status polling function, the driver > may not get the chance to poll the status register till the end of time > out and return the premature status. Do a final check after time out > happens to ensure reading the correct status. > > Signed-off-by: William Zhang <william.zh...@broadcom.com> > Reviewed-by: Florian Fainelli <florian.faine...@broadcom.com> > Signed-off-by: Miquel Raynal <miquel.ray...@bootlin.com> > Link: https://lore.kernel.org/linux-mtd/20230706182909.79151-3- > william.zh...@broadcom.com > Signed-off-by: Linus Walleij <linus.wall...@linaro.org> > --- > drivers/mtd/nand/raw/brcmnand/brcmnand.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/drivers/mtd/nand/raw/brcmnand/brcmnand.c > b/drivers/mtd/nand/raw/brcmnand/brcmnand.c > index 700d1122639f..46a4107a83a9 100644 > --- a/drivers/mtd/nand/raw/brcmnand/brcmnand.c > +++ b/drivers/mtd/nand/raw/brcmnand/brcmnand.c > @@ -1011,6 +1011,14 @@ static int bcmnand_ctrl_poll_status(struct > brcmnand_controller *ctrl, > } while (get_timer(base) < limit); > #endif /* __UBOOT__ */ > > + /* > + * do a final check after time out in case the CPU was busy and the > driver > + * did not get enough time to perform the polling to avoid false > alarms > + */ > + val = brcmnand_read_reg(ctrl, BRCMNAND_INTFC_STATUS); > + if ((val & mask) == expected_val) > + return 0; > + > dev_warn(ctrl->dev, "timeout on status poll (expected %x got %x)\n", > expected_val, val & mask); > > > -- > 2.46.0
Reviewed-by: William Zhang <william.zh...@broadcom.com>
smime.p7s
Description: S/MIME Cryptographic Signature