diff options
Diffstat (limited to 'include/linux/mtd/mtd.h')
-rw-r--r-- | include/linux/mtd/mtd.h | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/include/linux/mtd/mtd.h b/include/linux/mtd/mtd.h index 94a443d45258..d644e57703ad 100644 --- a/include/linux/mtd/mtd.h +++ b/include/linux/mtd/mtd.h | |||
@@ -23,7 +23,7 @@ | |||
23 | 23 | ||
24 | #define MTD_CHAR_MAJOR 90 | 24 | #define MTD_CHAR_MAJOR 90 |
25 | #define MTD_BLOCK_MAJOR 31 | 25 | #define MTD_BLOCK_MAJOR 31 |
26 | #define MAX_MTD_DEVICES 16 | 26 | #define MAX_MTD_DEVICES 32 |
27 | 27 | ||
28 | #define MTD_ERASE_PENDING 0x01 | 28 | #define MTD_ERASE_PENDING 0x01 |
29 | #define MTD_ERASING 0x02 | 29 | #define MTD_ERASING 0x02 |
@@ -75,15 +75,12 @@ typedef enum { | |||
75 | * struct mtd_oob_ops - oob operation operands | 75 | * struct mtd_oob_ops - oob operation operands |
76 | * @mode: operation mode | 76 | * @mode: operation mode |
77 | * | 77 | * |
78 | * @len: number of bytes to write/read. When a data buffer is given | 78 | * @len: number of data bytes to write/read |
79 | * (datbuf != NULL) this is the number of data bytes. When | ||
80 | * no data buffer is available this is the number of oob bytes. | ||
81 | * | 79 | * |
82 | * @retlen: number of bytes written/read. When a data buffer is given | 80 | * @retlen: number of data bytes written/read |
83 | * (datbuf != NULL) this is the number of data bytes. When | ||
84 | * no data buffer is available this is the number of oob bytes. | ||
85 | * | 81 | * |
86 | * @ooblen: number of oob bytes per page | 82 | * @ooblen: number of oob bytes to write/read |
83 | * @oobretlen: number of oob bytes written/read | ||
87 | * @ooboffs: offset of oob data in the oob area (only relevant when | 84 | * @ooboffs: offset of oob data in the oob area (only relevant when |
88 | * mode = MTD_OOB_PLACE) | 85 | * mode = MTD_OOB_PLACE) |
89 | * @datbuf: data buffer - if NULL only oob data are read/written | 86 | * @datbuf: data buffer - if NULL only oob data are read/written |
@@ -94,6 +91,7 @@ struct mtd_oob_ops { | |||
94 | size_t len; | 91 | size_t len; |
95 | size_t retlen; | 92 | size_t retlen; |
96 | size_t ooblen; | 93 | size_t ooblen; |
94 | size_t oobretlen; | ||
97 | uint32_t ooboffs; | 95 | uint32_t ooboffs; |
98 | uint8_t *datbuf; | 96 | uint8_t *datbuf; |
99 | uint8_t *oobbuf; | 97 | uint8_t *oobbuf; |
@@ -202,11 +200,20 @@ struct mtd_info { | |||
202 | 200 | ||
203 | /* ECC status information */ | 201 | /* ECC status information */ |
204 | struct mtd_ecc_stats ecc_stats; | 202 | struct mtd_ecc_stats ecc_stats; |
203 | /* Subpage shift (NAND) */ | ||
204 | int subpage_sft; | ||
205 | 205 | ||
206 | void *priv; | 206 | void *priv; |
207 | 207 | ||
208 | struct module *owner; | 208 | struct module *owner; |
209 | int usecount; | 209 | int usecount; |
210 | |||
211 | /* If the driver is something smart, like UBI, it may need to maintain | ||
212 | * its own reference counting. The below functions are only for driver. | ||
213 | * The driver may register its callbacks. These callbacks are not | ||
214 | * supposed to be called by MTD users */ | ||
215 | int (*get_device) (struct mtd_info *mtd); | ||
216 | void (*put_device) (struct mtd_info *mtd); | ||
210 | }; | 217 | }; |
211 | 218 | ||
212 | 219 | ||
@@ -216,6 +223,7 @@ extern int add_mtd_device(struct mtd_info *mtd); | |||
216 | extern int del_mtd_device (struct mtd_info *mtd); | 223 | extern int del_mtd_device (struct mtd_info *mtd); |
217 | 224 | ||
218 | extern struct mtd_info *get_mtd_device(struct mtd_info *mtd, int num); | 225 | extern struct mtd_info *get_mtd_device(struct mtd_info *mtd, int num); |
226 | extern struct mtd_info *get_mtd_device_nm(const char *name); | ||
219 | 227 | ||
220 | extern void put_mtd_device(struct mtd_info *mtd); | 228 | extern void put_mtd_device(struct mtd_info *mtd); |
221 | 229 | ||