]>
git.proxmox.com Git - mirror_edk2.git/blob - Vlv2TbltDevicePkg/Include/Library/Fd.h
3 Copyright (c) 2004 - 2014, Intel Corporation. All rights reserved.<BR>
5 SPDX-License-Identifier: BSD-2-Clause-Patent
17 EFI Intel82802AB/82802AC Firmware Hub.
24 // Supported SPI devices
28 // MFG and Device code
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
37 #define PMC_25LV040 0x007E9D
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
47 #define Macronix_MX25L8005 0x1420C2
48 #define Macronix_MX25L1605A 0x1520C2
49 #define Macronix_MX25L3205D 0x1620C2
51 #define STMicro_M25PE80 0x148020
53 #define Winbond_W25X40 0x1330EF
54 #define Winbond_W25X80 0x1430EF
55 #define Winbond_W25Q80 0x1440EF
57 #define Winbond_W25X16 0x1540EF // W25Q16
58 #define Winbond_W25X32 0x1630EF
61 // NOTE: Assuming that 8Mbit flash will only contain a 4Mbit binary.
62 // Treating 4Mbit and 8Mbit devices the same.
68 #define BIOS_BASE_ADDRESS_4M 0xFFF80000
69 #define BIOS_BASE_ADDRESS_8M 0xFFF00000
70 #define BIOS_BASE_ADDRESS_16M 0xFFE00000
73 // block and sector sizes
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)
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
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
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
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
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
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
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
152 // SPI default opcode slots
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
162 #define SPI_PREFIX_WRITE_S_EN 1
163 #define SPI_PREFIX_WRITE_EN 0
168 #define B_AT26F_STS_REG_SPRL 0x80
169 #define B_AT26F_STS_REG_SWP 0x0C
172 // Block lock bit definitions:
174 #define READ_LOCK 0x04
175 #define LOCK_DOWN 0x02
176 #define WRITE_LOCK 0x01
177 #define FULL_ACCESS 0x00
180 // Function Prototypes
185 OUT EFI_PHYSICAL_ADDRESS
* BlockAddress
,
195 FlashGetUniformBlockSize (
200 FlashEraseWithNoTopSwapping (
201 IN UINT8
*BaseAddress
,
207 IN UINT8
*BaseAddress
,
212 FlashWriteWithNoTopSwapping (
213 IN UINT8
* DstBufferPtr
,
214 IN UINT8
* SrcBufferPtr
,
220 IN UINT8
*DstBufferPtr
,
221 IN UINT8
*SrcBufferPtr
,
226 FlashReadWithNoTopSwapping (
227 IN UINT8
*BaseAddress
,
228 IN UINT8
*DstBufferPtr
,
234 IN UINT8
*BaseAddress
,
235 IN UINT8
*DstBufferPtr
,
240 FlashLockWithNoTopSwapping (
241 IN UINT8
* BaseAddress
,
248 IN UINT8
*BaseAddress
,
255 IN UINT8
*DstBufferPtr
,
260 CheckIfFlashIsReadyForWrite (
261 IN UINT8
*DstBufferPtr
,
262 IN UINT8
*SrcBufferPtr
,