|
@@ -140,21 +140,6 @@ MODULE_PARM_DESC(macaddr, "FEC Ethernet MAC address");
|
|
|
#endif
|
|
|
#endif /* CONFIG_M5272 */
|
|
|
|
|
|
-/* The number of Tx and Rx buffers. These are allocated from the page
|
|
|
- * pool. The code may assume these are power of two, so it it best
|
|
|
- * to keep them that size.
|
|
|
- * We don't need to allocate pages for the transmitter. We just use
|
|
|
- * the skbuffer directly.
|
|
|
- */
|
|
|
-#define FEC_ENET_RX_PAGES 8
|
|
|
-#define FEC_ENET_RX_FRSIZE 2048
|
|
|
-#define FEC_ENET_RX_FRPPG (PAGE_SIZE / FEC_ENET_RX_FRSIZE)
|
|
|
-#define RX_RING_SIZE (FEC_ENET_RX_FRPPG * FEC_ENET_RX_PAGES)
|
|
|
-#define FEC_ENET_TX_FRSIZE 2048
|
|
|
-#define FEC_ENET_TX_FRPPG (PAGE_SIZE / FEC_ENET_TX_FRSIZE)
|
|
|
-#define TX_RING_SIZE 16 /* Must be power of two */
|
|
|
-#define TX_RING_MOD_MASK 15 /* for this to work */
|
|
|
-
|
|
|
#if (((RX_RING_SIZE + TX_RING_SIZE) * 8) > PAGE_SIZE)
|
|
|
#error "FEC: descriptor ring size constants too large"
|
|
|
#endif
|
|
@@ -179,9 +164,6 @@ MODULE_PARM_DESC(macaddr, "FEC Ethernet MAC address");
|
|
|
#define PKT_MINBUF_SIZE 64
|
|
|
#define PKT_MAXBLR_SIZE 1520
|
|
|
|
|
|
-/* This device has up to three irqs on some platforms */
|
|
|
-#define FEC_IRQ_NUM 3
|
|
|
-
|
|
|
/*
|
|
|
* The 5270/5271/5280/5282/532x RX control register also contains maximum frame
|
|
|
* size bits. Other FEC hardware does not, so we need to take that into
|
|
@@ -194,61 +176,6 @@ MODULE_PARM_DESC(macaddr, "FEC Ethernet MAC address");
|
|
|
#define OPT_FRAME_SIZE 0
|
|
|
#endif
|
|
|
|
|
|
-/* The FEC buffer descriptors track the ring buffers. The rx_bd_base and
|
|
|
- * tx_bd_base always point to the base of the buffer descriptors. The
|
|
|
- * cur_rx and cur_tx point to the currently available buffer.
|
|
|
- * The dirty_tx tracks the current buffer that is being sent by the
|
|
|
- * controller. The cur_tx and dirty_tx are equal under both completely
|
|
|
- * empty and completely full conditions. The empty/ready indicator in
|
|
|
- * the buffer descriptor determines the actual condition.
|
|
|
- */
|
|
|
-struct fec_enet_private {
|
|
|
- /* Hardware registers of the FEC device */
|
|
|
- void __iomem *hwp;
|
|
|
-
|
|
|
- struct net_device *netdev;
|
|
|
-
|
|
|
- struct clk *clk_ipg;
|
|
|
- struct clk *clk_ahb;
|
|
|
-
|
|
|
- /* The saved address of a sent-in-place packet/buffer, for skfree(). */
|
|
|
- unsigned char *tx_bounce[TX_RING_SIZE];
|
|
|
- struct sk_buff* tx_skbuff[TX_RING_SIZE];
|
|
|
- struct sk_buff* rx_skbuff[RX_RING_SIZE];
|
|
|
- ushort skb_cur;
|
|
|
- ushort skb_dirty;
|
|
|
-
|
|
|
- /* CPM dual port RAM relative addresses */
|
|
|
- dma_addr_t bd_dma;
|
|
|
- /* Address of Rx and Tx buffers */
|
|
|
- struct bufdesc *rx_bd_base;
|
|
|
- struct bufdesc *tx_bd_base;
|
|
|
- /* The next free ring entry */
|
|
|
- struct bufdesc *cur_rx, *cur_tx;
|
|
|
- /* The ring entries to be free()ed */
|
|
|
- struct bufdesc *dirty_tx;
|
|
|
-
|
|
|
- uint tx_full;
|
|
|
- /* hold while accessing the HW like ringbuffer for tx/rx but not MAC */
|
|
|
- spinlock_t hw_lock;
|
|
|
-
|
|
|
- struct platform_device *pdev;
|
|
|
-
|
|
|
- int opened;
|
|
|
- int dev_id;
|
|
|
-
|
|
|
- /* Phylib and MDIO interface */
|
|
|
- struct mii_bus *mii_bus;
|
|
|
- struct phy_device *phy_dev;
|
|
|
- int mii_timeout;
|
|
|
- uint phy_speed;
|
|
|
- phy_interface_t phy_interface;
|
|
|
- int link;
|
|
|
- int full_duplex;
|
|
|
- struct completion mdio_done;
|
|
|
- int irq[FEC_IRQ_NUM];
|
|
|
-};
|
|
|
-
|
|
|
/* FEC MII MMFR bits definition */
|
|
|
#define FEC_MMFR_ST (1 << 30)
|
|
|
#define FEC_MMFR_OP_READ (2 << 28)
|