Lines Matching refs:mtd

30 	struct mtd_info mtd;  member
54 concat_read(struct mtd_info *mtd, loff_t from, size_t len, in concat_read() argument
57 struct mtd_concat *concat = CONCAT(mtd); in concat_read()
83 mtd->ecc_stats.failed++; in concat_read()
86 mtd->ecc_stats.corrected++; in concat_read()
106 concat_panic_write(struct mtd_info *mtd, loff_t to, size_t len, in concat_panic_write() argument
109 struct mtd_concat *concat = CONCAT(mtd); in concat_panic_write()
147 concat_write(struct mtd_info *mtd, loff_t to, size_t len, in concat_write() argument
150 struct mtd_concat *concat = CONCAT(mtd); in concat_write()
185 concat_writev(struct mtd_info *mtd, const struct kvec *vecs, in concat_writev() argument
188 struct mtd_concat *concat = CONCAT(mtd); in concat_writev()
200 if (mtd->writesize > 1) { in concat_writev()
202 if (do_div(__to, mtd->writesize) || (total_len % mtd->writesize)) in concat_writev()
260 concat_read_oob(struct mtd_info *mtd, loff_t from, struct mtd_oob_ops *ops) in concat_read_oob() argument
262 struct mtd_concat *concat = CONCAT(mtd); in concat_read_oob()
287 mtd->ecc_stats.failed++; in concat_read_oob()
290 mtd->ecc_stats.corrected++; in concat_read_oob()
317 concat_write_oob(struct mtd_info *mtd, loff_t to, struct mtd_oob_ops *ops) in concat_write_oob() argument
319 struct mtd_concat *concat = CONCAT(mtd); in concat_write_oob()
323 if (!(mtd->flags & MTD_WRITEABLE)) in concat_write_oob()
363 static int concat_erase(struct mtd_info *mtd, struct erase_info *instr) in concat_erase() argument
365 struct mtd_concat *concat = CONCAT(mtd); in concat_erase()
377 if (!concat->mtd.numeraseregions) { in concat_erase()
379 if (instr->addr & (concat->mtd.erasesize - 1)) in concat_erase()
381 if (instr->len & (concat->mtd.erasesize - 1)) in concat_erase()
386 concat->mtd.eraseregions; in concat_erase()
391 for (i = 0; i < concat->mtd.numeraseregions && in concat_erase()
406 for (; i < concat->mtd.numeraseregions && in concat_erase()
481 static int concat_xxlock(struct mtd_info *mtd, loff_t ofs, uint64_t len, in concat_xxlock() argument
484 struct mtd_concat *concat = CONCAT(mtd); in concat_xxlock()
519 static int concat_lock(struct mtd_info *mtd, loff_t ofs, uint64_t len) in concat_lock() argument
521 return concat_xxlock(mtd, ofs, len, true); in concat_lock()
524 static int concat_unlock(struct mtd_info *mtd, loff_t ofs, uint64_t len) in concat_unlock() argument
526 return concat_xxlock(mtd, ofs, len, false); in concat_unlock()
529 static int concat_is_locked(struct mtd_info *mtd, loff_t ofs, uint64_t len) in concat_is_locked() argument
531 struct mtd_concat *concat = CONCAT(mtd); in concat_is_locked()
551 static void concat_sync(struct mtd_info *mtd) in concat_sync() argument
553 struct mtd_concat *concat = CONCAT(mtd); in concat_sync()
562 static int concat_suspend(struct mtd_info *mtd) in concat_suspend() argument
564 struct mtd_concat *concat = CONCAT(mtd); in concat_suspend()
575 static void concat_resume(struct mtd_info *mtd) in concat_resume() argument
577 struct mtd_concat *concat = CONCAT(mtd); in concat_resume()
586 static int concat_block_isbad(struct mtd_info *mtd, loff_t ofs) in concat_block_isbad() argument
588 struct mtd_concat *concat = CONCAT(mtd); in concat_block_isbad()
609 static int concat_block_markbad(struct mtd_info *mtd, loff_t ofs) in concat_block_markbad() argument
611 struct mtd_concat *concat = CONCAT(mtd); in concat_block_markbad()
624 mtd->ecc_stats.badblocks++; in concat_block_markbad()
669 concat->mtd.type = subdev[0]->type; in mtd_concat_create()
670 concat->mtd.flags = subdev[0]->flags; in mtd_concat_create()
671 concat->mtd.size = subdev[0]->size; in mtd_concat_create()
672 concat->mtd.erasesize = subdev[0]->erasesize; in mtd_concat_create()
673 concat->mtd.writesize = subdev[0]->writesize; in mtd_concat_create()
678 concat->mtd.writebufsize = max_writebufsize; in mtd_concat_create()
680 concat->mtd.subpage_sft = subdev[0]->subpage_sft; in mtd_concat_create()
681 concat->mtd.oobsize = subdev[0]->oobsize; in mtd_concat_create()
682 concat->mtd.oobavail = subdev[0]->oobavail; in mtd_concat_create()
686 concat->mtd._writev = concat_writev; in mtd_concat_create()
688 concat->mtd._read_oob = concat_read_oob; in mtd_concat_create()
690 concat->mtd._write_oob = concat_write_oob; in mtd_concat_create()
692 concat->mtd._block_isbad = concat_block_isbad; in mtd_concat_create()
694 concat->mtd._block_markbad = concat_block_markbad; in mtd_concat_create()
696 concat->mtd._panic_write = concat_panic_write; in mtd_concat_create()
698 concat->mtd._read = concat_read; in mtd_concat_create()
700 concat->mtd._write = concat_write; in mtd_concat_create()
702 concat->mtd.ecc_stats.badblocks = subdev[0]->ecc_stats.badblocks; in mtd_concat_create()
707 if (concat->mtd.type != subdev[i]->type) { in mtd_concat_create()
713 if (concat->mtd.flags != subdev[i]->flags) { in mtd_concat_create()
718 if ((concat->mtd.flags ^ subdev[i]-> in mtd_concat_create()
727 concat->mtd.flags |= in mtd_concat_create()
732 concat->mtd.size += subdev[i]->size; in mtd_concat_create()
733 concat->mtd.ecc_stats.badblocks += in mtd_concat_create()
735 if (concat->mtd.writesize != subdev[i]->writesize || in mtd_concat_create()
736 concat->mtd.subpage_sft != subdev[i]->subpage_sft || in mtd_concat_create()
737 concat->mtd.oobsize != subdev[i]->oobsize || in mtd_concat_create()
738 !concat->mtd._read_oob != !subdev_master->_read_oob || in mtd_concat_create()
739 !concat->mtd._write_oob != !subdev_master->_write_oob) { in mtd_concat_create()
756 mtd_set_ooblayout(&concat->mtd, subdev[0]->ooblayout); in mtd_concat_create()
759 concat->mtd.name = name; in mtd_concat_create()
761 concat->mtd._erase = concat_erase; in mtd_concat_create()
762 concat->mtd._sync = concat_sync; in mtd_concat_create()
763 concat->mtd._lock = concat_lock; in mtd_concat_create()
764 concat->mtd._unlock = concat_unlock; in mtd_concat_create()
765 concat->mtd._is_locked = concat_is_locked; in mtd_concat_create()
766 concat->mtd._suspend = concat_suspend; in mtd_concat_create()
767 concat->mtd._resume = concat_resume; in mtd_concat_create()
811 concat->mtd.erasesize = curr_erasesize; in mtd_concat_create()
812 concat->mtd.numeraseregions = 0; in mtd_concat_create()
823 concat->mtd.erasesize = max_erasesize; in mtd_concat_create()
824 concat->mtd.numeraseregions = num_erase_region; in mtd_concat_create()
825 concat->mtd.eraseregions = erase_region_p = in mtd_concat_create()
897 return &concat->mtd; in mtd_concat_create()
901 void mtd_concat_destroy(struct mtd_info *mtd) in mtd_concat_destroy() argument
903 struct mtd_concat *concat = CONCAT(mtd); in mtd_concat_destroy()
904 if (concat->mtd.numeraseregions) in mtd_concat_destroy()
905 kfree(concat->mtd.eraseregions); in mtd_concat_destroy()