freebsd-skq/sys/contrib/dev/oltr/trlld.h
julian 6eb9a9adf9 Submitted by: Larry Lile
Move the Olicom token ring driver to the officially sanctionned location of
/sys/contrib. Also fix some brokenness in the generic token ring support.

Be warned that if_dl.h has been changed and SOME programs might
like recompilation.
1999-03-10 10:11:43 +00:00

893 lines
34 KiB
C

/*
****************************** trlld.h ***********************************
*
* Copyright (c) 1997
* OLICOM A/S
* Denmark
*
* All Rights Reserved
*
* This source file is subject to the terms and conditions of the
* OLICOM Software License Agreement which restricts the manner
* in which it may be used.
*
*---------------------------------------------------------------------------
*
* Description: PowerMACH Works header file
*
*---------------------------------------------------------------------------
* $Log: O:/USR/PROJECT/trlld/libsrc/include/trlld.h_v $
*
* Rev 1.8 10 Dec 1998 12:24:52 JHM
* version 1.2.0,prominfo structure with shorts.
*
* Rev 1.7 25 Nov 1998 16:18:48 JHM
* Bullseye mac, 100MBPS, mactype in config structure,
* 3540 adapter, TRlldTransmitFree, TRlldReceiveFree,
* TRlldAdapterName
*
* Rev 1.6 23 Oct 1998 16:00:36 JHM
* hawkeye adapter types
*
* Rev 1.5 11 Aug 1998 12:22:06 JHM
* split hawkeye types into PCI4,5,6
*
* Rev 1.4 10 Jul 1998 14:39:22 JHM
* OC_3140,OC_3250
*
* Rev 1.3 18 Jun 1998 11:32:20 JHM
* AddMemory,OC_3250
*
* Rev 1.2 18 Apr 1998 15:11:20 JHM
*
* Rev 1.1 09 Dec 1997 18:17:52 JHM
* rel111: TRlldDataPtr_t
*
* Rev 1.0 24 Nov 1997 11:08:58 JHM
* Initial revision.
Rev 1.5 18 Jun 1997 11:31:36 JHM
Checks for version
Rev 1.4 13 Jun 1997 13:47:34 JHM
Rev 1.3 13 Jun 1997 13:27:56 JHM
DTR support, version change
Rev 1.2 12 Jun 1997 11:43:20 JHM
TRLLD_INTERRUPT_TIMEOUT defined
Rev 1.1 11 Apr 1997 15:24:18 JHM
replaced tabs with spaces
Rev 1.0 11 Apr 1997 14:43:04 JHM
Initial revision.
*
****************************************************************************
*/
#ifndef TRLLD_H
#define TRLLD_H
/* Data buffer pointers are always 32 bits.
For 16:16 it is segment:offset while it for 32:32 is a linear address. */
#ifdef TRlldSmall
#define TRlldDataPtr_t unsigned char far *
#define TRlldWordDataPtr_t unsigned short far *
#define TRlldDWordDataPtr_t unsigned long far *
#else
#define TRlldDataPtr_t unsigned char *
#define TRlldWordDataPtr_t unsigned short *
#define TRlldDWordDataPtr_t unsigned long *
#endif
#ifdef __WATCOMC__
#define CDECL _cdecl
#else
#define CDECL
#endif
/*****************************************************************************/
/* */
/* Firmware */
/* */
/*****************************************************************************/
extern unsigned char TRlldMacCode[]; /* 3115,17,18,29,33,36,37 */
extern unsigned char TRlldHawkeyeMac[]; /* 3139,3140,3141,3250 */
extern unsigned char TRlldBullseyeMac[]; /* 3540 */
/*****************************************************************************/
/* */
/* Maximal numbers of concurrent receive and transmit slots */
/* */
/*****************************************************************************/
#define TRLLD_MAX_RECEIVE 32
#define TRLLD_MAX_TRANSMIT 32
/*****************************************************************************/
/* */
/* Maximal frame sizes */
/* */
/*****************************************************************************/
#define TRLLD_MAXFRAME_100MBPS 18000
#define TRLLD_MAXFRAME_16MBPS 18000
#define TRLLD_MAXFRAME_4MBPS 4500
/*****************************************************************************/
/* */
/* TRlldStatus contains the adapter status used in a DriverStatus call-back. */
/* */
/*****************************************************************************/
struct OnWireInformation {
unsigned short RingStatus;
unsigned short Speed;
unsigned short AccessProtocol;
unsigned short Reserved;
};
typedef struct TRlldStatus {
unsigned short Type;
unsigned char Closed;
unsigned char AccessProtocol;
unsigned short MaxFrameSize;
unsigned short Reserved;
union {
unsigned short OnWireRingStatus; /* for compability */
unsigned short SelftestStatus;
unsigned short InitStatus;
unsigned short RingStatus;
unsigned short AdapterCheck[4];
unsigned short InternalError[4];
unsigned short PromRemovedCause;
unsigned short AdapterTimeout;
struct OnWireInformation OnWireInformation;
} Specification;
} TRlldStatus_t;
/* values of TRlldStatus.Type */
#define TRLLD_STS_ON_WIRE 0
#define TRLLD_STS_SELFTEST_STATUS 1
#define TRLLD_STS_INIT_STATUS 2
#define TRLLD_STS_RING_STATUS 3
#define TRLLD_STS_ADAPTER_CHECK 4
#define TRLLD_STS_PROMISCUOUS_STOPPED 5
#define TRLLD_STS_LLD_ERROR 6
#define TRLLD_STS_ADAPTER_TIMEOUT 7
/* values of TRlldStatus.Closed */
#define TRLLD_STS_STATUS_OK 0
#define TRLLD_STS_STATUS_CLOSED 1
/* values of TRlldStatus.AccessProtocol */
#define TRLLD_ACCESS_UNKNOWN 0
#define TRLLD_ACCESS_TKP 1
#define TRLLD_ACCESS_TXI 2
/* values of TRlldStatus.SelftestStatus */
#define TRLLD_ST_OK 0
#define TRLLD_ST_ERROR 0x0100 /* actual errors are 010x, where x is */
/* 0: Initial Test Error */
/* 1: Adapter Software Checksum Error */
/* 2: Adapter RAM Error */
/* 4: Instruction Test Error */
/* 5: Protocol Handler/RI Hw Error */
/* 6: System Interface Register Error */
#define TRLLD_ST_TIMEOUT 0x0200 /* The adapter did not complete */
/* selftest after download */
/* values of TRlldStatus.Specification.InitStatus */
/* the most likely cause of an init error (whatever the code) is a wrong */
/* physical or virtual address of the adapter block in TRlldAdapterInit */
#define TRLLD_INIT_ERROR 0x100 /* actual errors are 010x, where x is */
/* 1: Invalid init block (LLD error) */
/* 2: Invalid options (LLD error) */
/* 3: Invalid rcv burst (LLD error) */
/* 4: Invalid xmt burst (LLD error) */
/* 5: Invalid DMA threshold (LLDerror)*/
/* 6: Invalid scb addr */
/* 7: Invalid ssb addr */
/* 8: DIO parity error (HW error) */
/* 9: DMA timeout (May be interrupt
failing if PIO mode or PCI2) */
/* A: DMA parity error (HW error) */
/* B: DMA bus error (HW error) */
/* C: DMA data error */
/* D: Adapter check */
#define TRLLD_INIT_TIMEOUT 0x200 /* adapter init did not complete */
#define TRLLD_INIT_DMA_ERROR 0x300 /* adapter cannot access sys memory */
#define TRLLD_INIT_INTR_ERROR 0x400 /* adapter cannot interrupt */
#define TRLLD_OPEN_TIMEOUT 0x500 /* adapter open did not complete */
/* within 30 seconds */
#define TRLLD_OPEN_ERROR 0x600 /* actual errors are 06xx, where the */
/* bits in x mean: */
/* 01: Invalid open options (LLDerror)*/
/* 04: TxBuffer count error (LLDerror)*/
/* 10: Buffer size error (LLD error) */
/* 20: List size error (LLD error) */
/* 40: Node address error */
#define TRLLD_OPEN_REPEAT 0x700 /* actual errors are 07xy, where */
/* x is the open phase: */
/* 1: Lobe media test */
/* 2: Physical Insertion */
/* 3: Address verification */
/* 4: Participation in ring poll */
/* 5: Request Initialization */
/* 9: Request registration (TXI) */
/* A: Lobe Media Test (TXI) */
/* B: Address verification (TXI) */
/* y is the type of error: */
/* 1: Function failure (No Cable ?) */
/* 2: Signal loss */
/* 5: Timeout */
/* 6: Ring failure (TKP) */
/* 6: Protocol error (TXI) */
/* 7: Ring beaconing */
/* 8: Duplicate Node Address (TKP) */
/* 8: Insert Denied (TXI) */
/* 9: Request Initialization (TKP) */
/* 9: Heart beat failure (TXI) */
/* A: Remove received */
/* B: C-port address changed (TXI) */
/* C: Wire Fault (TKP) */
/* D: Auto Speed, 1. on ring (TKP) */
/* E: Speed sense failed */
/* When opening with FORCE_TXI and only classic token ring attachment is */
/* possible, the error is Request Registration/Timeout or 0x795 */
#define TRLLD_OPEN_1ST_ON_RING 0x800 /* Speed sense is active, but no other*/
/* station is present to set the speed*/
/* values of TRlldStatus.Specification.RingStatus */
#define TRLLD_RS_SIGNAL_LOSS 0x8000
#define TRLLD_RS_HARD_ERROR 0x4000
#define TRLLD_RS_SOFT_ERROR 0x2000
#define TRLLD_RS_TRANSMIT_BEACON 0x1000
#define TRLLD_RS_LOBE_WIRE_FAULT 0x0800
#define TRLLD_RS_AUTO_REMOVAL_ERROR 0x0400
#define TRLLD_RS_REMOVE_RECEIVED 0x0100
#define TRLLD_RS_COUNTER_OVERFLOW 0x0080
#define TRLLD_RS_SINGLE_STATION 0x0040
#define TRLLD_RS_RING_RECOVERY 0x0020
/* values of TRlldStatus.Specification.AdapterCheck */
/* MISSING */
/* values of TRlldStatus.Specification.PromRemovedCause */
#define TRLLD_PROM_REMOVE_RECEIVED 1
#define TRLLD_PROM_POLL_FAILURE 2
#define TRLLD_PROM_BUFFER_SIZE 3
/* values of TRlldStatus.Specification.InternalError */
#define TRLLD_INTERNAL_PIO 1 /* A PIO transfer to or from adapter */
/* did not complete */
#define TRLLD_INTERNAL_TX 2 /* Trouble with clean up of tx frames */
#define TRLLD_INTERNAL_RX 3 /* Trouble with clean up of receive */
/* fragments */
#define TRLLD_INTERNAL_CMD 4 /* error response from adapter */
#define TRLLD_INTERNAL_STATE 5 /* event happened in unexpected state */
/* values of TRlldStatus.Specification.AdapterTimeout */
#define TRLLD_COMMAND_TIMEOUT 1
#define TRLLD_TRANSMIT_TIMEOUT 2
#define TRLLD_INTERRUPT_TIMEOUT 3
/*****************************************************************************/
/* */
/* TRlldStatistics contains the adapter statistics returned to Driver */
/* in TRlldStatistics calls and DriverStatistics call-backs */
/* */
/*****************************************************************************/
typedef struct TRlldStatistics {
unsigned long LineErrors;
unsigned long InternalErrors; /* Not maintained by TMS based boards */
unsigned long BurstErrors;
unsigned long ARIFCIErrors;
unsigned long AbortDelimiters; /* Not maintained by TMS based boards */
unsigned long LostFrames;
unsigned long CongestionErrors;
unsigned long FrameCopiedErrors;
unsigned long FrequencyErrors; /* Not maintained by TMS based boards */
unsigned long TokenErrors;
unsigned long DMABusErrors; /* Not maintained by 3139 */
unsigned long DMAParityErrors; /* Not maintained by 3139 */
unsigned long ReceiveLongFrame; /* Not maintained by TMS based boards */
unsigned long ReceiveCRCErrors; /* Not maintained by TMS based boards */
unsigned long ReceiveOverflow; /* Not maintained by TMS based boards */
unsigned long TransmitUnderrun; /* Not maintained by TMS based boards */
unsigned long UnderrunLock; /* Not maintained by TMS based boards */
unsigned long OverflowReset;
unsigned char UpstreamNeighbour[6];
unsigned short RingNumber;
unsigned char BeaconingUpstreamNeighbour[6];
unsigned short padding;
} TRlldStatistics_t;
/*****************************************************************************/
/* */
/* TRlldDriver contains the Driver call-backs */
/* */
/*****************************************************************************/
typedef struct TRlldDriver {
unsigned long TRlldVersion;
#ifndef TRlldInlineIO
void (CDECL * DriverOutByte)(unsigned short IOAddress,
unsigned char Value);
void (CDECL * DriverOutWord)(unsigned short IOAddress,
unsigned short Value);
void (CDECL * DriverOutDWord)(unsigned short IOAddress,
unsigned long Value);
void (CDECL * DriverRepOutByte)(unsigned short IOAddress,
TRlldDataPtr_t DataPointer,
int ByteCount);
void (CDECL * DriverRepOutWord)(unsigned short IOAddress,
TRlldWordDataPtr_t DataPointer,
int WordCount);
void (CDECL * DriverRepOutDWord)(unsigned short IOAddress,
TRlldDWordDataPtr_t DataPointer,
int DWordCount);
unsigned char (CDECL * DriverInByte)(unsigned short IOAddress);
unsigned short (CDECL * DriverInWord)(unsigned short IOAddress);
unsigned long (CDECL * DriverInDWord)(unsigned short IOAddress);
void (CDECL * DriverRepInByte)(unsigned short IOAddress,
TRlldDataPtr_t DataPointer,
int ByteCount);
void (CDECL * DriverRepInWord)(unsigned short IOAddress,
TRlldWordDataPtr_t DataPointer,
int WordCount);
void (CDECL * DriverRepInDWord)(unsigned short IOAddress,
TRlldDWordDataPtr_t DataPointer,
int DWordCount);
#endif
void (CDECL * DriverSuspend)(unsigned short MicroSeconds);
void (CDECL * DriverStatus)(void * DriverHandle,
TRlldStatus_t * Status);
void (CDECL * DriverCloseCmpltd)(void * DriverHandle);
void (CDECL * DriverStatistics)(void * DriverHandle,
TRlldStatistics_t * Statistics);
void (CDECL * DriverTxFrameCmpltd)(void * DriverHandle,
void * FrameHandle,
int TxStatus);
void (CDECL * DriverRcvFrameCmpltd)(void * DriverHandle,
int ByteCount,
int FragmentCount,
void * FragmentHandle,
int RcvStatus);
} TRlldDriver_t;
/* Version and model control */
#define TRLLD_VERSION_INLINEIO 0x8000
#define TRLLD_VERSION_SMALL 0x4000
#ifdef TRlldInlineIO
#ifdef TRlldSmall
#define TRLLD_VERSION 0x4120
#else
#define TRLLD_VERSION 0x0120
#endif
#else
#ifdef TRlldSmall
#define TRLLD_VERSION 0xC120
#else
#define TRLLD_VERSION 0x8120
#endif
#endif
/*****************************************************************************/
/* */
/* TRlldAdapterConfig contains the properties found for an adapter */
/* used when finding and defining adapters to use */
/* */
/*****************************************************************************/
struct pnp_id {
unsigned short vendor;
unsigned short device;
};
struct pci_id {
unsigned short vendor;
unsigned short device;
unsigned char revision;
unsigned char reserved_byte;
unsigned short reserved_word;
};
struct pcmcia_id {
/* unknown as yet */
unsigned char x;
};
struct pci_slot {
unsigned short bus_no;
unsigned short device_no;
};
struct pcmcia_socket {
/* unknown as yet */
unsigned char x;
};
typedef struct TRlldAdapterConfig {
unsigned char type;
unsigned char bus;
unsigned short magic;
union {
struct pnp_id pnp;
unsigned long eisa;
unsigned short mca;
struct pci_id pci;
struct pcmcia_id pcmcia;
} id;
union {
unsigned short csn;
unsigned short eisa;
unsigned short mca;
struct pci_slot pci;
struct pcmcia_socket pcmcia;
} slot;
unsigned short iobase0;
unsigned short iolength0;
unsigned short iobase1;
unsigned short iolength1;
unsigned long memorybase;
unsigned short memorylength;
unsigned char mode;
unsigned char xmode;
unsigned char interruptlevel;
unsigned char dmalevel;
unsigned char macaddress[6];
unsigned long prombase;
unsigned char speed;
unsigned char cachelinesize;
unsigned short pcicommand;
unsigned char mactype;
unsigned char reserved[3];
} TRlldAdapterConfig_t;
/* values of TRlldAdapterConfig.Type */
#define TRLLD_ADAPTER_XT 0 /* not supported */
#define TRLLD_ADAPTER_ISA1 1 /* OC-3115 */
#define TRLLD_ADAPTER_ISA2 2 /* OC-3117 */
#define TRLLD_ADAPTER_ISA3 3 /* OC-3118 */
#define TRLLD_ADAPTER_MCA1 4 /* OC-3129 id A84 */
#define TRLLD_ADAPTER_MCA2 5 /* OC-3129 id A85 */
#define TRLLD_ADAPTER_MCA3 6 /* OC-3129 id A86 */
#define TRLLD_ADAPTER_EISA1 7 /* OC-3133 id 0109833D */
#define TRLLD_ADAPTER_EISA2 8 /* OC-3133 id 0209833D */
#define TRLLD_ADAPTER_EISA3 9 /* OC-3135 not supported */
#define TRLLD_ADAPTER_PCI1 10 /* OC-3136 id 108d0001 rev 1 */
#define TRLLD_ADAPTER_PCI2 11 /* OC-3136 id 108d0001 rev 2 */
#define TRLLD_ADAPTER_PCI3 12 /* OC-3137 id 108d0001 rev 3 */
#define TRLLD_ADAPTER_PCI4 13 /* OC-3139 id 108d0004 rev 2 */
#define TRLLD_ADAPTER_PCI5 14 /* OC-3140 id 108d0004 rev 3 */
#define TRLLD_ADAPTER_PCI6 15 /* OC-3141 id 108d0007 rev 1 */
#define TRLLD_ADAPTER_PCI7 19 /* OC-3540 id 108d0008 rev 1 */
#ifdef PCMCIA
#define TRLLD_ADAPTER_PCCARD1 16 /* OC-3220 */
#define TRLLD_ADAPTER_PCCARD2 17 /* OC-3221,OC-3230,OC-3232 */
#endif
#define TRLLD_ADAPTER_PCCARD3 18 /* OC-3250 id 108d0005 rev 1 */
/* values of TRlldAdapterConfig.Bus */
#define TRLLD_BUS_ISA 1
#define TRLLD_BUS_EISA 2
#define TRLLD_BUS_MCA 3
#define TRLLD_BUS_PCI 4
#define TRLLD_BUS_PCMCIA 5
/* values of TRlldAdapterConfig.mode */
#define TRLLD_MODE_16M 0x01 /* needs data buffers below 16 M */
#define TRLLD_MODE_PHYSICAL 0x02 /* needs valid physical addresses */
#define TRLLD_MODE_FIXED_CFG 0x04 /* cannot be reconfigured */
#define TRLLD_MODE_SHORT_SLOT 0x08 /* in short ISA slot, cannot use DMA */
#define TRLLD_MODE_CANNOT_DISABLE 0x10 /* can not disable interrupt */
#define TRLLD_MODE_SHARE_INTERRUPT 0x20 /* may share interrupt */
#define TRLLD_MODE_MEMORY 0x40 /* is configured with a memory window*/
/* values of TRlldAdapterConfig.dma */
#define TRLLD_DMA_PIO 4 /* other values signifies the DMA channel */
#define TRLLD_DMA_MASTER 0xff /* to use */
/* values of TRlldAdapterConfig.mactype */
/* download with: */
#define TRLLD_MAC_TMS 1 /* TRlldMACCode */
#define TRLLD_MAC_HAWKEYE 2 /* TRlldHawkeyeMAC */
#define TRLLD_MAC_BULLSEYE 3 /* TRlldBullseyeMAC */
typedef void * TRlldAdapter_t;
typedef void * TRlldAdapterType_t;
#ifndef MAX_FRAGMENTS
#define MAX_FRAGMENTS 32
#endif
typedef struct TRlldTransmit {
unsigned short FragmentCount;
unsigned short TRlldTransmitReserved;
struct TRlldTransmitFragment {
unsigned long PhysicalAddress;
TRlldDataPtr_t VirtualAddress;
unsigned short count;
unsigned short TRlldTransmitFragmentReserved;
} TransmitFragment[MAX_FRAGMENTS];
} TRlldTransmit_t;
int CDECL TRlldAdapterSize(void);
int CDECL TRlldInit(int TypeCount,
TRlldAdapterType_t * AdapterTypeTable);
extern TRlldAdapterType_t CDECL TRlld3115; /* ISA adapters */
extern TRlldAdapterType_t CDECL TRlld3117;
extern TRlldAdapterType_t CDECL TRlld3118;
extern TRlldAdapterType_t CDECL TRlld3129; /* MCA adapters */
extern TRlldAdapterType_t CDECL TRlld3133; /* EISA adapters */
extern TRlldAdapterType_t CDECL TRlld3136; /* PCI adapters */
extern TRlldAdapterType_t CDECL TRlld3137;
extern TRlldAdapterType_t CDECL TRlld3139; /* Hawkeye adapters */
extern TRlldAdapterType_t CDECL TRlld3540; /* BUllseye adapter */
#define T3115 &TRlld3115
#define T3117 &TRlld3117
#define T3118 &TRlld3118
#define T3129 &TRlld3129
#define T3133 &TRlld3133
#define T3136 &TRlld3136
#define T3137 &TRlld3137
#define T3139 &TRlld3139
#define T3540 &TRlld3540
/* Only for Boot Prom Page Zero code */
extern TRlldAdapterType_t CDECL TRlld3115Boot; /* ISA adapters */
extern TRlldAdapterType_t CDECL TRlld3117Boot;
extern TRlldAdapterType_t CDECL TRlld3118Boot;
extern TRlldAdapterType_t CDECL TRlld3129Boot; /* MCA adapters */
extern TRlldAdapterType_t CDECL TRlld3133Boot; /* EISA adapters */
extern TRlldAdapterType_t CDECL TRlld3136Boot; /* PCI adapters */
extern TRlldAdapterType_t CDECL TRlld3137Boot;
extern TRlldAdapterType_t CDECL TRlld3139Boot; /* Hawkeye adapters */
extern TRlldAdapterType_t CDECL TRlld3540Boot; /* Bullseye adapters */
#define B3115 &TRlld3115Boot
#define B3117 &TRlld3117Boot
#define B3118 &TRlld3118Boot
#define B3129 &TRlld3129Boot
#define B3133 &TRlld3133Boot
#define B3136 &TRlld3136Boot
#define B3137 &TRlld3137Boot
#define B3139 &TRlld3139Boot
#define B3540 &TRlld3540Boot
#define TRLLD_INIT_OK 0
#define TRLLD_INIT_UNKNOWN 5
int CDECL TRlldAdapterInit(TRlldDriver_t * DriverDefinition,
TRlldAdapter_t * TRlldAdapter,
unsigned long TRlldAdapterPhysical,
void * DriverHandle,
TRlldAdapterConfig_t * config);
#define TRLLD_INIT_OK 0
#define TRLLD_INIT_NOT_FOUND 1
#define TRLLD_INIT_UNSUPPORTED 2
#define TRLLD_INIT_PHYS16 3
#define TRLLD_INIT_VERSION 4
int CDECL TRlldSetSpeed(TRlldAdapter_t * adapter,
unsigned char speed);
#define TRLLD_SPEED_4MBPS 4
#define TRLLD_SPEED_16MBPS 16
#define TRLLD_SPEED_100MBPS 100
int CDECL TRlldSetInterrupt(TRlldAdapter_t * adapter,
unsigned char interruptlevel);
int CDECL TRlldSetDMA(TRlldAdapter_t * adapter,
unsigned char dma, unsigned char * mode);
#define TRLLD_CONFIG_OK 0
#define TRLLD_CONFIG_STATE 1
#define TRLLD_CONFIG_ILLEGAL 2
#define TRLLD_CONFIG_FAILED 3
int CDECL TRlldSetSpecial(TRlldAdapter_t * adapter,
unsigned short param1, unsigned short param2,
unsigned short param3, unsigned short param4);
int CDECL TRlldAddMemory(TRlldAdapter_t * adapter,
TRlldDataPtr_t virtual,
unsigned long physical,
long size);
int CDECL TRlldDisable(TRlldAdapter_t * adapter);
#define TRLLD_OK 0
#define TRLLD_NOT_SUPPORTED 1
void CDECL TRlldEnable(TRlldAdapter_t * adapter);
int CDECL TRlldInterruptPresent(TRlldAdapter_t * adapter);
#define TRLLD_NO_INTERRUPT 0
#define TRLLD_INTERRUPT 1
int CDECL TRlldInterruptService(TRlldAdapter_t * adapter);
int CDECL TRlldInterruptPreService(TRlldAdapter_t * adapter);
void CDECL TRlldInterruptPostService(TRlldAdapter_t * adapter);
int CDECL TRlldPoll(TRlldAdapter_t * adapter);
int CDECL TRlldDownload(TRlldAdapter_t * adapter,
char * DownLoadCode);
#define TRLLD_DOWNLOAD_OK 0
#define TRLLD_DOWNLOAD_ERROR 1
#define TRLLD_STATE 2
typedef int (CDECL * GetCode_t)(void * handle, unsigned char * maccodebyte);
int CDECL TRlldStreamDownload(TRlldAdapter_t * adapter,
GetCode_t procedure, void * handle);
int CDECL TRlldOpen(TRlldAdapter_t * adapter,
unsigned char * MACAddress,
unsigned long GroupAddress,
unsigned long FunctionalAddress,
unsigned short MaxFrameSize,
unsigned short OpenModes);
#define TRLLD_OPEN_OK 0
#define TRLLD_OPEN_STATE 1
#define TRLLD_OPEN_ADDRESS_ERROR 2
#define TRLLD_OPEN_MODE_ERROR 3
#define TRLLD_OPEN_MEMORY 4
#define TRLLD_MODE_TX_STATUS 0x01
#define TRLLD_MODE_RX_SINGLE 0x02
#define TRLLD_MODE_FORCE_TKP 0x04
#define TRLLD_MODE_FORCE_TXI 0x08
#define TRLLD_MODE_TX_CRC 0x10
void CDECL TRlldClose(TRlldAdapter_t * adapter, int immediate);
void CDECL TRlldSetGroupAddress(TRlldAdapter_t * adapter,
unsigned long GroupAddress);
void CDECL TRlldSetFunctionalAddress(TRlldAdapter_t * adapter,
unsigned long FunctionalAddress);
void CDECL TRlldSetPromiscuousMode(TRlldAdapter_t * adapter,
unsigned char mode);
/* mode bits */
#define TRLLD_PROM_LLC 1
#define TRLLD_PROM_MAC 2
#define TRLLD_PROM_ERRORFRAMES 4
int CDECL TRlldGetStatistics(TRlldAdapter_t * adapter,
TRlldStatistics_t * statistics,
int immediate);
#define TRLLD_IMMEDIATE_STATISTICS 1
#define TRLLD_STATISTICS_RETRIEVED 0
#define TRLLD_STATISTICS_PENDING 1
int CDECL TRlldTransmitFrame(TRlldAdapter_t * adapter,
TRlldTransmit_t * TransmitFrame,
void * FrameHandle);
#define TRLLD_TRANSMIT_OK 0
#define TRLLD_TRANSMIT_NOT_OPEN 1
#define TRLLD_TRANSMIT_TOO_MANY 2
#define TRLLD_TRANSMIT_MAX16 3
#define TRLLD_TRANSMIT_SIZE 4
#define TRLLD_TRANSMIT_EMPTY 5
/* completion flags */
#define TRLLD_TX_OK 0
#define TRLLD_TX_NOT_PROCESSED 1
#define TRLLD_TX_NOT_RECOGNIZED 2
#define TRLLD_TX_NOT_COPIED 3
/* number of free transmit fragments */
int CDECL TRlldTransmitFree(TRlldAdapter_t * adapter);
int CDECL TRlldReceiveFragment(TRlldAdapter_t * adapter,
TRlldDataPtr_t FragmentStart,
unsigned long FragmentPhysical,
int count,
void * FragmentHandle);
#define TRLLD_RECEIVE_OK 0
#define TRLLD_RECEIVE_NOT_OPEN 1
#define TRLLD_RECEIVE_TOO_MANY 2
#define TRLLD_RECEIVE_SIZE 3
#define TRLLD_RECEIVE_MAX16 4
/* completion flags */
#define TRLLD_RCV_OK 0
#define TRLLD_RCV_NO_DATA 1
#define TRLLD_RCV_ERROR 2 /* Only when TRLLD_PROM_ERRORFRAMES */
#define TRLLD_RCV_LONG 3
/* number of free receive fragments */
int CDECL TRlldReceiveFree(TRlldAdapter_t * adapter);
int CDECL TRlldFind(TRlldDriver_t * driver,
TRlldAdapterConfig_t * config_table,
unsigned long type_mask,
int max);
/* type mask bits */
#define OC_3115 0x0001
#define OC_3117 0x0002
#define OC_3118 0x0004
#define OC_3129 0x0008
#define OC_3133 0x0010
#define OC_3136 0x0040
#define OC_3137 0x0080
#define OC_3139 0x0100
#define OC_3140 0x0200
#define OC_3141 0x0400
#define OC_3540 0x0800
#ifdef PCMCIA
#define OC_3220 0x0800
#define OC_3221 0x1000
#define OC_3230 0x2000
#define OC_3232 0x4000
#endif
#define OC_3250 0x8000
int CDECL TRlldIOAddressConfig(TRlldDriver_t * driver,
TRlldAdapterConfig_t * config,
unsigned short address);
#define TRLLD_FIND_OK 1
#define TRLLD_FIND_ERROR 0
#define TRLLD_FIND_VERSION -1
int CDECL TRlldEISASlotConfig(TRlldDriver_t * driver,
TRlldAdapterConfig_t * config,
int slot);
int CDECL TRlldMCASlotConfig(TRlldDriver_t * driver,
TRlldAdapterConfig_t * config,
int slot);
int CDECL TRlldPCIConfig(TRlldDriver_t * driver,
TRlldAdapterConfig_t * config,
char * PCIConfigurationSpace);
#define TRLLD_PCICONFIG_OK 0
#define TRLLD_PCICONFIG_FAIL 1
#define TRLLD_PCICONFIG_SET_COMMAND 2
#define TRLLD_PCICONFIG_VERSION 3
int CDECL TRlldFindPCI(TRlldDriver_t * driver,
TRlldAdapterConfig_t * config_table,
unsigned long type_mask,
int max);
#ifdef PCMCIA
typedef void * PCCardHandle_t;
typedef int (CDECL * GetTupleData_t)(PCCardHandle_t handle,
unsigned short TupleIdent,
char * TupleData,
int length);
int CDECL TRlldPCCardConfig(TRlldDriver_t * driver,
TRlldAdapterConfig_t * config,
unsigned short address,
int irq,
GetTupleData_t GetTuple,
PCCardHandle_t handle);
#define TRLLD_PCCARD_CONFIG_OK 0
#define TRLLD_PCCARD_CONFIG_FAIL 1
#endif
/* Boot Prom Support */
typedef struct TRlldPromInfo {
unsigned short PromIdent;
short PromPages;
short PromPageSize;
} TRlldPromInfo_t;
int CDECL TRlldMapBootProm(TRlldAdapter_t * adapter,
TRlldDataPtr_t prompointer);
#define TRLLD_PROM_OK 0
#define TRLLD_PROM_FAILED 3
int CDECL TRlldGetPromInfo(TRlldAdapter_t * adapter, TRlldPromInfo_t * info);
#define TRLLD_PROM_OK 0
#define TRLLD_PROM_NOT_MOUNTED 1
#define TRLLD_PROM_NOT_MAPPED 2
void CDECL TRlldSetPromPage(TRlldAdapter_t * adapter, int page);
int CDECL TRlldSetMemoryUse(TRlldAdapter_t * adapter, int use);
#define TRLLD_PROM_TO_MEMORY 0
#define TRLLD_REGISTERS_TO_MEMORY 1
#define TRLLD_MEMORY_USE_OK 0
#define TRLLD_MEMORY_USE_NO_MEMORY 1
#define TRLLD_MEMORY_USE_STATE 2
#define TRLLD_MEMORY_USE_ILLEGAL 3
int CDECL TRlldPromErase(TRlldAdapter_t * adapter,
void (CDECL * delay)(int milliseconds));
#define TRLLD_PROM_OK 0
#define TRLLD_PROM_NOT_MOUNTED 1
#define TRLLD_PROM_NOT_MAPPED 2
#define TRLLD_PROM_FAILED 3
int CDECL TRlldPromWrite(TRlldAdapter_t * adapter, char * data,
int offset, int count);
#define TRLLD_PROM_OK 0
#define TRLLD_PROM_NOT_MOUNTED 1
#define TRLLD_PROM_NOT_MAPPED 2
#define TRLLD_PROM_FAILED 3
#define TRLLD_PROM_ILLEGAL 4
void CDECL TRlldEmergency(TRlldAdapter_t * adapter);
/* Convert from TRlldAdapterConfig.type to name string */
char * CDECL TRlldAdapterName(int type);
#endif