Fabio Estevam
2016-05-30 13:43:39 UTC
offset 0x40000 is protected and cannot be erased
=> sf help
No SPI flash selected. Please run `sf probe'
=> sf probe
...
SF: Detected N25Q512 with page size 256 Bytes, erase size 4 KiB, total
64 MiB
cadence_spi_set_speed: speed=1000000
=> sf protect unlock 0x40000 0x20000
cadence_spi_xfer: len=1 [bytes]
cadence_spi_xfer: len=1 [bytes]
=> saveenv
Saving Environment to SPI Flash...
Does this quick hack help? I am wondering if yous SPI flash power up=> sf help
No SPI flash selected. Please run `sf probe'
=> sf probe
...
SF: Detected N25Q512 with page size 256 Bytes, erase size 4 KiB, total
64 MiB
cadence_spi_set_speed: speed=1000000
=> sf protect unlock 0x40000 0x20000
cadence_spi_xfer: len=1 [bytes]
cadence_spi_xfer: len=1 [bytes]
=> saveenv
Saving Environment to SPI Flash...
with the SR field protected:
--- a/drivers/mtd/spi/spi_flash.c
+++ b/drivers/mtd/spi/spi_flash.c
@@ -1021,11 +1021,7 @@ int spi_flash_scan(struct spi_flash *flash)
return -EPROTONOSUPPORT;
}
- /* Flash powers up read-only, so clear BP# bits */
- if (idcode[0] == SPI_FLASH_CFI_MFR_ATMEL ||
- idcode[0] == SPI_FLASH_CFI_MFR_MACRONIX ||
- idcode[0] == SPI_FLASH_CFI_MFR_SST)
- write_sr(flash, 0);
+ write_sr(flash, 0);
/* Assign spi data */
flash->name = params->name;