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

Yao Yuan yao.yuan at nxp.com
Wed Jun 22 12:00:49 CEST 2016


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 <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];
> 
> --

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?





More information about the U-Boot mailing list