From: TsiChung Liew Date: Thu, 7 Aug 2008 00:37:17 +0000 (-0500) Subject: Change CFG_ENV_SIZE to CFG_ENV_SECT_SIZE for SPI sector erase X-Git-Tag: v2008.10-rc1~164 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=07efc9e321619c3dec213310c32e011aa6f02783;p=oweals%2Fu-boot.git Change CFG_ENV_SIZE to CFG_ENV_SECT_SIZE for SPI sector erase The CFG_ENV_SIZE is not suitable used for SPI flash erase sector size if CFG_ENV_SIZE is less than CFG_ENV_SECT_SIZE. Add condition check if CFG_ENV_SIZE is larger than CFG_ENV_SECT_SIZE, calculate the right number of sectors for erasing. Signed-off-by: TsiChung Liew --- diff --git a/common/env_sf.c b/common/env_sf.c index d641a9a73c..9077d783c3 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...");