On 06/22/2016 03:59 PM, Michael Trimarchi wrote: > 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 <mich...@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]; > > --
Hi Michael, >From some datasheet for spansion flash, it seems all the spansion S25FS family should disable 4kb. So how about just judge the idcode[0]? Like: diff --git a/drivers/mtd/spi/spi_flash.c b/drivers/mtd/spi/spi_flash.c index 64d4e0f..cfe3649 100644 --- a/drivers/mtd/spi/spi_flash.c +++ b/drivers/mtd/spi/spi_flash.c @@ -1072,8 +1072,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 (idcode[0] == SPI_FLASH_CFI_MFR_SPANSION) { int ret; u8 id[6]; How about your think? _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot