Browse Source

添加接口move_page,添加mtd_nand成员oob_free,更改成员block_size为pages_per_block

git-svn-id: https://rt-thread.googlecode.com/svn/trunk@2288 bbd45198-f89e-11dd-88c7-29a3b14d5316
sc943313837@gmail.com 12 years ago
parent
commit
a1519350a4
1 changed files with 18 additions and 4 deletions
  1. 18 4
      components/drivers/include/drivers/mtd_nand.h

+ 18 - 4
components/drivers/include/drivers/mtd_nand.h

@@ -25,15 +25,22 @@
 struct rt_mtd_nand_driver_ops;
 #define RT_MTD_NAND_DEVICE(device)	((struct rt_mtd_nand_device*)(device))
 
+#define RT_MTD_EOK		0
+#define RT_MTD_EECC		1
+#define RT_MTD_EBUSY	2
+#define RT_MTD_EIO		3
+#define RT_MTD_ENOMEM	4
+
 struct rt_mtd_nand_device
 {
 	struct rt_device parent;
 
 	rt_uint32_t page_size;			/* The Page size in the flash */
-	rt_uint32_t block_size;			/* The Block size in the flash */
-
-	rt_uint16_t oob_size;			/* Out of bank size */
-	rt_uint16_t reserve;
+	rt_uint16_t oob_size;			/* Out of bank size */	
+	rt_uint16_t oob_free;           /* the free area in oob that flash driver not use */
+	
+	rt_uint32_t pages_per_block;    /* The number of page a block */
+    rt_uint16_t block_total;
 
 	rt_uint32_t block_start;		/* The start of available block*/
 	rt_uint32_t block_end;			/* The end of available block */
@@ -55,6 +62,7 @@ struct rt_mtd_nand_driver_ops
                            rt_off_t page,
                            const rt_uint8_t * data, rt_uint32_t data_len,
                            const rt_uint8_t * spare, rt_uint32_t spare_len);
+	rt_err_t (*move_page) (struct rt_mtd_nand_device *device, rt_off_t src_page, rt_off_t dst_page);						   
 
 	rt_err_t (*erase_block)(struct rt_mtd_nand_device* device, rt_uint32_t block);
 	rt_err_t (*check_block)(struct rt_mtd_nand_device* device, rt_uint32_t block);
@@ -86,6 +94,12 @@ rt_inline rt_err_t rt_mtd_nand_write(
 	return device->ops->write_page(device, page, data, data_len, spare, spare_len);
 }
 
+rt_inline rt_err_t rt_mtd_nand_move_page(struct rt_mtd_nand_device* device,
+										 rt_off_t src_page, rt_off_t dst_page)
+{
+	return device->ops->move_page(device, src_page, dst_page);
+}
+
 rt_inline rt_err_t rt_mtd_nand_erase_block(struct rt_mtd_nand_device* device, rt_uint32_t block)
 {
 	return device->ops->erase_block(device, block);