Linux kernel & device driver programming

Cross-Referenced Linux and Device Driver Code

[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ]
Version: [ 2.6.11.8 ] [ 2.6.25 ] [ 2.6.25.8 ] [ 2.6.31.13 ] Architecture: [ i386 ]
  1 /*
  2  * $Id: mtd-abi.h,v 1.7 2004/11/23 15:37:32 gleixner Exp $
  3  *
  4  * Portions of MTD ABI definition which are shared by kernel and user space 
  5  */
  6 
  7 #ifndef __MTD_ABI_H__
  8 #define __MTD_ABI_H__
  9 
 10 #ifndef __KERNEL__ /* Urgh. The whole point of splitting this out into
 11                     separate files was to avoid #ifdef __KERNEL__ */
 12 #define __user
 13 #endif
 14 
 15 struct erase_info_user {
 16         uint32_t start;
 17         uint32_t length;
 18 };
 19 
 20 struct mtd_oob_buf {
 21         uint32_t start;
 22         uint32_t length;
 23         unsigned char __user *ptr;
 24 };
 25 
 26 #define MTD_ABSENT              0
 27 #define MTD_RAM                 1
 28 #define MTD_ROM                 2
 29 #define MTD_NORFLASH            3
 30 #define MTD_NANDFLASH           4
 31 #define MTD_PEROM               5
 32 #define MTD_OTHER               14
 33 #define MTD_UNKNOWN             15
 34 
 35 #define MTD_CLEAR_BITS          1       // Bits can be cleared (flash)
 36 #define MTD_SET_BITS            2       // Bits can be set
 37 #define MTD_ERASEABLE           4       // Has an erase function
 38 #define MTD_WRITEB_WRITEABLE    8       // Direct IO is possible
 39 #define MTD_VOLATILE            16      // Set for RAMs
 40 #define MTD_XIP                 32      // eXecute-In-Place possible
 41 #define MTD_OOB                 64      // Out-of-band data (NAND flash)
 42 #define MTD_ECC                 128     // Device capable of automatic ECC
 43 #define MTD_NO_VIRTBLOCKS       256     // Virtual blocks not allowed
 44 
 45 // Some common devices / combinations of capabilities
 46 #define MTD_CAP_ROM             0
 47 #define MTD_CAP_RAM             (MTD_CLEAR_BITS|MTD_SET_BITS|MTD_WRITEB_WRITEABLE)
 48 #define MTD_CAP_NORFLASH        (MTD_CLEAR_BITS|MTD_ERASEABLE)
 49 #define MTD_CAP_NANDFLASH       (MTD_CLEAR_BITS|MTD_ERASEABLE|MTD_OOB)
 50 #define MTD_WRITEABLE           (MTD_CLEAR_BITS|MTD_SET_BITS)
 51 
 52 
 53 // Types of automatic ECC/Checksum available
 54 #define MTD_ECC_NONE            0       // No automatic ECC available
 55 #define MTD_ECC_RS_DiskOnChip   1       // Automatic ECC on DiskOnChip
 56 #define MTD_ECC_SW              2       // SW ECC for Toshiba & Samsung devices
 57 
 58 /* ECC byte placement */
 59 #define MTD_NANDECC_OFF         0       // Switch off ECC (Not recommended)
 60 #define MTD_NANDECC_PLACE       1       // Use the given placement in the structure (YAFFS1 legacy mode)
 61 #define MTD_NANDECC_AUTOPLACE   2       // Use the default placement scheme
 62 #define MTD_NANDECC_PLACEONLY   3       // Use the given placement in the structure (Do not store ecc result on read)
 63 
 64 struct mtd_info_user {
 65         uint8_t type;
 66         uint32_t flags;
 67         uint32_t size;   // Total size of the MTD
 68         uint32_t erasesize;
 69         uint32_t oobblock;  // Size of OOB blocks (e.g. 512)
 70         uint32_t oobsize;   // Amount of OOB data per block (e.g. 16)
 71         uint32_t ecctype;
 72         uint32_t eccsize;
 73 };
 74 
 75 struct region_info_user {
 76         uint32_t offset;                /* At which this region starts, 
 77                                          * from the beginning of the MTD */
 78         uint32_t erasesize;             /* For this region */
 79         uint32_t numblocks;             /* Number of blocks in this region */
 80         uint32_t regionindex;
 81 };
 82 
 83 #define MEMGETINFO              _IOR('M', 1, struct mtd_info_user)
 84 #define MEMERASE                _IOW('M', 2, struct erase_info_user)
 85 #define MEMWRITEOOB             _IOWR('M', 3, struct mtd_oob_buf)
 86 #define MEMREADOOB              _IOWR('M', 4, struct mtd_oob_buf)
 87 #define MEMLOCK                 _IOW('M', 5, struct erase_info_user)
 88 #define MEMUNLOCK               _IOW('M', 6, struct erase_info_user)
 89 #define MEMGETREGIONCOUNT       _IOR('M', 7, int)
 90 #define MEMGETREGIONINFO        _IOWR('M', 8, struct region_info_user)
 91 #define MEMSETOOBSEL            _IOW('M', 9, struct nand_oobinfo)
 92 #define MEMGETOOBSEL            _IOR('M', 10, struct nand_oobinfo)
 93 #define MEMGETBADBLOCK          _IOW('M', 11, loff_t)
 94 #define MEMSETBADBLOCK          _IOW('M', 12, loff_t)
 95 
 96 struct nand_oobinfo {
 97         uint32_t useecc;
 98         uint32_t eccbytes;
 99         uint32_t oobfree[8][2];
100         uint32_t eccpos[32];
101 };
102 
103 #endif /* __MTD_ABI_H__ */
104 
  This page was automatically generated by the LXR engine.