#define pr_fmt(fmt) …
#include <linux/dma-mapping.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/netdevice.h>
#include <linux/mii.h>
#include <linux/etherdevice.h>
#include <linux/ethtool.h>
#include <linux/interrupt.h>
#include <linux/moduleparam.h>
#include <linux/platform_device.h>
#include <linux/delay.h>
#include <linux/io.h>
#include <linux/slab.h>
#include <linux/platform_data/eth-ep93xx.h>
#define DRV_MODULE_NAME …
#define RX_QUEUE_ENTRIES …
#define TX_QUEUE_ENTRIES …
#define MAX_PKT_SIZE …
#define PKT_BUF_SIZE …
#define REG_RXCTL …
#define REG_RXCTL_DEFAULT …
#define REG_TXCTL …
#define REG_TXCTL_ENABLE …
#define REG_MIICMD …
#define REG_MIICMD_READ …
#define REG_MIICMD_WRITE …
#define REG_MIIDATA …
#define REG_MIISTS …
#define REG_MIISTS_BUSY …
#define REG_SELFCTL …
#define REG_SELFCTL_RESET …
#define REG_INTEN …
#define REG_INTEN_TX …
#define REG_INTEN_RX …
#define REG_INTSTSP …
#define REG_INTSTS_TX …
#define REG_INTSTS_RX …
#define REG_INTSTSC …
#define REG_AFP …
#define REG_INDAD0 …
#define REG_INDAD1 …
#define REG_INDAD2 …
#define REG_INDAD3 …
#define REG_INDAD4 …
#define REG_INDAD5 …
#define REG_GIINTMSK …
#define REG_GIINTMSK_ENABLE …
#define REG_BMCTL …
#define REG_BMCTL_ENABLE_TX …
#define REG_BMCTL_ENABLE_RX …
#define REG_BMSTS …
#define REG_BMSTS_RX_ACTIVE …
#define REG_RXDQBADD …
#define REG_RXDQBLEN …
#define REG_RXDCURADD …
#define REG_RXDENQ …
#define REG_RXSTSQBADD …
#define REG_RXSTSQBLEN …
#define REG_RXSTSQCURADD …
#define REG_RXSTSENQ …
#define REG_TXDQBADD …
#define REG_TXDQBLEN …
#define REG_TXDQCURADD …
#define REG_TXDENQ …
#define REG_TXSTSQBADD …
#define REG_TXSTSQBLEN …
#define REG_TXSTSQCURADD …
#define REG_MAXFRMLEN …
struct ep93xx_rdesc
{ … };
#define RDESC1_NSOF …
#define RDESC1_BUFFER_INDEX …
#define RDESC1_BUFFER_LENGTH …
struct ep93xx_rstat
{ … };
#define RSTAT0_RFP …
#define RSTAT0_RWE …
#define RSTAT0_EOF …
#define RSTAT0_EOB …
#define RSTAT0_AM …
#define RSTAT0_RX_ERR …
#define RSTAT0_OE …
#define RSTAT0_FE …
#define RSTAT0_RUNT …
#define RSTAT0_EDATA …
#define RSTAT0_CRCE …
#define RSTAT0_CRCI …
#define RSTAT0_HTI …
#define RSTAT1_RFP …
#define RSTAT1_BUFFER_INDEX …
#define RSTAT1_FRAME_LENGTH …
struct ep93xx_tdesc
{ … };
#define TDESC1_EOF …
#define TDESC1_BUFFER_INDEX …
#define TDESC1_BUFFER_ABORT …
#define TDESC1_BUFFER_LENGTH …
struct ep93xx_tstat
{ … };
#define TSTAT0_TXFP …
#define TSTAT0_TXWE …
#define TSTAT0_FA …
#define TSTAT0_LCRS …
#define TSTAT0_OW …
#define TSTAT0_TXU …
#define TSTAT0_ECOLL …
#define TSTAT0_NCOLL …
#define TSTAT0_BUFFER_INDEX …
struct ep93xx_descs
{ … };
struct ep93xx_priv
{ … };
#define rdb(ep, off) …
#define rdw(ep, off) …
#define rdl(ep, off) …
#define wrb(ep, off, val) …
#define wrw(ep, off, val) …
#define wrl(ep, off, val) …
static int ep93xx_mdio_read(struct net_device *dev, int phy_id, int reg)
{ … }
static void ep93xx_mdio_write(struct net_device *dev, int phy_id, int reg, int data)
{ … }
static int ep93xx_rx(struct net_device *dev, int budget)
{ … }
static int ep93xx_poll(struct napi_struct *napi, int budget)
{ … }
static netdev_tx_t ep93xx_xmit(struct sk_buff *skb, struct net_device *dev)
{ … }
static void ep93xx_tx_complete(struct net_device *dev)
{ … }
static irqreturn_t ep93xx_irq(int irq, void *dev_id)
{ … }
static void ep93xx_free_buffers(struct ep93xx_priv *ep)
{ … }
static int ep93xx_alloc_buffers(struct ep93xx_priv *ep)
{ … }
static int ep93xx_start_hw(struct net_device *dev)
{ … }
static void ep93xx_stop_hw(struct net_device *dev)
{ … }
static int ep93xx_open(struct net_device *dev)
{ … }
static int ep93xx_close(struct net_device *dev)
{ … }
static int ep93xx_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
{ … }
static void ep93xx_get_drvinfo(struct net_device *dev, struct ethtool_drvinfo *info)
{ … }
static int ep93xx_get_link_ksettings(struct net_device *dev,
struct ethtool_link_ksettings *cmd)
{ … }
static int ep93xx_set_link_ksettings(struct net_device *dev,
const struct ethtool_link_ksettings *cmd)
{ … }
static int ep93xx_nway_reset(struct net_device *dev)
{ … }
static u32 ep93xx_get_link(struct net_device *dev)
{ … }
static const struct ethtool_ops ep93xx_ethtool_ops = …;
static const struct net_device_ops ep93xx_netdev_ops = …;
static struct net_device *ep93xx_dev_alloc(struct ep93xx_eth_data *data)
{ … }
static void ep93xx_eth_remove(struct platform_device *pdev)
{ … }
static int ep93xx_eth_probe(struct platform_device *pdev)
{ … }
static struct platform_driver ep93xx_eth_driver = …;
module_platform_driver(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
MODULE_ALIAS(…) …;