From: Takahiro Kuwano <takahiro.kuw...@infineon.com>

s25_s28_mdp_ready() returns 1 when spansion_sr_ready() returns negative
value (error code). Fix this problem by following Linux implementation.

Fixes: 1c3dd193b5b ("mtd: spi-nor-core: Add fixups for Cypress s25hl-t/s25hs-t")
Reported-by: Hiroyuki Saito <hiroyuki.sai...@infineon.com>
Signed-off-by: Takahiro Kuwano <takahiro.kuw...@infineon.com>
---
 drivers/mtd/spi/spi-nor-core.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/mtd/spi/spi-nor-core.c b/drivers/mtd/spi/spi-nor-core.c
index 655bf3aaf81..76c33b24368 100644
--- a/drivers/mtd/spi/spi-nor-core.c
+++ b/drivers/mtd/spi/spi-nor-core.c
@@ -3784,8 +3784,10 @@ static int s25_s28_mdp_ready(struct spi_nor *nor)
 
        for (addr = 0; addr < nor->mtd.size; addr += SZ_128M) {
                ret = spansion_sr_ready(nor, addr, nor->rdsr_dummy);
-               if (!ret)
+               if (ret < 0)
                        return ret;
+               else if (ret == 0)
+                       return 0;
        }
 
        return 1;
-- 
2.34.1

Reply via email to