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