123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352 |
- #ifndef __LIBMTD_H__
- #define __LIBMTD_H__
- #ifdef __cplusplus
- extern "C" {
- #endif
- #define MTD_NAME_MAX 127
- #define MTD_TYPE_MAX 64
- typedef void * libmtd_t;
- struct region_info_user;
- struct mtd_info
- {
- int mtd_dev_cnt;
- int lowest_mtd_num;
- int highest_mtd_num;
- unsigned int sysfs_supported:1;
- };
- struct mtd_dev_info
- {
- int mtd_num;
- int major;
- int minor;
- int type;
- const char type_str[MTD_TYPE_MAX + 1];
- const char name[MTD_NAME_MAX + 1];
- long long size;
- int eb_cnt;
- int eb_size;
- int min_io_size;
- int subpage_size;
- int oob_size;
- int oobavail;
- int region_cnt;
- unsigned int writable:1;
- unsigned int bb_allowed:1;
- };
- libmtd_t libmtd_open(void);
- void libmtd_close(libmtd_t desc);
- int mtd_dev_present(libmtd_t desc, int mtd_num);
- int mtd_get_info(libmtd_t desc, struct mtd_info *info);
- int mtd_get_dev_info(libmtd_t desc, const char *node, struct mtd_dev_info *mtd);
- int mtd_get_dev_info1(libmtd_t desc, int mtd_num, struct mtd_dev_info *mtd);
- int mtd_lock(const struct mtd_dev_info *mtd, int fd, int eb);
- int mtd_unlock(const struct mtd_dev_info *mtd, int fd, int eb);
- int mtd_erase_multi(libmtd_t desc, const struct mtd_dev_info *mtd,
- int fd, int eb, int blocks);
- int mtd_erase(libmtd_t desc, const struct mtd_dev_info *mtd, int fd, int eb);
- int mtd_regioninfo(int fd, int regidx, struct region_info_user *reginfo);
- int mtd_is_locked(const struct mtd_dev_info *mtd, int fd, int eb);
- int mtd_torture(libmtd_t desc, const struct mtd_dev_info *mtd, int fd, int eb);
- int mtd_is_bad(const struct mtd_dev_info *mtd, int fd, int eb);
- int mtd_mark_bad(const struct mtd_dev_info *mtd, int fd, int eb);
- int mtd_read(const struct mtd_dev_info *mtd, int fd, int eb, int offs,
- void *buf, int len);
- int mtd_write(libmtd_t desc, const struct mtd_dev_info *mtd, int fd, int eb,
- int offs, void *data, int len, void *oob, int ooblen,
- uint8_t mode);
- int mtd_read_oob(libmtd_t desc, const struct mtd_dev_info *mtd, int fd,
- uint64_t start, uint64_t length, void *data);
- int mtd_write_oob(libmtd_t desc, const struct mtd_dev_info *mtd, int fd,
- uint64_t start, uint64_t length, void *data);
- int mtd_probe_node(libmtd_t desc, const char *node);
- #ifdef __cplusplus
- }
- #endif
- #endif
|