Tweaks to retirement handling
[yaffs2.git] / direct / yaffscfg2k.c
index 379846b7a99b69da4631fc09ed68c18e71a99c52..cb960bcf7796686d90bb8289503b6a9844116e2b 100644 (file)
@@ -9,10 +9,12 @@
 #include "yaffscfg.h"
 #include "yaffsfs.h"
 #include "yaffs_fileem2k.h"
+#include "yaffs_nandemul2k.h"
 
 #include <errno.h>
 
-unsigned yaffs_traceMask = 0xFFFFFFFF;
+unsigned yaffs_traceMask = YAFFS_TRACE_SCAN |  YAFFS_TRACE_GC /*| YAFFS_TRACE_GC_DETAIL | YAFFS_TRACE_WRITE */ | YAFFS_TRACE_ERASE | YAFFS_TRACE_TRACING | YAFFS_TRACE_ALLOCATE | YAFFS_TRACE_CHECKPOINT;
+//unsigned yaffs_traceMask = ~0;
 
 
 void yaffsfs_SetError(int err)
@@ -50,17 +52,27 @@ void yaffsfs_LocalInitialisation(void)
 
 #include "yaffs_ramdisk.h"
 #include "yaffs_flashif.h"
+#include "yaffs_nandemul2k.h"
 
 static yaffs_Device ramDev;
 static yaffs_Device bootDev;
 static yaffs_Device flashDev;
+static yaffs_Device ram2kDev;
 
 static yaffsfs_DeviceConfiguration yaffsfs_config[] = {
-
+#if 0
        { "/ram", &ramDev},
        { "/boot", &bootDev},
-       { "/flash", &flashDev},
+       { "/flash/", &flashDev},
+       { "/ram2k", &ram2kDev},
        {(void *)0,(void *)0}
+#else
+       { "/", &ramDev},
+       { "/flash/boot", &bootDev},
+       { "/flash/flash", &flashDev},
+       { "/ram2k", &ram2kDev},
+       {(void *)0,(void *)0} /* Null entry to terminate list */
+#endif
 };
 
 
@@ -73,10 +85,10 @@ int yaffs_StartUp(void)
        // Set up devices
        // /ram
        memset(&ramDev,0,sizeof(ramDev));
-       ramDev.nBytesPerChunk = 512;
+       ramDev.nDataBytesPerChunk = 512;
        ramDev.nChunksPerBlock = 32;
        ramDev.nReservedBlocks = 2; // Set this smaller for RAM
-       ramDev.startBlock = 1; // Can't use block 0
+       ramDev.startBlock = 0; // Can use block 0
        ramDev.endBlock = 127; // Last block in 2MB.    
        //ramDev.useNANDECC = 1;
        ramDev.nShortOpCaches = 0;      // Disable caching on this device.
@@ -88,10 +100,10 @@ int yaffs_StartUp(void)
 
        // /boot
        memset(&bootDev,0,sizeof(bootDev));
-       bootDev.nBytesPerChunk = 512;
+       bootDev.nDataBytesPerChunk = 512;
        bootDev.nChunksPerBlock = 32;
        bootDev.nReservedBlocks = 5;
-       bootDev.startBlock = 1; // Can't use block 0
+       bootDev.startBlock = 0; // Can use block 0
        bootDev.endBlock = 63; // Last block
        //bootDev.useNANDECC = 0; // use YAFFS's ECC
        bootDev.nShortOpCaches = 10; // Use caches
@@ -111,13 +123,17 @@ int yaffs_StartUp(void)
        // 2kpage/64chunk per block/128MB device
        memset(&flashDev,0,sizeof(flashDev));
 
-       flashDev.nBytesPerChunk = 2048;
+       flashDev.nDataBytesPerChunk = 2048;
        flashDev.nChunksPerBlock = 64;
        flashDev.nReservedBlocks = 5;
-       flashDev.startBlock = 64; // First block after /boot
-       //flashDev.endBlock = 127; // Last block in 16MB
-       flashDev.endBlock = (512 * 1024 * 1024)/(flashDev.nBytesPerChunk * flashDev.nChunksPerBlock) - 1; // Last block in 512MB
+       flashDev.nCheckpointReservedBlocks = 5;
+       //flashDev.checkpointStartBlock = 1;
+       //flashDev.checkpointEndBlock = 20;
+       flashDev.startBlock = 20; 
+       //flashDev.endBlock = 127; // Make it smaller
+       flashDev.endBlock = yflash_GetNumberOfBlocks()-1;
        flashDev.isYaffs2 = 1;
+       flashDev.wideTnodesDisabled=0;
        flashDev.nShortOpCaches = 10; // Use caches
        flashDev.genericDevice = (void *) 2;    // Used to identify the device in fstat.
        flashDev.writeChunkWithTagsToNAND = yflash_WriteChunkWithTagsToNAND;
@@ -127,6 +143,28 @@ int yaffs_StartUp(void)
        flashDev.markNANDBlockBad = yflash_MarkNANDBlockBad;
        flashDev.queryNANDBlock = yflash_QueryNANDBlock;
 
+       // /ram2k
+       // Set this puppy up to use
+       // the file emulation space as
+       // 2kpage/64chunk per block/128MB device
+       memset(&ram2kDev,0,sizeof(ram2kDev));
+
+       ram2kDev.nDataBytesPerChunk = nandemul2k_GetBytesPerChunk();
+       ram2kDev.nChunksPerBlock = nandemul2k_GetChunksPerBlock();
+       ram2kDev.nReservedBlocks = 5;
+       ram2kDev.startBlock = 0; // First block after /boot
+       //ram2kDev.endBlock = 127; // Last block in 16MB
+       ram2kDev.endBlock = nandemul2k_GetNumberOfBlocks() - 1; // Last block in 512MB
+       ram2kDev.isYaffs2 = 1;
+       ram2kDev.nShortOpCaches = 10; // Use caches
+       ram2kDev.genericDevice = (void *) 3;    // Used to identify the device in fstat.
+       ram2kDev.writeChunkWithTagsToNAND = nandemul2k_WriteChunkWithTagsToNAND;
+       ram2kDev.readChunkWithTagsFromNAND = nandemul2k_ReadChunkWithTagsFromNAND;
+       ram2kDev.eraseBlockInNAND = nandemul2k_EraseBlockInNAND;
+       ram2kDev.initialiseNAND = nandemul2k_InitialiseNAND;
+       ram2kDev.markNANDBlockBad = nandemul2k_MarkNANDBlockBad;
+       ram2kDev.queryNANDBlock = nandemul2k_QueryNANDBlock;
+
        yaffs_initialise(yaffsfs_config);
        
        return 0;
@@ -134,4 +172,8 @@ int yaffs_StartUp(void)
 
 
 
+void SetCheckpointReservedBlocks(int n)
+{
+       flashDev.nCheckpointReservedBlocks = n;
+}