diff options
author | Glenn Elliott <gelliott@cs.unc.edu> | 2012-03-04 19:47:13 -0500 |
---|---|---|
committer | Glenn Elliott <gelliott@cs.unc.edu> | 2012-03-04 19:47:13 -0500 |
commit | c71c03bda1e86c9d5198c5d83f712e695c4f2a1e (patch) | |
tree | ecb166cb3e2b7e2adb3b5e292245fefd23381ac8 /include/linux/mtd/mtd.h | |
parent | ea53c912f8a86a8567697115b6a0d8152beee5c8 (diff) | |
parent | 6a00f206debf8a5c8899055726ad127dbeeed098 (diff) |
Merge branch 'mpi-master' into wip-k-fmlpwip-k-fmlp
Conflicts:
litmus/sched_cedf.c
Diffstat (limited to 'include/linux/mtd/mtd.h')
-rw-r--r-- | include/linux/mtd/mtd.h | 43 |
1 files changed, 33 insertions, 10 deletions
diff --git a/include/linux/mtd/mtd.h b/include/linux/mtd/mtd.h index 8485e42a9b09..2541fb848daa 100644 --- a/include/linux/mtd/mtd.h +++ b/include/linux/mtd/mtd.h | |||
@@ -110,6 +110,21 @@ struct mtd_oob_ops { | |||
110 | uint8_t *oobbuf; | 110 | uint8_t *oobbuf; |
111 | }; | 111 | }; |
112 | 112 | ||
113 | #define MTD_MAX_OOBFREE_ENTRIES_LARGE 32 | ||
114 | #define MTD_MAX_ECCPOS_ENTRIES_LARGE 448 | ||
115 | /* | ||
116 | * Internal ECC layout control structure. For historical reasons, there is a | ||
117 | * similar, smaller struct nand_ecclayout_user (in mtd-abi.h) that is retained | ||
118 | * for export to user-space via the ECCGETLAYOUT ioctl. | ||
119 | * nand_ecclayout should be expandable in the future simply by the above macros. | ||
120 | */ | ||
121 | struct nand_ecclayout { | ||
122 | __u32 eccbytes; | ||
123 | __u32 eccpos[MTD_MAX_ECCPOS_ENTRIES_LARGE]; | ||
124 | __u32 oobavail; | ||
125 | struct nand_oobfree oobfree[MTD_MAX_OOBFREE_ENTRIES_LARGE]; | ||
126 | }; | ||
127 | |||
113 | struct mtd_info { | 128 | struct mtd_info { |
114 | u_char type; | 129 | u_char type; |
115 | uint32_t flags; | 130 | uint32_t flags; |
@@ -129,6 +144,17 @@ struct mtd_info { | |||
129 | */ | 144 | */ |
130 | uint32_t writesize; | 145 | uint32_t writesize; |
131 | 146 | ||
147 | /* | ||
148 | * Size of the write buffer used by the MTD. MTD devices having a write | ||
149 | * buffer can write multiple writesize chunks at a time. E.g. while | ||
150 | * writing 4 * writesize bytes to a device with 2 * writesize bytes | ||
151 | * buffer the MTD driver can (but doesn't have to) do 2 writesize | ||
152 | * operations, but not 4. Currently, all NANDs have writebufsize | ||
153 | * equivalent to writesize (NAND page size). Some NOR flashes do have | ||
154 | * writebufsize greater than writesize. | ||
155 | */ | ||
156 | uint32_t writebufsize; | ||
157 | |||
132 | uint32_t oobsize; // Amount of OOB data per block (e.g. 16) | 158 | uint32_t oobsize; // Amount of OOB data per block (e.g. 16) |
133 | uint32_t oobavail; // Available OOB bytes per block | 159 | uint32_t oobavail; // Available OOB bytes per block |
134 | 160 | ||
@@ -296,9 +322,12 @@ static inline uint32_t mtd_mod_by_ws(uint64_t sz, struct mtd_info *mtd) | |||
296 | 322 | ||
297 | /* Kernel-side ioctl definitions */ | 323 | /* Kernel-side ioctl definitions */ |
298 | 324 | ||
299 | extern int add_mtd_device(struct mtd_info *mtd); | 325 | struct mtd_partition; |
300 | extern int del_mtd_device (struct mtd_info *mtd); | ||
301 | 326 | ||
327 | extern int mtd_device_register(struct mtd_info *master, | ||
328 | const struct mtd_partition *parts, | ||
329 | int nr_parts); | ||
330 | extern int mtd_device_unregister(struct mtd_info *master); | ||
302 | extern struct mtd_info *get_mtd_device(struct mtd_info *mtd, int num); | 331 | extern struct mtd_info *get_mtd_device(struct mtd_info *mtd, int num); |
303 | extern int __get_mtd_device(struct mtd_info *mtd); | 332 | extern int __get_mtd_device(struct mtd_info *mtd); |
304 | extern void __put_mtd_device(struct mtd_info *mtd); | 333 | extern void __put_mtd_device(struct mtd_info *mtd); |
@@ -322,15 +351,9 @@ int default_mtd_writev(struct mtd_info *mtd, const struct kvec *vecs, | |||
322 | int default_mtd_readv(struct mtd_info *mtd, struct kvec *vecs, | 351 | int default_mtd_readv(struct mtd_info *mtd, struct kvec *vecs, |
323 | unsigned long count, loff_t from, size_t *retlen); | 352 | unsigned long count, loff_t from, size_t *retlen); |
324 | 353 | ||
325 | #ifdef CONFIG_MTD_PARTITIONS | 354 | void *mtd_kmalloc_up_to(const struct mtd_info *mtd, size_t *size); |
355 | |||
326 | void mtd_erase_callback(struct erase_info *instr); | 356 | void mtd_erase_callback(struct erase_info *instr); |
327 | #else | ||
328 | static inline void mtd_erase_callback(struct erase_info *instr) | ||
329 | { | ||
330 | if (instr->callback) | ||
331 | instr->callback(instr); | ||
332 | } | ||
333 | #endif | ||
334 | 357 | ||
335 | /* | 358 | /* |
336 | * Debugging macro and defines | 359 | * Debugging macro and defines |