]> git.proxmox.com Git - mirror_edk2.git/blame_incremental - EdkModulePkg/Bus/Pci/Undi/RuntimeDxe/Undi32.h
Removed EFI_SIZE_REDUCTION_APPLIED and SIZE_REDUCTION_ISA_COMBINED because one PCD...
[mirror_edk2.git] / EdkModulePkg / Bus / Pci / Undi / RuntimeDxe / Undi32.h
... / ...
CommitLineData
1\r
2/*++\r
3\r
4Copyright (c) 2006, Intel Corporation.\r
5All rights reserved. This program and the accompanying materials \r
6are licensed and made available under the terms and conditions of the BSD License \r
7which accompanies this distribution. The full text of the license may be found at \r
8http://opensource.org/licenses/bsd-license.php \r
9 \r
10THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
11WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
12\r
13Module Name:\r
14\r
15 undi32.h\r
16\r
17Abstract:\r
18\r
19 EFI internal structures for the EFI UNDI driver\r
20\r
21\r
22\r
23Revision History\r
24\r
25--*/\r
26\r
27#ifndef _UNDI_32_H_\r
28#define _UNDI_32_H_\r
29\r
30\r
31#include "E100b.h"\r
32#include <IndustryStandard/pci22.h>\r
33\r
34#define MAX_NIC_INTERFACES 16\r
35\r
36#define EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL_REVISION_31 0x00010001\r
37#define PXE_ROMID_MINORVER_31 0x10\r
38#define PXE_STATFLAGS_DB_WRITE_TRUNCATED 0x2000\r
39\r
40//\r
41// UNDI_CALL_TABLE.state can have the following values\r
42//\r
43#define DONT_CHECK -1\r
44#define ANY_STATE -1\r
45#define MUST_BE_STARTED 1\r
46#define MUST_BE_INITIALIZED 2\r
47\r
48#define UNDI_DEV_SIGNATURE EFI_SIGNATURE_32('u','n','d','i')\r
49#define UNDI_DEV_FROM_THIS(a) CR(a, UNDI32_DEV, NIIProtocol, UNDI_DEV_SIGNATURE)\r
50#define UNDI_DEV_FROM_NIC(a) CR(a, UNDI32_DEV, NicInfo, UNDI_DEV_SIGNATURE)\r
51\r
52typedef struct {\r
53 UINTN Signature;\r
54 EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL NIIProtocol;\r
55 EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL NIIProtocol_31;\r
56 EFI_HANDLE DeviceHandle;\r
57 EFI_DEVICE_PATH_PROTOCOL *Undi32BaseDevPath;\r
58 EFI_DEVICE_PATH_PROTOCOL *Undi32DevPath;\r
59 NIC_DATA_INSTANCE NicInfo;\r
60} UNDI32_DEV;\r
61\r
62typedef struct {\r
63 UINT16 cpbsize;\r
64 UINT16 dbsize;\r
65 UINT16 opflags;\r
66 UINT16 state;\r
67 VOID (*api_ptr)();\r
68} UNDI_CALL_TABLE;\r
69\r
70typedef struct {\r
71 EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL *InterfacePointer;\r
72 EFI_DEVICE_PATH_PROTOCOL *DevicePathPointer;\r
73} NII_ENTRY;\r
74\r
75typedef struct NII_CONFIG_ENTRY {\r
76 UINT32 NumEntries;\r
77 UINT32 Reserved; // padding for alignment\r
78 struct NII_CONFIG_ENTRY *NextLink;\r
79 NII_ENTRY NiiEntry[1];\r
80} NII_TABLE;\r
81\r
82typedef VOID (*ptr)(VOID);\r
83typedef VOID (*bsptr_30)(UINTN);\r
84typedef VOID (*virtphys_30)(UINT64, UINT64);\r
85typedef VOID (*block_30)(UINT32);\r
86typedef VOID (*mem_io_30)(UINT8, UINT8, UINT64, UINT64);\r
87\r
88typedef VOID (*bsptr)(UINT64, UINTN);\r
89typedef VOID (*virtphys)(UINT64, UINT64, UINT64);\r
90typedef VOID (*block)(UINT64, UINT32);\r
91typedef VOID (*mem_io)(UINT64, UINT8, UINT8, UINT64, UINT64);\r
92\r
93typedef VOID (*map_mem)(UINT64, UINT64, UINT32, UINT32, UINT64);\r
94typedef VOID (*unmap_mem)(UINT64, UINT64, UINT32, UINT32, UINT64);\r
95typedef VOID (*sync_mem)(UINT64, UINT64, UINT32, UINT32, UINT64);\r
96\r
97extern UNDI_CALL_TABLE api_table[];\r
98extern PXE_SW_UNDI *pxe; // !pxe structure\r
99extern PXE_SW_UNDI *pxe_31; // !pxe structure for 3.1 drivers\r
100extern UNDI32_DEV *UNDI32DeviceList[MAX_NIC_INTERFACES];\r
101\r
102//\r
103// functions defined in e100b.c\r
104//\r
105UINT8 InByte (NIC_DATA_INSTANCE *AdapterInfo, UINT32 Port);\r
106UINT16 InWord (NIC_DATA_INSTANCE *AdapterInfo, UINT32 Port);\r
107UINT32 InLong (NIC_DATA_INSTANCE *AdapterInfo, UINT32 Port);\r
108VOID OutByte (NIC_DATA_INSTANCE *AdapterInfo, UINT8 Data, UINT32 Port);\r
109VOID OutWord (NIC_DATA_INSTANCE *AdapterInfo, UINT16 Data, UINT32 Port);\r
110VOID OutLong (NIC_DATA_INSTANCE *AdapterInfo, UINT32 Data, UINT32 Port);\r
111\r
112UINTN E100bInit (NIC_DATA_INSTANCE *AdapterInfo);\r
113UINTN E100bReset (NIC_DATA_INSTANCE *AdapterInfo, INT32 OpFlags);\r
114UINTN E100bShutdown (NIC_DATA_INSTANCE *AdapterInfo);\r
115UINTN E100bTransmit (NIC_DATA_INSTANCE *AdapterInfo, UINT64 cpb, UINT16 opflags);\r
116UINTN E100bReceive (NIC_DATA_INSTANCE *AdapterInfo, UINT64 cpb, UINT64 db);\r
117UINTN E100bSetfilter (NIC_DATA_INSTANCE *AdapterInfo, UINT16 New_filter,\r
118 UINT64 cpb, UINT32 cpbsize);\r
119UINTN E100bStatistics(NIC_DATA_INSTANCE *AdapterInfo, UINT64 db, UINT16 dbsize);\r
120UINT8 E100bSetupIAAddr (NIC_DATA_INSTANCE *AdapterInfo);\r
121UINT8 E100bSetInterruptState (NIC_DATA_INSTANCE *AdapterInfo);\r
122\r
123UINT8 E100bGetEepromAddrLen (NIC_DATA_INSTANCE *AdapterInfo);\r
124UINT16 E100bReadEeprom (NIC_DATA_INSTANCE *AdapterInfo, INT32 Location, UINT8 address_len);\r
125INT16 E100bReadEepromAndStationAddress (NIC_DATA_INSTANCE *AdapterInfo);\r
126\r
127UINT16 next(UINT16);\r
128UINT8 SetupCBlink (NIC_DATA_INSTANCE *AdapterInfo);\r
129VOID SetFreeCB (NIC_DATA_INSTANCE *AdapterInfo,TxCB *);\r
130TxCB *GetFreeCB (NIC_DATA_INSTANCE *AdapterInfo);\r
131UINT16 CheckCBList (NIC_DATA_INSTANCE *AdapterInfo);\r
132\r
133UINT8 SelectiveReset (NIC_DATA_INSTANCE *AdapterInfo);\r
134UINT16 InitializeChip (NIC_DATA_INSTANCE *AdapterInfo);\r
135UINT8 SetupReceiveQueues (NIC_DATA_INSTANCE *AdapterInfo);\r
136VOID Recycle_RFD (NIC_DATA_INSTANCE *AdapterInfo, UINT16);\r
137VOID XmitWaitForCompletion (NIC_DATA_INSTANCE *AdapterInfo);\r
138INT8 CommandWaitForCompletion (TxCB *cmd_ptr, NIC_DATA_INSTANCE *AdapterInfo);\r
139\r
140BOOLEAN PhyDetect (NIC_DATA_INSTANCE *AdapterInfo);\r
141VOID PhyReset (NIC_DATA_INSTANCE *AdapterInfo);\r
142VOID\r
143MdiWrite (\r
144 IN NIC_DATA_INSTANCE *AdapterInfo,\r
145 IN UINT8 RegAddress, \r
146 IN UINT8 PhyAddress,\r
147 IN UINT16 DataValue\r
148 );\r
149\r
150VOID\r
151MdiRead(\r
152 IN NIC_DATA_INSTANCE *AdapterInfo,\r
153 IN UINT8 RegAddress, \r
154 IN UINT8 PhyAddress,\r
155 IN OUT UINT16 *DataValue\r
156 );\r
157\r
158BOOLEAN SetupPhy (NIC_DATA_INSTANCE *AdapterInfo);\r
159VOID FindPhySpeedAndDpx (NIC_DATA_INSTANCE *AdapterInfo, UINT32 PhyId);\r
160\r
161\r
162\r
163//\r
164// functions defined in init.c\r
165//\r
166EFI_STATUS\r
167InstallConfigTable (\r
168 IN VOID\r
169 );\r
170\r
171EFI_STATUS\r
172EFIAPI\r
173InitializeUNDIDriver (\r
174 IN EFI_HANDLE ImageHandle,\r
175 IN EFI_SYSTEM_TABLE *SystemTable\r
176 );\r
177\r
178VOID\r
179UNDI_notify_virtual (\r
180 EFI_EVENT event,\r
181 VOID *context\r
182 );\r
183\r
184VOID\r
185EFIAPI\r
186UndiNotifyExitBs (\r
187 EFI_EVENT Event,\r
188 VOID *Context\r
189 );\r
190\r
191EFI_STATUS\r
192EFIAPI\r
193UndiDriverSupported (\r
194 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
195 IN EFI_HANDLE Controller,\r
196 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
197 );\r
198\r
199EFI_STATUS\r
200EFIAPI\r
201UndiDriverStart (\r
202 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
203 IN EFI_HANDLE Controller,\r
204 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
205 );\r
206\r
207EFI_STATUS\r
208EFIAPI\r
209UndiDriverStop (\r
210 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
211 IN EFI_HANDLE Controller,\r
212 IN UINTN NumberOfChildren,\r
213 IN EFI_HANDLE *ChildHandleBuffer\r
214 );\r
215\r
216EFI_STATUS\r
217AppendMac2DevPath (\r
218 IN OUT EFI_DEVICE_PATH_PROTOCOL **DevPtr,\r
219 IN EFI_DEVICE_PATH_PROTOCOL *BaseDevPtr,\r
220 IN NIC_DATA_INSTANCE *AdapterInfo\r
221 );\r
222\r
223VOID\r
224TmpDelay (\r
225 IN UINT64 UnqId,\r
226 IN UINTN MicroSeconds\r
227 );\r
228\r
229VOID\r
230TmpMemIo (\r
231 IN UINT64 UnqId,\r
232 IN UINT8 ReadWrite,\r
233 IN UINT8 Len,\r
234 IN UINT64 Port,\r
235 IN UINT64 BufAddr\r
236 );\r
237\r
238//\r
239// functions defined in decode.c\r
240//\r
241VOID\r
242UNDI_GetState (\r
243 IN PXE_CDB *CdbPtr,\r
244 IN NIC_DATA_INSTANCE *AdapterInfo\r
245 );\r
246\r
247VOID\r
248UNDI_Start (\r
249 IN PXE_CDB *CdbPtr,\r
250 IN NIC_DATA_INSTANCE *AdapterInfo\r
251 );\r
252\r
253VOID\r
254UNDI_Stop (\r
255 IN PXE_CDB *CdbPtr,\r
256 IN NIC_DATA_INSTANCE *AdapterInfo\r
257 );\r
258\r
259VOID\r
260UNDI_GetInitInfo (\r
261 IN PXE_CDB *CdbPtr,\r
262 IN NIC_DATA_INSTANCE *AdapterInfo\r
263 );\r
264\r
265VOID\r
266UNDI_GetConfigInfo (\r
267 IN PXE_CDB *CdbPtr,\r
268 IN NIC_DATA_INSTANCE *AdapterInfo\r
269 );\r
270\r
271VOID\r
272UNDI_Initialize (\r
273 IN PXE_CDB *CdbPtr,\r
274 NIC_DATA_INSTANCE *AdapterInfo\r
275 );\r
276\r
277VOID\r
278UNDI_Reset (\r
279 IN PXE_CDB *CdbPtr,\r
280 IN NIC_DATA_INSTANCE *AdapterInfo\r
281 );\r
282\r
283VOID\r
284UNDI_Shutdown (\r
285 IN PXE_CDB *CdbPtr,\r
286 IN NIC_DATA_INSTANCE *AdapterInfo\r
287 );\r
288\r
289VOID\r
290UNDI_Interrupt (\r
291 IN PXE_CDB *CdbPtr,\r
292 IN NIC_DATA_INSTANCE *AdapterInfo\r
293 );\r
294\r
295VOID\r
296UNDI_RecFilter (\r
297 IN PXE_CDB *CdbPtr,\r
298 IN NIC_DATA_INSTANCE *AdapterInfo\r
299 );\r
300\r
301VOID\r
302UNDI_StnAddr (\r
303 IN PXE_CDB *CdbPtr,\r
304 IN NIC_DATA_INSTANCE *AdapterInfo\r
305 );\r
306\r
307VOID\r
308UNDI_Statistics (\r
309 IN PXE_CDB *CdbPtr,\r
310 IN NIC_DATA_INSTANCE *AdapterInfo\r
311 );\r
312\r
313VOID\r
314UNDI_ip2mac (\r
315 IN PXE_CDB *CdbPtr,\r
316 IN NIC_DATA_INSTANCE *AdapterInfo\r
317 );\r
318\r
319VOID\r
320UNDI_NVData (\r
321 IN PXE_CDB *CdbPtr,\r
322 IN NIC_DATA_INSTANCE *AdapterInfo\r
323 );\r
324\r
325VOID\r
326UNDI_Status (\r
327 IN PXE_CDB *CdbPtr,\r
328 IN NIC_DATA_INSTANCE *AdapterInfo\r
329 );\r
330\r
331VOID\r
332UNDI_FillHeader (\r
333 IN PXE_CDB *CdbPtr,\r
334 IN NIC_DATA_INSTANCE *AdapterInfo\r
335 );\r
336\r
337VOID\r
338UNDI_Transmit (\r
339 IN PXE_CDB *CdbPtr,\r
340 IN NIC_DATA_INSTANCE *AdapterInfo\r
341 );\r
342\r
343VOID\r
344UNDI_Receive (\r
345 IN PXE_CDB *CdbPtr,\r
346 IN NIC_DATA_INSTANCE *AdapterInfo\r
347 );\r
348\r
349VOID UNDI_APIEntry_new(UINT64);\r
350VOID UNDI_APIEntry_old(UINT64);\r
351VOID UNDI_APIEntry_Common(UINT64);\r
352\r
353PXE_IPV4 convert_mcip(PXE_MAC_ADDR *);\r
354INT32 validate_mcip (PXE_MAC_ADDR *MCastAddr);\r
355\r
356VOID PxeStructInit (PXE_SW_UNDI *PxePtr, UINTN VersionFlag);\r
357VOID PxeUpdate (NIC_DATA_INSTANCE *NicPtr, PXE_SW_UNDI *PxePtr);\r
358\r
359#endif\r