EmbeddedPkg: Added Lan9118 Dxe driver
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Olivier Martin <olivier.martin@arm.com> Signed-off-by: Brendan Jackman <brendan.jackman@arm.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15485 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
committed by
oliviermartin
parent
4d6e1e5a06
commit
46f2c53b54
303
EmbeddedPkg/Drivers/Lan9118Dxe/Lan9118Dxe.h
Normal file
303
EmbeddedPkg/Drivers/Lan9118Dxe/Lan9118Dxe.h
Normal file
@@ -0,0 +1,303 @@
|
||||
/** @file
|
||||
*
|
||||
* Copyright (c) 2012-2014, ARM Limited. All rights reserved.
|
||||
*
|
||||
* This program and the accompanying materials
|
||||
* are licensed and made available under the terms and conditions of the BSD License
|
||||
* which accompanies this distribution. The full text of the license may be found at
|
||||
* http://opensource.org/licenses/bsd-license.php
|
||||
*
|
||||
* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
*
|
||||
**/
|
||||
|
||||
#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__
|
Reference in New Issue
Block a user