1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 #define HME_SEBI_RESET (0*4)
44 #define HME_SEBI_CFG (1*4)
45 #define HME_SEBI_STAT (64*4)
46 #define HME_SEBI_IMASK (65*4)
47
48
49 #define HME_SEB_RESET_ETX 0x00000001
50 #define HME_SEB_RESET_ERX 0x00000002
51
52 #define HME_SEB_CFG_BURSTMASK 0x00000003
53 #define HME_SEB_CFG_BURST16 0x00000000
54 #define HME_SEB_CFG_BURST32 0x00000001
55 #define HME_SEB_CFG_BURST64 0x00000002
56 #define HME_SEB_CFG_64BIT 0x00000004
57 #define HME_SEB_CFG_PARITY 0x00000008
58
59 #define HME_SEB_STAT_GOTFRAME 0x00000001
60 #define HME_SEB_STAT_RCNTEXP 0x00000002
61 #define HME_SEB_STAT_ACNTEXP 0x00000004
62 #define HME_SEB_STAT_CCNTEXP 0x00000008
63 #define HME_SEB_STAT_LCNTEXP 0x00000010
64 #define HME_SEB_STAT_RFIFOVF 0x00000020
65 #define HME_SEB_STAT_CVCNTEXP 0x00000040
66 #define HME_SEB_STAT_STSTERR 0x00000080
67 #define HME_SEB_STAT_SENTFRAME 0x00000100
68 #define HME_SEB_STAT_TFIFO_UND 0x00000200
69 #define HME_SEB_STAT_MAXPKTERR 0x00000400
70 #define HME_SEB_STAT_NCNTEXP 0x00000800
71 #define HME_SEB_STAT_ECNTEXP 0x00001000
72 #define HME_SEB_STAT_LCCNTEXP 0x00002000
73 #define HME_SEB_STAT_FCNTEXP 0x00004000
74 #define HME_SEB_STAT_DTIMEXP 0x00008000
75 #define HME_SEB_STAT_RXTOHOST 0x00010000
76 #define HME_SEB_STAT_NORXD 0x00020000
77 #define HME_SEB_STAT_RXERR 0x00040000
78 #define HME_SEB_STAT_RXLATERR 0x00080000
79 #define HME_SEB_STAT_RXPERR 0x00100000
80 #define HME_SEB_STAT_RXTERR 0x00200000
81 #define HME_SEB_STAT_EOPERR 0x00400000
82 #define HME_SEB_STAT_MIFIRQ 0x00800000
83 #define HME_SEB_STAT_HOSTTOTX 0x01000000
84 #define HME_SEB_STAT_TXALL 0x02000000
85 #define HME_SEB_STAT_TXEACK 0x04000000
86 #define HME_SEB_STAT_TXLERR 0x08000000
87 #define HME_SEB_STAT_TXPERR 0x10000000
88 #define HME_SEB_STAT_TXTERR 0x20000000
89 #define HME_SEB_STAT_SLVERR 0x40000000
90 #define HME_SEB_STAT_SLVPERR 0x80000000
91 #define HME_SEB_STAT_BITS \
92 "\020\1RX\2RCNT\3ACNT\4CCNT\5LCNT\6RFIFO\7CVCNT\10STST" \
93 "\11TX\12TFIFO\13MAXPKT\14NCNT\15ECNT\16LCCNT\17FCNT" \
94 "\20DTIME\21RXHOST\22NORXD\23RXE\24EXLATE\25RXP\26RXT\27EOP" \
95 "\30MIF\31TXHOST\32TXALL\33TXE\34TXL\35TXP\36TXT\37SLV" \
96 "\40SLVP"
97
98
99 #define HME_SEB_STAT_ALL_ERRORS \
100 (HME_SEB_STAT_SLVPERR | HME_SEB_STAT_SLVERR | HME_SEB_STAT_TXTERR |\
101 HME_SEB_STAT_TXPERR | HME_SEB_STAT_TXLERR | HME_SEB_STAT_TXEACK |\
102 HME_SEB_STAT_EOPERR | HME_SEB_STAT_RXTERR | HME_SEB_STAT_RXPERR |\
103 HME_SEB_STAT_RXLATERR | HME_SEB_STAT_RXERR | HME_SEB_STAT_NORXD |\
104 HME_SEB_STAT_DTIMEXP | HME_SEB_STAT_FCNTEXP | HME_SEB_STAT_LCCNTEXP |\
105 HME_SEB_STAT_ECNTEXP | HME_SEB_STAT_NCNTEXP | HME_SEB_STAT_MAXPKTERR|\
106 HME_SEB_STAT_TFIFO_UND| HME_SEB_STAT_STSTERR | HME_SEB_STAT_CVCNTEXP |\
107 HME_SEB_STAT_LCNTEXP | HME_SEB_STAT_CCNTEXP| HME_SEB_STAT_ACNTEXP)
108
109 #define HME_SEB_STAT_VLAN_ERRORS \
110 (HME_SEB_STAT_SLVPERR | HME_SEB_STAT_SLVERR | HME_SEB_STAT_TXTERR |\
111 HME_SEB_STAT_TXPERR | HME_SEB_STAT_TXLERR | HME_SEB_STAT_TXEACK |\
112 HME_SEB_STAT_EOPERR | HME_SEB_STAT_RXTERR | HME_SEB_STAT_RXPERR |\
113 HME_SEB_STAT_RXLATERR | HME_SEB_STAT_RXERR | HME_SEB_STAT_NORXD |\
114 HME_SEB_STAT_DTIMEXP | HME_SEB_STAT_FCNTEXP | HME_SEB_STAT_LCCNTEXP |\
115 HME_SEB_STAT_ECNTEXP | HME_SEB_STAT_NCNTEXP | \
116 HME_SEB_STAT_TFIFO_UND| HME_SEB_STAT_STSTERR | HME_SEB_STAT_CVCNTEXP |\
117 HME_SEB_STAT_LCNTEXP | HME_SEB_STAT_CCNTEXP | HME_SEB_STAT_ACNTEXP)
118
119
120
121
122 #define HME_ETXI_PENDING (0*4)
123 #define HME_ETXI_CFG (1*4)
124 #define HME_ETXI_RING (2*4)
125 #define HME_ETXI_BBASE (3*4)
126 #define HME_ETXI_BDISP (4*4)
127 #define HME_ETXI_FIFO_WPTR (5*4)
128 #define HME_ETXI_FIFO_SWPTR (6*4)
129 #define HME_ETXI_FIFO_RPTR (7*4)
130 #define HME_ETXI_FIFO_SRPTR (8*4)
131 #define HME_ETXI_FIFO_PKTCNT (9*4)
132 #define HME_ETXI_STATEMACHINE (10*4)
133 #define HME_ETXI_RSIZE (11*4)
134 #define HME_ETXI_BPTR (12*4)
135
136
137
138 #define HME_ETX_TP_DMAWAKEUP 0x00000001
139
140
141 #define HME_ETX_CFG_DMAENABLE 0x00000001
142 #define HME_ETX_CFG_FIFOTHRESH 0x000003fe
143 #define HME_ETX_CFG_IRQDAFTER 0x00000400
144 #define HME_ETX_CFG_IRQDBEFORE 0x00000000
145
146
147
148
149
150 #define HME_ERXI_CFG (0*4)
151 #define HME_ERXI_RING (1*4)
152 #define HME_ERXI_BPTR (2*4)
153 #define HME_ERXI_FIFO_WPTR (3*4)
154 #define HME_ERXI_FIFO_SWPTR (4*4)
155 #define HME_ERXI_FIFO_RPTR (5*4)
156 #define HME_ERXI_FIFO_SRPTR (6*4)
157 #define HME_ERXI_STATEMACHINE (7*4)
158
159
160 #define HME_ERX_CFG_DMAENABLE 0x00000001
161 #define HME_ERX_CFG_BYTEOFFSET 0x00000038
162 #define HME_ERX_CFG_RINGSIZE32 0x00000000
163 #define HME_ERX_CFG_RINGSIZE64 0x00000200
164 #define HME_ERX_CFG_RINGSIZE128 0x00000400
165 #define HME_ERX_CFG_RINGSIZE256 0x00000600
166 #define HME_ERX_CFG_CSUMSTART 0x007f0000
167 #define HME_ERX_CFG_CSUM_SHIFT 16
168
169
170
171
172 #define HME_MACI_XIF (0*4)
173 #define HME_MACI_TXSWRST (130*4)
174 #define HME_MACI_TXCFG (131*4)
175 #define HME_MACI_JSIZE (139*4)
176 #define HME_MACI_TXSIZE (140*4)
177 #define HME_MACI_NCCNT (144*4)
178 #define HME_MACI_FCCNT (145*4)
179 #define HME_MACI_EXCNT (146*4)
180 #define HME_MACI_LTCNT (147*4)
181 #define HME_MACI_RANDSEED (148*4)
182 #define HME_MACI_RXSWRST (194*4)
183 #define HME_MACI_RXCFG (195*4)
184 #define HME_MACI_RXSIZE (196*4)
185 #define HME_MACI_MACADDR2 (198*4)
186 #define HME_MACI_MACADDR1 (199*4)
187 #define HME_MACI_MACADDR0 (200*4)
188 #define HME_MACI_HASHTAB3 (208*4)
189 #define HME_MACI_HASHTAB2 (209*4)
190 #define HME_MACI_HASHTAB1 (210*4)
191 #define HME_MACI_HASHTAB0 (211*4)
192 #define HME_MACI_AFILTER2 (212*4)
193 #define HME_MACI_AFILTER1 (213*4)
194 #define HME_MACI_AFILTER0 (214*4)
195 #define HME_MACI_AFILTER_MASK (215*4)
196
197
198 #define HME_MAC_XIF_OE 0x00000001
199 #define HME_MAC_XIF_XLBACK 0x00000002
200 #define HME_MAC_XIF_MLBACK 0x00000004
201 #define HME_MAC_XIF_MIIENABLE 0x00000008
202 #define HME_MAC_XIF_SQENABLE 0x00000010
203 #define HME_MAC_XIF_SQETWIN 0x000003e0
204 #define HME_MAC_XIF_LANCE 0x00000010
205 #define HME_MAC_XIF_LIPG0 0x000003e0
206
207
208 #define HME_MAC_TXCFG_ENABLE 0x00000001
209 #define HME_MAC_TXCFG_SMODE 0x00000020
210 #define HME_MAC_TXCFG_CIGN 0x00000040
211 #define HME_MAC_TXCFG_FCSOFF 0x00000080
212 #define HME_MAC_TXCFG_DBACKOFF 0x00000100
213 #define HME_MAC_TXCFG_FULLDPLX 0x00000200
214 #define HME_MAC_TXCFG_DGIVEUP 0x00000400
215
216
217 #define HME_MAC_RXCFG_ENABLE 0x00000001
218 #define HME_MAC_RXCFG_PSTRIP 0x00000020
219 #define HME_MAC_RXCFG_PMISC 0x00000040
220 #define HME_MAC_RXCFG_DERR 0x00000080
221 #define HME_MAC_RXCFG_DCRCS 0x00000100
222 #define HME_MAC_RXCFG_ME 0x00000200
223 #define HME_MAC_RXCFG_PGRP 0x00000400
224 #define HME_MAC_RXCFG_HENABLE 0x00000800
225 #define HME_MAC_RXCFG_AENABLE 0x00001000
226
227
228
229
230 #define HME_MIFI_BB_CLK (0*4)
231 #define HME_MIFI_BB_DATA (1*4)
232 #define HME_MIFI_BB_OE (2*4)
233 #define HME_MIFI_FO (3*4)
234 #define HME_MIFI_CFG (4*4)
235 #define HME_MIFI_IMASK (5*4)
236 #define HME_MIFI_STAT (6*4)
237 #define HME_MIFI_SM (7*4)
238
239
240 #define HME_MIF_CFG_PHY 0x00000001
241 #define HME_MIF_CFG_PE 0x00000002
242 #define HME_MIF_CFG_BBMODE 0x00000004
243 #define HME_MIF_CFG_PRADDR 0x000000f8
244 #define HME_MIF_CFG_MDI0 0x00000100
245 #define HME_MIF_CFG_MDI1 0x00000200
246 #define HME_MIF_CFG_PPADDR 0x00007c00
247
248
249 #define HME_MIF_FO_ST 0xc0000000
250 #define HME_MIF_FO_ST_SHIFT 30
251 #define HME_MIF_FO_OPC 0x30000000
252 #define HME_MIF_FO_OPC_SHIFT 28
253 #define HME_MIF_FO_PHYAD 0x0f800000
254 #define HME_MIF_FO_PHYAD_SHIFT 23
255 #define HME_MIF_FO_REGAD 0x007c0000
256 #define HME_MIF_FO_REGAD_SHIFT 18
257 #define HME_MIF_FO_TAMSB 0x00020000
258 #define HME_MIF_FO_TALSB 0x00010000
259 #define HME_MIF_FO_DATA 0x0000ffff
260
261
262 #define HME_PHYAD_INTERNAL 1
263 #define HME_PHYAD_EXTERNAL 0
264
265
266
267
268 #ifdef notdef
269 struct hme_xd {
270 volatile u_int32_t xd_flags;
271 volatile u_int32_t xd_addr;
272 };
273 #endif
274 #define HME_XD_SIZE 8
275 #define HME_XD_FLAGS(base, index) ((base) + ((index) * HME_XD_SIZE) + 0)
276 #define HME_XD_ADDR(base, index) ((base) + ((index) * HME_XD_SIZE) + 4)
277 #define HME_XD_GETFLAGS(p, b, i) \
278 (p) ? letoh32(*((u_int32_t *)HME_XD_FLAGS(b,i))) : \
279 (*((u_int32_t *)HME_XD_FLAGS(b,i)))
280 #define HME_XD_SETFLAGS(p, b, i, f) do { \
281 *((u_int32_t *)HME_XD_FLAGS(b,i)) = ((p) ? htole32(f) : (f)); \
282 } while(0)
283 #define HME_XD_SETADDR(p, b, i, a) do { \
284 *((u_int32_t *)HME_XD_ADDR(b,i)) = ((p) ? htole32(a) : (a)); \
285 } while(0)
286
287
288 #define HME_XD_OWN 0x80000000
289 #define HME_XD_SOP 0x40000000
290 #define HME_XD_OFL 0x40000000
291 #define HME_XD_EOP 0x20000000
292 #define HME_XD_TXCKSUM 0x10000000
293 #define HME_XD_RXLENMSK 0x3fff0000
294 #define HME_XD_RXLENSHIFT 16
295 #define HME_XD_TXLENMSK 0x00003fff
296 #define HME_XD_RXCKSUM 0x0000ffff
297
298
299 #define HME_XD_ENCODE_RSIZE(sz) \
300 (((sz) << HME_XD_RXLENSHIFT) & HME_XD_RXLENMSK)
301 #define HME_XD_DECODE_RSIZE(flags) \
302 (((flags) & HME_XD_RXLENMSK) >> HME_XD_RXLENSHIFT)
303
304
305 #define HME_XD_ENCODE_TSIZE(sz) \
306 (((sz) << 0) & HME_XD_TXLENMSK)
307 #define HME_XD_DECODE_TSIZE(flags) \
308 (((flags) & HME_XD_TXLENMSK) >> 0)