diff options
Diffstat (limited to 'qemu/roms/ipxe/src/drivers/net/etherfabric_nic.h')
-rw-r--r-- | qemu/roms/ipxe/src/drivers/net/etherfabric_nic.h | 204 |
1 files changed, 0 insertions, 204 deletions
diff --git a/qemu/roms/ipxe/src/drivers/net/etherfabric_nic.h b/qemu/roms/ipxe/src/drivers/net/etherfabric_nic.h deleted file mode 100644 index a767e12a2..000000000 --- a/qemu/roms/ipxe/src/drivers/net/etherfabric_nic.h +++ /dev/null @@ -1,204 +0,0 @@ -/************************************************************************** - * - * Etherboot driver for Level 5 Etherfabric network cards - * - * Written by Michael Brown <mbrown@fensystems.co.uk> - * - * Copyright Fen Systems Ltd. 2005 - * Copyright Level 5 Networks Inc. 2005 - * - * This software may be used and distributed according to the terms of - * the GNU General Public License (GPL), incorporated herein by - * reference. Drivers based on or derived from this code fall under - * the GPL and must retain the authorship, copyright and license - * notice. - * - ************************************************************************** - */ - -FILE_LICENCE ( GPL_ANY ); - -#ifndef EFAB_NIC_H -#define EFAB_NIC_H -#include <ipxe/bitbash.h> -#include <ipxe/i2c.h> -#include <ipxe/spi.h> -#include <ipxe/nvo.h> -#include <ipxe/if_ether.h> -/************************************************************************** - * - * Constants and macros - * - ************************************************************************** - */ -/* Board IDs. Early boards have no board_type, (e.g. EF1002 and 401/403) - * But newer boards are getting bigger... - */ -typedef enum { - EFAB_BOARD_INVALID = 0, /* Early boards do not have board rev. info. */ - EFAB_BOARD_SFE4001 = 1, - EFAB_BOARD_SFE4002 = 2, - EFAB_BOARD_SFE4003 = 3, - /* Insert new types before here */ - EFAB_BOARD_MAX -} efab_board_type; - -/* PHY types. */ -typedef enum { - PHY_TYPE_AUTO = 0, /* on development board detect between CX4 & alaska */ - PHY_TYPE_CX4_RTMR = 1, - PHY_TYPE_1GIG_ALASKA = 2, - PHY_TYPE_10XPRESS = 3, - PHY_TYPE_XFP = 4, - PHY_TYPE_CX4 = 5, - PHY_TYPE_PM8358 = 6, -} phy_type_t; - -/************************************************************************** - * - * Hardware data structures and sizing - * - ************************************************************************** - */ - -#define dma_addr_t unsigned long -typedef efab_qword_t falcon_rx_desc_t; -typedef efab_qword_t falcon_tx_desc_t; -typedef efab_qword_t falcon_event_t; - -#define EFAB_BUF_ALIGN 4096 -#define EFAB_RXD_SIZE 512 -#define EFAB_TXD_SIZE 512 -#define EFAB_EVQ_SIZE 512 - -#define EFAB_NUM_RX_DESC 16 -#define EFAB_RX_BUF_SIZE 1600 - -/************************************************************************** - * - * Data structures - * - ************************************************************************** - */ - -struct efab_nic; - -/* A buffer table allocation backing a tx dma, rx dma or eventq */ -struct efab_special_buffer { - dma_addr_t dma_addr; - int id; -}; - -/* A TX queue */ -struct efab_tx_queue { - /* The hardware ring */ - falcon_tx_desc_t *ring; - - /* The software ring storing io_buffers. */ - struct io_buffer *buf[EFAB_TXD_SIZE]; - - /* The buffer table reservation pushed to hardware */ - struct efab_special_buffer entry; - - /* Software descriptor write ptr */ - unsigned int write_ptr; - - /* Hardware descriptor read ptr */ - unsigned int read_ptr; -}; - -/* An RX queue */ -struct efab_rx_queue { - /* The hardware ring */ - falcon_rx_desc_t *ring; - - /* The software ring storing io_buffers */ - struct io_buffer *buf[EFAB_NUM_RX_DESC]; - - /* The buffer table reservation pushed to hardware */ - struct efab_special_buffer entry; - - /* Descriptor write ptr, into both the hardware and software rings */ - unsigned int write_ptr; - - /* Hardware completion ptr */ - unsigned int read_ptr; -}; - -/* An event queue */ -struct efab_ev_queue { - /* The hardware ring to push to hardware. - * Must be the first entry in the structure */ - falcon_event_t *ring; - - /* The buffer table reservation pushed to hardware */ - struct efab_special_buffer entry; - - /* Pointers into the ring */ - unsigned int read_ptr; -}; - -struct efab_mac_operations { - int ( * init ) ( struct efab_nic *efab ); -}; - -struct efab_phy_operations { - int ( * init ) ( struct efab_nic *efab ); - unsigned int mmds; -}; - -struct efab_board_operations { - int ( * init ) ( struct efab_nic *efab ); - void ( * fini ) ( struct efab_nic *efab ); -}; - -struct efab_nic { - struct net_device *netdev; - int pci_revision; - int is_asic; - - /* I2C bit-bashed interface */ - struct i2c_bit_basher i2c_bb; - - /** SPI bus and devices, and the user visible NVO area */ - struct spi_bus spi_bus; - struct spi_device spi_flash; - struct spi_device spi_eeprom; - struct spi_device *spi; - struct nvo_block nvo; - - /** Board, MAC, and PHY operations tables */ - struct efab_board_operations *board_op; - struct efab_mac_operations *mac_op; - struct efab_phy_operations *phy_op; - - /* PHY and board types */ - int phy_addr; - int phy_type; - int phy_10g; - int board_type; - - /** Memory and IO base */ - void *membase; - unsigned int iobase; - - /* Buffer table allocation head */ - int buffer_head; - - /* Queues */ - struct efab_rx_queue rx_queue; - struct efab_tx_queue tx_queue; - struct efab_ev_queue ev_queue; - - /** MAC address */ - uint8_t mac_addr[ETH_ALEN]; - /** GMII link options */ - unsigned int link_options; - /** Link status */ - int link_up; - - /** INT_REG_KER */ - efab_oword_t int_ker __attribute__ (( aligned ( 16 ) )); -}; -#endif /* EFAB_NIC_H */ - |