mtd: spi-nor: core: Add an error message when failing to exit the 4-byte address...
authorTudor Ambarus <tudor.ambarus@microchip.com>
Thu, 28 Jul 2022 03:01:59 +0000 (06:01 +0300)
committerTudor Ambarus <tudor.ambarus@microchip.com>
Tue, 25 Oct 2022 02:11:35 +0000 (05:11 +0300)
Add an error message when failing to exit the 4-byte address mode. Do not
stop the execution and go through the spi_nor_soft_reset() method if used,
in the hope that the flash will default to 3-byte address mode after the
reset.

Suggested-by: Pratyush Yadav <p.yadav@ti.com>
Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com>
Reviewed-by: Pratyush Yadav <p.yadav@ti.com>
Link: https://lore.kernel.org/r/20220728030159.68680-1-tudor.ambarus@microchip.com
drivers/mtd/spi-nor/core.c

index a78ab9bae2be75a54de69a0d524aa9be82782075..aa05443c44c2f3164b641259a6ea65322b740fb4 100644 (file)
@@ -2838,10 +2838,20 @@ static void spi_nor_put_device(struct mtd_info *mtd)
 
 void spi_nor_restore(struct spi_nor *nor)
 {
+       int ret;
+
        /* restore the addressing mode */
        if (nor->addr_nbytes == 4 && !(nor->flags & SNOR_F_4B_OPCODES) &&
-           nor->flags & SNOR_F_BROKEN_RESET)
-               nor->params->set_4byte_addr_mode(nor, false);
+           nor->flags & SNOR_F_BROKEN_RESET) {
+               ret = nor->params->set_4byte_addr_mode(nor, false);
+               if (ret)
+                       /*
+                        * Do not stop the execution in the hope that the flash
+                        * will default to the 3-byte address mode after the
+                        * software reset.
+                        */
+                       dev_err(nor->dev, "Failed to exit 4-byte address mode, err = %d\n", ret);
+       }
 
        if (nor->flags & SNOR_F_SOFT_RESET)
                spi_nor_soft_reset(nor);