Initial revision
[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_AM29LV160
601     {   // MBM29LV160-T | AM29LV160-T
602         device_id  : FLASHWORD(0x22c4),
603         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
604         block_count: 32,
605         device_size: 0x200000 * CYGNUM_FLASH_INTERLEAVE,
606         base_mask  : ~(0x200000 * CYGNUM_FLASH_INTERLEAVE - 1),
607         bootblock  : true,
608         bootblocks : { 0x1f0000 * CYGNUM_FLASH_INTERLEAVE,
609                        0x008000 * CYGNUM_FLASH_INTERLEAVE,
610                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
611                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
612                        0x004000 * CYGNUM_FLASH_INTERLEAVE,
613                        _LAST_BOOTBLOCK
614                      },
615         banked     : false,
616         bufsiz     : 1
617     },
618     {   // MBM29LV160-B | AM29LV160-B
619         device_id  : FLASHWORD(0x2249),
620         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
621         block_count: 32,
622         device_size: 0x200000 * CYGNUM_FLASH_INTERLEAVE,
623         base_mask  : ~(0x200000 * CYGNUM_FLASH_INTERLEAVE - 1),
624         bootblock  : true,
625         bootblocks : { 0x000000 * CYGNUM_FLASH_INTERLEAVE,
626                        0x004000 * CYGNUM_FLASH_INTERLEAVE,
627                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
628                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
629                        0x008000 * CYGNUM_FLASH_INTERLEAVE,
630                        _LAST_BOOTBLOCK
631                      },
632         banked     : false,
633         bufsiz     : 1
634     },
635 #endif
636 #ifdef CYGHWR_DEVS_FLASH_AMD_AM29PL160
637     {   // AM29PL160-T
638             device_id  : FLASHWORD(0x2227),
639                 block_size : 0x00040000 * CYGNUM_FLASH_INTERLEAVE,
640                 block_count: 8,
641         device_size: 0x00200000 * CYGNUM_FLASH_INTERLEAVE,
642         base_mask  : ~(0x00200000 * CYGNUM_FLASH_INTERLEAVE - 1),
643         bootblock  : true,
644                 bootblocks : { 0x1c0000 * CYGNUM_FLASH_INTERLEAVE,
645                                            0x038000 * CYGNUM_FLASH_INTERLEAVE,
646                                            0x002000 * CYGNUM_FLASH_INTERLEAVE,
647                                            0x002000 * CYGNUM_FLASH_INTERLEAVE,
648                                            0x004000 * CYGNUM_FLASH_INTERLEAVE,
649                                            _LAST_BOOTBLOCK
650                                          },
651         banked     : false,
652         bufsiz     : 1
653         },
654     {   // AM29PL160-B
655         device_id  : FLASHWORD(0x2245),
656         block_size : 0x00040000 * CYGNUM_FLASH_INTERLEAVE,
657         block_count: 8,
658         device_size: 0x00200000 * CYGNUM_FLASH_INTERLEAVE,
659         base_mask  : ~(0x00200000 * CYGNUM_FLASH_INTERLEAVE - 1),
660         bootblock  : true,
661         bootblocks : { 0x000000 * CYGNUM_FLASH_INTERLEAVE,
662                        0x004000 * CYGNUM_FLASH_INTERLEAVE,
663                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
664                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
665                        0x038000 * CYGNUM_FLASH_INTERLEAVE,
666                        _LAST_BOOTBLOCK
667                      },
668         banked     : false,
669         bufsiz     : 1
670     },
671 #endif
672 #ifdef CYGHWR_DEVS_FLASH_AMD_AM29LV200
673     {   // AM29LV200-T
674         device_id  : FLASHWORD(0x223b),
675         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
676         block_count: 4,
677         device_size: 0x40000 * CYGNUM_FLASH_INTERLEAVE,
678         base_mask  : ~(0x40000 * CYGNUM_FLASH_INTERLEAVE - 1),
679         bootblock  : true,
680         bootblocks : { 0x030000 * CYGNUM_FLASH_INTERLEAVE,
681                        0x008000 * CYGNUM_FLASH_INTERLEAVE,
682                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
683                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
684                        0x004000 * CYGNUM_FLASH_INTERLEAVE,
685                        _LAST_BOOTBLOCK
686                      },
687         banked     : false,
688         bufsiz     : 1
689     },
690     {   // AM29LV200-B
691         device_id  : FLASHWORD(0x22bf),
692         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
693         block_count: 4,
694         device_size: 0x40000 * CYGNUM_FLASH_INTERLEAVE,
695         base_mask  : ~(0x40000 * CYGNUM_FLASH_INTERLEAVE - 1),
696         bootblock  : true,
697         bootblocks : { 0x000000 * CYGNUM_FLASH_INTERLEAVE,
698                        0x004000 * CYGNUM_FLASH_INTERLEAVE,
699                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
700                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
701                        0x008000 * CYGNUM_FLASH_INTERLEAVE,
702                        _LAST_BOOTBLOCK
703                      },
704         banked     : false,
705         bufsiz     : 1
706     },
707 #endif
708 #ifdef CYGHWR_DEVS_FLASH_ST_M29W200B
709     {   // ST M29W200BT
710         device_id  : FLASHWORD(0x0051),
711         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
712         block_count: 4,
713         device_size: 0x40000 * CYGNUM_FLASH_INTERLEAVE,
714         base_mask  : ~(0x40000 * CYGNUM_FLASH_INTERLEAVE - 1),
715         bootblock  : true,
716         bootblocks : { 0x030000 * CYGNUM_FLASH_INTERLEAVE,
717                        0x008000 * CYGNUM_FLASH_INTERLEAVE,
718                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
719                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
720                        0x004000 * CYGNUM_FLASH_INTERLEAVE,
721                        _LAST_BOOTBLOCK
722                      },
723         banked     : false,
724         bufsiz     : 1
725     },
726     {   // ST M29W200BB
727         device_id  : FLASHWORD(0x0057),
728         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
729         block_count: 4,
730         device_size: 0x40000 * CYGNUM_FLASH_INTERLEAVE,
731         base_mask  : ~(0x40000 * CYGNUM_FLASH_INTERLEAVE - 1),
732         bootblock  : true,
733         bootblocks : { 0x000000 * CYGNUM_FLASH_INTERLEAVE,
734                        0x004000 * CYGNUM_FLASH_INTERLEAVE,
735                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
736                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
737                        0x008000 * CYGNUM_FLASH_INTERLEAVE,
738                        _LAST_BOOTBLOCK
739                      },
740         banked     : false,
741         bufsiz     : 1
742     },
743 #endif
744 #ifdef CYGHWR_DEVS_FLASH_AMD_AM29LV320D
745     {   // AM29LV320DT
746         device_id  : FLASHWORD(0x22F6),
747         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
748         block_count: 64,
749         device_size: 0x400000 * CYGNUM_FLASH_INTERLEAVE,
750         base_mask  : ~(0x400000 * CYGNUM_FLASH_INTERLEAVE - 1),
751         bootblock  : true,
752         bootblocks : { 0x3f0000 * CYGNUM_FLASH_INTERLEAVE,
753                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
754                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
755                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
756                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
757                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
758                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
759                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
760                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
761                        _LAST_BOOTBLOCK
762                      },
763         banked     : false,
764         bufsiz     : 1
765     },
766     {   // AM29LV320D
767         device_id  : FLASHWORD(0x22F9),
768         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
769         block_count: 64,
770         device_size: 0x400000 * CYGNUM_FLASH_INTERLEAVE,
771         base_mask  : ~(0x400000 * CYGNUM_FLASH_INTERLEAVE - 1),
772         bootblock  : true,
773         bootblocks : { 0x000000 * CYGNUM_FLASH_INTERLEAVE,
774                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
775                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
776                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
777                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
778                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
779                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
780                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
781                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
782                        _LAST_BOOTBLOCK
783                      },
784         banked     : false,
785         bufsiz     : 1
786     },
787 #endif
788 #ifdef CYGHWR_DEVS_FLASH_AMD_AM29DL322D
789     {   // AM29DL322D-T
790         device_id  : FLASHWORD(0x2255),
791         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
792         block_count: 64,
793         device_size: 0x400000 * CYGNUM_FLASH_INTERLEAVE,
794         base_mask  : ~(0x400000 * CYGNUM_FLASH_INTERLEAVE - 1),
795         bootblock  : true,
796         bootblocks : { 0x3f0000 * CYGNUM_FLASH_INTERLEAVE,
797                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
798                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
799                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
800                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
801                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
802                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
803                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
804                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
805                        _LAST_BOOTBLOCK
806                      },
807         banked     : true,
808         banks      : { 0x380000 * CYGNUM_FLASH_INTERLEAVE,
809                        0
810                      },
811         bufsiz     : 1
812     },
813     {   // AM29DL322D-B
814         device_id  : FLASHWORD(0x2256),
815         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
816         block_count: 64,
817         device_size: 0x400000 * CYGNUM_FLASH_INTERLEAVE,
818         base_mask  : ~(0x400000 * CYGNUM_FLASH_INTERLEAVE - 1),
819         bootblock  : true,
820         bootblocks : { 0x000000 * CYGNUM_FLASH_INTERLEAVE,
821                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
822                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
823                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
824                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
825                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
826                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
827                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
828                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
829                        _LAST_BOOTBLOCK
830                      },
831         banked     : true,
832         banks      : { 0x80000 * CYGNUM_FLASH_INTERLEAVE,
833                        0
834                      },
835         bufsiz     : 1
836     },
837 #endif
838 #ifdef CYGHWR_DEVS_FLASH_AMD_AM29DL323D
839     {   // AM29DL323D-T
840         device_id  : FLASHWORD(0x2250),
841         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
842         block_count: 64,
843         device_size: 0x400000 * CYGNUM_FLASH_INTERLEAVE,
844         base_mask  : ~(0x400000 * CYGNUM_FLASH_INTERLEAVE - 1),
845         bootblock  : true,
846         bootblocks : { 0x3f0000 * CYGNUM_FLASH_INTERLEAVE,
847                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
848                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
849                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
850                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
851                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
852                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
853                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
854                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
855                        _LAST_BOOTBLOCK
856                      },
857         banked     : true,
858         banks      : { 0x300000 * CYGNUM_FLASH_INTERLEAVE,
859                        0
860                      },
861         bufsiz     : 1
862     },
863     {   // AM29DL323D-B
864         device_id  : FLASHWORD(0x2253),
865         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
866         block_count: 64,  
867         device_size: 0x400000 * CYGNUM_FLASH_INTERLEAVE,
868         base_mask  : ~(0x400000 * CYGNUM_FLASH_INTERLEAVE - 1),
869         bootblock  : true,
870         bootblocks : { 0x000000 * CYGNUM_FLASH_INTERLEAVE,
871                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
872                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
873                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
874                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
875                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
876                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
877                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
878                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
879                        _LAST_BOOTBLOCK
880                      },
881         banked     : true,
882         banks      : { 0x100000 * CYGNUM_FLASH_INTERLEAVE,
883                        0
884                      },
885         bufsiz     : 1
886     },
887 #endif
888 #ifdef CYGHWR_DEVS_FLASH_AMD_AM29DL324D
889     {   // AM29DL324D-T
890         device_id  : FLASHWORD(0x225c),
891         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
892         block_count: 64,
893         device_size: 0x400000 * CYGNUM_FLASH_INTERLEAVE,
894         base_mask  : ~(0x400000 * CYGNUM_FLASH_INTERLEAVE - 1),
895         bootblock  : true,
896         bootblocks : { 0x3f0000 * CYGNUM_FLASH_INTERLEAVE,
897                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
898                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
899                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
900                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
901                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
902                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
903                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
904                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
905                        _LAST_BOOTBLOCK
906                      },
907         banked     : true,
908         banks      : { 0x200000 * CYGNUM_FLASH_INTERLEAVE,
909                        0
910                      },
911         bufsiz     : 1
912     },
913     {   // AM29DL324D-B
914         device_id  : FLASHWORD(0x225f),
915         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
916         block_count: 64,  
917         device_size: 0x400000 * CYGNUM_FLASH_INTERLEAVE,
918         base_mask  : ~(0x400000 * CYGNUM_FLASH_INTERLEAVE - 1),
919         bootblock  : true,
920         bootblocks : { 0x000000 * CYGNUM_FLASH_INTERLEAVE,
921                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
922                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
923                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
924                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
925                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
926                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
927                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
928                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
929                        _LAST_BOOTBLOCK
930                      },
931         banked     : true,
932         banks      : { 0x200000 * CYGNUM_FLASH_INTERLEAVE,
933                        0
934                      },
935         bufsiz     : 1
936     },
937 #endif
938 #ifdef CYGHWR_DEVS_FLASH_AMD_AM29DL640D
939 {   // AM29DL640D
940         long_device_id: true,
941         device_id  : FLASHWORD(0x227e),
942         device_id2 : FLASHWORD(0x2202),
943         device_id3 : FLASHWORD(0x2201),
944         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
945         block_count: 128,
946         device_size: 0x800000 * CYGNUM_FLASH_INTERLEAVE,
947         base_mask  : ~(0x800000 * CYGNUM_FLASH_INTERLEAVE - 1),
948         bootblock  : true,
949         bootblocks : { 0x000000 * CYGNUM_FLASH_INTERLEAVE,
950                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
951                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
952                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
953                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
954                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
955                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
956                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
957                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
958                        0x7F0000 * CYGNUM_FLASH_INTERLEAVE,
959                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
960                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
961                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
962                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
963                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
964                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
965                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
966                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
967                        _LAST_BOOTBLOCK
968                      },
969         banked     : true,
970         banks      : { 0x700000 * CYGNUM_FLASH_INTERLEAVE,
971                        0x400000 * CYGNUM_FLASH_INTERLEAVE,
972                        0x100000 * CYGNUM_FLASH_INTERLEAVE,
973                        0
974                      },
975         bufsiz     : 1
976     },
977 #endif
978 #ifdef CYGHWR_DEVS_FLASH_AMD_AM29LV400
979     {   // AM29LV400-T
980         device_id  : FLASHWORD(0x22b9),
981         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
982         block_count: 8,
983         device_size: 0x80000 * CYGNUM_FLASH_INTERLEAVE,
984         base_mask  : ~(0x80000 * CYGNUM_FLASH_INTERLEAVE - 1),
985         bootblock  : true,
986         bootblocks : { 0xf0000 * CYGNUM_FLASH_INTERLEAVE,
987                        0x08000 * CYGNUM_FLASH_INTERLEAVE,
988                        0x02000 * CYGNUM_FLASH_INTERLEAVE,
989                        0x02000 * CYGNUM_FLASH_INTERLEAVE,
990                        0x04000 * CYGNUM_FLASH_INTERLEAVE,
991                        _LAST_BOOTBLOCK
992                      },
993         banked     : false,
994         bufsiz     : 1
995     },
996     {   // AM29LV400-B
997         device_id  : FLASHWORD(0x22ba),
998         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
999         block_count: 8,
1000         device_size: 0x80000 * CYGNUM_FLASH_INTERLEAVE,
1001         base_mask  : ~(0x80000 * CYGNUM_FLASH_INTERLEAVE - 1),
1002         bootblock  : true,
1003         bootblocks : { 0x000000 * CYGNUM_FLASH_INTERLEAVE,
1004                        0x004000 * CYGNUM_FLASH_INTERLEAVE,
1005                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
1006                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
1007                        0x008000 * CYGNUM_FLASH_INTERLEAVE,
1008                        _LAST_BOOTBLOCK
1009                      },
1010         banked     : false,
1011         bufsiz     : 1
1012     },
1013 #endif
1014 #ifdef CYGHWR_DEVS_FLASH_AMD_AM29F800
1015     {   // AM29F800-T
1016         device_id  : FLASHWORD(0x22d6),
1017         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
1018         block_count: 16,
1019         device_size: 0x100000 * CYGNUM_FLASH_INTERLEAVE,
1020         base_mask  : ~(0x100000 * CYGNUM_FLASH_INTERLEAVE - 1),
1021         bootblock  : true,
1022         bootblocks : { 0xf0000 * CYGNUM_FLASH_INTERLEAVE,
1023                        0x08000 * CYGNUM_FLASH_INTERLEAVE,
1024                        0x02000 * CYGNUM_FLASH_INTERLEAVE,
1025                        0x02000 * CYGNUM_FLASH_INTERLEAVE,
1026                        0x04000 * CYGNUM_FLASH_INTERLEAVE,
1027                        _LAST_BOOTBLOCK
1028                      },
1029         banked     : false,
1030         bufsiz     : 1
1031     },
1032     {   // AM29F800-B
1033         device_id  : FLASHWORD(0x2258),
1034         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
1035         block_count: 16,
1036         device_size: 0x100000 * CYGNUM_FLASH_INTERLEAVE,
1037         base_mask  : ~(0x100000 * CYGNUM_FLASH_INTERLEAVE - 1),
1038         bootblock  : true,
1039         bootblocks : { 0x000000 * CYGNUM_FLASH_INTERLEAVE,
1040                        0x004000 * CYGNUM_FLASH_INTERLEAVE,
1041                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
1042                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
1043                        0x008000 * CYGNUM_FLASH_INTERLEAVE,
1044                        _LAST_BOOTBLOCK
1045                      },
1046         banked     : false,
1047         bufsiz     : 1
1048     },
1049 #endif
1050 #ifdef CYGHWR_DEVS_FLASH_AMD_AM29LV800
1051     {   // AM29LV800-T
1052         device_id  : FLASHWORD(0x22da),
1053         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
1054         block_count: 16,
1055         device_size: 0x100000 * CYGNUM_FLASH_INTERLEAVE,
1056         base_mask  : ~(0x100000 * CYGNUM_FLASH_INTERLEAVE - 1),
1057         bootblock  : true,
1058         bootblocks : { 0xf0000 * CYGNUM_FLASH_INTERLEAVE,
1059                        0x08000 * CYGNUM_FLASH_INTERLEAVE,
1060                        0x02000 * CYGNUM_FLASH_INTERLEAVE,
1061                        0x02000 * CYGNUM_FLASH_INTERLEAVE,
1062                        0x04000 * CYGNUM_FLASH_INTERLEAVE,
1063                        _LAST_BOOTBLOCK
1064                      },
1065         banked     : false,
1066         bufsiz     : 1
1067     },
1068     {   // AM29LV800-B
1069         device_id  : FLASHWORD(0x225b),
1070         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
1071         block_count: 16,
1072         device_size: 0x100000 * CYGNUM_FLASH_INTERLEAVE,
1073         base_mask  : ~(0x100000 * CYGNUM_FLASH_INTERLEAVE - 1),
1074         bootblock  : true,
1075         bootblocks : { 0x000000 * CYGNUM_FLASH_INTERLEAVE,
1076                        0x004000 * CYGNUM_FLASH_INTERLEAVE,
1077                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
1078                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
1079                        0x008000 * CYGNUM_FLASH_INTERLEAVE,
1080                        _LAST_BOOTBLOCK
1081                      },
1082         banked     : false,
1083         bufsiz     : 1
1084     },
1085 #endif
1086 #ifdef CYGHWR_DEVS_FLASH_AMD_AM29LV640
1087     {   // MBM29LV640xx
1088         device_id  : FLASHWORD(0x22d7),
1089         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
1090         block_count: 128,
1091         device_size: 0x800000 * CYGNUM_FLASH_INTERLEAVE,
1092         base_mask  : ~(0x800000 * CYGNUM_FLASH_INTERLEAVE - 1),
1093         bootblock  : false,  
1094         banked     : false,
1095         bufsiz     : 1
1096     },
1097 #endif
1098 #ifdef CYGHWR_DEVS_FLASH_AMD_TC58FVB800
1099     {   // Toshiba TC58FVB800 (compatible with AM29LV800-B except for IDs.)
1100         device_id  : FLASHWORD(0xCE),
1101         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
1102         block_count: 16,
1103         device_size: 0x100000 * CYGNUM_FLASH_INTERLEAVE,
1104         base_mask  : ~(0x100000 * CYGNUM_FLASH_INTERLEAVE - 1),
1105         bootblock  : true,
1106         bootblocks : { 0x000000 * CYGNUM_FLASH_INTERLEAVE,
1107                        0x004000 * CYGNUM_FLASH_INTERLEAVE,
1108                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
1109                        0x002000 * CYGNUM_FLASH_INTERLEAVE,
1110                        0x008000 * CYGNUM_FLASH_INTERLEAVE,
1111                        _LAST_BOOTBLOCK
1112                      },
1113         banked     : false,
1114         bufsiz     : 1
1115     },
1116 #endif
1117
1118 #ifdef CYGHWR_DEVS_FLASH_AMD_AM29LV256
1119     {   // AMD AM29LV256
1120         long_device_id: true,
1121         device_id  : FLASHWORD(0x227e),
1122         device_id2 : FLASHWORD(0x2212),
1123         device_id3 : FLASHWORD(0x2201),
1124         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
1125         block_count: 512,
1126         device_size: 0x2000000 * CYGNUM_FLASH_INTERLEAVE,
1127         base_mask  : ~(0x2000000 * CYGNUM_FLASH_INTERLEAVE - 1),
1128         bootblock  : false,
1129         banked     : false,
1130         bufsiz     : 16,
1131     },
1132 #endif
1133 #ifdef CYGHWR_DEVS_FLASH_AMD_S29PL032J
1134     {   // S29PL032J
1135         long_device_id: true,
1136         device_id  : FLASHWORD(0x227e),
1137         device_id2 : FLASHWORD(0x220a),
1138         device_id3 : FLASHWORD(0x2201),
1139         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
1140         block_count: 64,
1141         device_size: 0x0400000 * CYGNUM_FLASH_INTERLEAVE,
1142         base_mask  : ~(0x4000000 * CYGNUM_FLASH_INTERLEAVE - 1),
1143         bootblock  : true,
1144         bootblocks : { 0x000000 * CYGNUM_FLASH_INTERLEAVE,
1145                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1146                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1147                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1148                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1149                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1150                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1151                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1152                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1153                        0x3F0000 * CYGNUM_FLASH_INTERLEAVE,
1154                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1155                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1156                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1157                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1158                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1159                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1160                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1161                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1162                        _LAST_BOOTBLOCK
1163                      },
1164         banked     : true,
1165         banks      : { 0x0380000 * CYGNUM_FLASH_INTERLEAVE,
1166                        0x0200000 * CYGNUM_FLASH_INTERLEAVE,
1167                        0x0080000 * CYGNUM_FLASH_INTERLEAVE,
1168                        0
1169                      },
1170         bufsiz     : 1
1171     },
1172 #endif
1173 #ifdef CYGHWR_DEVS_FLASH_AMD_S29PL064J
1174     {   // S29PL064J
1175         long_device_id: true,
1176         device_id  : FLASHWORD(0x227e),
1177         device_id2 : FLASHWORD(0x2202),
1178         device_id3 : FLASHWORD(0x2201),
1179         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
1180         block_count: 128,
1181         device_size: 0x0800000 * CYGNUM_FLASH_INTERLEAVE,
1182         base_mask  : ~(0x8000000 * CYGNUM_FLASH_INTERLEAVE - 1),
1183         bootblock  : true,
1184         bootblocks : { 0x000000 * CYGNUM_FLASH_INTERLEAVE,
1185                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1186                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1187                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1188                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1189                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1190                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1191                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1192                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1193                        0x7F0000 * CYGNUM_FLASH_INTERLEAVE,
1194                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1195                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1196                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1197                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1198                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1199                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1200                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1201                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1202                        _LAST_BOOTBLOCK
1203                      },
1204         banked     : true,
1205         banks      : { 0x0700000 * CYGNUM_FLASH_INTERLEAVE,
1206                        0x0400000 * CYGNUM_FLASH_INTERLEAVE,
1207                        0x0100000 * CYGNUM_FLASH_INTERLEAVE,
1208                        0
1209                      },
1210         bufsiz     : 1
1211     },
1212 #endif
1213 #ifdef CYGHWR_DEVS_FLASH_AMD_S29PL127J
1214     {   // S29PL127J
1215         long_device_id: true,
1216         device_id  : FLASHWORD(0x227e),
1217         device_id2 : FLASHWORD(0x2220),
1218         device_id3 : FLASHWORD(0x2200),
1219         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
1220         block_count: 256,
1221         device_size: 0x1000000 * CYGNUM_FLASH_INTERLEAVE,
1222         base_mask  : ~(0x1000000 * CYGNUM_FLASH_INTERLEAVE - 1),
1223         bootblock  : true,
1224         bootblocks : { 0x000000 * CYGNUM_FLASH_INTERLEAVE,
1225                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1226                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1227                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1228                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1229                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1230                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1231                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1232                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1233                        0xFF0000 * CYGNUM_FLASH_INTERLEAVE,
1234                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1235                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1236                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1237                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1238                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1239                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1240                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1241                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1242                        _LAST_BOOTBLOCK
1243                      },
1244         banked     : true,
1245         banks      : { 0x0e00000 * CYGNUM_FLASH_INTERLEAVE,
1246                        0x0800000 * CYGNUM_FLASH_INTERLEAVE,
1247                        0x0200000 * CYGNUM_FLASH_INTERLEAVE,
1248                        0
1249                      },
1250         bufsiz     : 1
1251     },
1252 #endif
1253 #ifdef CYGHWR_DEVS_FLASH_AMD_S29GL064M
1254     {   // AMD/SPANSION S29GL064M
1255         long_device_id: true,
1256         device_id  : FLASHWORD(0x227e),
1257         device_id2 : FLASHWORD(0x2210),
1258         device_id3 : FLASHWORD(0x2201),
1259         block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
1260         block_count: 128,
1261         device_size: 0x0800000 * CYGNUM_FLASH_INTERLEAVE,
1262         base_mask  : ~(0x8000000 * CYGNUM_FLASH_INTERLEAVE - 1),
1263         bootblock  : true,
1264         bootblocks : { 0x00000 * CYGNUM_FLASH_INTERLEAVE,
1265                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1266                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1267                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1268                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1269                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1270                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1271                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1272                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1273                        0x7F0000 * CYGNUM_FLASH_INTERLEAVE,
1274                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1275                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1276                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1277                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1278                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1279                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1280                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1281                        0x2000 * CYGNUM_FLASH_INTERLEAVE,
1282                        _LAST_BOOTBLOCK
1283                       },
1284          banked     : true,
1285          banks      : { 0x0700000 * CYGNUM_FLASH_INTERLEAVE,
1286                         0x0400000 * CYGNUM_FLASH_INTERLEAVE,
1287                         0x0100000 * CYGNUM_FLASH_INTERLEAVE,
1288                         0
1289                       },
1290         bufsiz     : 1
1291     },
1292 #endif
1293
1294 #ifdef CYGHWR_DEVS_FLASH_S29WS256N
1295     {       // SPANSION S29WS256N (compatible with AM29DL640D except for IDs.)
1296         long_device_id: true,
1297         device_id  : FLASHWORD(0x227e),
1298         device_id2 : FLASHWORD(0x2230),
1299         device_id3 : FLASHWORD(0x2200),
1300         block_size : 0x20000 * CYGNUM_FLASH_INTERLEAVE,
1301         block_count: 256,
1302         device_size: 0x2000000 * CYGNUM_FLASH_INTERLEAVE,
1303         base_mask  : ~(0x2000000 * CYGNUM_FLASH_INTERLEAVE - 1),
1304         bootblock  : true,
1305         bootblocks : { 0x00000000 * CYGNUM_FLASH_INTERLEAVE, /* offset not absolute */
1306                        0x8000 * CYGNUM_FLASH_INTERLEAVE,
1307                        0x8000 * CYGNUM_FLASH_INTERLEAVE,
1308                        0x8000 * CYGNUM_FLASH_INTERLEAVE,
1309                        0x8000 * CYGNUM_FLASH_INTERLEAVE,
1310                        0x01FE0000 * CYGNUM_FLASH_INTERLEAVE,  /* offset not absolute */
1311                        0x8000 * CYGNUM_FLASH_INTERLEAVE,
1312                        0x8000 * CYGNUM_FLASH_INTERLEAVE,
1313                        0x8000 * CYGNUM_FLASH_INTERLEAVE,
1314                        0x8000 * CYGNUM_FLASH_INTERLEAVE,
1315                        _LAST_BOOTBLOCK
1316                      },
1317         banked     : true,
1318         banks      : { 
1319                        0x1E00000 * CYGNUM_FLASH_INTERLEAVE,
1320                        0x1C00000 * CYGNUM_FLASH_INTERLEAVE,
1321                        0x1A00000 * CYGNUM_FLASH_INTERLEAVE,
1322                        0x1800000 * CYGNUM_FLASH_INTERLEAVE,
1323                        0x1600000 * CYGNUM_FLASH_INTERLEAVE,
1324                        0x1400000 * CYGNUM_FLASH_INTERLEAVE,
1325                        0x1200000 * CYGNUM_FLASH_INTERLEAVE,
1326                        0x1000000 * CYGNUM_FLASH_INTERLEAVE,
1327                        0xE00000 * CYGNUM_FLASH_INTERLEAVE,
1328                        0xC00000 * CYGNUM_FLASH_INTERLEAVE,
1329                        0xA00000 * CYGNUM_FLASH_INTERLEAVE,
1330                        0x800000 * CYGNUM_FLASH_INTERLEAVE,
1331                        0x600000 * CYGNUM_FLASH_INTERLEAVE,
1332                        0x400000 * CYGNUM_FLASH_INTERLEAVE,
1333                        0x200000 * CYGNUM_FLASH_INTERLEAVE, //starting of bank1
1334                        0                                   //starting of bank0
1335                      },
1336         bufsiz     : 1
1337     },
1338 #endif
1339
1340 #endif // 16 bit devices
1341
1342 #endif // CYGONCE_DEVS_FLASH_AMD_AM29XXXXX_PARTS_INL