summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJagan Teki <jteki@openedev.com>2015-12-15 12:28:39 +0530
committerJagan Teki <jteki@openedev.com>2016-01-13 18:47:26 +0530
commitffecb0fc840707d7aadf42364ae596f998a3d52f (patch)
treed506320ff5104f1c93696793c1dc087123455cf7
parentc56ae7519f141523ba1248b22b5b5169b21772fe (diff)
downloadu-boot-imx-ffecb0fc840707d7aadf42364ae596f998a3d52f.zip
u-boot-imx-ffecb0fc840707d7aadf42364ae596f998a3d52f.tar.gz
u-boot-imx-ffecb0fc840707d7aadf42364ae596f998a3d52f.tar.bz2
sf: Read back and check once spansion quad bit set
One spansion quad bit set using CR, 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> Cc: Michal Simek <michal.simek@xilinx.com> Cc: Siva Durga Prasad Paladugu <sivadur@xilinx.com> Tested-by: Mugunthan V N <mugunthanvnm@ti.com> Signed-off-by: Jagan Teki <jteki@openedev.com>
-rw-r--r--drivers/mtd/spi/spi_flash.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/drivers/mtd/spi/spi_flash.c b/drivers/mtd/spi/spi_flash.c
index d9124c5..b7c0da4 100644
--- a/drivers/mtd/spi/spi_flash.c
+++ b/drivers/mtd/spi/spi_flash.c
@@ -862,12 +862,18 @@ static int spansion_quad_enable(struct spi_flash *flash)
if (ret < 0)
return ret;
- if (qeb_status & STATUS_QEB_WINSPAN) {
- debug("SF: winspan: QEB is already set\n");
- } else {
- ret = write_cr(flash, STATUS_QEB_WINSPAN);
- if (ret < 0)
- return ret;
+ if (qeb_status & STATUS_QEB_WINSPAN)
+ return 0;
+
+ ret = write_cr(flash, STATUS_QEB_WINSPAN);
+ if (ret < 0)
+ return ret;
+
+ /* read CR and check it */
+ ret = read_cr(flash, &qeb_status);
+ if (!(ret >= 0 && (qeb_status & STATUS_QEB_WINSPAN))) {
+ printf("SF: Spansion CR Quad bit not clear\n");
+ return -EINVAL;
}
return ret;