1#ifndef _IBM_LANA_INCLUDE_
2#define _IBM_LANA_INCLUDE_
3
4#ifdef _IBM_LANA_DRIVER_
5
6
7
8#define PKTSIZE 1524
9
10
11
12#define TXBUFCNT 4
13
14
15#define IBM_LANA_ID 0xffe0
16
17
18
19
20typedef enum {
21 Media_10BaseT, Media_10Base5,
22 Media_Unknown, Media_10Base2, Media_Count
23} ibmlana_medium;
24
25
26
27typedef struct {
28 unsigned int slot;
29 int realirq;
30
31 ibmlana_medium medium;
32 u32 tdastart, txbufstart,
33 rrastart, rxbufstart, rdastart, rxbufcnt, txusedcnt;
34 int nextrxdescr,
35 lastrxdescr,
36 nexttxdescr,
37 currtxdescr,
38 txused[TXBUFCNT];
39 void __iomem *base;
40 spinlock_t lock;
41} ibmlana_priv;
42
43
44
45
46#define IBM_LANA_IORANGE 0xa0
47
48
49
50#define SONIC_CMDREG 0x00
51#define CMDREG_HTX 0x0001
52#define CMDREG_TXP 0x0002
53#define CMDREG_RXDIS 0x0004
54#define CMDREG_RXEN 0x0008
55#define CMDREG_STP 0x0010
56#define CMDREG_ST 0x0020
57#define CMDREG_RST 0x0080
58#define CMDREG_RRRA 0x0100
59#define CMDREG_LCAM 0x0200
60
61
62
63#define SONIC_DCREG 0x02
64#define DCREG_EXBUS 0x8000
65#define DCREG_LBR 0x2000
66#define DCREG_PO1 0x1000
67#define DCREG_PO0 0x0800
68#define DCREG_SBUS 0x0400
69#define DCREG_USR1 0x0200
70#define DCREG_USR0 0x0100
71#define DCREG_WC0 0x0000
72#define DCREG_WC1 0x0040
73#define DCREG_WC2 0x0080
74#define DCREG_WC3 0x00c0
75#define DCREG_DW16 0x0000
76#define DCREG_DW32 0x0020
77#define DCREG_BMS 0x0010
78#define DCREG_RFT4 0x0000
79#define DCREG_RFT8 0x0004
80#define DCREG_RFT16 0x0008
81#define DCREG_RFT24 0x000c
82#define DCREG_TFT8 0x0000
83#define DCREG_TFT16 0x0001
84#define DCREG_TFT24 0x0002
85#define DCREG_TFT28 0x0003
86
87
88
89#define SONIC_RCREG 0x04
90#define RCREG_ERR 0x8000
91#define RCREG_RNT 0x4000
92#define RCREG_BRD 0x2000
93#define RCREG_PRO 0x1000
94#define RCREG_AMC 0x0800
95#define RCREG_LB_NONE 0x0000
96#define RCREG_LB_MAC 0x0200
97#define RCREG_LB_ENDEC 0x0400
98#define RCREG_LB_XVR 0x0600
99#define RCREG_MC 0x0100
100#define RCREG_BC 0x0080
101#define RCREG_LPKT 0x0040
102#define RCREG_CRS 0x0020
103#define RCREG_COL 0x0010
104#define RCREG_CRCR 0x0008
105#define RCREG_FAER 0x0004
106#define RCREG_LBK 0x0002
107#define RCREG_PRX 0x0001
108
109
110
111#define SONIC_TCREG 0x06
112#define TCREG_PINT 0x8000
113#define TCREG_POWC 0x4000
114#define TCREG_CRCI 0x2000
115#define TCREG_EXDIS 0x1000
116#define TCREG_EXD 0x0400
117#define TCREG_DEF 0x0200
118#define TCREG_NCRS 0x0100
119#define TCREG_CRSL 0x0080
120#define TCREG_EXC 0x0040
121#define TCREG_OWC 0x0020
122#define TCREG_PMB 0x0008
123#define TCREG_FU 0x0004
124#define TCREG_BCM 0x0002
125#define TCREG_PTX 0x0001
126
127
128
129#define SONIC_IMREG 0x08
130#define IMREG_BREN 0x4000
131#define IMREG_HBLEN 0x2000
132#define IMREG_LCDEN 0x1000
133#define IMREG_PINTEN 0x0800
134#define IMREG_PRXEN 0x0400
135#define IMREG_PTXEN 0x0200
136#define IMREG_TXEREN 0x0100
137#define IMREG_TCEN 0x0080
138#define IMREG_RDEEN 0x0040
139#define IMREG_RBEEN 0x0020
140#define IMREG_RBAEEN 0x0010
141#define IMREG_CRCEN 0x0008
142#define IMREG_FAEEN 0x0004
143#define IMREG_MPEN 0x0002
144#define IMREG_RFOEN 0x0001
145
146
147
148#define SONIC_ISREG 0x0a
149#define ISREG_BR 0x4000
150#define ISREG_HBL 0x2000
151#define ISREG_LCD 0x1000
152#define ISREG_PINT 0x0800
153#define ISREG_PKTRX 0x0400
154#define ISREG_TXDN 0x0200
155#define ISREG_TXER 0x0100
156#define ISREG_TC 0x0080
157#define ISREG_RDE 0x0040
158#define ISREG_RBE 0x0020
159#define ISREG_RBAE 0x0010
160#define ISREG_CRC 0x0008
161#define ISREG_FAE 0x0004
162#define ISREG_MP 0x0002
163#define ISREG_RFO 0x0001
164
165#define SONIC_UTDA 0x0c
166#define SONIC_CTDA 0x0e
167
168#define SONIC_URDA 0x1a
169#define SONIC_CRDA 0x1c
170
171#define SONIC_CRBA0 0x1e
172#define SONIC_CRBA1 0x20
173
174#define SONIC_RBWC0 0x22
175#define SONIC_RBWC1 0x24
176
177#define SONIC_EOBC 0x26
178
179#define SONIC_URRA 0x28
180
181#define SONIC_RSA 0x2a
182
183#define SONIC_REA 0x2c
184
185#define SONIC_RRP 0x2e
186
187#define SONIC_RWP 0x30
188
189#define SONIC_CAMEPTR 0x42
190
191#define SONIC_CAMADDR2 0x44
192#define SONIC_CAMADDR1 0x46
193#define SONIC_CAMADDR0 0x48
194
195#define SONIC_CAMPTR 0x4c
196
197#define SONIC_CAMCNT 0x4e
198
199
200
201#define SONIC_DCREG2 0x7e
202#define DCREG2_EXPO3 0x8000
203#define DCREG2_EXPO2 0x4000
204#define DCREG2_EXPO1 0x2000
205#define DCREG2_EXPO0 0x1000
206#define DCREG2_HD 0x0800
207#define DCREG2_JD 0x0200
208#define DCREG2_AUTO 0x0100
209#define DCREG2_XWRAP 0x0040
210#define DCREG2_PH 0x0010
211#define DCREG2_PCM 0x0004
212#define DCREG2_PCNM 0x0002
213#define DCREG2_RJCM 0x0001
214
215
216
217#define BCMREG 0x80
218#define BCMREG_RAMEN 0x80
219#define BCMREG_IPEND 0x40
220#define BCMREG_RESET 0x08
221#define BCMREG_16BIT 0x04
222#define BCMREG_RAMWIN 0x02
223#define BCMREG_IEN 0x01
224
225
226
227#define MACADDRPROM 0x92
228
229
230
231typedef struct {
232 u32 index;
233 u32 addr0;
234 u32 addr1;
235 u32 addr2;
236} camentry_t;
237
238
239
240typedef struct {
241 u32 startlo;
242 u32 starthi;
243 u32 cntlo;
244 u32 cnthi;
245} rra_t;
246
247
248
249typedef struct {
250 u32 status;
251 u32 length;
252 u32 startlo;
253 u32 starthi;
254 u32 seqno;
255 u32 link;
256
257 u32 inuse;
258} rda_t;
259
260
261
262typedef struct {
263 u32 status;
264 u32 config;
265 u32 length;
266 u32 fragcount;
267 u32 startlo;
268 u32 starthi;
269 u32 fraglength;
270
271
272 u32 link;
273
274} tda_t;
275
276#endif
277
278#endif
279