comparison src/cs/drivers/drv_app/ffs/board/dev.c @ 187:d05fb947b50d

src/cs: sync with Magnetite
author Mychaela Falconia <falcon@freecalypso.org>
date Sat, 15 Feb 2020 20:23:30 +0000
parents 2a9935250c95
children
comparison
equal deleted inserted replaced
186:807fdc70cbd0 187:d05fb947b50d
358 #ifdef CONFIG_TARGET_PIRELLI 358 #ifdef CONFIG_TARGET_PIRELLI
359 359
360 /* 360 /*
361 * Our familiar version of the Pirelli DP-L10 hw features Spansion 361 * Our familiar version of the Pirelli DP-L10 hw features Spansion
362 * S71PL129NC0HFW4B flash (N version, 256 KiB sectors), but apparently 362 * S71PL129NC0HFW4B flash (N version, 256 KiB sectors), but apparently
363 * an earlier hw version had S71PL-J flash with 64 KiB sectors, 363 * an earlier hw version had S71PL129J flash with 64 KiB sectors,
364 * and Pirelli's official fw supports both. They have modified 364 * and Pirelli's official fw supports both. They have modified
365 * TI's flash ID code to generate device ID 0x2100 for the J version 365 * TI's flash ID code to generate device ID 0x2100 for the J version
366 * or 0x2101 for the N version. We have now replicated this ID logic 366 * or 0x2101 for the N version. We have now replicated this ID logic
367 * in our FreeCalypso code base, and we can now support both flash 367 * in our FreeCalypso code base, and we can now support both flash
368 * chip versions as well. 368 * chip versions as well.
379 FFS_DRIVER_AMD, 6 }, 379 FFS_DRIVER_AMD, 6 },
380 380
381 #elif defined(CONFIG_TARGET_FCFAM) 381 #elif defined(CONFIG_TARGET_FCFAM)
382 382
383 /* 383 /*
384 * Our FreeCalypso hardware family is currently in its infancy 384 * This table of flash devices covers those possibilities that may occur
385 * (we have only one board design so far, but hoping to have more), 385 * on FreeCalypso-branded hardware; we use a new table separate from the
386 * thus the set of possible flash chip types on FC hw platforms 386 * one we inherited from TI/Openmoko. Originally we had no choice because
387 * is expected to grow. The footprint on our current FCDEV3B PCB 387 * we had no working autodetection for our new S71PL129N flash; we now have
388 * ideally fits Spansion MCPs with two chip select banks (either 388 * working autodetection, but we still use a separate device table for a
389 * S71PL-J or S71PL-N), but can also be fitted with Openmoko's 389 * few reasons:
390 * Samsung K5A3281. Spansion S71PL129NC0HFW4B (copied from the
391 * Pirelli DP-L10) is our official flash+RAM chip, populated on
392 * our production boards, but now that we have fixed TI's autodetect
393 * code to work with the newer Spansion chips, we can support
394 * all 3 possibilities in our fw with autodetection: S71PL-J,
395 * S71PL-N or K5A32xx.
396 * 390 *
397 * For future FreeCalypso hw designs, the Mother's plan is to 391 * 1) Our 16 MiB flash options (S71PL129N and S71PL129J) are specific
398 * keep the high-capacity S71PL129NC0HFW4B for the handset prototype 392 * to CONFIG_TARGET_FCFAM;
399 * and UI development board, but for embedded modem products 393 *
400 * we will probably switch to Openmoko's K5A32xx. 394 * 2) We gain additional freedoms like having a different FFS config
395 * for K5A32xxCTM flash in FCFAM vs. Openmoko;
396 *
397 * 3) Less clutter is always good.
401 */ 398 */
402 399
403 /* S71PL-N, FreeCalypso official, FFS in the first 2 MiB of the 2nd bank */ 400 /* S71PL129N, current FCDEV3B hw, FFS in the first 2 MiB of the 2nd bank */
404 { &flash_32x256[0], (char *) 0x01800000, MANUFACT_AMD, 0x2101, 401 { &flash_32x256[0], (char *) 0x01800000, MANUFACT_AMD, 0x2101,
405 FFS_DRIVER_AMD, 8 }, 402 FFS_DRIVER_AMD, 8 },
406 403
407 /* S71PL-J, currently only theoretical */ 404 /* S71PL129J, currently only theoretical */
408 { &flash_128x64[0], (char *) 0x01800000, MANUFACT_AMD, 0x2100, 405 { &flash_128x64[0], (char *) 0x01800000, MANUFACT_AMD, 0x2100,
409 FFS_DRIVER_AMD, 32 }, 406 FFS_DRIVER_AMD, 32 },
410 407
408 /* S71PL064J, 7x9 mm, attractive option for tight physical form factors */
409 { &flash_16x64[0], (char *) 0x700000, MANUFACT_AMD, 0x0201,
410 FFS_DRIVER_AMD, 15 },
411
412 /* S71PL032J, 7x9 mm, smaller capacity, footprint same as S71PL064J */
413 { &flash_16x64[0], (char *) 0x380000, MANUFACT_AMD, 0x0A01,
414 FFS_DRIVER_AMD, 7 },
415
411 /* 416 /*
412 * K5A32xxCTM from Openmoko, but note our different FFS config: 417 * Prior to the discovery of S71PL064J as a superior alternative, we were
413 * if we are going to put this smaller flash chip into our embedded 418 * thinking about using Samsung K5A32xx from Openmoko in embedded modem
414 * modem products, let's use it efficiently. 419 * products that have no need for huge flash and XRAM. Now that we have
420 * discovered S71PL064J which is both physically smaller and friendlier in
421 * terms of BGA footprint, it is unlikely that we will go back to K5A32xx.
422 * However, we do have one FCDEV3B board on which we populated a K5A3281CTM
423 * chip, so we are keeping firmware support for it.
424 *
425 * Note that the FFS configuration is different from Openmoko's: the
426 * thinking was that if we were going to use this chip, let's use it
427 * efficiently.
415 */ 428 */
416 { &flash_16x64[0], (char *) 0x300000, MANUFACT_SAMSUNG, 0x22A0, 429 { &flash_16x64[0], (char *) 0x300000, MANUFACT_SAMSUNG, 0x22A0,
417 FFS_DRIVER_AMD, 15 }, 430 FFS_DRIVER_AMD, 15 },
418 431
419 #elif defined(CONFIG_TARGET_COMPAL) 432 #elif defined(CONFIG_TARGET_COMPAL)
449 FFS_DRIVER_INTEL, 13 }, 462 FFS_DRIVER_INTEL, 13 },
450 463
451 #else 464 #else
452 465
453 /* original table from TI/Openmoko, used on TI and Openmoko targets */ 466 /* original table from TI/Openmoko, used on TI and Openmoko targets */
467 /* also used on the newly discovered GTM900 and Tango modem targets */
454 468
455 /********** AMD Devices ***********************************************/ 469 /********** AMD Devices ***********************************************/
456 470
457 #ifdef CONFIG_TARGET_LEONARDO 471 #ifdef CONFIG_TARGET_LEONARDO
458 // AMD Am29DL640F. Ignoring the 8kB sectors 472 // AMD Am29DL640F. Ignoring the 8kB sectors
490 504
491 // AMD Am29DL164DT. Ignoring the 8kB sectors 505 // AMD Am29DL164DT. Ignoring the 8kB sectors
492 { &flash_16x64[0], (char *) 0x100000, MANUFACT_AMD, 0x2233, 506 { &flash_16x64[0], (char *) 0x100000, MANUFACT_AMD, 0x2233,
493 FFS_DRIVER_AMD, 15 }, 507 FFS_DRIVER_AMD, 15 },
494 508
509 /* newer Spansion devices in AMD ID code space */
510
511 // Spansion S29/S71PL032J. Ignoring the 8kB sectors
512 // Multi-id device: 0x227E, 0x220A, 0x2201. Converted to 0x0A01
513 { &flash_16x64[0], (char *) 0x380000, MANUFACT_AMD, 0x0A01,
514 FFS_DRIVER_AMD, 7 },
495 515
496 /********** Fujitsu Devices *******************************************/ 516 /********** Fujitsu Devices *******************************************/
497 517
498 // Fujitsu MBM29DL321TD. Using 8x8kB sectors. 518 // Fujitsu MBM29DL321TD. Using 8x8kB sectors.
499 { &flash_8x8[0], (char *) 0x3f0000, MANUFACT_FUJITSU, 0x2259, 519 { &flash_8x8[0], (char *) 0x3f0000, MANUFACT_FUJITSU, 0x2259,