All, Dario On Tue, Sep 17, 2024 at 2:20 AM William Zhang <william.zh...@broadcom.com> wrote: > > > -----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>
Acked-by; Michael Trimarchi <mich...@amarulasolutions.com> -- Michael Nazzareno Trimarchi Co-Founder & Chief Executive Officer M. +39 347 913 2170 mich...@amarulasolutions.com __________________________________ Amarula Solutions BV Joop Geesinkweg 125, 1114 AB, Amsterdam, NL T. +31 (0)85 111 9172 i...@amarulasolutions.com www.amarulasolutions.com