1 /****************************************************************************
2 ****************************************************************************
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.
10 ****************************************************************************
11 ****************************************************************************/
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>
22 #define cfi_interleave_is_1(cfi) (0)
24 #define cfi_interleave_is_2(cfi) (0)
26 #define cfi_interleave_is_4(cfi) (0)
28 #define cfi_interleave_is_8(cfi) (0)
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)
39 } __attribute__((packed));
41 struct cfi_pri_intelext {
45 uint32_t FeatureSupport;
46 uint8_t SuspendCmdSupport;
47 uint16_t BlkStatusRegMask;
50 uint8_t NumProtectionFields;
52 uint8_t FactProtRegSize;
53 uint8_t UserProtRegSize;
55 } __attribute__((packed));
57 struct cfi_intelext_otpinfo {
60 uint8_t FactProtRegSize;
62 uint8_t UserProtRegSize;
63 } __attribute__((packed));
65 struct cfi_intelext_blockinfo {
66 uint16_t NumIdentBlocks;
68 uint16_t MinBlockEraseCycles;
71 } __attribute__((packed));
73 struct cfi_intelext_regioninfo {
74 uint16_t NumIdentPartitions;
76 uint8_t NumOpAllowedSimProgMode;
77 uint8_t NumOpAllowedSimEraMode;
78 uint8_t NumBlockTypes;
79 struct cfi_intelext_blockinfo BlockTypes[1];
80 } __attribute__((packed));
82 struct cfi_intelext_programming_regioninfo {
87 uint8_t ControlInvalid;
89 } __attribute__((packed));
91 struct cfi_pri_amdstd {
95 uint8_t SiliconRevision;
98 uint8_t TmpBlkUnprotect;
99 uint8_t BlkProtUnprot;
100 uint8_t SimultaneousOps;
106 } __attribute__((packed));
108 struct cfi_pri_atmel {
110 uint8_t MajorVersion;
111 uint8_t MinorVersion;
116 } __attribute__((packed));
118 struct cfi_pri_query {
120 uint32_t ProtField[1];
121 } __attribute__((packed));
123 struct cfi_bri_query {
124 uint8_t PageModeReadCap;
126 uint32_t ConfField[1];
127 } __attribute__((packed));
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
143 #define CFI_MODE_CFI 1
144 #define CFI_MODE_JEDEC 0
154 struct mtd_info *(*cmdset_setup)(struct map_info *);
155 struct cfi_ident *cfiq;
158 unsigned long chipshift;
160 struct flchip chips[0];
163 #if BITS_PER_LONG >= 64
165 #define CMD(x) cfi_build_cmd((x), map, cfi)
166 #if BITS_PER_LONG >= 64
168 #define MERGESTATUS(x) cfi_merge_status((x), map, cfi)
173 void (*fixup)(struct mtd_info *mtd, void* param);
177 #define CFI_MFR_ANY 0xffff
178 #define CFI_ID_ANY 0xffff
180 #define CFI_MFR_AMD 0x0001
181 #define CFI_MFR_ATMEL 0x001F
182 #define CFI_MFR_ST 0x0020
184 typedef int (*varsize_frob_t)(struct map_info *map, struct flchip *chip,
185 unsigned long adr, int len, void *thunk);