4 * Ethernet driver for the built in ethernet on the IBM 405 PowerPC
7 * Armin Kuster akuster@mvista.com
14 * Copyright 2000 MontaVista Softare Inc.
16 * This program is free software; you can redistribute it and/or modify it
17 * under the terms of the GNU General Public License as published by the
18 * Free Software Foundation; either version 2 of the License, or (at your
19 * option) any later version.
22 #ifndef _IBM_EMAC_CORE_H_
23 #define _IBM_EMAC_CORE_H_
25 #include <linux/netdevice.h>
27 #include <asm/mmu.h> /* For phys_addr_t */
30 #include "ibm_emac_phy.h"
31 #include "ibm_emac_rgmii.h"
32 #include "ibm_emac_zmii.h"
33 #include "ibm_emac_mal.h"
34 #include "ibm_emac_tah.h"
36 #ifndef CONFIG_IBM_EMAC_TXB
37 #define NUM_TX_BUFF 64
38 #define NUM_RX_BUFF 64
40 #define NUM_TX_BUFF CONFIG_IBM_EMAC_TXB
41 #define NUM_RX_BUFF CONFIG_IBM_EMAC_RXB
44 /* This does 16 byte alignment, exactly what we need.
45 * The packet length includes FCS, but we don't want to
46 * include that when passing upstream as it messes up
47 * bridging applications.
49 #ifndef CONFIG_IBM_EMAC_SKBRES
52 #define SKB_RES CONFIG_IBM_EMAC_SKBRES
55 /* Note about alignement. alloc_skb() returns a cache line
56 * aligned buffer. However, dev_alloc_skb() will add 16 more
57 * bytes and "reserve" them, so our buffer will actually end
58 * on a half cache line. What we do is to use directly
59 * alloc_skb, allocate 16 more bytes to match the total amount
60 * allocated by dev_alloc_skb(), but we don't reserve.
62 #define MAX_NUM_BUF_DESC 255
63 #define DESC_BUF_SIZE 4080 /* max 4096-16 */
64 #define DESC_BUF_SIZE_REG (DESC_BUF_SIZE / 16)
66 /* Transmitter timeout. */
67 #define TX_TIMEOUT (2*HZ)
69 /* MDIO latency delay */
70 #define MDIO_DELAY 250
72 /* Power managment shift registers */
73 #define IBM_CPM_EMMII 0 /* Shift value for MII */
74 #define IBM_CPM_EMRX 1 /* Shift value for recv */
75 #define IBM_CPM_EMTX 2 /* Shift value for MAC */
76 #define IBM_CPM_EMAC(x) (((x)>>IBM_CPM_EMMII) | ((x)>>IBM_CPM_EMRX) | ((x)>>IBM_CPM_EMTX))
78 #define ENET_HEADER_SIZE 14
79 #define ENET_FCS_SIZE 4
80 #define ENET_DEF_MTU_SIZE 1500
81 #define ENET_DEF_BUF_SIZE (ENET_DEF_MTU_SIZE + ENET_HEADER_SIZE + ENET_FCS_SIZE)
82 #define EMAC_MIN_FRAME 64
83 #define EMAC_MAX_FRAME 9018
84 #define EMAC_MIN_MTU (EMAC_MIN_FRAME - ENET_HEADER_SIZE - ENET_FCS_SIZE)
85 #define EMAC_MAX_MTU (EMAC_MAX_FRAME - ENET_HEADER_SIZE - ENET_FCS_SIZE)
87 #ifdef CONFIG_IBM_EMAC_ERRMSG
88 void emac_serr_dump_0(struct net_device
*dev
);
89 void emac_serr_dump_1(struct net_device
*dev
);
90 void emac_err_dump(struct net_device
*dev
, int em0isr
);
91 void emac_phy_dump(struct net_device
*);
92 void emac_desc_dump(struct net_device
*);
93 void emac_mac_dump(struct net_device
*);
94 void emac_mal_dump(struct net_device
*);
96 #define emac_serr_dump_0(dev) do { } while (0)
97 #define emac_serr_dump_1(dev) do { } while (0)
98 #define emac_err_dump(dev,x) do { } while (0)
99 #define emac_phy_dump(dev) do { } while (0)
100 #define emac_desc_dump(dev) do { } while (0)
101 #define emac_mac_dump(dev) do { } while (0)
102 #define emac_mal_dump(dev) do { } while (0)
105 struct ocp_enet_private
{
106 struct sk_buff
*tx_skb
[NUM_TX_BUFF
];
107 struct sk_buff
*rx_skb
[NUM_RX_BUFF
];
108 struct mal_descriptor
*tx_desc
;
109 struct mal_descriptor
*rx_desc
;
110 struct mal_descriptor
*rx_dirty
;
111 struct net_device_stats stats
;
119 struct mii_phy phy_mii
;
123 struct timer_list link_timer
;
124 struct net_device
*mdio_dev
;
126 struct ocp_device
*rgmii_dev
;
129 struct ocp_device
*zmii_dev
;
132 struct ibm_ocp_mal
*mal
;
133 int mal_tx_chan
, mal_rx_chan
;
134 struct mal_commac commac
;
136 struct ocp_device
*tah_dev
;
142 struct ocp_device
*ocpdev
;
143 struct net_device
*ndev
;
146 #endif /* _IBM_EMAC_CORE_H_ */