]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OptionRomPkg/UndiRuntimeDxe/Undi32.h
add UndiRuntimeDxe from MdeModulePkg to OptionRomPkg.
[mirror_edk2.git] / OptionRomPkg / UndiRuntimeDxe / Undi32.h
diff --git a/OptionRomPkg/UndiRuntimeDxe/Undi32.h b/OptionRomPkg/UndiRuntimeDxe/Undi32.h
new file mode 100644 (file)
index 0000000..fc6e352
--- /dev/null
@@ -0,0 +1,361 @@
+/** @file\r
+  EFI internal structures for the EFI UNDI driver.\r
+\r
+Copyright (c) 2006 - 2007, Intel Corporation.\r
+All rights reserved. This program and the accompanying materials\r
+are licensed and made available under the terms and conditions of the BSD License\r
+which accompanies this distribution.  The full text of the license may be found at\r
+http://opensource.org/licenses/bsd-license.php\r
+\r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+\r
+**/\r
+\r
+#ifndef _UNDI_32_H_\r
+#define _UNDI_32_H_\r
+\r
+#include <Uefi.h>\r
+\r
+#include <Guid/EventGroup.h>\r
+#include <Protocol/PciIo.h>\r
+#include <Protocol/NetworkInterfaceIdentifier.h>\r
+#include <Protocol/DevicePath.h>\r
+\r
+#include <Library/UefiDriverEntryPoint.h>\r
+#include <Library/UefiRuntimeLib.h>\r
+#include <Library/DebugLib.h>\r
+#include <Library/BaseMemoryLib.h>\r
+#include <Library/UefiBootServicesTableLib.h>\r
+#include <Library/UefiLib.h>\r
+#include <Library/BaseLib.h>\r
+#include <Library/DevicePathLib.h>\r
+\r
+#include <IndustryStandard/Pci.h>\r
+\r
+\r
+#include "E100b.h"\r
+\r
+#define MAX_NIC_INTERFACES 16\r
+\r
+#define EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL_REVISION_31 0x00010001\r
+#define PXE_ROMID_MINORVER_31 0x10\r
+#define PXE_STATFLAGS_DB_WRITE_TRUNCATED  0x2000\r
+\r
+//\r
+// UNDI_CALL_TABLE.state can have the following values\r
+//\r
+#define DONT_CHECK -1\r
+#define ANY_STATE -1\r
+#define MUST_BE_STARTED 1\r
+#define MUST_BE_INITIALIZED 2\r
+\r
+#define UNDI_DEV_SIGNATURE   SIGNATURE_32('u','n','d','i')\r
+#define UNDI_DEV_FROM_THIS(a) CR(a, UNDI32_DEV, NIIProtocol_31, UNDI_DEV_SIGNATURE)\r
+#define UNDI_DEV_FROM_NIC(a) CR(a, UNDI32_DEV, NicInfo, UNDI_DEV_SIGNATURE)\r
+\r
+typedef struct {\r
+  UINTN                                     Signature;\r
+  EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL NIIProtocol_31;\r
+  EFI_HANDLE                                DeviceHandle;\r
+  EFI_DEVICE_PATH_PROTOCOL                  *Undi32BaseDevPath;\r
+  EFI_DEVICE_PATH_PROTOCOL                  *Undi32DevPath;\r
+  NIC_DATA_INSTANCE                         NicInfo;\r
+} UNDI32_DEV;\r
+\r
+typedef struct {\r
+  UINT16 cpbsize;\r
+  UINT16 dbsize;\r
+  UINT16 opflags;\r
+  UINT16 state;\r
+  VOID (*api_ptr)();\r
+} UNDI_CALL_TABLE;\r
+\r
+typedef struct {\r
+  EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL *InterfacePointer;\r
+  EFI_DEVICE_PATH_PROTOCOL                  *DevicePathPointer;\r
+} NII_ENTRY;\r
+\r
+typedef struct NII_CONFIG_ENTRY {\r
+  UINT32                   NumEntries;\r
+  UINT32                   Reserved;              // padding for alignment\r
+  struct NII_CONFIG_ENTRY  *NextLink;\r
+  NII_ENTRY                NiiEntry[1];\r
+} NII_TABLE;\r
+\r
+typedef VOID (*ptr)(VOID);\r
+typedef VOID (*bsptr_30)(UINTN);\r
+typedef VOID (*virtphys_30)(UINT64, UINT64);\r
+typedef VOID (*block_30)(UINT32);\r
+typedef VOID (*mem_io_30)(UINT8, UINT8, UINT64, UINT64);\r
+\r
+typedef VOID (*bsptr)(UINT64, UINTN);\r
+typedef VOID (*virtphys)(UINT64, UINT64, UINT64);\r
+typedef VOID (*block)(UINT64, UINT32);\r
+typedef VOID (*mem_io)(UINT64, UINT8, UINT8, UINT64, UINT64);\r
+\r
+typedef VOID (*map_mem)(UINT64, UINT64, UINT32, UINT32, UINT64);\r
+typedef VOID (*unmap_mem)(UINT64, UINT64, UINT32, UINT32, UINT64);\r
+typedef VOID (*sync_mem)(UINT64, UINT64, UINT32, UINT32, UINT64);\r
+\r
+extern UNDI_CALL_TABLE  api_table[];\r
+extern PXE_SW_UNDI      *pxe_31;  // !pxe structure for 3.1 drivers\r
+extern UNDI32_DEV       *UNDI32DeviceList[MAX_NIC_INTERFACES];\r
+\r
+//\r
+// functions defined in e100b.c\r
+//\r
+UINT8 InByte (NIC_DATA_INSTANCE *AdapterInfo, UINT32 Port);\r
+UINT16 InWord (NIC_DATA_INSTANCE *AdapterInfo, UINT32 Port);\r
+UINT32 InLong (NIC_DATA_INSTANCE *AdapterInfo, UINT32 Port);\r
+VOID  OutByte (NIC_DATA_INSTANCE *AdapterInfo, UINT8 Data, UINT32 Port);\r
+VOID  OutWord (NIC_DATA_INSTANCE *AdapterInfo, UINT16 Data, UINT32 Port);\r
+VOID  OutLong (NIC_DATA_INSTANCE *AdapterInfo, UINT32 Data, UINT32 Port);\r
+\r
+UINTN E100bInit (NIC_DATA_INSTANCE *AdapterInfo);\r
+UINTN E100bReset (NIC_DATA_INSTANCE *AdapterInfo, INT32 OpFlags);\r
+UINTN E100bShutdown (NIC_DATA_INSTANCE *AdapterInfo);\r
+UINTN E100bTransmit (NIC_DATA_INSTANCE *AdapterInfo, UINT64 cpb, UINT16 opflags);\r
+UINTN E100bReceive (NIC_DATA_INSTANCE *AdapterInfo, UINT64 cpb, UINT64 db);\r
+UINTN E100bSetfilter (NIC_DATA_INSTANCE *AdapterInfo, UINT16 New_filter,\r
+                      UINT64 cpb, UINT32 cpbsize);\r
+UINTN E100bStatistics(NIC_DATA_INSTANCE *AdapterInfo, UINT64 db, UINT16 dbsize);\r
+UINT8 E100bSetupIAAddr (NIC_DATA_INSTANCE *AdapterInfo);\r
+UINT8 E100bSetInterruptState (NIC_DATA_INSTANCE *AdapterInfo);\r
+\r
+UINT8 E100bGetEepromAddrLen (NIC_DATA_INSTANCE *AdapterInfo);\r
+UINT16 E100bReadEeprom (NIC_DATA_INSTANCE *AdapterInfo, INT32 Location, UINT8 address_len);\r
+INT16 E100bReadEepromAndStationAddress (NIC_DATA_INSTANCE *AdapterInfo);\r
+\r
+UINT16 next(UINT16);\r
+UINT8 SetupCBlink (NIC_DATA_INSTANCE *AdapterInfo);\r
+VOID SetFreeCB (NIC_DATA_INSTANCE *AdapterInfo,TxCB *);\r
+TxCB *GetFreeCB (NIC_DATA_INSTANCE *AdapterInfo);\r
+UINT16 CheckCBList (NIC_DATA_INSTANCE *AdapterInfo);\r
+\r
+UINT8 SelectiveReset (NIC_DATA_INSTANCE *AdapterInfo);\r
+UINT16 InitializeChip (NIC_DATA_INSTANCE *AdapterInfo);\r
+UINT8 SetupReceiveQueues (NIC_DATA_INSTANCE *AdapterInfo);\r
+VOID  Recycle_RFD (NIC_DATA_INSTANCE *AdapterInfo, UINT16);\r
+VOID XmitWaitForCompletion (NIC_DATA_INSTANCE *AdapterInfo);\r
+INT8 CommandWaitForCompletion (TxCB *cmd_ptr, NIC_DATA_INSTANCE *AdapterInfo);\r
+\r
+BOOLEAN PhyDetect (NIC_DATA_INSTANCE *AdapterInfo);\r
+VOID PhyReset (NIC_DATA_INSTANCE *AdapterInfo);\r
+VOID\r
+MdiWrite (\r
+  IN NIC_DATA_INSTANCE *AdapterInfo,\r
+  IN UINT8 RegAddress,\r
+  IN UINT8 PhyAddress,\r
+  IN UINT16 DataValue\r
+  );\r
+\r
+VOID\r
+MdiRead(\r
+  IN NIC_DATA_INSTANCE *AdapterInfo,\r
+  IN UINT8 RegAddress,\r
+  IN UINT8 PhyAddress,\r
+  IN OUT UINT16 *DataValue\r
+  );\r
+\r
+BOOLEAN SetupPhy (NIC_DATA_INSTANCE *AdapterInfo);\r
+VOID FindPhySpeedAndDpx (NIC_DATA_INSTANCE *AdapterInfo, UINT32 PhyId);\r
+\r
+\r
+\r
+//\r
+// functions defined in init.c\r
+//\r
+EFI_STATUS\r
+InstallConfigTable (\r
+  IN VOID\r
+  );\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+InitializeUNDIDriver (\r
+  IN EFI_HANDLE           ImageHandle,\r
+  IN EFI_SYSTEM_TABLE     *SystemTable\r
+  );\r
+\r
+VOID\r
+UNDI_notify_virtual (\r
+  EFI_EVENT event,\r
+  VOID      *context\r
+  );\r
+\r
+VOID\r
+EFIAPI\r
+UndiNotifyExitBs (\r
+  EFI_EVENT Event,\r
+  VOID      *Context\r
+  );\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+UndiDriverSupported (\r
+  IN EFI_DRIVER_BINDING_PROTOCOL    *This,\r
+  IN EFI_HANDLE                     Controller,\r
+  IN EFI_DEVICE_PATH_PROTOCOL       *RemainingDevicePath\r
+  );\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+UndiDriverStart (\r
+  IN EFI_DRIVER_BINDING_PROTOCOL    *This,\r
+  IN EFI_HANDLE                     Controller,\r
+  IN EFI_DEVICE_PATH_PROTOCOL       *RemainingDevicePath\r
+  );\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+UndiDriverStop (\r
+  IN  EFI_DRIVER_BINDING_PROTOCOL    *This,\r
+  IN  EFI_HANDLE                     Controller,\r
+  IN  UINTN                          NumberOfChildren,\r
+  IN  EFI_HANDLE                     *ChildHandleBuffer\r
+  );\r
+\r
+EFI_STATUS\r
+AppendMac2DevPath (\r
+  IN OUT  EFI_DEVICE_PATH_PROTOCOL **DevPtr,\r
+  IN      EFI_DEVICE_PATH_PROTOCOL *BaseDevPtr,\r
+  IN      NIC_DATA_INSTANCE        *AdapterInfo\r
+  );\r
+\r
+VOID\r
+TmpDelay (\r
+  IN UINT64 UnqId,\r
+  IN UINTN MicroSeconds\r
+  );\r
+\r
+VOID\r
+TmpMemIo (\r
+  IN UINT64 UnqId,\r
+  IN UINT8 ReadWrite,\r
+  IN UINT8 Len,\r
+  IN UINT64 Port,\r
+  IN UINT64 BufAddr\r
+  );\r
+\r
+//\r
+// functions defined in decode.c\r
+//\r
+VOID\r
+UNDI_GetState (\r
+  IN  PXE_CDB           *CdbPtr,\r
+  IN  NIC_DATA_INSTANCE *AdapterInfo\r
+  );\r
+\r
+VOID\r
+UNDI_Start (\r
+  IN  PXE_CDB           *CdbPtr,\r
+  IN  NIC_DATA_INSTANCE *AdapterInfo\r
+  );\r
+\r
+VOID\r
+UNDI_Stop (\r
+  IN  PXE_CDB           *CdbPtr,\r
+  IN  NIC_DATA_INSTANCE *AdapterInfo\r
+  );\r
+\r
+VOID\r
+UNDI_GetInitInfo (\r
+  IN  PXE_CDB           *CdbPtr,\r
+  IN  NIC_DATA_INSTANCE *AdapterInfo\r
+  );\r
+\r
+VOID\r
+UNDI_GetConfigInfo (\r
+  IN  PXE_CDB           *CdbPtr,\r
+  IN  NIC_DATA_INSTANCE *AdapterInfo\r
+  );\r
+\r
+VOID\r
+UNDI_Initialize (\r
+  IN  PXE_CDB       *CdbPtr,\r
+  NIC_DATA_INSTANCE *AdapterInfo\r
+  );\r
+\r
+VOID\r
+UNDI_Reset (\r
+  IN  PXE_CDB           *CdbPtr,\r
+  IN  NIC_DATA_INSTANCE *AdapterInfo\r
+  );\r
+\r
+VOID\r
+UNDI_Shutdown (\r
+  IN  PXE_CDB           *CdbPtr,\r
+  IN  NIC_DATA_INSTANCE *AdapterInfo\r
+  );\r
+\r
+VOID\r
+UNDI_Interrupt (\r
+  IN  PXE_CDB           *CdbPtr,\r
+  IN  NIC_DATA_INSTANCE *AdapterInfo\r
+  );\r
+\r
+VOID\r
+UNDI_RecFilter (\r
+  IN  PXE_CDB           *CdbPtr,\r
+  IN  NIC_DATA_INSTANCE *AdapterInfo\r
+  );\r
+\r
+VOID\r
+UNDI_StnAddr (\r
+  IN  PXE_CDB           *CdbPtr,\r
+  IN  NIC_DATA_INSTANCE *AdapterInfo\r
+  );\r
+\r
+VOID\r
+UNDI_Statistics (\r
+  IN  PXE_CDB           *CdbPtr,\r
+  IN  NIC_DATA_INSTANCE *AdapterInfo\r
+  );\r
+\r
+VOID\r
+UNDI_ip2mac (\r
+  IN  PXE_CDB           *CdbPtr,\r
+  IN  NIC_DATA_INSTANCE *AdapterInfo\r
+  );\r
+\r
+VOID\r
+UNDI_NVData (\r
+  IN  PXE_CDB           *CdbPtr,\r
+  IN  NIC_DATA_INSTANCE *AdapterInfo\r
+  );\r
+\r
+VOID\r
+UNDI_Status (\r
+  IN  PXE_CDB           *CdbPtr,\r
+  IN  NIC_DATA_INSTANCE *AdapterInfo\r
+  );\r
+\r
+VOID\r
+UNDI_FillHeader (\r
+  IN  PXE_CDB           *CdbPtr,\r
+  IN  NIC_DATA_INSTANCE *AdapterInfo\r
+  );\r
+\r
+VOID\r
+UNDI_Transmit (\r
+  IN  PXE_CDB           *CdbPtr,\r
+  IN  NIC_DATA_INSTANCE *AdapterInfo\r
+  );\r
+\r
+VOID\r
+UNDI_Receive (\r
+  IN  PXE_CDB           *CdbPtr,\r
+  IN  NIC_DATA_INSTANCE *AdapterInfo\r
+  );\r
+\r
+VOID UNDI_APIEntry_new(UINT64);\r
+VOID UNDI_APIEntry_Common(UINT64);\r
+\r
+PXE_IPV4 convert_mcip(PXE_MAC_ADDR *);\r
+INT32 validate_mcip (PXE_MAC_ADDR *MCastAddr);\r
+\r
+VOID PxeStructInit (PXE_SW_UNDI *PxePtr);\r
+VOID PxeUpdate (NIC_DATA_INSTANCE *NicPtr, PXE_SW_UNDI *PxePtr);\r
+\r
+#endif\r