diff options
author | Linus Torvalds <torvalds@g5.osdl.org> | 2006-06-20 17:50:31 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-06-20 17:50:31 -0400 |
commit | be967b7e2f7747a5ebf2a07ee627d9338491e784 (patch) | |
tree | f42b82601209a52b8ee478e36d8b21543ab03060 /include/mtd | |
parent | eef11427edcb821b63920219f89379fab84198b9 (diff) | |
parent | 7bc3312bef4d6f220812500c0de7868fb7625a41 (diff) |
Merge git://git.infradead.org/mtd-2.6
* git://git.infradead.org/mtd-2.6: (199 commits)
[MTD] NAND: Fix breakage all over the place
[PATCH] NAND: fix remaining OOB length calculation
[MTD] NAND Fixup NDFC merge brokeness
[MTD NAND] S3C2410 driver cleanup
[MTD NAND] s3c24x0 board: Fix clock handling, ensure proper initialisation.
[JFFS2] Check CRC32 on dirent and data nodes each time they're read
[JFFS2] When retiring nextblock, allocate a node_ref for the wasted space
[JFFS2] Mark XATTR support as experimental, for now
[JFFS2] Don't trust node headers before the CRC is checked.
[MTD] Restore MTD_ROM and MTD_RAM types
[MTD] assume mtd->writesize is 1 for NOR flashes
[MTD NAND] Fix s3c2410 NAND driver so it at least _looks_ like it compiles
[MTD] Prepare physmap for 64-bit-resources
[JFFS2] Fix more breakage caused by janitorial meddling.
[JFFS2] Remove stray __exit from jffs2_compressors_exit()
[MTD] Allow alternate JFFS2 mount variant for root filesystem.
[MTD] Disconnect struct mtd_info from ABI
[MTD] replace MTD_RAM with MTD_GENERIC_TYPE
[MTD] replace MTD_ROM with MTD_GENERIC_TYPE
[MTD] remove a forgotten MTD_XIP
...
Diffstat (limited to 'include/mtd')
-rw-r--r-- | include/mtd/mtd-abi.h | 90 | ||||
-rw-r--r-- | include/mtd/mtd-user.h | 1 |
2 files changed, 65 insertions, 26 deletions
diff --git a/include/mtd/mtd-abi.h b/include/mtd/mtd-abi.h index b5994ea56a5a..ee2afbaefe1b 100644 --- a/include/mtd/mtd-abi.h +++ b/include/mtd/mtd-abi.h | |||
@@ -28,28 +28,17 @@ struct mtd_oob_buf { | |||
28 | #define MTD_ROM 2 | 28 | #define MTD_ROM 2 |
29 | #define MTD_NORFLASH 3 | 29 | #define MTD_NORFLASH 3 |
30 | #define MTD_NANDFLASH 4 | 30 | #define MTD_NANDFLASH 4 |
31 | #define MTD_PEROM 5 | ||
32 | #define MTD_DATAFLASH 6 | 31 | #define MTD_DATAFLASH 6 |
33 | #define MTD_OTHER 14 | 32 | |
34 | #define MTD_UNKNOWN 15 | 33 | #define MTD_WRITEABLE 0x400 /* Device is writeable */ |
35 | 34 | #define MTD_BIT_WRITEABLE 0x800 /* Single bits can be flipped */ | |
36 | #define MTD_CLEAR_BITS 1 // Bits can be cleared (flash) | 35 | #define MTD_NO_ERASE 0x1000 /* No erase necessary */ |
37 | #define MTD_SET_BITS 2 // Bits can be set | ||
38 | #define MTD_ERASEABLE 4 // Has an erase function | ||
39 | #define MTD_WRITEB_WRITEABLE 8 // Direct IO is possible | ||
40 | #define MTD_VOLATILE 16 // Set for RAMs | ||
41 | #define MTD_XIP 32 // eXecute-In-Place possible | ||
42 | #define MTD_OOB 64 // Out-of-band data (NAND flash) | ||
43 | #define MTD_ECC 128 // Device capable of automatic ECC | ||
44 | #define MTD_NO_VIRTBLOCKS 256 // Virtual blocks not allowed | ||
45 | #define MTD_PROGRAM_REGIONS 512 // Configurable Programming Regions | ||
46 | 36 | ||
47 | // Some common devices / combinations of capabilities | 37 | // Some common devices / combinations of capabilities |
48 | #define MTD_CAP_ROM 0 | 38 | #define MTD_CAP_ROM 0 |
49 | #define MTD_CAP_RAM (MTD_CLEAR_BITS|MTD_SET_BITS|MTD_WRITEB_WRITEABLE) | 39 | #define MTD_CAP_RAM (MTD_WRITEABLE | MTD_BIT_WRITEABLE | MTD_NO_ERASE) |
50 | #define MTD_CAP_NORFLASH (MTD_CLEAR_BITS|MTD_ERASEABLE) | 40 | #define MTD_CAP_NORFLASH (MTD_WRITEABLE | MTD_BIT_WRITEABLE) |
51 | #define MTD_CAP_NANDFLASH (MTD_CLEAR_BITS|MTD_ERASEABLE|MTD_OOB) | 41 | #define MTD_CAP_NANDFLASH (MTD_WRITEABLE) |
52 | #define MTD_WRITEABLE (MTD_CLEAR_BITS|MTD_SET_BITS) | ||
53 | 42 | ||
54 | 43 | ||
55 | // Types of automatic ECC/Checksum available | 44 | // Types of automatic ECC/Checksum available |
@@ -74,7 +63,7 @@ struct mtd_info_user { | |||
74 | uint32_t flags; | 63 | uint32_t flags; |
75 | uint32_t size; // Total size of the MTD | 64 | uint32_t size; // Total size of the MTD |
76 | uint32_t erasesize; | 65 | uint32_t erasesize; |
77 | uint32_t oobblock; // Size of OOB blocks (e.g. 512) | 66 | uint32_t writesize; |
78 | uint32_t oobsize; // Amount of OOB data per block (e.g. 16) | 67 | uint32_t oobsize; // Amount of OOB data per block (e.g. 16) |
79 | uint32_t ecctype; | 68 | uint32_t ecctype; |
80 | uint32_t eccsize; | 69 | uint32_t eccsize; |
@@ -94,12 +83,12 @@ struct otp_info { | |||
94 | uint32_t locked; | 83 | uint32_t locked; |
95 | }; | 84 | }; |
96 | 85 | ||
97 | #define MEMGETINFO _IOR('M', 1, struct mtd_info_user) | 86 | #define MEMGETINFO _IOR('M', 1, struct mtd_info_user) |
98 | #define MEMERASE _IOW('M', 2, struct erase_info_user) | 87 | #define MEMERASE _IOW('M', 2, struct erase_info_user) |
99 | #define MEMWRITEOOB _IOWR('M', 3, struct mtd_oob_buf) | 88 | #define MEMWRITEOOB _IOWR('M', 3, struct mtd_oob_buf) |
100 | #define MEMREADOOB _IOWR('M', 4, struct mtd_oob_buf) | 89 | #define MEMREADOOB _IOWR('M', 4, struct mtd_oob_buf) |
101 | #define MEMLOCK _IOW('M', 5, struct erase_info_user) | 90 | #define MEMLOCK _IOW('M', 5, struct erase_info_user) |
102 | #define MEMUNLOCK _IOW('M', 6, struct erase_info_user) | 91 | #define MEMUNLOCK _IOW('M', 6, struct erase_info_user) |
103 | #define MEMGETREGIONCOUNT _IOR('M', 7, int) | 92 | #define MEMGETREGIONCOUNT _IOR('M', 7, int) |
104 | #define MEMGETREGIONINFO _IOWR('M', 8, struct region_info_user) | 93 | #define MEMGETREGIONINFO _IOWR('M', 8, struct region_info_user) |
105 | #define MEMSETOOBSEL _IOW('M', 9, struct nand_oobinfo) | 94 | #define MEMSETOOBSEL _IOW('M', 9, struct nand_oobinfo) |
@@ -109,8 +98,15 @@ struct otp_info { | |||
109 | #define OTPSELECT _IOR('M', 13, int) | 98 | #define OTPSELECT _IOR('M', 13, int) |
110 | #define OTPGETREGIONCOUNT _IOW('M', 14, int) | 99 | #define OTPGETREGIONCOUNT _IOW('M', 14, int) |
111 | #define OTPGETREGIONINFO _IOW('M', 15, struct otp_info) | 100 | #define OTPGETREGIONINFO _IOW('M', 15, struct otp_info) |
112 | #define OTPLOCK _IOR('M', 16, struct otp_info) | 101 | #define OTPLOCK _IOR('M', 16, struct otp_info) |
102 | #define ECCGETLAYOUT _IOR('M', 17, struct nand_ecclayout) | ||
103 | #define ECCGETSTATS _IOR('M', 18, struct mtd_ecc_stats) | ||
104 | #define MTDFILEMODE _IO('M', 19) | ||
113 | 105 | ||
106 | /* | ||
107 | * Obsolete legacy interface. Keep it in order not to break userspace | ||
108 | * interfaces | ||
109 | */ | ||
114 | struct nand_oobinfo { | 110 | struct nand_oobinfo { |
115 | uint32_t useecc; | 111 | uint32_t useecc; |
116 | uint32_t eccbytes; | 112 | uint32_t eccbytes; |
@@ -118,4 +114,46 @@ struct nand_oobinfo { | |||
118 | uint32_t eccpos[32]; | 114 | uint32_t eccpos[32]; |
119 | }; | 115 | }; |
120 | 116 | ||
117 | struct nand_oobfree { | ||
118 | uint32_t offset; | ||
119 | uint32_t length; | ||
120 | }; | ||
121 | |||
122 | #define MTD_MAX_OOBFREE_ENTRIES 8 | ||
123 | /* | ||
124 | * ECC layout control structure. Exported to userspace for | ||
125 | * diagnosis and to allow creation of raw images | ||
126 | */ | ||
127 | struct nand_ecclayout { | ||
128 | uint32_t eccbytes; | ||
129 | uint32_t eccpos[64]; | ||
130 | uint32_t oobavail; | ||
131 | struct nand_oobfree oobfree[MTD_MAX_OOBFREE_ENTRIES]; | ||
132 | }; | ||
133 | |||
134 | /** | ||
135 | * struct mtd_ecc_stats - error correction status | ||
136 | * | ||
137 | * @corrected: number of corrected bits | ||
138 | * @failed: number of uncorrectable errors | ||
139 | * @badblocks: number of bad blocks in this partition | ||
140 | * @bbtblocks: number of blocks reserved for bad block tables | ||
141 | */ | ||
142 | struct mtd_ecc_stats { | ||
143 | uint32_t corrected; | ||
144 | uint32_t failed; | ||
145 | uint32_t badblocks; | ||
146 | uint32_t bbtblocks; | ||
147 | }; | ||
148 | |||
149 | /* | ||
150 | * Read/write file modes for access to MTD | ||
151 | */ | ||
152 | enum mtd_file_modes { | ||
153 | MTD_MODE_NORMAL = MTD_OTP_OFF, | ||
154 | MTD_MODE_OTP_FACTORY = MTD_OTP_FACTORY, | ||
155 | MTD_MODE_OTP_USER = MTD_OTP_USER, | ||
156 | MTD_MODE_RAW, | ||
157 | }; | ||
158 | |||
121 | #endif /* __MTD_ABI_H__ */ | 159 | #endif /* __MTD_ABI_H__ */ |
diff --git a/include/mtd/mtd-user.h b/include/mtd/mtd-user.h index 1c13fc7161fe..713f34d3e62e 100644 --- a/include/mtd/mtd-user.h +++ b/include/mtd/mtd-user.h | |||
@@ -16,5 +16,6 @@ typedef struct mtd_info_user mtd_info_t; | |||
16 | typedef struct erase_info_user erase_info_t; | 16 | typedef struct erase_info_user erase_info_t; |
17 | typedef struct region_info_user region_info_t; | 17 | typedef struct region_info_user region_info_t; |
18 | typedef struct nand_oobinfo nand_oobinfo_t; | 18 | typedef struct nand_oobinfo nand_oobinfo_t; |
19 | typedef struct nand_ecclayout nand_ecclayout_t; | ||
19 | 20 | ||
20 | #endif /* __MTD_USER_H__ */ | 21 | #endif /* __MTD_USER_H__ */ |