OSDN Git Service

original
[gb-231r1-is01/Gingerbread_2.3.3_r1_IS01.git] / prebuilt / ndk / android-ndk-r4 / platforms / android-5 / arch-x86 / usr / include / linux / mtd / cfi.h
1 /****************************************************************************
2  ****************************************************************************
3  ***
4  ***   This header was automatically generated from a Linux kernel header
5  ***   of the same name, to make information necessary for userspace to
6  ***   call into the kernel available to libc.  It contains only constants,
7  ***   structures, and macros generated from the original header, and thus,
8  ***   contains no copyrightable information.
9  ***
10  ****************************************************************************
11  ****************************************************************************/
12 #ifndef __MTD_CFI_H__
13 #define __MTD_CFI_H__
14
15 #include <linux/delay.h>
16 #include <linux/types.h>
17 #include <linux/interrupt.h>
18 #include <linux/mtd/flashchip.h>
19 #include <linux/mtd/map.h>
20 #include <linux/mtd/cfi_endian.h>
21
22 #define cfi_interleave_is_1(cfi) (0)
23
24 #define cfi_interleave_is_2(cfi) (0)
25
26 #define cfi_interleave_is_4(cfi) (0)
27
28 #define cfi_interleave_is_8(cfi) (0)
29
30 #define CFI_DEVICETYPE_X8 (8 / 8)
31 #define CFI_DEVICETYPE_X16 (16 / 8)
32 #define CFI_DEVICETYPE_X32 (32 / 8)
33 #define CFI_DEVICETYPE_X64 (64 / 8)
34
35 struct cfi_extquery {
36  uint8_t pri[3];
37  uint8_t MajorVersion;
38  uint8_t MinorVersion;
39 } __attribute__((packed));
40
41 struct cfi_pri_intelext {
42  uint8_t pri[3];
43  uint8_t MajorVersion;
44  uint8_t MinorVersion;
45  uint32_t FeatureSupport;
46  uint8_t SuspendCmdSupport;
47  uint16_t BlkStatusRegMask;
48  uint8_t VccOptimal;
49  uint8_t VppOptimal;
50  uint8_t NumProtectionFields;
51  uint16_t ProtRegAddr;
52  uint8_t FactProtRegSize;
53  uint8_t UserProtRegSize;
54  uint8_t extra[0];
55 } __attribute__((packed));
56
57 struct cfi_intelext_otpinfo {
58  uint32_t ProtRegAddr;
59  uint16_t FactGroups;
60  uint8_t FactProtRegSize;
61  uint16_t UserGroups;
62  uint8_t UserProtRegSize;
63 } __attribute__((packed));
64
65 struct cfi_intelext_blockinfo {
66  uint16_t NumIdentBlocks;
67  uint16_t BlockSize;
68  uint16_t MinBlockEraseCycles;
69  uint8_t BitsPerCell;
70  uint8_t BlockCap;
71 } __attribute__((packed));
72
73 struct cfi_intelext_regioninfo {
74  uint16_t NumIdentPartitions;
75  uint8_t NumOpAllowed;
76  uint8_t NumOpAllowedSimProgMode;
77  uint8_t NumOpAllowedSimEraMode;
78  uint8_t NumBlockTypes;
79  struct cfi_intelext_blockinfo BlockTypes[1];
80 } __attribute__((packed));
81
82 struct cfi_intelext_programming_regioninfo {
83  uint8_t ProgRegShift;
84  uint8_t Reserved1;
85  uint8_t ControlValid;
86  uint8_t Reserved2;
87  uint8_t ControlInvalid;
88  uint8_t Reserved3;
89 } __attribute__((packed));
90
91 struct cfi_pri_amdstd {
92  uint8_t pri[3];
93  uint8_t MajorVersion;
94  uint8_t MinorVersion;
95  uint8_t SiliconRevision;
96  uint8_t EraseSuspend;
97  uint8_t BlkProt;
98  uint8_t TmpBlkUnprotect;
99  uint8_t BlkProtUnprot;
100  uint8_t SimultaneousOps;
101  uint8_t BurstMode;
102  uint8_t PageMode;
103  uint8_t VppMin;
104  uint8_t VppMax;
105  uint8_t TopBottom;
106 } __attribute__((packed));
107
108 struct cfi_pri_atmel {
109  uint8_t pri[3];
110  uint8_t MajorVersion;
111  uint8_t MinorVersion;
112  uint8_t Features;
113  uint8_t BottomBoot;
114  uint8_t BurstMode;
115  uint8_t PageMode;
116 } __attribute__((packed));
117
118 struct cfi_pri_query {
119  uint8_t NumFields;
120  uint32_t ProtField[1];
121 } __attribute__((packed));
122
123 struct cfi_bri_query {
124  uint8_t PageModeReadCap;
125  uint8_t NumFields;
126  uint32_t ConfField[1];
127 } __attribute__((packed));
128
129 #define P_ID_NONE 0x0000
130 #define P_ID_INTEL_EXT 0x0001
131 #define P_ID_AMD_STD 0x0002
132 #define P_ID_INTEL_STD 0x0003
133 #define P_ID_AMD_EXT 0x0004
134 #define P_ID_WINBOND 0x0006
135 #define P_ID_ST_ADV 0x0020
136 #define P_ID_MITSUBISHI_STD 0x0100
137 #define P_ID_MITSUBISHI_EXT 0x0101
138 #define P_ID_SST_PAGE 0x0102
139 #define P_ID_INTEL_PERFORMANCE 0x0200
140 #define P_ID_INTEL_DATA 0x0210
141 #define P_ID_RESERVED 0xffff
142
143 #define CFI_MODE_CFI 1
144 #define CFI_MODE_JEDEC 0
145
146 struct cfi_private {
147  uint16_t cmdset;
148  void *cmdset_priv;
149  int interleave;
150  int device_type;
151  int cfi_mode;
152  int addr_unlock1;
153  int addr_unlock2;
154  struct mtd_info *(*cmdset_setup)(struct map_info *);
155  struct cfi_ident *cfiq;
156  int mfr, id;
157  int numchips;
158  unsigned long chipshift;
159  const char *im_name;
160  struct flchip chips[0];
161 };
162
163 #if BITS_PER_LONG >= 64
164 #endif
165 #define CMD(x) cfi_build_cmd((x), map, cfi)
166 #if BITS_PER_LONG >= 64
167 #endif
168 #define MERGESTATUS(x) cfi_merge_status((x), map, cfi)
169
170 struct cfi_fixup {
171  uint16_t mfr;
172  uint16_t id;
173  void (*fixup)(struct mtd_info *mtd, void* param);
174  void* param;
175 };
176
177 #define CFI_MFR_ANY 0xffff
178 #define CFI_ID_ANY 0xffff
179
180 #define CFI_MFR_AMD 0x0001
181 #define CFI_MFR_ATMEL 0x001F
182 #define CFI_MFR_ST 0x0020  
183
184 typedef int (*varsize_frob_t)(struct map_info *map, struct flchip *chip,
185  unsigned long adr, int len, void *thunk);
186
187 #endif