Lines Matching +full:0 +full:- +full:dev

2  * RT-Thread Device Interface for uffs
9 static int nand_init_flash(uffs_Device *dev) in nand_init_flash() argument
14 static int nand_release_flash(uffs_Device *dev) in nand_release_flash() argument
18 static int nand_erase_block(uffs_Device *dev, unsigned block) in nand_erase_block() argument
22 res = rt_mtd_nand_erase_block(RT_MTD_NAND_DEVICE(dev->_private), block); in nand_erase_block()
28 static int nand_check_block(uffs_Device *dev, unsigned block) in nand_check_block() argument
32 res = rt_mtd_nand_check_block(RT_MTD_NAND_DEVICE(dev->_private), block); in nand_check_block()
37 static int nand_mark_badblock(uffs_Device *dev, unsigned block) in nand_mark_badblock() argument
41 res = rt_mtd_nand_mark_badblock(RT_MTD_NAND_DEVICE(dev->_private), block); in nand_mark_badblock()
48 static int nand_read_page(uffs_Device *dev, in nand_read_page() argument
59 page = block * dev->attr->pages_per_block + page; in nand_read_page()
63 RT_ASSERT(0); //should not be here in nand_read_page()
68 rt_memset(spare, 0, UFFS_MAX_SPARE_SIZE); in nand_read_page()
70 rt_mtd_nand_read(RT_MTD_NAND_DEVICE(dev->_private), in nand_read_page()
71 page, RT_NULL, 0, in nand_read_page()
72 spare, dev->attr->spare_size);//dev->mem.spare_data_size in nand_read_page()
74 res = spare[dev->attr->block_status_offs] == 0xFF ? in nand_read_page()
81 rt_mtd_nand_read(RT_MTD_NAND_DEVICE(dev->_private), in nand_read_page()
87 static int nand_write_page(uffs_Device *dev, in nand_write_page() argument
97 RT_ASSERT(UFFS_MAX_SPARE_SIZE >= dev->attr->spare_size); in nand_write_page()
99 page = block * dev->attr->pages_per_block + page; in nand_write_page()
104 RT_ASSERT(0); //should not be here in nand_write_page()
109 rt_memset(spare, 0xFF, UFFS_MAX_SPARE_SIZE); in nand_write_page()
110 spare[dev->attr->block_status_offs] = 0x00; in nand_write_page()
112 res = rt_mtd_nand_write(RT_MTD_NAND_DEVICE(dev->_private), in nand_write_page()
113 page, RT_NULL, 0, in nand_write_page()
114 spare, dev->attr->spare_size);//dev->mem.spare_data_size in nand_write_page()
120 res = rt_mtd_nand_write(RT_MTD_NAND_DEVICE(dev->_private), in nand_write_page()
152 rt_memset(attr, 0, sizeof(struct uffs_StorageAttrSt)); in uffs_setup_storage()
154 // attr->total_blocks = nand->end_block - nand->start_block + 1;/* no use */ in uffs_setup_storage()
155 attr->page_data_size = nand->page_size; /* page data size */ in uffs_setup_storage()
156 attr->pages_per_block = nand->pages_per_block; /* pages per block */ in uffs_setup_storage()
157 attr->spare_size = nand->oob_size; /* page spare size */ in uffs_setup_storage()
158 attr->ecc_opt = RT_CONFIG_UFFS_ECC_MODE; /* ecc option */ in uffs_setup_storage()
159 …attr->ecc_size = 0; /* ecc size is 0 , the uffs will calculate … in uffs_setup_storage()
160 …attr->block_status_offs = attr->ecc_size; /* indicate block bad or good, offset in sp… in uffs_setup_storage()
161 attr->layout_opt = RT_CONFIG_UFFS_LAYOUT; /* let UFFS do the spare layout */ in uffs_setup_storage()
165 static int WritePageWithLayout(uffs_Device *dev, in WritePageWithLayout() argument
177 RT_ASSERT(UFFS_MAX_SPARE_SIZE >= dev->attr->spare_size); in WritePageWithLayout()
179 page = block * dev->attr->pages_per_block + page; in WritePageWithLayout()
180 spare_len = dev->mem.spare_data_size; in WritePageWithLayout()
185 RT_ASSERT(0); //should not be here in WritePageWithLayout()
188 rt_memset(spare, 0xFF, UFFS_MAX_SPARE_SIZE); in WritePageWithLayout()
189 spare[dev->attr->block_status_offs] = 0x00; in WritePageWithLayout()
191 res = rt_mtd_nand_write(RT_MTD_NAND_DEVICE(dev->_private), in WritePageWithLayout()
192 page, RT_NULL, 0, in WritePageWithLayout()
193 spare, dev->attr->spare_size);//dev->mem.spare_data_size in WritePageWithLayout()
197 dev->st.io_write++; in WritePageWithLayout()
202 if (data != NULL && data_len != 0) in WritePageWithLayout()
204 RT_ASSERT(data_len == dev->attr->page_data_size); in WritePageWithLayout()
206 dev->st.page_write_count++; in WritePageWithLayout()
207 dev->st.io_write += data_len; in WritePageWithLayout()
212 uffs_FlashMakeSpare(dev, ts, RT_NULL, (u8 *)spare); in WritePageWithLayout()
213 dev->st.spare_write_count++; in WritePageWithLayout()
214 dev->st.io_write += spare_len; in WritePageWithLayout()
217 res = rt_mtd_nand_write(RT_MTD_NAND_DEVICE(dev->_private), in WritePageWithLayout()
228 static URET ReadPageWithLayout(uffs_Device *dev, in ReadPageWithLayout() argument
241 RT_ASSERT(UFFS_MAX_SPARE_SIZE >= dev->attr->spare_size); in ReadPageWithLayout()
243 page = block * dev->attr->pages_per_block + page; in ReadPageWithLayout()
244 spare_len = dev->mem.spare_data_size; in ReadPageWithLayout()
249 RT_ASSERT(0); //should not be here in ReadPageWithLayout()
253 rt_mtd_nand_read(RT_MTD_NAND_DEVICE(dev->_private), in ReadPageWithLayout()
254 page, RT_NULL, 0, in ReadPageWithLayout()
255 spare, dev->attr->spare_size);//dev->mem.spare_data_size in ReadPageWithLayout()
257 dev->st.io_read++; in ReadPageWithLayout()
259 res = spare[dev->attr->block_status_offs] == 0xFF ? in ReadPageWithLayout()
267 dev->st.io_read += data_len; in ReadPageWithLayout()
268 dev->st.page_read_count++; in ReadPageWithLayout()
271 res = rt_mtd_nand_read(RT_MTD_NAND_DEVICE(dev->_private), in ReadPageWithLayout()
273 if (res == 0) in ReadPageWithLayout()
275 else if (res == -1) in ReadPageWithLayout()
286 uffs_FlashUnloadSpare(dev, (const u8 *)spare, ts, RT_NULL); in ReadPageWithLayout()
288 if ((spare[spare_len - 1] == 0xFF) && (res == UFFS_FLASH_NO_ERR)) in ReadPageWithLayout()
291 dev->st.io_read += spare_len; in ReadPageWithLayout()
292 dev->st.spare_read_count++; in ReadPageWithLayout()
319 0x05, 0x08, 0xFF, 0x00
324 0x00, 0x04, 0xFF, 0x00
330 rt_memset(attr, 0, sizeof(struct uffs_StorageAttrSt)); in uffs_setup_storage()
332 // attr->total_blocks = nand->end_block - nand->start_block + 1;/* no use */ in uffs_setup_storage()
333 attr->page_data_size = nand->page_size; /* page data size */ in uffs_setup_storage()
334 attr->pages_per_block = nand->pages_per_block; /* pages per block */ in uffs_setup_storage()
335 attr->spare_size = nand->oob_size; /* page spare size */ in uffs_setup_storage()
336 attr->ecc_opt = RT_CONFIG_UFFS_ECC_MODE; /* ecc option */ in uffs_setup_storage()
337 attr->ecc_size = nand->oob_size-nand->oob_free; /* ecc size */ in uffs_setup_storage()
338 …attr->block_status_offs = attr->ecc_size; /* indicate block bad or good, offset in sp… in uffs_setup_storage()
339 attr->layout_opt = RT_CONFIG_UFFS_LAYOUT; /* let UFFS do the spare layout */ in uffs_setup_storage()
342 hw_flash_data_layout[0] = attr->ecc_size + 1; /* ecc size + 1byte block status */ in uffs_setup_storage()
343 hw_flash_data_layout[1] = 0x08; in uffs_setup_storage()
344 hw_flash_data_layout[2] = 0xFF; in uffs_setup_storage()
345 hw_flash_data_layout[3] = 0x00; in uffs_setup_storage()
347 hw_flash_ecc_layout[0] = 0; in uffs_setup_storage()
348 hw_flash_ecc_layout[1] = attr->ecc_size; in uffs_setup_storage()
349 hw_flash_ecc_layout[2] = 0xFF; in uffs_setup_storage()
350 hw_flash_ecc_layout[3] = 0x00; in uffs_setup_storage()
353 rt_memcpy(attr->_uffs_data_layout, hw_flash_data_layout, UFFS_SPARE_LAYOUT_SIZE); in uffs_setup_storage()
354 rt_memcpy(attr->_uffs_ecc_layout, hw_flash_ecc_layout, UFFS_SPARE_LAYOUT_SIZE); in uffs_setup_storage()
356 attr->data_layout = attr->_uffs_data_layout; in uffs_setup_storage()
357 attr->ecc_layout = attr->_uffs_ecc_layout; in uffs_setup_storage()