[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20220301124935.2893622-1-michael@walle.cc>
Date: Tue, 1 Mar 2022 13:49:35 +0100
From: Michael Walle <michael@...le.cc>
To: Tudor Ambarus <tudor.ambarus@...rochip.com>,
Pratyush Yadav <p.yadav@...com>,
Miquel Raynal <miquel.raynal@...tlin.com>,
Richard Weinberger <richard@....at>,
Vignesh Raghavendra <vigneshr@...com>
Cc: linux-mtd@...ts.infradead.org, linux-kernel@...r.kernel.org,
heiko.thiery@...il.com, Michael Walle <michael@...le.cc>
Subject: [PATCH RFC] mtd: spi-nor: unset quad_enable if SFDP doesn't specify it
For flashes which use the first JESD216 revision, we don't know
which enable method for quad mode we can use. The default one in
spi_nor_init_default_params() is wrong for at least the Macronix
MX25L12835F, thus clear the enable method. Flashes with such an
SFDP revision will have to use a flash (and SFDP revision)
specific fixup.
Signed-off-by: Michael Walle <michael@...le.cc>
---
Please note, completely, untested. Heiko, could you test this without
having the second series from Tudor applied? Then you should have at
least a working flash without quad mode.
drivers/mtd/spi-nor/sfdp.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/drivers/mtd/spi-nor/sfdp.c b/drivers/mtd/spi-nor/sfdp.c
index a5211543d30d..c23e85274ff2 100644
--- a/drivers/mtd/spi-nor/sfdp.c
+++ b/drivers/mtd/spi-nor/sfdp.c
@@ -549,6 +549,14 @@ static int spi_nor_parse_bfpt(struct spi_nor *nor,
map->uniform_erase_type = map->uniform_region.offset &
SNOR_ERASE_TYPE_MASK;
+ /*
+ * The first JESD216 revision doesn't specify a method to enable
+ * quad mode. spi_nor_init_default_params() will set a legacy
+ * default method to enable quad mode. We have to disable it
+ * again.
+ */
+ params->quad_enable = NULL;
+
/* Stop here if not JESD216 rev A or later. */
if (bfpt_header->length == BFPT_DWORD_MAX_JESD216)
return spi_nor_post_bfpt_fixups(nor, bfpt_header, &bfpt);
@@ -562,7 +570,6 @@ static int spi_nor_parse_bfpt(struct spi_nor *nor,
/* Quad Enable Requirements. */
switch (bfpt.dwords[BFPT_DWORD(15)] & BFPT_DWORD15_QER_MASK) {
case BFPT_DWORD15_QER_NONE:
- params->quad_enable = NULL;
break;
case BFPT_DWORD15_QER_SR2_BIT1_BUGGY:
--
2.30.2
Powered by blists - more mailing lists