[U-Boot] [PATCH v4 1/6] mtd: spi-nor: add watchdog reset to flash operation loops
Weijie Gao
weijie.gao at mediatek.com
Wed Jul 10 03:19:02 UTC 2019
This patch adds WATCHDOG_RESET() to loops for read/write/erase to avoid
watchdog not being feeded in a long period.
Cc: Vignesh Raghavendra <vigneshr at ti.com>
Signed-off-by: Weijie Gao <weijie.gao at mediatek.com>
---
drivers/mtd/spi/spi-nor-core.c | 13 +++++++++++++
drivers/mtd/spi/spi-nor-tiny.c | 3 +++
2 files changed, 16 insertions(+)
diff --git a/drivers/mtd/spi/spi-nor-core.c b/drivers/mtd/spi/spi-nor-core.c
index 1acff745d1a..2049661f3ad 100644
--- a/drivers/mtd/spi/spi-nor-core.c
+++ b/drivers/mtd/spi/spi-nor-core.c
@@ -10,6 +10,7 @@
*/
#include <common.h>
+#include <watchdog.h>
#include <linux/err.h>
#include <linux/errno.h>
#include <linux/log2.h>
@@ -103,6 +104,8 @@ static ssize_t spi_nor_read_data(struct spi_nor *nor, loff_t from, size_t len,
op.addr.val += op.data.nbytes;
remaining -= op.data.nbytes;
op.data.buf.in += op.data.nbytes;
+
+ WATCHDOG_RESET();
}
return len;
@@ -571,6 +574,8 @@ static int spi_nor_erase(struct mtd_info *mtd, struct erase_info *instr)
ret = spi_nor_wait_till_ready(nor);
if (ret)
goto erase_err;
+
+ WATCHDOG_RESET();
}
erase_err:
@@ -963,6 +968,9 @@ static int sst_write_byteprogram(struct spi_nor *nor, loff_t to, size_t len,
if (ret)
goto sst_write_err;
to++;
+
+ if (actual % 0x100 == 0)
+ WATCHDOG_RESET();
}
sst_write_err:
@@ -1014,6 +1022,9 @@ static int sst_write(struct mtd_info *mtd, loff_t to, size_t len,
goto sst_write_err;
to += 2;
nor->sst_write_second = true;
+
+ if (actual % 0x100 == 0)
+ WATCHDOG_RESET();
}
nor->sst_write_second = false;
@@ -1094,6 +1105,8 @@ static int spi_nor_write(struct mtd_info *mtd, loff_t to, size_t len,
goto write_err;
*retlen += written;
i += written;
+
+ WATCHDOG_RESET();
}
write_err:
diff --git a/drivers/mtd/spi/spi-nor-tiny.c b/drivers/mtd/spi/spi-nor-tiny.c
index c19d468d62c..197a796b8af 100644
--- a/drivers/mtd/spi/spi-nor-tiny.c
+++ b/drivers/mtd/spi/spi-nor-tiny.c
@@ -10,6 +10,7 @@
*/
#include <common.h>
+#include <watchdog.h>
#include <linux/err.h>
#include <linux/errno.h>
#include <linux/log2.h>
@@ -103,6 +104,8 @@ static ssize_t spi_nor_read_data(struct spi_nor *nor, loff_t from, size_t len,
op.addr.val += op.data.nbytes;
remaining -= op.data.nbytes;
op.data.buf.in += op.data.nbytes;
+
+ WATCHDOG_RESET();
}
return len;
--
2.18.0
More information about the U-Boot
mailing list