Message ID | 20210120134205.30488-4-patrice.chotard@foss.st.com |
---|---|
State | Accepted |
Delegated to: | Patrice Chotard |
Headers | show |
Series | Add WATCHDOG_RESET() in MTD framework and STM32 QSPI driver | expand |
Hi Patrice, On 1/20/21 2:42 PM, Patrice Chotard wrote: > In case of big area erased on nand, watchdog timeout may occurs. > To fix that, add WATCHDOG_RESET() in nanddev_mtd_erase() to ensure that > watchdog is reset. > > Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com> > --- > > drivers/mtd/nand/core.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/mtd/nand/core.c b/drivers/mtd/nand/core.c > index 3abaef23c5..ec11bf44f8 100644 > --- a/drivers/mtd/nand/core.c > +++ b/drivers/mtd/nand/core.c > @@ -10,6 +10,7 @@ > #define pr_fmt(fmt) "nand: " fmt > > #include <common.h> > +#include <watchdog.h> > #ifndef __UBOOT__ > #include <linux/module.h> > #endif > @@ -162,6 +163,7 @@ int nanddev_mtd_erase(struct mtd_info *mtd, struct erase_info *einfo) > nanddev_offs_to_pos(nand, einfo->addr, &pos); > nanddev_offs_to_pos(nand, einfo->addr + einfo->len - 1, &last); > while (nanddev_pos_cmp(&pos, &last) <= 0) { > + WATCHDOG_RESET(); > ret = nanddev_erase(nand, &pos); > if (ret) { > einfo->fail_addr = nanddev_pos_to_offs(nand, &pos); Reviewed-by: Patrick Delaunay <patrick.delaunay@foss.st.com> Thanks Patrick
Hi On 1/27/21 4:15 PM, Patrick DELAUNAY wrote: > Hi Patrice, > > On 1/20/21 2:42 PM, Patrice Chotard wrote: >> In case of big area erased on nand, watchdog timeout may occurs. >> To fix that, add WATCHDOG_RESET() in nanddev_mtd_erase() to ensure that >> watchdog is reset. >> >> Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com> >> --- >> >> drivers/mtd/nand/core.c | 2 ++ >> 1 file changed, 2 insertions(+) >> >> diff --git a/drivers/mtd/nand/core.c b/drivers/mtd/nand/core.c >> index 3abaef23c5..ec11bf44f8 100644 >> --- a/drivers/mtd/nand/core.c >> +++ b/drivers/mtd/nand/core.c >> @@ -10,6 +10,7 @@ >> #define pr_fmt(fmt) "nand: " fmt >> #include <common.h> >> +#include <watchdog.h> >> #ifndef __UBOOT__ >> #include <linux/module.h> >> #endif >> @@ -162,6 +163,7 @@ int nanddev_mtd_erase(struct mtd_info *mtd, struct erase_info *einfo) >> nanddev_offs_to_pos(nand, einfo->addr, &pos); >> nanddev_offs_to_pos(nand, einfo->addr + einfo->len - 1, &last); >> while (nanddev_pos_cmp(&pos, &last) <= 0) { >> + WATCHDOG_RESET(); >> ret = nanddev_erase(nand, &pos); >> if (ret) { >> einfo->fail_addr = nanddev_pos_to_offs(nand, &pos); > > > Reviewed-by: Patrick Delaunay <patrick.delaunay@foss.st.com> > > Thanks > > Patrick > Applied to u-boot-stm/next Thanks Patrice
diff --git a/drivers/mtd/nand/core.c b/drivers/mtd/nand/core.c index 3abaef23c5..ec11bf44f8 100644 --- a/drivers/mtd/nand/core.c +++ b/drivers/mtd/nand/core.c @@ -10,6 +10,7 @@ #define pr_fmt(fmt) "nand: " fmt #include <common.h> +#include <watchdog.h> #ifndef __UBOOT__ #include <linux/module.h> #endif @@ -162,6 +163,7 @@ int nanddev_mtd_erase(struct mtd_info *mtd, struct erase_info *einfo) nanddev_offs_to_pos(nand, einfo->addr, &pos); nanddev_offs_to_pos(nand, einfo->addr + einfo->len - 1, &last); while (nanddev_pos_cmp(&pos, &last) <= 0) { + WATCHDOG_RESET(); ret = nanddev_erase(nand, &pos); if (ret) { einfo->fail_addr = nanddev_pos_to_offs(nand, &pos);
In case of big area erased on nand, watchdog timeout may occurs. To fix that, add WATCHDOG_RESET() in nanddev_mtd_erase() to ensure that watchdog is reset. Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com> --- drivers/mtd/nand/core.c | 2 ++ 1 file changed, 2 insertions(+)