> -----Original Message----- > From: Linus Walleij <[email protected]> > Sent: Monday, September 16, 2024 2:59 AM > To: [email protected]; Dario Binacchi > <[email protected]>; Michael Trimarchi > <[email protected]>; Anand Gore > <[email protected]>; William Zhang > <[email protected]>; Kursad Oney > <[email protected]>; Philippe Reynes > <[email protected]> > Cc: Linus Walleij <[email protected]>; Florian Fainelli > <[email protected]>; Miquel Raynal > <[email protected]> > Subject: [PATCH v2 2/7] mtd: rawnand: brcmnand: Fix potential false time > out warning > > From: William Zhang <[email protected]> > > 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 <[email protected]> > Reviewed-by: Florian Fainelli <[email protected]> > Signed-off-by: Miquel Raynal <[email protected]> > Link: https://lore.kernel.org/linux-mtd/20230706182909.79151-3- > [email protected] > Signed-off-by: Linus Walleij <[email protected]> > --- > 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 <[email protected]>
smime.p7s
Description: S/MIME Cryptographic Signature

