[PATCH] nand_wait() timeout fixes
Two fixes for the nand_wait() function in drivers/nand/nand_base.c: 1. Use correct timeouts. The original timeouts in Linux source are 400ms and 20ms not 40s and 20s 2. Return correct error value in case of timeout. 0 is interpreted as OK. Signed-off-by: Rui Sousa <rui.sousa@laposte.net> Signed-off-by: Stefan Roese <sr@denx.de>
This commit is contained in:
parent
3b58d94590
commit
1578486285
|
@ -838,9 +838,9 @@ static int nand_wait(struct mtd_info *mtd, struct nand_chip *this, int state)
|
||||||
unsigned long timeo;
|
unsigned long timeo;
|
||||||
|
|
||||||
if (state == FL_ERASING)
|
if (state == FL_ERASING)
|
||||||
timeo = CFG_HZ * 400;
|
timeo += (HZ * 400) / 1000;
|
||||||
else
|
else
|
||||||
timeo = CFG_HZ * 20;
|
timeo += (HZ * 20) / 1000;
|
||||||
|
|
||||||
if ((state == FL_ERASING) && (this->options & NAND_IS_AND))
|
if ((state == FL_ERASING) && (this->options & NAND_IS_AND))
|
||||||
this->cmdfunc(mtd, NAND_CMD_STATUS_MULTI, -1, -1);
|
this->cmdfunc(mtd, NAND_CMD_STATUS_MULTI, -1, -1);
|
||||||
|
@ -852,8 +852,8 @@ static int nand_wait(struct mtd_info *mtd, struct nand_chip *this, int state)
|
||||||
while (1) {
|
while (1) {
|
||||||
if (get_timer(0) > timeo) {
|
if (get_timer(0) > timeo) {
|
||||||
printf("Timeout!");
|
printf("Timeout!");
|
||||||
return 0;
|
return 0x01;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this->dev_ready) {
|
if (this->dev_ready) {
|
||||||
if (this->dev_ready(mtd))
|
if (this->dev_ready(mtd))
|
||||||
|
|
Loading…
Reference in New Issue