FreeCalypso > hg > fc-selenite
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, |