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

Michael Trimarchi michael at amarulasolutions.com
Wed Jun 22 12:06:55 CEST 2016


Hi

On Wed, Jun 22, 2016 at 10:00:49AM +0000, Yao Yuan wrote:
> 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]?
> 

I understand your point but I don't have enough part number and
I can only to test on this one. I will verify this patch too and 
put my review and drop my personal one. Anyway can you ask if
the first 0x8000 are considered by boot rom? I'm trying to boot
from qspi an imx7d board and I create the parameter using
the files/qspi-nor-spansion-s25fl128s-config but not sure if I need
to flash from 0x400 or from 0x8400. And then I think that bootloader
should go from 0x1000 or from 0x9000 correct?
Then from BOOT_FROM I choose qspi but what is the DEFAULT_ADDRESS
0x1000 or 0x400? 

> 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?

For me is fine if you are sure

Michael

> 
> 
> 

-- 
| Michael Nazzareno Trimarchi                     Amarula Solutions BV |
| COO  -  Founder                                      Cruquiuskade 47 |
| +31(0)851119172                                 Amsterdam 1018 AM NL |
|                  [`as] http://www.amarulasolutions.com               |


More information about the U-Boot mailing list