[U-Boot-Users] [PATCH] ppc_4xx:netstal/common fixes wrong check for flash erase

Fixed an error in the Netstal specific code, where sometimes a flash was declared as not erased, even when it was.
Signed-off-by: Niklaus Giger niklaus.giger@netstal.com --- board/netstal/common/hcu_flash.c | 10 +++------- 1 files changed, 3 insertions(+), 7 deletions(-)
diff --git a/board/netstal/common/hcu_flash.c b/board/netstal/common/hcu_flash.c index be2cb37..d41d579 100644 --- a/board/netstal/common/hcu_flash.c +++ b/board/netstal/common/hcu_flash.c @@ -30,6 +30,9 @@ * Modified 6/6/2007 * Added isync * Niklaus Giger, Netstal Maschinen, niklaus.giger@netstal.com + * Modified 13/3/2007 + * Removed check whether flash is already erased. Gave false errors. + * Niklaus Giger, Netstal Maschinen, niklaus.giger@netstal.com * */
@@ -480,7 +483,6 @@ int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt) * Write a word to Flash, returns: * 0 - OK * 1 - write timeout - * 2 - Flash not erased */ static int write_word (flash_info_t * info, ulong dest, ulong data) { @@ -491,12 +493,6 @@ static int write_word (flash_info_t * info, ulong dest, ulong data) ulong start; int i;
- /* Check if Flash is (sufficiently) erased */ - if ((*((volatile FLASH_WORD_SIZE *) dest) & - (FLASH_WORD_SIZE) data) != (FLASH_WORD_SIZE) data) { - return (2); - } - for (i = 0; i < 4 / sizeof (FLASH_WORD_SIZE); i++) { int flag;

On Monday 14 January 2008, Niklaus Giger wrote:
Fixed an error in the Netstal specific code, where sometimes a flash was declared as not erased, even when it was.
Signed-off-by: Niklaus Giger niklaus.giger@netstal.com
board/netstal/common/hcu_flash.c | 10 +++------- 1 files changed, 3 insertions(+), 7 deletions(-)
diff --git a/board/netstal/common/hcu_flash.c b/board/netstal/common/hcu_flash.c index be2cb37..d41d579 100644 --- a/board/netstal/common/hcu_flash.c +++ b/board/netstal/common/hcu_flash.c @@ -30,6 +30,9 @@
- Modified 6/6/2007
- Added isync
- Niklaus Giger, Netstal Maschinen, niklaus.giger@netstal.com
- Modified 13/3/2007
- Removed check whether flash is already erased. Gave false errors.
- Niklaus Giger, Netstal Maschinen, niklaus.giger@netstal.com
Don't add commit logs to the source code. We have git for this. So please add descriptive commit texts to your commit logs.
*/
@@ -480,7 +483,6 @@ int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt) * Write a word to Flash, returns:
- 0 - OK
- 1 - write timeout
*/
- 2 - Flash not erased
static int write_word (flash_info_t * info, ulong dest, ulong data) { @@ -491,12 +493,6 @@ static int write_word (flash_info_t * info, ulong dest, ulong data) ulong start; int i;
- /* Check if Flash is (sufficiently) erased */
- if ((*((volatile FLASH_WORD_SIZE *) dest) &
(FLASH_WORD_SIZE) data) != (FLASH_WORD_SIZE) data) {
return (2);
- }
Wow. I don't think you really solve this problem with this patch. You are just lucky that everything works with this change. Could be that the pointer accesses are the main source of this problem. I suggest that you try to move to the common CFI driver which now supports non CFI flash chips via the JEDEC code.
Best regards, Stefan
===================================================================== DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: office@denx.de =====================================================================
participants (2)
-
Niklaus Giger
-
Stefan Roese