[PATCH] nand_wait() timeout fixes
authorStefan Roese <sr@denx.de>
Mon, 27 Nov 2006 16:22:19 +0000 (17:22 +0100)
committerStefan Roese <sr@denx.de>
Mon, 27 Nov 2006 16:24:40 +0000 (17:24 +0100)
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>
drivers/nand/nand_base.c

index b7a5d32fb3fb1c5320157ff861be21ba61fd68ef..8237f4a8b34a10a4d25d53f37a8dea91df2345cf 100644 (file)
@@ -838,9 +838,9 @@ static int nand_wait(struct mtd_info *mtd, struct nand_chip *this, int state)
        unsigned long   timeo;
 
        if (state == FL_ERASING)
-               timeo = CFG_HZ * 400;
+               timeo += (HZ * 400) / 1000;
        else
-               timeo = CFG_HZ * 20;
+               timeo += (HZ * 20) / 1000;
 
        if ((state == FL_ERASING) && (this->options & NAND_IS_AND))
                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) {
                if (get_timer(0) > timeo) {
                        printf("Timeout!");
-                       return 0;
-                       }
+                       return 0x01;
+               }
 
                if (this->dev_ready) {
                        if (this->dev_ready(mtd))