]> git.proxmox.com Git - mirror_edk2.git/blame - EdkModulePkg/Universal/Network/Snp32_64/Dxe/Snp.h
Make EdkModulePkg pass Intel IPF compiler with /W4 /WX switches, solving warning...
[mirror_edk2.git] / EdkModulePkg / Universal / Network / Snp32_64 / Dxe / Snp.h
CommitLineData
878ddf1f 1/*++\r
2Copyright (c) 2006, Intel Corporation \r
3All rights reserved. This program and the accompanying materials \r
4are licensed and made available under the terms and conditions of the BSD License \r
5which accompanies this distribution. The full text of the license may be found at \r
6http://opensource.org/licenses/bsd-license.php \r
7 \r
8THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
9WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
10\r
11Module name:\r
12 snp.h\r
13\r
14Abstract:\r
15\r
16Revision history:\r
17 2000-Feb-03 M(f)J Genesis.\r
18--*/\r
19#ifndef _SNP_H\r
20#define _SNP_H\r
21\r
22\r
23#include "IndustryStandard/pci22.h"\r
24\r
25#define SNP_DEBUG 0\r
26#define FOUR_GIGABYTES (UINT64) 0x100000000ULL\r
27\r
28#if SNP_DEBUG\r
29#undef D_NET\r
30#define D_NET D_WARN\r
31#define SNP_PRINT(DebugInfo) Print (DebugInfo)\r
32#else\r
33#define SNP_PRINT(DebugInfo)\r
34#endif\r
35\r
36#define SNP_DRIVER_SIGNATURE EFI_SIGNATURE_32 ('s', 'n', 'd', 's')\r
37#define MAX_MAP_LENGTH 100\r
38\r
39#define PCI_BAR_IO_MASK 0x00000003\r
40#define PCI_BAR_IO_MODE 0x00000001\r
41\r
42#define PCI_BAR_MEM_MASK 0x0000000F\r
43#define PCI_BAR_MEM_MODE 0x00000000\r
44#define PCI_BAR_MEM_64BIT 0x00000004\r
45\r
46typedef struct {\r
47 UINT32 Signature;\r
48 EFI_LOCK lock;\r
49\r
50 EFI_SIMPLE_NETWORK_PROTOCOL snp;\r
51 EFI_SIMPLE_NETWORK_MODE mode;\r
52\r
53 EFI_HANDLE device_handle;\r
54 EFI_DEVICE_PATH_PROTOCOL *device_path;\r
55\r
56 //\r
57 // Local instance data needed by SNP driver\r
58 //\r
59 // Pointer to S/W UNDI API entry point\r
60 // This will be NULL for H/W UNDI\r
61 //\r
62 EFI_STATUS (*issue_undi32_command) (UINT64 cdb);\r
63\r
64 BOOLEAN is_swundi;\r
65\r
66 //\r
67 // undi interface number, if one undi manages more nics\r
68 //\r
69 PXE_IFNUM if_num;\r
70\r
71 //\r
72 // Allocated tx/rx buffer that was passed to UNDI Initialize.\r
73 //\r
74 UINT32 tx_rx_bufsize;\r
75 VOID *tx_rx_buffer;\r
76 //\r
77 // mappable buffers for receive and fill header for undi3.0\r
78 // these will be used if the user buffers are above 4GB limit (instead of\r
79 // mapping the user buffers)\r
80 //\r
81 UINT8 *receive_buf;\r
82 VOID *ReceiveBufUnmap;\r
83 UINT8 *fill_hdr_buf;\r
84 VOID *FillHdrBufUnmap;\r
85\r
86 EFI_PCI_IO_PROTOCOL *IoFncs;\r
87 UINT8 IoBarIndex;\r
88 UINT8 MemoryBarIndex;\r
89 BOOLEAN IsOldUndi; // true for EFI1.0 UNDI (3.0) drivers\r
90 //\r
91 // Buffers for command descriptor block, command parameter block\r
92 // and data block.\r
93 //\r
94 PXE_CDB cdb;\r
95 VOID *cpb;\r
96 VOID *CpbUnmap;\r
97 VOID *db;\r
98\r
99 //\r
100 // UNDI structure, we need to remember the init info for a long time!\r
101 //\r
102 PXE_DB_GET_INIT_INFO init_info;\r
103\r
104 VOID *SnpDriverUnmap;\r
105 //\r
106 // when ever we map an address, we must remember it's address and the un-map\r
107 // cookie so that we can unmap later\r
108 //\r
109 struct s_map_list {\r
110 EFI_PHYSICAL_ADDRESS virt;\r
111 VOID *map_cookie;\r
112 } map_list[MAX_MAP_LENGTH];\r
113}\r
114SNP_DRIVER;\r
115\r
116#define EFI_SIMPLE_NETWORK_DEV_FROM_THIS(a) CR (a, SNP_DRIVER, snp, SNP_DRIVER_SIGNATURE)\r
117\r
118//\r
119// Global Variables\r
120//\r
121extern EFI_COMPONENT_NAME_PROTOCOL gSimpleNetworkComponentName;\r
122extern EFI_DRIVER_BINDING_PROTOCOL gSimpleNetworkDriverBinding;\r
123\r
92dda53e 124extern EFI_PCI_IO_PROTOCOL *mPciIoFncs;\r
125\r
126//\r
127// EFI Component Name Functions\r
128//\r
129EFI_STATUS\r
130EFIAPI\r
131SimpleNetworkComponentNameGetDriverName (\r
132 IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
133 IN CHAR8 *Language,\r
134 OUT CHAR16 **DriverName\r
135 );\r
136\r
137EFI_STATUS\r
138EFIAPI\r
139SimpleNetworkComponentNameGetControllerName (\r
140 IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
141 IN EFI_HANDLE ControllerHandle,\r
142 IN EFI_HANDLE ChildHandle OPTIONAL,\r
143 IN CHAR8 *Language,\r
144 OUT CHAR16 **ControllerName\r
145 );\r
146\r
878ddf1f 147//\r
148// Virtual to physical mapping for all UNDI 3.0s.\r
149//\r
150extern struct s_v2p {\r
151 struct s_v2p *next;\r
152 VOID *vaddr;\r
153 UINTN bsize;\r
154 EFI_PHYSICAL_ADDRESS paddr;\r
155 VOID *unmap;\r
156}\r
157*_v2p;\r
158\r
159EFI_STATUS\r
160add_v2p (\r
161 struct s_v2p **v2p,\r
162 EFI_PCI_IO_PROTOCOL_OPERATION type,\r
163 VOID *vaddr,\r
164 UINTN bsize\r
165 )\r
166;\r
167\r
168EFI_STATUS\r
169find_v2p (\r
170 struct s_v2p **v2p,\r
171 VOID *vaddr\r
172 )\r
173;\r
174\r
175EFI_STATUS\r
176del_v2p (\r
177 VOID *vaddr\r
178 )\r
179;\r
180\r
181extern\r
182VOID\r
183snp_undi32_callback_block_30 (\r
184 IN UINT32 Enable\r
185 )\r
186;\r
187\r
188extern\r
189VOID\r
190snp_undi32_callback_delay_30 (\r
191 IN UINT64 MicroSeconds\r
192 )\r
193;\r
194\r
195extern\r
196VOID\r
197snp_undi32_callback_memio_30 (\r
198 IN UINT8 ReadOrWrite,\r
199 IN UINT8 NumBytes,\r
200 IN UINT64 MemOrPortAddress,\r
201 IN OUT UINT64 BufferPtr\r
202 )\r
203;\r
204\r
205extern\r
206VOID\r
207snp_undi32_callback_v2p_30 (\r
208 IN UINT64 CpuAddr,\r
209 IN OUT UINT64 DeviceAddrPtr\r
210 )\r
211;\r
212\r
213extern\r
214VOID\r
215snp_undi32_callback_block (\r
216 IN UINT64 UniqueId,\r
217 IN UINT32 Enable\r
218 )\r
219;\r
220\r
221extern\r
222VOID\r
223snp_undi32_callback_delay (\r
224 IN UINT64 UniqueId,\r
225 IN UINT64 MicroSeconds\r
226 )\r
227;\r
228\r
229extern\r
230VOID\r
231snp_undi32_callback_memio (\r
232 IN UINT64 UniqueId,\r
233 IN UINT8 ReadOrWrite,\r
234 IN UINT8 NumBytes,\r
235 IN UINT64 MemOrPortAddr,\r
236 IN OUT UINT64 BufferPtr\r
237 )\r
238;\r
239\r
240extern\r
241VOID\r
242snp_undi32_callback_map (\r
243 IN UINT64 UniqueId,\r
244 IN UINT64 CpuAddr,\r
245 IN UINT32 NumBytes,\r
246 IN UINT32 Direction,\r
247 IN OUT UINT64 DeviceAddrPtr\r
248 )\r
249;\r
250\r
251extern\r
252VOID\r
253snp_undi32_callback_unmap (\r
254 IN UINT64 UniqueId,\r
255 IN UINT64 CpuAddr,\r
256 IN UINT32 NumBytes,\r
257 IN UINT32 Direction,\r
258 IN UINT64 DeviceAddr // not a pointer to device address\r
259 )\r
260;\r
261\r
262extern\r
263VOID\r
264snp_undi32_callback_sync (\r
265 IN UINT64 UniqueId,\r
266 IN UINT64 CpuAddr,\r
267 IN UINT32 NumBytes,\r
268 IN UINT32 Direction,\r
269 IN UINT64 DeviceAddr // not a pointer to device address\r
270 )\r
271;\r
272\r
273extern\r
274EFI_STATUS\r
275EFIAPI\r
276snp_undi32_start (\r
277 IN EFI_SIMPLE_NETWORK_PROTOCOL *this\r
278 )\r
279;\r
280\r
281extern\r
282EFI_STATUS\r
283EFIAPI\r
284snp_undi32_stop (\r
285 IN EFI_SIMPLE_NETWORK_PROTOCOL *this\r
286 )\r
287;\r
288\r
289extern\r
290EFI_STATUS\r
291EFIAPI\r
292snp_undi32_initialize (\r
293 IN EFI_SIMPLE_NETWORK_PROTOCOL *this,\r
294 IN UINTN extra_rx_buffer_size OPTIONAL,\r
295 IN UINTN extra_tx_buffer_size OPTIONAL\r
296 )\r
297;\r
298\r
299extern\r
300EFI_STATUS\r
301EFIAPI\r
302snp_undi32_reset (\r
303 IN EFI_SIMPLE_NETWORK_PROTOCOL *this,\r
304 IN BOOLEAN ExtendedVerification\r
305 )\r
306;\r
307\r
308extern\r
309EFI_STATUS\r
310EFIAPI\r
311snp_undi32_shutdown (\r
312 IN EFI_SIMPLE_NETWORK_PROTOCOL *this\r
313 )\r
314;\r
315\r
316extern\r
317EFI_STATUS\r
318EFIAPI\r
319snp_undi32_receive_filters (\r
320 IN EFI_SIMPLE_NETWORK_PROTOCOL * this,\r
321 IN UINT32 enable,\r
322 IN UINT32 disable,\r
323 IN BOOLEAN reset_mcast_filter,\r
324 IN UINTN mcast_filter_count OPTIONAL,\r
325 IN EFI_MAC_ADDRESS * mcast_filter OPTIONAL\r
326 )\r
327;\r
328\r
329extern\r
330EFI_STATUS\r
331EFIAPI\r
332snp_undi32_station_address (\r
333 IN EFI_SIMPLE_NETWORK_PROTOCOL * this,\r
334 IN BOOLEAN reset,\r
335 IN EFI_MAC_ADDRESS *new OPTIONAL\r
336 )\r
337;\r
338\r
339extern\r
340EFI_STATUS\r
341EFIAPI\r
342snp_undi32_statistics (\r
343 IN EFI_SIMPLE_NETWORK_PROTOCOL * this,\r
344 IN BOOLEAN reset,\r
345 IN OUT UINTN *statistics_size OPTIONAL,\r
346 IN OUT EFI_NETWORK_STATISTICS * statistics_table OPTIONAL\r
347 )\r
348;\r
349\r
350extern\r
351EFI_STATUS\r
352EFIAPI\r
353snp_undi32_mcast_ip_to_mac (\r
354 IN EFI_SIMPLE_NETWORK_PROTOCOL *this,\r
355 IN BOOLEAN IPv6,\r
356 IN EFI_IP_ADDRESS *IP,\r
357 OUT EFI_MAC_ADDRESS *MAC\r
358 )\r
359;\r
360\r
361extern\r
362EFI_STATUS\r
363EFIAPI\r
364snp_undi32_nvdata (\r
365 IN EFI_SIMPLE_NETWORK_PROTOCOL *this,\r
366 IN BOOLEAN read_write,\r
367 IN UINTN offset,\r
368 IN UINTN buffer_size,\r
369 IN OUT VOID *buffer\r
370 )\r
371;\r
372\r
373extern\r
374EFI_STATUS\r
375EFIAPI\r
376snp_undi32_get_status (\r
377 IN EFI_SIMPLE_NETWORK_PROTOCOL * this,\r
378 OUT UINT32 *interrupt_status OPTIONAL,\r
379 OUT VOID **tx_buffer OPTIONAL\r
380 )\r
381;\r
382\r
383extern\r
384EFI_STATUS\r
385EFIAPI\r
386snp_undi32_transmit (\r
387 IN EFI_SIMPLE_NETWORK_PROTOCOL * this,\r
388 IN UINTN header_size,\r
389 IN UINTN buffer_size,\r
390 IN VOID *buffer,\r
391 IN EFI_MAC_ADDRESS * src_addr OPTIONAL,\r
392 IN EFI_MAC_ADDRESS * dest_addr OPTIONAL,\r
393 IN UINT16 *protocol OPTIONAL\r
394 )\r
395;\r
396\r
397extern\r
398EFI_STATUS\r
399EFIAPI\r
400snp_undi32_receive (\r
401 IN EFI_SIMPLE_NETWORK_PROTOCOL * this,\r
402 OUT UINTN *header_size OPTIONAL,\r
403 IN OUT UINTN *buffer_size,\r
404 OUT VOID *buffer,\r
405 OUT EFI_MAC_ADDRESS * src_addr OPTIONAL,\r
406 OUT EFI_MAC_ADDRESS * dest_addr OPTIONAL,\r
407 OUT UINT16 *protocol OPTIONAL\r
408 )\r
409;\r
410\r
1cc8ee78 411VOID\r
412EFIAPI\r
413SnpWaitForPacketNotify (\r
414 IN EFI_EVENT Event,\r
415 IN VOID *SnpPtr\r
416 );\r
417\r
418EFI_STATUS\r
419pxe_start (\r
420 SNP_DRIVER *snp\r
421 );\r
422\r
423EFI_STATUS\r
424pxe_stop (\r
425 SNP_DRIVER *snp\r
426 );\r
427\r
428EFI_STATUS\r
429pxe_init (\r
430 SNP_DRIVER *snp,\r
431 UINT16 OpFlags\r
432 );\r
433\r
434EFI_STATUS\r
435pxe_shutdown (\r
436 SNP_DRIVER *snp\r
437 );\r
438\r
439EFI_STATUS\r
440pxe_get_stn_addr (\r
441 SNP_DRIVER *snp\r
442 );\r
443\r
878ddf1f 444typedef\r
445EFI_STATUS\r
446(*issue_undi32_command) (\r
447 UINT64 cdb\r
448 );\r
1cc8ee78 449\r
878ddf1f 450typedef\r
451VOID\r
452(*ptr) (\r
453 VOID\r
454 );\r
455\r
456#define SNP_MEM_PAGES(x) (((x) - 1) / 4096 + 1)\r
457\r
458#if SNP_DEBUG\r
459extern\r
460VOID\r
461snp_wait_for_key (\r
462 VOID\r
463 )\r
464;\r
465#endif\r
466\r
467#endif /* _SNP_H */\r