[PATCH v13 1/4] mtd: spi-nor: Retain nor->addr_width at 4BAIT parse
tkuw584924 at gmail.com
tkuw584924 at gmail.com
Thu Apr 21 02:40:21 PDT 2022
From: Takahiro Kuwano <Takahiro.Kuwano at infineon.com>
In 4BAIT parse, keep nor->addr_width because it may be used as
current address mode in SMPT parse later on.
Signed-off-by: Takahiro Kuwano <Takahiro.Kuwano at infineon.com>
---
drivers/mtd/spi-nor/core.c | 7 ++++++-
drivers/mtd/spi-nor/sfdp.c | 1 -
2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/drivers/mtd/spi-nor/core.c b/drivers/mtd/spi-nor/core.c
index 40ba45328975..87603a99938f 100644
--- a/drivers/mtd/spi-nor/core.c
+++ b/drivers/mtd/spi-nor/core.c
@@ -2210,7 +2210,12 @@ static int spi_nor_default_setup(struct spi_nor *nor,
static int spi_nor_set_addr_width(struct spi_nor *nor)
{
if (nor->addr_width) {
- /* already configured from SFDP */
+ /*
+ * Already configured from SFDP. Use an address width of 4 in
+ * case the device has 4byte opcodes.
+ */
+ if (nor->addr_width == 3 && nor->flags & SNOR_F_HAS_4BAIT)
+ nor->addr_width = 4;
} else if (nor->read_proto == SNOR_PROTO_8_8_8_DTR) {
/*
* In 8D-8D-8D mode, one byte takes half a cycle to transfer. So
diff --git a/drivers/mtd/spi-nor/sfdp.c b/drivers/mtd/spi-nor/sfdp.c
index c5dd79ef75c8..9aeefd070475 100644
--- a/drivers/mtd/spi-nor/sfdp.c
+++ b/drivers/mtd/spi-nor/sfdp.c
@@ -1211,7 +1211,6 @@ static int spi_nor_parse_4bait(struct spi_nor *nor,
* Spansion memory. However this quirk is no longer needed with new
* SFDP compliant memories.
*/
- nor->addr_width = 4;
nor->flags |= SNOR_F_4B_OPCODES | SNOR_F_HAS_4BAIT;
/* fall through */
--
2.25.1
More information about the linux-mtd
mailing list