#ifndef H_PM_MTD_H #define H_PM_MTD_H struct mtd_info_user { xmedia_u8 type; xmedia_u32 flags; xmedia_u32 size; xmedia_u32 erasesize; xmedia_u32 writesize; xmedia_u32 oobsize; xmedia_u32 ecctype; xmedia_u32 eccsize; }; #define MEMGETINFO _IOR('M', 1, struct mtd_info_user) struct erase_info_user64 { xmedia_u64 start; xmedia_u64 length; }; #define MEMERASE64 _IOW('M', 20, struct erase_info_user64) struct mtd_oob_buf { xmedia_u32 start; xmedia_u32 length; xmedia_u8 *ptr; }; #define MEMREADOOB _IOWR('M', 4, struct mtd_oob_buf) /** * struct mtd_write_req - data structure for requesting a write operation * * @start: start address * @len: length of data buffer * @ooblen: length of OOB buffer * @usr_data: user-provided data buffer * @usr_oob: user-provided OOB buffer * @mode: MTD mode (see "MTD operation modes") * @padding: reserved, must be set to 0 * * This structure supports ioctl(MEMWRITE) operations, allowing data and/or OOB * writes in various modes. To write to OOB-only, set @usr_data == NULL, and to * write data-only, set @usr_oob == NULL. However, setting both @usr_data and * @usr_oob to NULL is not allowed. */ struct mtd_write_req { xmedia_u64 start; xmedia_u64 len; xmedia_u64 ooblen; xmedia_u64 usr_data; xmedia_u64 usr_oob; xmedia_u8 mode; xmedia_u8 padding[7]; }; #define MEMWRITE _IOWR('M', 24, struct mtd_write_req) #define MEMGETBADBLOCK _IOW('M', 11, __kernel_loff_t) #define MEMSETBADBLOCK _IOW('M', 12, __kernel_loff_t) #define MEMFORCEERASEBLOCK _IOW('M', 128, __kernel_loff_t) #endif