
Hi!
Commit c3c016cf75360c2a0d0a065b64b438aaf7720576 is a part of the problem:
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...
Disabling flash locking like this seems to do the trick:
diff --git a/drivers/mtd/spi/spi_flash.c b/drivers/mtd/spi/spi_flash.c index 907067b..b75e66a 100644 --- a/drivers/mtd/spi/spi_flash.c +++ b/drivers/mtd/spi/spi_flash.c @@ -1131,14 +1131,16 @@ int spi_flash_scan(struct spi_flash *flash)
/* lock hooks are flash specific - assign them based on idcode0 */ switch (idcode[0]) { +#if 0 #if defined(CONFIG_SPI_FLASH_STMICRO) || defined(CONFIG_SPI_FLASH_SST) case SPI_FLASH_CFI_MFR_STMICRO: case SPI_FLASH_CFI_MFR_SST: flash->flash_lock = stm_lock; flash->flash_unlock = stm_unlock; flash->flash_is_locked = stm_is_locked; -#endif break; +#endif +#endif default: debug("SF: Lock ops not supported for %02x flash\n", idcode[0]); }
and if someone is watching, the #endif should be moved. switch (...) { break; } is strange kind of C.
Best regards, Pavel