]> git.proxmox.com Git - mirror_edk2.git/blob - Vlv2TbltDevicePkg/Include/Library/Fd.h
Vlv2TbltDevicePkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / Vlv2TbltDevicePkg / Include / Library / Fd.h
1 /*++
2
3 Copyright (c) 2004 - 2014, Intel Corporation. All rights reserved.<BR>
4
5 SPDX-License-Identifier: BSD-2-Clause-Patent
6
7
8
9
10
11 Module Name:
12
13 Fd.h
14
15 Abstract:
16
17 EFI Intel82802AB/82802AC Firmware Hub.
18
19
20 --*/
21
22
23 //
24 // Supported SPI devices
25 //
26
27 //
28 // MFG and Device code
29 //
30 #define SST_25LF040A 0x0044BF
31 #define SST_25LF040 0x0040BF
32 #define SST_25LF080A 0x0080BF
33 #define SST_25VF080B 0x008EBF
34 #define SST_25VF016B 0x0041BF
35 #define SST_25VF032B 0x004ABF
36
37 #define PMC_25LV040 0x007E9D
38
39 #define ATMEL_26DF041 0x00441F
40 #define Atmel_AT26F004 0x00041F
41 #define Atmel_AT26DF081A 0x01451F
42 #define Atmel_AT25DF161 0x02461F
43 #define Atmel_AT26DF161 0x00461F
44 #define Atmel_AT25DF641 0x00481F
45 #define Atmel_AT26DF321 0x00471F
46
47 #define Macronix_MX25L8005 0x1420C2
48 #define Macronix_MX25L1605A 0x1520C2
49 #define Macronix_MX25L3205D 0x1620C2
50
51 #define STMicro_M25PE80 0x148020
52
53 #define Winbond_W25X40 0x1330EF
54 #define Winbond_W25X80 0x1430EF
55 #define Winbond_W25Q80 0x1440EF
56
57 #define Winbond_W25X16 0x1540EF // W25Q16
58 #define Winbond_W25X32 0x1630EF
59
60 //
61 // NOTE: Assuming that 8Mbit flash will only contain a 4Mbit binary.
62 // Treating 4Mbit and 8Mbit devices the same.
63 //
64
65 //
66 // BIOS Base Address
67 //
68 #define BIOS_BASE_ADDRESS_4M 0xFFF80000
69 #define BIOS_BASE_ADDRESS_8M 0xFFF00000
70 #define BIOS_BASE_ADDRESS_16M 0xFFE00000
71
72 //
73 // block and sector sizes
74 //
75 #define SECTOR_SIZE_256BYTE 0x100 // 256byte page size
76 #define SECTOR_SIZE_4KB 0x1000 // 4kBytes sector size
77 #define BLOCK_SIZE_32KB 0x00008000 // 32Kbytes block size
78 #define MAX_FLASH_SIZE 0x00400000 // 32Mbit (Note that this can also be used for the 4Mbit & 8Mbit)
79
80 //
81 // Flash commands
82 //
83 #define SPI_SST25LF_COMMAND_WRITE 0x02
84 #define SPI_SST25LF_COMMAND_READ 0x03
85 #define SPI_SST25LF_COMMAND_ERASE 0x20
86 #define SPI_SST25LF_COMMAND_WRITE_DISABLE 0x04
87 #define SPI_SST25LF_COMMAND_READ_STATUS 0x05
88 #define SPI_SST25LF_COMMAND_WRITE_ENABLE 0x06
89 #define SPI_SST25LF_COMMAND_READ_ID 0xAB
90 #define SPI_SST25LF_COMMAND_WRITE_S_EN 0x50
91 #define SPI_SST25LF_COMMAND_WRITE_S 0x01
92
93 #define SPI_PMC25LV_COMMAND_WRITE 0x02
94 #define SPI_PMC25LV_COMMAND_READ 0x03
95 #define SPI_PMC25LV_COMMAND_ERASE 0xD7
96 #define SPI_PMC25LV_COMMAND_WRITE_DISABLE 0x04
97 #define SPI_PMC25LV_COMMAND_READ_STATUS 0x05
98 #define SPI_PMC25LV_COMMAND_WRITE_ENABLE 0x06
99 #define SPI_PMC25LV_COMMAND_READ_ID 0xAB
100 #define SPI_PMC25LV_COMMAND_WRITE_S_EN 0x06
101 #define SPI_PMC25LV_COMMAND_WRITE_S 0x01
102
103 #define SPI_AT26DF_COMMAND_WRITE 0x02
104 #define SPI_AT26DF_COMMAND_READ 0x03
105 #define SPI_AT26DF_COMMAND_ERASE 0x20
106 #define SPI_AT26DF_COMMAND_WRITE_DISABLE 0x00
107 #define SPI_AT26DF_COMMAND_READ_STATUS 0x05
108 #define SPI_AT26DF_COMMAND_WRITE_ENABLE 0x00
109 #define SPI_AT26DF_COMMAND_READ_ID 0x9F
110 #define SPI_AT26DF_COMMAND_WRITE_S_EN 0x00
111 #define SPI_AT26DF_COMMAND_WRITE_S 0x00
112
113 #define SPI_AT26F_COMMAND_WRITE 0x02
114 #define SPI_AT26F_COMMAND_READ 0x03
115 #define SPI_AT26F_COMMAND_ERASE 0x20
116 #define SPI_AT26F_COMMAND_WRITE_DISABLE 0x04
117 #define SPI_AT26F_COMMAND_READ_STATUS 0x05
118 #define SPI_AT26F_COMMAND_WRITE_ENABLE 0x06
119 #define SPI_AT26F_COMMAND_JEDEC_ID 0x9F
120 #define SPI_AT26F_COMMAND_WRITE_S_EN 0x00
121 #define SPI_AT26F_COMMAND_WRITE_S 0x01
122 #define SPI_AT26F_COMMAND_WRITE_UNPROTECT 0x39
123
124 #define SPI_SST25VF_COMMAND_WRITE 0x02
125 #define SPI_SST25VF_COMMAND_READ 0x03
126 #define SPI_SST25VF_COMMAND_ERASE 0x20
127 #define SPI_SST25VF_COMMAND_WRITE_DISABLE 0x04
128 #define SPI_SST25VF_COMMAND_READ_STATUS 0x05
129 #define SPI_SST25VF_COMMAND_WRITE_ENABLE 0x06
130 #define SPI_SST25VF_COMMAND_READ_ID 0xAB
131 #define SPI_SST25VF_COMMAND_JEDEC_ID 0x9F
132 #define SPI_SST25VF_COMMAND_WRITE_S_EN 0x50
133 #define SPI_SST25VF_COMMAND_WRITE_S 0x01
134
135 #define SPI_STM25PE_COMMAND_WRITE 0x02
136 #define SPI_STM25PE_COMMAND_READ 0x03
137 #define SPI_STM25PE_COMMAND_ERASE 0xDB
138 #define SPI_STM25PE_COMMAND_WRITE_DISABLE 0x04
139 #define SPI_STM25PE_COMMAND_READ_STATUS 0x05
140 #define SPI_STM25PE_COMMAND_WRITE_ENABLE 0x06
141 #define SPI_STM25PE_COMMAND_JEDEC_ID 0x9F
142
143 #define SPI_WinbondW25X_COMMAND_WRITE_S 0x01
144 #define SPI_WinbondW25X_COMMAND_WRITE 0x02
145 #define SPI_WinbondW25X_COMMAND_READ 0x03
146 #define SPI_WinbondW25X_COMMAND_READ_STATUS 0x05
147 #define SPI_WinbondW25X_COMMAND_ERASE_S 0x20
148 #define SPI_WinbondW25X_COMMAND_WRITE_ENABLE 0x06
149 #define SPI_WinbondW25X_COMMAND_JEDEC_ID 0x9F
150
151 //
152 // SPI default opcode slots
153 //
154 #define SPI_OPCODE_WRITE_INDEX 0
155 #define SPI_OPCODE_READ_INDEX 1
156 #define SPI_OPCODE_ERASE_INDEX 2
157 #define SPI_OPCODE_READ_S_INDEX 3
158 #define SPI_OPCODE_READ_ID_INDEX 4
159 #define SPI_OPCODE_WRITE_S_INDEX 6
160 #define SPI_OPCODE_WRITE_UNPROTECT_INDEX 7
161
162 #define SPI_PREFIX_WRITE_S_EN 1
163 #define SPI_PREFIX_WRITE_EN 0
164
165 //
166 // Atmel AT26F00x
167 //
168 #define B_AT26F_STS_REG_SPRL 0x80
169 #define B_AT26F_STS_REG_SWP 0x0C
170
171 //
172 // Block lock bit definitions:
173 //
174 #define READ_LOCK 0x04
175 #define LOCK_DOWN 0x02
176 #define WRITE_LOCK 0x01
177 #define FULL_ACCESS 0x00
178
179 //
180 // Function Prototypes
181 //
182 EFI_STATUS
183 FlashGetNextBlock (
184 IN UINTN* Key,
185 OUT EFI_PHYSICAL_ADDRESS* BlockAddress,
186 OUT UINTN* BlockSize
187 );
188
189 EFI_STATUS
190 FlashGetSize (
191 OUT UINTN* Size
192 );
193
194 EFI_STATUS
195 FlashGetUniformBlockSize (
196 OUT UINTN* Size
197 );
198
199 EFI_STATUS
200 FlashEraseWithNoTopSwapping (
201 IN UINT8 *BaseAddress,
202 IN UINTN NumBytes
203 );
204
205 EFI_STATUS
206 FlashErase (
207 IN UINT8 *BaseAddress,
208 IN UINTN NumBytes
209 );
210
211 EFI_STATUS
212 FlashWriteWithNoTopSwapping (
213 IN UINT8* DstBufferPtr,
214 IN UINT8* SrcBufferPtr,
215 IN UINTN NumBytes
216 );
217
218 EFI_STATUS
219 FlashWrite (
220 IN UINT8 *DstBufferPtr,
221 IN UINT8 *SrcBufferPtr,
222 IN UINTN NumBytes
223 );
224
225 EFI_STATUS
226 FlashReadWithNoTopSwapping (
227 IN UINT8 *BaseAddress,
228 IN UINT8 *DstBufferPtr,
229 IN UINTN NumBytes
230 );
231
232 EFI_STATUS
233 FlashRead (
234 IN UINT8 *BaseAddress,
235 IN UINT8 *DstBufferPtr,
236 IN UINTN NumBytes
237 );
238
239 EFI_STATUS
240 FlashLockWithNoTopSwapping (
241 IN UINT8* BaseAddress,
242 IN UINTN NumBytes,
243 IN UINT8 LockState
244 );
245
246 EFI_STATUS
247 FlashLock(
248 IN UINT8 *BaseAddress,
249 IN UINTN NumBytes,
250 IN UINT8 LockState
251 );
252
253 EFI_STATUS
254 CheckIfErased(
255 IN UINT8 *DstBufferPtr,
256 IN UINTN NumBytes
257 );
258
259 EFI_STATUS
260 CheckIfFlashIsReadyForWrite (
261 IN UINT8 *DstBufferPtr,
262 IN UINT8 *SrcBufferPtr,
263 IN UINTN NumBytes
264 );