Lines Matching refs:mtd
56 struct mtd_info *mtd = dev_get_drvdata(dev); in mtd_cls_suspend() local
58 return mtd ? mtd_suspend(mtd) : 0; in mtd_cls_suspend()
63 struct mtd_info *mtd = dev_get_drvdata(dev); in mtd_cls_resume() local
65 if (mtd) in mtd_cls_resume()
66 mtd_resume(mtd); in mtd_cls_resume()
105 struct mtd_info *mtd = dev_get_drvdata(dev); in mtd_release() local
106 dev_t index = MTD_DEVT(mtd->index); in mtd_release()
115 struct mtd_info *mtd = dev_get_drvdata(dev); in mtd_type_show() local
118 switch (mtd->type) { in mtd_type_show()
154 struct mtd_info *mtd = dev_get_drvdata(dev); in mtd_flags_show() local
156 return snprintf(buf, PAGE_SIZE, "0x%lx\n", (unsigned long)mtd->flags); in mtd_flags_show()
164 struct mtd_info *mtd = dev_get_drvdata(dev); in mtd_size_show() local
167 (unsigned long long)mtd->size); in mtd_size_show()
175 struct mtd_info *mtd = dev_get_drvdata(dev); in mtd_erasesize_show() local
177 return snprintf(buf, PAGE_SIZE, "%lu\n", (unsigned long)mtd->erasesize); in mtd_erasesize_show()
185 struct mtd_info *mtd = dev_get_drvdata(dev); in mtd_writesize_show() local
187 return snprintf(buf, PAGE_SIZE, "%lu\n", (unsigned long)mtd->writesize); in mtd_writesize_show()
195 struct mtd_info *mtd = dev_get_drvdata(dev); in mtd_subpagesize_show() local
196 unsigned int subpagesize = mtd->writesize >> mtd->subpage_sft; in mtd_subpagesize_show()
206 struct mtd_info *mtd = dev_get_drvdata(dev); in mtd_oobsize_show() local
208 return snprintf(buf, PAGE_SIZE, "%lu\n", (unsigned long)mtd->oobsize); in mtd_oobsize_show()
216 struct mtd_info *mtd = dev_get_drvdata(dev); in mtd_numeraseregions_show() local
218 return snprintf(buf, PAGE_SIZE, "%u\n", mtd->numeraseregions); in mtd_numeraseregions_show()
227 struct mtd_info *mtd = dev_get_drvdata(dev); in mtd_name_show() local
229 return snprintf(buf, PAGE_SIZE, "%s\n", mtd->name); in mtd_name_show()
237 struct mtd_info *mtd = dev_get_drvdata(dev); in mtd_ecc_strength_show() local
239 return snprintf(buf, PAGE_SIZE, "%u\n", mtd->ecc_strength); in mtd_ecc_strength_show()
247 struct mtd_info *mtd = dev_get_drvdata(dev); in mtd_bitflip_threshold_show() local
249 return snprintf(buf, PAGE_SIZE, "%u\n", mtd->bitflip_threshold); in mtd_bitflip_threshold_show()
256 struct mtd_info *mtd = dev_get_drvdata(dev); in mtd_bitflip_threshold_store() local
264 mtd->bitflip_threshold = bitflip_threshold; in mtd_bitflip_threshold_store()
274 struct mtd_info *mtd = dev_get_drvdata(dev); in mtd_ecc_step_size_show() local
276 return snprintf(buf, PAGE_SIZE, "%u\n", mtd->ecc_step_size); in mtd_ecc_step_size_show()
284 struct mtd_info *mtd = dev_get_drvdata(dev); in mtd_ecc_stats_corrected_show() local
285 struct mtd_ecc_stats *ecc_stats = &mtd->ecc_stats; in mtd_ecc_stats_corrected_show()
295 struct mtd_info *mtd = dev_get_drvdata(dev); in mtd_ecc_stats_errors_show() local
296 struct mtd_ecc_stats *ecc_stats = &mtd->ecc_stats; in mtd_ecc_stats_errors_show()
305 struct mtd_info *mtd = dev_get_drvdata(dev); in mtd_badblocks_show() local
306 struct mtd_ecc_stats *ecc_stats = &mtd->ecc_stats; in mtd_badblocks_show()
315 struct mtd_info *mtd = dev_get_drvdata(dev); in mtd_bbtblocks_show() local
316 struct mtd_ecc_stats *ecc_stats = &mtd->ecc_stats; in mtd_bbtblocks_show()
341 ATTRIBUTE_GROUPS(mtd);
350 unsigned mtd_mmap_capabilities(struct mtd_info *mtd) in mtd_mmap_capabilities() argument
352 switch (mtd->type) { in mtd_mmap_capabilities()
369 struct mtd_info *mtd; in mtd_reboot_notifier() local
371 mtd = container_of(n, struct mtd_info, reboot_notifier); in mtd_reboot_notifier()
372 mtd->_reboot(mtd); in mtd_reboot_notifier()
403 int mtd_wunit_to_pairing_info(struct mtd_info *mtd, int wunit, in mtd_wunit_to_pairing_info() argument
406 int npairs = mtd_wunit_per_eb(mtd) / mtd_pairing_groups(mtd); in mtd_wunit_to_pairing_info()
411 if (mtd->pairing && mtd->pairing->get_info) in mtd_wunit_to_pairing_info()
412 return mtd->pairing->get_info(mtd, wunit, info); in mtd_wunit_to_pairing_info()
445 int mtd_pairing_info_to_wunit(struct mtd_info *mtd, in mtd_pairing_info_to_wunit() argument
448 int ngroups = mtd_pairing_groups(mtd); in mtd_pairing_info_to_wunit()
449 int npairs = mtd_wunit_per_eb(mtd) / ngroups; in mtd_pairing_info_to_wunit()
455 if (mtd->pairing && mtd->pairing->get_wunit) in mtd_pairing_info_to_wunit()
456 return mtd->pairing->get_wunit(mtd, info); in mtd_pairing_info_to_wunit()
472 int mtd_pairing_groups(struct mtd_info *mtd) in mtd_pairing_groups() argument
474 if (!mtd->pairing || !mtd->pairing->ngroups) in mtd_pairing_groups()
477 return mtd->pairing->ngroups; in mtd_pairing_groups()
490 int add_mtd_device(struct mtd_info *mtd) in add_mtd_device() argument
500 if (WARN_ONCE(mtd->backing_dev_info, "MTD already registered\n")) in add_mtd_device()
503 mtd->backing_dev_info = &mtd_bdi; in add_mtd_device()
505 BUG_ON(mtd->writesize == 0); in add_mtd_device()
508 i = idr_alloc(&mtd_idr, mtd, 0, 0, GFP_KERNEL); in add_mtd_device()
514 mtd->index = i; in add_mtd_device()
515 mtd->usecount = 0; in add_mtd_device()
518 if (mtd->bitflip_threshold == 0) in add_mtd_device()
519 mtd->bitflip_threshold = mtd->ecc_strength; in add_mtd_device()
521 if (is_power_of_2(mtd->erasesize)) in add_mtd_device()
522 mtd->erasesize_shift = ffs(mtd->erasesize) - 1; in add_mtd_device()
524 mtd->erasesize_shift = 0; in add_mtd_device()
526 if (is_power_of_2(mtd->writesize)) in add_mtd_device()
527 mtd->writesize_shift = ffs(mtd->writesize) - 1; in add_mtd_device()
529 mtd->writesize_shift = 0; in add_mtd_device()
531 mtd->erasesize_mask = (1 << mtd->erasesize_shift) - 1; in add_mtd_device()
532 mtd->writesize_mask = (1 << mtd->writesize_shift) - 1; in add_mtd_device()
535 if ((mtd->flags & MTD_WRITEABLE) && (mtd->flags & MTD_POWERUP_LOCK)) { in add_mtd_device()
536 error = mtd_unlock(mtd, 0, mtd->size); in add_mtd_device()
540 mtd->name); in add_mtd_device()
548 mtd->dev.type = &mtd_devtype; in add_mtd_device()
549 mtd->dev.class = &mtd_class; in add_mtd_device()
550 mtd->dev.devt = MTD_DEVT(i); in add_mtd_device()
551 dev_set_name(&mtd->dev, "mtd%d", i); in add_mtd_device()
552 dev_set_drvdata(&mtd->dev, mtd); in add_mtd_device()
553 of_node_get(mtd_get_of_node(mtd)); in add_mtd_device()
554 error = device_register(&mtd->dev); in add_mtd_device()
558 device_create(&mtd_class, mtd->dev.parent, MTD_DEVT(i) + 1, NULL, in add_mtd_device()
561 pr_debug("mtd: Giving out device %d to %s\n", i, mtd->name); in add_mtd_device()
565 not->add(mtd); in add_mtd_device()
576 of_node_put(mtd_get_of_node(mtd)); in add_mtd_device()
593 int del_mtd_device(struct mtd_info *mtd) in del_mtd_device() argument
600 if (idr_find(&mtd_idr, mtd->index) != mtd) { in del_mtd_device()
608 not->remove(mtd); in del_mtd_device()
610 if (mtd->usecount) { in del_mtd_device()
612 mtd->index, mtd->name, mtd->usecount); in del_mtd_device()
615 device_unregister(&mtd->dev); in del_mtd_device()
617 idr_remove(&mtd_idr, mtd->index); in del_mtd_device()
618 of_node_put(mtd_get_of_node(mtd)); in del_mtd_device()
629 static int mtd_add_device_partitions(struct mtd_info *mtd, in mtd_add_device_partitions() argument
637 ret = add_mtd_device(mtd); in mtd_add_device_partitions()
643 ret = add_mtd_partitions(mtd, real_parts, nbparts); in mtd_add_device_partitions()
645 del_mtd_device(mtd); in mtd_add_device_partitions()
656 static void mtd_set_dev_defaults(struct mtd_info *mtd) in mtd_set_dev_defaults() argument
658 if (mtd->dev.parent) { in mtd_set_dev_defaults()
659 if (!mtd->owner && mtd->dev.parent->driver) in mtd_set_dev_defaults()
660 mtd->owner = mtd->dev.parent->driver->owner; in mtd_set_dev_defaults()
661 if (!mtd->name) in mtd_set_dev_defaults()
662 mtd->name = dev_name(mtd->dev.parent); in mtd_set_dev_defaults()
697 int mtd_device_parse_register(struct mtd_info *mtd, const char * const *types, in mtd_device_parse_register() argument
705 mtd_set_dev_defaults(mtd); in mtd_device_parse_register()
709 ret = parse_mtd_partitions(mtd, types, &parsed, parser_data); in mtd_device_parse_register()
724 ret = mtd_add_device_partitions(mtd, &parsed); in mtd_device_parse_register()
736 WARN_ONCE(mtd->_reboot && mtd->reboot_notifier.notifier_call, in mtd_device_parse_register()
738 if (mtd->_reboot && !mtd->reboot_notifier.notifier_call) { in mtd_device_parse_register()
739 mtd->reboot_notifier.notifier_call = mtd_reboot_notifier; in mtd_device_parse_register()
740 register_reboot_notifier(&mtd->reboot_notifier); in mtd_device_parse_register()
784 struct mtd_info *mtd; in register_mtd_user() local
792 mtd_for_each_device(mtd) in register_mtd_user()
793 new->add(mtd); in register_mtd_user()
810 struct mtd_info *mtd; in unregister_mtd_user() local
816 mtd_for_each_device(mtd) in unregister_mtd_user()
817 old->remove(mtd); in unregister_mtd_user()
836 struct mtd_info *get_mtd_device(struct mtd_info *mtd, int num) in get_mtd_device() argument
845 if (other == mtd) { in get_mtd_device()
846 ret = mtd; in get_mtd_device()
852 if (mtd && mtd != ret) in get_mtd_device()
871 int __get_mtd_device(struct mtd_info *mtd) in __get_mtd_device() argument
875 if (!try_module_get(mtd->owner)) in __get_mtd_device()
878 if (mtd->_get_device) { in __get_mtd_device()
879 err = mtd->_get_device(mtd); in __get_mtd_device()
882 module_put(mtd->owner); in __get_mtd_device()
886 mtd->usecount++; in __get_mtd_device()
902 struct mtd_info *mtd = NULL, *other; in get_mtd_device_nm() local
908 mtd = other; in get_mtd_device_nm()
913 if (!mtd) in get_mtd_device_nm()
916 err = __get_mtd_device(mtd); in get_mtd_device_nm()
921 return mtd; in get_mtd_device_nm()
929 void put_mtd_device(struct mtd_info *mtd) in put_mtd_device() argument
932 __put_mtd_device(mtd); in put_mtd_device()
938 void __put_mtd_device(struct mtd_info *mtd) in __put_mtd_device() argument
940 --mtd->usecount; in __put_mtd_device()
941 BUG_ON(mtd->usecount < 0); in __put_mtd_device()
943 if (mtd->_put_device) in __put_mtd_device()
944 mtd->_put_device(mtd); in __put_mtd_device()
946 module_put(mtd->owner); in __put_mtd_device()
957 int mtd_erase(struct mtd_info *mtd, struct erase_info *instr) in mtd_erase() argument
959 if (instr->addr >= mtd->size || instr->len > mtd->size - instr->addr) in mtd_erase()
961 if (!(mtd->flags & MTD_WRITEABLE)) in mtd_erase()
970 return mtd->_erase(mtd, instr); in mtd_erase()
977 int mtd_point(struct mtd_info *mtd, loff_t from, size_t len, size_t *retlen, in mtd_point() argument
984 if (!mtd->_point) in mtd_point()
986 if (from < 0 || from >= mtd->size || len > mtd->size - from) in mtd_point()
990 return mtd->_point(mtd, from, len, retlen, virt, phys); in mtd_point()
995 int mtd_unpoint(struct mtd_info *mtd, loff_t from, size_t len) in mtd_unpoint() argument
997 if (!mtd->_point) in mtd_unpoint()
999 if (from < 0 || from >= mtd->size || len > mtd->size - from) in mtd_unpoint()
1003 return mtd->_unpoint(mtd, from, len); in mtd_unpoint()
1012 unsigned long mtd_get_unmapped_area(struct mtd_info *mtd, unsigned long len, in mtd_get_unmapped_area() argument
1015 if (!mtd->_get_unmapped_area) in mtd_get_unmapped_area()
1017 if (offset >= mtd->size || len > mtd->size - offset) in mtd_get_unmapped_area()
1019 return mtd->_get_unmapped_area(mtd, len, offset, flags); in mtd_get_unmapped_area()
1023 int mtd_read(struct mtd_info *mtd, loff_t from, size_t len, size_t *retlen, in mtd_read() argument
1028 if (from < 0 || from >= mtd->size || len > mtd->size - from) in mtd_read()
1039 ret_code = mtd->_read(mtd, from, len, retlen, buf); in mtd_read()
1042 if (mtd->ecc_strength == 0) in mtd_read()
1044 return ret_code >= mtd->bitflip_threshold ? -EUCLEAN : 0; in mtd_read()
1048 int mtd_write(struct mtd_info *mtd, loff_t to, size_t len, size_t *retlen, in mtd_write() argument
1052 if (to < 0 || to >= mtd->size || len > mtd->size - to) in mtd_write()
1054 if (!mtd->_write || !(mtd->flags & MTD_WRITEABLE)) in mtd_write()
1059 return mtd->_write(mtd, to, len, retlen, buf); in mtd_write()
1070 int mtd_panic_write(struct mtd_info *mtd, loff_t to, size_t len, size_t *retlen, in mtd_panic_write() argument
1074 if (!mtd->_panic_write) in mtd_panic_write()
1076 if (to < 0 || to >= mtd->size || len > mtd->size - to) in mtd_panic_write()
1078 if (!(mtd->flags & MTD_WRITEABLE)) in mtd_panic_write()
1082 return mtd->_panic_write(mtd, to, len, retlen, buf); in mtd_panic_write()
1086 int mtd_read_oob(struct mtd_info *mtd, loff_t from, struct mtd_oob_ops *ops) in mtd_read_oob() argument
1090 if (!mtd->_read_oob) in mtd_read_oob()
1100 ret_code = mtd->_read_oob(mtd, from, ops); in mtd_read_oob()
1103 if (mtd->ecc_strength == 0) in mtd_read_oob()
1105 return ret_code >= mtd->bitflip_threshold ? -EUCLEAN : 0; in mtd_read_oob()
1109 int mtd_write_oob(struct mtd_info *mtd, loff_t to, in mtd_write_oob() argument
1113 if (!mtd->_write_oob) in mtd_write_oob()
1115 if (!(mtd->flags & MTD_WRITEABLE)) in mtd_write_oob()
1118 return mtd->_write_oob(mtd, to, ops); in mtd_write_oob()
1138 int mtd_ooblayout_ecc(struct mtd_info *mtd, int section, in mtd_ooblayout_ecc() argument
1143 if (!mtd || section < 0) in mtd_ooblayout_ecc()
1146 if (!mtd->ooblayout || !mtd->ooblayout->ecc) in mtd_ooblayout_ecc()
1149 return mtd->ooblayout->ecc(mtd, section, oobecc); in mtd_ooblayout_ecc()
1170 int mtd_ooblayout_free(struct mtd_info *mtd, int section, in mtd_ooblayout_free() argument
1175 if (!mtd || section < 0) in mtd_ooblayout_free()
1178 if (!mtd->ooblayout || !mtd->ooblayout->free) in mtd_ooblayout_free()
1181 return mtd->ooblayout->free(mtd, section, oobfree); in mtd_ooblayout_free()
1202 static int mtd_ooblayout_find_region(struct mtd_info *mtd, int byte, in mtd_ooblayout_find_region() argument
1213 ret = iter(mtd, section, oobregion); in mtd_ooblayout_find_region()
1248 int mtd_ooblayout_find_eccregion(struct mtd_info *mtd, int eccbyte, in mtd_ooblayout_find_eccregion() argument
1252 return mtd_ooblayout_find_region(mtd, eccbyte, section, oobregion, in mtd_ooblayout_find_eccregion()
1271 static int mtd_ooblayout_get_bytes(struct mtd_info *mtd, u8 *buf, in mtd_ooblayout_get_bytes() argument
1280 ret = mtd_ooblayout_find_region(mtd, start, §ion, in mtd_ooblayout_get_bytes()
1294 ret = iter(mtd, ++section, &oobregion); in mtd_ooblayout_get_bytes()
1314 static int mtd_ooblayout_set_bytes(struct mtd_info *mtd, const u8 *buf, in mtd_ooblayout_set_bytes() argument
1323 ret = mtd_ooblayout_find_region(mtd, start, §ion, in mtd_ooblayout_set_bytes()
1337 ret = iter(mtd, ++section, &oobregion); in mtd_ooblayout_set_bytes()
1352 static int mtd_ooblayout_count_bytes(struct mtd_info *mtd, in mtd_ooblayout_count_bytes() argument
1361 ret = iter(mtd, section++, &oobregion); in mtd_ooblayout_count_bytes()
1386 int mtd_ooblayout_get_eccbytes(struct mtd_info *mtd, u8 *eccbuf, in mtd_ooblayout_get_eccbytes() argument
1389 return mtd_ooblayout_get_bytes(mtd, eccbuf, oobbuf, start, nbytes, in mtd_ooblayout_get_eccbytes()
1406 int mtd_ooblayout_set_eccbytes(struct mtd_info *mtd, const u8 *eccbuf, in mtd_ooblayout_set_eccbytes() argument
1409 return mtd_ooblayout_set_bytes(mtd, eccbuf, oobbuf, start, nbytes, in mtd_ooblayout_set_eccbytes()
1426 int mtd_ooblayout_get_databytes(struct mtd_info *mtd, u8 *databuf, in mtd_ooblayout_get_databytes() argument
1429 return mtd_ooblayout_get_bytes(mtd, databuf, oobbuf, start, nbytes, in mtd_ooblayout_get_databytes()
1446 int mtd_ooblayout_set_databytes(struct mtd_info *mtd, const u8 *databuf, in mtd_ooblayout_set_databytes() argument
1449 return mtd_ooblayout_set_bytes(mtd, databuf, oobbuf, start, nbytes, in mtd_ooblayout_set_databytes()
1462 int mtd_ooblayout_count_freebytes(struct mtd_info *mtd) in mtd_ooblayout_count_freebytes() argument
1464 return mtd_ooblayout_count_bytes(mtd, mtd_ooblayout_free); in mtd_ooblayout_count_freebytes()
1476 int mtd_ooblayout_count_eccbytes(struct mtd_info *mtd) in mtd_ooblayout_count_eccbytes() argument
1478 return mtd_ooblayout_count_bytes(mtd, mtd_ooblayout_ecc); in mtd_ooblayout_count_eccbytes()
1487 int mtd_get_fact_prot_info(struct mtd_info *mtd, size_t len, size_t *retlen, in mtd_get_fact_prot_info() argument
1490 if (!mtd->_get_fact_prot_info) in mtd_get_fact_prot_info()
1494 return mtd->_get_fact_prot_info(mtd, len, retlen, buf); in mtd_get_fact_prot_info()
1498 int mtd_read_fact_prot_reg(struct mtd_info *mtd, loff_t from, size_t len, in mtd_read_fact_prot_reg() argument
1502 if (!mtd->_read_fact_prot_reg) in mtd_read_fact_prot_reg()
1506 return mtd->_read_fact_prot_reg(mtd, from, len, retlen, buf); in mtd_read_fact_prot_reg()
1510 int mtd_get_user_prot_info(struct mtd_info *mtd, size_t len, size_t *retlen, in mtd_get_user_prot_info() argument
1513 if (!mtd->_get_user_prot_info) in mtd_get_user_prot_info()
1517 return mtd->_get_user_prot_info(mtd, len, retlen, buf); in mtd_get_user_prot_info()
1521 int mtd_read_user_prot_reg(struct mtd_info *mtd, loff_t from, size_t len, in mtd_read_user_prot_reg() argument
1525 if (!mtd->_read_user_prot_reg) in mtd_read_user_prot_reg()
1529 return mtd->_read_user_prot_reg(mtd, from, len, retlen, buf); in mtd_read_user_prot_reg()
1533 int mtd_write_user_prot_reg(struct mtd_info *mtd, loff_t to, size_t len, in mtd_write_user_prot_reg() argument
1539 if (!mtd->_write_user_prot_reg) in mtd_write_user_prot_reg()
1543 ret = mtd->_write_user_prot_reg(mtd, to, len, retlen, buf); in mtd_write_user_prot_reg()
1555 int mtd_lock_user_prot_reg(struct mtd_info *mtd, loff_t from, size_t len) in mtd_lock_user_prot_reg() argument
1557 if (!mtd->_lock_user_prot_reg) in mtd_lock_user_prot_reg()
1561 return mtd->_lock_user_prot_reg(mtd, from, len); in mtd_lock_user_prot_reg()
1566 int mtd_lock(struct mtd_info *mtd, loff_t ofs, uint64_t len) in mtd_lock() argument
1568 if (!mtd->_lock) in mtd_lock()
1570 if (ofs < 0 || ofs >= mtd->size || len > mtd->size - ofs) in mtd_lock()
1574 return mtd->_lock(mtd, ofs, len); in mtd_lock()
1578 int mtd_unlock(struct mtd_info *mtd, loff_t ofs, uint64_t len) in mtd_unlock() argument
1580 if (!mtd->_unlock) in mtd_unlock()
1582 if (ofs < 0 || ofs >= mtd->size || len > mtd->size - ofs) in mtd_unlock()
1586 return mtd->_unlock(mtd, ofs, len); in mtd_unlock()
1590 int mtd_is_locked(struct mtd_info *mtd, loff_t ofs, uint64_t len) in mtd_is_locked() argument
1592 if (!mtd->_is_locked) in mtd_is_locked()
1594 if (ofs < 0 || ofs >= mtd->size || len > mtd->size - ofs) in mtd_is_locked()
1598 return mtd->_is_locked(mtd, ofs, len); in mtd_is_locked()
1602 int mtd_block_isreserved(struct mtd_info *mtd, loff_t ofs) in mtd_block_isreserved() argument
1604 if (ofs < 0 || ofs >= mtd->size) in mtd_block_isreserved()
1606 if (!mtd->_block_isreserved) in mtd_block_isreserved()
1608 return mtd->_block_isreserved(mtd, ofs); in mtd_block_isreserved()
1612 int mtd_block_isbad(struct mtd_info *mtd, loff_t ofs) in mtd_block_isbad() argument
1614 if (ofs < 0 || ofs >= mtd->size) in mtd_block_isbad()
1616 if (!mtd->_block_isbad) in mtd_block_isbad()
1618 return mtd->_block_isbad(mtd, ofs); in mtd_block_isbad()
1622 int mtd_block_markbad(struct mtd_info *mtd, loff_t ofs) in mtd_block_markbad() argument
1624 if (!mtd->_block_markbad) in mtd_block_markbad()
1626 if (ofs < 0 || ofs >= mtd->size) in mtd_block_markbad()
1628 if (!(mtd->flags & MTD_WRITEABLE)) in mtd_block_markbad()
1630 return mtd->_block_markbad(mtd, ofs); in mtd_block_markbad()
1645 static int default_mtd_writev(struct mtd_info *mtd, const struct kvec *vecs, in default_mtd_writev() argument
1655 ret = mtd_write(mtd, to, vecs[i].iov_len, &thislen, in default_mtd_writev()
1677 int mtd_writev(struct mtd_info *mtd, const struct kvec *vecs, in mtd_writev() argument
1681 if (!(mtd->flags & MTD_WRITEABLE)) in mtd_writev()
1683 if (!mtd->_writev) in mtd_writev()
1684 return default_mtd_writev(mtd, vecs, count, to, retlen); in mtd_writev()
1685 return mtd->_writev(mtd, vecs, count, to, retlen); in mtd_writev()
1713 void *mtd_kmalloc_up_to(const struct mtd_info *mtd, size_t *size) in mtd_kmalloc_up_to() argument
1716 size_t min_alloc = max_t(size_t, mtd->writesize, PAGE_SIZE); in mtd_kmalloc_up_to()
1727 *size = ALIGN(*size, mtd->writesize); in mtd_kmalloc_up_to()
1745 struct mtd_info *mtd; in mtd_proc_show() local
1749 mtd_for_each_device(mtd) { in mtd_proc_show()
1751 mtd->index, (unsigned long long)mtd->size, in mtd_proc_show()
1752 mtd->erasesize, mtd->name); in mtd_proc_show()