diff src/cs/drivers/drv_app/ffs/board/dev.c @ 557:7aad22344e77

flash autodetection made to work on FC and Pirelli targets
author Mychaela Falconia <falcon@freecalypso.org>
date Tue, 11 Dec 2018 07:37:44 +0000
parents b48e9892ee65
children ddaa0263ea8e
line wrap: on
line diff
--- a/src/cs/drivers/drv_app/ffs/board/dev.c	Mon Nov 19 02:00:21 2018 +0000
+++ b/src/cs/drivers/drv_app/ffs/board/dev.c	Tue Dec 11 07:37:44 2018 +0000
@@ -128,7 +128,8 @@
 };
 #endif
 
-#ifdef CONFIG_TARGET_LEONARDO
+#if defined(CONFIG_TARGET_LEONARDO) || defined(CONFIG_TARGET_PIRELLI) || \
+	defined(CONFIG_TARGET_FCFAM)
 // 128x64kb
 static const struct block_info_s flash_128x64[] =
 {
@@ -359,20 +360,61 @@
 
 #ifdef CONFIG_TARGET_PIRELLI
 
-    // Spansion S71PL129NC0 used in Pirelli DP-L10
-    // ID made up (same as what Pirelli's fw uses), not using autodetect
-    // This is an aftermarket FFS config for the Pirelli target
+    /*
+     * Our familiar version of the Pirelli DP-L10 hw features Spansion
+     * S71PL129NC0HFW4B flash (N version, 256 KiB sectors), but apparently
+     * an earlier hw version had S71PL-J flash with 64 KiB sectors,
+     * and Pirelli's official fw supports both.  They have modified
+     * TI's flash ID code to generate device ID 0x2100 for the J version
+     * or 0x2101 for the N version.  We have now replicated this ID logic
+     * in our FreeCalypso code base, and we can now support both flash
+     * chip versions as well.
+     *
+     * Our FFS configuration for the Pirelli target is aftermarket.
+     */
+
+    /* J flash */
+    { &flash_128x64[0], (char *) 0x02480000, MANUFACT_AMD,     0x2100,
+      FFS_DRIVER_AMD, 24 },
+
+    /* N flash */
     { &flash_32x256[0], (char *) 0x02480000, MANUFACT_AMD,     0x2101,
       FFS_DRIVER_AMD,  6 },
 
 #elif defined(CONFIG_TARGET_FCFAM)
 
-    // We are using the same flash+pSRAM chip in our own
-    // FreeCalypso hardware designs, but on a different chip select.
-    // Let's use the first 2 MiB of the 2nd bank for the FFS.
+    /*
+     * Our FreeCalypso hardware family is currently in its infancy
+     * (we have only one board design so far, but hoping to have more),
+     * thus the set of possible flash chip types on FC hw platforms
+     * is expected to grow.  The footprint on our current FCDEV3B PCB
+     * ideally fits Spansion MCPs with two chip select banks (either
+     * S71PL-J or S71PL-N), but can also be fitted with Openmoko's
+     * Samsung K5A3281.  Spansion S71PL129NC0HFW4B (copied from the
+     * Pirelli DP-L10) is our official flash+RAM chip, populated on
+     * our production boards, but now that we have fixed TI's autodetect
+     * code to work with the newer Spansion chips, we can support
+     * all 3 possibilities in our fw with autodetection: S71PL-J,
+     * S71PL-N or K5A32xx.
+     *
+     * For future FreeCalypso hw designs, the Mother's plan is to
+     * keep the high-capacity S71PL129NC0HFW4B for the handset prototype
+     * and UI development board, but for embedded modem products
+     * we will probably switch to Openmoko's K5A32xx.
+     */
+
+    /* S71PL-N, FreeCalypso official, FFS in the first 2 MiB of the 2nd bank */
     { &flash_32x256[0], (char *) 0x01800000, MANUFACT_AMD,     0x2101,
       FFS_DRIVER_AMD,  8 },
 
+    /* S71PL-J, currently only theoretical */
+    { &flash_128x64[0], (char *) 0x01800000, MANUFACT_AMD,     0x2100,
+      FFS_DRIVER_AMD, 32 },
+
+    /* K5A32xxCTM from Openmoko */
+    { &flash_16x64[0], (char *) 0x380000, MANUFACT_SAMSUNG, 0x22A0,
+      FFS_DRIVER_AMD,  7 },
+
 #elif defined(CONFIG_TARGET_COMPAL)
 
     /* aftermarket FFS configurations for FreeCalypso on Mot C1xx phones */