Lines Matching defs:mtd

16 #include <linux/mtd/mtd.h>
17 #include <linux/mtd/blktrans.h>
102 struct mtd_info *mtd;
186 return (loff_t)(eb - d->eb_data) * d->mtd->erasesize;
262 if (!mtd_can_have_bb(d->mtd))
267 ret = mtd_block_markbad(d->mtd, offset);
300 int ret = mtd_read_oob(d->mtd, from, ops);
331 if (mtd_can_have_bb(d->mtd) && mtd_block_isbad(d->mtd, offset))
334 ops.ooblen = 2 * d->mtd->oobavail;
347 (d->oob_buf + d->mtd->oobavail);
388 offset = mtdswap_eb_offset(d, eb) + d->mtd->writesize;
391 ret = mtd_write_oob(d->mtd, offset, &ops);
528 struct mtd_info *mtd = d->mtd;
540 erase.len = mtd->erasesize;
542 ret = mtd_erase(mtd, &erase);
547 erase.addr, mtd->name);
553 erase.addr, mtd->name);
617 struct mtd_info *mtd = d->mtd;
643 ret = mtd_write(mtd, writepos, PAGE_SIZE, &retlen, buf);
678 struct mtd_info *mtd = d->mtd;
690 ret = mtd_read(mtd, readpos, PAGE_SIZE, &retlen, d->page_buf);
876 struct mtd_info *mtd = d->mtd;
885 ops.len = mtd->writesize;
886 ops.ooblen = mtd->oobavail;
891 mtd_pages = d->pages_per_eblk * PAGE_SIZE / mtd->writesize;
897 memset(d->page_buf, patt, mtd->writesize);
898 memset(d->oob_buf, patt, mtd->oobavail);
899 ret = mtd_write_oob(mtd, pos, &ops);
903 pos += mtd->writesize;
908 ret = mtd_read_oob(mtd, pos, &ops);
913 for (j = 0; j < mtd->writesize/sizeof(int); j++)
917 for (j = 0; j < mtd->oobavail; j++)
921 pos += mtd->writesize;
1000 mtd_sync(d->mtd);
1004 static unsigned int mtdswap_badblocks(struct mtd_info *mtd, uint64_t size)
1011 if (mtd_can_have_bb(mtd))
1012 for (offset = 0; offset < size; offset += mtd->erasesize)
1013 if (mtd_block_isbad(mtd, offset))
1080 struct mtd_info *mtd = d->mtd;
1112 ret = mtd_read(mtd, readpos, PAGE_SIZE, &retlen, buf);
1204 use_size = (uint64_t)d->eblks * d->mtd->erasesize;
1205 bb_cnt = mtdswap_badblocks(d->mtd, use_size);
1243 seq_printf(s, "mtd read count: %llu\n", d->mtd_read_count);
1244 seq_printf(s, "mtd write count: %llu\n", d->mtd_write_count);
1257 struct dentry *root = d->mtd->dbg.dfs_dir;
1273 struct mtd_info *mtd = d->mbd_dev->mtd;
1277 d->mtd = mtd;
1280 d->pages_per_eblk = mtd->erasesize >> PAGE_SHIFT;
1311 d->oob_buf = kmalloc_array(2, mtd->oobavail, GFP_KERNEL);
1332 static void mtdswap_add_mtd(struct mtd_blktrans_ops *tr, struct mtd_info *mtd)
1351 if (mtd->index == part)
1355 if (mtd->index != part)
1358 if (mtd->erasesize < PAGE_SIZE || mtd->erasesize % PAGE_SIZE) {
1360 "%lu\n", MTDSWAP_PREFIX, mtd->erasesize, PAGE_SIZE);
1364 if (PAGE_SIZE % mtd->writesize || mtd->writesize > PAGE_SIZE) {
1366 " %u\n", MTDSWAP_PREFIX, PAGE_SIZE, mtd->writesize);
1370 if (!mtd->oobsize || mtd->oobavail < MTDSWAP_OOBSIZE) {
1373 MTDSWAP_PREFIX, mtd->oobavail, MTDSWAP_OOBSIZE);
1380 use_size = mtd->size;
1383 if (mtd->size > size_limit) {
1389 eblocks = mtd_div_by_eb(use_size, mtd);
1390 use_size = (uint64_t)eblocks * mtd->erasesize;
1391 bad_blocks = mtdswap_badblocks(mtd, use_size);
1409 swap_size = (uint64_t)(eavailable - spare_cnt) * mtd->erasesize +
1429 mbd_dev->mtd = mtd;
1430 mbd_dev->devnum = mtd->index;
1434 if (!(mtd->flags & MTD_WRITEABLE))