From 07efc9e321619c3dec213310c32e011aa6f02783 Mon Sep 17 00:00:00 2001
From: TsiChung Liew <Tsi-Chung.Liew@freescale.com>
Date: Wed, 6 Aug 2008 19:37:17 -0500
Subject: [PATCH] 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 <Tsi-Chung.Liew@freescale.com>
---
 common/env_sf.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

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...");
-- 
2.39.5