diff options
Diffstat (limited to 'include/linux/mtd/mtd.h')
-rw-r--r-- | include/linux/mtd/mtd.h | 50 |
1 files changed, 48 insertions, 2 deletions
diff --git a/include/linux/mtd/mtd.h b/include/linux/mtd/mtd.h index 4970c2e96fbf..e75bb584e80b 100644 --- a/include/linux/mtd/mtd.h +++ b/include/linux/mtd/mtd.h | |||
@@ -67,6 +67,50 @@ struct mtd_ecc_stats { | |||
67 | unsigned long failed; | 67 | unsigned long failed; |
68 | }; | 68 | }; |
69 | 69 | ||
70 | /* | ||
71 | * oob operation modes | ||
72 | * | ||
73 | * MTD_OOB_PLACE: oob data are placed at the given offset | ||
74 | * MTD_OOB_AUTO: oob data are automatically placed at the free areas | ||
75 | * which are defined by the ecclayout | ||
76 | * MTD_OOB_RAW: mode to read raw data+oob in one chunk. The oob data | ||
77 | * is inserted into the data. Thats a raw image of the | ||
78 | * flash contents. | ||
79 | */ | ||
80 | typedef enum { | ||
81 | MTD_OOB_PLACE, | ||
82 | MTD_OOB_AUTO, | ||
83 | MTD_OOB_RAW, | ||
84 | } mtd_oob_mode_t; | ||
85 | |||
86 | /** | ||
87 | * struct mtd_oob_ops - oob operation operands | ||
88 | * @mode: operation mode | ||
89 | * | ||
90 | * @len: number of bytes to write/read. When a data buffer is given | ||
91 | * (datbuf != NULL) this is the number of data bytes. When | ||
92 | + no data buffer is available this is the number of oob bytes. | ||
93 | * | ||
94 | * @retlen: number of bytes written/read. When a data buffer is given | ||
95 | * (datbuf != NULL) this is the number of data bytes. When | ||
96 | + no data buffer is available this is the number of oob bytes. | ||
97 | * | ||
98 | * @ooblen: number of oob bytes per page | ||
99 | * @ooboffs: offset of oob data in the oob area (only relevant when | ||
100 | * mode = MTD_OOB_PLACE) | ||
101 | * @datbuf: data buffer - if NULL only oob data are read/written | ||
102 | * @oobbuf: oob data buffer | ||
103 | */ | ||
104 | struct mtd_oob_ops { | ||
105 | mtd_oob_mode_t mode; | ||
106 | size_t len; | ||
107 | size_t retlen; | ||
108 | size_t ooblen; | ||
109 | uint32_t ooboffs; | ||
110 | uint8_t *datbuf; | ||
111 | uint8_t *oobbuf; | ||
112 | }; | ||
113 | |||
70 | struct mtd_info { | 114 | struct mtd_info { |
71 | u_char type; | 115 | u_char type; |
72 | u_int32_t flags; | 116 | u_int32_t flags; |
@@ -125,8 +169,10 @@ struct mtd_info { | |||
125 | int (*read) (struct mtd_info *mtd, loff_t from, size_t len, size_t *retlen, u_char *buf); | 169 | int (*read) (struct mtd_info *mtd, loff_t from, size_t len, size_t *retlen, u_char *buf); |
126 | int (*write) (struct mtd_info *mtd, loff_t to, size_t len, size_t *retlen, const u_char *buf); | 170 | int (*write) (struct mtd_info *mtd, loff_t to, size_t len, size_t *retlen, const u_char *buf); |
127 | 171 | ||
128 | int (*read_oob) (struct mtd_info *mtd, loff_t from, size_t len, size_t *retlen, u_char *buf); | 172 | int (*read_oob) (struct mtd_info *mtd, loff_t from, |
129 | int (*write_oob) (struct mtd_info *mtd, loff_t to, size_t len, size_t *retlen, const u_char *buf); | 173 | struct mtd_oob_ops *ops); |
174 | int (*write_oob) (struct mtd_info *mtd, loff_t to, | ||
175 | struct mtd_oob_ops *ops); | ||
130 | 176 | ||
131 | /* | 177 | /* |
132 | * Methods to access the protection register area, present in some | 178 | * Methods to access the protection register area, present in some |