[U-Boot] [PATCH] sf: Disable 4-KB erase command for SPANSION S25FS128

Michael Trimarchi michael at amarulasolutions.com
Wed Jun 22 09:58:32 CEST 2016


The S25FS128 is part of S25FS-S family physical sectors may be
configured as a hybrid combination of eight 4-kB parameter sectors
at the top or bottom of the address space with all but one of the
remaining sectors being uniform size. This rework a bit commit

80c1bfd2332e71dfe669cac53ba06b7435a7ca39

and add this jedec part number

Signed-off-by: Michael Trimarchi <michael at amarulasolutions.com>
---
 drivers/mtd/spi/spi_flash.c | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/drivers/mtd/spi/spi_flash.c b/drivers/mtd/spi/spi_flash.c
index 64d4e0f..c993588 100644
--- a/drivers/mtd/spi/spi_flash.c
+++ b/drivers/mtd/spi/spi_flash.c
@@ -972,6 +972,21 @@ int spi_flash_decode_fdt(const void *blob, struct spi_flash *flash)
 #endif /* CONFIG_IS_ENABLED(OF_CONTROL) */
 
 #ifdef CONFIG_SPI_FLASH_SPANSION
+
+inline int is_spansion_s25fss_family(u16 jedec, u16 ext_jedec)
+{
+	switch (jedec) {
+	case 0x0219:
+	case 0x0220:
+	case 0x2018:
+		if ((ext_jedec & 0xff00) == 0x4d00)
+			return 1;
+	default:;
+	}
+
+	return 0;
+}
+
 static int spansion_s25fss_disable_4KB_erase(struct spi_slave *spi)
 {
 	u8 cmd[4];
@@ -1072,8 +1087,7 @@ int spi_flash_scan(struct spi_flash *flash)
 	 * sector that is not overlaid by the parameter sectors.
 	 * The uniform sector erase command has no effect on parameter sectors.
 	 */
-	if ((jedec == 0x0219 || (jedec == 0x0220)) &&
-	    (ext_jedec & 0xff00) == 0x4d00) {
+	if (is_spansion_s25fss_family(jedec, ext_jedec)) {
 		int ret;
 		u8 id[6];
 
-- 
2.9.0



More information about the U-Boot mailing list