comparison src/cs/drivers/drv_app/ffs/board/dev.c @ 0:b6a5e36de839

src/cs: initial import from Magnetite
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 15 Jul 2018 04:39:26 +0000
parents
children 97297555c71a
comparison
equal deleted inserted replaced
-1:000000000000 0:b6a5e36de839
1 /******************************************************************************
2 * Flash File System (ffs)
3 * Idea, design and coding by Mads Meisner-Jensen, mmj@ti.com
4 *
5 * ffs flash device definitions
6 *
7 * $Id: dev.c 1.34.1.25 Thu, 18 Dec 2003 10:50:52 +0100 tsj $
8 *
9 ******************************************************************************/
10
11 #include "ffs/ffs.h"
12 #include "ffs/board/drv.h"
13 #include "config/board.cfg"
14 #include "config/rf.cfg"
15 #include "config/fc-target.cfg"
16
17 /******************************************************************************
18
19 Flash memories supported:
20
21 The real flash device names are listed in the Device column. The names of
22 compatible/similar devices are listed in the "aliases" column.
23 Compatible/similar devices are e.g. combo devices using that particular
24 flash device.
25
26 The size column denotes the full device memory size in megabits (Mb). For
27 dual and multi-bank devices, two or more numbers indicate the sizes of the
28 respective banks, starting from the lowest address.
29
30 ---------------+--------+-------------------------------------------------
31 Device | Size| Aliases and Notes
32 ---------------+--------+-----------------------------------------------------
33 AMD | |
34 29DL161T |15.5+0.5|
35 29DL162T |14.0+2.0|
36 29DL163T |12.0+4.0|
37 29DL164T | 8.0+8.0|
38 29DL322T |28.0+4.0|
39 29DL323T |24.0+8.0|
40 ---------------+--------+-----------------------------------------------------
41 Fujitsu | |
42 29DL161T |15.5+0.5| (Am29DL161)
43 29DL162T |14.0+2.0| (Am29DL162)
44 29DL163T |12.0+4.0| (Am29DL163)
45 29DL164T | 8.0+8.0| (Am29DL164)
46 29DL321TD | | (Am29DL321), MB84VD22181, MB84VD22081, MB84VD22191
47 29DL322TD |28.0+4.0| (Am29DL322), MB84VD22182, MB84VD22082, MB84VD22192
48 29DL323TD |24.0+8.0| (Am29DL323), MB84VD22183, MB84VD22083, MB84VD22193,
49 | | BSample device
50 ---------------+--------+-----------------------------------------------------
51 Samsung | |
52 K5A3240YT |24+8 |
53 K5A3240YB | 8+24 |
54 K5A3340YT |16+16 |
55 K5A3340YB |14+18 | (!?)
56 ---------------+--------+-----------------------------------------------------
57 SST | |
58 SST36VF1601 | |
59 ---------------+--------+-----------------------------------------------------
60 Toshiba | |
61 ? | | TH50VSF2581AASB
62 ---------------+--------+-----------------------------------------------------
63 Intel | |
64 28F160C3 | 16.0| Both Top and Bottom boot
65 28F320C3 | 32.0| Both Top and Bottom boot
66 28F640C3 | 64.0| Both Top and Bottom boot
67 28F640W30 | 64.0| Both Top and Bottom boot, DSample device
68 ---------------+--------+-----------------------------------------------------
69 Test | |
70 | |
71 ---------------+--------+-----------------------------------------------------
72
73 ******************************************************************************/
74
75
76 /******************************************************************************
77 * Flash Device Memory Maps
78 ******************************************************************************/
79
80 // The memory map, flash_AAxBB[], used by each flash device definition in
81 // the flash_info[] array below can be either one of the pre-defined ones
82 // below or a custom-defined one. Each line in the memory map represents one
83 // physical device sector. The columns in the memory map has the following
84 // meaning:
85 //
86 // 1. Relative address offset of sector.
87 // 2. Base 2 logarithm of sector byte size, e.g. 64kB ~ 2^16.
88 //
89 // Note that does NOT support a flash definition with different sized blocks
90 // so all blocks contained in the device definition MUST be the same size!
91
92 #if defined(CONFIG_TARGET_PIRELLI) || defined(CONFIG_TARGET_FCFAM)
93 // 256 KiB sectors
94 static const struct block_info_s flash_32x256[] =
95 {
96 { 0x000000, 18 },
97 { 0x040000, 18 },
98 { 0x080000, 18 },
99 { 0x0C0000, 18 },
100 { 0x100000, 18 },
101 { 0x140000, 18 },
102 { 0x180000, 18 },
103 { 0x1C0000, 18 },
104 { 0x200000, 18 },
105 { 0x240000, 18 },
106 { 0x280000, 18 },
107 { 0x2C0000, 18 },
108 { 0x300000, 18 },
109 { 0x340000, 18 },
110 { 0x380000, 18 },
111 { 0x3C0000, 18 },
112 { 0x400000, 18 },
113 { 0x440000, 18 },
114 { 0x480000, 18 },
115 { 0x4C0000, 18 },
116 { 0x500000, 18 },
117 { 0x540000, 18 },
118 { 0x580000, 18 },
119 { 0x5C0000, 18 },
120 { 0x600000, 18 },
121 { 0x640000, 18 },
122 { 0x680000, 18 },
123 { 0x6C0000, 18 },
124 { 0x700000, 18 },
125 { 0x740000, 18 },
126 { 0x780000, 18 },
127 { 0x7C0000, 18 }
128 };
129 #endif
130
131 // 128x64kb
132 static const struct block_info_s flash_128x64[] =
133 {
134 { 0x00000, 16 },
135 { 0x10000, 16 },
136 { 0x20000, 16 },
137 { 0x30000, 16 },
138 { 0x40000, 16 },
139 { 0x50000, 16 },
140 { 0x60000, 16 },
141 { 0x70000, 16 },
142 { 0x80000, 16 },
143 { 0x90000, 16 },
144 { 0xa0000, 16 },
145 { 0xb0000, 16 },
146 { 0xc0000, 16 },
147 { 0xd0000, 16 },
148 { 0xe0000, 16 },
149 { 0xf0000, 16 },
150 { 0x100000, 16 },
151 { 0x110000, 16 },
152 { 0x120000, 16 },
153 { 0x130000, 16 },
154 { 0x140000, 16 },
155 { 0x150000, 16 },
156 { 0x160000, 16 },
157 { 0x170000, 16 },
158 { 0x180000, 16 },
159 { 0x190000, 16 },
160 { 0x1a0000, 16 },
161 { 0x1b0000, 16 },
162 { 0x1c0000, 16 },
163 { 0x1d0000, 16 },
164 { 0x1e0000, 16 },
165 { 0x1f0000, 16 },
166 { 0x200000, 16 },
167 { 0x210000, 16 },
168 { 0x220000, 16 },
169 { 0x230000, 16 },
170 { 0x240000, 16 },
171 { 0x250000, 16 },
172 { 0x260000, 16 },
173 { 0x270000, 16 },
174 { 0x280000, 16 },
175 { 0x290000, 16 },
176 { 0x2a0000, 16 },
177 { 0x2b0000, 16 },
178 { 0x2c0000, 16 },
179 { 0x2d0000, 16 },
180 { 0x2e0000, 16 },
181 { 0x2f0000, 16 },
182 { 0x300000, 16 },
183 { 0x310000, 16 },
184 { 0x320000, 16 },
185 { 0x330000, 16 },
186 { 0x340000, 16 },
187 { 0x350000, 16 },
188 { 0x360000, 16 },
189 { 0x370000, 16 },
190 { 0x380000, 16 },
191 { 0x390000, 16 },
192 { 0x3a0000, 16 },
193 { 0x3b0000, 16 },
194 { 0x3c0000, 16 },
195 { 0x3d0000, 16 },
196 { 0x3e0000, 16 },
197 { 0x3f0000, 16 },
198 { 0x400000, 16 },
199 { 0x410000, 16 },
200 { 0x420000, 16 },
201 { 0x430000, 16 },
202 { 0x440000, 16 },
203 { 0x450000, 16 },
204 { 0x460000, 16 },
205 { 0x470000, 16 },
206 { 0x480000, 16 },
207 { 0x490000, 16 },
208 { 0x4a0000, 16 },
209 { 0x4b0000, 16 },
210 { 0x4c0000, 16 },
211 { 0x4d0000, 16 },
212 { 0x4e0000, 16 },
213 { 0x4f0000, 16 },
214 { 0x500000, 16 },
215 { 0x510000, 16 },
216 { 0x520000, 16 },
217 { 0x530000, 16 },
218 { 0x540000, 16 },
219 { 0x550000, 16 },
220 { 0x560000, 16 },
221 { 0x570000, 16 },
222 { 0x580000, 16 },
223 { 0x590000, 16 },
224 { 0x5a0000, 16 },
225 { 0x5b0000, 16 },
226 { 0x5c0000, 16 },
227 { 0x5d0000, 16 },
228 { 0x5e0000, 16 },
229 { 0x5f0000, 16 },
230 { 0x600000, 16 },
231 { 0x610000, 16 },
232 { 0x620000, 16 },
233 { 0x630000, 16 },
234 { 0x640000, 16 },
235 { 0x650000, 16 },
236 { 0x660000, 16 },
237 { 0x670000, 16 },
238 { 0x680000, 16 },
239 { 0x690000, 16 },
240 { 0x6a0000, 16 },
241 { 0x6b0000, 16 },
242 { 0x6c0000, 16 },
243 { 0x6d0000, 16 },
244 { 0x6e0000, 16 },
245 { 0x6f0000, 16 },
246 { 0x700000, 16 },
247 { 0x710000, 16 },
248 { 0x720000, 16 },
249 { 0x730000, 16 },
250 { 0x740000, 16 },
251 { 0x750000, 16 },
252 { 0x760000, 16 },
253 { 0x770000, 16 },
254 { 0x780000, 16 },
255 { 0x790000, 16 },
256 { 0x7a0000, 16 },
257 { 0x7b0000, 16 },
258 { 0x7c0000, 16 },
259 { 0x7d0000, 16 },
260 { 0x7e0000, 16 },
261 { 0x7f0000, 16 }
262 };
263
264 // 16x64kB
265 static const struct block_info_s flash_16x64[] =
266 {
267 { 0x00000, 16 },
268 { 0x10000, 16 },
269 { 0x20000, 16 },
270 { 0x30000, 16 },
271 { 0x40000, 16 },
272 { 0x50000, 16 },
273 { 0x60000, 16 },
274 { 0x70000, 16 },
275 { 0x80000, 16 },
276 { 0x90000, 16 },
277 { 0xA0000, 16 },
278 { 0xB0000, 16 },
279 { 0xC0000, 16 },
280 { 0xD0000, 16 },
281 { 0xE0000, 16 },
282 { 0xF0000, 16 }
283 };
284
285
286 // 8x8kB
287 static const struct block_info_s flash_8x8[] =
288 {
289 { 0x0000, 13 },
290 { 0x2000, 13 },
291 { 0x4000, 13 },
292 { 0x6000, 13 },
293 { 0x8000, 13 },
294 { 0xa000, 13 },
295 { 0xc000, 13 },
296 { 0xe000, 13 }
297 };
298
299
300 // 4x4kB
301 static const struct block_info_s flash_4x4[] =
302 {
303 { 0x0000, 12 },
304 { 0x1000, 12 },
305 { 0x2000, 12 },
306 { 0x3000, 12 }
307 };
308
309
310 /******************************************************************************
311 * Flash Device Info Array
312 ******************************************************************************/
313
314 // Each entry in the array below represents one flash device definition as
315 // FFS needs it. The columns have the following meaning:
316 //
317 // 1. Device memory map.
318 // 2. Absolute address of the first sector to be used by/for FFS.
319 // 3. Manufacturer code. Values are from FFS_MANUFACTURER enumeration
320 // in drv.h
321 // 4. Device code. Available from device datasheet.
322 // 5. FFS device driver to use. Values are from FFS_DRIVER enumeration
323 // in drv.h
324 // 6. Number of sectors to use, starting from the address given in
325 // column 2.
326
327 /********** RAM configuration *************************************************
328 * Note it is necessary to hardwire the configuration of the ram driver
329 * in cfgffs.c. The ram driver is configured like and pseudo flash
330 * device with only a few exceptions: Field 2 which is the absolute
331 * address of the first sector MUST be set to zero, instead the address
332 * is configured in cfgffs.c. Field 4 'Device code' is an arbitrary
333 * value and not a real device code.
334 ******************************************************************************/
335
336 /********** Multi-id configuration ********************************************
337 * When 227Eh is output, it indicates that two additional codes, called
338 * Extended Device Codes, will be required. The two additional codes will be
339 * read and the lower byte of each code will be combined into one id, which
340 * is used for auto-detection of the flash configuration. The device code
341 * format for the multi-id devices is as follow: 0x227E, 0x22YY, 0x22ZZ ->
342 * 0xYYZZ.
343 ******************************************************************************/
344
345 const struct flash_info_s flash_info[] =
346 {
347 //BOARD 34. Ram device 4x4kB. Note it is necessary to hardwire the conf
348 //in cfgffs.c
349 { &flash_4x4[0], 0, MANUFACT_RAM, 0x0404,
350 FFS_DRIVER_RAM, 4},
351
352 // Ram device 8x8kB. Note it is necessary to hardwire the conf in cfgffs.c
353 { &flash_8x8[0], 0, MANUFACT_RAM, 0x080D,
354 FFS_DRIVER_RAM, 8},
355
356 /********** AMD Devices ***********************************************/
357
358 #ifdef CONFIG_TARGET_PIRELLI
359 // Spansion S71PL129NC0 used in Pirelli DP-L10
360 // ID made up (same as what Pirelli's fw uses), not using autodetect
361 // This is an aftermarket FFS config for the Pirelli target
362 { &flash_32x256[0], (char *) 0x02480000, MANUFACT_AMD, 0x2101,
363 FFS_DRIVER_AMD, 6 },
364 #endif
365
366 #ifdef CONFIG_TARGET_FCFAM
367 // We are using the same flash+pSRAM chip in our own
368 // FreeCalypso hardware designs, but on a different chip select.
369 // Let's use the first 2 MiB of the 2nd bank for the FFS.
370 { &flash_32x256[0], (char *) 0x01800000, MANUFACT_AMD, 0x2101,
371 FFS_DRIVER_AMD, 8 },
372 #endif
373
374 // AMD Am29DL640F. Ignoring the 8kB sectors
375 // Multi-id device: 0x227E, 0x2221, 0x2200. Converted to 0x2100
376 { &flash_16x64[0], (char *) 0x01800000, MANUFACT_AMD, 0x2100,
377 FFS_DRIVER_AMD, 15 },
378
379 // AMD Am29DL640G. Ignoring the 8kB sectors
380 // Multi-id device: 0x227E, 0x2202, 0x2201. Converted to 0x0201
381 { &flash_16x64[0], (char *) 0x700000, MANUFACT_AMD, 0x0201,
382 FFS_DRIVER_AMD, 15 },
383
384 // AMD Am29DL321DT does not exist as of 2000-0217
385
386 // AMD Am29DL322DT. Ignoring the 8kB sectors
387 { &flash_16x64[0], (char *) 0x380000, MANUFACT_AMD, 0x2255,
388 FFS_DRIVER_AMD_SB, 7 },
389
390 // AMD Am29DL323DT. Ignoring the 8kB sectors
391 { &flash_16x64[0], (char *) 0x300000, MANUFACT_AMD, 0x2250,
392 FFS_DRIVER_AMD, 15 },
393
394 // AMD Am29DL161DT. Using 8x8kB sectors.
395 { &flash_8x8[0], (char *) 0x1F0000, MANUFACT_AMD, 0x2236,
396 FFS_DRIVER_AMD, 8 },
397
398 // AMD Am29DL162DT. Ignoring the 8kB sectors
399 { &flash_16x64[0], (char *) 0x1C0000, MANUFACT_AMD, 0x222D,
400 FFS_DRIVER_AMD, 3 },
401
402 // AMD Am29DL163DT. Ignoring the 8kB sectors
403 { &flash_16x64[0], (char *) 0x180000, MANUFACT_AMD, 0x2228,
404 FFS_DRIVER_AMD, 7 },
405
406 // AMD Am29DL164DT. Ignoring the 8kB sectors
407 { &flash_16x64[0], (char *) 0x100000, MANUFACT_AMD, 0x2233,
408 FFS_DRIVER_AMD, 15 },
409
410
411 /********** Fujitsu Devices *******************************************/
412
413 // Fujitsu MBM29DL321TD. Using 8x8kB sectors.
414 { &flash_8x8[0], (char *) 0x3f0000, MANUFACT_FUJITSU, 0x2259,
415 FFS_DRIVER_AMD, 8 },
416
417 // Fujitsu MBM29DL322TD. Ignoring all the 8kB sectors
418 { &flash_16x64[0], (char *) 0x380000, MANUFACT_FUJITSU, 0x2255,
419 FFS_DRIVER_AMD, 7 },
420
421 // Fujitsu MBM29DL323TD (BSample). Dual bank device definition.
422 { &flash_16x64[0], (char *) 0x300000, MANUFACT_FUJITSU, 0x2250,
423 FFS_DRIVER_AMD, 15 },
424
425 // Fujitsu MBM29DL161DT (similar to Am29DL161T).
426 { &flash_8x8[0], (char *) 0x1F0000, MANUFACT_FUJITSU, 0x2236,
427 FFS_DRIVER_AMD, 8 },
428
429 // Fujitsu MBM29DL162DT (similar to Am29DL162T).
430 { &flash_16x64[0], (char *) 0x1C0000, MANUFACT_FUJITSU, 0x222D,
431 FFS_DRIVER_AMD, 3 },
432
433 // Fujitsu MBM29DL163DT (similar to Am29DL163T).
434 { &flash_16x64[0], (char *) 0x180000, MANUFACT_FUJITSU, 0x2228,
435 FFS_DRIVER_AMD, 7 },
436
437 // Fujitsu MBM29DL164DT (similar to Am29DL164T).
438 { &flash_16x64[0], (char *) 0x100000, MANUFACT_FUJITSU, 0x2233,
439 FFS_DRIVER_AMD, 15 },
440
441 /* This is the RITA flash configuration */
442 // Fujitsu MBM29DL320FB
443 // Multi-id device: 0x227E, 0x220A, 0x2200. Converted to 0x0A00
444 { &flash_16x64[0], (char *) 0x320000, MANUFACT_FUJITSU, 0x0A00,
445 FFS_DRIVER_AMD_SB, 13 },
446
447 // Fujitsu MBM29DL320FT
448 // Multi-id device: 0x227E, 0x220A, 0x2201. Converted to 0x0A01
449 { &flash_16x64[0], (char *) 0x320000, MANUFACT_FUJITSU, 0x0A01,
450 FFS_DRIVER_AMD_SB, 13 },
451
452 // Fujitsu MBM29DL640F,
453 // Multi-id device: 0x227E, 0x2221, 0x2200. Converted to 0x2100
454 { &flash_16x64[0], (char *) 0x700000, MANUFACT_FUJITSU, 0x2100,
455 FFS_DRIVER_AMD_SB, 15 },
456
457 // Fujitsu 84VF5F5F4J2,
458 // Multi-id device: 0x227E, 0x2202, 0x2201. Converted to 0x0201
459 { &flash_16x64[0], (char *) 0x700000, MANUFACT_FUJITSU, 0x0201,
460 FFS_DRIVER_AMD_SB, 15 },
461
462 // Fujitsu MB84VF5F5F4J2 stacked device. Using the 2nd sub device
463 // The 8x8 are located both in top and bottom, thus only 126
464 // blocks are used.
465 { &flash_128x64[0], (char *) 0x1810000, MANUFACT_FUJITSU, 0xB496,
466 FFS_DRIVER_AMD_SB, 126 },
467
468 /********** Intel Devices *********************************************/
469
470 // Intel 28F160C3-T 16Mb. Using top-most 8x8kB (parameter) sectors.
471 #if defined(CONFIG_TARGET_C139) || defined(CONFIG_TARGET_C11X)
472 // Changed for C11x aftermarket FFS config: 64x3 at 0x1C0000
473 { &flash_16x64[0], (char *) 0x1C0000, MANUFACT_INTEL, 0x88C2,
474 FFS_DRIVER_INTEL_SB, 3 },
475 #else
476 { &flash_8x8[0], (char *) 0x1F0000, MANUFACT_INTEL, 0x88C2,
477 FFS_DRIVER_INTEL_SB, 8 },
478 #endif
479
480 /*
481 * A user in the field found that some Mot C11x phones have 2 MiB
482 * of flash, but use some different flash chip, not our familiar
483 * 28F160C3-T. This chip reports manufacturer ID 0x20 and device
484 * ID 0x88CE, but the CFI structure lists the same sector geometry
485 * as our familiar 28F160C3-T. Let's treat this mystery flash chip
486 * as equivalent to our familiar one.
487 */
488 { &flash_16x64[0], (char *) 0x1C0000, 0x20, 0x88CE,
489 FFS_DRIVER_INTEL_SB, 3 },
490
491 // Intel 28F160C3-B, 16Mb. Using top-most 6x64kB sectors
492 { &flash_16x64[0], (char *) 0x1A0000, MANUFACT_INTEL, 0x88C3,
493 FFS_DRIVER_INTEL_SB, 6 },
494
495 // Intel 28F320C3-T, 32Mb. Using top-most 8x8kB (parameter) sectors.
496 #if defined(CONFIG_TARGET_C139) || defined(CONFIG_TARGET_C11X)
497 // Changed for C139 aftermarket FFS config: 64x3 at 0x3C0000
498 { &flash_16x64[0], (char *) 0x3C0000, MANUFACT_INTEL, 0x88C4,
499 FFS_DRIVER_INTEL_SB, 3 },
500 #else
501 { &flash_8x8[0], (char *) 0x3F0000, MANUFACT_INTEL, 0x88C4,
502 FFS_DRIVER_INTEL_SB, 8 },
503 #endif
504
505 // Intel 28F320C3-B, 32Mb. Using top-most 8x64kB sectors
506 { &flash_16x64[0], (char *) 0x380000, MANUFACT_INTEL, 0x88C5,
507 FFS_DRIVER_INTEL_SB, 8 },
508
509 // Intel 28F640C3-T, 64Mb. Using top-most 8x8kB (parameter) sectors.
510 { &flash_8x8[0], (char *) 0x7F0000, MANUFACT_INTEL, 0x88CC,
511 FFS_DRIVER_INTEL_SB, 8 },
512
513 // Intel 28F640C3-B, 64Mb. Using top-most 16x64kB sectors
514 { &flash_16x64[0], (char *) 0x700000, MANUFACT_INTEL, 0x88CD,
515 FFS_DRIVER_INTEL_SB, 15 },
516
517 // Intel 28F640W30-T, 64Mb. Using top-most 8x8kB sectors
518 { &flash_8x8[0], (char *) 0x7F0000, MANUFACT_INTEL, 0x8854,
519 FFS_DRIVER_INTEL_SB, 8 },
520
521 // Intel 28F640W30-B, 64Mb. (DSample). Using top-most 47x64kB sectors
522 // { &flash_128x64[0], (char *) 0x500000, MANUFACT_INTEL, 0x8855,
523 // FFS_DRIVER_INTEL_SB, 47 },
524
525 // Intel 28F640W30-B, 64Mb. (DSample). Using top-most 15x64kB sectors
526 { &flash_16x64[0], (char *) 0x700000, MANUFACT_INTEL, 0x8855,
527 FFS_DRIVER_INTEL, 15 },
528
529 // Intel 28F640W30-B, 64Mb. (DSample). Using top-most 15x64kB sectors
530 { &flash_16x64[0], (char *) 0x700000, MANUFACT_INTEL, 0x88FF,
531 FFS_DRIVER_INTEL_SB, 15 },
532
533 /********** MXIC Devices *******************************************/
534
535 // Intel 28F640W30-T, 64Mb. Using top-most 8x8kB sectors
536 { &flash_8x8[0], (char *) 0x3F0000, MANUFACT_MXIC, 0x0024,
537 FFS_DRIVER_INTEL_SB, 8 },
538
539
540 /********** Samsung Devices *******************************************/
541
542 // Samsung K5A3240YT Top boot, 24Mb + 8Mb
543 { &flash_16x64[0], (char *) 0x380000, MANUFACT_SAMSUNG, 0x22B7,
544 FFS_DRIVER_AMD_SB, 7 },
545
546 // Samsung K5A3340YT Top boot, 16Mb + 16Mb
547 { &flash_16x64[0], (char *) 0x380000, MANUFACT_SAMSUNG, 0x22BA,
548 FFS_DRIVER_AMD_SB, 7 },
549
550 // Samsung K5A3240YB Bottom boot, 8Mb + 24Mb
551 { &flash_16x64[0], (char *) 0x380000, MANUFACT_SAMSUNG, 0x223F,
552 FFS_DRIVER_AMD_SB, 8 },
553
554 // Samsung K5A3340YB Bottom boot, 14Mb + 18Mb (!?)
555 { &flash_16x64[0], (char *) 0x380000, MANUFACT_SAMSUNG, 0x223D,
556 FFS_DRIVER_AMD_SB, 8 },
557 //zack add
558 //Samsung K5A3240CG
559 { &flash_16x64[0], (char *) 0x380000, MANUFACT_SAMSUNG, 0x22A0,
560 FFS_DRIVER_AMD_SB, 7 },
561 //Samsung K5L6331CAA-D270
562 { &flash_16x64[0], (char *) 0x380000, MANUFACT_SAMSUNG, 0x257E,
563 FFS_DRIVER_AMD_SB, 15 },
564 { &flash_16x64[0], (char *) 0x380000, MANUFACT_SAMSUNG, 0x2506,
565 FFS_DRIVER_AMD_SB, 15 },
566 { &flash_16x64[0], (char *) 0x380000, MANUFACT_SAMSUNG, 0x2501,
567 FFS_DRIVER_AMD_SB, 15 },
568 //end zack
569
570 /********** SST Devices ***********************************************/
571
572 // SST SST36VF1601
573 { &flash_16x64[0], (char *) 0x180000, MANUFACT_SST, 0x2761,
574 FFS_DRIVER_SST, 8 },
575
576 /********** Toshiba Devices *******************************************/
577
578 // Toshiba TH50VSF2581AASB Bottom boot combo device
579 { &flash_16x64[0], (char *) 0x380000, MANUFACT_TOSHIBA, 0x009C,
580 FFS_DRIVER_AMD, 8 },
581
582
583 /********** Special/Test Devices **************************************/
584
585 // Intel 28F160C3-B, 16Mb. Single bank driver
586 // Note that device ID is bogus!
587 { &flash_16x64[0], (char *) 0x1A0000, MANUFACT_INTEL, 0x01C3,
588 FFS_DRIVER_INTEL_SB, 6 },
589
590 // Fujitsu MBM29DL323TD (BSample). Single bank device definition.
591 // Note that device ID is bogus!
592 { &flash_16x64[0], (char *) 0x300000, MANUFACT_FUJITSU, 0x0150,
593 FFS_DRIVER_AMD_SB, 15 },
594
595 // Fujitsu MBM29DL323TD (BSample). Pseudo single bank device definition.
596 // Note that device ID is bogus!
597 { &flash_16x64[0], (char *) 0x300000, MANUFACT_FUJITSU, 0x0250,
598 FFS_DRIVER_AMD_PSEUDO_SB, 15 },
599
600 // Fujitsu MBM29DL323TD (BSample). "True" single bank device definition
601 // within first flash device bank!
602 // Note that device ID is bogus!
603 { &flash_16x64[0], (char *) 0x280000, MANUFACT_FUJITSU, 0x0350,
604 FFS_DRIVER_AMD_SB, 8 },
605
606 // AMD Am29DL323DT on EVA4 (base address = 0x200000)
607 { &flash_16x64[0], (char *) 0x500000, MANUFACT_AMD, 0xF250,
608 FFS_DRIVER_AMD, 15 },
609
610 // PC Test/Simulation flash 128x64kb
611 { &flash_128x64[0], (char *) 0x000000, MANUFACT_TEST, 0x0F12,
612 FFS_DRIVER_TEST, 127 },
613
614 // PC Test/Simulation flash 16x64kB
615 { &flash_16x64[0], (char *) 0x000000, MANUFACT_TEST, 0x0F10,
616 FFS_DRIVER_TEST, 15 },
617
618 // PC Test/Simulation flash 8x8kB
619 { &flash_8x8[0], (char *) 0x000000, MANUFACT_TEST, 0x080D,
620 FFS_DRIVER_TEST, 8 },
621
622 // PC Test/Simulation flash 4x4kB
623 { &flash_4x4[0], (char *) 0x000000, MANUFACT_TEST, 0x0404,
624 FFS_DRIVER_TEST, 4 },
625
626 // terminator
627 { 0, 0, 0, 0 }
628 };
629