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
19 *---------------------------------------------------------------------------
\r
20 * $Log: J:/usr/project/trlld/libsrc/include/trlld.h_v $
\r
22 * Rev 1.9 25 Jan 1999 09:56:28 EGS
\r
25 * Rev 1.8 10 Dec 1998 12:24:52 JHM
\r
26 * version 1.2.0,prominfo structure with shorts.
\r
28 * Rev 1.7 25 Nov 1998 16:18:48 JHM
\r
29 * Bullseye mac, 100MBPS, mactype in config structure,
\r
30 * 3540 adapter, TRlldTransmitFree, TRlldReceiveFree,
\r
33 * Rev 1.6 23 Oct 1998 16:00:36 JHM
\r
34 * hawkeye adapter types
\r
36 * Rev 1.5 11 Aug 1998 12:22:06 JHM
\r
37 * split hawkeye types into PCI4,5,6
\r
39 * Rev 1.4 10 Jul 1998 14:39:22 JHM
\r
42 * Rev 1.3 18 Jun 1998 11:32:20 JHM
\r
45 * Rev 1.2 18 Apr 1998 15:11:20 JHM
\r
47 * Rev 1.1 09 Dec 1997 18:17:52 JHM
\r
48 * rel111: TRlldDataPtr_t
\r
50 * Rev 1.0 24 Nov 1997 11:08:58 JHM
\r
53 Rev 1.5 18 Jun 1997 11:31:36 JHM
\r
56 Rev 1.4 13 Jun 1997 13:47:34 JHM
\r
58 Rev 1.3 13 Jun 1997 13:27:56 JHM
\r
59 DTR support, version change
\r
61 Rev 1.2 12 Jun 1997 11:43:20 JHM
\r
62 TRLLD_INTERRUPT_TIMEOUT defined
\r
64 Rev 1.1 11 Apr 1997 15:24:18 JHM
\r
65 replaced tabs with spaces
\r
67 Rev 1.0 11 Apr 1997 14:43:04 JHM
\r
70 ****************************************************************************
\r
76 /* Data buffer pointers are always 32 bits.
\r
77 For 16:16 it is segment:offset while it for 32:32 is a linear address. */
\r
80 #define TRlldDataPtr_t unsigned char far *
\r
81 #define TRlldWordDataPtr_t unsigned short far *
\r
82 #define TRlldDWordDataPtr_t unsigned long far *
\r
84 #define TRlldDataPtr_t unsigned char *
\r
85 #define TRlldWordDataPtr_t unsigned short *
\r
86 #define TRlldDWordDataPtr_t unsigned long *
\r
90 #define CDECL _cdecl
\r
95 /*****************************************************************************/
\r
99 /*****************************************************************************/
\r
101 extern unsigned char TRlldMacCode[]; /* 3115,17,18,29,33,36,37 */
\r
102 extern unsigned char TRlldHawkeyeMac[]; /* 3139,3140,3141,3250 */
\r
103 extern unsigned char TRlldBullseyeMac[]; /* 3150,3540 */
\r
105 /*****************************************************************************/
\r
107 /* Maximal numbers of concurrent receive and transmit slots */
\r
109 /*****************************************************************************/
\r
111 #define TRLLD_MAX_RECEIVE 32
\r
112 #define TRLLD_MAX_TRANSMIT 32
\r
114 /*****************************************************************************/
\r
116 /* Maximal frame sizes */
\r
118 /*****************************************************************************/
\r
120 #define TRLLD_MAXFRAME_100MBPS 18000
\r
121 #define TRLLD_MAXFRAME_16MBPS 18000
\r
122 #define TRLLD_MAXFRAME_4MBPS 4500
\r
124 /*****************************************************************************/
\r
126 /* TRlldStatus contains the adapter status used in a DriverStatus call-back. */
\r
128 /*****************************************************************************/
\r
130 struct OnWireInformation {
\r
131 unsigned short RingStatus;
\r
132 unsigned short Speed;
\r
133 unsigned short AccessProtocol;
\r
134 unsigned short Reserved;
\r
137 typedef struct TRlldStatus {
\r
138 unsigned short Type;
\r
139 unsigned char Closed;
\r
140 unsigned char AccessProtocol;
\r
141 unsigned short MaxFrameSize;
\r
142 unsigned short Reserved;
\r
144 unsigned short OnWireRingStatus; /* for compability */
\r
145 unsigned short SelftestStatus;
\r
146 unsigned short InitStatus;
\r
147 unsigned short RingStatus;
\r
148 unsigned short AdapterCheck[4];
\r
149 unsigned short InternalError[4];
\r
150 unsigned short PromRemovedCause;
\r
151 unsigned short AdapterTimeout;
\r
152 struct OnWireInformation OnWireInformation;
\r
156 /* values of TRlldStatus.Type */
\r
158 #define TRLLD_STS_ON_WIRE 0
\r
159 #define TRLLD_STS_SELFTEST_STATUS 1
\r
160 #define TRLLD_STS_INIT_STATUS 2
\r
161 #define TRLLD_STS_RING_STATUS 3
\r
162 #define TRLLD_STS_ADAPTER_CHECK 4
\r
163 #define TRLLD_STS_PROMISCUOUS_STOPPED 5
\r
164 #define TRLLD_STS_LLD_ERROR 6
\r
165 #define TRLLD_STS_ADAPTER_TIMEOUT 7
\r
167 /* values of TRlldStatus.Closed */
\r
169 #define TRLLD_STS_STATUS_OK 0
\r
170 #define TRLLD_STS_STATUS_CLOSED 1
\r
172 /* values of TRlldStatus.AccessProtocol */
\r
174 #define TRLLD_ACCESS_UNKNOWN 0
\r
175 #define TRLLD_ACCESS_TKP 1
\r
176 #define TRLLD_ACCESS_TXI 2
\r
178 /* values of TRlldStatus.SelftestStatus */
\r
180 #define TRLLD_ST_OK 0
\r
181 #define TRLLD_ST_ERROR 0x0100 /* actual errors are 010x, where x is */
\r
182 /* 0: Initial Test Error */
\r
183 /* 1: Adapter Software Checksum Error */
\r
184 /* 2: Adapter RAM Error */
\r
185 /* 4: Instruction Test Error */
\r
186 /* 5: Protocol Handler/RI Hw Error */
\r
187 /* 6: System Interface Register Error */
\r
189 #define TRLLD_ST_TIMEOUT 0x0200 /* The adapter did not complete */
\r
190 /* selftest after download */
\r
192 /* values of TRlldStatus.Specification.InitStatus */
\r
194 /* the most likely cause of an init error (whatever the code) is a wrong */
\r
195 /* physical or virtual address of the adapter block in TRlldAdapterInit */
\r
197 #define TRLLD_INIT_ERROR 0x100 /* actual errors are 010x, where x is */
\r
198 /* 1: Invalid init block (LLD error) */
\r
199 /* 2: Invalid options (LLD error) */
\r
200 /* 3: Invalid rcv burst (LLD error) */
\r
201 /* 4: Invalid xmt burst (LLD error) */
\r
202 /* 5: Invalid DMA threshold (LLDerror)*/
\r
203 /* 6: Invalid scb addr */
\r
204 /* 7: Invalid ssb addr */
\r
205 /* 8: DIO parity error (HW error) */
\r
206 /* 9: DMA timeout (May be interrupt
\r
207 failing if PIO mode or PCI2) */
\r
208 /* A: DMA parity error (HW error) */
\r
209 /* B: DMA bus error (HW error) */
\r
210 /* C: DMA data error */
\r
211 /* D: Adapter check */
\r
213 #define TRLLD_INIT_TIMEOUT 0x200 /* adapter init did not complete */
\r
214 #define TRLLD_INIT_DMA_ERROR 0x300 /* adapter cannot access sys memory */
\r
215 #define TRLLD_INIT_INTR_ERROR 0x400 /* adapter cannot interrupt */
\r
216 #define TRLLD_OPEN_TIMEOUT 0x500 /* adapter open did not complete */
\r
217 /* within 30 seconds */
\r
219 #define TRLLD_OPEN_ERROR 0x600 /* actual errors are 06xx, where the */
\r
220 /* bits in x mean: */
\r
221 /* 01: Invalid open options (LLDerror)*/
\r
222 /* 04: TxBuffer count error (LLDerror)*/
\r
223 /* 10: Buffer size error (LLD error) */
\r
224 /* 20: List size error (LLD error) */
\r
225 /* 40: Node address error */
\r
227 #define TRLLD_OPEN_REPEAT 0x700 /* actual errors are 07xy, where */
\r
228 /* x is the open phase: */
\r
229 /* 1: Lobe media test */
\r
230 /* 2: Physical Insertion */
\r
231 /* 3: Address verification */
\r
232 /* 4: Participation in ring poll */
\r
233 /* 5: Request Initialization */
\r
234 /* 9: Request registration (TXI) */
\r
235 /* A: Lobe Media Test (TXI) */
\r
236 /* B: Address verification (TXI) */
\r
237 /* y is the type of error: */
\r
238 /* 1: Function failure (No Cable ?) */
\r
239 /* 2: Signal loss */
\r
241 /* 6: Ring failure (TKP) */
\r
242 /* 6: Protocol error (TXI) */
\r
243 /* 7: Ring beaconing */
\r
244 /* 8: Duplicate Node Address (TKP) */
\r
245 /* 8: Insert Denied (TXI) */
\r
246 /* 9: Request Initialization (TKP) */
\r
247 /* 9: Heart beat failure (TXI) */
\r
248 /* A: Remove received */
\r
249 /* B: C-port address changed (TXI) */
\r
250 /* C: Wire Fault (TKP) */
\r
251 /* D: Auto Speed, 1. on ring (TKP) */
\r
252 /* E: Speed sense failed */
\r
254 /* When opening with FORCE_TXI and only classic token ring attachment is */
\r
255 /* possible, the error is Request Registration/Timeout or 0x795 */
\r
257 #define TRLLD_OPEN_1ST_ON_RING 0x800 /* Speed sense is active, but no other*/
\r
258 /* station is present to set the speed*/
\r
261 /* values of TRlldStatus.Specification.RingStatus */
\r
263 #define TRLLD_RS_SIGNAL_LOSS 0x8000
\r
264 #define TRLLD_RS_HARD_ERROR 0x4000
\r
265 #define TRLLD_RS_SOFT_ERROR 0x2000
\r
266 #define TRLLD_RS_TRANSMIT_BEACON 0x1000
\r
267 #define TRLLD_RS_LOBE_WIRE_FAULT 0x0800
\r
268 #define TRLLD_RS_AUTO_REMOVAL_ERROR 0x0400
\r
269 #define TRLLD_RS_REMOVE_RECEIVED 0x0100
\r
270 #define TRLLD_RS_COUNTER_OVERFLOW 0x0080
\r
271 #define TRLLD_RS_SINGLE_STATION 0x0040
\r
272 #define TRLLD_RS_RING_RECOVERY 0x0020
\r
274 /* values of TRlldStatus.Specification.AdapterCheck */
\r
277 /* values of TRlldStatus.Specification.PromRemovedCause */
\r
279 #define TRLLD_PROM_REMOVE_RECEIVED 1
\r
280 #define TRLLD_PROM_POLL_FAILURE 2
\r
281 #define TRLLD_PROM_BUFFER_SIZE 3
\r
283 /* values of TRlldStatus.Specification.InternalError */
\r
285 #define TRLLD_INTERNAL_PIO 1 /* A PIO transfer to or from adapter */
\r
286 /* did not complete */
\r
287 #define TRLLD_INTERNAL_TX 2 /* Trouble with clean up of tx frames */
\r
288 #define TRLLD_INTERNAL_RX 3 /* Trouble with clean up of receive */
\r
290 #define TRLLD_INTERNAL_CMD 4 /* error response from adapter */
\r
291 #define TRLLD_INTERNAL_STATE 5 /* event happened in unexpected state */
\r
293 /* values of TRlldStatus.Specification.AdapterTimeout */
\r
295 #define TRLLD_COMMAND_TIMEOUT 1
\r
296 #define TRLLD_TRANSMIT_TIMEOUT 2
\r
297 #define TRLLD_INTERRUPT_TIMEOUT 3
\r
300 /*****************************************************************************/
\r
302 /* TRlldStatistics contains the adapter statistics returned to Driver */
\r
303 /* in TRlldStatistics calls and DriverStatistics call-backs */
\r
305 /*****************************************************************************/
\r
307 typedef struct TRlldStatistics {
\r
308 unsigned long LineErrors;
\r
309 unsigned long InternalErrors; /* Not maintained by TMS based boards */
\r
310 unsigned long BurstErrors;
\r
311 unsigned long ARIFCIErrors;
\r
312 unsigned long AbortDelimiters; /* Not maintained by TMS based boards */
\r
313 unsigned long LostFrames;
\r
314 unsigned long CongestionErrors;
\r
315 unsigned long FrameCopiedErrors;
\r
316 unsigned long FrequencyErrors; /* Not maintained by TMS based boards */
\r
317 unsigned long TokenErrors;
\r
318 unsigned long DMABusErrors; /* Not maintained by 3139 */
\r
319 unsigned long DMAParityErrors; /* Not maintained by 3139 */
\r
320 unsigned long ReceiveLongFrame; /* Not maintained by TMS based boards */
\r
321 unsigned long ReceiveCRCErrors; /* Not maintained by TMS based boards */
\r
322 unsigned long ReceiveOverflow; /* Not maintained by TMS based boards */
\r
323 unsigned long TransmitUnderrun; /* Not maintained by TMS based boards */
\r
324 unsigned long UnderrunLock; /* Not maintained by TMS based boards */
\r
325 unsigned long OverflowReset;
\r
326 unsigned char UpstreamNeighbour[6];
\r
327 unsigned short RingNumber;
\r
328 unsigned char BeaconingUpstreamNeighbour[6];
\r
329 unsigned short padding;
\r
330 } TRlldStatistics_t;
\r
333 /*****************************************************************************/
\r
335 /* TRlldDriver contains the Driver call-backs */
\r
337 /*****************************************************************************/
\r
339 typedef struct TRlldDriver {
\r
340 unsigned long TRlldVersion;
\r
341 #ifndef TRlldInlineIO
\r
342 void (CDECL * DriverOutByte)(unsigned short IOAddress,
\r
343 unsigned char Value);
\r
344 void (CDECL * DriverOutWord)(unsigned short IOAddress,
\r
345 unsigned short Value);
\r
346 void (CDECL * DriverOutDWord)(unsigned short IOAddress,
\r
347 unsigned long Value);
\r
348 void (CDECL * DriverRepOutByte)(unsigned short IOAddress,
\r
349 TRlldDataPtr_t DataPointer,
\r
351 void (CDECL * DriverRepOutWord)(unsigned short IOAddress,
\r
352 TRlldWordDataPtr_t DataPointer,
\r
354 void (CDECL * DriverRepOutDWord)(unsigned short IOAddress,
\r
355 TRlldDWordDataPtr_t DataPointer,
\r
357 unsigned char (CDECL * DriverInByte)(unsigned short IOAddress);
\r
358 unsigned short (CDECL * DriverInWord)(unsigned short IOAddress);
\r
359 unsigned long (CDECL * DriverInDWord)(unsigned short IOAddress);
\r
360 void (CDECL * DriverRepInByte)(unsigned short IOAddress,
\r
361 TRlldDataPtr_t DataPointer,
\r
363 void (CDECL * DriverRepInWord)(unsigned short IOAddress,
\r
364 TRlldWordDataPtr_t DataPointer,
\r
366 void (CDECL * DriverRepInDWord)(unsigned short IOAddress,
\r
367 TRlldDWordDataPtr_t DataPointer,
\r
370 void (CDECL * DriverSuspend)(unsigned short MicroSeconds);
\r
371 void (CDECL * DriverStatus)(void * DriverHandle,
\r
372 TRlldStatus_t * Status);
\r
373 void (CDECL * DriverCloseCmpltd)(void * DriverHandle);
\r
374 void (CDECL * DriverStatistics)(void * DriverHandle,
\r
375 TRlldStatistics_t * Statistics);
\r
376 void (CDECL * DriverTxFrameCmpltd)(void * DriverHandle,
\r
377 void * FrameHandle,
\r
379 void (CDECL * DriverRcvFrameCmpltd)(void * DriverHandle,
\r
382 void * FragmentHandle,
\r
386 /* Version and model control */
\r
388 #define TRLLD_VERSION_INLINEIO 0x8000
\r
389 #define TRLLD_VERSION_SMALL 0x4000
\r
390 #ifdef TRlldInlineIO
\r
392 #define TRLLD_VERSION 0x4120
\r
394 #define TRLLD_VERSION 0x0120
\r
398 #define TRLLD_VERSION 0xC120
\r
400 #define TRLLD_VERSION 0x8120
\r
405 /*****************************************************************************/
\r
407 /* TRlldAdapterConfig contains the properties found for an adapter */
\r
408 /* used when finding and defining adapters to use */
\r
410 /*****************************************************************************/
\r
414 unsigned short vendor;
\r
415 unsigned short device;
\r
419 unsigned short vendor;
\r
420 unsigned short device;
\r
421 unsigned char revision;
\r
422 unsigned char reserved_byte;
\r
423 unsigned short reserved_word;
\r
427 /* unknown as yet */
\r
432 unsigned short bus_no;
\r
433 unsigned short device_no;
\r
436 struct pcmcia_socket {
\r
437 /* unknown as yet */
\r
441 typedef struct TRlldAdapterConfig {
\r
442 unsigned char type;
\r
444 unsigned short magic;
\r
447 unsigned long eisa;
\r
448 unsigned short mca;
\r
450 struct pcmcia_id pcmcia;
\r
453 unsigned short csn;
\r
454 unsigned short eisa;
\r
455 unsigned short mca;
\r
456 struct pci_slot pci;
\r
457 struct pcmcia_socket pcmcia;
\r
459 unsigned short iobase0;
\r
460 unsigned short iolength0;
\r
461 unsigned short iobase1;
\r
462 unsigned short iolength1;
\r
463 unsigned long memorybase;
\r
464 unsigned short memorylength;
\r
465 unsigned char mode;
\r
466 unsigned char xmode;
\r
467 unsigned char interruptlevel;
\r
468 unsigned char dmalevel;
\r
469 unsigned char macaddress[6];
\r
470 unsigned long prombase;
\r
471 unsigned char speed;
\r
472 unsigned char cachelinesize;
\r
473 unsigned short pcicommand;
\r
474 unsigned char mactype;
\r
475 unsigned char reserved[3];
\r
476 } TRlldAdapterConfig_t;
\r
478 /* values of TRlldAdapterConfig.Type */
\r
480 #define TRLLD_ADAPTER_XT 0 /* not supported */
\r
481 #define TRLLD_ADAPTER_ISA1 1 /* OC-3115 */
\r
482 #define TRLLD_ADAPTER_ISA2 2 /* OC-3117 */
\r
483 #define TRLLD_ADAPTER_ISA3 3 /* OC-3118 */
\r
484 #define TRLLD_ADAPTER_MCA1 4 /* OC-3129 id A84 */
\r
485 #define TRLLD_ADAPTER_MCA2 5 /* OC-3129 id A85 */
\r
486 #define TRLLD_ADAPTER_MCA3 6 /* OC-3129 id A86 */
\r
487 #define TRLLD_ADAPTER_EISA1 7 /* OC-3133 id 0109833D */
\r
488 #define TRLLD_ADAPTER_EISA2 8 /* OC-3133 id 0209833D */
\r
489 #define TRLLD_ADAPTER_EISA3 9 /* OC-3135 not supported */
\r
490 #define TRLLD_ADAPTER_PCI1 10 /* OC-3136 id 108d0001 rev 1 */
\r
491 #define TRLLD_ADAPTER_PCI2 11 /* OC-3136 id 108d0001 rev 2 */
\r
492 #define TRLLD_ADAPTER_PCI3 12 /* OC-3137 id 108d0001 rev 3 */
\r
493 #define TRLLD_ADAPTER_PCI4 13 /* OC-3139 id 108d0004 rev 2 */
\r
494 #define TRLLD_ADAPTER_PCI5 14 /* OC-3140 id 108d0004 rev 3 */
\r
495 #define TRLLD_ADAPTER_PCI6 15 /* OC-3141 id 108d0007 rev 1 */
\r
496 #define TRLLD_ADAPTER_PCI7 19 /* OC-3540 id 108d0008 rev 1 */
\r
497 #define TRLLD_ADAPTER_PCI8 20 /* OC-3150 id 108d000a rev 1 */
\r
499 #define TRLLD_ADAPTER_PCCARD1 16 /* OC-3220 */
\r
500 #define TRLLD_ADAPTER_PCCARD2 17 /* OC-3221,OC-3230,OC-3232 */
\r
502 #define TRLLD_ADAPTER_PCCARD3 18 /* OC-3250 id 108d0005 rev 1 */
\r
504 /* values of TRlldAdapterConfig.Bus */
\r
506 #define TRLLD_BUS_ISA 1
\r
507 #define TRLLD_BUS_EISA 2
\r
508 #define TRLLD_BUS_MCA 3
\r
509 #define TRLLD_BUS_PCI 4
\r
510 #define TRLLD_BUS_PCMCIA 5
\r
512 /* values of TRlldAdapterConfig.mode */
\r
514 #define TRLLD_MODE_16M 0x01 /* needs data buffers below 16 M */
\r
515 #define TRLLD_MODE_PHYSICAL 0x02 /* needs valid physical addresses */
\r
516 #define TRLLD_MODE_FIXED_CFG 0x04 /* cannot be reconfigured */
\r
517 #define TRLLD_MODE_SHORT_SLOT 0x08 /* in short ISA slot, cannot use DMA */
\r
518 #define TRLLD_MODE_CANNOT_DISABLE 0x10 /* can not disable interrupt */
\r
519 #define TRLLD_MODE_SHARE_INTERRUPT 0x20 /* may share interrupt */
\r
520 #define TRLLD_MODE_MEMORY 0x40 /* is configured with a memory window*/
\r
522 /* values of TRlldAdapterConfig.dma */
\r
524 #define TRLLD_DMA_PIO 4 /* other values signifies the DMA channel */
\r
525 #define TRLLD_DMA_MASTER 0xff /* to use */
\r
527 /* values of TRlldAdapterConfig.mactype */
\r
529 /* download with: */
\r
530 #define TRLLD_MAC_TMS 1 /* TRlldMACCode */
\r
531 #define TRLLD_MAC_HAWKEYE 2 /* TRlldHawkeyeMAC */
\r
532 #define TRLLD_MAC_BULLSEYE 3 /* TRlldBullseyeMAC */
\r
535 typedef void * TRlldAdapter_t;
\r
536 typedef void * TRlldAdapterType_t;
\r
538 #ifndef MAX_FRAGMENTS
\r
539 #define MAX_FRAGMENTS 32
\r
542 typedef struct TRlldTransmit {
\r
543 unsigned short FragmentCount;
\r
544 unsigned short TRlldTransmitReserved;
\r
545 struct TRlldTransmitFragment {
\r
546 unsigned long PhysicalAddress;
\r
547 TRlldDataPtr_t VirtualAddress;
\r
548 unsigned short count;
\r
549 unsigned short TRlldTransmitFragmentReserved;
\r
550 } TransmitFragment[MAX_FRAGMENTS];
\r
553 int CDECL TRlldAdapterSize(void);
\r
555 int CDECL TRlldInit(int TypeCount,
\r
556 TRlldAdapterType_t * AdapterTypeTable);
\r
558 extern TRlldAdapterType_t CDECL TRlld3115; /* ISA adapters */
\r
559 extern TRlldAdapterType_t CDECL TRlld3117;
\r
560 extern TRlldAdapterType_t CDECL TRlld3118;
\r
561 extern TRlldAdapterType_t CDECL TRlld3129; /* MCA adapters */
\r
562 extern TRlldAdapterType_t CDECL TRlld3133; /* EISA adapters */
\r
563 extern TRlldAdapterType_t CDECL TRlld3136; /* PCI adapters */
\r
564 extern TRlldAdapterType_t CDECL TRlld3137;
\r
565 extern TRlldAdapterType_t CDECL TRlld3139; /* Hawkeye adapters */
\r
566 extern TRlldAdapterType_t CDECL TRlld3540; /* Bullseye adapters */
\r
568 #define T3115 &TRlld3115
\r
569 #define T3117 &TRlld3117
\r
570 #define T3118 &TRlld3118
\r
571 #define T3129 &TRlld3129
\r
572 #define T3133 &TRlld3133
\r
573 #define T3136 &TRlld3136
\r
574 #define T3137 &TRlld3137
\r
575 #define T3139 &TRlld3139
\r
576 #define T3540 &TRlld3540
\r
578 /* Only for Boot Prom Page Zero code */
\r
580 extern TRlldAdapterType_t CDECL TRlld3115Boot; /* ISA adapters */
\r
581 extern TRlldAdapterType_t CDECL TRlld3117Boot;
\r
582 extern TRlldAdapterType_t CDECL TRlld3118Boot;
\r
583 extern TRlldAdapterType_t CDECL TRlld3129Boot; /* MCA adapters */
\r
584 extern TRlldAdapterType_t CDECL TRlld3133Boot; /* EISA adapters */
\r
585 extern TRlldAdapterType_t CDECL TRlld3136Boot; /* PCI adapters */
\r
586 extern TRlldAdapterType_t CDECL TRlld3137Boot;
\r
587 extern TRlldAdapterType_t CDECL TRlld3139Boot; /* Hawkeye adapters */
\r
588 extern TRlldAdapterType_t CDECL TRlld3150Boot;
\r
589 extern TRlldAdapterType_t CDECL TRlld3250Boot;
\r
590 extern TRlldAdapterType_t CDECL TRlld3540Boot; /* Bullseye adapter */
\r
592 #define B3115 &TRlld3115Boot
\r
593 #define B3117 &TRlld3117Boot
\r
594 #define B3118 &TRlld3118Boot
\r
595 #define B3129 &TRlld3129Boot
\r
596 #define B3133 &TRlld3133Boot
\r
597 #define B3136 &TRlld3136Boot
\r
598 #define B3137 &TRlld3137Boot
\r
599 #define B3139 &TRlld3139Boot
\r
600 #define B3150 &TRlld3150Boot
\r
601 #define B3250 &TRlld3250Boot
\r
602 #define B3540 &TRlld3540Boot
\r
604 #define TRLLD_INIT_OK 0
\r
605 #define TRLLD_INIT_UNKNOWN 5
\r
607 int CDECL TRlldAdapterInit(TRlldDriver_t * DriverDefinition,
\r
608 TRlldAdapter_t * TRlldAdapter,
\r
609 unsigned long TRlldAdapterPhysical,
\r
610 void * DriverHandle,
\r
611 TRlldAdapterConfig_t * config);
\r
613 #define TRLLD_INIT_OK 0
\r
614 #define TRLLD_INIT_NOT_FOUND 1
\r
615 #define TRLLD_INIT_UNSUPPORTED 2
\r
616 #define TRLLD_INIT_PHYS16 3
\r
617 #define TRLLD_INIT_VERSION 4
\r
619 int CDECL TRlldSetSpeed(TRlldAdapter_t * adapter,
\r
620 unsigned char speed);
\r
622 #define TRLLD_SPEED_4MBPS 4
\r
623 #define TRLLD_SPEED_16MBPS 16
\r
624 #define TRLLD_SPEED_100MBPS 100
\r
626 int CDECL TRlldSetInterrupt(TRlldAdapter_t * adapter,
\r
627 unsigned char interruptlevel);
\r
629 int CDECL TRlldSetDMA(TRlldAdapter_t * adapter,
\r
630 unsigned char dma, unsigned char * mode);
\r
632 #define TRLLD_CONFIG_OK 0
\r
633 #define TRLLD_CONFIG_STATE 1
\r
634 #define TRLLD_CONFIG_ILLEGAL 2
\r
635 #define TRLLD_CONFIG_FAILED 3
\r
637 int CDECL TRlldSetSpecial(TRlldAdapter_t * adapter,
\r
638 unsigned short param1, unsigned short param2,
\r
639 unsigned short param3, unsigned short param4);
\r
641 int CDECL TRlldAddMemory(TRlldAdapter_t * adapter,
\r
642 TRlldDataPtr_t virtual,
\r
643 unsigned long physical,
\r
646 int CDECL TRlldDisable(TRlldAdapter_t * adapter);
\r
649 #define TRLLD_NOT_SUPPORTED 1
\r
651 void CDECL TRlldEnable(TRlldAdapter_t * adapter);
\r
653 int CDECL TRlldInterruptPresent(TRlldAdapter_t * adapter);
\r
655 #define TRLLD_NO_INTERRUPT 0
\r
656 #define TRLLD_INTERRUPT 1
\r
658 int CDECL TRlldInterruptService(TRlldAdapter_t * adapter);
\r
660 int CDECL TRlldInterruptPreService(TRlldAdapter_t * adapter);
\r
662 void CDECL TRlldInterruptPostService(TRlldAdapter_t * adapter);
\r
665 int CDECL TRlldPoll(TRlldAdapter_t * adapter);
\r
667 int CDECL TRlldDownload(TRlldAdapter_t * adapter,
\r
668 char * DownLoadCode);
\r
670 #define TRLLD_DOWNLOAD_OK 0
\r
671 #define TRLLD_DOWNLOAD_ERROR 1
\r
672 #define TRLLD_STATE 2
\r
674 typedef int (CDECL * GetCode_t)(void * handle, unsigned char * maccodebyte);
\r
676 int CDECL TRlldStreamDownload(TRlldAdapter_t * adapter,
\r
677 GetCode_t procedure, void * handle);
\r
679 int CDECL TRlldOpen(TRlldAdapter_t * adapter,
\r
680 unsigned char * MACAddress,
\r
681 unsigned long GroupAddress,
\r
682 unsigned long FunctionalAddress,
\r
683 unsigned short MaxFrameSize,
\r
684 unsigned short OpenModes);
\r
686 #define TRLLD_OPEN_OK 0
\r
687 #define TRLLD_OPEN_STATE 1
\r
688 #define TRLLD_OPEN_ADDRESS_ERROR 2
\r
689 #define TRLLD_OPEN_MODE_ERROR 3
\r
690 #define TRLLD_OPEN_MEMORY 4
\r
692 #define TRLLD_MODE_TX_STATUS 0x01
\r
693 #define TRLLD_MODE_RX_SINGLE 0x02
\r
694 #define TRLLD_MODE_FORCE_TKP 0x04
\r
695 #define TRLLD_MODE_FORCE_TXI 0x08
\r
696 #define TRLLD_MODE_TX_CRC 0x10
\r
698 void CDECL TRlldClose(TRlldAdapter_t * adapter, int immediate);
\r
700 void CDECL TRlldSetGroupAddress(TRlldAdapter_t * adapter,
\r
701 unsigned long GroupAddress);
\r
703 void CDECL TRlldSetFunctionalAddress(TRlldAdapter_t * adapter,
\r
704 unsigned long FunctionalAddress);
\r
706 void CDECL TRlldSetPromiscuousMode(TRlldAdapter_t * adapter,
\r
707 unsigned char mode);
\r
711 #define TRLLD_PROM_LLC 1
\r
712 #define TRLLD_PROM_MAC 2
\r
713 #define TRLLD_PROM_ERRORFRAMES 4
\r
715 int CDECL TRlldGetStatistics(TRlldAdapter_t * adapter,
\r
716 TRlldStatistics_t * statistics,
\r
719 #define TRLLD_IMMEDIATE_STATISTICS 1
\r
721 #define TRLLD_STATISTICS_RETRIEVED 0
\r
722 #define TRLLD_STATISTICS_PENDING 1
\r
724 int CDECL TRlldTransmitFrame(TRlldAdapter_t * adapter,
\r
725 TRlldTransmit_t * TransmitFrame,
\r
726 void * FrameHandle);
\r
728 #define TRLLD_TRANSMIT_OK 0
\r
729 #define TRLLD_TRANSMIT_NOT_OPEN 1
\r
730 #define TRLLD_TRANSMIT_TOO_MANY 2
\r
731 #define TRLLD_TRANSMIT_MAX16 3
\r
732 #define TRLLD_TRANSMIT_SIZE 4
\r
733 #define TRLLD_TRANSMIT_EMPTY 5
\r
735 /* completion flags */
\r
737 #define TRLLD_TX_OK 0
\r
738 #define TRLLD_TX_NOT_PROCESSED 1
\r
739 #define TRLLD_TX_NOT_RECOGNIZED 2
\r
740 #define TRLLD_TX_NOT_COPIED 3
\r
742 /* number of free transmit fragments */
\r
744 int CDECL TRlldTransmitFree(TRlldAdapter_t * adapter);
\r
746 int CDECL TRlldReceiveFragment(TRlldAdapter_t * adapter,
\r
747 TRlldDataPtr_t FragmentStart,
\r
748 unsigned long FragmentPhysical,
\r
750 void * FragmentHandle);
\r
752 #define TRLLD_RECEIVE_OK 0
\r
753 #define TRLLD_RECEIVE_NOT_OPEN 1
\r
754 #define TRLLD_RECEIVE_TOO_MANY 2
\r
755 #define TRLLD_RECEIVE_SIZE 3
\r
756 #define TRLLD_RECEIVE_MAX16 4
\r
758 /* completion flags */
\r
760 #define TRLLD_RCV_OK 0
\r
761 #define TRLLD_RCV_NO_DATA 1
\r
762 #define TRLLD_RCV_ERROR 2 /* Only when TRLLD_PROM_ERRORFRAMES */
\r
763 #define TRLLD_RCV_LONG 3
\r
765 /* number of free receive fragments */
\r
767 int CDECL TRlldReceiveFree(TRlldAdapter_t * adapter);
\r
769 int CDECL TRlldFind(TRlldDriver_t * driver,
\r
770 TRlldAdapterConfig_t * config_table,
\r
771 unsigned long type_mask,
\r
774 /* type mask bits */
\r
776 #define OC_3115 0x0001
\r
777 #define OC_3117 0x0002
\r
778 #define OC_3118 0x0004
\r
779 #define OC_3129 0x0008
\r
780 #define OC_3133 0x0010
\r
781 #define OC_3136 0x0040
\r
782 #define OC_3137 0x0080
\r
783 #define OC_3139 0x0100
\r
784 #define OC_3140 0x0200
\r
785 #define OC_3141 0x0400
\r
786 #define OC_3540 0x0800
\r
787 #define OC_3150 0x1000
\r
790 #define OC_3220 0x0800
\r
791 #define OC_3221 0x1000
\r
792 #define OC_3230 0x2000
\r
793 #define OC_3232 0x4000
\r
796 #define OC_3250 0x8000
\r
798 int CDECL TRlldIOAddressConfig(TRlldDriver_t * driver,
\r
799 TRlldAdapterConfig_t * config,
\r
800 unsigned short address);
\r
803 #define TRLLD_FIND_OK 1
\r
804 #define TRLLD_FIND_ERROR 0
\r
805 #define TRLLD_FIND_VERSION -1
\r
807 int CDECL TRlldEISASlotConfig(TRlldDriver_t * driver,
\r
808 TRlldAdapterConfig_t * config,
\r
811 int CDECL TRlldMCASlotConfig(TRlldDriver_t * driver,
\r
812 TRlldAdapterConfig_t * config,
\r
815 int CDECL TRlldPCIConfig(TRlldDriver_t * driver,
\r
816 TRlldAdapterConfig_t * config,
\r
817 char * PCIConfigurationSpace);
\r
819 #define TRLLD_PCICONFIG_OK 0
\r
820 #define TRLLD_PCICONFIG_FAIL 1
\r
821 #define TRLLD_PCICONFIG_SET_COMMAND 2
\r
822 #define TRLLD_PCICONFIG_VERSION 3
\r
825 int CDECL TRlldFindPCI(TRlldDriver_t * driver,
\r
826 TRlldAdapterConfig_t * config_table,
\r
827 unsigned long type_mask,
\r
831 typedef void * PCCardHandle_t;
\r
833 typedef int (CDECL * GetTupleData_t)(PCCardHandle_t handle,
\r
834 unsigned short TupleIdent,
\r
838 int CDECL TRlldPCCardConfig(TRlldDriver_t * driver,
\r
839 TRlldAdapterConfig_t * config,
\r
840 unsigned short address,
\r
842 GetTupleData_t GetTuple,
\r
843 PCCardHandle_t handle);
\r
845 #define TRLLD_PCCARD_CONFIG_OK 0
\r
846 #define TRLLD_PCCARD_CONFIG_FAIL 1
\r
849 /* Boot Prom Support */
\r
851 typedef struct TRlldPromInfo {
\r
852 unsigned short PromIdent;
\r
854 short PromPageSize;
\r
857 int CDECL TRlldMapBootProm(TRlldAdapter_t * adapter,
\r
858 TRlldDataPtr_t prompointer);
\r
860 #define TRLLD_PROM_OK 0
\r
861 #define TRLLD_PROM_FAILED 3
\r
863 int CDECL TRlldGetPromInfo(TRlldAdapter_t * adapter, TRlldPromInfo_t * info);
\r
865 #define TRLLD_PROM_OK 0
\r
866 #define TRLLD_PROM_NOT_MOUNTED 1
\r
867 #define TRLLD_PROM_NOT_MAPPED 2
\r
869 void CDECL TRlldSetPromPage(TRlldAdapter_t * adapter, int page);
\r
871 int CDECL TRlldSetMemoryUse(TRlldAdapter_t * adapter, int use);
\r
873 #define TRLLD_PROM_TO_MEMORY 0
\r
874 #define TRLLD_REGISTERS_TO_MEMORY 1
\r
876 #define TRLLD_MEMORY_USE_OK 0
\r
877 #define TRLLD_MEMORY_USE_NO_MEMORY 1
\r
878 #define TRLLD_MEMORY_USE_STATE 2
\r
879 #define TRLLD_MEMORY_USE_ILLEGAL 3
\r
881 int CDECL TRlldPromErase(TRlldAdapter_t * adapter,
\r
882 void (CDECL * delay)(int milliseconds));
\r
884 #define TRLLD_PROM_OK 0
\r
885 #define TRLLD_PROM_NOT_MOUNTED 1
\r
886 #define TRLLD_PROM_NOT_MAPPED 2
\r
887 #define TRLLD_PROM_FAILED 3
\r
889 int CDECL TRlldPromWrite(TRlldAdapter_t * adapter, char * data,
\r
890 int offset, int count);
\r
892 #define TRLLD_PROM_OK 0
\r
893 #define TRLLD_PROM_NOT_MOUNTED 1
\r
894 #define TRLLD_PROM_NOT_MAPPED 2
\r
895 #define TRLLD_PROM_FAILED 3
\r
896 #define TRLLD_PROM_ILLEGAL 4
\r
898 void CDECL TRlldEmergency(TRlldAdapter_t * adapter);
\r
900 /* Convert from TRlldAdapterConfig.type to name string */
\r
901 char * CDECL TRlldAdapterName(int type);
\r