diff options
Diffstat (limited to 'common/env_sf.c')
| -rw-r--r-- | common/env_sf.c | 10 | 
1 files changed, 9 insertions, 1 deletions
| diff --git a/common/env_sf.c b/common/env_sf.c index d641a9a73..9077d783c 100644 --- a/common/env_sf.c +++ b/common/env_sf.c @@ -63,13 +63,21 @@ uchar env_get_char_spec(int index)  int saveenv(void)  { +	u32 sector = 1; +  	if (!env_flash) {  		puts("Environment SPI flash not initialized\n");  		return 1;  	} +	if (CFG_ENV_SIZE > CFG_ENV_SECT_SIZE) { +		sector = CFG_ENV_SIZE / CFG_ENV_SECT_SIZE; +		if (CFG_ENV_SIZE % CFG_ENV_SECT_SIZE) +			sector++; +	} +  	puts("Erasing SPI flash..."); -	if (spi_flash_erase(env_flash, CFG_ENV_OFFSET, CFG_ENV_SIZE)) +	if (spi_flash_erase(env_flash, CFG_ENV_OFFSET, sector * CFG_ENV_SECT_SIZE))  		return 1;  	puts("Writing to SPI flash..."); |