From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mugunthan V N Date: Wed, 23 Dec 2015 13:22:19 +0530 Subject: [U-Boot] [PATCH v2 3/4] sf: Read back and check once macronix quad bit set In-Reply-To: <1450256509-17280-3-git-send-email-jteki@openedev.com> References: <1450256509-17280-1-git-send-email-jteki@openedev.com> <1450256509-17280-3-git-send-email-jteki@openedev.com> Message-ID: <567A52B3.1020103@ti.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On Wednesday 16 December 2015 02:31 PM, Jagan Teki wrote: > 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 > Cc: Mugunthan V N > Cc: Simon Glass > Cc: Bin Meng > Signed-off-by: Jagan Teki > --- > Changes for v2: > - none > > drivers/mtd/spi/spi_flash.c | 18 ++++++++++++------ > 1 file changed, 12 insertions(+), 6 deletions(-) > > diff --git a/drivers/mtd/spi/spi_flash.c b/drivers/mtd/spi/spi_flash.c > index ba6651e..c922322 100644 > --- a/drivers/mtd/spi/spi_flash.c > +++ b/drivers/mtd/spi/spi_flash.c > @@ -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))) { This error check is wrong, it can be either one of the below if (!(ret >= 0 && (qeb_status & STATUS_QEB_MXIC))) { or if (ret < 0 || !(qeb_status & STATUS_QEB_MXIC)) { Regards Mugunthan V N > + printf("SF: Macronix SR Quad bit not clear\n"); > + return -EINVAL; > } > > return ret; >