mt29f nand driver: add kblock interface.
[bertos.git] / bertos / cpu / cortex-m3 / drv / mt29f_sam3.h
index 06a582baf705124657e51a6e8b0a5347b8875e0f..969496a97805991ef6d15fec9fefdd13893ff353 100644 (file)
 
 
 // MT29F2G08AAD, FIXME: configurable
-#define MT29F_PAGE_SIZE   0x800       // 2048 B
-#define MT29F_BLOCK_SIZE  0x20000     // 128 kB
-#define MT29F_SIZE        0x10000000  // 256 MB
-#define MT29F_CSID        NFC_CMD_CSID_0  // Chip select
+#define MT29F_DATA_SIZE         0x800       // 2048 B
+#define MT29F_SPARE_SIZE        0x40        // 64 B
+#define MT29F_PAGE_SIZE         (MT29F_DATA_SIZE + MT29F_SPARE_SIZE)
+#define MT29F_PAGES_PER_BLOCK   64
+#define MT29F_BLOCK_SIZE        (MT29F_DATA_SIZE * MT29F_PAGES_PER_BLOCK)
+#define MT29F_NUM_BLOCKS        2048
+#define MT29F_ECC_NWORDS        (MT29F_DATA_SIZE / 256)
+#define MT29F_REMAP_TAG_OFFSET  0x38
+#define MT29F_REMAP_TAG         0x3e10c8ed
+// Used to setup a dummy remup
+#define MT29F_NULL_REMAP        0xfffe
+
+// Number of reserved block for remapping
+#define MT29F_NUM_REMAP_BLOCKS  128
+// Number of usable blocks, and index of first remapping block
+#define MT29F_NUM_USER_BLOCKS   (MT29F_NUM_BLOCKS - MT29F_NUM_REMAP_BLOCKS)
+
 
 /*
  * PIO definitions.
@@ -61,8 +74,8 @@
 #define MT29F_PINS_PORTC    (MT29F_PIN_OE | MT29F_PIN_WE | MT29F_PIN_IO)
 #define MT29F_PERIPH_PORTC  PIO_PERIPH_A
 
-#define MT29F_PIN_CLE       BV(22)
-#define MT29F_PIN_ALE       BV(21)
+#define MT29F_PIN_CLE       BV(9)
+#define MT29F_PIN_ALE       BV(8)
 #define MT29F_PINS_PORTD    (MT29F_PIN_CLE | MT29F_PIN_ALE)
 #define MT29F_PERIPH_PORTD  PIO_PERIPH_A