net: add FTGMAC100 support
The FTGMAC100 device is an Ethernet controller with DMA function that can be found on Aspeed SoCs (which include NCSI). It is fully compliant with IEEE 802.3 specification for 10/100 Mbps Ethernet and IEEE 802.3z specification for 1000 Mbps Ethernet and includes Reduced Media Independent Interface (RMII) and Reduced Gigabit Media Independent Interface (RGMII) interfaces. It adopts an AHB bus interface and integrates a link list DMA engine with direct M-Bus accesses for transmitting and receiving packets. It has independent TX/RX fifos, supports half and full duplex (1000 Mbps mode only supports full duplex), flow control for full duplex and backpressure for half duplex. The FTGMAC100 also implements IP, TCP, UDP checksum offloads and supports IEEE 802.1Q VLAN tag insertion and removal. It offers high-priority transmit queue for QoS and CoS applications This model is backed with a RealTek 8211E PHY which is the chip found on the AST2500 EVB. It is complete enough to satisfy two different Linux drivers and a U-Boot driver. Not supported features are : - IEEE 802.1Q VLAN - High Priority Transmit Queue - Wake-On-LAN functions The code is based on the Coldfire Fast Ethernet Controller model. Signed-off-by: Cédric Le Goater <clg@kaod.org> Signed-off-by: Jason Wang <jasowang@redhat.com>
This commit is contained in:
parent
30adcc8fab
commit
bd44300d1a
@ -29,6 +29,7 @@ CONFIG_LAN9118=y
|
||||
CONFIG_SMC91C111=y
|
||||
CONFIG_ALLWINNER_EMAC=y
|
||||
CONFIG_IMX_FEC=y
|
||||
CONFIG_FTGMAC100=y
|
||||
CONFIG_DS1338=y
|
||||
CONFIG_PFLASH_CFI01=y
|
||||
CONFIG_PFLASH_CFI02=y
|
||||
|
@ -26,6 +26,7 @@ common-obj-$(CONFIG_IMX_FEC) += imx_fec.o
|
||||
common-obj-$(CONFIG_CADENCE) += cadence_gem.o
|
||||
common-obj-$(CONFIG_STELLARIS_ENET) += stellaris_enet.o
|
||||
common-obj-$(CONFIG_LANCE) += lance.o
|
||||
common-obj-$(CONFIG_FTGMAC100) += ftgmac100.o
|
||||
|
||||
obj-$(CONFIG_ETRAXFS) += etraxfs_eth.o
|
||||
obj-$(CONFIG_COLDFIRE) += mcf_fec.o
|
||||
|
1003
hw/net/ftgmac100.c
Normal file
1003
hw/net/ftgmac100.c
Normal file
File diff suppressed because it is too large
Load Diff
60
include/hw/net/ftgmac100.h
Normal file
60
include/hw/net/ftgmac100.h
Normal file
@ -0,0 +1,60 @@
|
||||
/*
|
||||
* Faraday FTGMAC100 Gigabit Ethernet
|
||||
*
|
||||
* Copyright (C) 2016-2017, IBM Corporation.
|
||||
*
|
||||
* This code is licensed under the GPL version 2 or later. See the
|
||||
* COPYING file in the top-level directory.
|
||||
*/
|
||||
|
||||
#ifndef FTGMAC100_H
|
||||
#define FTGMAC100_H
|
||||
|
||||
#define TYPE_FTGMAC100 "ftgmac100"
|
||||
#define FTGMAC100(obj) OBJECT_CHECK(FTGMAC100State, (obj), TYPE_FTGMAC100)
|
||||
|
||||
#include "hw/sysbus.h"
|
||||
#include "net/net.h"
|
||||
|
||||
typedef struct FTGMAC100State {
|
||||
/*< private >*/
|
||||
SysBusDevice parent_obj;
|
||||
|
||||
/*< public >*/
|
||||
NICState *nic;
|
||||
NICConf conf;
|
||||
qemu_irq irq;
|
||||
MemoryRegion iomem;
|
||||
|
||||
uint8_t *frame;
|
||||
|
||||
uint32_t irq_state;
|
||||
uint32_t isr;
|
||||
uint32_t ier;
|
||||
uint32_t rx_enabled;
|
||||
uint32_t rx_ring;
|
||||
uint32_t rx_descriptor;
|
||||
uint32_t tx_ring;
|
||||
uint32_t tx_descriptor;
|
||||
uint32_t math[2];
|
||||
uint32_t rbsr;
|
||||
uint32_t itc;
|
||||
uint32_t aptcr;
|
||||
uint32_t dblac;
|
||||
uint32_t revr;
|
||||
uint32_t fear1;
|
||||
uint32_t tpafcr;
|
||||
uint32_t maccr;
|
||||
uint32_t phycr;
|
||||
uint32_t phydata;
|
||||
uint32_t fcr;
|
||||
|
||||
|
||||
uint32_t phy_status;
|
||||
uint32_t phy_control;
|
||||
uint32_t phy_advertise;
|
||||
uint32_t phy_int;
|
||||
uint32_t phy_int_mask;
|
||||
} FTGMAC100State;
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue
Block a user