diff src/cs/drivers/drv_app/ffs/board/cfgffs.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 7d50d8d13711
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cs/drivers/drv_app/ffs/board/cfgffs.c	Sun Jul 15 04:39:26 2018 +0000
@@ -0,0 +1,116 @@
+/******************************************************************************
+ * Flash File System (ffs)
+ * Idea, design and coding by Mads Meisner-Jensen, mmj@ti.com
+ *
+ * FFS configuration
+ *
+ * $Id: cfgffs.c 1.27 Fri, 19 Dec 2003 12:00:13 +0100 tsj $
+ *
+ ******************************************************************************/
+
+#ifndef TARGET
+#include "ffs.cfg"
+#endif
+
+#include "ffs/ffs.h"
+#include "ffs/board/drv.h"
+
+#include "config/board.cfg"
+#include "config/fc-target.cfg"
+
+#if (BOARD == 34)
+  #include "ffs/board/ffspcm.h"
+#endif
+
+#include "config/rf.cfg"
+
+#include <string.h>
+
+/******************************************************************************
+ * Flash Device Configuration
+ ******************************************************************************/
+
+#if (TARGET == 1)
+
+// The absolutely easiest way to disable FFS altogether is to set
+// ffs_flash_manufact = 0x99 and ffs_flash_device = 0x9999. Because this is
+// (as of today at least) an undefined device, FFS will NOT initialize and
+// every FFS function call will fail (with no side-effects).
+
+// FFS will automatically detect the flash device if both ffs_flash_manufact
+// and ffs_flash_device are zero. Note that this works *only* if the flash
+// device is mapped at address zero. Otherwise you *have* to supply
+// manufacturer and device IDs.
+
+// FFS can be configured to run in ram only. In this case the
+// 'ffs_flash_manufact' must be set to MANUFACT_RAM and an address to a
+// static user allocated ram buffer must be applied to the variable
+// 'ffs_flash_address'. In a ram configuration the 'ffs_flash_device' is an
+// arbitrary value that must be in sync with the 'device code' value chosen
+// in dev.c.
+
+#if (BOARD == 34)
+uint16 ffs_flash_manufact = MANUFACT_RAM;
+uint16 ffs_flash_device   = 0x0404; // RAM
+
+int ffs_ram_image_address = FFS_BASE_ADDRESS;
+
+#else
+
+#if defined(CONFIG_TARGET_PIRELLI) || defined(CONFIG_TARGET_FCFAM)
+
+uint16 ffs_flash_manufact = MANUFACT_AMD;
+uint16 ffs_flash_device   = 0x2101;
+
+#else
+
+uint16 ffs_flash_manufact = 0x00; // autodetect device
+//uint16 ffs_flash_manufact = MANUFACT_RAM;
+//uint16 ffs_flash_manufact = 0x04; // Fujitsu
+//uint16 ffs_flash_manufact = 0xBF; // SST
+
+uint16 ffs_flash_device   = 0x0000; // autodetect device
+//uint16 ffs_flash_device     = 0x0404; // RAM
+//uint16 ffs_flash_device   = 0xB496; // Fujitsu stacked device
+//uint16 ffs_flash_device   = 0x2761; // SST device 1601
+//uint16 ffs_flash_device   = 0x2259; // 8x8kB blocks
+
+#endif
+
+int ffs_ram_image_address = 0;  // Dummy
+
+//unsigned char ffs_image[8*8*1024];
+//int ffs_ram_image_address = (int) &ffs_image;
+
+#endif // BOARD == 34
+
+#else
+
+uint16 ffs_flash_manufact = 'T';
+//uint16 ffs_flash_device   = 0x0F12; // Test device: 128x64kB blocks
+uint16 ffs_flash_device   = 0x0F10; // Test device: 16x64kB blocks
+//uint16 ffs_flash_device   = 0x080D; // Test device: 8x8kB blocks
+//uint16 ffs_flash_device   = 0x0404; // Test device: 4x4kB blocks
+
+int ffs_ram_image_address = 0;  // Dummy
+#endif
+
+
+/******************************************************************************
+ * ffs_is_modify_valid()
+ ******************************************************************************/
+
+// This is function to be implemented by the application programmer. It is
+// called by ffs when a read-only object is about to be modified or
+// removed. It should return zero if the operation should be
+// disallowed. Returning non-zero means go ahead.
+effs_t ffs_is_modifiable(const char *name)
+{
+    // default is to allow any modification of read-only objects.
+
+    // example of how to disallow modifying a specific object...
+    if (strcmp("IMEI", &name[strlen(name) - 4]) == 0)
+        return 0;
+
+    return 1;
+}