mmc-omap: add support for 16-bit and 32-bit registers
[safe/jmp/linux-2.6] / include / mtd / mtd-abi.h
index 31329fc..be51ae2 100644 (file)
@@ -1,39 +1,47 @@
 /*
- * $Id: mtd-abi.h,v 1.13 2005/11/07 11:14:56 gleixner Exp $
- *
  * Portions of MTD ABI definition which are shared by kernel and user space
  */
 
 #ifndef __MTD_ABI_H__
 #define __MTD_ABI_H__
 
-#ifndef __KERNEL__ 
-/* Urgh. The whole point of splitting this out into
-   separate files was to avoid #ifdef __KERNEL__ */
-#define __user
-#endif
+#include <linux/types.h>
 
 struct erase_info_user {
-       uint32_t start;
-       uint32_t length;
+       __u32 start;
+       __u32 length;
+};
+
+struct erase_info_user64 {
+       __u64 start;
+       __u64 length;
 };
 
 struct mtd_oob_buf {
-       uint32_t start;
-       uint32_t length;
+       __u32 start;
+       __u32 length;
        unsigned char __user *ptr;
 };
 
+struct mtd_oob_buf64 {
+       __u64 start;
+       __u32 pad;
+       __u32 length;
+       __u64 usr_ptr;
+};
+
 #define MTD_ABSENT             0
 #define MTD_RAM                        1
 #define MTD_ROM                        2
 #define MTD_NORFLASH           3
 #define MTD_NANDFLASH          4
 #define MTD_DATAFLASH          6
+#define MTD_UBIVOLUME          7
 
 #define MTD_WRITEABLE          0x400   /* Device is writeable */
 #define MTD_BIT_WRITEABLE      0x800   /* Single bits can be flipped */
 #define MTD_NO_ERASE           0x1000  /* No erase necessary */
+#define MTD_POWERUP_LOCK       0x2000  /* Always locked after reset */
 
 // Some common devices / combinations of capabilities
 #define MTD_CAP_ROM            0
@@ -41,12 +49,6 @@ struct mtd_oob_buf {
 #define MTD_CAP_NORFLASH       (MTD_WRITEABLE | MTD_BIT_WRITEABLE)
 #define MTD_CAP_NANDFLASH      (MTD_WRITEABLE)
 
-
-// Types of automatic ECC/Checksum available
-#define MTD_ECC_NONE           0       // No automatic ECC available
-#define MTD_ECC_RS_DiskOnChip  1       // Automatic ECC on DiskOnChip
-#define MTD_ECC_SW             2       // SW ECC for Toshiba & Samsung devices
-
 /* ECC byte placement */
 #define MTD_NANDECC_OFF                0       // Switch off ECC (Not recommended)
 #define MTD_NANDECC_PLACE      1       // Use the given placement in the structure (YAFFS1 legacy mode)
@@ -60,28 +62,30 @@ struct mtd_oob_buf {
 #define MTD_OTP_USER           2
 
 struct mtd_info_user {
-       uint8_t type;
-       uint32_t flags;
-       uint32_t size;   // Total size of the MTD
-       uint32_t erasesize;
-       uint32_t writesize;
-       uint32_t oobsize;   // Amount of OOB data per block (e.g. 16)
-       uint32_t ecctype;
-       uint32_t eccsize;
+       __u8 type;
+       __u32 flags;
+       __u32 size;      // Total size of the MTD
+       __u32 erasesize;
+       __u32 writesize;
+       __u32 oobsize;   // Amount of OOB data per block (e.g. 16)
+       /* The below two fields are obsolete and broken, do not use them
+        * (TODO: remove at some point) */
+       __u32 ecctype;
+       __u32 eccsize;
 };
 
 struct region_info_user {
-       uint32_t offset;                /* At which this region starts,
+       __u32 offset;           /* At which this region starts,
                                         * from the beginning of the MTD */
-       uint32_t erasesize;             /* For this region */
-       uint32_t numblocks;             /* Number of blocks in this region */
-       uint32_t regionindex;
+       __u32 erasesize;                /* For this region */
+       __u32 numblocks;                /* Number of blocks in this region */
+       __u32 regionindex;
 };
 
 struct otp_info {
-       uint32_t start;
-       uint32_t length;
-       uint32_t locked;
+       __u32 start;
+       __u32 length;
+       __u32 locked;
 };
 
 #define MEMGETINFO             _IOR('M', 1, struct mtd_info_user)
@@ -94,8 +98,8 @@ struct otp_info {
 #define MEMGETREGIONINFO       _IOWR('M', 8, struct region_info_user)
 #define MEMSETOOBSEL           _IOW('M', 9, struct nand_oobinfo)
 #define MEMGETOOBSEL           _IOR('M', 10, struct nand_oobinfo)
-#define MEMGETBADBLOCK         _IOW('M', 11, loff_t)
-#define MEMSETBADBLOCK         _IOW('M', 12, loff_t)
+#define MEMGETBADBLOCK         _IOW('M', 11, __kernel_loff_t)
+#define MEMSETBADBLOCK         _IOW('M', 12, __kernel_loff_t)
 #define OTPSELECT              _IOR('M', 13, int)
 #define OTPGETREGIONCOUNT      _IOW('M', 14, int)
 #define OTPGETREGIONINFO       _IOW('M', 15, struct otp_info)
@@ -103,21 +107,24 @@ struct otp_info {
 #define ECCGETLAYOUT           _IOR('M', 17, struct nand_ecclayout)
 #define ECCGETSTATS            _IOR('M', 18, struct mtd_ecc_stats)
 #define MTDFILEMODE            _IO('M', 19)
+#define MEMERASE64             _IOW('M', 20, struct erase_info_user64)
+#define MEMWRITEOOB64          _IOWR('M', 21, struct mtd_oob_buf64)
+#define MEMREADOOB64           _IOWR('M', 22, struct mtd_oob_buf64)
 
 /*
  * Obsolete legacy interface. Keep it in order not to break userspace
  * interfaces
  */
 struct nand_oobinfo {
-       uint32_t useecc;
-       uint32_t eccbytes;
-       uint32_t oobfree[8][2];
-       uint32_t eccpos[32];
+       __u32 useecc;
+       __u32 eccbytes;
+       __u32 oobfree[8][2];
+       __u32 eccpos[32];
 };
 
 struct nand_oobfree {
-       uint32_t offset;
-       uint32_t length;
+       __u32 offset;
+       __u32 length;
 };
 
 #define MTD_MAX_OOBFREE_ENTRIES        8
@@ -126,14 +133,14 @@ struct nand_oobfree {
  * diagnosis and to allow creation of raw images
  */
 struct nand_ecclayout {
-       uint32_t eccbytes;
-       uint32_t eccpos[64];
-       uint32_t oobavail;
+       __u32 eccbytes;
+       __u32 eccpos[64];
+       __u32 oobavail;
        struct nand_oobfree oobfree[MTD_MAX_OOBFREE_ENTRIES];
 };
 
 /**
- * struct mtd_ecc_stats - error correction status
+ * struct mtd_ecc_stats - error correction stats
  *
  * @corrected: number of corrected bits
  * @failed:    number of uncorrectable errors
@@ -141,10 +148,10 @@ struct nand_ecclayout {
  * @bbtblocks: number of blocks reserved for bad block tables
  */
 struct mtd_ecc_stats {
-       uint32_t corrected;
-       uint32_t failed;
-       uint32_t badblocks;
-       uint32_t bbtblocks;
+       __u32 corrected;
+       __u32 failed;
+       __u32 badblocks;
+       __u32 bbtblocks;
 };
 
 /*