home *** CD-ROM | disk | FTP | other *** search
- /* semfisda.h */
-
- /* Device Driver for IBM SDLC adapter: Global data */
-
- /*****************************************************************************/
- /* Trace data */
- /*****************************************************************************/
- #ifdef IBMSYNC_TRACE
- UCHAR TrcBuffer [TRC_BUFSIZE];
- UCHAR *TrcPtr = TrcBuffer;
- #endif
-
- /*****************************************************************************/
- /* Bus Type (Eisa, Isa or MicroChannel. */
- /*****************************************************************************/
- INTERFACE_TYPE InterfaceType;
-
- /*****************************************************************************/
- /* 8273 data */
- /*****************************************************************************/
- /* Commands, statically allocated, for copying into target device extension */
- /* */
- /* Note that only the first two bytes are required - opcode and length. */
- /* Other bytes must be written driver before command is used */
- /* */
- /* Note also that the command may be overwritten if appropriate: e.g. */
- /* receive and DataTransferMode commands. */
- /*****************************************************************************/
-
- UCHAR LastWaitUntilStatus;
- UCHAR ProtoCmdStringReadPortA[] = { 0x22, 0 };
- UCHAR ProtoCmdStringResetOpMode[] = { 0x51, 1 };
- UCHAR ProtoCmdStringResetSerialIOMode[]= { 0x60, 1 };
- UCHAR ProtoCmdStringSetOpMode[] = { 0x91, 1 };
- UCHAR ProtoCmdStringSetSerialIOMode[] = { 0xa0, 1 };
- UCHAR ProtoCmdStringDataTransferMode[] = { 0x97, 1 };
- UCHAR ProtoCmdStringResetPortB[] = { 0x63, 1 };
- UCHAR ProtoCmdStringSetPortB[] = { 0xa3, 1 };
- UCHAR ProtoCmdStringReceive [] = { 0xc0, 2 };
- UCHAR ProtoCmdStringTransmit[] = { 0xc8, 4 };
- UCHAR ProtoCmdStringAbortTransmit[] = { 0xcc, 0 };
- UCHAR ProtoCmdStringDisableReceiver[] = { 0xc5, 0 };
-
- /*****************************************************************************/
- /* FSM data */
- /*****************************************************************************/
- char *RxFSMStateNames[] = {"RsId", "RsGo", "RsIH", "RsRH"};
-
- char *RxFSMInputNames[] = {"RiGo", "RiSo", "RiHo", "RiRl", "RiGr", "RiEr"};
-
- char *TxFSMStateNames[] = {"TsId", "TsAc", "TsTx", "TsAb", "TsCl"};
-
- char *TxFSMInputNames[] = {"TiGo", "TiEo", "TiSo", "TiAb", "TiEr"};
-
- /*****************************************************************************/
- /* This is the declaration of the Receiver FSM */
- /*****************************************************************************/
-
- typedef struct _RXFSMENTRY /* one entry in Rx FSM */
- {
- int NewState;
- void (*pRxActionRoutine) (PDX);
- }
- RXFSMENTRY;
-
- RXFSMENTRY RxFSM [RXFSMINPUTCOUNT ] [RXFSMSTATECOUNT] =
- {
- /* Input = RxFSMInputStart Start the receiver */
- {
- { RxFSMStateReady ,RxFSMActionStart },/* RX State = Idle */
- { RxFSMStateReady , FSMNullAction },/* RX State = Ready */
- { RxFSMStateRdyHld, FSMNullAction },/* RX State = Idle (held) */
- { RxFSMStateRdyHld, FSMNullAction } /* RX State = Ready(held) */
- },
- /* Input = RxFSMInputStop Stop the receiver */
- {
- { RxFSMStateIdle , FSMNullAction },/* RX State = Idle */
- { RxFSMStateIdle ,RxFSMActionStop },/* RX State = Ready */
- { RxFSMStateIdlHld, FSMNullAction },/* RX State = Idle (held) */
- { RxFSMStateIdlHld, FSMNullAction } /* RX State = Ready(held) */
- },
- /* Input = RxFSMInputHold Stop the receiver during Tx DMA */
- {
- { RxFSMStateIdlHld, FSMNullAction },/* RX State = Idle */
- { RxFSMStateRdyHld,RxFSMActionStop },/* RX State = Ready */
- { RxFSMStateIdlHld, FSMNullAction },/* RX State = Idle (held) */
- { RxFSMStateRdyHld, FSMNullAction } /* RX State = Ready(held) */
- },
- /* Input = RxFSMInputRelease Restart the receiver after Tx DMA*/
- {
- { RxFSMStateIdle ,RxFSMActionInvalid},/* RX State = Idle */
- { RxFSMStateReady ,RxFSMActionInvalid},/* RX State = Ready */
- { RxFSMStateIdle , FSMNullAction },/* RX State = Idle (held) */
- { RxFSMStateReady ,RxFSMActionRestart} /* RX State = Ready(held) */
- },
- /* Input = RxFSMInputGoodReceive Receiver interrupt - good result */
- {
- { RxFSMStateIdle ,RxFSMActionInvalid},/* RX State = Idle */
- { RxFSMStateReady ,RxFSMActionRcvOK },/* RX State = Ready */
- { RxFSMStateIdlHld,RxFSMActionInvalid},/* RX State = Idle (held) */
- { RxFSMStateRdyHld,RxFSMActionInvalid} /* RX State = Ready(held) */
- },
- /* Input = RxFSMInputReceiverError Receiver interrupt - bad result */
- {
- { RxFSMStateIdle ,RxFSMActionInvalid}, /* RX State = Idle */
- { RxFSMStateReady ,RxFSMActionRcvError},/* RX State = Ready */
- { RxFSMStateIdlHld, FSMNullAction }, /* RX State = Idle (held) */
- { RxFSMStateRdyHld, FSMNullAction } /* RX State = Ready(held) */
- }
- };
-
- /*****************************************************************************/
- /* This is the declaration of the Transmitter FSM */
- /*****************************************************************************/
-
- typedef struct _TXFSMENTRY /* one entry in Rx FSM */
- {
- int NewState;
- void (*pTxActionRoutine) (PDX);
- }
- TXFSMENTRY;
-
- TXFSMENTRY TxFSM [TXFSMINPUTCOUNT ] [TXFSMSTATECOUNT] =
- {
- /* Input = TxFSMInputStart Start a transmission. */
- {
- { TxFSMStateTxing ,TxFSMActionStart }, /* TX State = Idle */
- { TxFSMStateTxing ,TxFSMActionXmitNext}, /* TX State = Active */
- { TxFSMStateTxing , FSMNullAction }, /* TX State = Transmitting */
- { TxFSMStateAborting, FSMNullAction }, /* TX_State = Wait for abort compl */
- { TxFSMStateAborting, FSMNullAction } /* TX_State = Closing Down */
- },
- /* Input = TxFSMInputEOTX Good Transmission completion */
- {
- { TxFSMStateIdle ,TxFSMActionInvalid }, /* TX State = Idle */
- { TxFSMStateActive ,TxFSMActionInvalid }, /* TX State = Active */
- { TxFSMStateActive ,TxFSMActionEndOK }, /* TX State = Transmitting */
- { TxFSMStateAborting, FSMNullAction }, /* TX_State = Wait for abort compl */
- { TxFSMStateClosing , FSMNullAction } /* TX_State = Closing Down */
- },
- /* Input = TxFSMInputStop Stop the transmitter. */
- {
- { TxFSMStateIdle , FSMNullAction }, /* TX State = Idle */
- { TxFSMStateIdle ,TxFSMActionStop }, /* TX State = Active */
- { TxFSMStateClosing ,TxFSMActionAbort }, /* TX State = Transmitting */
- { TxFSMStateClosing , FSMNullAction }, /* TX_State = Wait for abort compl */
- { TxFSMStateClosing , FSMNullAction } /* TX_State = Closing Down */
- },
- /* Input = TxFSMInputAbortd Abort Complete interrupt received. */
- {
- { TxFSMStateIdle ,TxFSMActionInvalid }, /* TX State = Idle */
- { TxFSMStateActive ,TxFSMActionInvalid }, /* TX State = Active */
- { TxFSMStateTxing ,TxFSMActionInvalid }, /* TX State = Transmitting */
- { TxFSMStateTxing ,TxFSMActionXmitNext}, /* TX_State = Wait for abort compl */
- { TxFSMStateIdle ,TxFSMActionStop } /* TX_State = Closing Down */
- },
- /* Input = TxFSMInputEOTx_Err Error Completion interrupt received */
- {
- { TxFSMStateIdle ,TxFSMActionInvalid }, /* TX State = Idle */
- { TxFSMStateActive ,TxFSMActionInvalid }, /* TX State = Active */
- { TxFSMStateActive ,TxFSMActionEndError}, /* TX State = Transmitting */
- { TxFSMStateAborting, FSMNullAction }, /* TX_State = Wait for abort compl */
- { TxFSMStateClosing , FSMNullAction } /* TX_State = Closing Down */
- }
- };
-
- /*****************************************************************************/
- /* Configuration data */
- /*****************************************************************************/
-
-
- CONFIGDATA ConfigData[] =
- { /* must be in ADAPTER_TYPE order */
- /* DL$01 */
- { AT_SDLC, "SDLC1",(IO_ADDRESS)0x380, 0, 1, 0, 0,
- 1 /*AddrSpace*/,
- 0 /*BusNumber*/,
- 3,3,FALSE,Latched,
- 0, 0,FALSE,Latched /* IRQ4 cut ! */
- },
- /* DL$02 */
- { AT_SDLC, "SDLC1",(IO_ADDRESS)0x380, 0, 1, 0, 0,
- 1 /*AddrSpace*/,
- 0 /*BusNumber*/,
- 3,3,FALSE,Latched,
- 4,4,FALSE,Latched
- },
- /* DL$03 */
- { AT_MPCA1,"MPCA1",(IO_ADDRESS)0x380, 0, 1, (IO_ADDRESS)
- 0x3AF, 0x0A,
- 1 /*AddrSpace*/,
- 0 /*BusNumber*/,
- 4,4,FALSE,Latched, /* 0x0A => IRQ4, DMA chan 1 */
- 0, 0,FALSE,Latched
- },
- /* DL$04 */
- { AT_MPCA2,"MPCA2",(IO_ADDRESS)0x3a0, 0, 0, (IO_ADDRESS)
- 0x38F, 0x09,
- 1 /*AddrSpace*/,
- 0 /*BusNumber*/,
- 3,3,FALSE,Latched, /* 0x09 => IRQ3, no DMA */
- 0, 0,FALSE,Latched
- },
- /* DL$05 */
- { AT_MPAA1,"MPAA1",(IO_ADDRESS)0x380, POS_IDMPAA1, 1, 0, 0,
- 1 /*AddrSpace*/,
- 0 /*BusNumber*/,
- 3,3,TRUE,LevelSensitive,
- 0, 0,TRUE,LevelSensitive
- },
- /* DL$06 */
- { AT_MPAA2,"MPAA2",(IO_ADDRESS)0x3A0, POS_IDMPAA2, 7, 0, 0,
- 1 /*AddrSpace*/,
- 0 /*BusNumber*/,
- 4,4,TRUE,LevelSensitive,
- 0, 0,TRUE,LevelSensitive
- },
- };
-
- /*****************************************************************************/
- /* Dummy Interface Record for use until the real one comes along, or once */
- /* the real one goes away - so we can do initialisation and wrap up without */
- /* worrying about generating events for anon-existent IR. */
- /*****************************************************************************/
-
- IR InitIR = {0};
-