diff options
Diffstat (limited to 'packages/u-boot/u-boot-1.1.4/at32stk1000/avr32-boards-fix-flash-read.patch')
-rw-r--r-- | packages/u-boot/u-boot-1.1.4/at32stk1000/avr32-boards-fix-flash-read.patch | 120 |
1 files changed, 0 insertions, 120 deletions
diff --git a/packages/u-boot/u-boot-1.1.4/at32stk1000/avr32-boards-fix-flash-read.patch b/packages/u-boot/u-boot-1.1.4/at32stk1000/avr32-boards-fix-flash-read.patch deleted file mode 100644 index a1e9fe89e5..0000000000 --- a/packages/u-boot/u-boot-1.1.4/at32stk1000/avr32-boards-fix-flash-read.patch +++ /dev/null @@ -1,120 +0,0 @@ -Index: u-boot-orig/board/atmel/ngw/flash.c -=================================================================== ---- u-boot-orig.orig/board/atmel/ngw/flash.c 2007-01-03 11:31:44.000000000 +0100 -+++ u-boot-orig/board/atmel/ngw/flash.c 2007-01-03 11:33:13.000000000 +0100 -@@ -161,7 +161,7 @@ - { - unsigned long flags; - uint16_t *base, *p, *s, *end; -- uint16_t word, status; -+ uint16_t word, status,status1; - int ret = ERR_OK; - - if (addr < info->start[0] -@@ -196,20 +196,36 @@ - sync_write_buffer(); - - /* Wait for completion */ -- do { -+ status1 = readw(p); -+ do { - /* TODO: Timeout */ -- status = readw(p); -- } while ((status != word) && !(status & 0x28)); -- -+ status = status1; -+ status1=readw(p); -+ } while ( ((status ^ status1) & 0x40) && // toggle bit has toggled -+ !(status1 & 0x28) // status is "working" -+ ); -+ -+ // We'll need to check once again for toggle bit because the toggle bit -+ // may stop toggling as I/O5 changes to "1" (ref at49bv642.pdf p9) -+ status1=readw(p); -+ status=readw(p); -+ if ((status ^ status1) & 0x40) -+ { -+ printf("Flash write error at address 0x%p: 0x%02x != 0x%02x\n", -+ p, status,word); -+ ret = ERR_PROG_ERROR; -+ writew(0xf0, base); -+ readw(base); -+ break; -+ } -+ // we can now verify status==word if we want to. -+ -+ // is this Product ID Exit command really required?? -+ // --If configuration is 00 (the default) the device is allready in read mode, -+ // and the instruction is not required! - writew(0xf0, base); - readw(base); - -- if (status != word) { -- printf("Flash write error at address 0x%p: 0x%02x\n", -- p, status); -- ret = ERR_PROG_ERROR; -- break; -- } - } - - local_irq_restore(flags); -Index: u-boot-orig/board/atstk1000/flash.c -=================================================================== ---- u-boot-orig.orig/board/atstk1000/flash.c 2007-01-03 11:31:44.000000000 +0100 -+++ u-boot-orig/board/atstk1000/flash.c 2007-01-03 11:33:13.000000000 +0100 -@@ -160,7 +160,7 @@ - { - unsigned long flags; - uint16_t *base, *p, *s, *end; -- uint16_t word, status; -+ uint16_t word, status,status1; - int ret = ERR_OK; - - if (addr < info->start[0] -@@ -195,20 +195,36 @@ - sync_write_buffer(); - - /* Wait for completion */ -- do { -+ status1 = readw(p); -+ do { - /* TODO: Timeout */ -- status = readw(p); -- } while ((status != word) && !(status & 0x28)); -- -+ status = status1; -+ status1=readw(p); -+ } while ( ((status ^ status1) & 0x40) && // toggle bit has toggled -+ !(status1 & 0x28) // status is "working" -+ ); -+ -+ // We'll need to check once again for toggle bit because the toggle bit -+ // may stop toggling as I/O5 changes to "1" (ref at49bv642.pdf p9) -+ status1=readw(p); -+ status=readw(p); -+ if ((status ^ status1) & 0x40) -+ { -+ printf("Flash write error at address 0x%p: 0x%02x != 0x%02x\n", -+ p, status,word); -+ ret = ERR_PROG_ERROR; -+ writew(0xf0, base); -+ readw(base); -+ break; -+ } -+ // we can now verify status==word if we want to. -+ -+ // is this Product ID Exit command really required?? -+ // --If configuration is 00 (the default) the device is allready in read mode, -+ // and the instruction is not required! - writew(0xf0, base); - readw(base); - -- if (status != word) { -- printf("Flash write error at address 0x%p: 0x%02x\n", -- p, status); -- ret = ERR_PROG_ERROR; -- break; -- } - } - - local_irq_restore(flags); |