[U-Boot-Users] [GIT PULL] AVR32 relocation

Ladislav Michl ladis at linux-mips.org
Fri Mar 2 15:37:31 CET 2007


On Mon, Nov 20, 2006 at 07:07:12PM +0100, Haavard Skinnemoen wrote:
> Thanks, but I already tried the latest patch I could find in my inbox.
> After I added a special case for AT49BV6416, it got the geometry
> right, but it still needs to learn how to "soft unlock" sectors before
> erasing/programming.
> 
> We could of course just unlock the whole thing at initialization time,
> like Linux does. AMD-style chips aren't supposed to be locked after
> reset.

Current CFI driver works with AT49BV6416 after unlocking all sectors at
initialization time. So... To create acceptable patch someone should
decide which approach is correct (unlock before erase/program or unlock
all on init)

Best regards,
	ladis

diff --git a/drivers/cfi_flash.c b/drivers/cfi_flash.c
index 5579a1e..a71c1f5 100644
--- a/drivers/cfi_flash.c
+++ b/drivers/cfi_flash.c
@@ -330,13 +330,25 @@ ulong flash_read_long (flash_info_t * info, flash_sect_t sect, uint offset)
 	return retval;
 }
 
+int flash_atmel_softlock (flash_info_t * info, long sector, int prot)
+{
+	int retcode = 0;
+
+	flash_write_cmd (info, 0, AMD_ADDR_START, 0xaa);
+	if (prot)
+		flash_write_cmd (info, sector, 0, 0x55);
+	else
+		flash_write_cmd (info, sector, 0, 0x70);
+
+	return retcode;
+}
 
 /*-----------------------------------------------------------------------
  */
 unsigned long flash_init (void)
 {
 	unsigned long size = 0;
-	int i;
+	int i, j;
 
 #ifdef CFG_FLASH_PROTECTION
 	char *s = getenv("unlock");
@@ -394,8 +406,11 @@ unsigned long flash_init (void)
 			}
 		}
 #endif /* CFG_FLASH_PROTECTION */
-	}
+	/* Unlock all sectors at reset */
+	for (j = 0; j < flash_info[i].sector_count; j++)
+		flash_atmel_softlock (&flash_info[i], j, 0);
 
+	}
 	/* Monitor protection ON by default */
 #if (CFG_MONITOR_BASE >= CFG_FLASH_BASE)
 	flash_protect (FLAG_PROTECT_SET,




More information about the U-Boot mailing list