Skip to content

Commit f01d815

Browse files
hsinyi527ambarus
authored andcommitted
mtd: spi-nor: Check bus width while setting QE bit
spi_nor_write_16bit_sr_and_check() should also check if bus width is 4 before setting QE bit. Fixes: 39d1e33 ("mtd: spi-nor: Fix clearing of QE bit on lock()/unlock()") Suggested-by: Michael Walle <michael@walle.cc> Suggested-by: Tudor Ambarus <tudor.ambarus@linaro.org> Signed-off-by: Hsin-Yi Wang <hsinyi@chromium.org> Reviewed-by: Michael Walle <michael@walle.cc> Link: https://lore.kernel.org/r/20230818064524.1229100-2-hsinyi@chromium.org Signed-off-by: Tudor Ambarus <tudor.ambarus@linaro.org>
1 parent aa517a2 commit f01d815

File tree

1 file changed

+10
-9
lines changed

1 file changed

+10
-9
lines changed

drivers/mtd/spi-nor/core.c

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -870,21 +870,22 @@ static int spi_nor_write_16bit_sr_and_check(struct spi_nor *nor, u8 sr1)
870870
ret = spi_nor_read_cr(nor, &sr_cr[1]);
871871
if (ret)
872872
return ret;
873-
} else if (nor->params->quad_enable) {
873+
} else if (spi_nor_get_protocol_width(nor->read_proto) == 4 &&
874+
spi_nor_get_protocol_width(nor->write_proto) == 4 &&
875+
nor->params->quad_enable) {
874876
/*
875877
* If the Status Register 2 Read command (35h) is not
876878
* supported, we should at least be sure we don't
877879
* change the value of the SR2 Quad Enable bit.
878880
*
879-
* We can safely assume that when the Quad Enable method is
880-
* set, the value of the QE bit is one, as a consequence of the
881-
* nor->params->quad_enable() call.
881+
* When the Quad Enable method is set and the buswidth is 4, we
882+
* can safely assume that the value of the QE bit is one, as a
883+
* consequence of the nor->params->quad_enable() call.
882884
*
883-
* We can safely assume that the Quad Enable bit is present in
884-
* the Status Register 2 at BIT(1). According to the JESD216
885-
* revB standard, BFPT DWORDS[15], bits 22:20, the 16-bit
886-
* Write Status (01h) command is available just for the cases
887-
* in which the QE bit is described in SR2 at BIT(1).
885+
* According to the JESD216 revB standard, BFPT DWORDS[15],
886+
* bits 22:20, the 16-bit Write Status (01h) command is
887+
* available just for the cases in which the QE bit is
888+
* described in SR2 at BIT(1).
888889
*/
889890
sr_cr[1] = SR2_QUAD_EN_BIT1;
890891
} else {

0 commit comments

Comments
 (0)