~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/include/uapi/mtd/mtd-abi.h

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /include/uapi/mtd/mtd-abi.h (Version linux-6.12-rc7) and /include/uapi/mtd/mtd-abi.h (Version linux-2.4.37.11)


  1 /* SPDX-License-Identifier: GPL-2.0+ WITH Linu      1 
  2 /*                                                
  3  * Copyright © 1999-2010 David Woodhouse <dwm    
  4  *                                                
  5  * This program is free software; you can redi    
  6  * it under the terms of the GNU General Publi    
  7  * the Free Software Foundation; either versio    
  8  * (at your option) any later version.            
  9  *                                                
 10  * This program is distributed in the hope tha    
 11  * but WITHOUT ANY WARRANTY; without even the     
 12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR    
 13  * GNU General Public License for more details    
 14  *                                                
 15  * You should have received a copy of the GNU     
 16  * along with this program; if not, write to t    
 17  * Foundation, Inc., 51 Franklin St, Fifth Flo    
 18  *                                                
 19  */                                               
 20                                                   
 21 #ifndef __MTD_ABI_H__                             
 22 #define __MTD_ABI_H__                             
 23                                                   
 24 #include <linux/types.h>                          
 25                                                   
 26 struct erase_info_user {                          
 27         __u32 start;                              
 28         __u32 length;                             
 29 };                                                
 30                                                   
 31 struct erase_info_user64 {                        
 32         __u64 start;                              
 33         __u64 length;                             
 34 };                                                
 35                                                   
 36 struct mtd_oob_buf {                              
 37         __u32 start;                              
 38         __u32 length;                             
 39         unsigned char __user *ptr;                
 40 };                                                
 41                                                   
 42 struct mtd_oob_buf64 {                            
 43         __u64 start;                              
 44         __u32 pad;                                
 45         __u32 length;                             
 46         __u64 usr_ptr;                            
 47 };                                                
 48                                                   
 49 /**                                               
 50  * MTD operation modes                            
 51  *                                                
 52  * @MTD_OPS_PLACE_OOB:  OOB data are placed at    
 53  * @MTD_OPS_AUTO_OOB:   OOB data are automatic    
 54  *                      which are defined by t    
 55  * @MTD_OPS_RAW:        data are transferred a    
 56  *                      this mode implies %MTD    
 57  *                                                
 58  * These modes can be passed to ioctl(MEMWRITE    
 59  * also used internally. See notes on "MTD fil    
 60  * %MTD_OPS_RAW vs. %MTD_FILE_MODE_RAW.           
 61  */                                               
 62 enum {                                            
 63         MTD_OPS_PLACE_OOB = 0,                    
 64         MTD_OPS_AUTO_OOB = 1,                     
 65         MTD_OPS_RAW = 2,                          
 66 };                                                
 67                                                   
 68 /**                                               
 69  * struct mtd_write_req - data structure for r    
 70  *                                                
 71  * @start:      start address                     
 72  * @len:        length of data buffer (only lo    
 73  * @ooblen:     length of OOB buffer (only low    
 74  * @usr_data:   user-provided data buffer         
 75  * @usr_oob:    user-provided OOB buffer          
 76  * @mode:       MTD mode (see "MTD operation m    
 77  * @padding:    reserved, must be set to 0        
 78  *                                                
 79  * This structure supports ioctl(MEMWRITE) ope    
 80  * writes in various modes. To write to OOB-on    
 81  * write data-only, set @usr_oob == NULL. Howe    
 82  * @usr_oob to NULL is not allowed.               
 83  */                                               
 84 struct mtd_write_req {                            
 85         __u64 start;                              
 86         __u64 len;                                
 87         __u64 ooblen;                             
 88         __u64 usr_data;                           
 89         __u64 usr_oob;                            
 90         __u8 mode;                                
 91         __u8 padding[7];                          
 92 };                                                
 93                                                   
 94 /**                                               
 95  * struct mtd_read_req_ecc_stats - ECC statist    
 96  *                                                
 97  * @uncorrectable_errors: the number of uncorr    
 98  *                        during the read oper    
 99  * @corrected_bitflips: the number of bitflips    
100  *                      operation                 
101  * @max_bitflips: the maximum number of bitfli    
102  *                step for the data read durin    
103  *                can be used to decide whethe    
104  *                region of the MTD device sho    
105  *                avoid data loss.                
106  */                                               
107 struct mtd_read_req_ecc_stats {                   
108         __u32 uncorrectable_errors;               
109         __u32 corrected_bitflips;                 
110         __u32 max_bitflips;                       
111 };                                                
112                                                   
113 /**                                               
114  * struct mtd_read_req - data structure for re    
115  *                                                
116  * @start:      start address                     
117  * @len:        length of data buffer (only lo    
118  * @ooblen:     length of OOB buffer (only low    
119  * @usr_data:   user-provided data buffer         
120  * @usr_oob:    user-provided OOB buffer          
121  * @mode:       MTD mode (see "MTD operation m    
122  * @padding:    reserved, must be set to 0        
123  * @ecc_stats:  ECC statistics for the read op    
124  *                                                
125  * This structure supports ioctl(MEMREAD) oper    
126  * reads in various modes. To read from OOB-on    
127  * read data-only, set @usr_oob == NULL. Howev    
128  * @usr_oob to NULL is not allowed.               
129  */                                               
130 struct mtd_read_req {                             
131         __u64 start;                              
132         __u64 len;                                
133         __u64 ooblen;                             
134         __u64 usr_data;                           
135         __u64 usr_oob;                            
136         __u8 mode;                                
137         __u8 padding[7];                          
138         struct mtd_read_req_ecc_stats ecc_stat    
139 };                                                
140                                                   
141 #define MTD_ABSENT              0                 
142 #define MTD_RAM                 1                 
143 #define MTD_ROM                 2                 
144 #define MTD_NORFLASH            3                 
145 #define MTD_NANDFLASH           4       /* SLC    
146 #define MTD_DATAFLASH           6                 
147 #define MTD_UBIVOLUME           7                 
148 #define MTD_MLCNANDFLASH        8       /* MLC    
149                                                   
150 #define MTD_WRITEABLE           0x400   /* Dev    
151 #define MTD_BIT_WRITEABLE       0x800   /* Sin    
152 #define MTD_NO_ERASE            0x1000  /* No     
153 #define MTD_POWERUP_LOCK        0x2000  /* Alw    
154 #define MTD_SLC_ON_MLC_EMULATION 0x4000 /* Emu    
155                                                   
156 /* Some common devices / combinations of capab    
157 #define MTD_CAP_ROM             0                 
158 #define MTD_CAP_RAM             (MTD_WRITEABLE    
159 #define MTD_CAP_NORFLASH        (MTD_WRITEABLE    
160 #define MTD_CAP_NANDFLASH       (MTD_WRITEABLE    
161 #define MTD_CAP_NVRAM           (MTD_WRITEABLE    
162                                                   
163 /* Obsolete ECC byte placement modes (used wit    
164 #define MTD_NANDECC_OFF         0       /* Swi    
165 #define MTD_NANDECC_PLACE       1       /* Use    
166 #define MTD_NANDECC_AUTOPLACE   2       /* Use    
167 #define MTD_NANDECC_PLACEONLY   3       /* Use    
168 #define MTD_NANDECC_AUTOPL_USR  4       /* Use    
169                                                   
170 /* OTP mode selection */                          
171 #define MTD_OTP_OFF             0                 
172 #define MTD_OTP_FACTORY         1                 
173 #define MTD_OTP_USER            2                 
174                                                   
175 struct mtd_info_user {                            
176         __u8 type;                                
177         __u32 flags;                              
178         __u32 size;     /* Total size of the M    
179         __u32 erasesize;                          
180         __u32 writesize;                          
181         __u32 oobsize;  /* Amount of OOB data     
182         __u64 padding;  /* Old obsolete field;    
183 };                                                
184                                                   
185 struct region_info_user {                         
186         __u32 offset;           /* At which th    
187                                  * from the be    
188         __u32 erasesize;        /* For this re    
189         __u32 numblocks;        /* Number of b    
190         __u32 regionindex;                        
191 };                                                
192                                                   
193 struct otp_info {                                 
194         __u32 start;                              
195         __u32 length;                             
196         __u32 locked;                             
197 };                                                
198                                                   
199 /*                                                
200  * Note, the following ioctl existed in the pa    
201  * #define MEMSETOOBSEL           _IOW('M', 9,    
202  * Try to avoid adding a new ioctl with the sa    
203  */                                               
204                                                   
205 /* Get basic MTD characteristics info (better     
206 #define MEMGETINFO              _IOR('M', 1, s    
207 /* Erase segment of MTD */                        
208 #define MEMERASE                _IOW('M', 2, s    
209 /* Write out-of-band data from MTD */             
210 #define MEMWRITEOOB             _IOWR('M', 3,     
211 /* Read out-of-band data from MTD */              
212 #define MEMREADOOB              _IOWR('M', 4,     
213 /* Lock a chip (for MTD that supports it) */      
214 #define MEMLOCK                 _IOW('M', 5, s    
215 /* Unlock a chip (for MTD that supports it) */    
216 #define MEMUNLOCK               _IOW('M', 6, s    
217 /* Get the number of different erase regions *    
218 #define MEMGETREGIONCOUNT       _IOR('M', 7, i    
219 /* Get information about the erase region for     
220 #define MEMGETREGIONINFO        _IOWR('M', 8,     
221 /* Get info about OOB modes (e.g., RAW, PLACE,    
222 #define MEMGETOOBSEL            _IOR('M', 10,     
223 /* Check if an eraseblock is bad */               
224 #define MEMGETBADBLOCK          _IOW('M', 11,     
225 /* Mark an eraseblock as bad */                   
226 #define MEMSETBADBLOCK          _IOW('M', 12,     
227 /* Set OTP (One-Time Programmable) mode (facto    
228 #define OTPSELECT               _IOR('M', 13,     
229 /* Get number of OTP (One-Time Programmable) r    
230 #define OTPGETREGIONCOUNT       _IOW('M', 14,     
231 /* Get all OTP (One-Time Programmable) info ab    
232 #define OTPGETREGIONINFO        _IOW('M', 15,     
233 /* Lock a given range of user data (must be in    
234 #define OTPLOCK                 _IOR('M', 16,     
235 /* Get ECC layout (deprecated) */                 
236 #define ECCGETLAYOUT            _IOR('M', 17,     
237 /* Get statistics about corrected/uncorrected     
238 #define ECCGETSTATS             _IOR('M', 18,     
239 /* Set MTD mode on a per-file-descriptor basis    
240 #define MTDFILEMODE             _IO('M', 19)      
241 /* Erase segment of MTD (supports 64-bit addre    
242 #define MEMERASE64              _IOW('M', 20,     
243 /* Write data to OOB (64-bit version) */          
244 #define MEMWRITEOOB64           _IOWR('M', 21,    
245 /* Read data from OOB (64-bit version) */         
246 #define MEMREADOOB64            _IOWR('M', 22,    
247 /* Check if chip is locked (for MTD that suppo    
248 #define MEMISLOCKED             _IOR('M', 23,     
249 /*                                                
250  * Most generic write interface; can write in-    
251  * modes (see "struct mtd_write_req"). This io    
252  * without OOB, e.g., NOR flash.                  
253  */                                               
254 #define MEMWRITE                _IOWR('M', 24,    
255 /* Erase a given range of user data (must be i    
256 #define OTPERASE                _IOW('M', 25,     
257 /*                                                
258  * Most generic read interface; can read in-ba    
259  * modes (see "struct mtd_read_req"). This ioc    
260  * without OOB, e.g., NOR flash.                  
261  */                                               
262 #define MEMREAD                 _IOWR('M', 26,    
263                                                   
264 /*                                                
265  * Obsolete legacy interface. Keep it in order    
266  * interfaces                                     
267  */                                               
268 struct nand_oobinfo {                             
269         __u32 useecc;                             
270         __u32 eccbytes;                           
271         __u32 oobfree[8][2];                      
272         __u32 eccpos[32];                         
273 };                                                
274                                                   
275 struct nand_oobfree {                             
276         __u32 offset;                             
277         __u32 length;                             
278 };                                                
279                                                   
280 #define MTD_MAX_OOBFREE_ENTRIES 8                 
281 #define MTD_MAX_ECCPOS_ENTRIES  64                
282 /*                                                
283  * OBSOLETE: ECC layout control structure. Exp    
284  * ECCGETLAYOUT for backwards compatbility and    
285  * complete set of ECC information. The ioctl     
286  * structure to retain binary compatibility wi    
287  * ioctl. Note that the "MTD_MAX_..._ENTRIES"     
288  * the user struct, not the MAX size of the in    
289  */                                               
290 struct nand_ecclayout_user {                      
291         __u32 eccbytes;                           
292         __u32 eccpos[MTD_MAX_ECCPOS_ENTRIES];     
293         __u32 oobavail;                           
294         struct nand_oobfree oobfree[MTD_MAX_OO    
295 };                                                
296                                                   
297 /**                                               
298  * struct mtd_ecc_stats - error correction sta    
299  *                                                
300  * @corrected:  number of corrected bits          
301  * @failed:     number of uncorrectable errors    
302  * @badblocks:  number of bad blocks in this p    
303  * @bbtblocks:  number of blocks reserved for     
304  */                                               
305 struct mtd_ecc_stats {                            
306         __u32 corrected;                          
307         __u32 failed;                             
308         __u32 badblocks;                          
309         __u32 bbtblocks;                          
310 };                                                
311                                                   
312 /*                                                
313  * MTD file modes - for read/write access to M    
314  *                                                
315  * @MTD_FILE_MODE_NORMAL:       OTP disabled,     
316  * @MTD_FILE_MODE_OTP_FACTORY:  OTP enabled in    
317  * @MTD_FILE_MODE_OTP_USER:     OTP enabled in    
318  * @MTD_FILE_MODE_RAW:          OTP disabled,     
319  *                                                
320  * These modes can be set via ioctl(MTDFILEMOD    
321  * separately for each open file descriptor.      
322  *                                                
323  * Note: %MTD_FILE_MODE_RAW provides the same     
324  * raw access to the flash, without error corr    
325  * Wherever possible, the MTD_OPS_* mode will     
326  * (e.g., when using ioctl(MEMWRITE) or ioctl(    
327  * MTD_FILE_MODE is used out of necessity (e.g    
328  * ioctl(MEMWRITEOOB64)).                         
329  */                                               
330 enum mtd_file_modes {                             
331         MTD_FILE_MODE_NORMAL = MTD_OTP_OFF,       
332         MTD_FILE_MODE_OTP_FACTORY = MTD_OTP_FA    
333         MTD_FILE_MODE_OTP_USER = MTD_OTP_USER,    
334         MTD_FILE_MODE_RAW,                        
335 };                                                
336                                                   
337 static inline int mtd_type_is_nand_user(const     
338 {                                                 
339         return mtd->type == MTD_NANDFLASH || m    
340 }                                                 
341                                                   
342 #endif /* __MTD_ABI_H__ */                        
343                                                   

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php