]> git.proxmox.com Git - mirror_edk2.git/blame - EmbeddedPkg/Drivers/Lan9118Dxe/Lan9118Dxe.h
EmbeddedPkg/Lan9118Dxe: Remove link check in SNP initialization
[mirror_edk2.git] / EmbeddedPkg / Drivers / Lan9118Dxe / Lan9118Dxe.h
CommitLineData
46f2c53b
OM
1/** @file\r
2*\r
3* Copyright (c) 2012-2014, ARM Limited. All rights reserved.\r
4*\r
5* This program and the accompanying materials\r
6* are licensed and made available under the terms and conditions of the BSD License\r
7* which accompanies this distribution. The full text of the license may be found at\r
8* http://opensource.org/licenses/bsd-license.php\r
9*\r
10* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12*\r
13**/\r
14\r
15#ifndef __LAN9118_DXE_H__\r
16#define __LAN9118_DXE_H__\r
17\r
18#include <Uefi.h>\r
19#include <Uefi/UefiSpec.h>\r
20#include <Base.h>\r
21\r
22// Protocols used by this driver\r
23#include <Protocol/SimpleNetwork.h>\r
24#include <Protocol/ComponentName2.h>\r
25#include <Protocol/PxeBaseCode.h>\r
26#include <Protocol/DevicePath.h>\r
27\r
28// Libraries used by this driver\r
29#include <Library/UefiLib.h>\r
30#include <Library/DebugLib.h>\r
31#include <Library/UefiBootServicesTableLib.h>\r
32#include <Library/MemoryAllocationLib.h>\r
33#include <Library/IoLib.h>\r
34#include <Library/PcdLib.h>\r
35#include <Library/NetLib.h>\r
36#include <Library/DevicePathLib.h>\r
37\r
38#include "Lan9118DxeUtil.h"\r
39#include "Lan9118DxeHw.h"\r
40\r
41#define LAN9118_STALL 2\r
42\r
43#define LAN9118_DEFAULT_MAC_ADDRL 0x00F70200\r
44#define LAN9118_DEFAULT_MAC_ADDRH 0x00009040\r
45\r
46#define LAN9118_TX_DATA_SIZE 4608\r
47#define LAN9118_TX_STATUS_SIZE 512\r
48#define LAN9118_RX_DATA_SIZE 10560\r
49#define LAN9118_RX_STATUS_SIZE 704\r
50\r
51#define LAN9118_TX_RING_NUM_ENTRIES 32\r
52\r
53/*------------------------------------------------------------------------------\r
54 LAN9118 Information Structure\r
55------------------------------------------------------------------------------*/\r
56\r
57typedef struct {\r
58 // Driver signature\r
59 UINT32 Signature;\r
60 EFI_HANDLE ControllerHandle;\r
61\r
62 // EFI SNP protocol instances\r
63 EFI_SIMPLE_NETWORK_PROTOCOL Snp;\r
64 EFI_SIMPLE_NETWORK_MODE SnpMode;\r
65\r
66 // EFI Snp statistics instance\r
67 EFI_NETWORK_STATISTICS Stats;\r
68\r
69 // Saved transmitted buffers so we can notify consumers when packets have been sent.\r
70 UINT16 NextPacketTag;\r
71 VOID *TxRing[LAN9118_TX_RING_NUM_ENTRIES];\r
72} LAN9118_DRIVER;\r
73\r
74#define LAN9118_SIGNATURE SIGNATURE_32('l', 'a', 'n', '9')\r
75#define INSTANCE_FROM_SNP_THIS(a) CR(a, LAN9118_DRIVER, Snp, LAN9118_SIGNATURE)\r
76\r
77\r
78/*---------------------------------------------------------------------------------------------------------------------\r
79\r
80 UEFI-Compliant functions for EFI_SIMPLE_NETWORK_PROTOCOL\r
81\r
82 Refer to the Simple Network Protocol section (21.1) in the UEFI 2.3.1 Specification for related definitions\r
83\r
84---------------------------------------------------------------------------------------------------------------------*/\r
85\r
86\r
87/*\r
88 * UEFI Start() function\r
89 *\r
90 * Parameters:\r
91 *\r
91c38d4e 92 * @param pobj: A pointer to the EFI_SIMPLE_NETWORK_PROTOCOL instance.\r
46f2c53b
OM
93 *\r
94 * Description:\r
95 *\r
91c38d4e
RC
96 * This function starts a network interface. If the network interface successfully starts, then\r
97 * EFI_SUCCESS will be returned.\r
46f2c53b
OM
98 */\r
99EFI_STATUS\r
100EFIAPI\r
101SnpStart (\r
102 IN EFI_SIMPLE_NETWORK_PROTOCOL* Snp\r
103 );\r
104\r
105/*\r
106 * UEFI Stop() function\r
107 *\r
108 */\r
109EFI_STATUS\r
110EFIAPI\r
111SnpStop (\r
112 IN EFI_SIMPLE_NETWORK_PROTOCOL* Snp\r
113 );\r
114\r
115/*\r
116 * UEFI Initialize() function\r
117 *\r
118 */\r
119EFI_STATUS\r
120EFIAPI\r
121SnpInitialize (\r
122 IN EFI_SIMPLE_NETWORK_PROTOCOL* Snp,\r
123 IN UINTN rx_buff_size,\r
124 IN UINTN tx_buff_size\r
125 );\r
126\r
127/*\r
128 * UEFI Reset() function\r
129 *\r
130 */\r
131EFI_STATUS\r
132EFIAPI\r
133SnpReset (\r
134 IN EFI_SIMPLE_NETWORK_PROTOCOL* Snp,\r
135 IN BOOLEAN ext_ver\r
136 );\r
137\r
138/*\r
139 * UEFI Shutdown() function\r
140 *\r
141 */\r
142EFI_STATUS\r
143EFIAPI\r
144SnpShutdown (\r
145 IN EFI_SIMPLE_NETWORK_PROTOCOL* Snp\r
146 );\r
147\r
148/*\r
149 * UEFI ReceiveFilters() function\r
150 *\r
151 */\r
152EFI_STATUS\r
153EFIAPI\r
154SnpReceiveFilters (\r
155 IN EFI_SIMPLE_NETWORK_PROTOCOL* Snp,\r
156 IN UINT32 enable,\r
157 IN UINT32 disable,\r
158 IN BOOLEAN reset_mfilter,\r
159 IN UINTN num_mfilter,\r
160 IN EFI_MAC_ADDRESS *mfilter\r
161 );\r
162\r
163/*\r
164 * UEFI StationAddress() function\r
165 *\r
166 */\r
167EFI_STATUS\r
168EFIAPI\r
169SnpStationAddress (\r
170 IN EFI_SIMPLE_NETWORK_PROTOCOL* Snp,\r
171 IN BOOLEAN reset,\r
172 IN EFI_MAC_ADDRESS *new_maddr\r
173 );\r
174\r
175/*\r
176 * UEFI Statistics() function\r
177 *\r
178 */\r
179EFI_STATUS\r
180EFIAPI\r
181SnpStatistics (\r
182 IN EFI_SIMPLE_NETWORK_PROTOCOL* Snp,\r
183 IN BOOLEAN reset,\r
184 IN OUT UINTN *stat_size,\r
185 OUT EFI_NETWORK_STATISTICS *stat_table\r
186 );\r
187\r
188/*\r
189 * UEFI MCastIPtoMAC() function\r
190 *\r
191 */\r
192EFI_STATUS\r
193EFIAPI\r
194SnpMcastIptoMac (\r
195 IN EFI_SIMPLE_NETWORK_PROTOCOL* Snp,\r
196 IN BOOLEAN use_ipv6,\r
197 IN EFI_IP_ADDRESS *ip_addr,\r
198 OUT EFI_MAC_ADDRESS *mac_addr\r
199 );\r
200\r
201/*\r
202 * UEFI NvData() function\r
203 *\r
204 */\r
205EFI_STATUS\r
206EFIAPI\r
207SnpNvData (\r
208 IN EFI_SIMPLE_NETWORK_PROTOCOL* Snp,\r
209 IN BOOLEAN read_write,\r
210 IN UINTN offset,\r
211 IN UINTN buff_size,\r
212 IN OUT VOID *data\r
213 );\r
214\r
215/*\r
216 * UEFI GetStatus() function\r
217 *\r
218 */\r
219EFI_STATUS\r
220EFIAPI\r
221SnpGetStatus (\r
222 IN EFI_SIMPLE_NETWORK_PROTOCOL* Snp,\r
223 OUT UINT32 *irq_stat OPTIONAL,\r
224 OUT VOID **tx_buff OPTIONAL\r
225 );\r
226\r
227/*\r
228 * UEFI Transmit() function\r
229 *\r
230 */\r
231EFI_STATUS\r
232EFIAPI\r
233SnpTransmit (\r
234 IN EFI_SIMPLE_NETWORK_PROTOCOL* Snp,\r
235 IN UINTN hdr_size,\r
236 IN UINTN buff_size,\r
237 IN VOID *data,\r
238 IN EFI_MAC_ADDRESS *src_addr OPTIONAL,\r
239 IN EFI_MAC_ADDRESS *dest_addr OPTIONAL,\r
240 IN UINT16 *protocol OPTIONAL\r
241 );\r
242\r
243/*\r
244 * UEFI Receive() function\r
245 *\r
246 */\r
247EFI_STATUS\r
248EFIAPI\r
249SnpReceive (\r
250 IN EFI_SIMPLE_NETWORK_PROTOCOL* Snp,\r
251 OUT UINTN *hdr_size OPTIONAL,\r
252 IN OUT UINTN *buff_size,\r
253 OUT VOID *data,\r
254 OUT EFI_MAC_ADDRESS *src_addr OPTIONAL,\r
255 OUT EFI_MAC_ADDRESS *dest_addr OPTIONAL,\r
256 OUT UINT16 *protocol OPTIONAL\r
257 );\r
258\r
259\r
260/*---------------------------------------------------------------------------------------------------------------------\r
261\r
262 UEFI-Compliant functions for EFI_COMPONENT_NAME2_PROTOCOL\r
263\r
264 Refer to the Component Name Protocol section (10.5) in the UEFI 2.3.1 Specification for related definitions\r
265\r
266---------------------------------------------------------------------------------------------------------------------*/\r
267\r
268/*\r
269 * UEFI GetDriverName() function\r
270 *\r
271 */\r
272EFI_STATUS\r
273EFIAPI\r
274SnpGetDriverName (\r
275 IN EFI_COMPONENT_NAME2_PROTOCOL *Snp,\r
276 IN CHAR8 *Lang,\r
277 OUT CHAR16 **DriverName\r
278 );\r
279\r
280/*\r
281 * UEFI GetControllerName() function\r
282 *\r
283 */\r
284EFI_STATUS\r
285EFIAPI\r
286SnpGetControllerName (\r
287 IN EFI_COMPONENT_NAME2_PROTOCOL *Cnp,\r
288 IN EFI_HANDLE ControllerHandle,\r
289 IN EFI_HANDLE ChildHandle OPTIONAL,\r
290 IN CHAR8 *Lang,\r
291 OUT CHAR16 **ControllerName\r
292 );\r
293\r
294/*------------------------------------------------------------------------------\r
295 Utility functions\r
296------------------------------------------------------------------------------*/\r
297\r
298EFI_MAC_ADDRESS\r
299GetCurrentMacAddress (\r
300 VOID\r
301 );\r
302\r
303#endif // __LAN9118_DXE_H__\r