This is the mail archive of the
ecos-patches@sources.redhat.com
mailing list for the eCos project.
AMD flash driver improvement
- From: Thomas Koeller <thomas dot koeller at baslerweb dot com>
- To: ecos-patches at sources dot redhat dot com
- Date: Wed, 10 Sep 2003 20:23:54 +0200
- Subject: AMD flash driver improvement
- Organization: Basler AG
Here's another improvement to the am29xxxxx flash driver. It
adds support for the 'buffered write' programming method that
increases the programming speed by roughly a factor of four.
As I am working with the AM29LV128 only and do not know about
the buffered write capabilities of all the other chips supported
by the driver (and don't have the time to find out), I
introduced a new field in the flash descriptor struct to
selectivly enable the feature, which I did for the AM29LV128 only.
The code to determine the sector (block) base address is only
tested for the AM29LV128, which does not have bootblocks and is
not banked, so problems may show when enabling buffered write
for banked or bootblock flashes.
The patch also fixes the formatting of the ChangeLog entry for my
previous patch, which was slightly odd.
tk
--------------------------------------------------
Thomas Koeller, Software Development
Basler Vision Technologies
An der Strusbek 60-62
22926 Ahrensburg
Germany
Tel +49 (4102) 463-162
Fax +49 (4102) 463-239
mailto:thomas.koeller@baslerweb.com
http://www.baslerweb.com
==============================
diff -ru packages-orig/devs/flash/amd/am29xxxxx/current/ChangeLog packages/devs/flash/amd/am29xxxxx/current/ChangeLog
--- packages-orig/devs/flash/amd/am29xxxxx/current/ChangeLog 2003-09-09 12:12:55.000000000 +0200
+++ packages/devs/flash/amd/am29xxxxx/current/ChangeLog 2003-09-09 17:20:51.000000000 +0200
@@ -1,8 +1,13 @@
+2003-09-09 Thomas Koeller <thomas.koeller@baslerweb.com>
+
+ * include/flash_am29xxxxx.inl:
+ * include/flash_am29xxxxx_parts.inl: Added support for write
+ buffer programming.
+
2003-09-04 Thomas Koeller <thomas.koeller@baslerweb.com>
- * include/flash_am29xxxxx_parts.inl (CYGHWR_DEVS_FLASH_AMD_AM29LV128):
- * cdl/flash_amd_am29xxxxx.cdl:
- Add support for Am29LV128 part.
+ * include/flash_am29xxxxx_parts.inl (CYGHWR_DEVS_FLASH_AMD_AM29LV128):
+ * cdl/flash_amd_am29xxxxx.cdl: Add support for Am29LV128 part.
2003-08-17 Bart Veer <bartv@ecoscentric.com>
@@ -15,9 +20,8 @@
2003-07-23 Chris Garry <cgarry@sweeneydesign.co.uk>
- * include/flash_am29xxxxx_parts.inl (CYGHWR_DEVS_FLASH_AMD_AM29LV400):
- * cdl/flash_amd_am29xxxxx.cdl:
- Add support for Am29LV400 part.
+ * include/flash_am29xxxxx_parts.inl (CYGHWR_DEVS_FLASH_AMD_AM29LV400):
+ * cdl/flash_amd_am29xxxxx.cdl: Add support for Am29LV400 part.
2003-04-03 Jani Monoses <jani@iv.ro>
diff -ru packages-orig/devs/flash/amd/am29xxxxx/current/include/flash_am29xxxxx.inl packages/devs/flash/amd/am29xxxxx/current/include/flash_am29xxxxx.inl
--- packages-orig/devs/flash/amd/am29xxxxx/current/include/flash_am29xxxxx.inl 2003-08-20 10:57:50.000000000 +0200
+++ packages/devs/flash/amd/am29xxxxx/current/include/flash_am29xxxxx.inl 2003-09-10 19:11:44.000000000 +0200
@@ -68,6 +68,7 @@
#include <pkgconf/devs_flash_amd_am29xxxxx.h>
#include <cyg/hal/hal_arch.h>
#include <cyg/hal/hal_cache.h>
+#include <cyg/hal/hal_misc.h>
#include CYGHWR_MEMORY_LAYOUT_H
#define _FLASH_PRIVATE_
@@ -80,6 +81,8 @@
#define FLASH_Reset FLASHWORD( 0xF0 )
#define FLASH_Program FLASHWORD( 0xA0 )
#define FLASH_Block_Erase FLASHWORD( 0x30 )
+#define FLASH_Load_Buffer FLASHWORD( 0x25 )
+#define FLASH_Flush_Buffer FLASHWORD( 0x29 )
#define FLASH_Data FLASHWORD( 0x80 ) // Data complement
#define FLASH_Busy FLASHWORD( 0x40 ) // "Toggle" bit
@@ -169,6 +172,7 @@
cyg_uint32 banks[8]; // bank offsets, highest to lowest (lowest should be 0)
// (only one entry for now, increase to support devices
// with more banks).
+ cyg_uint32 bufsiz; // write buffer size in units of flash_data_t
} flash_dev_info_t;
static const flash_dev_info_t* flash_dev_info;
@@ -187,6 +191,13 @@
__attribute__ ((section (".2ram.flash_program_buf")));
//----------------------------------------------------------------------------
+// Auxiliary functions
+static flash_data_t * find_bank(volatile flash_data_t * base, void * addr, CYG_ADDRWORD * bo)
+ __attribute__ ((section (".2ram.find_bank")));
+static flash_data_t * find_sector(volatile flash_data_t * addr, unsigned long *remain_size)
+ __attribute__ ((section (".2ram.find_sector")));
+
+//----------------------------------------------------------------------------
// Flash Query
//
// Only reads the manufacturer and part number codes for the first
@@ -306,22 +317,8 @@
cyg_bool bootblock = false;
cyg_uint32 *bootblocks = (cyg_uint32 *)0;
CYG_ADDRWORD bank_offset;
- BANK = ROM = (volatile flash_data_t*)((unsigned long)block & flash_dev_info->base_mask);
-
- // If this is a banked device, find the bank where commands should
- // be addressed to.
- if (flash_dev_info->banked) {
- int b = 0;
- bank_offset = (unsigned long)block & ~(flash_dev_info->block_size-1);
- bank_offset -= (unsigned long) ROM;
- for(;;) {
- if (bank_offset >= flash_dev_info->banks[b]) {
- BANK = (volatile flash_data_t*) ((unsigned long)ROM + flash_dev_info->banks[b]);
- break;
- }
- b++;
- }
- }
+ ROM = (volatile flash_data_t*)((unsigned long)block & flash_dev_info->base_mask);
+ BANK = find_bank(ROM, block, &bank_offset);
f_s0 = FLASH_P2V(BANK);
f_s1 = FLASH_P2V(BANK + FLASH_Setup_Addr1);
@@ -434,50 +431,75 @@
{
volatile flash_data_t* ROM;
volatile flash_data_t* BANK;
+ volatile flash_data_t* SECT;
volatile flash_data_t* data_ptr = (volatile flash_data_t*) data;
- volatile flash_data_t* addr_v;
volatile flash_data_t* addr_p = (flash_data_t*) addr;
+ volatile flash_data_t* addr_v = FLASH_P2V(addr_p);
volatile flash_data_t *f_s1, *f_s2;
CYG_ADDRWORD bank_offset;
int timeout;
int res = FLASH_ERR_OK;
+ const CYG_ADDRWORD mask =
+ flash_dev_info->bufsiz * sizeof (flash_data_t) - 1;
+ unsigned long rem_sect_size;
// check the address is suitably aligned
if ((unsigned long)addr & (CYGNUM_FLASH_INTERLEAVE * CYGNUM_FLASH_WIDTH / 8 - 1))
return FLASH_ERR_INVALID;
// Base address of device(s) being programmed.
- BANK = ROM = (volatile flash_data_t*)((unsigned long)addr_p & flash_dev_info->base_mask);
-
- // If this is a banked device, find the bank where commands should
- // be addressed to.
- if (flash_dev_info->banked) {
- int b = 0;
- bank_offset = (unsigned long)addr & ~(flash_dev_info->block_size-1);
- bank_offset -= (unsigned long) ROM;
- for(;;) {
- if (bank_offset >= flash_dev_info->banks[b]) {
- BANK = (volatile flash_data_t*) ((unsigned long)ROM + flash_dev_info->banks[b]);
- break;
- }
- b++;
- }
- }
+ ROM = (volatile flash_data_t*)((unsigned long)addr_p & flash_dev_info->base_mask);
+ BANK = find_bank(ROM, addr, &bank_offset);
f_s1 = FLASH_P2V(BANK + FLASH_Setup_Addr1);
f_s2 = FLASH_P2V(BANK + FLASH_Setup_Addr2);
+ rem_sect_size = 0;
+ len /= sizeof (flash_data_t);
while (len > 0) {
flash_data_t state;
+ unsigned int nwords;
- addr_v = FLASH_P2V(addr_p++);
+ addr_v = FLASH_P2V(addr_p);
- // Program data [byte] - 4 step sequence
- *f_s1 = FLASH_Setup_Code1;
- *f_s2 = FLASH_Setup_Code2;
- *f_s1 = FLASH_Program;
- *addr_v = *data_ptr;
+ if (flash_dev_info->bufsiz > 1) {
+ // Assume buffer size is power of two
+ unsigned int i;
+
+ if (rem_sect_size == 0) {
+ SECT = find_sector(addr_v, &rem_sect_size);
+ rem_sect_size /= sizeof (flash_data_t);
+ }
+
+ // Computer word count to write
+ nwords = flash_dev_info->bufsiz
+ - (((CYG_ADDRWORD) addr_v & mask) / sizeof (flash_data_t));
+ if (nwords > len)
+ nwords = len;
+
+ // Initiate buffered write
+ *f_s1 = FLASH_Setup_Code1;
+ *f_s2 = FLASH_Setup_Code2;
+ *SECT = FLASH_Load_Buffer;
+ *SECT = nwords - 1;
+
+ // Load data into write buffer, flush buffer
+ for(i = 0; i < nwords; i++)
+ *addr_v++ = *data_ptr++;
+ --addr_v; --data_ptr;
+ *SECT = FLASH_Flush_Buffer;
+ rem_sect_size -= nwords;
+ } else {
+ // Program data [byte] - 4 step sequence
+ *f_s1 = FLASH_Setup_Code1;
+ *f_s2 = FLASH_Setup_Code2;
+ *f_s1 = FLASH_Program;
+ *addr_v = *data_ptr;
+
+ nwords = 1;
+ }
+ addr_p += nwords;
timeout = CYGNUM_FLASH_TIMEOUT_PROGRAM;
while (true) {
state = *addr_v;
@@ -502,7 +524,7 @@
if (FLASH_ERR_OK == res) res = FLASH_ERR_DRV_VERIFY;
break;
}
- len -= sizeof(*data_ptr);
+ len -= nwords;
}
// Ideally, we'd want to return not only the failure code, but also
@@ -510,4 +532,57 @@
return res;
}
+static flash_data_t *
+find_bank(volatile flash_data_t * base, void * addr, CYG_ADDRWORD * bo)
+{
+ volatile flash_data_t * res = base;
+
+ if (flash_dev_info->banked) {
+ int b = 0;
+ *bo = (unsigned long)addr & ~(flash_dev_info->block_size-1);
+ *bo -= (unsigned long) base;
+ for(;;) {
+ if (*bo >= flash_dev_info->banks[b]) {
+ res = (volatile flash_data_t*) ((unsigned long)base + flash_dev_info->banks[b]);
+ break;
+ }
+ b++;
+ }
+ }
+
+ return res;
+}
+
+static flash_data_t *
+find_sector(volatile flash_data_t * addr, unsigned long *remain_size)
+{
+ const CYG_ADDRESS mask = flash_dev_info->block_size - 1;
+ const CYG_ADDRESS a = (CYG_ADDRESS) addr;
+ const CYG_ADDRESS base = a & flash_dev_info->base_mask;
+ const CYG_ADDRESS res = a & ~mask;
+
+ *remain_size = flash_dev_info->block_size - (a & mask);
+
+ if (flash_dev_info->bootblock) {
+ cyg_uint32 * bootblocks = flash_dev_info->bootblocks;
+ while (*bootblocks != _LAST_BOOTBLOCK) {
+ int ls = flash_dev_info->block_size;
+
+ if (*bootblocks++ == (res - base)) {
+ while (res + *bootblocks < a) {
+ res += *bootblocks++;
+ }
+ } else {
+ // Skip over segment
+ while ((ls -= *bootblocks++) > 0) ;
+ }
+ }
+
+ if (*bootblocks != _LAST_BOOTBLOCK)
+ *remain_size = *bootblocks - (a - res);
+ }
+
+ return (flash_data_t *) res;
+}
+
#endif // CYGONCE_DEVS_FLASH_AMD_AM29XXXXX_INL
diff -ru packages-orig/devs/flash/amd/am29xxxxx/current/include/flash_am29xxxxx_parts.inl packages/devs/flash/amd/am29xxxxx/current/include/flash_am29xxxxx_parts.inl
--- packages-orig/devs/flash/amd/am29xxxxx/current/include/flash_am29xxxxx_parts.inl 2003-09-09 12:12:56.000000000 +0200
+++ packages/devs/flash/amd/am29xxxxx/current/include/flash_am29xxxxx_parts.inl 2003-09-10 16:50:35.000000000 +0200
@@ -88,7 +88,8 @@
device_size: 0x80000 * CYGNUM_FLASH_INTERLEAVE,
base_mask : ~(0x80000 * CYGNUM_FLASH_INTERLEAVE - 1),
bootblock : false,
- banked : false
+ banked : false,
+ bufsiz : 1
},
#endif
#ifdef CYGHWR_DEVS_FLASH_AMD_AM29LV160
@@ -106,7 +107,8 @@
0x004000 * CYGNUM_FLASH_INTERLEAVE,
_LAST_BOOTBLOCK
},
- banked : false
+ banked : false,
+ bufsiz : 1
},
{ // MBM29LV160-B | AM29LV160-B
device_id : FLASHWORD(0x49),
@@ -122,7 +124,8 @@
0x008000 * CYGNUM_FLASH_INTERLEAVE,
_LAST_BOOTBLOCK
},
- banked : false
+ banked : false,
+ bufsiz : 1
},
#endif
#ifdef CYGHWR_DEVS_FLASH_AMD_AM29LV200
@@ -140,7 +143,8 @@
0x004000 * CYGNUM_FLASH_INTERLEAVE,
_LAST_BOOTBLOCK
},
- banked : false
+ banked : false,
+ bufsiz : 1
},
{ // AM29LV200-B
device_id : FLASHWORD(0xbf),
@@ -156,7 +160,8 @@
0x008000 * CYGNUM_FLASH_INTERLEAVE,
_LAST_BOOTBLOCK
},
- banked : false
+ banked : false,
+ bufsiz : 1
},
#endif
#ifdef CYGHWR_DEVS_FLASH_AMD_AM29LV320D
@@ -178,7 +183,8 @@
0x002000 * CYGNUM_FLASH_INTERLEAVE,
_LAST_BOOTBLOCK
},
- banked : false
+ banked : false,
+ bufsiz : 1
},
{ // AM29LV320D
device_id : FLASHWORD(0xF9),
@@ -198,7 +204,8 @@
0x002000 * CYGNUM_FLASH_INTERLEAVE,
_LAST_BOOTBLOCK
},
- banked : false
+ banked : false,
+ bufsiz : 1
},
#endif
#ifdef CYGHWR_DEVS_FLASH_AMD_AM29DL322D
@@ -223,7 +230,8 @@
banked : true,
banks : { 0x380000 * CYGNUM_FLASH_INTERLEAVE,
0
- }
+ },
+ bufsiz : 1
},
{ // AM29DL322D-B
device_id : FLASHWORD(0x56),
@@ -246,7 +254,8 @@
banked : true,
banks : { 0x80000 * CYGNUM_FLASH_INTERLEAVE,
0
- }
+ },
+ bufsiz : 1
},
#endif
#ifdef CYGHWR_DEVS_FLASH_AMD_AM29DL323D
@@ -271,7 +280,8 @@
banked : true,
banks : { 0x300000 * CYGNUM_FLASH_INTERLEAVE,
0
- }
+ },
+ bufsiz : 1
},
{ // AM29DL323D-B
device_id : FLASHWORD(0x53),
@@ -294,7 +304,8 @@
banked : true,
banks : { 0x100000 * CYGNUM_FLASH_INTERLEAVE,
0
- }
+ },
+ bufsiz : 1
},
#endif
#ifdef CYGHWR_DEVS_FLASH_AMD_AM29DL324D
@@ -319,7 +330,8 @@
banked : true,
banks : { 0x200000 * CYGNUM_FLASH_INTERLEAVE,
0
- }
+ },
+ bufsiz : 1
},
{ // AM29DL324D-B
device_id : FLASHWORD(0x5f),
@@ -342,7 +354,8 @@
banked : true,
banks : { 0x200000 * CYGNUM_FLASH_INTERLEAVE,
0
- }
+ },
+ bufsiz : 1
},
#endif
#ifdef CYGHWR_DEVS_FLASH_AMD_AM29DL640D
@@ -381,7 +394,8 @@
0x0400000 * CYGNUM_FLASH_INTERLEAVE,
0x0100000 * CYGNUM_FLASH_INTERLEAVE,
0
- }
+ },
+ bufsiz : 1
}
#endif
#ifdef CYGHWR_DEVS_FLASH_AMD_AM29F800
@@ -399,7 +413,8 @@
0x04000 * CYGNUM_FLASH_INTERLEAVE,
_LAST_BOOTBLOCK
},
- banked : false
+ banked : false,
+ bufsiz : 1
},
{ // AM29F800-B
device_id : FLASHWORD(0x58),
@@ -415,7 +430,8 @@
0x008000 * CYGNUM_FLASH_INTERLEAVE,
_LAST_BOOTBLOCK
},
- banked : false
+ banked : false,
+ bufsiz : 1
},
#endif
#ifdef CYGHWR_DEVS_FLASH_AMD_AM29LV800
@@ -433,7 +449,8 @@
0x04000 * CYGNUM_FLASH_INTERLEAVE,
_LAST_BOOTBLOCK
},
- banked : false
+ banked : false,
+ bufsiz : 1
},
{ // AM29LV800-B
device_id : FLASHWORD(0x5b),
@@ -449,7 +466,8 @@
0x008000 * CYGNUM_FLASH_INTERLEAVE,
_LAST_BOOTBLOCK
},
- banked : false
+ banked : false,
+ bufsiz : 1
},
#endif
#ifdef CYGHWR_DEVS_FLASH_AMD_TC58FVB800
@@ -467,7 +485,8 @@
0x008000 * CYGNUM_FLASH_INTERLEAVE,
_LAST_BOOTBLOCK
},
- banked : false
+ banked : false,
+ bufsiz : 1
},
#endif
@@ -481,7 +500,8 @@
device_size: 0x1000000 * CYGNUM_FLASH_INTERLEAVE,
base_mask : ~(0x1000000 * CYGNUM_FLASH_INTERLEAVE - 1),
bootblock : false,
- banked : false
+ banked : false,
+ bufsiz : 16
},
#endif
#ifdef CYGHWR_DEVS_FLASH_AMD_AM29LV160
@@ -499,7 +519,8 @@
0x004000 * CYGNUM_FLASH_INTERLEAVE,
_LAST_BOOTBLOCK
},
- banked : false
+ banked : false,
+ bufsiz : 1
},
{ // MBM29LV160-B | AM29LV160-B
device_id : FLASHWORD(0x2249),
@@ -515,7 +536,8 @@
0x008000 * CYGNUM_FLASH_INTERLEAVE,
_LAST_BOOTBLOCK
},
- banked : false
+ banked : false,
+ bufsiz : 1
},
#endif
#ifdef CYGHWR_DEVS_FLASH_AMD_AM29PL160
@@ -533,7 +555,8 @@
0x038000 * CYGNUM_FLASH_INTERLEAVE,
_LAST_BOOTBLOCK
},
- banked : false
+ banked : false,
+ bufsiz : 1
},
#endif
#ifdef CYGHWR_DEVS_FLASH_AMD_AM29LV200
@@ -551,7 +574,8 @@
0x004000 * CYGNUM_FLASH_INTERLEAVE,
_LAST_BOOTBLOCK
},
- banked : false
+ banked : false,
+ bufsiz : 1
},
{ // AM29LV200-B
device_id : FLASHWORD(0x22bf),
@@ -567,7 +591,8 @@
0x008000 * CYGNUM_FLASH_INTERLEAVE,
_LAST_BOOTBLOCK
},
- banked : false
+ banked : false,
+ bufsiz : 1
},
#endif
#ifdef CYGHWR_DEVS_FLASH_ST_M29W200B
@@ -585,7 +610,8 @@
0x004000 * CYGNUM_FLASH_INTERLEAVE,
_LAST_BOOTBLOCK
},
- banked : false
+ banked : false,
+ bufsiz : 1
},
{ // ST M29W200BB
device_id : FLASHWORD(0x0057),
@@ -601,7 +627,8 @@
0x008000 * CYGNUM_FLASH_INTERLEAVE,
_LAST_BOOTBLOCK
},
- banked : false
+ banked : false,
+ bufsiz : 1
},
#endif
#ifdef CYGHWR_DEVS_FLASH_AMD_AM29LV320D
@@ -623,7 +650,8 @@
0x002000 * CYGNUM_FLASH_INTERLEAVE,
_LAST_BOOTBLOCK
},
- banked : false
+ banked : false,
+ bufsiz : 1
},
{ // AM29LV320D
device_id : FLASHWORD(0x22F9),
@@ -643,7 +671,8 @@
0x002000 * CYGNUM_FLASH_INTERLEAVE,
_LAST_BOOTBLOCK
},
- banked : false
+ banked : false,
+ bufsiz : 1
},
#endif
#ifdef CYGHWR_DEVS_FLASH_AMD_AM29DL322D
@@ -668,7 +697,8 @@
banked : true,
banks : { 0x380000 * CYGNUM_FLASH_INTERLEAVE,
0
- }
+ },
+ bufsiz : 1
},
{ // AM29DL322D-B
device_id : FLASHWORD(0x2256),
@@ -691,7 +721,8 @@
banked : true,
banks : { 0x80000 * CYGNUM_FLASH_INTERLEAVE,
0
- }
+ },
+ bufsiz : 1
},
#endif
#ifdef CYGHWR_DEVS_FLASH_AMD_AM29DL323D
@@ -716,7 +747,8 @@
banked : true,
banks : { 0x300000 * CYGNUM_FLASH_INTERLEAVE,
0
- }
+ },
+ bufsiz : 1
},
{ // AM29DL323D-B
device_id : FLASHWORD(0x2253),
@@ -739,7 +771,8 @@
banked : true,
banks : { 0x100000 * CYGNUM_FLASH_INTERLEAVE,
0
- }
+ },
+ bufsiz : 1
},
#endif
#ifdef CYGHWR_DEVS_FLASH_AMD_AM29DL324D
@@ -764,7 +797,8 @@
banked : true,
banks : { 0x200000 * CYGNUM_FLASH_INTERLEAVE,
0
- }
+ },
+ bufsiz : 1
},
{ // AM29DL324D-B
device_id : FLASHWORD(0x225f),
@@ -787,7 +821,8 @@
banked : true,
banks : { 0x200000 * CYGNUM_FLASH_INTERLEAVE,
0
- }
+ },
+ bufsiz : 1
},
#endif
#ifdef CYGHWR_DEVS_FLASH_AMD_AM29DL640D
@@ -826,7 +861,8 @@
0x400000 * CYGNUM_FLASH_INTERLEAVE,
0x100000 * CYGNUM_FLASH_INTERLEAVE,
0
- }
+ },
+ bufsiz : 1
}
#endif
#ifdef CYGHWR_DEVS_FLASH_AMD_AM29LV400
@@ -844,7 +880,8 @@
0x04000 * CYGNUM_FLASH_INTERLEAVE,
_LAST_BOOTBLOCK
},
- banked : false
+ banked : false,
+ bufsiz : 1
},
{ // AM29LV400-B
device_id : FLASHWORD(0x22ba),
@@ -860,7 +897,8 @@
0x008000 * CYGNUM_FLASH_INTERLEAVE,
_LAST_BOOTBLOCK
},
- banked : false
+ banked : false,
+ bufsiz : 1
},
#endif
#ifdef CYGHWR_DEVS_FLASH_AMD_AM29F800
@@ -878,7 +916,8 @@
0x04000 * CYGNUM_FLASH_INTERLEAVE,
_LAST_BOOTBLOCK
},
- banked : false
+ banked : false,
+ bufsiz : 1
},
{ // AM29F800-B
device_id : FLASHWORD(0x2258),
@@ -894,7 +933,8 @@
0x008000 * CYGNUM_FLASH_INTERLEAVE,
_LAST_BOOTBLOCK
},
- banked : false
+ banked : false,
+ bufsiz : 1
},
#endif
#ifdef CYGHWR_DEVS_FLASH_AMD_AM29LV800
@@ -912,7 +952,8 @@
0x04000 * CYGNUM_FLASH_INTERLEAVE,
_LAST_BOOTBLOCK
},
- banked : false
+ banked : false,
+ bufsiz : 1
},
{ // AM29LV800-B
device_id : FLASHWORD(0x225b),
@@ -928,7 +969,8 @@
0x008000 * CYGNUM_FLASH_INTERLEAVE,
_LAST_BOOTBLOCK
},
- banked : false
+ banked : false,
+ bufsiz : 1
},
#endif
#ifdef CYGHWR_DEVS_FLASH_AMD_AM29LV640
@@ -939,7 +981,8 @@
device_size: 0x800000 * CYGNUM_FLASH_INTERLEAVE,
base_mask : ~(0x800000 * CYGNUM_FLASH_INTERLEAVE - 1),
bootblock : false,
- banked : false
+ banked : false,
+ bufsiz : 1
},
#endif
#ifdef CYGHWR_DEVS_FLASH_AMD_TC58FVB800
@@ -957,7 +1000,8 @@
0x008000 * CYGNUM_FLASH_INTERLEAVE,
_LAST_BOOTBLOCK
},
- banked : false
+ banked : false,
+ bufsiz : 1
},
#endif