Lines Matching refs:mtd
115 struct mtd_info *mtd; member
201 return (loff_t)(eb - d->eb_data) * d->mtd->erasesize; in mtdswap_eb_offset()
277 if (!mtd_can_have_bb(d->mtd)) in mtdswap_handle_badblock()
282 ret = mtd_block_markbad(d->mtd, offset); in mtdswap_handle_badblock()
315 int ret = mtd_read_oob(d->mtd, from, ops); in mtdswap_read_oob()
346 if (mtd_can_have_bb(d->mtd) && mtd_block_isbad(d->mtd, offset)) in mtdswap_read_markers()
349 ops.ooblen = 2 * d->mtd->ecclayout->oobavail; in mtdswap_read_markers()
362 (d->oob_buf + d->mtd->ecclayout->oobavail); in mtdswap_read_markers()
403 offset = mtdswap_eb_offset(d, eb) + d->mtd->writesize; in mtdswap_write_marker()
406 ret = mtd_write_oob(d->mtd, offset, &ops); in mtdswap_write_marker()
550 struct mtd_info *mtd = d->mtd; in mtdswap_erase_block() local
564 erase.mtd = mtd; in mtdswap_erase_block()
567 erase.len = mtd->erasesize; in mtdswap_erase_block()
570 ret = mtd_erase(mtd, &erase); in mtdswap_erase_block()
575 erase.addr, mtd->name); in mtdswap_erase_block()
581 erase.addr, mtd->name); in mtdswap_erase_block()
591 erase.addr, mtd->name); in mtdswap_erase_block()
599 erase.addr, mtd->name); in mtdswap_erase_block()
666 struct mtd_info *mtd = d->mtd; in mtdswap_write_block() local
692 ret = mtd_write(mtd, writepos, PAGE_SIZE, &retlen, buf); in mtdswap_write_block()
727 struct mtd_info *mtd = d->mtd; in mtdswap_move_block() local
739 ret = mtd_read(mtd, readpos, PAGE_SIZE, &retlen, d->page_buf); in mtdswap_move_block()
926 struct mtd_info *mtd = d->mtd; in mtdswap_eblk_passes() local
935 ops.len = mtd->writesize; in mtdswap_eblk_passes()
936 ops.ooblen = mtd->ecclayout->oobavail; in mtdswap_eblk_passes()
941 mtd_pages = d->pages_per_eblk * PAGE_SIZE / mtd->writesize; in mtdswap_eblk_passes()
947 memset(d->page_buf, patt, mtd->writesize); in mtdswap_eblk_passes()
948 memset(d->oob_buf, patt, mtd->ecclayout->oobavail); in mtdswap_eblk_passes()
949 ret = mtd_write_oob(mtd, pos, &ops); in mtdswap_eblk_passes()
953 pos += mtd->writesize; in mtdswap_eblk_passes()
958 ret = mtd_read_oob(mtd, pos, &ops); in mtdswap_eblk_passes()
963 for (j = 0; j < mtd->writesize/sizeof(int); j++) in mtdswap_eblk_passes()
967 for (j = 0; j < mtd->ecclayout->oobavail; j++) in mtdswap_eblk_passes()
971 pos += mtd->writesize; in mtdswap_eblk_passes()
1050 mtd_sync(d->mtd); in mtdswap_flush()
1054 static unsigned int mtdswap_badblocks(struct mtd_info *mtd, uint64_t size) in mtdswap_badblocks() argument
1061 if (mtd_can_have_bb(mtd)) in mtdswap_badblocks()
1062 for (offset = 0; offset < size; offset += mtd->erasesize) in mtdswap_badblocks()
1063 if (mtd_block_isbad(mtd, offset)) in mtdswap_badblocks()
1131 struct mtd_info *mtd = d->mtd; in mtdswap_readsect() local
1163 ret = mtd_read(mtd, readpos, PAGE_SIZE, &retlen, buf); in mtdswap_readsect()
1256 use_size = (uint64_t)d->eblks * d->mtd->erasesize; in mtdswap_show()
1257 bb_cnt = mtdswap_badblocks(d->mtd, use_size); in mtdswap_show()
1352 struct mtd_info *mtd = d->mbd_dev->mtd; in mtdswap_init() local
1356 d->mtd = mtd; in mtdswap_init()
1359 d->pages_per_eblk = mtd->erasesize >> PAGE_SHIFT; in mtdswap_init()
1390 d->oob_buf = kmalloc(2 * mtd->ecclayout->oobavail, GFP_KERNEL); in mtdswap_init()
1411 static void mtdswap_add_mtd(struct mtd_blktrans_ops *tr, struct mtd_info *mtd) in mtdswap_add_mtd() argument
1431 if (mtd->index == part) in mtdswap_add_mtd()
1435 if (mtd->index != part) in mtdswap_add_mtd()
1438 if (mtd->erasesize < PAGE_SIZE || mtd->erasesize % PAGE_SIZE) { in mtdswap_add_mtd()
1440 "%lu\n", MTDSWAP_PREFIX, mtd->erasesize, PAGE_SIZE); in mtdswap_add_mtd()
1444 if (PAGE_SIZE % mtd->writesize || mtd->writesize > PAGE_SIZE) { in mtdswap_add_mtd()
1446 " %u\n", MTDSWAP_PREFIX, PAGE_SIZE, mtd->writesize); in mtdswap_add_mtd()
1450 oinfo = mtd->ecclayout; in mtdswap_add_mtd()
1453 MTDSWAP_PREFIX, mtd->index); in mtdswap_add_mtd()
1457 if (!mtd->oobsize || oinfo->oobavail < MTDSWAP_OOBSIZE) { in mtdswap_add_mtd()
1467 use_size = mtd->size; in mtdswap_add_mtd()
1470 if (mtd->size > size_limit) { in mtdswap_add_mtd()
1476 eblocks = mtd_div_by_eb(use_size, mtd); in mtdswap_add_mtd()
1477 use_size = (uint64_t)eblocks * mtd->erasesize; in mtdswap_add_mtd()
1478 bad_blocks = mtdswap_badblocks(mtd, use_size); in mtdswap_add_mtd()
1496 swap_size = (uint64_t)(eavailable - spare_cnt) * mtd->erasesize + in mtdswap_add_mtd()
1516 mbd_dev->mtd = mtd; in mtdswap_add_mtd()
1517 mbd_dev->devnum = mtd->index; in mtdswap_add_mtd()
1521 if (!(mtd->flags & MTD_WRITEABLE)) in mtdswap_add_mtd()