Lines Matching refs:mtd
46 struct mtd_info *mtd; member
130 int (*ecc)(struct mtd_info *mtd, int section,
132 int (*rfree)(struct mtd_info *mtd, int section,
233 int (*_erase) (struct mtd_info *mtd, struct erase_info *instr);
235 int (*_point) (struct mtd_info *mtd, loff_t from, size_t len,
237 int (*_unpoint) (struct mtd_info *mtd, loff_t from, size_t len);
239 unsigned long (*_get_unmapped_area) (struct mtd_info *mtd,
243 int (*_read) (struct mtd_info *mtd, loff_t from, size_t len,
245 int (*_write) (struct mtd_info *mtd, loff_t to, size_t len,
247 int (*_panic_write) (struct mtd_info *mtd, loff_t to, size_t len,
249 int (*_read_oob) (struct mtd_info *mtd, loff_t from,
251 int (*_write_oob) (struct mtd_info *mtd, loff_t to,
253 int (*_get_fact_prot_info) (struct mtd_info *mtd, size_t len,
255 int (*_read_fact_prot_reg) (struct mtd_info *mtd, loff_t from,
257 int (*_get_user_prot_info) (struct mtd_info *mtd, size_t len,
259 int (*_read_user_prot_reg) (struct mtd_info *mtd, loff_t from,
261 int (*_write_user_prot_reg) (struct mtd_info *mtd, loff_t to,
263 int (*_lock_user_prot_reg) (struct mtd_info *mtd, loff_t from,
266 int (*_writev) (struct mtd_info *mtd, const struct kvec *vecs,
269 void (*_sync) (struct mtd_info *mtd);
270 int (*_lock) (struct mtd_info *mtd, loff_t ofs, uint64_t len);
271 int (*_unlock) (struct mtd_info *mtd, loff_t ofs, uint64_t len);
272 int (*_is_locked) (struct mtd_info *mtd, loff_t ofs, uint64_t len);
273 int (*_block_isreserved) (struct mtd_info *mtd, loff_t ofs);
274 int (*_block_isbad) (struct mtd_info *mtd, loff_t ofs);
275 int (*_block_markbad) (struct mtd_info *mtd, loff_t ofs);
277 int (*_suspend) (struct mtd_info *mtd);
278 void (*_resume) (struct mtd_info *mtd);
279 void (*_reboot) (struct mtd_info *mtd);
285 int (*_get_device) (struct mtd_info *mtd);
286 void (*_put_device) (struct mtd_info *mtd);
335 static inline void mtd_set_ofnode(struct mtd_info *mtd, ofnode node) in mtd_set_ofnode() argument
337 dev_set_ofnode(mtd->dev, node); in mtd_set_ofnode()
340 static inline const ofnode mtd_get_ofnode(struct mtd_info *mtd) in mtd_get_ofnode() argument
342 return dev_ofnode(mtd->dev); in mtd_get_ofnode()
347 static inline void mtd_set_of_node(struct mtd_info *mtd, in mtd_set_of_node() argument
352 static inline const struct device_node *mtd_get_of_node(struct mtd_info *mtd) in mtd_get_of_node() argument
358 static inline bool mtd_is_partition(const struct mtd_info *mtd) in mtd_is_partition() argument
360 return mtd->parent; in mtd_is_partition()
363 static inline bool mtd_has_partitions(const struct mtd_info *mtd) in mtd_has_partitions() argument
365 return !list_empty(&mtd->partitions); in mtd_has_partitions()
370 int mtd_ooblayout_ecc(struct mtd_info *mtd, int section,
372 int mtd_ooblayout_find_eccregion(struct mtd_info *mtd, int eccbyte,
375 int mtd_ooblayout_get_eccbytes(struct mtd_info *mtd, u8 *eccbuf,
377 int mtd_ooblayout_set_eccbytes(struct mtd_info *mtd, const u8 *eccbuf,
379 int mtd_ooblayout_free(struct mtd_info *mtd, int section,
381 int mtd_ooblayout_get_databytes(struct mtd_info *mtd, u8 *databuf,
383 int mtd_ooblayout_set_databytes(struct mtd_info *mtd, const u8 *databuf,
385 int mtd_ooblayout_count_freebytes(struct mtd_info *mtd);
386 int mtd_ooblayout_count_eccbytes(struct mtd_info *mtd);
388 static inline void mtd_set_ooblayout(struct mtd_info *mtd, in mtd_set_ooblayout() argument
391 mtd->ooblayout = ooblayout; in mtd_set_ooblayout()
394 static inline u32 mtd_oobavail(struct mtd_info *mtd, struct mtd_oob_ops *ops) in mtd_oobavail() argument
396 return ops->mode == MTD_OPS_AUTO_OOB ? mtd->oobavail : mtd->oobsize; in mtd_oobavail()
399 int mtd_erase(struct mtd_info *mtd, struct erase_info *instr);
401 int mtd_point(struct mtd_info *mtd, loff_t from, size_t len, size_t *retlen,
403 int mtd_unpoint(struct mtd_info *mtd, loff_t from, size_t len);
405 unsigned long mtd_get_unmapped_area(struct mtd_info *mtd, unsigned long len,
407 int mtd_read(struct mtd_info *mtd, loff_t from, size_t len, size_t *retlen,
409 int mtd_write(struct mtd_info *mtd, loff_t to, size_t len, size_t *retlen,
411 int mtd_panic_write(struct mtd_info *mtd, loff_t to, size_t len, size_t *retlen,
414 int mtd_read_oob(struct mtd_info *mtd, loff_t from, struct mtd_oob_ops *ops);
415 int mtd_write_oob(struct mtd_info *mtd, loff_t to, struct mtd_oob_ops *ops);
417 int mtd_get_fact_prot_info(struct mtd_info *mtd, size_t len, size_t *retlen,
419 int mtd_read_fact_prot_reg(struct mtd_info *mtd, loff_t from, size_t len,
421 int mtd_get_user_prot_info(struct mtd_info *mtd, size_t len, size_t *retlen,
423 int mtd_read_user_prot_reg(struct mtd_info *mtd, loff_t from, size_t len,
425 int mtd_write_user_prot_reg(struct mtd_info *mtd, loff_t to, size_t len,
427 int mtd_lock_user_prot_reg(struct mtd_info *mtd, loff_t from, size_t len);
430 int mtd_writev(struct mtd_info *mtd, const struct kvec *vecs,
434 static inline void mtd_sync(struct mtd_info *mtd) in mtd_sync() argument
436 if (mtd->_sync) in mtd_sync()
437 mtd->_sync(mtd); in mtd_sync()
440 int mtd_lock(struct mtd_info *mtd, loff_t ofs, uint64_t len);
441 int mtd_unlock(struct mtd_info *mtd, loff_t ofs, uint64_t len);
442 int mtd_is_locked(struct mtd_info *mtd, loff_t ofs, uint64_t len);
443 int mtd_block_isreserved(struct mtd_info *mtd, loff_t ofs);
444 int mtd_block_isbad(struct mtd_info *mtd, loff_t ofs);
445 int mtd_block_markbad(struct mtd_info *mtd, loff_t ofs);
448 static inline int mtd_suspend(struct mtd_info *mtd) in mtd_suspend() argument
450 return mtd->_suspend ? mtd->_suspend(mtd) : 0; in mtd_suspend()
453 static inline void mtd_resume(struct mtd_info *mtd) in mtd_resume() argument
455 if (mtd->_resume) in mtd_resume()
456 mtd->_resume(mtd); in mtd_resume()
460 static inline uint32_t mtd_div_by_eb(uint64_t sz, struct mtd_info *mtd) in mtd_div_by_eb() argument
462 if (mtd->erasesize_shift) in mtd_div_by_eb()
463 return sz >> mtd->erasesize_shift; in mtd_div_by_eb()
464 do_div(sz, mtd->erasesize); in mtd_div_by_eb()
468 static inline uint32_t mtd_mod_by_eb(uint64_t sz, struct mtd_info *mtd) in mtd_mod_by_eb() argument
470 if (mtd->erasesize_shift) in mtd_mod_by_eb()
471 return sz & mtd->erasesize_mask; in mtd_mod_by_eb()
472 return do_div(sz, mtd->erasesize); in mtd_mod_by_eb()
475 static inline uint32_t mtd_div_by_ws(uint64_t sz, struct mtd_info *mtd) in mtd_div_by_ws() argument
477 if (mtd->writesize_shift) in mtd_div_by_ws()
478 return sz >> mtd->writesize_shift; in mtd_div_by_ws()
479 do_div(sz, mtd->writesize); in mtd_div_by_ws()
483 static inline uint32_t mtd_mod_by_ws(uint64_t sz, struct mtd_info *mtd) in mtd_mod_by_ws() argument
485 if (mtd->writesize_shift) in mtd_mod_by_ws()
486 return sz & mtd->writesize_mask; in mtd_mod_by_ws()
487 return do_div(sz, mtd->writesize); in mtd_mod_by_ws()
490 static inline int mtd_has_oob(const struct mtd_info *mtd) in mtd_has_oob() argument
492 return mtd->_read_oob && mtd->_write_oob; in mtd_has_oob()
495 static inline int mtd_type_is_nand(const struct mtd_info *mtd) in mtd_type_is_nand() argument
497 return mtd->type == MTD_NANDFLASH || mtd->type == MTD_MLCNANDFLASH; in mtd_type_is_nand()
500 static inline int mtd_can_have_bb(const struct mtd_info *mtd) in mtd_can_have_bb() argument
502 return !!mtd->_block_isbad; in mtd_can_have_bb()
510 extern int mtd_device_parse_register(struct mtd_info *mtd,
518 extern struct mtd_info *get_mtd_device(struct mtd_info *mtd, int num);
519 extern int __get_mtd_device(struct mtd_info *mtd);
520 extern void __put_mtd_device(struct mtd_info *mtd);
522 extern void put_mtd_device(struct mtd_info *mtd);
527 void (*add)(struct mtd_info *mtd);
528 void (*remove)(struct mtd_info *mtd);
536 void *mtd_kmalloc_up_to(const struct mtd_info *mtd, size_t *size);
560 unsigned mtd_mmap_capabilities(struct mtd_info *mtd);
564 int add_mtd_device(struct mtd_info *mtd);
565 int del_mtd_device(struct mtd_info *mtd);
571 static inline int add_mtd_partitions(struct mtd_info *mtd, in add_mtd_partitions() argument
578 static inline int del_mtd_partitions(struct mtd_info *mtd) in del_mtd_partitions() argument
585 #define mtd_for_each_device(mtd) \ argument
586 for ((mtd) = __mtd_next_device(0); \
587 (mtd) != NULL; \
588 (mtd) = __mtd_next_device(mtd->index + 1))
591 void mtd_get_len_incl_bad(struct mtd_info *mtd, uint64_t offset,