sf: Read back and check once macronix quad bit set
authorJagan Teki <jteki@openedev.com>
Tue, 15 Dec 2015 07:12:02 +0000 (12:42 +0530)
committerJagan Teki <jteki@openedev.com>
Wed, 13 Jan 2016 13:17:26 +0000 (18:47 +0530)
One macronix quad bit set using SR, it's good to
read back and check the written bit and also if
it's already been set check for the bit and return.

Cc: Vignesh R <vigneshr@ti.com>
Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
Tested-by: Mugunthan V N <mugunthanvnm@ti.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
drivers/mtd/spi/spi_flash.c

index b7c0da46a251cb06494fa7d133456dd5e0a2ba62..682d1a0df64acbe0f82fd3ce44704ecf5941dc44 100644 (file)
@@ -840,12 +840,18 @@ static int macronix_quad_enable(struct spi_flash *flash)
        if (ret < 0)
                return ret;
 
-       if (qeb_status & STATUS_QEB_MXIC) {
-               debug("SF: mxic: QEB is already set\n");
-       } else {
-               ret = write_sr(flash, STATUS_QEB_MXIC);
-               if (ret < 0)
-                       return ret;
+       if (qeb_status & STATUS_QEB_MXIC)
+               return 0;
+
+       ret = write_sr(flash, STATUS_QEB_MXIC);
+       if (ret < 0)
+               return ret;
+
+       /* read SR and check it */
+       ret = read_sr(flash, &qeb_status);
+       if (!(ret >= 0 && (qeb_status & STATUS_QEB_MXIC))) {
+               printf("SF: Macronix SR Quad bit not clear\n");
+               return -EINVAL;
        }
 
        return ret;