• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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