Message ID | 1332196342-21545-3-git-send-email-robert.jarzmik@free.fr |
---|---|
State | Accepted |
Commit | a2b3d284ed65b9ada18fd2ffb66daffe9c0ff168 |
Headers | show |
diff --git a/drivers/mtd/devices/docg3.c b/drivers/mtd/devices/docg3.c index 09d039d..f33c130 100644 --- a/drivers/mtd/devices/docg3.c +++ b/drivers/mtd/devices/docg3.c @@ -1115,10 +1115,10 @@ static int doc_get_op_status(struct docg3 *docg3) */ static int doc_write_erase_wait_status(struct docg3 *docg3) { - int status, ret = 0; + int i, status, ret = 0; - if (!doc_is_ready(docg3)) - usleep_range(3000, 3000); + for (i = 0; !doc_is_ready(docg3) && i < 5; i++) + msleep(20); if (!doc_is_ready(docg3)) { doc_dbg("Timeout reached and the chip is still not ready\n"); ret = -EAGAIN;
After several tries with ubifs, it appears empirically that constructor provided figures for erase/write timeouts are underestimated. A timeout of 100ms seems to work with a 5 years worn chip, and no timeouts occur anymore. Signed-off-by: Robert Jarzmik <robert.jarzmik@free.fr> --- drivers/mtd/devices/docg3.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-)