lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
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