summaryrefslogtreecommitdiffstats
path: root/cpukit/libfs/src/jffs2/include/linux/mtd/mtd.h
diff options
context:
space:
mode:
Diffstat (limited to 'cpukit/libfs/src/jffs2/include/linux/mtd/mtd.h')
-rw-r--r--cpukit/libfs/src/jffs2/include/linux/mtd/mtd.h37
1 files changed, 37 insertions, 0 deletions
diff --git a/cpukit/libfs/src/jffs2/include/linux/mtd/mtd.h b/cpukit/libfs/src/jffs2/include/linux/mtd/mtd.h
index bcf0a9aa70..548201483f 100644
--- a/cpukit/libfs/src/jffs2/include/linux/mtd/mtd.h
+++ b/cpukit/libfs/src/jffs2/include/linux/mtd/mtd.h
@@ -6,6 +6,14 @@
#define MTD_FAIL_ADDR_UNKNOWN -1LL
+struct mtd_info {
+ uint32_t oobavail;
+ uint32_t oobsize;
+ uint32_t size;
+ uint32_t erasesize;
+ uint32_t writesize;
+};
+
static inline int do_mtd_point(size_t *retlen, void **ebuf)
{
*retlen = 0;
@@ -20,4 +28,33 @@ static inline int do_mtd_point(size_t *retlen, void **ebuf)
#define mtd_kmalloc_up_to(a, b) kmalloc(*(b), GFP_KERNEL)
+struct mtd_oob_ops {
+ uint32_t mode;
+ size_t len;
+ size_t retlen;
+ size_t ooblen;
+ size_t oobretlen;
+ uint32_t ooboffs;
+ uint8_t *datbuf;
+ uint8_t *oobbuf;
+};
+
+#define EUCLEAN EAGAIN
+static inline int mtd_is_bitflip(int err) { return (err == -EUCLEAN); }
+
+#define mtd_block_isbad(mtd_sp, offset) ({ \
+ bool bad; \
+ int sc = jffs2_flash_block_is_bad(RTEMS_CONTAINER_OF(&(mtd_sp), struct jffs2_sb_info, mtd), offset, &bad); \
+ if (sc) { \
+ return sc; \
+ } \
+ bad; \
+})
+#define mtd_block_markbad(mtd_sp, offset) \
+ jffs2_flash_block_mark_bad(RTEMS_CONTAINER_OF(&(mtd_sp), struct jffs2_sb_info, mtd), offset)
+#define mtd_write(mtd_sp, ofs, len, retlen, buf) \
+ jffs2_flash_direct_write(RTEMS_CONTAINER_OF(&(mtd_sp), struct jffs2_sb_info, mtd), ofs, len, retlen, buf)
+#define mtd_read(mtd_sp, ofs, len, retlen, buf) \
+ jffs2_flash_direct_read(RTEMS_CONTAINER_OF(&(mtd_sp), struct jffs2_sb_info, mtd), ofs, len, retlen, buf)
+
#endif /* __LINUX_MTD_MTD_H__ */