FreeCalypso > hg > fc-magnetite
comparison src/cs/drivers/drv_app/ffs/board/dev.c @ 642:a6b7f63d94f1
FFS dev.c for FCFAM: better comments, S71PL064J added
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 31 Jan 2020 02:52:29 +0000 |
parents | cab2f315827e |
children | b2b502339787 |
comparison
equal
deleted
inserted
replaced
641:ffe7394d9b60 | 642:a6b7f63d94f1 |
---|---|
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 | |
411 /* | 412 /* |
412 * K5A32xxCTM from Openmoko, but note our different FFS config: | 413 * 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 | 414 * thinking about using Samsung K5A32xx from Openmoko in embedded modem |
414 * modem products, let's use it efficiently. | 415 * products that have no need for huge flash and XRAM. Now that we have |
416 * discovered S71PL064J which is both physically smaller and friendlier in | |
417 * terms of BGA footprint, it is unlikely that we will go back to K5A32xx. | |
418 * However, we do have one FCDEV3B board on which we populated a K5A3281CTM | |
419 * chip, so we are keeping firmware support for it. | |
420 * | |
421 * Note that the FFS configuration is different from Openmoko's: the | |
422 * thinking was that if we were going to use this chip, let's use it | |
423 * efficiently. | |
415 */ | 424 */ |
416 { &flash_16x64[0], (char *) 0x300000, MANUFACT_SAMSUNG, 0x22A0, | 425 { &flash_16x64[0], (char *) 0x300000, MANUFACT_SAMSUNG, 0x22A0, |
417 FFS_DRIVER_AMD, 15 }, | 426 FFS_DRIVER_AMD, 15 }, |
418 | 427 |
419 #elif defined(CONFIG_TARGET_COMPAL) | 428 #elif defined(CONFIG_TARGET_COMPAL) |
449 FFS_DRIVER_INTEL, 13 }, | 458 FFS_DRIVER_INTEL, 13 }, |
450 | 459 |
451 #else | 460 #else |
452 | 461 |
453 /* original table from TI/Openmoko, used on TI and Openmoko targets */ | 462 /* original table from TI/Openmoko, used on TI and Openmoko targets */ |
463 /* also used on the newly discovered GTM900 and Tango modem targets */ | |
454 | 464 |
455 /********** AMD Devices ***********************************************/ | 465 /********** AMD Devices ***********************************************/ |
456 | 466 |
457 #ifdef CONFIG_TARGET_LEONARDO | 467 #ifdef CONFIG_TARGET_LEONARDO |
458 // AMD Am29DL640F. Ignoring the 8kB sectors | 468 // AMD Am29DL640F. Ignoring the 8kB sectors |