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