]> git.kernelconcepts.de Git - karo-tx-redboot.git/blob - packages/devs/flash/amd/am29xxxxx/v2_0/include/flash_am29xxxxx_parts.inl
unified MX27, MX25, MX37 trees
[karo-tx-redboot.git] / packages / devs / flash / amd / am29xxxxx / v2_0 / include / flash_am29xxxxx_parts.inl
1 #ifndef CYGONCE_DEVS_FLASH_AMD_AM29XXXXX_PARTS_INL
2 #define CYGONCE_DEVS_FLASH_AMD_AM29XXXXX_PARTS_INL
3 //==========================================================================
4 //
5 //      am29xxxxx_parts.inl
6 //
7 //      AMD AM29xxxxx part descriptors
8 //
9 //==========================================================================
10 //####ECOSGPLCOPYRIGHTBEGIN####
11 // -------------------------------------------
12 // This file is part of eCos, the Embedded Configurable Operating System.
13 // Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
14 // Copyright (C) 2002 Gary Thomas
15 //
16 // eCos is free software; you can redistribute it and/or modify it under
17 // the terms of the GNU General Public License as published by the Free
18 // Software Foundation; either version 2 or (at your option) any later version.
19 //
20 // eCos is distributed in the hope that it will be useful, but WITHOUT ANY
21 // WARRANTY; without even the implied warranty of MERCHANTABILITY or
22 // FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
23 // for more details.
24 //
25 // You should have received a copy of the GNU General Public License along
26 // with eCos; if not, write to the Free Software Foundation, Inc.,
27 // 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
28 //
29 // As a special exception, if other files instantiate templates or use macros
30 // or inline functions from this file, or you compile this file and link it
31 // with other works to produce a work based on this file, this file does not
32 // by itself cause the resulting work to be covered by the GNU General Public
33 // License. However the source code for this file must still be made available
34 // in accordance with section (3) of the GNU General Public License.
35 //
36 // This exception does not invalidate any other reasons why a work based on
37 // this file might be covered by the GNU General Public License.
38 //
39 // Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
40 // at http://sources.redhat.com/ecos/ecos-license/
41 // -------------------------------------------
42 //####ECOSGPLCOPYRIGHTEND####
43 //==========================================================================
44 //#####DESCRIPTIONBEGIN####
45 //
46 // Author(s):    jskov
47 // Contributors: jskov, Koichi Nagashima
48 // Date:         2001-06-08
49 // Purpose:
50 // Description:  AMD AM29xxxxx part descriptors
51 // Usage:        Should be included from the flash_am29xxxxx.inl file only.
52 //
53 // FIXME:        Add configury for selecting bottom/top bootblocks
54 //####DESCRIPTIONEND####
55 //
56 //==========================================================================
57
58 //
59 // Note: 'bootblocks' are a set of blocks which are treated by
60 // the driver as a single larger block.  This simplifies the driver
61 // so as to only have to deal with single size blocks (even though
62 // the physical device may differ).  The data structure is laid out as:
63 //    <address of start of boot block area 1>
64 //    <size of sub-block 1>
65 //    <size of sub-block 2>
66 //    ...
67 //    <size of sub-block n>
68 //    <address of start of boot block area 2>
69 //    <size of sub-block 1>
70 //    <size of sub-block 2>
71 //    ...
72 //    <size of sub-block n>
73 //    _LAST_BOOTBLOCK
74 //
75 // Finally, when specifying a device with bootblocks, the total number
76 // of blocks should reflect this collapse, i.e. if the device has 15
77 // full size blocks and 8 blocks which are 1/8 each, then the total
78 // should be 16 blocks.
79 //
80 #define _LAST_BOOTBLOCK (-1)
81
82 #if CYGNUM_FLASH_WIDTH == 8
83 #ifdef CYGHWR_DEVS_FLASH_AMD_AM29F002T
84     {   // AM29F002T
85         device_id  : FLASHWORD(0xb0),
86         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
87         block_count: 4,
88         device_size: 0x40000 * CYGNUM_FLASH_INTERLEAVE,
89         base_mask  : ~(0x40000 * CYGNUM_FLASH_INTERLEAVE - 1),
90         bootblock  : true,
91         bootblocks : { 0x030000 * CYGNUM_FLASH_INTERLEAVE,
92                        0x008000 * CYGNUM_FLASH_INTERLEAVE,
93                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
94                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
95                        0x004000 * CYGNUM_FLASH_INTERLEAVE,
96                        _LAST_BOOTBLOCK
97                      },
98         banked     : false,
99         bufsiz     : 1
100     },
101 #endif
102 #ifdef CYGHWR_DEVS_FLASH_AMD_AM29F010
103     {   // AM29F010
104         device_id  : FLASHWORD(0x20),
105         block_size : 0x4000 * CYGNUM_FLASH_INTERLEAVE,
106         block_count: 8,
107         device_size: 0x20000 * CYGNUM_FLASH_INTERLEAVE,
108         base_mask  : ~(0x20000 * CYGNUM_FLASH_INTERLEAVE - 1),
109         bootblock  : false,
110             banked     : false
111     },
112 #endif
113 #ifdef CYGHWR_DEVS_FLASH_AMD_AM29F040B
114     {   // AM29F040B
115         device_id  : FLASHWORD(0xa4),
116         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
117         block_count: 8,
118         device_size: 0x80000 * CYGNUM_FLASH_INTERLEAVE,
119         base_mask  : ~(0x80000 * CYGNUM_FLASH_INTERLEAVE - 1),
120         bootblock  : false,
121         banked     : false,
122         bufsiz     : 1
123     },
124 #endif
125 #ifdef CYGHWR_DEVS_FLASH_AMD_AM29LV160
126     {   // MBM29LV160-T | AM29LV160-T
127         device_id  : FLASHWORD(0xc4),
128         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
129         block_count: 32,
130         device_size: 0x200000 * CYGNUM_FLASH_INTERLEAVE,
131         base_mask  : ~(0x200000 * CYGNUM_FLASH_INTERLEAVE - 1),
132         bootblock  : true,
133         bootblocks : { 0x1f0000 * CYGNUM_FLASH_INTERLEAVE,
134                        0x008000 * CYGNUM_FLASH_INTERLEAVE,
135                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
136                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
137                        0x004000 * CYGNUM_FLASH_INTERLEAVE,
138                        _LAST_BOOTBLOCK
139                      },
140         banked     : false,
141         bufsiz     : 1
142     },
143     {   // MBM29LV160-B | AM29LV160-B
144         device_id  : FLASHWORD(0x49),
145         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
146         block_count: 32,
147         device_size: 0x200000 * CYGNUM_FLASH_INTERLEAVE,
148         base_mask  : ~(0x200000 * CYGNUM_FLASH_INTERLEAVE - 1),
149         bootblock  : true,
150         bootblocks : { 0x000000 * CYGNUM_FLASH_INTERLEAVE,
151                        0x004000 * CYGNUM_FLASH_INTERLEAVE,
152                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
153                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
154                        0x008000 * CYGNUM_FLASH_INTERLEAVE,
155                        _LAST_BOOTBLOCK
156                      },
157         banked     : false,
158         bufsiz     : 1
159     },
160 #endif
161 #ifdef CYGHWR_DEVS_FLASH_AMD_AM29LV200
162     {   // AM29LV200-T
163         device_id  : FLASHWORD(0x3b),
164         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
165         block_count: 4,
166         device_size: 0x40000 * CYGNUM_FLASH_INTERLEAVE,
167         base_mask  : ~(0x40000 * CYGNUM_FLASH_INTERLEAVE - 1),
168         bootblock  : true,
169         bootblocks : { 0x030000 * CYGNUM_FLASH_INTERLEAVE,
170                        0x008000 * CYGNUM_FLASH_INTERLEAVE,
171                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
172                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
173                        0x004000 * CYGNUM_FLASH_INTERLEAVE,
174                        _LAST_BOOTBLOCK
175                      },
176         banked     : false,
177         bufsiz     : 1
178     },
179     {   // AM29LV200-B
180         device_id  : FLASHWORD(0xbf),
181         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
182         block_count: 4,
183         device_size: 0x40000 * CYGNUM_FLASH_INTERLEAVE,
184         base_mask  : ~(0x40000 * CYGNUM_FLASH_INTERLEAVE - 1),
185         bootblock  : true,
186         bootblocks : { 0x000000 * CYGNUM_FLASH_INTERLEAVE,
187                        0x004000 * CYGNUM_FLASH_INTERLEAVE,
188                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
189                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
190                        0x008000 * CYGNUM_FLASH_INTERLEAVE,
191                        _LAST_BOOTBLOCK
192                      },
193         banked     : false,
194         bufsiz     : 1
195     },
196 #endif
197 #ifdef CYGHWR_DEVS_FLASH_AMD_AM29LV320D
198     {   // AM29LV320DT
199         device_id  : FLASHWORD(0xF6),
200         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
201         block_count: 64,
202         device_size: 0x400000 * CYGNUM_FLASH_INTERLEAVE,
203         base_mask  : ~(0x400000 * CYGNUM_FLASH_INTERLEAVE - 1),
204         bootblock  : true,
205         bootblocks : { 0x3f0000 * CYGNUM_FLASH_INTERLEAVE,
206                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
207                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
208                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
209                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
210                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
211                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
212                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
213                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
214                        _LAST_BOOTBLOCK
215                      },
216         banked     : false,
217         bufsiz     : 1
218     },
219     {   // AM29LV320D
220         device_id  : FLASHWORD(0xF9),
221         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
222         block_count: 64,
223         device_size: 0x400000 * CYGNUM_FLASH_INTERLEAVE,
224         base_mask  : ~(0x400000 * CYGNUM_FLASH_INTERLEAVE - 1),
225         bootblock  : true,
226         bootblocks : { 0x000000 * CYGNUM_FLASH_INTERLEAVE,
227                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
228                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
229                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
230                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
231                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
232                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
233                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
234                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
235                        _LAST_BOOTBLOCK
236                      },
237         banked     : false,
238         bufsiz     : 1
239     },
240 #endif
241 #ifdef CYGHWR_DEVS_FLASH_AMD_AM29DL322D
242     {   // AM29DL322D-T
243         device_id  : FLASHWORD(0x55),
244         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
245         block_count: 64,
246         device_size: 0x400000 * CYGNUM_FLASH_INTERLEAVE,
247         base_mask  : ~(0x400000 * CYGNUM_FLASH_INTERLEAVE - 1),
248         bootblock  : true,
249         bootblocks : { 0x3f0000 * CYGNUM_FLASH_INTERLEAVE,
250                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
251                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
252                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
253                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
254                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
255                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
256                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
257                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
258                        _LAST_BOOTBLOCK
259                      },
260         banked     : true,
261         banks      : { 0x380000 * CYGNUM_FLASH_INTERLEAVE,
262                        0
263                      },
264         bufsiz     : 1
265     },
266     {   // AM29DL322D-B
267         device_id  : FLASHWORD(0x56),
268         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
269         block_count: 64,
270         device_size: 0x400000 * CYGNUM_FLASH_INTERLEAVE,
271         base_mask  : ~(0x400000 * CYGNUM_FLASH_INTERLEAVE - 1),
272         bootblock  : true,
273         bootblocks : { 0x000000 * CYGNUM_FLASH_INTERLEAVE,
274                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
275                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
276                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
277                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
278                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
279                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
280                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
281                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
282                        _LAST_BOOTBLOCK
283                      },
284         banked     : true,
285         banks      : { 0x80000 * CYGNUM_FLASH_INTERLEAVE,
286                        0
287                      },
288         bufsiz     : 1
289     },
290 #endif
291 #ifdef CYGHWR_DEVS_FLASH_AMD_AM29DL323D
292     {   // AM29DL323D-T
293         device_id  : FLASHWORD(0x50),
294         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
295         block_count: 64,
296         device_size: 0x400000 * CYGNUM_FLASH_INTERLEAVE,
297         base_mask  : ~(0x400000 * CYGNUM_FLASH_INTERLEAVE - 1),
298         bootblock  : true,
299         bootblocks : { 0x3f0000 * CYGNUM_FLASH_INTERLEAVE,
300                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
301                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
302                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
303                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
304                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
305                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
306                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
307                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
308                        _LAST_BOOTBLOCK
309                      },
310         banked     : true,
311         banks      : { 0x300000 * CYGNUM_FLASH_INTERLEAVE,
312                        0
313                      },
314         bufsiz     : 1
315     },
316     {   // AM29DL323D-B
317         device_id  : FLASHWORD(0x53),
318         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
319         block_count: 64,
320         device_size: 0x400000 * CYGNUM_FLASH_INTERLEAVE,
321         base_mask  : ~(0x400000 * CYGNUM_FLASH_INTERLEAVE - 1),
322         bootblock  : true,
323         bootblocks : { 0x000000 * CYGNUM_FLASH_INTERLEAVE,
324                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
325                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
326                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
327                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
328                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
329                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
330                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
331                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
332                        _LAST_BOOTBLOCK
333                      },
334         banked     : true,
335         banks      : { 0x100000 * CYGNUM_FLASH_INTERLEAVE,
336                        0
337                      },
338         bufsiz     : 1
339     },
340 #endif
341 #ifdef CYGHWR_DEVS_FLASH_AMD_AM29DL324D
342     {   // AM29DL324D-T
343         device_id  : FLASHWORD(0x5c),
344         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
345         block_count: 64,
346         device_size: 0x400000 * CYGNUM_FLASH_INTERLEAVE,
347         base_mask  : ~(0x400000 * CYGNUM_FLASH_INTERLEAVE - 1),
348         bootblock  : true,
349         bootblocks : { 0x3f0000 * CYGNUM_FLASH_INTERLEAVE,
350                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
351                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
352                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
353                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
354                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
355                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
356                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
357                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
358                        _LAST_BOOTBLOCK
359                      },
360         banked     : true,
361         banks      : { 0x200000 * CYGNUM_FLASH_INTERLEAVE,
362                        0
363                      },
364         bufsiz     : 1
365     },
366     {   // AM29DL324D-B
367         device_id  : FLASHWORD(0x5f),
368         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
369         block_count: 64,
370         device_size: 0x400000 * CYGNUM_FLASH_INTERLEAVE,
371         base_mask  : ~(0x400000 * CYGNUM_FLASH_INTERLEAVE - 1),
372         bootblock  : true,
373         bootblocks : { 0x000000 * CYGNUM_FLASH_INTERLEAVE,
374                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
375                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
376                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
377                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
378                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
379                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
380                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
381                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
382                        _LAST_BOOTBLOCK
383                      },
384         banked     : true,
385         banks      : { 0x200000 * CYGNUM_FLASH_INTERLEAVE,
386                        0
387                      },
388         bufsiz     : 1
389     },
390 #endif
391 #ifdef CYGHWR_DEVS_FLASH_AMD_AM29DL640D
392 {   // AM29DL640D
393         long_device_id: true,
394         device_id  : FLASHWORD(0x7e),
395         device_id2 : FLASHWORD(0x02),
396         device_id3 : FLASHWORD(0x01),
397         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
398         block_count: 128,
399         device_size: 0x0800000 * CYGNUM_FLASH_INTERLEAVE,
400         base_mask  : ~(0x8000000 * CYGNUM_FLASH_INTERLEAVE - 1),
401         bootblock  : true,
402         bootblocks : { 0x000000 * CYGNUM_FLASH_INTERLEAVE,
403                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
404                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
405                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
406                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
407                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
408                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
409                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
410                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
411                        0x7F0000 * CYGNUM_FLASH_INTERLEAVE,
412                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
413                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
414                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
415                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
416                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
417                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
418                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
419                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
420                        _LAST_BOOTBLOCK
421                      },
422         banked     : true,
423         banks      : { 0x0700000 * CYGNUM_FLASH_INTERLEAVE,
424                        0x0400000 * CYGNUM_FLASH_INTERLEAVE,
425                        0x0100000 * CYGNUM_FLASH_INTERLEAVE,
426                        0
427                      },
428         bufsiz     : 1
429     },
430 #endif
431 #ifdef CYGHWR_DEVS_FLASH_AMD_AM29F800
432     {   // AM29F800-T
433         device_id  : FLASHWORD(0xd6),
434         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
435         block_count: 16,
436         device_size: 0x100000 * CYGNUM_FLASH_INTERLEAVE,
437         base_mask  : ~(0x100000 * CYGNUM_FLASH_INTERLEAVE - 1),
438         bootblock  : true,
439         bootblocks : { 0xf0000 * CYGNUM_FLASH_INTERLEAVE,
440                        0x08000 * CYGNUM_FLASH_INTERLEAVE,
441                        0x02000 * CYGNUM_FLASH_INTERLEAVE,
442                        0x02000 * CYGNUM_FLASH_INTERLEAVE,
443                        0x04000 * CYGNUM_FLASH_INTERLEAVE,
444                        _LAST_BOOTBLOCK
445                      },
446         banked     : false,
447         bufsiz     : 1
448     },
449     {   // AM29F800-B
450         device_id  : FLASHWORD(0x58),
451         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
452         block_count: 16,
453         device_size: 0x100000 * CYGNUM_FLASH_INTERLEAVE,
454         base_mask  : ~(0x100000 * CYGNUM_FLASH_INTERLEAVE - 1),
455         bootblock  : true,
456         bootblocks : { 0x000000 * CYGNUM_FLASH_INTERLEAVE,
457                        0x004000 * CYGNUM_FLASH_INTERLEAVE,
458                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
459                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
460                        0x008000 * CYGNUM_FLASH_INTERLEAVE,
461                        _LAST_BOOTBLOCK
462                      },
463         banked     : false,
464         bufsiz     : 1
465     },
466 #endif
467 #ifdef CYGHWR_DEVS_FLASH_AMD_AM29LV800
468     {   // AM29LV800-T
469         device_id  : FLASHWORD(0xda),
470         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
471         block_count: 16,
472         device_size: 0x100000 * CYGNUM_FLASH_INTERLEAVE,
473         base_mask  : ~(0x100000 * CYGNUM_FLASH_INTERLEAVE - 1),
474         bootblock  : true,
475         bootblocks : { 0xf0000 * CYGNUM_FLASH_INTERLEAVE,
476                        0x08000 * CYGNUM_FLASH_INTERLEAVE,
477                        0x02000 * CYGNUM_FLASH_INTERLEAVE,
478                        0x02000 * CYGNUM_FLASH_INTERLEAVE,
479                        0x04000 * CYGNUM_FLASH_INTERLEAVE,
480                        _LAST_BOOTBLOCK
481                      },
482         banked     : false,
483         bufsiz     : 1
484     },
485     {   // AM29LV800-B
486         device_id  : FLASHWORD(0x5b),
487         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
488         block_count: 16,
489         device_size: 0x100000 * CYGNUM_FLASH_INTERLEAVE,
490         base_mask  : ~(0x100000 * CYGNUM_FLASH_INTERLEAVE - 1),
491         bootblock  : true,
492         bootblocks : { 0x000000 * CYGNUM_FLASH_INTERLEAVE,
493                        0x004000 * CYGNUM_FLASH_INTERLEAVE,
494                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
495                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
496                        0x008000 * CYGNUM_FLASH_INTERLEAVE,
497                        _LAST_BOOTBLOCK
498                      },
499         banked     : false,
500         bufsiz     : 1
501     },
502 #endif
503 #ifdef CYGHWR_DEVS_FLASH_AMD_TC58FVB800
504     {   // Toshiba TC58FVB800 (compatible with AM29LV800-B except for IDs.)
505         device_id  : FLASHWORD(0xCE),
506         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
507         block_count: 16,
508         device_size: 0x100000 * CYGNUM_FLASH_INTERLEAVE,
509         base_mask  : ~(0x100000 * CYGNUM_FLASH_INTERLEAVE - 1),
510         bootblock  : true,
511         bootblocks : { 0x000000 * CYGNUM_FLASH_INTERLEAVE,
512                        0x004000 * CYGNUM_FLASH_INTERLEAVE,
513                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
514                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
515                        0x008000 * CYGNUM_FLASH_INTERLEAVE,
516                        _LAST_BOOTBLOCK
517                      },
518         banked     : false,
519         bufsiz     : 1
520     },
521 #endif
522
523 #ifdef CYGHWR_DEVS_FLASH_AMD_AM29LV081B
524     {   // AM29LV081B
525         device_id  : FLASHWORD(0x38),
526         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
527         block_count: 16,
528         device_size: 0x100000 * CYGNUM_FLASH_INTERLEAVE,
529         base_mask  : ~(0x100000 * CYGNUM_FLASH_INTERLEAVE - 1),
530         bootblock  : false,
531         banked     : false,
532         bufsiz     : 1
533     },
534 #endif
535
536 #ifdef CYGHWR_DEVS_FLASH_AMD_AM29LV017D
537     {   // AM29LV017D
538         device_id  : FLASHWORD(0xC8),
539         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
540         block_count: 32,
541         device_size: 0x200000 * CYGNUM_FLASH_INTERLEAVE,
542         base_mask  : ~(0x200000 * CYGNUM_FLASH_INTERLEAVE - 1),
543         bootblock  : false,
544         banked     : false,
545         bufsiz     : 1
546     },
547 #endif
548
549 #ifdef CYGHWR_DEVS_FLASH_AMD_AM29LV033C
550     {   // AM29LV033C
551         device_id  : FLASHWORD(0xA3),
552         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
553         block_count: 64,
554         device_size: 0x400000 * CYGNUM_FLASH_INTERLEAVE,
555         base_mask  : ~(0x400000 * CYGNUM_FLASH_INTERLEAVE - 1),
556         bootblock  : false,
557         // Although this device is not a true banked device, we
558         // treat the device as having two banks to get the 
559         // Sector Protect Verify to work for the upper half of
560         // the device.  Reference Note 9 for Table 9 in the
561         // AMD data sheet.
562         banked     : true,
563         banks      : { 0x200000 * CYGNUM_FLASH_INTERLEAVE,
564                        0
565                      },
566         bufsiz     : 1
567     },
568 #endif
569
570 #ifdef CYGHWR_DEVS_FLASH_AMD_AM29LV065D
571     {   // AM29LV065D
572         device_id  : FLASHWORD(0x93),
573         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
574         block_count: 128,
575         device_size: 0x800000 * CYGNUM_FLASH_INTERLEAVE,
576         base_mask  : ~(0x800000 * CYGNUM_FLASH_INTERLEAVE - 1),
577         bootblock  : false,
578         banked     : false,
579         bufsiz     : 1
580     },
581 #endif
582
583 #else // 16 bit devices
584
585 #ifdef CYGHWR_DEVS_FLASH_AMD_AM29LV128
586     {   // AM29LV128
587         long_device_id: true,
588         device_id  : FLASHWORD(0x227e),
589         device_id2 : FLASHWORD(0x2212),
590         device_id3 : FLASHWORD(0x2200),
591         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
592         block_count: 256,
593         device_size: 0x1000000 * CYGNUM_FLASH_INTERLEAVE,
594         base_mask  : ~(0x1000000 * CYGNUM_FLASH_INTERLEAVE - 1),
595         bootblock  : false,
596         banked     : false,
597         bufsiz     : 16
598     },
599 #endif
600 #ifdef CYGHWR_DEVS_FLASH_AMD_MX29LV128
601     {   // MX29LV128M-T
602         long_device_id: true,
603         device_id  : FLASHWORD(0x227e),
604         device_id2 : FLASHWORD(0x2211),
605         device_id3 : FLASHWORD(0x2201),
606         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
607         block_count: 256,
608         device_size: 0x1000000 * CYGNUM_FLASH_INTERLEAVE,
609         base_mask  : ~(0x1000000 * CYGNUM_FLASH_INTERLEAVE - 1),
610         bootblock  : true,
611         bootblocks : { 0xff0000 * CYGNUM_FLASH_INTERLEAVE,
612                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
613                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
614                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
615                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
616                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
617                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
618                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
619                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
620                        _LAST_BOOTBLOCK
621                      },
622         banked     : false,
623         bufsiz     : 16
624     },
625 #endif
626 #ifdef CYGHWR_DEVS_FLASH_AMD_AM29LV160
627     {   // MBM29LV160-T | AM29LV160-T
628         device_id  : FLASHWORD(0x22c4),
629         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
630         block_count: 32,
631         device_size: 0x200000 * CYGNUM_FLASH_INTERLEAVE,
632         base_mask  : ~(0x200000 * CYGNUM_FLASH_INTERLEAVE - 1),
633         bootblock  : true,
634         bootblocks : { 0x1f0000 * CYGNUM_FLASH_INTERLEAVE,
635                        0x008000 * CYGNUM_FLASH_INTERLEAVE,
636                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
637                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
638                        0x004000 * CYGNUM_FLASH_INTERLEAVE,
639                        _LAST_BOOTBLOCK
640                      },
641         banked     : false,
642         bufsiz     : 1
643     },
644     {   // MBM29LV160-B | AM29LV160-B
645         device_id  : FLASHWORD(0x2249),
646         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
647         block_count: 32,
648         device_size: 0x200000 * CYGNUM_FLASH_INTERLEAVE,
649         base_mask  : ~(0x200000 * CYGNUM_FLASH_INTERLEAVE - 1),
650         bootblock  : true,
651         bootblocks : { 0x000000 * CYGNUM_FLASH_INTERLEAVE,
652                        0x004000 * CYGNUM_FLASH_INTERLEAVE,
653                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
654                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
655                        0x008000 * CYGNUM_FLASH_INTERLEAVE,
656                        _LAST_BOOTBLOCK
657                      },
658         banked     : false,
659         bufsiz     : 1
660     },
661 #endif
662 #ifdef CYGHWR_DEVS_FLASH_AMD_AM29PL160
663     {   // AM29PL160-T
664             device_id  : FLASHWORD(0x2227),
665                 block_size : 0x00040000 * CYGNUM_FLASH_INTERLEAVE,
666                 block_count: 8,
667         device_size: 0x00200000 * CYGNUM_FLASH_INTERLEAVE,
668         base_mask  : ~(0x00200000 * CYGNUM_FLASH_INTERLEAVE - 1),
669         bootblock  : true,
670                 bootblocks : { 0x1c0000 * CYGNUM_FLASH_INTERLEAVE,
671                                            0x038000 * CYGNUM_FLASH_INTERLEAVE,
672                                            0x002000 * CYGNUM_FLASH_INTERLEAVE,
673                                            0x002000 * CYGNUM_FLASH_INTERLEAVE,
674                                            0x004000 * CYGNUM_FLASH_INTERLEAVE,
675                                            _LAST_BOOTBLOCK
676                                          },
677         banked     : false,
678         bufsiz     : 1
679         },
680     {   // AM29PL160-B
681         device_id  : FLASHWORD(0x2245),
682         block_size : 0x00040000 * CYGNUM_FLASH_INTERLEAVE,
683         block_count: 8,
684         device_size: 0x00200000 * CYGNUM_FLASH_INTERLEAVE,
685         base_mask  : ~(0x00200000 * CYGNUM_FLASH_INTERLEAVE - 1),
686         bootblock  : true,
687         bootblocks : { 0x000000 * CYGNUM_FLASH_INTERLEAVE,
688                        0x004000 * CYGNUM_FLASH_INTERLEAVE,
689                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
690                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
691                        0x038000 * CYGNUM_FLASH_INTERLEAVE,
692                        _LAST_BOOTBLOCK
693                      },
694         banked     : false,
695         bufsiz     : 1
696     },
697 #endif
698 #ifdef CYGHWR_DEVS_FLASH_AMD_AM29LV200
699     {   // AM29LV200-T
700         device_id  : FLASHWORD(0x223b),
701         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
702         block_count: 4,
703         device_size: 0x40000 * CYGNUM_FLASH_INTERLEAVE,
704         base_mask  : ~(0x40000 * CYGNUM_FLASH_INTERLEAVE - 1),
705         bootblock  : true,
706         bootblocks : { 0x030000 * CYGNUM_FLASH_INTERLEAVE,
707                        0x008000 * CYGNUM_FLASH_INTERLEAVE,
708                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
709                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
710                        0x004000 * CYGNUM_FLASH_INTERLEAVE,
711                        _LAST_BOOTBLOCK
712                      },
713         banked     : false,
714         bufsiz     : 1
715     },
716     {   // AM29LV200-B
717         device_id  : FLASHWORD(0x22bf),
718         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
719         block_count: 4,
720         device_size: 0x40000 * CYGNUM_FLASH_INTERLEAVE,
721         base_mask  : ~(0x40000 * CYGNUM_FLASH_INTERLEAVE - 1),
722         bootblock  : true,
723         bootblocks : { 0x000000 * CYGNUM_FLASH_INTERLEAVE,
724                        0x004000 * CYGNUM_FLASH_INTERLEAVE,
725                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
726                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
727                        0x008000 * CYGNUM_FLASH_INTERLEAVE,
728                        _LAST_BOOTBLOCK
729                      },
730         banked     : false,
731         bufsiz     : 1
732     },
733 #endif
734 #ifdef CYGHWR_DEVS_FLASH_ST_M29W200B
735     {   // ST M29W200BT
736         device_id  : FLASHWORD(0x0051),
737         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
738         block_count: 4,
739         device_size: 0x40000 * CYGNUM_FLASH_INTERLEAVE,
740         base_mask  : ~(0x40000 * CYGNUM_FLASH_INTERLEAVE - 1),
741         bootblock  : true,
742         bootblocks : { 0x030000 * CYGNUM_FLASH_INTERLEAVE,
743                        0x008000 * CYGNUM_FLASH_INTERLEAVE,
744                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
745                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
746                        0x004000 * CYGNUM_FLASH_INTERLEAVE,
747                        _LAST_BOOTBLOCK
748                      },
749         banked     : false,
750         bufsiz     : 1
751     },
752     {   // ST M29W200BB
753         device_id  : FLASHWORD(0x0057),
754         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
755         block_count: 4,
756         device_size: 0x40000 * CYGNUM_FLASH_INTERLEAVE,
757         base_mask  : ~(0x40000 * CYGNUM_FLASH_INTERLEAVE - 1),
758         bootblock  : true,
759         bootblocks : { 0x000000 * CYGNUM_FLASH_INTERLEAVE,
760                        0x004000 * CYGNUM_FLASH_INTERLEAVE,
761                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
762                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
763                        0x008000 * CYGNUM_FLASH_INTERLEAVE,
764                        _LAST_BOOTBLOCK
765                      },
766         banked     : false,
767         bufsiz     : 1
768     },
769 #endif
770 #ifdef CYGHWR_DEVS_FLASH_ST_M29W320D
771     {   // M29W320DT
772         device_id  : FLASHWORD(0x22ca),
773         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
774         block_count: 64,
775         device_size: 0x400000 * CYGNUM_FLASH_INTERLEAVE,
776         base_mask  : ~(0x400000 * CYGNUM_FLASH_INTERLEAVE - 1),
777         bootblock  : true,
778         bootblocks : { 0x3f0000 * CYGNUM_FLASH_INTERLEAVE, // offset
779                        0x008000 * CYGNUM_FLASH_INTERLEAVE, // size 1
780                        0x002000 * CYGNUM_FLASH_INTERLEAVE, // size 2
781                        0x002000 * CYGNUM_FLASH_INTERLEAVE, // size 3
782                        0x004000 * CYGNUM_FLASH_INTERLEAVE, // size 4
783                        _LAST_BOOTBLOCK
784                      },
785         banked     : false,
786         bufsiz     : 1
787     },
788     {   // M29W320DB
789         device_id  : FLASHWORD(0x22cb),
790         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
791         block_count: 64,
792         device_size: 0x400000 * CYGNUM_FLASH_INTERLEAVE,
793         base_mask  : ~(0x400000 * CYGNUM_FLASH_INTERLEAVE - 1),
794         bootblock  : true,
795         bootblocks : { 0x000000 * CYGNUM_FLASH_INTERLEAVE, // offset 
796                        0x004000 * CYGNUM_FLASH_INTERLEAVE, // size 1
797                        0x002000 * CYGNUM_FLASH_INTERLEAVE, // size 2
798                        0x002000 * CYGNUM_FLASH_INTERLEAVE, // size 3
799                        0x008000 * CYGNUM_FLASH_INTERLEAVE, // size 4
800                        _LAST_BOOTBLOCK
801                      },
802         banked     : false,
803         bufsiz     : 1
804     },
805 #endif
806 #ifdef CYGHWR_DEVS_FLASH_AMD_AM29LV320D
807     {   // AM29LV320DT
808         device_id  : FLASHWORD(0x22F6),
809         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
810         block_count: 64,
811         device_size: 0x400000 * CYGNUM_FLASH_INTERLEAVE,
812         base_mask  : ~(0x400000 * CYGNUM_FLASH_INTERLEAVE - 1),
813         bootblock  : true,
814         bootblocks : { 0x3f0000 * CYGNUM_FLASH_INTERLEAVE,
815                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
816                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
817                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
818                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
819                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
820                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
821                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
822                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
823                        _LAST_BOOTBLOCK
824                      },
825         banked     : false,
826         bufsiz     : 1
827     },
828     {   // AM29LV320D
829         device_id  : FLASHWORD(0x22F9),
830         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
831         block_count: 64,
832         device_size: 0x400000 * CYGNUM_FLASH_INTERLEAVE,
833         base_mask  : ~(0x400000 * CYGNUM_FLASH_INTERLEAVE - 1),
834         bootblock  : true,
835         bootblocks : { 0x000000 * CYGNUM_FLASH_INTERLEAVE,
836                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
837                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
838                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
839                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
840                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
841                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
842                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
843                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
844                        _LAST_BOOTBLOCK
845                      },
846         banked     : false,
847         bufsiz     : 1
848     },
849 #endif
850 #ifdef CYGHWR_DEVS_FLASH_AMD_AM29DL322D
851     {   // AM29DL322D-T
852         device_id  : FLASHWORD(0x2255),
853         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
854         block_count: 64,
855         device_size: 0x400000 * CYGNUM_FLASH_INTERLEAVE,
856         base_mask  : ~(0x400000 * CYGNUM_FLASH_INTERLEAVE - 1),
857         bootblock  : true,
858         bootblocks : { 0x3f0000 * CYGNUM_FLASH_INTERLEAVE,
859                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
860                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
861                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
862                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
863                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
864                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
865                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
866                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
867                        _LAST_BOOTBLOCK
868                      },
869         banked     : true,
870         banks      : { 0x380000 * CYGNUM_FLASH_INTERLEAVE,
871                        0
872                      },
873         bufsiz     : 1
874     },
875     {   // AM29DL322D-B
876         device_id  : FLASHWORD(0x2256),
877         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
878         block_count: 64,
879         device_size: 0x400000 * CYGNUM_FLASH_INTERLEAVE,
880         base_mask  : ~(0x400000 * CYGNUM_FLASH_INTERLEAVE - 1),
881         bootblock  : true,
882         bootblocks : { 0x000000 * CYGNUM_FLASH_INTERLEAVE,
883                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
884                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
885                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
886                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
887                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
888                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
889                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
890                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
891                        _LAST_BOOTBLOCK
892                      },
893         banked     : true,
894         banks      : { 0x80000 * CYGNUM_FLASH_INTERLEAVE,
895                        0
896                      },
897         bufsiz     : 1
898     },
899 #endif
900 #ifdef CYGHWR_DEVS_FLASH_AMD_AM29DL323D
901     {   // AM29DL323D-T
902         device_id  : FLASHWORD(0x2250),
903         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
904         block_count: 64,
905         device_size: 0x400000 * CYGNUM_FLASH_INTERLEAVE,
906         base_mask  : ~(0x400000 * CYGNUM_FLASH_INTERLEAVE - 1),
907         bootblock  : true,
908         bootblocks : { 0x3f0000 * CYGNUM_FLASH_INTERLEAVE,
909                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
910                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
911                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
912                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
913                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
914                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
915                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
916                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
917                        _LAST_BOOTBLOCK
918                      },
919         banked     : true,
920         banks      : { 0x300000 * CYGNUM_FLASH_INTERLEAVE,
921                        0
922                      },
923         bufsiz     : 1
924     },
925     {   // AM29DL323D-B
926         device_id  : FLASHWORD(0x2253),
927         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
928         block_count: 64,  
929         device_size: 0x400000 * CYGNUM_FLASH_INTERLEAVE,
930         base_mask  : ~(0x400000 * CYGNUM_FLASH_INTERLEAVE - 1),
931         bootblock  : true,
932         bootblocks : { 0x000000 * CYGNUM_FLASH_INTERLEAVE,
933                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
934                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
935                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
936                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
937                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
938                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
939                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
940                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
941                        _LAST_BOOTBLOCK
942                      },
943         banked     : true,
944         banks      : { 0x100000 * CYGNUM_FLASH_INTERLEAVE,
945                        0
946                      },
947         bufsiz     : 1
948     },
949 #endif
950 #ifdef CYGHWR_DEVS_FLASH_AMD_AM29DL324D
951     {   // AM29DL324D-T
952         device_id  : FLASHWORD(0x225c),
953         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
954         block_count: 64,
955         device_size: 0x400000 * CYGNUM_FLASH_INTERLEAVE,
956         base_mask  : ~(0x400000 * CYGNUM_FLASH_INTERLEAVE - 1),
957         bootblock  : true,
958         bootblocks : { 0x3f0000 * CYGNUM_FLASH_INTERLEAVE,
959                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
960                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
961                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
962                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
963                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
964                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
965                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
966                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
967                        _LAST_BOOTBLOCK
968                      },
969         banked     : true,
970         banks      : { 0x200000 * CYGNUM_FLASH_INTERLEAVE,
971                        0
972                      },
973         bufsiz     : 1
974     },
975     {   // AM29DL324D-B
976         device_id  : FLASHWORD(0x225f),
977         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
978         block_count: 64,  
979         device_size: 0x400000 * CYGNUM_FLASH_INTERLEAVE,
980         base_mask  : ~(0x400000 * CYGNUM_FLASH_INTERLEAVE - 1),
981         bootblock  : true,
982         bootblocks : { 0x000000 * CYGNUM_FLASH_INTERLEAVE,
983                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
984                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
985                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
986                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
987                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
988                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
989                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
990                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
991                        _LAST_BOOTBLOCK
992                      },
993         banked     : true,
994         banks      : { 0x200000 * CYGNUM_FLASH_INTERLEAVE,
995                        0
996                      },
997         bufsiz     : 1
998     },
999 #endif
1000 #ifdef CYGHWR_DEVS_FLASH_AMD_AM29DL640D
1001 {   // AM29DL640D
1002         long_device_id: true,
1003         device_id  : FLASHWORD(0x227e),
1004         device_id2 : FLASHWORD(0x2202),
1005         device_id3 : FLASHWORD(0x2201),
1006         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
1007         block_count: 128,
1008         device_size: 0x800000 * CYGNUM_FLASH_INTERLEAVE,
1009         base_mask  : ~(0x800000 * CYGNUM_FLASH_INTERLEAVE - 1),
1010         bootblock  : true,
1011         bootblocks : { 0x000000 * CYGNUM_FLASH_INTERLEAVE,
1012                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1013                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1014                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1015                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1016                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1017                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1018                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1019                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1020                        0x7F0000 * CYGNUM_FLASH_INTERLEAVE,
1021                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1022                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1023                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1024                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1025                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1026                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1027                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1028                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1029                        _LAST_BOOTBLOCK
1030                      },
1031         banked     : true,
1032         banks      : { 0x700000 * CYGNUM_FLASH_INTERLEAVE,
1033                        0x400000 * CYGNUM_FLASH_INTERLEAVE,
1034                        0x100000 * CYGNUM_FLASH_INTERLEAVE,
1035                        0
1036                      },
1037         bufsiz     : 1
1038     },
1039 #endif
1040 #ifdef CYGHWR_DEVS_FLASH_AMD_AM29LV400
1041     {   // AM29LV400-T
1042         device_id  : FLASHWORD(0x22b9),
1043         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
1044         block_count: 8,
1045         device_size: 0x80000 * CYGNUM_FLASH_INTERLEAVE,
1046         base_mask  : ~(0x80000 * CYGNUM_FLASH_INTERLEAVE - 1),
1047         bootblock  : true,
1048         bootblocks : { 0xf0000 * CYGNUM_FLASH_INTERLEAVE,
1049                        0x08000 * CYGNUM_FLASH_INTERLEAVE,
1050                        0x02000 * CYGNUM_FLASH_INTERLEAVE,
1051                        0x02000 * CYGNUM_FLASH_INTERLEAVE,
1052                        0x04000 * CYGNUM_FLASH_INTERLEAVE,
1053                        _LAST_BOOTBLOCK
1054                      },
1055         banked     : false,
1056         bufsiz     : 1
1057     },
1058     {   // AM29LV400-B
1059         device_id  : FLASHWORD(0x22ba),
1060         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
1061         block_count: 8,
1062         device_size: 0x80000 * CYGNUM_FLASH_INTERLEAVE,
1063         base_mask  : ~(0x80000 * CYGNUM_FLASH_INTERLEAVE - 1),
1064         bootblock  : true,
1065         bootblocks : { 0x000000 * CYGNUM_FLASH_INTERLEAVE,
1066                        0x004000 * CYGNUM_FLASH_INTERLEAVE,
1067                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
1068                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
1069                        0x008000 * CYGNUM_FLASH_INTERLEAVE,
1070                        _LAST_BOOTBLOCK
1071                      },
1072         banked     : false,
1073         bufsiz     : 1
1074     },
1075 #endif
1076 #ifdef CYGHWR_DEVS_FLASH_AMD_AM29F800
1077     {   // AM29F800-T
1078         device_id  : FLASHWORD(0x22d6),
1079         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
1080         block_count: 16,
1081         device_size: 0x100000 * CYGNUM_FLASH_INTERLEAVE,
1082         base_mask  : ~(0x100000 * CYGNUM_FLASH_INTERLEAVE - 1),
1083         bootblock  : true,
1084         bootblocks : { 0xf0000 * CYGNUM_FLASH_INTERLEAVE,
1085                        0x08000 * CYGNUM_FLASH_INTERLEAVE,
1086                        0x02000 * CYGNUM_FLASH_INTERLEAVE,
1087                        0x02000 * CYGNUM_FLASH_INTERLEAVE,
1088                        0x04000 * CYGNUM_FLASH_INTERLEAVE,
1089                        _LAST_BOOTBLOCK
1090                      },
1091         banked     : false,
1092         bufsiz     : 1
1093     },
1094     {   // AM29F800-B
1095         device_id  : FLASHWORD(0x2258),
1096         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
1097         block_count: 16,
1098         device_size: 0x100000 * CYGNUM_FLASH_INTERLEAVE,
1099         base_mask  : ~(0x100000 * CYGNUM_FLASH_INTERLEAVE - 1),
1100         bootblock  : true,
1101         bootblocks : { 0x000000 * CYGNUM_FLASH_INTERLEAVE,
1102                        0x004000 * CYGNUM_FLASH_INTERLEAVE,
1103                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
1104                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
1105                        0x008000 * CYGNUM_FLASH_INTERLEAVE,
1106                        _LAST_BOOTBLOCK
1107                      },
1108         banked     : false,
1109         bufsiz     : 1
1110     },
1111 #endif
1112 #ifdef CYGHWR_DEVS_FLASH_AMD_AM29LV800
1113     {   // AM29LV800-T
1114         device_id  : FLASHWORD(0x22da),
1115         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
1116         block_count: 16,
1117         device_size: 0x100000 * CYGNUM_FLASH_INTERLEAVE,
1118         base_mask  : ~(0x100000 * CYGNUM_FLASH_INTERLEAVE - 1),
1119         bootblock  : true,
1120         bootblocks : { 0xf0000 * CYGNUM_FLASH_INTERLEAVE,
1121                        0x08000 * CYGNUM_FLASH_INTERLEAVE,
1122                        0x02000 * CYGNUM_FLASH_INTERLEAVE,
1123                        0x02000 * CYGNUM_FLASH_INTERLEAVE,
1124                        0x04000 * CYGNUM_FLASH_INTERLEAVE,
1125                        _LAST_BOOTBLOCK
1126                      },
1127         banked     : false,
1128         bufsiz     : 1
1129     },
1130     {   // AM29LV800-B
1131         device_id  : FLASHWORD(0x225b),
1132         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
1133         block_count: 16,
1134         device_size: 0x100000 * CYGNUM_FLASH_INTERLEAVE,
1135         base_mask  : ~(0x100000 * CYGNUM_FLASH_INTERLEAVE - 1),
1136         bootblock  : true,
1137         bootblocks : { 0x000000 * CYGNUM_FLASH_INTERLEAVE,
1138                        0x004000 * CYGNUM_FLASH_INTERLEAVE,
1139                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
1140                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
1141                        0x008000 * CYGNUM_FLASH_INTERLEAVE,
1142                        _LAST_BOOTBLOCK
1143                      },
1144         banked     : false,
1145         bufsiz     : 1
1146     },
1147 #endif
1148 #ifdef CYGHWR_DEVS_FLASH_AMD_AM29LV640
1149     {   // MBM29LV640xx
1150         device_id  : FLASHWORD(0x22d7),
1151         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
1152         block_count: 128,
1153         device_size: 0x800000 * CYGNUM_FLASH_INTERLEAVE,
1154         base_mask  : ~(0x800000 * CYGNUM_FLASH_INTERLEAVE - 1),
1155         bootblock  : false,  
1156         banked     : false,
1157         bufsiz     : 1
1158     },
1159 #endif
1160 #ifdef CYGHWR_DEVS_FLASH_AMD_TC58FVB800
1161     {   // Toshiba TC58FVB800 (compatible with AM29LV800-B except for IDs.)
1162         device_id  : FLASHWORD(0xCE),
1163         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
1164         block_count: 16,
1165         device_size: 0x100000 * CYGNUM_FLASH_INTERLEAVE,
1166         base_mask  : ~(0x100000 * CYGNUM_FLASH_INTERLEAVE - 1),
1167         bootblock  : true,
1168         bootblocks : { 0x000000 * CYGNUM_FLASH_INTERLEAVE,
1169                        0x004000 * CYGNUM_FLASH_INTERLEAVE,
1170                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
1171                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
1172                        0x008000 * CYGNUM_FLASH_INTERLEAVE,
1173                        _LAST_BOOTBLOCK
1174                      },
1175         banked     : false,
1176         bufsiz     : 1
1177     },
1178 #endif
1179
1180 #ifdef CYGHWR_DEVS_FLASH_AMD_AM29LV256
1181     {   // AMD AM29LV256
1182         long_device_id: true,
1183         device_id  : FLASHWORD(0x227e),
1184         device_id2 : FLASHWORD(0x2212),
1185         device_id3 : FLASHWORD(0x2201),
1186         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
1187         block_count: 512,
1188         device_size: 0x2000000 * CYGNUM_FLASH_INTERLEAVE,
1189         base_mask  : ~(0x2000000 * CYGNUM_FLASH_INTERLEAVE - 1),
1190         bootblock  : false,
1191         banked     : false,
1192         bufsiz     : 16,
1193     },
1194 #endif
1195 #ifdef CYGHWR_DEVS_FLASH_AMD_S29PL032J
1196     {   // S29PL032J
1197         long_device_id: true,
1198         device_id  : FLASHWORD(0x227e),
1199         device_id2 : FLASHWORD(0x220a),
1200         device_id3 : FLASHWORD(0x2201),
1201         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
1202         block_count: 64,
1203         device_size: 0x0400000 * CYGNUM_FLASH_INTERLEAVE,
1204         base_mask  : ~(0x4000000 * CYGNUM_FLASH_INTERLEAVE - 1),
1205         bootblock  : true,
1206         bootblocks : { 0x000000 * CYGNUM_FLASH_INTERLEAVE,
1207                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1208                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1209                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1210                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1211                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1212                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1213                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1214                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1215                        0x3F0000 * CYGNUM_FLASH_INTERLEAVE,
1216                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1217                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1218                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1219                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1220                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1221                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1222                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1223                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1224                        _LAST_BOOTBLOCK
1225                      },
1226         banked     : true,
1227         banks      : { 0x0380000 * CYGNUM_FLASH_INTERLEAVE,
1228                        0x0200000 * CYGNUM_FLASH_INTERLEAVE,
1229                        0x0080000 * CYGNUM_FLASH_INTERLEAVE,
1230                        0
1231                      },
1232         bufsiz     : 1
1233     },
1234 #endif
1235 #ifdef CYGHWR_DEVS_FLASH_AMD_S29PL064J
1236     {   // S29PL064J
1237         long_device_id: true,
1238         device_id  : FLASHWORD(0x227e),
1239         device_id2 : FLASHWORD(0x2202),
1240         device_id3 : FLASHWORD(0x2201),
1241         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
1242         block_count: 128,
1243         device_size: 0x0800000 * CYGNUM_FLASH_INTERLEAVE,
1244         base_mask  : ~(0x8000000 * CYGNUM_FLASH_INTERLEAVE - 1),
1245         bootblock  : true,
1246         bootblocks : { 0x000000 * CYGNUM_FLASH_INTERLEAVE,
1247                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1248                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1249                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1250                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1251                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1252                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1253                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1254                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1255                        0x7F0000 * CYGNUM_FLASH_INTERLEAVE,
1256                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1257                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1258                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1259                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1260                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1261                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1262                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1263                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1264                        _LAST_BOOTBLOCK
1265                      },
1266         banked     : true,
1267         banks      : { 0x0700000 * CYGNUM_FLASH_INTERLEAVE,
1268                        0x0400000 * CYGNUM_FLASH_INTERLEAVE,
1269                        0x0100000 * CYGNUM_FLASH_INTERLEAVE,
1270                        0
1271                      },
1272         bufsiz     : 1
1273     },
1274 #endif
1275 #ifdef CYGHWR_DEVS_FLASH_AMD_S29PL127J
1276     {   // S29PL127J
1277         long_device_id: true,
1278         device_id  : FLASHWORD(0x227e),
1279         device_id2 : FLASHWORD(0x2220),
1280         device_id3 : FLASHWORD(0x2200),
1281         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
1282         block_count: 256,
1283         device_size: 0x1000000 * CYGNUM_FLASH_INTERLEAVE,
1284         base_mask  : ~(0x1000000 * CYGNUM_FLASH_INTERLEAVE - 1),
1285         bootblock  : true,
1286         bootblocks : { 0x000000 * CYGNUM_FLASH_INTERLEAVE,
1287                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1288                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1289                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1290                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1291                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1292                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1293                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1294                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1295                        0xFF0000 * CYGNUM_FLASH_INTERLEAVE,
1296                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1297                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1298                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1299                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1300                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1301                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1302                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1303                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1304                        _LAST_BOOTBLOCK
1305                      },
1306         banked     : true,
1307         banks      : { 0x0e00000 * CYGNUM_FLASH_INTERLEAVE,
1308                        0x0800000 * CYGNUM_FLASH_INTERLEAVE,
1309                        0x0200000 * CYGNUM_FLASH_INTERLEAVE,
1310                        0
1311                      },
1312         bufsiz     : 1
1313     },
1314 #endif
1315
1316 #ifdef CYGHWR_DEVS_FLASH_AMD_S29GL512N
1317     {   // AMD/SPANSION S29GL512N
1318         long_device_id: true,
1319         device_id  : FLASHWORD(0x227e),
1320         device_id2 : FLASHWORD(0x2223),
1321         device_id3 : FLASHWORD(0x2201),
1322         block_size : 0x20000 * CYGNUM_FLASH_INTERLEAVE,
1323         block_count: 512,
1324         device_size: 0x4000000 * CYGNUM_FLASH_INTERLEAVE,
1325         base_mask  : ~(0x4000000 * CYGNUM_FLASH_INTERLEAVE - 1),
1326         bootblock  : false,
1327         banked     : false,
1328         bufsiz     : 16
1329     },
1330 #endif
1331
1332 #ifdef CYGHWR_DEVS_FLASH_AMD_S29GL256N
1333     {   // AMD/SPANSION S29GL256N
1334         long_device_id: true,
1335         device_id  : FLASHWORD(0x227e),
1336         device_id2 : FLASHWORD(0x2222),
1337         device_id3 : FLASHWORD(0x2201),
1338         block_size : 0x20000 * CYGNUM_FLASH_INTERLEAVE,
1339         block_count: 256,
1340         device_size: 0x2000000 * CYGNUM_FLASH_INTERLEAVE,
1341         base_mask  : ~(0x2000000 * CYGNUM_FLASH_INTERLEAVE - 1),
1342         bootblock  : false,
1343         banked     : false,
1344         bufsiz     : 16
1345     },
1346 #endif
1347
1348 #ifdef CYGHWR_DEVS_FLASH_AMD_S29GL128N
1349     {   // AMD/SPANSION S29GL128N
1350         long_device_id: true,
1351         device_id  : FLASHWORD(0x227e),
1352         device_id2 : FLASHWORD(0x2221),
1353         device_id3 : FLASHWORD(0x2201),
1354         block_size : 0x20000 * CYGNUM_FLASH_INTERLEAVE,
1355         block_count: 128,
1356         device_size: 0x1000000 * CYGNUM_FLASH_INTERLEAVE,
1357         base_mask  : ~(0x1000000 * CYGNUM_FLASH_INTERLEAVE - 1),
1358         bootblock  : false,
1359         banked     : false,
1360         bufsiz     : 16
1361     },
1362 #endif
1363
1364 #ifdef CYGHWR_DEVS_FLASH_AMD_S29GL064M
1365     {   // AMD/SPANSION S29GL064M
1366         long_device_id: true,
1367         device_id  : FLASHWORD(0x227e),
1368         device_id2 : FLASHWORD(0x2210),
1369         device_id3 : FLASHWORD(0x2201),
1370         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
1371         block_count: 128,
1372         device_size: 0x0800000 * CYGNUM_FLASH_INTERLEAVE,
1373         base_mask  : ~(0x8000000 * CYGNUM_FLASH_INTERLEAVE - 1),
1374         bootblock  : true,
1375         bootblocks : { 0x00000 * CYGNUM_FLASH_INTERLEAVE,
1376                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1377                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1378                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1379                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1380                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1381                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1382                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1383                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1384                        0x7F0000 * CYGNUM_FLASH_INTERLEAVE,
1385                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1386                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1387                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1388                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1389                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1390                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1391                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1392                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1393                        _LAST_BOOTBLOCK
1394                       },
1395          banked     : true,
1396          banks      : { 0x0700000 * CYGNUM_FLASH_INTERLEAVE,
1397                         0x0400000 * CYGNUM_FLASH_INTERLEAVE,
1398                         0x0100000 * CYGNUM_FLASH_INTERLEAVE,
1399                         0
1400                       },
1401         bufsiz     : 1
1402     },
1403 #endif
1404
1405 #ifdef CYGHWR_DEVS_FLASH_S29WS256N
1406     {       // SPANSION S29WS256N (compatible with AM29DL640D except for IDs.)
1407         long_device_id: true,
1408         device_id  : FLASHWORD(0x227e),
1409         device_id2 : FLASHWORD(0x2230),
1410         device_id3 : FLASHWORD(0x2200),
1411         block_size : 0x20000 * CYGNUM_FLASH_INTERLEAVE,
1412         block_count: 256,
1413         device_size: 0x2000000 * CYGNUM_FLASH_INTERLEAVE,
1414         base_mask  : ~(0x2000000 * CYGNUM_FLASH_INTERLEAVE - 1),
1415         bootblock  : true,
1416         bootblocks : { 0x00000000 * CYGNUM_FLASH_INTERLEAVE, /* offset not absolute */
1417                        0x8000 * CYGNUM_FLASH_INTERLEAVE,
1418                        0x8000 * CYGNUM_FLASH_INTERLEAVE,
1419                        0x8000 * CYGNUM_FLASH_INTERLEAVE,
1420                        0x8000 * CYGNUM_FLASH_INTERLEAVE,
1421                        0x01FE0000 * CYGNUM_FLASH_INTERLEAVE,  /* offset not absolute */
1422                        0x8000 * CYGNUM_FLASH_INTERLEAVE,
1423                        0x8000 * CYGNUM_FLASH_INTERLEAVE,
1424                        0x8000 * CYGNUM_FLASH_INTERLEAVE,
1425                        0x8000 * CYGNUM_FLASH_INTERLEAVE,
1426                        _LAST_BOOTBLOCK
1427                      },
1428         banked     : true,
1429         banks      : { 
1430                        0x1E00000 * CYGNUM_FLASH_INTERLEAVE,
1431                        0x1C00000 * CYGNUM_FLASH_INTERLEAVE,
1432                        0x1A00000 * CYGNUM_FLASH_INTERLEAVE,
1433                        0x1800000 * CYGNUM_FLASH_INTERLEAVE,
1434                        0x1600000 * CYGNUM_FLASH_INTERLEAVE,
1435                        0x1400000 * CYGNUM_FLASH_INTERLEAVE,
1436                        0x1200000 * CYGNUM_FLASH_INTERLEAVE,
1437                        0x1000000 * CYGNUM_FLASH_INTERLEAVE,
1438                        0xE00000 * CYGNUM_FLASH_INTERLEAVE,
1439                        0xC00000 * CYGNUM_FLASH_INTERLEAVE,
1440                        0xA00000 * CYGNUM_FLASH_INTERLEAVE,
1441                        0x800000 * CYGNUM_FLASH_INTERLEAVE,
1442                        0x600000 * CYGNUM_FLASH_INTERLEAVE,
1443                        0x400000 * CYGNUM_FLASH_INTERLEAVE,
1444                        0x200000 * CYGNUM_FLASH_INTERLEAVE, //starting of bank1
1445                        0                                   //starting of bank0
1446                      },
1447         bufsiz     : 1
1448     },
1449 #endif
1450
1451 #ifdef CYGHWR_DEVS_FLASH_AMD_S29GL128M
1452     {   // AMD/SPANSION S29GL128M
1453         long_device_id: true,
1454         device_id  : FLASHWORD(0x227e),
1455         device_id2 : FLASHWORD(0x2212),
1456         device_id3 : FLASHWORD(0x2200),
1457         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
1458         block_count: 256,
1459         device_size: 0x1000000 * CYGNUM_FLASH_INTERLEAVE,
1460         base_mask  : ~(0x1000000 * CYGNUM_FLASH_INTERLEAVE - 1),
1461         bootblock  : false,
1462         banked     : false,
1463         bufsiz     : 16,
1464     },
1465 #endif
1466
1467 #endif // 16 bit devices
1468
1469 #endif // CYGONCE_DEVS_FLASH_AMD_AM29XXXXX_PARTS_INL