From: Takahiro Kuwano <[email protected]>

nor->addr_mode_nbytes is set during SFDP parse. Infineon SEMPER flash
family relies on that parameter to read and write registers. To support
use cases of skipping SFDP, set address mode in device specific setup()
function.

Tested-by: Hiroyuki Saito <[email protected]>
Signed-off-by: Takahiro Kuwano <[email protected]>
---
 drivers/mtd/spi/spi-nor-core.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/drivers/mtd/spi/spi-nor-core.c b/drivers/mtd/spi/spi-nor-core.c
index 6f352c5c0e2..e382a518a34 100644
--- a/drivers/mtd/spi/spi-nor-core.c
+++ b/drivers/mtd/spi/spi-nor-core.c
@@ -3794,6 +3794,16 @@ static int s25_s28_setup(struct spi_nor *nor, const 
struct flash_info *info,
 #ifdef CONFIG_SPI_FLASH_BAR
        return -ENOTSUPP; /* Bank Address Register is not supported */
 #endif
+
+       /* Setup address mode here, in case SFDP is skipped. */
+       if (!nor->addr_mode_nbytes) {
+               ret = set_4byte(nor, nor->info, 1);
+               if (ret)
+                       return ret;
+
+               nor->addr_mode_nbytes = 4;
+       }
+
        /*
         * S25FS256T has multiple sector architecture options, with selection of
         * count and location of 128KB and 64KB sectors. This driver supports
-- 
2.34.1

Reply via email to