+++ /dev/null
-\r
-/*++\r
-\r
-Copyright (c) 2006, 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
-Module Name:\r
-\r
- undi32.h\r
-\r
-Abstract:\r
-\r
- EFI internal structures for the EFI UNDI driver\r
-\r
-\r
-\r
-Revision History\r
-\r
---*/\r
-\r
-#ifndef _UNDI_32_H_\r
-#define _UNDI_32_H_\r
-\r
-\r
-#include "E100b.h"\r
-#include <IndustryStandard/pci22.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 EFI_SIGNATURE_32('u','n','d','i')\r
-#define UNDI_DEV_FROM_THIS(a) CR(a, UNDI32_DEV, NIIProtocol, 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;\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; // !pxe structure\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_old(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, UINTN VersionFlag);\r
-VOID PxeUpdate (NIC_DATA_INSTANCE *NicPtr, PXE_SW_UNDI *PxePtr);\r
-\r
-#endif\r