2 ****************************** trlld.h ***********************************
\r
8 * All Rights Reserved
\r
10 * This source file is subject to the terms and conditions of the
\r
11 * OLICOM Software License Agreement which restricts the manner
\r
12 * in which it may be used.
\r
14 *---------------------------------------------------------------------------
\r
16 * Description: PowerMACH Works header file
\r
17 * $FreeBSD: src/sys/contrib/dev/oltr/trlld.h,v 1.3.2.1 2000/03/19 00:32:34 lile Exp $
18 * $DragonFly: src/sys/contrib/dev/oltr/Attic/trlld.h,v 1.2 2003/06/17 04:28:20 dillon Exp $
20 *---------------------------------------------------------------------------
\r
21 * $Log: J:/usr/project/trlld/libsrc/include/trlld.h_v $
\r
23 * Rev 1.9 25 Jan 1999 09:56:28 EGS
\r
26 * Rev 1.8 10 Dec 1998 12:24:52 JHM
\r
27 * version 1.2.0,prominfo structure with shorts.
\r
29 * Rev 1.7 25 Nov 1998 16:18:48 JHM
\r
30 * Bullseye mac, 100MBPS, mactype in config structure,
\r
31 * 3540 adapter, TRlldTransmitFree, TRlldReceiveFree,
\r
34 * Rev 1.6 23 Oct 1998 16:00:36 JHM
\r
35 * hawkeye adapter types
\r
37 * Rev 1.5 11 Aug 1998 12:22:06 JHM
\r
38 * split hawkeye types into PCI4,5,6
\r
40 * Rev 1.4 10 Jul 1998 14:39:22 JHM
\r
43 * Rev 1.3 18 Jun 1998 11:32:20 JHM
\r
46 * Rev 1.2 18 Apr 1998 15:11:20 JHM
\r
48 * Rev 1.1 09 Dec 1997 18:17:52 JHM
\r
49 * rel111: TRlldDataPtr_t
\r
51 * Rev 1.0 24 Nov 1997 11:08:58 JHM
\r
54 Rev 1.5 18 Jun 1997 11:31:36 JHM
\r
57 Rev 1.4 13 Jun 1997 13:47:34 JHM
\r
59 Rev 1.3 13 Jun 1997 13:27:56 JHM
\r
60 DTR support, version change
\r
62 Rev 1.2 12 Jun 1997 11:43:20 JHM
\r
63 TRLLD_INTERRUPT_TIMEOUT defined
\r
65 Rev 1.1 11 Apr 1997 15:24:18 JHM
\r
66 replaced tabs with spaces
\r
68 Rev 1.0 11 Apr 1997 14:43:04 JHM
\r
71 ****************************************************************************
\r
77 /* Data buffer pointers are always 32 bits.
\r
78 For 16:16 it is segment:offset while it for 32:32 is a linear address. */
\r
81 #define TRlldDataPtr_t unsigned char far *
\r
82 #define TRlldWordDataPtr_t unsigned short far *
\r
83 #define TRlldDWordDataPtr_t unsigned long far *
\r
85 #define TRlldDataPtr_t unsigned char *
\r
86 #define TRlldWordDataPtr_t unsigned short *
\r
87 #define TRlldDWordDataPtr_t unsigned long *
\r
91 #define CDECL _cdecl
\r
96 /*****************************************************************************/
\r
100 /*****************************************************************************/
\r
102 extern unsigned char TRlldMacCode[]; /* 3115,17,18,29,33,36,37 */
\r
103 extern unsigned char TRlldHawkeyeMac[]; /* 3139,3140,3141,3250 */
\r
104 extern unsigned char TRlldBullseyeMac[]; /* 3150,3540 */
\r
106 /*****************************************************************************/
\r
108 /* Maximal numbers of concurrent receive and transmit slots */
\r
110 /*****************************************************************************/
\r
112 #define TRLLD_MAX_RECEIVE 32
\r
113 #define TRLLD_MAX_TRANSMIT 32
\r
115 /*****************************************************************************/
\r
117 /* Maximal frame sizes */
\r
119 /*****************************************************************************/
\r
121 #define TRLLD_MAXFRAME_100MBPS 18000
\r
122 #define TRLLD_MAXFRAME_16MBPS 18000
\r
123 #define TRLLD_MAXFRAME_4MBPS 4500
\r
125 /*****************************************************************************/
\r
127 /* TRlldStatus contains the adapter status used in a DriverStatus call-back. */
\r
129 /*****************************************************************************/
\r
131 struct OnWireInformation {
\r
132 unsigned short RingStatus;
\r
133 unsigned short Speed;
\r
134 unsigned short AccessProtocol;
\r
135 unsigned short Reserved;
\r
138 typedef struct TRlldStatus {
\r
139 unsigned short Type;
\r
140 unsigned char Closed;
\r
141 unsigned char AccessProtocol;
\r
142 unsigned short MaxFrameSize;
\r
143 unsigned short Reserved;
\r
145 unsigned short OnWireRingStatus; /* for compability */
\r
146 unsigned short SelftestStatus;
\r
147 unsigned short InitStatus;
\r
148 unsigned short RingStatus;
\r
149 unsigned short AdapterCheck[4];
\r
150 unsigned short InternalError[4];
\r
151 unsigned short PromRemovedCause;
\r
152 unsigned short AdapterTimeout;
\r
153 struct OnWireInformation OnWireInformation;
\r
157 /* values of TRlldStatus.Type */
\r
159 #define TRLLD_STS_ON_WIRE 0
\r
160 #define TRLLD_STS_SELFTEST_STATUS 1
\r
161 #define TRLLD_STS_INIT_STATUS 2
\r
162 #define TRLLD_STS_RING_STATUS 3
\r
163 #define TRLLD_STS_ADAPTER_CHECK 4
\r
164 #define TRLLD_STS_PROMISCUOUS_STOPPED 5
\r
165 #define TRLLD_STS_LLD_ERROR 6
\r
166 #define TRLLD_STS_ADAPTER_TIMEOUT 7
\r
168 /* values of TRlldStatus.Closed */
\r
170 #define TRLLD_STS_STATUS_OK 0
\r
171 #define TRLLD_STS_STATUS_CLOSED 1
\r
173 /* values of TRlldStatus.AccessProtocol */
\r
175 #define TRLLD_ACCESS_UNKNOWN 0
\r
176 #define TRLLD_ACCESS_TKP 1
\r
177 #define TRLLD_ACCESS_TXI 2
\r
179 /* values of TRlldStatus.SelftestStatus */
\r
181 #define TRLLD_ST_OK 0
\r
182 #define TRLLD_ST_ERROR 0x0100 /* actual errors are 010x, where x is */
\r
183 /* 0: Initial Test Error */
\r
184 /* 1: Adapter Software Checksum Error */
\r
185 /* 2: Adapter RAM Error */
\r
186 /* 4: Instruction Test Error */
\r
187 /* 5: Protocol Handler/RI Hw Error */
\r
188 /* 6: System Interface Register Error */
\r
190 #define TRLLD_ST_TIMEOUT 0x0200 /* The adapter did not complete */
\r
191 /* selftest after download */
\r
193 /* values of TRlldStatus.Specification.InitStatus */
\r
195 /* the most likely cause of an init error (whatever the code) is a wrong */
\r
196 /* physical or virtual address of the adapter block in TRlldAdapterInit */
\r
198 #define TRLLD_INIT_ERROR 0x100 /* actual errors are 010x, where x is */
\r
199 /* 1: Invalid init block (LLD error) */
\r
200 /* 2: Invalid options (LLD error) */
\r
201 /* 3: Invalid rcv burst (LLD error) */
\r
202 /* 4: Invalid xmt burst (LLD error) */
\r
203 /* 5: Invalid DMA threshold (LLDerror)*/
\r
204 /* 6: Invalid scb addr */
\r
205 /* 7: Invalid ssb addr */
\r
206 /* 8: DIO parity error (HW error) */
\r
207 /* 9: DMA timeout (May be interrupt
\r
208 failing if PIO mode or PCI2) */
\r
209 /* A: DMA parity error (HW error) */
\r
210 /* B: DMA bus error (HW error) */
\r
211 /* C: DMA data error */
\r
212 /* D: Adapter check */
\r
214 #define TRLLD_INIT_TIMEOUT 0x200 /* adapter init did not complete */
\r
215 #define TRLLD_INIT_DMA_ERROR 0x300 /* adapter cannot access sys memory */
\r
216 #define TRLLD_INIT_INTR_ERROR 0x400 /* adapter cannot interrupt */
\r
217 #define TRLLD_OPEN_TIMEOUT 0x500 /* adapter open did not complete */
\r
218 /* within 30 seconds */
\r
220 #define TRLLD_OPEN_ERROR 0x600 /* actual errors are 06xx, where the */
\r
221 /* bits in x mean: */
\r
222 /* 01: Invalid open options (LLDerror)*/
\r
223 /* 04: TxBuffer count error (LLDerror)*/
\r
224 /* 10: Buffer size error (LLD error) */
\r
225 /* 20: List size error (LLD error) */
\r
226 /* 40: Node address error */
\r
228 #define TRLLD_OPEN_REPEAT 0x700 /* actual errors are 07xy, where */
\r
229 /* x is the open phase: */
\r
230 /* 1: Lobe media test */
\r
231 /* 2: Physical Insertion */
\r
232 /* 3: Address verification */
\r
233 /* 4: Participation in ring poll */
\r
234 /* 5: Request Initialization */
\r
235 /* 9: Request registration (TXI) */
\r
236 /* A: Lobe Media Test (TXI) */
\r
237 /* B: Address verification (TXI) */
\r
238 /* y is the type of error: */
\r
239 /* 1: Function failure (No Cable ?) */
\r
240 /* 2: Signal loss */
\r
242 /* 6: Ring failure (TKP) */
\r
243 /* 6: Protocol error (TXI) */
\r
244 /* 7: Ring beaconing */
\r
245 /* 8: Duplicate Node Address (TKP) */
\r
246 /* 8: Insert Denied (TXI) */
\r
247 /* 9: Request Initialization (TKP) */
\r
248 /* 9: Heart beat failure (TXI) */
\r
249 /* A: Remove received */
\r
250 /* B: C-port address changed (TXI) */
\r
251 /* C: Wire Fault (TKP) */
\r
252 /* D: Auto Speed, 1. on ring (TKP) */
\r
253 /* E: Speed sense failed */
\r
255 /* When opening with FORCE_TXI and only classic token ring attachment is */
\r
256 /* possible, the error is Request Registration/Timeout or 0x795 */
\r
258 #define TRLLD_OPEN_1ST_ON_RING 0x800 /* Speed sense is active, but no other*/
\r
259 /* station is present to set the speed*/
\r
262 /* values of TRlldStatus.Specification.RingStatus */
\r
264 #define TRLLD_RS_SIGNAL_LOSS 0x8000
\r
265 #define TRLLD_RS_HARD_ERROR 0x4000
\r
266 #define TRLLD_RS_SOFT_ERROR 0x2000
\r
267 #define TRLLD_RS_TRANSMIT_BEACON 0x1000
\r
268 #define TRLLD_RS_LOBE_WIRE_FAULT 0x0800
\r
269 #define TRLLD_RS_AUTO_REMOVAL_ERROR 0x0400
\r
270 #define TRLLD_RS_REMOVE_RECEIVED 0x0100
\r
271 #define TRLLD_RS_COUNTER_OVERFLOW 0x0080
\r
272 #define TRLLD_RS_SINGLE_STATION 0x0040
\r
273 #define TRLLD_RS_RING_RECOVERY 0x0020
\r
275 /* values of TRlldStatus.Specification.AdapterCheck */
\r
278 /* values of TRlldStatus.Specification.PromRemovedCause */
\r
280 #define TRLLD_PROM_REMOVE_RECEIVED 1
\r
281 #define TRLLD_PROM_POLL_FAILURE 2
\r
282 #define TRLLD_PROM_BUFFER_SIZE 3
\r
284 /* values of TRlldStatus.Specification.InternalError */
\r
286 #define TRLLD_INTERNAL_PIO 1 /* A PIO transfer to or from adapter */
\r
287 /* did not complete */
\r
288 #define TRLLD_INTERNAL_TX 2 /* Trouble with clean up of tx frames */
\r
289 #define TRLLD_INTERNAL_RX 3 /* Trouble with clean up of receive */
\r
291 #define TRLLD_INTERNAL_CMD 4 /* error response from adapter */
\r
292 #define TRLLD_INTERNAL_STATE 5 /* event happened in unexpected state */
\r
294 /* values of TRlldStatus.Specification.AdapterTimeout */
\r
296 #define TRLLD_COMMAND_TIMEOUT 1
\r
297 #define TRLLD_TRANSMIT_TIMEOUT 2
\r
298 #define TRLLD_INTERRUPT_TIMEOUT 3
\r
301 /*****************************************************************************/
\r
303 /* TRlldStatistics contains the adapter statistics returned to Driver */
\r
304 /* in TRlldStatistics calls and DriverStatistics call-backs */
\r
306 /*****************************************************************************/
\r
308 typedef struct TRlldStatistics {
\r
309 unsigned long LineErrors;
\r
310 unsigned long InternalErrors; /* Not maintained by TMS based boards */
\r
311 unsigned long BurstErrors;
\r
312 unsigned long ARIFCIErrors;
\r
313 unsigned long AbortDelimiters; /* Not maintained by TMS based boards */
\r
314 unsigned long LostFrames;
\r
315 unsigned long CongestionErrors;
\r
316 unsigned long FrameCopiedErrors;
\r
317 unsigned long FrequencyErrors; /* Not maintained by TMS based boards */
\r
318 unsigned long TokenErrors;
\r
319 unsigned long DMABusErrors; /* Not maintained by 3139 */
\r
320 unsigned long DMAParityErrors; /* Not maintained by 3139 */
\r
321 unsigned long ReceiveLongFrame; /* Not maintained by TMS based boards */
\r
322 unsigned long ReceiveCRCErrors; /* Not maintained by TMS based boards */
\r
323 unsigned long ReceiveOverflow; /* Not maintained by TMS based boards */
\r
324 unsigned long TransmitUnderrun; /* Not maintained by TMS based boards */
\r
325 unsigned long UnderrunLock; /* Not maintained by TMS based boards */
\r
326 unsigned long OverflowReset;
\r
327 unsigned char UpstreamNeighbour[6];
\r
328 unsigned short RingNumber;
\r
329 unsigned char BeaconingUpstreamNeighbour[6];
\r
330 unsigned short padding;
\r
331 } TRlldStatistics_t;
\r
334 /*****************************************************************************/
\r
336 /* TRlldDriver contains the Driver call-backs */
\r
338 /*****************************************************************************/
\r
340 typedef struct TRlldDriver {
\r
341 unsigned long TRlldVersion;
\r
342 #ifndef TRlldInlineIO
\r
343 void (CDECL * DriverOutByte)(unsigned short IOAddress,
\r
344 unsigned char Value);
\r
345 void (CDECL * DriverOutWord)(unsigned short IOAddress,
\r
346 unsigned short Value);
\r
347 void (CDECL * DriverOutDWord)(unsigned short IOAddress,
\r
348 unsigned long Value);
\r
349 void (CDECL * DriverRepOutByte)(unsigned short IOAddress,
\r
350 TRlldDataPtr_t DataPointer,
\r
352 void (CDECL * DriverRepOutWord)(unsigned short IOAddress,
\r
353 TRlldWordDataPtr_t DataPointer,
\r
355 void (CDECL * DriverRepOutDWord)(unsigned short IOAddress,
\r
356 TRlldDWordDataPtr_t DataPointer,
\r
358 unsigned char (CDECL * DriverInByte)(unsigned short IOAddress);
\r
359 unsigned short (CDECL * DriverInWord)(unsigned short IOAddress);
\r
360 unsigned long (CDECL * DriverInDWord)(unsigned short IOAddress);
\r
361 void (CDECL * DriverRepInByte)(unsigned short IOAddress,
\r
362 TRlldDataPtr_t DataPointer,
\r
364 void (CDECL * DriverRepInWord)(unsigned short IOAddress,
\r
365 TRlldWordDataPtr_t DataPointer,
\r
367 void (CDECL * DriverRepInDWord)(unsigned short IOAddress,
\r
368 TRlldDWordDataPtr_t DataPointer,
\r
371 void (CDECL * DriverSuspend)(unsigned short MicroSeconds);
\r
372 void (CDECL * DriverStatus)(void * DriverHandle,
\r
373 TRlldStatus_t * Status);
\r
374 void (CDECL * DriverCloseCmpltd)(void * DriverHandle);
\r
375 void (CDECL * DriverStatistics)(void * DriverHandle,
\r
376 TRlldStatistics_t * Statistics);
\r
377 void (CDECL * DriverTxFrameCmpltd)(void * DriverHandle,
\r
378 void * FrameHandle,
\r
380 void (CDECL * DriverRcvFrameCmpltd)(void * DriverHandle,
\r
383 void * FragmentHandle,
\r
387 /* Version and model control */
\r
389 #define TRLLD_VERSION_INLINEIO 0x8000
\r
390 #define TRLLD_VERSION_SMALL 0x4000
\r
391 #ifdef TRlldInlineIO
\r
393 #define TRLLD_VERSION 0x4120
\r
395 #define TRLLD_VERSION 0x0120
\r
399 #define TRLLD_VERSION 0xC120
\r
401 #define TRLLD_VERSION 0x8120
\r
406 /*****************************************************************************/
\r
408 /* TRlldAdapterConfig contains the properties found for an adapter */
\r
409 /* used when finding and defining adapters to use */
\r
411 /*****************************************************************************/
\r
415 unsigned short vendor;
\r
416 unsigned short device;
\r
420 unsigned short vendor;
\r
421 unsigned short device;
\r
422 unsigned char revision;
\r
423 unsigned char reserved_byte;
\r
424 unsigned short reserved_word;
\r
428 /* unknown as yet */
\r
433 unsigned short bus_no;
\r
434 unsigned short device_no;
\r
437 struct pcmcia_socket {
\r
438 /* unknown as yet */
\r
442 typedef struct TRlldAdapterConfig {
\r
443 unsigned char type;
\r
445 unsigned short magic;
\r
448 unsigned long eisa;
\r
449 unsigned short mca;
\r
451 struct pcmcia_id pcmcia;
\r
454 unsigned short csn;
\r
455 unsigned short eisa;
\r
456 unsigned short mca;
\r
457 struct pci_slot pci;
\r
458 struct pcmcia_socket pcmcia;
\r
460 unsigned short iobase0;
\r
461 unsigned short iolength0;
\r
462 unsigned short iobase1;
\r
463 unsigned short iolength1;
\r
464 unsigned long memorybase;
\r
465 unsigned short memorylength;
\r
466 unsigned char mode;
\r
467 unsigned char xmode;
\r
468 unsigned char interruptlevel;
\r
469 unsigned char dmalevel;
\r
470 unsigned char macaddress[6];
\r
471 unsigned long prombase;
\r
472 unsigned char speed;
\r
473 unsigned char cachelinesize;
\r
474 unsigned short pcicommand;
\r
475 unsigned char mactype;
\r
476 unsigned char reserved[3];
\r
477 } TRlldAdapterConfig_t;
\r
479 /* values of TRlldAdapterConfig.Type */
\r
481 #define TRLLD_ADAPTER_XT 0 /* not supported */
\r
482 #define TRLLD_ADAPTER_ISA1 1 /* OC-3115 */
\r
483 #define TRLLD_ADAPTER_ISA2 2 /* OC-3117 */
\r
484 #define TRLLD_ADAPTER_ISA3 3 /* OC-3118 */
\r
485 #define TRLLD_ADAPTER_MCA1 4 /* OC-3129 id A84 */
\r
486 #define TRLLD_ADAPTER_MCA2 5 /* OC-3129 id A85 */
\r
487 #define TRLLD_ADAPTER_MCA3 6 /* OC-3129 id A86 */
\r
488 #define TRLLD_ADAPTER_EISA1 7 /* OC-3133 id 0109833D */
\r
489 #define TRLLD_ADAPTER_EISA2 8 /* OC-3133 id 0209833D */
\r
490 #define TRLLD_ADAPTER_EISA3 9 /* OC-3135 not supported */
\r
491 #define TRLLD_ADAPTER_PCI1 10 /* OC-3136 id 108d0001 rev 1 */
\r
492 #define TRLLD_ADAPTER_PCI2 11 /* OC-3136 id 108d0001 rev 2 */
\r
493 #define TRLLD_ADAPTER_PCI3 12 /* OC-3137 id 108d0001 rev 3 */
\r
494 #define TRLLD_ADAPTER_PCI4 13 /* OC-3139 id 108d0004 rev 2 */
\r
495 #define TRLLD_ADAPTER_PCI5 14 /* OC-3140 id 108d0004 rev 3 */
\r
496 #define TRLLD_ADAPTER_PCI6 15 /* OC-3141 id 108d0007 rev 1 */
\r
497 #define TRLLD_ADAPTER_PCI7 19 /* OC-3540 id 108d0008 rev 1 */
\r
498 #define TRLLD_ADAPTER_PCI8 20 /* OC-3150 id 108d000a rev 1 */
\r
500 #define TRLLD_ADAPTER_PCCARD1 16 /* OC-3220 */
\r
501 #define TRLLD_ADAPTER_PCCARD2 17 /* OC-3221,OC-3230,OC-3232 */
\r
503 #define TRLLD_ADAPTER_PCCARD3 18 /* OC-3250 id 108d0005 rev 1 */
\r
505 /* values of TRlldAdapterConfig.Bus */
\r
507 #define TRLLD_BUS_ISA 1
\r
508 #define TRLLD_BUS_EISA 2
\r
509 #define TRLLD_BUS_MCA 3
\r
510 #define TRLLD_BUS_PCI 4
\r
511 #define TRLLD_BUS_PCMCIA 5
\r
513 /* values of TRlldAdapterConfig.mode */
\r
515 #define TRLLD_MODE_16M 0x01 /* needs data buffers below 16 M */
\r
516 #define TRLLD_MODE_PHYSICAL 0x02 /* needs valid physical addresses */
\r
517 #define TRLLD_MODE_FIXED_CFG 0x04 /* cannot be reconfigured */
\r
518 #define TRLLD_MODE_SHORT_SLOT 0x08 /* in short ISA slot, cannot use DMA */
\r
519 #define TRLLD_MODE_CANNOT_DISABLE 0x10 /* can not disable interrupt */
\r
520 #define TRLLD_MODE_SHARE_INTERRUPT 0x20 /* may share interrupt */
\r
521 #define TRLLD_MODE_MEMORY 0x40 /* is configured with a memory window*/
\r
523 /* values of TRlldAdapterConfig.dma */
\r
525 #define TRLLD_DMA_PIO 4 /* other values signifies the DMA channel */
\r
526 #define TRLLD_DMA_MASTER 0xff /* to use */
\r
528 /* values of TRlldAdapterConfig.mactype */
\r
530 /* download with: */
\r
531 #define TRLLD_MAC_TMS 1 /* TRlldMACCode */
\r
532 #define TRLLD_MAC_HAWKEYE 2 /* TRlldHawkeyeMAC */
\r
533 #define TRLLD_MAC_BULLSEYE 3 /* TRlldBullseyeMAC */
\r
536 typedef void * TRlldAdapter_t;
\r
537 typedef void * TRlldAdapterType_t;
\r
539 #ifndef MAX_FRAGMENTS
\r
540 #define MAX_FRAGMENTS 32
\r
543 typedef struct TRlldTransmit {
\r
544 unsigned short FragmentCount;
\r
545 unsigned short TRlldTransmitReserved;
\r
546 struct TRlldTransmitFragment {
\r
547 unsigned long PhysicalAddress;
\r
548 TRlldDataPtr_t VirtualAddress;
\r
549 unsigned short count;
\r
550 unsigned short TRlldTransmitFragmentReserved;
\r
551 } TransmitFragment[MAX_FRAGMENTS];
\r
554 int CDECL TRlldAdapterSize(void);
\r
556 int CDECL TRlldInit(int TypeCount,
\r
557 TRlldAdapterType_t * AdapterTypeTable);
\r
559 extern TRlldAdapterType_t CDECL TRlld3115; /* ISA adapters */
\r
560 extern TRlldAdapterType_t CDECL TRlld3117;
\r
561 extern TRlldAdapterType_t CDECL TRlld3118;
\r
562 extern TRlldAdapterType_t CDECL TRlld3129; /* MCA adapters */
\r
563 extern TRlldAdapterType_t CDECL TRlld3133; /* EISA adapters */
\r
564 extern TRlldAdapterType_t CDECL TRlld3136; /* PCI adapters */
\r
565 extern TRlldAdapterType_t CDECL TRlld3137;
\r
566 extern TRlldAdapterType_t CDECL TRlld3139; /* Hawkeye adapters */
\r
567 extern TRlldAdapterType_t CDECL TRlld3540; /* Bullseye adapters */
\r
569 #define T3115 &TRlld3115
\r
570 #define T3117 &TRlld3117
\r
571 #define T3118 &TRlld3118
\r
572 #define T3129 &TRlld3129
\r
573 #define T3133 &TRlld3133
\r
574 #define T3136 &TRlld3136
\r
575 #define T3137 &TRlld3137
\r
576 #define T3139 &TRlld3139
\r
577 #define T3540 &TRlld3540
\r
579 /* Only for Boot Prom Page Zero code */
\r
581 extern TRlldAdapterType_t CDECL TRlld3115Boot; /* ISA adapters */
\r
582 extern TRlldAdapterType_t CDECL TRlld3117Boot;
\r
583 extern TRlldAdapterType_t CDECL TRlld3118Boot;
\r
584 extern TRlldAdapterType_t CDECL TRlld3129Boot; /* MCA adapters */
\r
585 extern TRlldAdapterType_t CDECL TRlld3133Boot; /* EISA adapters */
\r
586 extern TRlldAdapterType_t CDECL TRlld3136Boot; /* PCI adapters */
\r
587 extern TRlldAdapterType_t CDECL TRlld3137Boot;
\r
588 extern TRlldAdapterType_t CDECL TRlld3139Boot; /* Hawkeye adapters */
\r
589 extern TRlldAdapterType_t CDECL TRlld3150Boot;
\r
590 extern TRlldAdapterType_t CDECL TRlld3250Boot;
\r
591 extern TRlldAdapterType_t CDECL TRlld3540Boot; /* Bullseye adapter */
\r
593 #define B3115 &TRlld3115Boot
\r
594 #define B3117 &TRlld3117Boot
\r
595 #define B3118 &TRlld3118Boot
\r
596 #define B3129 &TRlld3129Boot
\r
597 #define B3133 &TRlld3133Boot
\r
598 #define B3136 &TRlld3136Boot
\r
599 #define B3137 &TRlld3137Boot
\r
600 #define B3139 &TRlld3139Boot
\r
601 #define B3150 &TRlld3150Boot
\r
602 #define B3250 &TRlld3250Boot
\r
603 #define B3540 &TRlld3540Boot
\r
605 #define TRLLD_INIT_OK 0
\r
606 #define TRLLD_INIT_UNKNOWN 5
\r
608 int CDECL TRlldAdapterInit(TRlldDriver_t * DriverDefinition,
\r
609 TRlldAdapter_t * TRlldAdapter,
\r
610 unsigned long TRlldAdapterPhysical,
\r
611 void * DriverHandle,
\r
612 TRlldAdapterConfig_t * config);
\r
614 #define TRLLD_INIT_OK 0
\r
615 #define TRLLD_INIT_NOT_FOUND 1
\r
616 #define TRLLD_INIT_UNSUPPORTED 2
\r
617 #define TRLLD_INIT_PHYS16 3
\r
618 #define TRLLD_INIT_VERSION 4
\r
620 int CDECL TRlldSetSpeed(TRlldAdapter_t * adapter,
\r
621 unsigned char speed);
\r
623 #define TRLLD_SPEED_4MBPS 4
\r
624 #define TRLLD_SPEED_16MBPS 16
\r
625 #define TRLLD_SPEED_100MBPS 100
\r
627 int CDECL TRlldSetInterrupt(TRlldAdapter_t * adapter,
\r
628 unsigned char interruptlevel);
\r
630 int CDECL TRlldSetDMA(TRlldAdapter_t * adapter,
\r
631 unsigned char dma, unsigned char * mode);
\r
633 #define TRLLD_CONFIG_OK 0
\r
634 #define TRLLD_CONFIG_STATE 1
\r
635 #define TRLLD_CONFIG_ILLEGAL 2
\r
636 #define TRLLD_CONFIG_FAILED 3
\r
638 int CDECL TRlldSetSpecial(TRlldAdapter_t * adapter,
\r
639 unsigned short param1, unsigned short param2,
\r
640 unsigned short param3, unsigned short param4);
\r
642 int CDECL TRlldAddMemory(TRlldAdapter_t * adapter,
\r
643 TRlldDataPtr_t virtual,
\r
644 unsigned long physical,
\r
647 int CDECL TRlldDisable(TRlldAdapter_t * adapter);
\r
650 #define TRLLD_NOT_SUPPORTED 1
\r
652 void CDECL TRlldEnable(TRlldAdapter_t * adapter);
\r
654 int CDECL TRlldInterruptPresent(TRlldAdapter_t * adapter);
\r
656 #define TRLLD_NO_INTERRUPT 0
\r
657 #define TRLLD_INTERRUPT 1
\r
659 int CDECL TRlldInterruptService(TRlldAdapter_t * adapter);
\r
661 int CDECL TRlldInterruptPreService(TRlldAdapter_t * adapter);
\r
663 void CDECL TRlldInterruptPostService(TRlldAdapter_t * adapter);
\r
666 int CDECL TRlldPoll(TRlldAdapter_t * adapter);
\r
668 int CDECL TRlldDownload(TRlldAdapter_t * adapter,
\r
669 char * DownLoadCode);
\r
671 #define TRLLD_DOWNLOAD_OK 0
\r
672 #define TRLLD_DOWNLOAD_ERROR 1
\r
673 #define TRLLD_STATE 2
\r
675 typedef int (CDECL * GetCode_t)(void * handle, unsigned char * maccodebyte);
\r
677 int CDECL TRlldStreamDownload(TRlldAdapter_t * adapter,
\r
678 GetCode_t procedure, void * handle);
\r
680 int CDECL TRlldOpen(TRlldAdapter_t * adapter,
\r
681 unsigned char * MACAddress,
\r
682 unsigned long GroupAddress,
\r
683 unsigned long FunctionalAddress,
\r
684 unsigned short MaxFrameSize,
\r
685 unsigned short OpenModes);
\r
687 #define TRLLD_OPEN_OK 0
\r
688 #define TRLLD_OPEN_STATE 1
\r
689 #define TRLLD_OPEN_ADDRESS_ERROR 2
\r
690 #define TRLLD_OPEN_MODE_ERROR 3
\r
691 #define TRLLD_OPEN_MEMORY 4
\r
693 #define TRLLD_MODE_TX_STATUS 0x01
\r
694 #define TRLLD_MODE_RX_SINGLE 0x02
\r
695 #define TRLLD_MODE_FORCE_TKP 0x04
\r
696 #define TRLLD_MODE_FORCE_TXI 0x08
\r
697 #define TRLLD_MODE_TX_CRC 0x10
\r
699 void CDECL TRlldClose(TRlldAdapter_t * adapter, int immediate);
\r
701 void CDECL TRlldSetGroupAddress(TRlldAdapter_t * adapter,
\r
702 unsigned long GroupAddress);
\r
704 void CDECL TRlldSetFunctionalAddress(TRlldAdapter_t * adapter,
\r
705 unsigned long FunctionalAddress);
\r
707 void CDECL TRlldSetPromiscuousMode(TRlldAdapter_t * adapter,
\r
708 unsigned char mode);
\r
712 #define TRLLD_PROM_LLC 1
\r
713 #define TRLLD_PROM_MAC 2
\r
714 #define TRLLD_PROM_ERRORFRAMES 4
\r
716 int CDECL TRlldGetStatistics(TRlldAdapter_t * adapter,
\r
717 TRlldStatistics_t * statistics,
\r
720 #define TRLLD_IMMEDIATE_STATISTICS 1
\r
722 #define TRLLD_STATISTICS_RETRIEVED 0
\r
723 #define TRLLD_STATISTICS_PENDING 1
\r
725 int CDECL TRlldTransmitFrame(TRlldAdapter_t * adapter,
\r
726 TRlldTransmit_t * TransmitFrame,
\r
727 void * FrameHandle);
\r
729 #define TRLLD_TRANSMIT_OK 0
\r
730 #define TRLLD_TRANSMIT_NOT_OPEN 1
\r
731 #define TRLLD_TRANSMIT_TOO_MANY 2
\r
732 #define TRLLD_TRANSMIT_MAX16 3
\r
733 #define TRLLD_TRANSMIT_SIZE 4
\r
734 #define TRLLD_TRANSMIT_EMPTY 5
\r
736 /* completion flags */
\r
738 #define TRLLD_TX_OK 0
\r
739 #define TRLLD_TX_NOT_PROCESSED 1
\r
740 #define TRLLD_TX_NOT_RECOGNIZED 2
\r
741 #define TRLLD_TX_NOT_COPIED 3
\r
743 /* number of free transmit fragments */
\r
745 int CDECL TRlldTransmitFree(TRlldAdapter_t * adapter);
\r
747 int CDECL TRlldReceiveFragment(TRlldAdapter_t * adapter,
\r
748 TRlldDataPtr_t FragmentStart,
\r
749 unsigned long FragmentPhysical,
\r
751 void * FragmentHandle);
\r
753 #define TRLLD_RECEIVE_OK 0
\r
754 #define TRLLD_RECEIVE_NOT_OPEN 1
\r
755 #define TRLLD_RECEIVE_TOO_MANY 2
\r
756 #define TRLLD_RECEIVE_SIZE 3
\r
757 #define TRLLD_RECEIVE_MAX16 4
\r
759 /* completion flags */
\r
761 #define TRLLD_RCV_OK 0
\r
762 #define TRLLD_RCV_NO_DATA 1
\r
763 #define TRLLD_RCV_ERROR 2 /* Only when TRLLD_PROM_ERRORFRAMES */
\r
764 #define TRLLD_RCV_LONG 3
\r
766 /* number of free receive fragments */
\r
768 int CDECL TRlldReceiveFree(TRlldAdapter_t * adapter);
\r
770 int CDECL TRlldFind(TRlldDriver_t * driver,
\r
771 TRlldAdapterConfig_t * config_table,
\r
772 unsigned long type_mask,
\r
775 /* type mask bits */
\r
777 #define OC_3115 0x0001
\r
778 #define OC_3117 0x0002
\r
779 #define OC_3118 0x0004
\r
780 #define OC_3129 0x0008
\r
781 #define OC_3133 0x0010
\r
782 #define OC_3136 0x0040
\r
783 #define OC_3137 0x0080
\r
784 #define OC_3139 0x0100
\r
785 #define OC_3140 0x0200
\r
786 #define OC_3141 0x0400
\r
787 #define OC_3540 0x0800
\r
788 #define OC_3150 0x1000
\r
791 #define OC_3220 0x0800
\r
792 #define OC_3221 0x1000
\r
793 #define OC_3230 0x2000
\r
794 #define OC_3232 0x4000
\r
797 #define OC_3250 0x8000
\r
799 int CDECL TRlldIOAddressConfig(TRlldDriver_t * driver,
\r
800 TRlldAdapterConfig_t * config,
\r
801 unsigned short address);
\r
804 #define TRLLD_FIND_OK 1
\r
805 #define TRLLD_FIND_ERROR 0
\r
806 #define TRLLD_FIND_VERSION -1
\r
808 int CDECL TRlldEISASlotConfig(TRlldDriver_t * driver,
\r
809 TRlldAdapterConfig_t * config,
\r
812 int CDECL TRlldMCASlotConfig(TRlldDriver_t * driver,
\r
813 TRlldAdapterConfig_t * config,
\r
816 int CDECL TRlldPCIConfig(TRlldDriver_t * driver,
\r
817 TRlldAdapterConfig_t * config,
\r
818 char * PCIConfigurationSpace);
\r
820 #define TRLLD_PCICONFIG_OK 0
\r
821 #define TRLLD_PCICONFIG_FAIL 1
\r
822 #define TRLLD_PCICONFIG_SET_COMMAND 2
\r
823 #define TRLLD_PCICONFIG_VERSION 3
\r
826 int CDECL TRlldFindPCI(TRlldDriver_t * driver,
\r
827 TRlldAdapterConfig_t * config_table,
\r
828 unsigned long type_mask,
\r
832 typedef void * PCCardHandle_t;
\r
834 typedef int (CDECL * GetTupleData_t)(PCCardHandle_t handle,
\r
835 unsigned short TupleIdent,
\r
839 int CDECL TRlldPCCardConfig(TRlldDriver_t * driver,
\r
840 TRlldAdapterConfig_t * config,
\r
841 unsigned short address,
\r
843 GetTupleData_t GetTuple,
\r
844 PCCardHandle_t handle);
\r
846 #define TRLLD_PCCARD_CONFIG_OK 0
\r
847 #define TRLLD_PCCARD_CONFIG_FAIL 1
\r
850 /* Boot Prom Support */
\r
852 typedef struct TRlldPromInfo {
\r
853 unsigned short PromIdent;
\r
855 short PromPageSize;
\r
858 int CDECL TRlldMapBootProm(TRlldAdapter_t * adapter,
\r
859 TRlldDataPtr_t prompointer);
\r
861 #define TRLLD_PROM_OK 0
\r
862 #define TRLLD_PROM_FAILED 3
\r
864 int CDECL TRlldGetPromInfo(TRlldAdapter_t * adapter, TRlldPromInfo_t * info);
\r
866 #define TRLLD_PROM_OK 0
\r
867 #define TRLLD_PROM_NOT_MOUNTED 1
\r
868 #define TRLLD_PROM_NOT_MAPPED 2
\r
870 void CDECL TRlldSetPromPage(TRlldAdapter_t * adapter, int page);
\r
872 int CDECL TRlldSetMemoryUse(TRlldAdapter_t * adapter, int use);
\r
874 #define TRLLD_PROM_TO_MEMORY 0
\r
875 #define TRLLD_REGISTERS_TO_MEMORY 1
\r
877 #define TRLLD_MEMORY_USE_OK 0
\r
878 #define TRLLD_MEMORY_USE_NO_MEMORY 1
\r
879 #define TRLLD_MEMORY_USE_STATE 2
\r
880 #define TRLLD_MEMORY_USE_ILLEGAL 3
\r
882 int CDECL TRlldPromErase(TRlldAdapter_t * adapter,
\r
883 void (CDECL * delay)(int milliseconds));
\r
885 #define TRLLD_PROM_OK 0
\r
886 #define TRLLD_PROM_NOT_MOUNTED 1
\r
887 #define TRLLD_PROM_NOT_MAPPED 2
\r
888 #define TRLLD_PROM_FAILED 3
\r
890 int CDECL TRlldPromWrite(TRlldAdapter_t * adapter, char * data,
\r
891 int offset, int count);
\r
893 #define TRLLD_PROM_OK 0
\r
894 #define TRLLD_PROM_NOT_MOUNTED 1
\r
895 #define TRLLD_PROM_NOT_MAPPED 2
\r
896 #define TRLLD_PROM_FAILED 3
\r
897 #define TRLLD_PROM_ILLEGAL 4
\r
899 void CDECL TRlldEmergency(TRlldAdapter_t * adapter);
\r
901 /* Convert from TRlldAdapterConfig.type to name string */
\r
902 char * CDECL TRlldAdapterName(int type);
\r