Update of /cvsroot/blob/blob/src/blob
In directory usw-pr-cvs1:/tmp/cvs-serv11137/src/blob
Modified Files:
intel16.c intel32.c
Log Message:
clear flash error status before attempting to lock/unlock a block; otherwise past errors may be seen. this fixes bug 514517 (tested with C3 flash).
Index: intel16.c
===================================================================
RCS file: /cvsroot/blob/blob/src/blob/intel16.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- intel16.c 15 Jan 2002 01:32:47 -0000 1.5
+++ intel16.c 11 Mar 2002 22:06:55 -0000 1.6
@@ -66,12 +66,6 @@
#define FLASH_TIMEOUT (20)
-static void clear_status(u16 *addr)
-{
- *addr = STATUS_CLEAR;
- barrier();
-}
-
static int get_status(u16 *addr)
{
u32 start, end;
@@ -93,6 +87,12 @@
}
}
+static void clear_status(u16 *addr)
+{
+ *addr = STATUS_CLEAR;
+ barrier();
+}
+
static void print_flash_error(const char *what, u16 *addr, int status)
{
serial_write('\n');
@@ -249,6 +249,8 @@
u16 *p = (u16 *) blockStart;
int status;
+ clear_status(p);
+
*p = CONFIG_SETUP;
barrier();
*p = LOCK_SECTOR;
@@ -273,6 +275,8 @@
u16 *p = (u16 *) blockStart;
int status;
+ clear_status(p);
+
*p = CONFIG_SETUP;
barrier();
*p = UNLOCK_SECTOR;
@@ -297,6 +301,8 @@
{
u16 *p = (u16 *) blockStart;
u16 result;
+
+ clear_status(p);
*p = READ_CONFIG;
barrier();
Index: intel32.c
===================================================================
RCS file: /cvsroot/blob/blob/src/blob/intel32.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- intel32.c 15 Jan 2002 01:32:47 -0000 1.5
+++ intel32.c 11 Mar 2002 22:06:55 -0000 1.6
@@ -66,12 +66,6 @@
#define FLASH_TIMEOUT (20)
-static void clear_status(u32 *addr)
-{
- *addr = data_to_flash(STATUS_CLEAR);
- barrier();
-}
-
static int get_status(u32 *addr)
{
u32 start, end;
@@ -93,6 +87,12 @@
}
}
+static void clear_status(u32 *addr)
+{
+ *addr = data_to_flash(STATUS_CLEAR);
+ barrier();
+}
+
static void print_flash_error(const char *what, u32 *addr, int status)
{
serial_write('\n');
@@ -199,6 +199,8 @@
{
u32 status;
+ clear_status(blockStart);
+
*blockStart = data_to_flash(CONFIG_SETUP);
barrier();
*blockStart = data_to_flash(LOCK_SECTOR);
@@ -222,6 +224,8 @@
{
u32 status;
+ clear_status(blockStart);
+
*blockStart = data_to_flash(CONFIG_SETUP);
barrier();
*blockStart = data_to_flash(UNLOCK_SECTOR);
@@ -244,6 +248,8 @@
static int flash_query_block_lock_intel32(u32 *blockStart)
{
u32 result;
+
+ clear_status(blockStart);
*blockStart = data_to_flash(READ_CONFIG);
barrier();
|