On 23 December 2015 at 13:22, Mugunthan V N <mugunthan...@ti.com> wrote: > 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 <vigne...@ti.com> >> Cc: Mugunthan V N <mugunthan...@ti.com> >> Cc: Simon Glass <s...@chromium.org> >> Cc: Bin Meng <bmeng...@gmail.com> >> Signed-off-by: Jagan Teki <jt...@openedev.com> >> --- >> 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))) {
So =0 is a success case, this is what you pointing to correct? did you test this? > 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; thanks! -- Jagan. _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot