VirtualBox

source: vbox/trunk/src/VBox/Devices/EFI/Firmware/OptionRomPkg/UndiRuntimeDxe/Undi32.h@ 76553

Last change on this file since 76553 was 58459, checked in by vboxsync, 9 years ago

EFI/Firmware: 'svn merge /vendor/edk2/UDK2010.SR1 /vendor/edk2/current .', reverting and removing files+dirs listed in ReadMe.vbox, resolving conflicts with help from ../UDK2014.SP1/. This is a raw untested merge.

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

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette