mirror of https://github.com/acidanthera/audk.git
267 lines
5.1 KiB
C
267 lines
5.1 KiB
C
/** @file
|
|
Header file for for USB network common driver
|
|
|
|
Copyright (c) 2023, American Megatrends International LLC. All rights reserved.<BR>
|
|
SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
**/
|
|
|
|
#ifndef DRIVER_BINDING_H_
|
|
#define DRIVER_BINDING_H_
|
|
|
|
#include <Library/UefiDriverEntryPoint.h>
|
|
#include <Library/UefiBootServicesTableLib.h>
|
|
#include <Library/UefiLib.h>
|
|
#include <Library/DevicePathLib.h>
|
|
#include <Library/DebugLib.h>
|
|
#include <Library/MemoryAllocationLib.h>
|
|
#include <Library/PcdLib.h>
|
|
#include <Library/BaseMemoryLib.h>
|
|
#include <Library/UefiUsbLib.h>
|
|
#include <Protocol/UsbIo.h>
|
|
#include <Protocol/NetworkInterfaceIdentifier.h>
|
|
#include <Protocol/UsbEthernetProtocol.h>
|
|
|
|
#define NETWORK_COMMON_DRIVER_VERSION 1
|
|
#define NETWORK_COMMON_POLLING_INTERVAL 0x10
|
|
#define RX_BUFFER_COUNT 32
|
|
#define TX_BUFFER_COUNT 32
|
|
#define MEMORY_REQUIRE 0
|
|
|
|
#define UNDI_DEV_SIGNATURE SIGNATURE_32('u','n','d','i')
|
|
#define UNDI_DEV_FROM_THIS(a) CR(a, NIC_DEVICE, NiiProtocol, UNDI_DEV_SIGNATURE)
|
|
#define UNDI_DEV_FROM_NIC(a) CR(a, NIC_DEVICE, NicInfo, UNDI_DEV_SIGNATURE)
|
|
|
|
#pragma pack(1)
|
|
typedef struct {
|
|
UINT8 DestAddr[PXE_HWADDR_LEN_ETHER];
|
|
UINT8 SrcAddr[PXE_HWADDR_LEN_ETHER];
|
|
UINT16 Protocol;
|
|
} ETHERNET_HEADER;
|
|
#pragma pack()
|
|
|
|
typedef struct {
|
|
UINTN Signature;
|
|
EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL NiiProtocol;
|
|
EFI_HANDLE DeviceHandle;
|
|
EFI_DEVICE_PATH_PROTOCOL *BaseDevPath;
|
|
EFI_DEVICE_PATH_PROTOCOL *DevPath;
|
|
NIC_DATA NicInfo;
|
|
VOID *ReceiveBuffer;
|
|
} NIC_DEVICE;
|
|
|
|
typedef VOID (*API_FUNC)(
|
|
PXE_CDB *,
|
|
NIC_DATA *
|
|
);
|
|
|
|
extern PXE_SW_UNDI *gPxe;
|
|
extern NIC_DEVICE *gLanDeviceList[MAX_LAN_INTERFACE];
|
|
extern EFI_COMPONENT_NAME2_PROTOCOL gNetworkCommonComponentName2;
|
|
|
|
EFI_STATUS
|
|
EFIAPI
|
|
NetworkCommonSupported (
|
|
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
|
IN EFI_HANDLE ControllerHandle,
|
|
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
|
);
|
|
|
|
EFI_STATUS
|
|
EFIAPI
|
|
NetworkCommonDriverStart (
|
|
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
|
IN EFI_HANDLE ControllerHandle,
|
|
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
|
);
|
|
|
|
EFI_STATUS
|
|
EFIAPI
|
|
NetworkCommonDriverStop (
|
|
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
|
IN EFI_HANDLE ControllerHandle,
|
|
IN UINTN NumberOfChildren,
|
|
IN EFI_HANDLE *ChildHandleBuffer
|
|
);
|
|
|
|
VOID
|
|
PxeStructInit (
|
|
OUT PXE_SW_UNDI *PxeSw
|
|
);
|
|
|
|
VOID
|
|
UpdateNicNum (
|
|
IN NIC_DATA *Nic,
|
|
IN OUT PXE_SW_UNDI *PxeSw
|
|
);
|
|
|
|
EFI_STATUS
|
|
EFIAPI
|
|
UndiApiEntry (
|
|
IN UINT64 Cdb
|
|
);
|
|
|
|
UINTN
|
|
MapIt (
|
|
IN NIC_DATA *Nic,
|
|
IN UINT64 MemAddr,
|
|
IN UINT32 Size,
|
|
IN UINT32 Direction,
|
|
OUT UINT64 MappedAddr
|
|
);
|
|
|
|
VOID
|
|
UnMapIt (
|
|
IN NIC_DATA *Nic,
|
|
IN UINT64 MemAddr,
|
|
IN UINT32 Size,
|
|
IN UINT32 Direction,
|
|
IN UINT64 MappedAddr
|
|
);
|
|
|
|
VOID
|
|
UndiGetState (
|
|
IN PXE_CDB *Cdb,
|
|
IN NIC_DATA *Nic
|
|
);
|
|
|
|
VOID
|
|
UndiStart (
|
|
IN PXE_CDB *Cdb,
|
|
IN NIC_DATA *Nic
|
|
);
|
|
|
|
VOID
|
|
UndiStop (
|
|
IN PXE_CDB *Cdb,
|
|
IN NIC_DATA *Nic
|
|
);
|
|
|
|
VOID
|
|
UndiGetInitInfo (
|
|
IN PXE_CDB *Cdb,
|
|
IN NIC_DATA *Nic
|
|
);
|
|
|
|
VOID
|
|
UndiGetConfigInfo (
|
|
IN PXE_CDB *Cdb,
|
|
IN NIC_DATA *Nic
|
|
);
|
|
|
|
VOID
|
|
UndiInitialize (
|
|
IN PXE_CDB *Cdb,
|
|
IN OUT NIC_DATA *Nic
|
|
);
|
|
|
|
VOID
|
|
UndiReset (
|
|
IN PXE_CDB *Cdb,
|
|
IN NIC_DATA *Nic
|
|
);
|
|
|
|
VOID
|
|
UndiShutdown (
|
|
IN PXE_CDB *Cdb,
|
|
IN OUT NIC_DATA *Nic
|
|
);
|
|
|
|
VOID
|
|
UndiInterruptEnable (
|
|
IN PXE_CDB *Cdb,
|
|
IN NIC_DATA *Nic
|
|
);
|
|
|
|
VOID
|
|
UndiReceiveFilter (
|
|
IN PXE_CDB *Cdb,
|
|
IN NIC_DATA *Nic
|
|
);
|
|
|
|
VOID
|
|
UndiStationAddress (
|
|
IN PXE_CDB *Cdb,
|
|
IN NIC_DATA *Nic
|
|
);
|
|
|
|
VOID
|
|
UndiStatistics (
|
|
IN PXE_CDB *Cdb,
|
|
IN NIC_DATA *Nic
|
|
);
|
|
|
|
VOID
|
|
UndiMcastIp2Mac (
|
|
IN OUT PXE_CDB *Cdb,
|
|
IN NIC_DATA *Nic
|
|
);
|
|
|
|
VOID
|
|
UndiNvData (
|
|
IN PXE_CDB *Cdb,
|
|
IN NIC_DATA *Nic
|
|
);
|
|
|
|
VOID
|
|
UndiGetStatus (
|
|
IN PXE_CDB *Cdb,
|
|
IN NIC_DATA *Nic
|
|
);
|
|
|
|
VOID
|
|
UndiFillHeader (
|
|
IN PXE_CDB *Cdb,
|
|
IN NIC_DATA *Nic
|
|
);
|
|
|
|
VOID
|
|
UndiTransmit (
|
|
IN PXE_CDB *Cdb,
|
|
IN NIC_DATA *Nic
|
|
);
|
|
|
|
VOID
|
|
UndiReceive (
|
|
IN PXE_CDB *Cdb,
|
|
IN NIC_DATA *Nic
|
|
);
|
|
|
|
UINT16
|
|
Initialize (
|
|
IN PXE_CDB *Cdb,
|
|
IN OUT NIC_DATA *Nic
|
|
);
|
|
|
|
UINT16
|
|
Transmit (
|
|
IN PXE_CDB *Cdb,
|
|
IN OUT NIC_DATA *Nic,
|
|
IN UINT64 CpbAddr,
|
|
IN UINT16 OpFlags
|
|
);
|
|
|
|
UINT16
|
|
Receive (
|
|
IN PXE_CDB *Cdb,
|
|
IN OUT NIC_DATA *Nic,
|
|
IN UINT64 CpbAddr,
|
|
IN OUT UINT64 DbAddr
|
|
);
|
|
|
|
UINT16
|
|
SetFilter (
|
|
IN NIC_DATA *Nic,
|
|
IN UINT16 SetFilter,
|
|
IN UINT64 CpbAddr,
|
|
IN UINT32 CpbSize
|
|
);
|
|
|
|
UINT16
|
|
Statistics (
|
|
IN NIC_DATA *Nic,
|
|
IN UINT64 DbAddr,
|
|
IN UINT16 DbSize
|
|
);
|
|
|
|
#endif
|