OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [drivers/] [net/] [tokenring/] [3c359.h] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1275 phoenix
/*
2
 *  3c359.h (c) 2000 Mike Phillips (mikep@linuxtr.net) All Rights Reserved
3
 *
4
 *  Linux driver for 3Com 3C359 Token Link PCI XL cards.
5
 *
6
 *  This software may be used and distributed according to the terms
7
 *  of the GNU General Public License Version 2 or (at your option)
8
 *  any later verion, incorporated herein by reference.
9
 */
10
 
11
#ifndef PCI_DEVICE_ID_3COM_3C359
12
#define PCI_DEVICE_ID_3COM_3C359 0x3590
13
#endif
14
 
15
/* Memory Access Commands */
16
#define IO_BYTE_READ 0x28 << 24
17
#define IO_BYTE_WRITE 0x18 << 24 
18
#define IO_WORD_READ 0x20 << 24
19
#define IO_WORD_WRITE 0x10 << 24
20
#define MMIO_BYTE_READ 0x88 << 24
21
#define MMIO_BYTE_WRITE 0x48 << 24
22
#define MMIO_WORD_READ 0x80 << 24
23
#define MMIO_WORD_WRITE 0x40 << 24
24
#define MEM_BYTE_READ 0x8C << 24
25
#define MEM_BYTE_WRITE 0x4C << 24
26
#define MEM_WORD_READ 0x84 << 24
27
#define MEM_WORD_WRITE 0x44 << 24
28
 
29
#define PMBAR 0x1C80
30
#define PMB_CPHOLD (1<<10)
31
 
32
#define CPATTENTION 0x180D
33
#define CPA_PMBARVIS (1<<7)
34
#define CPA_MEMWREN (1<<6)
35
 
36
#define SWITCHSETTINGS 0x1C88
37
#define EECONTROL 0x1C8A
38
#define EEDATA 0x1C8C
39
#define EEREAD 0x0080 
40
#define EEWRITE 0x0040
41
#define EEERASE 0x0060
42
#define EE_ENABLE_WRITE 0x0030
43
#define EEBUSY (1<<15)
44
 
45
#define WRBR 0xCDE02
46
#define WWOR 0xCDE04
47
#define WWCR 0xCDE06
48
#define MACSTATUS 0xCDE08 
49
#define MISR_RW 0xCDE0B
50
#define MISR_AND 0xCDE2B
51
#define MISR_SET 0xCDE4B
52
#define RXBUFAREA 0xCDE10
53
#define RXEARLYTHRESH 0xCDE12
54
#define TXSTARTTHRESH 0x58
55
#define DNPRIREQTHRESH 0x2C
56
 
57
#define MISR_CSRB (1<<5)
58
#define MISR_RASB (1<<4)
59
#define MISR_SRBFR (1<<3)
60
#define MISR_ASBFR (1<<2)
61
#define MISR_ARBF (1<<1) 
62
 
63
/* MISR Flags memory locations */
64
#define MF_SSBF 0xDFFE0 
65
#define MF_ARBF 0xDFFE1
66
#define MF_ASBFR 0xDFFE2
67
#define MF_SRBFR 0xDFFE3
68
#define MF_RASB 0xDFFE4
69
#define MF_CSRB 0xDFFE5
70
 
71
#define MMIO_MACDATA 0x10 
72
#define MMIO_MAC_ACCESS_CMD 0x14
73
#define MMIO_TIMER 0x1A
74
#define MMIO_DMA_CTRL 0x20
75
#define MMIO_DNLISTPTR 0x24
76
#define MMIO_HASHFILTER 0x28
77
#define MMIO_CONFIG 0x29
78
#define MMIO_DNPRIREQTHRESH 0x2C
79
#define MMIO_DNPOLL 0x2D
80
#define MMIO_UPPKTSTATUS 0x30
81
#define MMIO_FREETIMER 0x34
82
#define MMIO_COUNTDOWN 0x36
83
#define MMIO_UPLISTPTR 0x38
84
#define MMIO_UPPOLL 0x3C
85
#define MMIO_UPBURSTTHRESH 0x40
86
#define MMIO_DNBURSTTHRESH 0x41
87
#define MMIO_INTSTATUS_AUTO 0x56
88
#define MMIO_TXSTARTTHRESH 0x58
89
#define MMIO_INTERRUPTENABLE 0x5A
90
#define MMIO_INDICATIONENABLE 0x5C
91
#define MMIO_COMMAND 0x5E  /* These two are meant to be the same */
92
#define MMIO_INTSTATUS 0x5E /* Makes the code more readable this way */
93
#define INTSTAT_CMD_IN_PROGRESS (1<<12) 
94
#define INTSTAT_SRB (1<<14)
95
#define INTSTAT_INTLATCH (1<<0)
96
 
97
/* Indication / Interrupt Mask
98
 * Annoyingly the bits to be set in the indication and interrupt enable
99
 * do not match with the actual bits received in the interrupt, although
100
 * they are in the same order.
101
 * The mapping for the indication / interrupt are:
102
 * Bit  Indication / Interrupt
103
 *   0  HostError
104
 *   1  txcomplete
105
 *   2  updneeded
106
 *   3  rxcomplete
107
 *   4  intrequested
108
 *   5  macerror
109
 *   6  dncomplete
110
 *   7  upcomplete
111
 *   8  txunderrun
112
 *   9  asbf
113
 *  10  srbr
114
 *  11  arbc
115
 *
116
 *  The only ones we don't want to receive are txcomplete and rxcomplete
117
 *  we use dncomplete and upcomplete instead.
118
 */
119
 
120
#define INT_MASK 0xFF5
121
 
122
/* Note the subtle difference here, IND and INT */
123
 
124
#define SETINDENABLE (8<<12)
125
#define SETINTENABLE (7<<12)
126
#define SRBBIT (1<<10)
127
#define ASBBIT (1<<9)
128
#define ARBBIT (1<<11)
129
 
130
#define SRB 0xDFE90
131
#define ASB 0xDFED0
132
#define ARB 0xD0000
133
#define SCRATCH 0xDFEF0
134
 
135
#define INT_REQUEST 0x6000 /* (6 << 12) */
136
#define ACK_INTERRUPT 0x6800 /* (13 <<11) */
137
#define GLOBAL_RESET 0x00 
138
#define DNDISABLE 0x5000 
139
#define DNENABLE 0x4800 
140
#define DNSTALL 0x3002
141
#define DNRESET 0x5800
142
#define DNUNSTALL 0x3003
143
#define UPRESET 0x2800
144
#define UPSTALL 0x3000
145
#define UPUNSTALL 0x3001
146
#define SETCONFIG 0x4000
147
#define SETTXSTARTTHRESH 0x9800 
148
 
149
/* Received Interrupts */
150
#define ASBFINT (1<<13)
151
#define SRBRINT (1<<14)
152
#define ARBCINT (1<<15)
153
#define TXUNDERRUN (1<<11)
154
 
155
#define UPCOMPINT (1<<10)
156
#define DNCOMPINT (1<<9)
157
#define HARDERRINT (1<<7)
158
#define RXCOMPLETE (1<<4)
159
#define TXCOMPINT (1<<2)
160
#define HOSTERRINT (1<<1)
161
 
162
/* Receive descriptor bits */
163
#define RXOVERRUN (1<<19)
164
#define RXFC (1<<21)
165
#define RXAR (1<<22)
166
#define RXUPDCOMPLETE (1<<23)
167
#define RXUPDFULL (1<<24)
168
#define RXUPLASTFRAG (1<<31)
169
 
170
/* Transmit descriptor bits */
171
#define TXDNCOMPLETE (1<<16)
172
#define TXTXINDICATE (1<<27)
173
#define TXDPDEMPTY (1<<29)
174
#define TXDNINDICATE (1<<31)
175
#define TXDNFRAGLAST (1<<31)
176
 
177
/* Interrupts to Acknowledge */
178
#define LATCH_ACK 1 
179
#define TXCOMPACK (1<<1)
180
#define INTREQACK (1<<2)
181
#define DNCOMPACK (1<<3)
182
#define UPCOMPACK (1<<4)
183
#define ASBFACK (1<<5)
184
#define SRBRACK (1<<6)
185
#define ARBCACK (1<<7)
186
 
187
#define XL_IO_SPACE 128
188
#define SRB_COMMAND_SIZE 50
189
 
190
/* Adapter Commands */
191
#define REQUEST_INT 0x00
192
#define MODIFY_OPEN_PARMS 0x01
193
#define RESTORE_OPEN_PARMS 0x02
194
#define OPEN_NIC 0x03
195
#define CLOSE_NIC 0x04
196
#define SET_SLEEP_MODE 0x05
197
#define SET_GROUP_ADDRESS 0x06
198
#define SET_FUNC_ADDRESS 0x07
199
#define READ_LOG 0x08
200
#define SET_MULTICAST_MODE 0x0C
201
#define CHANGE_WAKEUP_PATTERN 0x0D
202
#define GET_STATISTICS 0x13
203
#define SET_RECEIVE_MODE 0x1F
204
 
205
/* ARB Commands */
206
#define RECEIVE_DATA 0x81
207
#define RING_STATUS_CHANGE 0x84
208
 
209
/* ASB Commands */
210
#define ASB_RECEIVE_DATE 0x81 
211
 
212
/* Defines for LAN STATUS CHANGE reports */
213
#define LSC_SIG_LOSS 0x8000
214
#define LSC_HARD_ERR 0x4000
215
#define LSC_SOFT_ERR 0x2000
216
#define LSC_TRAN_BCN 0x1000
217
#define LSC_LWF      0x0800
218
#define LSC_ARW      0x0400
219
#define LSC_FPE      0x0200
220
#define LSC_RR       0x0100
221
#define LSC_CO       0x0080
222
#define LSC_SS       0x0040
223
#define LSC_RING_REC 0x0020
224
#define LSC_SR_CO    0x0010
225
#define LSC_FDX_MODE 0x0004
226
 
227
#define XL_MAX_ADAPTERS 8 /* 0x08 __MODULE_STRING can't hand 0xnn */
228
 
229
/* 3c359 defaults for buffers */
230
 
231
#define XL_RX_RING_SIZE 16 /* must be a power of 2 */
232
#define XL_TX_RING_SIZE 16 /* must be a power of 2 */
233
 
234
#define PKT_BUF_SZ 4096 /* Default packet size */
235
 
236
/* 3c359 data structures */
237
 
238
struct xl_tx_desc {
239
        u32 dnnextptr ;
240
        u32 framestartheader ;
241
        u32 buffer ;
242
        u32 buffer_length ;
243
};
244
 
245
struct xl_rx_desc {
246
        u32 upnextptr ;
247
        u32 framestatus ;
248
        u32 upfragaddr ;
249
        u32 upfraglen ;
250
};
251
 
252
struct xl_private {
253
 
254
 
255
        /* These two structures must be aligned on 8 byte boundaries */
256
 
257
        /* struct xl_rx_desc xl_rx_ring[XL_RX_RING_SIZE]; */
258
        /* struct xl_tx_desc xl_tx_ring[XL_TX_RING_SIZE]; */
259
        struct xl_rx_desc *xl_rx_ring ;
260
        struct xl_tx_desc *xl_tx_ring ;
261
        struct sk_buff *tx_ring_skb[XL_TX_RING_SIZE], *rx_ring_skb[XL_RX_RING_SIZE];
262
        int tx_ring_head, tx_ring_tail ;
263
        int rx_ring_tail, rx_ring_no ;
264
        int free_ring_entries ;
265
 
266
        u16 srb;
267
        u16 arb;
268
        u16 asb;
269
 
270
        u8 *xl_mmio;
271
        char *xl_card_name;
272
        struct pci_dev *pdev ;
273
 
274
        spinlock_t xl_lock ;
275
 
276
        volatile int srb_queued;
277
        struct wait_queue *srb_wait;
278
        volatile int asb_queued;
279
 
280
        struct net_device_stats xl_stats ;
281
 
282
        u16 mac_buffer ;
283
        u16 xl_lan_status ;
284
        u8 xl_ring_speed ;
285
        u16 pkt_buf_sz ;
286
        u8 xl_message_level;
287
        u16 xl_copy_all_options ;
288
        unsigned char xl_functional_addr[4] ;
289
        u16 xl_addr_table_addr, xl_parms_addr ;
290
        u8 xl_laa[6] ;
291
        u32 rx_ring_dma_addr ;
292
        u32 tx_ring_dma_addr ;
293
};
294
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.