1*8d67ca89SAndroid Build Coastguard Worker /* 2*8d67ca89SAndroid Build Coastguard Worker * This file is auto-generated. Modifications will be lost. 3*8d67ca89SAndroid Build Coastguard Worker * 4*8d67ca89SAndroid Build Coastguard Worker * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/ 5*8d67ca89SAndroid Build Coastguard Worker * for more information. 6*8d67ca89SAndroid Build Coastguard Worker */ 7*8d67ca89SAndroid Build Coastguard Worker #ifndef __MTD_ABI_H__ 8*8d67ca89SAndroid Build Coastguard Worker #define __MTD_ABI_H__ 9*8d67ca89SAndroid Build Coastguard Worker #include <linux/types.h> 10*8d67ca89SAndroid Build Coastguard Worker struct erase_info_user { 11*8d67ca89SAndroid Build Coastguard Worker __u32 start; 12*8d67ca89SAndroid Build Coastguard Worker __u32 length; 13*8d67ca89SAndroid Build Coastguard Worker }; 14*8d67ca89SAndroid Build Coastguard Worker struct erase_info_user64 { 15*8d67ca89SAndroid Build Coastguard Worker __u64 start; 16*8d67ca89SAndroid Build Coastguard Worker __u64 length; 17*8d67ca89SAndroid Build Coastguard Worker }; 18*8d67ca89SAndroid Build Coastguard Worker struct mtd_oob_buf { 19*8d67ca89SAndroid Build Coastguard Worker __u32 start; 20*8d67ca89SAndroid Build Coastguard Worker __u32 length; 21*8d67ca89SAndroid Build Coastguard Worker unsigned char * ptr; 22*8d67ca89SAndroid Build Coastguard Worker }; 23*8d67ca89SAndroid Build Coastguard Worker struct mtd_oob_buf64 { 24*8d67ca89SAndroid Build Coastguard Worker __u64 start; 25*8d67ca89SAndroid Build Coastguard Worker __u32 pad; 26*8d67ca89SAndroid Build Coastguard Worker __u32 length; 27*8d67ca89SAndroid Build Coastguard Worker __u64 usr_ptr; 28*8d67ca89SAndroid Build Coastguard Worker }; 29*8d67ca89SAndroid Build Coastguard Worker enum { 30*8d67ca89SAndroid Build Coastguard Worker MTD_OPS_PLACE_OOB = 0, 31*8d67ca89SAndroid Build Coastguard Worker MTD_OPS_AUTO_OOB = 1, 32*8d67ca89SAndroid Build Coastguard Worker MTD_OPS_RAW = 2, 33*8d67ca89SAndroid Build Coastguard Worker }; 34*8d67ca89SAndroid Build Coastguard Worker struct mtd_write_req { 35*8d67ca89SAndroid Build Coastguard Worker __u64 start; 36*8d67ca89SAndroid Build Coastguard Worker __u64 len; 37*8d67ca89SAndroid Build Coastguard Worker __u64 ooblen; 38*8d67ca89SAndroid Build Coastguard Worker __u64 usr_data; 39*8d67ca89SAndroid Build Coastguard Worker __u64 usr_oob; 40*8d67ca89SAndroid Build Coastguard Worker __u8 mode; 41*8d67ca89SAndroid Build Coastguard Worker __u8 padding[7]; 42*8d67ca89SAndroid Build Coastguard Worker }; 43*8d67ca89SAndroid Build Coastguard Worker struct mtd_read_req_ecc_stats { 44*8d67ca89SAndroid Build Coastguard Worker __u32 uncorrectable_errors; 45*8d67ca89SAndroid Build Coastguard Worker __u32 corrected_bitflips; 46*8d67ca89SAndroid Build Coastguard Worker __u32 max_bitflips; 47*8d67ca89SAndroid Build Coastguard Worker }; 48*8d67ca89SAndroid Build Coastguard Worker struct mtd_read_req { 49*8d67ca89SAndroid Build Coastguard Worker __u64 start; 50*8d67ca89SAndroid Build Coastguard Worker __u64 len; 51*8d67ca89SAndroid Build Coastguard Worker __u64 ooblen; 52*8d67ca89SAndroid Build Coastguard Worker __u64 usr_data; 53*8d67ca89SAndroid Build Coastguard Worker __u64 usr_oob; 54*8d67ca89SAndroid Build Coastguard Worker __u8 mode; 55*8d67ca89SAndroid Build Coastguard Worker __u8 padding[7]; 56*8d67ca89SAndroid Build Coastguard Worker struct mtd_read_req_ecc_stats ecc_stats; 57*8d67ca89SAndroid Build Coastguard Worker }; 58*8d67ca89SAndroid Build Coastguard Worker #define MTD_ABSENT 0 59*8d67ca89SAndroid Build Coastguard Worker #define MTD_RAM 1 60*8d67ca89SAndroid Build Coastguard Worker #define MTD_ROM 2 61*8d67ca89SAndroid Build Coastguard Worker #define MTD_NORFLASH 3 62*8d67ca89SAndroid Build Coastguard Worker #define MTD_NANDFLASH 4 63*8d67ca89SAndroid Build Coastguard Worker #define MTD_DATAFLASH 6 64*8d67ca89SAndroid Build Coastguard Worker #define MTD_UBIVOLUME 7 65*8d67ca89SAndroid Build Coastguard Worker #define MTD_MLCNANDFLASH 8 66*8d67ca89SAndroid Build Coastguard Worker #define MTD_WRITEABLE 0x400 67*8d67ca89SAndroid Build Coastguard Worker #define MTD_BIT_WRITEABLE 0x800 68*8d67ca89SAndroid Build Coastguard Worker #define MTD_NO_ERASE 0x1000 69*8d67ca89SAndroid Build Coastguard Worker #define MTD_POWERUP_LOCK 0x2000 70*8d67ca89SAndroid Build Coastguard Worker #define MTD_SLC_ON_MLC_EMULATION 0x4000 71*8d67ca89SAndroid Build Coastguard Worker #define MTD_CAP_ROM 0 72*8d67ca89SAndroid Build Coastguard Worker #define MTD_CAP_RAM (MTD_WRITEABLE | MTD_BIT_WRITEABLE | MTD_NO_ERASE) 73*8d67ca89SAndroid Build Coastguard Worker #define MTD_CAP_NORFLASH (MTD_WRITEABLE | MTD_BIT_WRITEABLE) 74*8d67ca89SAndroid Build Coastguard Worker #define MTD_CAP_NANDFLASH (MTD_WRITEABLE) 75*8d67ca89SAndroid Build Coastguard Worker #define MTD_CAP_NVRAM (MTD_WRITEABLE | MTD_BIT_WRITEABLE | MTD_NO_ERASE) 76*8d67ca89SAndroid Build Coastguard Worker #define MTD_NANDECC_OFF 0 77*8d67ca89SAndroid Build Coastguard Worker #define MTD_NANDECC_PLACE 1 78*8d67ca89SAndroid Build Coastguard Worker #define MTD_NANDECC_AUTOPLACE 2 79*8d67ca89SAndroid Build Coastguard Worker #define MTD_NANDECC_PLACEONLY 3 80*8d67ca89SAndroid Build Coastguard Worker #define MTD_NANDECC_AUTOPL_USR 4 81*8d67ca89SAndroid Build Coastguard Worker #define MTD_OTP_OFF 0 82*8d67ca89SAndroid Build Coastguard Worker #define MTD_OTP_FACTORY 1 83*8d67ca89SAndroid Build Coastguard Worker #define MTD_OTP_USER 2 84*8d67ca89SAndroid Build Coastguard Worker struct mtd_info_user { 85*8d67ca89SAndroid Build Coastguard Worker __u8 type; 86*8d67ca89SAndroid Build Coastguard Worker __u32 flags; 87*8d67ca89SAndroid Build Coastguard Worker __u32 size; 88*8d67ca89SAndroid Build Coastguard Worker __u32 erasesize; 89*8d67ca89SAndroid Build Coastguard Worker __u32 writesize; 90*8d67ca89SAndroid Build Coastguard Worker __u32 oobsize; 91*8d67ca89SAndroid Build Coastguard Worker __u64 padding; 92*8d67ca89SAndroid Build Coastguard Worker }; 93*8d67ca89SAndroid Build Coastguard Worker struct region_info_user { 94*8d67ca89SAndroid Build Coastguard Worker __u32 offset; 95*8d67ca89SAndroid Build Coastguard Worker __u32 erasesize; 96*8d67ca89SAndroid Build Coastguard Worker __u32 numblocks; 97*8d67ca89SAndroid Build Coastguard Worker __u32 regionindex; 98*8d67ca89SAndroid Build Coastguard Worker }; 99*8d67ca89SAndroid Build Coastguard Worker struct otp_info { 100*8d67ca89SAndroid Build Coastguard Worker __u32 start; 101*8d67ca89SAndroid Build Coastguard Worker __u32 length; 102*8d67ca89SAndroid Build Coastguard Worker __u32 locked; 103*8d67ca89SAndroid Build Coastguard Worker }; 104*8d67ca89SAndroid Build Coastguard Worker #define MEMGETINFO _IOR('M', 1, struct mtd_info_user) 105*8d67ca89SAndroid Build Coastguard Worker #define MEMERASE _IOW('M', 2, struct erase_info_user) 106*8d67ca89SAndroid Build Coastguard Worker #define MEMWRITEOOB _IOWR('M', 3, struct mtd_oob_buf) 107*8d67ca89SAndroid Build Coastguard Worker #define MEMREADOOB _IOWR('M', 4, struct mtd_oob_buf) 108*8d67ca89SAndroid Build Coastguard Worker #define MEMLOCK _IOW('M', 5, struct erase_info_user) 109*8d67ca89SAndroid Build Coastguard Worker #define MEMUNLOCK _IOW('M', 6, struct erase_info_user) 110*8d67ca89SAndroid Build Coastguard Worker #define MEMGETREGIONCOUNT _IOR('M', 7, int) 111*8d67ca89SAndroid Build Coastguard Worker #define MEMGETREGIONINFO _IOWR('M', 8, struct region_info_user) 112*8d67ca89SAndroid Build Coastguard Worker #define MEMGETOOBSEL _IOR('M', 10, struct nand_oobinfo) 113*8d67ca89SAndroid Build Coastguard Worker #define MEMGETBADBLOCK _IOW('M', 11, __kernel_loff_t) 114*8d67ca89SAndroid Build Coastguard Worker #define MEMSETBADBLOCK _IOW('M', 12, __kernel_loff_t) 115*8d67ca89SAndroid Build Coastguard Worker #define OTPSELECT _IOR('M', 13, int) 116*8d67ca89SAndroid Build Coastguard Worker #define OTPGETREGIONCOUNT _IOW('M', 14, int) 117*8d67ca89SAndroid Build Coastguard Worker #define OTPGETREGIONINFO _IOW('M', 15, struct otp_info) 118*8d67ca89SAndroid Build Coastguard Worker #define OTPLOCK _IOR('M', 16, struct otp_info) 119*8d67ca89SAndroid Build Coastguard Worker #define ECCGETLAYOUT _IOR('M', 17, struct nand_ecclayout_user) 120*8d67ca89SAndroid Build Coastguard Worker #define ECCGETSTATS _IOR('M', 18, struct mtd_ecc_stats) 121*8d67ca89SAndroid Build Coastguard Worker #define MTDFILEMODE _IO('M', 19) 122*8d67ca89SAndroid Build Coastguard Worker #define MEMERASE64 _IOW('M', 20, struct erase_info_user64) 123*8d67ca89SAndroid Build Coastguard Worker #define MEMWRITEOOB64 _IOWR('M', 21, struct mtd_oob_buf64) 124*8d67ca89SAndroid Build Coastguard Worker #define MEMREADOOB64 _IOWR('M', 22, struct mtd_oob_buf64) 125*8d67ca89SAndroid Build Coastguard Worker #define MEMISLOCKED _IOR('M', 23, struct erase_info_user) 126*8d67ca89SAndroid Build Coastguard Worker #define MEMWRITE _IOWR('M', 24, struct mtd_write_req) 127*8d67ca89SAndroid Build Coastguard Worker #define OTPERASE _IOW('M', 25, struct otp_info) 128*8d67ca89SAndroid Build Coastguard Worker #define MEMREAD _IOWR('M', 26, struct mtd_read_req) 129*8d67ca89SAndroid Build Coastguard Worker struct nand_oobinfo { 130*8d67ca89SAndroid Build Coastguard Worker __u32 useecc; 131*8d67ca89SAndroid Build Coastguard Worker __u32 eccbytes; 132*8d67ca89SAndroid Build Coastguard Worker __u32 oobfree[8][2]; 133*8d67ca89SAndroid Build Coastguard Worker __u32 eccpos[32]; 134*8d67ca89SAndroid Build Coastguard Worker }; 135*8d67ca89SAndroid Build Coastguard Worker struct nand_oobfree { 136*8d67ca89SAndroid Build Coastguard Worker __u32 offset; 137*8d67ca89SAndroid Build Coastguard Worker __u32 length; 138*8d67ca89SAndroid Build Coastguard Worker }; 139*8d67ca89SAndroid Build Coastguard Worker #define MTD_MAX_OOBFREE_ENTRIES 8 140*8d67ca89SAndroid Build Coastguard Worker #define MTD_MAX_ECCPOS_ENTRIES 64 141*8d67ca89SAndroid Build Coastguard Worker struct nand_ecclayout_user { 142*8d67ca89SAndroid Build Coastguard Worker __u32 eccbytes; 143*8d67ca89SAndroid Build Coastguard Worker __u32 eccpos[MTD_MAX_ECCPOS_ENTRIES]; 144*8d67ca89SAndroid Build Coastguard Worker __u32 oobavail; 145*8d67ca89SAndroid Build Coastguard Worker struct nand_oobfree oobfree[MTD_MAX_OOBFREE_ENTRIES]; 146*8d67ca89SAndroid Build Coastguard Worker }; 147*8d67ca89SAndroid Build Coastguard Worker struct mtd_ecc_stats { 148*8d67ca89SAndroid Build Coastguard Worker __u32 corrected; 149*8d67ca89SAndroid Build Coastguard Worker __u32 failed; 150*8d67ca89SAndroid Build Coastguard Worker __u32 badblocks; 151*8d67ca89SAndroid Build Coastguard Worker __u32 bbtblocks; 152*8d67ca89SAndroid Build Coastguard Worker }; 153*8d67ca89SAndroid Build Coastguard Worker enum mtd_file_modes { 154*8d67ca89SAndroid Build Coastguard Worker MTD_FILE_MODE_NORMAL = MTD_OTP_OFF, 155*8d67ca89SAndroid Build Coastguard Worker MTD_FILE_MODE_OTP_FACTORY = MTD_OTP_FACTORY, 156*8d67ca89SAndroid Build Coastguard Worker MTD_FILE_MODE_OTP_USER = MTD_OTP_USER, 157*8d67ca89SAndroid Build Coastguard Worker MTD_FILE_MODE_RAW, 158*8d67ca89SAndroid Build Coastguard Worker }; 159*8d67ca89SAndroid Build Coastguard Worker #endif 160