blob: 944bbfa0abf44dec192a9d1a3e9353bbb8267118 [file] [log] [blame]
The Android Open Source Project1dc9e472009-03-03 19:28:35 -08001/****************************************************************************
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 ***
Ben Cheng654325d2012-03-07 21:13:49 -080010 *** To edit the content of this header, modify the corresponding
11 *** source file (e.g. under external/kernel-headers/original/) then
12 *** run bionic/libc/kernel/tools/update_all.py
13 ***
14 *** Any manual change here will be lost the next time this script will
15 *** be run. You've been warned!
16 ***
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080017 ****************************************************************************
18 ****************************************************************************/
19#ifndef __MTD_CFI_H__
20#define __MTD_CFI_H__
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080021#include <linux/delay.h>
22#include <linux/types.h>
Ben Cheng654325d2012-03-07 21:13:49 -080023/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080024#include <linux/interrupt.h>
25#include <linux/mtd/flashchip.h>
26#include <linux/mtd/map.h>
27#include <linux/mtd/cfi_endian.h>
Ben Cheng654325d2012-03-07 21:13:49 -080028/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080029#define cfi_interleave_is_1(cfi) (0)
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080030#define cfi_interleave_is_2(cfi) (0)
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080031#define cfi_interleave_is_4(cfi) (0)
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080032#define cfi_interleave_is_8(cfi) (0)
Ben Cheng654325d2012-03-07 21:13:49 -080033/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080034#define CFI_DEVICETYPE_X8 (8 / 8)
35#define CFI_DEVICETYPE_X16 (16 / 8)
36#define CFI_DEVICETYPE_X32 (32 / 8)
37#define CFI_DEVICETYPE_X64 (64 / 8)
Ben Cheng654325d2012-03-07 21:13:49 -080038/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
39struct cfi_ident {
40 uint8_t qry[3];
41 uint16_t P_ID;
42 uint16_t P_ADR;
43/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
44 uint16_t A_ID;
45 uint16_t A_ADR;
46 uint8_t VccMin;
47 uint8_t VccMax;
48/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
49 uint8_t VppMin;
50 uint8_t VppMax;
51 uint8_t WordWriteTimeoutTyp;
52 uint8_t BufWriteTimeoutTyp;
53/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
54 uint8_t BlockEraseTimeoutTyp;
55 uint8_t ChipEraseTimeoutTyp;
56 uint8_t WordWriteTimeoutMax;
57 uint8_t BufWriteTimeoutMax;
58/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
59 uint8_t BlockEraseTimeoutMax;
60 uint8_t ChipEraseTimeoutMax;
61 uint8_t DevSize;
62 uint16_t InterfaceDesc;
63/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
64 uint16_t MaxBufWriteSize;
65 uint8_t NumEraseRegions;
66 uint32_t EraseRegionInfo[0];
67} __attribute__((packed));
68/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080069struct cfi_extquery {
70 uint8_t pri[3];
71 uint8_t MajorVersion;
72 uint8_t MinorVersion;
Ben Cheng654325d2012-03-07 21:13:49 -080073/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080074} __attribute__((packed));
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080075struct cfi_pri_intelext {
76 uint8_t pri[3];
77 uint8_t MajorVersion;
Ben Cheng654325d2012-03-07 21:13:49 -080078/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080079 uint8_t MinorVersion;
80 uint32_t FeatureSupport;
81 uint8_t SuspendCmdSupport;
82 uint16_t BlkStatusRegMask;
Ben Cheng654325d2012-03-07 21:13:49 -080083/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080084 uint8_t VccOptimal;
85 uint8_t VppOptimal;
86 uint8_t NumProtectionFields;
87 uint16_t ProtRegAddr;
Ben Cheng654325d2012-03-07 21:13:49 -080088/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080089 uint8_t FactProtRegSize;
90 uint8_t UserProtRegSize;
91 uint8_t extra[0];
92} __attribute__((packed));
Ben Cheng654325d2012-03-07 21:13:49 -080093/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080094struct cfi_intelext_otpinfo {
95 uint32_t ProtRegAddr;
96 uint16_t FactGroups;
97 uint8_t FactProtRegSize;
Ben Cheng654325d2012-03-07 21:13:49 -080098/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080099 uint16_t UserGroups;
100 uint8_t UserProtRegSize;
101} __attribute__((packed));
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800102struct cfi_intelext_blockinfo {
Ben Cheng654325d2012-03-07 21:13:49 -0800103/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800104 uint16_t NumIdentBlocks;
105 uint16_t BlockSize;
106 uint16_t MinBlockEraseCycles;
107 uint8_t BitsPerCell;
Ben Cheng654325d2012-03-07 21:13:49 -0800108/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800109 uint8_t BlockCap;
110} __attribute__((packed));
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800111struct cfi_intelext_regioninfo {
112 uint16_t NumIdentPartitions;
Ben Cheng654325d2012-03-07 21:13:49 -0800113/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800114 uint8_t NumOpAllowed;
115 uint8_t NumOpAllowedSimProgMode;
116 uint8_t NumOpAllowedSimEraMode;
117 uint8_t NumBlockTypes;
Ben Cheng654325d2012-03-07 21:13:49 -0800118/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800119 struct cfi_intelext_blockinfo BlockTypes[1];
120} __attribute__((packed));
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800121struct cfi_intelext_programming_regioninfo {
122 uint8_t ProgRegShift;
Ben Cheng654325d2012-03-07 21:13:49 -0800123/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800124 uint8_t Reserved1;
125 uint8_t ControlValid;
126 uint8_t Reserved2;
127 uint8_t ControlInvalid;
Ben Cheng654325d2012-03-07 21:13:49 -0800128/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800129 uint8_t Reserved3;
130} __attribute__((packed));
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800131struct cfi_pri_amdstd {
132 uint8_t pri[3];
Ben Cheng654325d2012-03-07 21:13:49 -0800133/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800134 uint8_t MajorVersion;
135 uint8_t MinorVersion;
136 uint8_t SiliconRevision;
137 uint8_t EraseSuspend;
Ben Cheng654325d2012-03-07 21:13:49 -0800138/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800139 uint8_t BlkProt;
140 uint8_t TmpBlkUnprotect;
141 uint8_t BlkProtUnprot;
142 uint8_t SimultaneousOps;
Ben Cheng654325d2012-03-07 21:13:49 -0800143/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800144 uint8_t BurstMode;
145 uint8_t PageMode;
146 uint8_t VppMin;
147 uint8_t VppMax;
Ben Cheng654325d2012-03-07 21:13:49 -0800148/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800149 uint8_t TopBottom;
150} __attribute__((packed));
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800151struct cfi_pri_atmel {
152 uint8_t pri[3];
Ben Cheng654325d2012-03-07 21:13:49 -0800153/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800154 uint8_t MajorVersion;
155 uint8_t MinorVersion;
156 uint8_t Features;
157 uint8_t BottomBoot;
Ben Cheng654325d2012-03-07 21:13:49 -0800158/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800159 uint8_t BurstMode;
160 uint8_t PageMode;
161} __attribute__((packed));
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800162struct cfi_pri_query {
Ben Cheng654325d2012-03-07 21:13:49 -0800163/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800164 uint8_t NumFields;
165 uint32_t ProtField[1];
166} __attribute__((packed));
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800167struct cfi_bri_query {
Ben Cheng654325d2012-03-07 21:13:49 -0800168/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800169 uint8_t PageModeReadCap;
170 uint8_t NumFields;
171 uint32_t ConfField[1];
172} __attribute__((packed));
Ben Cheng654325d2012-03-07 21:13:49 -0800173/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800174#define P_ID_NONE 0x0000
175#define P_ID_INTEL_EXT 0x0001
176#define P_ID_AMD_STD 0x0002
177#define P_ID_INTEL_STD 0x0003
Ben Cheng654325d2012-03-07 21:13:49 -0800178/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800179#define P_ID_AMD_EXT 0x0004
180#define P_ID_WINBOND 0x0006
181#define P_ID_ST_ADV 0x0020
182#define P_ID_MITSUBISHI_STD 0x0100
Ben Cheng654325d2012-03-07 21:13:49 -0800183/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800184#define P_ID_MITSUBISHI_EXT 0x0101
185#define P_ID_SST_PAGE 0x0102
186#define P_ID_INTEL_PERFORMANCE 0x0200
187#define P_ID_INTEL_DATA 0x0210
Ben Cheng654325d2012-03-07 21:13:49 -0800188/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800189#define P_ID_RESERVED 0xffff
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800190#define CFI_MODE_CFI 1
191#define CFI_MODE_JEDEC 0
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800192struct cfi_private {
Ben Cheng654325d2012-03-07 21:13:49 -0800193/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800194 uint16_t cmdset;
195 void *cmdset_priv;
196 int interleave;
197 int device_type;
Ben Cheng654325d2012-03-07 21:13:49 -0800198/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800199 int cfi_mode;
200 int addr_unlock1;
201 int addr_unlock2;
202 struct mtd_info *(*cmdset_setup)(struct map_info *);
Ben Cheng654325d2012-03-07 21:13:49 -0800203/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800204 struct cfi_ident *cfiq;
205 int mfr, id;
206 int numchips;
207 unsigned long chipshift;
Ben Cheng654325d2012-03-07 21:13:49 -0800208/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800209 const char *im_name;
210 struct flchip chips[0];
211};
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800212#if BITS_PER_LONG >= 64
Ben Cheng654325d2012-03-07 21:13:49 -0800213/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800214#endif
215#define CMD(x) cfi_build_cmd((x), map, cfi)
216#if BITS_PER_LONG >= 64
217#endif
Ben Cheng654325d2012-03-07 21:13:49 -0800218/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800219#define MERGESTATUS(x) cfi_merge_status((x), map, cfi)
Ben Cheng654325d2012-03-07 21:13:49 -0800220struct cfi_extquery *cfi_read_pri(struct map_info *map, uint16_t adr, uint16_t size,
221 const char* name);
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800222struct cfi_fixup {
Ben Cheng654325d2012-03-07 21:13:49 -0800223/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800224 uint16_t mfr;
225 uint16_t id;
226 void (*fixup)(struct mtd_info *mtd, void* param);
227 void* param;
Ben Cheng654325d2012-03-07 21:13:49 -0800228/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800229};
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800230#define CFI_MFR_ANY 0xffff
231#define CFI_ID_ANY 0xffff
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800232#define CFI_MFR_AMD 0x0001
Ben Cheng654325d2012-03-07 21:13:49 -0800233/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800234#define CFI_MFR_ATMEL 0x001F
235#define CFI_MFR_ST 0x0020
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800236typedef int (*varsize_frob_t)(struct map_info *map, struct flchip *chip,
237 unsigned long adr, int len, void *thunk);
Ben Cheng654325d2012-03-07 21:13:49 -0800238/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800239#endif