1 /* ---------------------------------------------------------------------------- 2 * Copyright (c) Huawei Technologies Co., Ltd. 2013-2019. All rights reserved. 3 * Description: MTD ABI HEAD FILE 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright 9 * notice,this list of conditions and the following disclaimer. 10 * 2. Redistributions in binary form must reproduce the above copyright 11 * notice,this list of conditions and the following disclaimer in the 12 * documentation and/or other materials provided with the distribution. 13 * 3. Neither the name of the copyright holder nor the names of its 14 * contributors may be used to endorse or promote products derived from 15 * this software without specific prior written permission. 16 * 17 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 21 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 * POSSIBILITY OF SUCH DAMAGE. 28 * --------------------------------------------------------------------------- */ 29 30 #ifndef _HW_MTD_ABI_H_ 31 #define _HW_MTD_ABI_H_ 32 #include <linux/types.h> 33 #include "linux/kernel.h" 34 #include "linux/ioctl.h" 35 36 typedef __signed__ char __s8; 37 typedef unsigned char __u8; 38 typedef __signed__ short __s16; 39 typedef unsigned short __u16; 40 typedef __signed__ int __s32; 41 typedef unsigned int __u32; 42 typedef __signed__ long long __s64; 43 typedef unsigned long long __u64; 44 typedef long long __kernel_loff_t; 45 46 struct erase_info_user { 47 __u32 start; 48 __u32 length; 49 }; 50 struct erase_info_user64 { 51 __u64 start; 52 __u64 length; 53 }; 54 55 #define MTD_NORFLASH 3 56 #define MTD_NANDFLASH 4 57 #define MTD_WRITEABLE 0x400 58 #define MTD_BIT_WRITEABLE 0x800 59 #define MTD_CAP_NORFLASH (MTD_WRITEABLE | MTD_BIT_WRITEABLE) 60 #define MTD_CAP_NANDFLASH (MTD_WRITEABLE) 61 62 struct mtd_info_user { 63 __u8 type; 64 __u32 flags; 65 __u32 size; 66 __u32 erasesize; 67 __u32 writesize; 68 __u32 oobsize; 69 __u64 padding; 70 }; 71 72 #define MEMGETINFO _IOR('M', 1, struct mtd_info_user) 73 #define MEMERASE _IOW('M', 2, struct erase_info_user) 74 #define MEMGETBADBLOCK _IOW('M', 11, __kernel_loff_t) 75 #define MEMSETBADBLOCK _IOW('M', 12, __kernel_loff_t) 76 #define MEMERASE64 _IOW('M', 20, struct erase_info_user64) 77 78 #endif 79