123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297 |
- /** @file
- *
- * Copyright (c) 2012-2014, ARM Limited. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-2-Clause-Patent
- *
- **/
- #ifndef __LAN9118_DXE_H__
- #define __LAN9118_DXE_H__
- #include <Uefi.h>
- #include <Uefi/UefiSpec.h>
- #include <Base.h>
- // Protocols used by this driver
- #include <Protocol/SimpleNetwork.h>
- #include <Protocol/ComponentName2.h>
- #include <Protocol/PxeBaseCode.h>
- #include <Protocol/DevicePath.h>
- // Libraries used by this driver
- #include <Library/UefiLib.h>
- #include <Library/DebugLib.h>
- #include <Library/UefiBootServicesTableLib.h>
- #include <Library/MemoryAllocationLib.h>
- #include <Library/IoLib.h>
- #include <Library/PcdLib.h>
- #include <Library/NetLib.h>
- #include <Library/DevicePathLib.h>
- #include "Lan9118DxeUtil.h"
- #include "Lan9118DxeHw.h"
- #define LAN9118_STALL 2
- #define LAN9118_DEFAULT_MAC_ADDRL 0x00F70200
- #define LAN9118_DEFAULT_MAC_ADDRH 0x00009040
- #define LAN9118_TX_DATA_SIZE 4608
- #define LAN9118_TX_STATUS_SIZE 512
- #define LAN9118_RX_DATA_SIZE 10560
- #define LAN9118_RX_STATUS_SIZE 704
- #define LAN9118_TX_RING_NUM_ENTRIES 32
- /*------------------------------------------------------------------------------
- LAN9118 Information Structure
- ------------------------------------------------------------------------------*/
- typedef struct {
- // Driver signature
- UINT32 Signature;
- EFI_HANDLE ControllerHandle;
- // EFI SNP protocol instances
- EFI_SIMPLE_NETWORK_PROTOCOL Snp;
- EFI_SIMPLE_NETWORK_MODE SnpMode;
- // EFI Snp statistics instance
- EFI_NETWORK_STATISTICS Stats;
- // Saved transmitted buffers so we can notify consumers when packets have been sent.
- UINT16 NextPacketTag;
- VOID *TxRing[LAN9118_TX_RING_NUM_ENTRIES];
- } LAN9118_DRIVER;
- #define LAN9118_SIGNATURE SIGNATURE_32('l', 'a', 'n', '9')
- #define INSTANCE_FROM_SNP_THIS(a) CR(a, LAN9118_DRIVER, Snp, LAN9118_SIGNATURE)
- /*---------------------------------------------------------------------------------------------------------------------
- UEFI-Compliant functions for EFI_SIMPLE_NETWORK_PROTOCOL
- Refer to the Simple Network Protocol section (21.1) in the UEFI 2.3.1 Specification for related definitions
- ---------------------------------------------------------------------------------------------------------------------*/
- /*
- * UEFI Start() function
- *
- * Parameters:
- *
- * @param pobj: A pointer to the EFI_SIMPLE_NETWORK_PROTOCOL instance.
- *
- * Description:
- *
- * This function starts a network interface. If the network interface successfully starts, then
- * EFI_SUCCESS will be returned.
- */
- EFI_STATUS
- EFIAPI
- SnpStart (
- IN EFI_SIMPLE_NETWORK_PROTOCOL* Snp
- );
- /*
- * UEFI Stop() function
- *
- */
- EFI_STATUS
- EFIAPI
- SnpStop (
- IN EFI_SIMPLE_NETWORK_PROTOCOL* Snp
- );
- /*
- * UEFI Initialize() function
- *
- */
- EFI_STATUS
- EFIAPI
- SnpInitialize (
- IN EFI_SIMPLE_NETWORK_PROTOCOL* Snp,
- IN UINTN rx_buff_size,
- IN UINTN tx_buff_size
- );
- /*
- * UEFI Reset() function
- *
- */
- EFI_STATUS
- EFIAPI
- SnpReset (
- IN EFI_SIMPLE_NETWORK_PROTOCOL* Snp,
- IN BOOLEAN ext_ver
- );
- /*
- * UEFI Shutdown() function
- *
- */
- EFI_STATUS
- EFIAPI
- SnpShutdown (
- IN EFI_SIMPLE_NETWORK_PROTOCOL* Snp
- );
- /*
- * UEFI ReceiveFilters() function
- *
- */
- EFI_STATUS
- EFIAPI
- SnpReceiveFilters (
- IN EFI_SIMPLE_NETWORK_PROTOCOL* Snp,
- IN UINT32 enable,
- IN UINT32 disable,
- IN BOOLEAN reset_mfilter,
- IN UINTN num_mfilter,
- IN EFI_MAC_ADDRESS *mfilter
- );
- /*
- * UEFI StationAddress() function
- *
- */
- EFI_STATUS
- EFIAPI
- SnpStationAddress (
- IN EFI_SIMPLE_NETWORK_PROTOCOL* Snp,
- IN BOOLEAN reset,
- IN EFI_MAC_ADDRESS *new_maddr
- );
- /*
- * UEFI Statistics() function
- *
- */
- EFI_STATUS
- EFIAPI
- SnpStatistics (
- IN EFI_SIMPLE_NETWORK_PROTOCOL* Snp,
- IN BOOLEAN reset,
- IN OUT UINTN *stat_size,
- OUT EFI_NETWORK_STATISTICS *stat_table
- );
- /*
- * UEFI MCastIPtoMAC() function
- *
- */
- EFI_STATUS
- EFIAPI
- SnpMcastIptoMac (
- IN EFI_SIMPLE_NETWORK_PROTOCOL* Snp,
- IN BOOLEAN use_ipv6,
- IN EFI_IP_ADDRESS *ip_addr,
- OUT EFI_MAC_ADDRESS *mac_addr
- );
- /*
- * UEFI NvData() function
- *
- */
- EFI_STATUS
- EFIAPI
- SnpNvData (
- IN EFI_SIMPLE_NETWORK_PROTOCOL* Snp,
- IN BOOLEAN read_write,
- IN UINTN offset,
- IN UINTN buff_size,
- IN OUT VOID *data
- );
- /*
- * UEFI GetStatus() function
- *
- */
- EFI_STATUS
- EFIAPI
- SnpGetStatus (
- IN EFI_SIMPLE_NETWORK_PROTOCOL* Snp,
- OUT UINT32 *irq_stat OPTIONAL,
- OUT VOID **tx_buff OPTIONAL
- );
- /*
- * UEFI Transmit() function
- *
- */
- EFI_STATUS
- EFIAPI
- SnpTransmit (
- IN EFI_SIMPLE_NETWORK_PROTOCOL* Snp,
- IN UINTN hdr_size,
- IN UINTN buff_size,
- IN VOID *data,
- IN EFI_MAC_ADDRESS *src_addr OPTIONAL,
- IN EFI_MAC_ADDRESS *dest_addr OPTIONAL,
- IN UINT16 *protocol OPTIONAL
- );
- /*
- * UEFI Receive() function
- *
- */
- EFI_STATUS
- EFIAPI
- SnpReceive (
- IN EFI_SIMPLE_NETWORK_PROTOCOL* Snp,
- OUT UINTN *hdr_size OPTIONAL,
- IN OUT UINTN *buff_size,
- OUT VOID *data,
- OUT EFI_MAC_ADDRESS *src_addr OPTIONAL,
- OUT EFI_MAC_ADDRESS *dest_addr OPTIONAL,
- OUT UINT16 *protocol OPTIONAL
- );
- /*---------------------------------------------------------------------------------------------------------------------
- UEFI-Compliant functions for EFI_COMPONENT_NAME2_PROTOCOL
- Refer to the Component Name Protocol section (10.5) in the UEFI 2.3.1 Specification for related definitions
- ---------------------------------------------------------------------------------------------------------------------*/
- /*
- * UEFI GetDriverName() function
- *
- */
- EFI_STATUS
- EFIAPI
- SnpGetDriverName (
- IN EFI_COMPONENT_NAME2_PROTOCOL *Snp,
- IN CHAR8 *Lang,
- OUT CHAR16 **DriverName
- );
- /*
- * UEFI GetControllerName() function
- *
- */
- EFI_STATUS
- EFIAPI
- SnpGetControllerName (
- IN EFI_COMPONENT_NAME2_PROTOCOL *Cnp,
- IN EFI_HANDLE ControllerHandle,
- IN EFI_HANDLE ChildHandle OPTIONAL,
- IN CHAR8 *Lang,
- OUT CHAR16 **ControllerName
- );
- /*------------------------------------------------------------------------------
- Utility functions
- ------------------------------------------------------------------------------*/
- EFI_MAC_ADDRESS
- GetCurrentMacAddress (
- VOID
- );
- #endif // __LAN9118_DXE_H__
|