+++ /dev/null
-/** @file\r
-*\r
-* Copyright (c) 2012-2014, ARM Limited. All rights reserved.\r
-*\r
-* SPDX-License-Identifier: BSD-2-Clause-Patent\r
-*\r
-**/\r
-\r
-#ifndef __LAN9118_DXE_UTIL_H__\r
-#define __LAN9118_DXE_UTIL_H__\r
-\r
-// Most common CRC32 Polynomial for little endian machines\r
-#define CRC_POLYNOMIAL 0xEDB88320\r
-\r
-/**\r
- This internal function reverses bits for 32bit data.\r
-\r
- @param Value The data to be reversed.\r
-\r
- @return Data reversed.\r
-\r
-**/\r
-UINT32\r
-ReverseBits (\r
- UINT32 Value\r
- );\r
-\r
-// Create an Ethernet CRC\r
-UINT32\r
-GenEtherCrc32 (\r
- IN EFI_MAC_ADDRESS *Mac,\r
- IN UINT32 AddrLen\r
- );\r
-\r
-UINT32\r
-Lan9118RawMmioRead32(\r
- UINTN Address,\r
- UINTN Delay\r
- );\r
-#define Lan9118MmioRead32(a) \\r
- Lan9118RawMmioRead32(a, a ## _RD_DELAY)\r
-\r
-UINT32\r
-Lan9118RawMmioWrite32(\r
- UINTN Address,\r
- UINT32 Value,\r
- UINTN Delay\r
- );\r
-#define Lan9118MmioWrite32(a, v) \\r
- Lan9118RawMmioWrite32(a, v, a ## _WR_DELAY)\r
-\r
-/* ------------------ MAC CSR Access ------------------- */\r
-\r
-// Read from MAC indirect registers\r
-UINT32\r
-IndirectMACRead32 (\r
- UINT32 Index\r
- );\r
-\r
-\r
-// Write to indirect registers\r
-UINT32\r
-IndirectMACWrite32 (\r
- UINT32 Index,\r
- UINT32 Value\r
- );\r
-\r
-\r
-/* --------------- PHY Registers Access ---------------- */\r
-\r
-// Read from MII register (PHY Access)\r
-UINT32\r
-IndirectPHYRead32(\r
- UINT32 Index\r
- );\r
-\r
-\r
-// Write to the MII register (PHY Access)\r
-UINT32\r
-IndirectPHYWrite32(\r
- UINT32 Index,\r
- UINT32 Value\r
- );\r
-\r
-/* ---------------- EEPROM Operations ------------------ */\r
-\r
-// Read from EEPROM memory\r
-UINT32\r
-IndirectEEPROMRead32 (\r
- UINT32 Index\r
- );\r
-\r
-// Write to EEPROM memory\r
-UINT32\r
-IndirectEEPROMWrite32 (\r
- UINT32 Index,\r
- UINT32 Value\r
- );\r
-\r
-/* ---------------- General Operations ----------------- */\r
-\r
-VOID\r
-Lan9118SetMacAddress (\r
- EFI_MAC_ADDRESS *Mac,\r
- EFI_SIMPLE_NETWORK_PROTOCOL *Snp\r
- );\r
-\r
-// Initialise the LAN9118\r
-EFI_STATUS\r
-Lan9118Initialize (\r
- IN EFI_SIMPLE_NETWORK_PROTOCOL *Snp\r
- );\r
-\r
-// Flags for software reset\r
-#define SOFT_RESET_CHECK_MAC_ADDR_LOAD BIT0\r
-#define SOFT_RESET_CLEAR_INT BIT1\r
-#define SOFT_RESET_SELF_TEST BIT2\r
-\r
-// Perform software reset on the LAN9118\r
-EFI_STATUS\r
-SoftReset (\r
- UINT32 Flags,\r
- EFI_SIMPLE_NETWORK_PROTOCOL *Snp\r
- );\r
-\r
-// Flags for PHY reset\r
-#define PHY_RESET_PMT BIT0\r
-#define PHY_RESET_BCR BIT1\r
-#define PHY_SOFT_RESET_CLEAR_INT BIT2\r
-\r
-// Perform PHY software reset\r
-EFI_STATUS\r
-PhySoftReset (\r
- UINT32 Flags,\r
- EFI_SIMPLE_NETWORK_PROTOCOL *Snp\r
- );\r
-\r
-// Flags for Hardware configuration\r
-#define HW_CONF_USE_LEDS BIT0\r
-\r
-// Configure hardware for LAN9118\r
-EFI_STATUS\r
-ConfigureHardware (\r
- UINT32 Flags,\r
- EFI_SIMPLE_NETWORK_PROTOCOL *Snp\r
- );\r
-\r
-// Configure flow control\r
-EFI_STATUS\r
-ConfigureFlow (\r
- UINT32 Flags,\r
- UINT32 HighTrig,\r
- UINT32 LowTrig,\r
- UINT32 BPDuration,\r
- EFI_SIMPLE_NETWORK_PROTOCOL *Snp\r
- );\r
-\r
-// Flags for auto negotiation\r
-#define AUTO_NEGOTIATE_COLLISION_TEST BIT0\r
-#define AUTO_NEGOTIATE_ADVERTISE_ALL BIT1\r
-\r
-// Do auto-negotiation\r
-EFI_STATUS\r
-AutoNegotiate (\r
- UINT32 Flags,\r
- EFI_SIMPLE_NETWORK_PROTOCOL *Snp\r
- );\r
-\r
-// Check the Link Status and take appropriate action\r
-EFI_STATUS\r
-CheckLinkStatus (\r
- UINT32 Flags,\r
- EFI_SIMPLE_NETWORK_PROTOCOL *Snp\r
- );\r
-\r
-// Stop transmitter flags\r
-#define STOP_TX_MAC BIT0\r
-#define STOP_TX_CFG BIT1\r
-#define STOP_TX_CLEAR BIT2\r
-\r
-// Stop the transmitter\r
-EFI_STATUS\r
-StopTx (\r
- UINT32 Flags,\r
- EFI_SIMPLE_NETWORK_PROTOCOL *Snp\r
- );\r
-\r
-// Stop receiver flags\r
-#define STOP_RX_CLEAR BIT0\r
-\r
-// Stop the receiver\r
-EFI_STATUS\r
-StopRx (\r
- UINT32 Flags,\r
- EFI_SIMPLE_NETWORK_PROTOCOL *Snp\r
- );\r
-\r
-// Start transmitter flags\r
-#define START_TX_MAC BIT0\r
-#define START_TX_CFG BIT1\r
-#define START_TX_CLEAR BIT2\r
-\r
-// Start the transmitter\r
-EFI_STATUS\r
-StartTx (\r
- UINT32 Flags,\r
- EFI_SIMPLE_NETWORK_PROTOCOL *Snp\r
- );\r
-\r
-// Stop receiver flags\r
-#define START_RX_CLEAR BIT0\r
-\r
-// Start the receiver\r
-EFI_STATUS\r
-StartRx (\r
- UINT32 Flags,\r
- EFI_SIMPLE_NETWORK_PROTOCOL *Snp\r
- );\r
-\r
-// Check Tx Data available space\r
-UINT32\r
-TxDataFreeSpace (\r
- UINT32 Flags,\r
- EFI_SIMPLE_NETWORK_PROTOCOL *Snp\r
- );\r
-\r
-// Check Tx Status used space\r
-UINT32\r
-TxStatusUsedSpace (\r
- UINT32 Flags,\r
- EFI_SIMPLE_NETWORK_PROTOCOL *Snp\r
- );\r
-\r
-// Check Rx Data used space\r
-UINT32\r
-RxDataUsedSpace (\r
- UINT32 Flags,\r
- EFI_SIMPLE_NETWORK_PROTOCOL *Snp\r
- );\r
-\r
-// Check Rx Status used space\r
-UINT32\r
-RxStatusUsedSpace (\r
- UINT32 Flags,\r
- EFI_SIMPLE_NETWORK_PROTOCOL *Snp\r
- );\r
-\r
-\r
-// Flags for FIFO allocation\r
-#define ALLOC_USE_DEFAULT BIT0\r
-#define ALLOC_USE_FIFOS BIT1\r
-#define ALLOC_USE_DMA BIT2\r
-\r
-// FIFO min and max sizes\r
-#define TX_FIFO_MIN_SIZE 0x00000600\r
-#define TX_FIFO_MAX_SIZE 0x00003600\r
-//#define RX_FIFO_MIN_SIZE\r
-//#define RX_FIFO_MAX_SIZE\r
-\r
-// Change the allocation of FIFOs\r
-EFI_STATUS\r
-ChangeFifoAllocation (\r
- IN UINT32 Flags,\r
- IN OUT UINTN *TxDataSize OPTIONAL,\r
- IN OUT UINTN *RxDataSize OPTIONAL,\r
- IN OUT UINT32 *TxStatusSize OPTIONAL,\r
- IN OUT UINT32 *RxStatusSize OPTIONAL,\r
- IN OUT EFI_SIMPLE_NETWORK_PROTOCOL *Snp\r
- );\r
-\r
-VOID\r
-Lan9118ReadMacAddress (\r
- OUT EFI_MAC_ADDRESS *Mac\r
- );\r
-\r
-#endif // __LAN9118_DXE_UTIL_H__\r