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