Re: [U-Boot] [PATCH] Change CFG_ENV_SIZE to CFG_ENV_SECT_SIZE for SPI sector erase
Wolfgang, You're right. Can't ignore the chance that CFG_ENV_SIZE might be larger than CFG_ENV_SECT_SIZE, although both are defined in platform configuration file. I will send out the patch again with condition check. [/snip] u32 sector = 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++; } if (spi_flash_erase(env_flash, CFG_ENV_OFFSET, sector * CFG_ENV_SECT_SIZE)) ... if (spi_flash_write(env_flash, CFG_ENV_OFFSET, CFG_ENV_SIZE, env_ptr)) ... Regards, TsiChung -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Sent: Tuesday, August 12, 2008 3:05 PM To: Liew Tsi Chung Cc: U-Boot; Rigby John Subject: Re: [PATCH] Change CFG_ENV_SIZE to CFG_ENV_SECT_SIZE for SPI sector erase Dear Tsi-Chung Liew, In message [EMAIL PROTECTED] you wrote: From: TsiChung Liew [EMAIL PROTECTED] The CFG_ENV_SIZE is not suitable used for SPI flash erase sector size. Signed-off-by: TsiChung Liew [EMAIL PROTECTED] --- common/env_sf.c |2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/common/env_sf.c b/common/env_sf.c index d641a9a..0a0626e 100644 --- a/common/env_sf.c +++ b/common/env_sf.c @@ -69,7 +69,7 @@ int saveenv(void) } 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, CFG_ENV_SECT_SIZE)) Is it always guaranteed that CFG_ENV_SIZE = CFG_ENV_SECT_SIZE ? Otherwise several sectors might need to be erased... Best regards, Wolfgang Denk -- DENX Software Engineering GmbH, MD: Wolfgang Denk Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: [EMAIL PROTECTED] Due to lack of disk space, this fortune database has been discontinued. ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
[U-Boot] [PATCH] Change CFG_ENV_SIZE to CFG_ENV_SECT_SIZE for SPI sector erase
From: TsiChung Liew [EMAIL PROTECTED] 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 [EMAIL PROTECTED] --- 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 d641a9a..9077d78 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...); -- 1.5.6.4 ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
[U-Boot] [PATCH] Change CFG_ENV_SIZE to CFG_ENV_SECT_SIZE for SPI sector erase
From: TsiChung Liew [EMAIL PROTECTED] The CFG_ENV_SIZE is not suitable used for SPI flash erase sector size. Signed-off-by: TsiChung Liew [EMAIL PROTECTED] --- common/env_sf.c |2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/common/env_sf.c b/common/env_sf.c index d641a9a..0a0626e 100644 --- a/common/env_sf.c +++ b/common/env_sf.c @@ -69,7 +69,7 @@ int saveenv(void) } 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, CFG_ENV_SECT_SIZE)) return 1; puts(Writing to SPI flash...); -- 1.5.6.4 ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot