1 /* vxreg.h 1.2 86/01/13 */ 2 3 /* 4 * Vioc hardware interface structure. 5 */ 6 struct vxdevice { 7 char v_vioc; /* 0 type of interrupt + vioc busy flag */ 8 char v_hdwre; /* 1 trap, reset, or hard interrupt */ 9 char v_vcbsy; /* 2 command busy (set by host) */ 10 char v_vcid; /* 3 command identifier */ 11 short v_vcp[2]; /* 4 command pointer (sent by host) */ 12 short v_unused; /* 8 unused */ 13 short v_rspoff; /* a offset into vblock for response buf */ 14 char v_ustat; /* c status */ 15 char v_uqual; /* d interrupt qualifier */ 16 char v_usdata[0x3E]; /* e unsolicited interrupt data */ 17 short v_maxxmt; /* 4C max xmit block size */ 18 short v_maxsilo; /* 4E max silo size */ 19 char v_ident; /* 50 identifies type of vioc */ 20 char v_fault; /* 51 denotes fault or ready after reset */ 21 short v_dcd; /* 52 bit mask for carr detect by port */ 22 short v_cts; /* 54 bit mask for cts by port */ 23 short v_dsr; /* 56 bit mask for dsr by port */ 24 short v_secrec; /* 58 bit mask for secondary receive */ 25 short v_badport; /* 5a bit mask of failed ports */ 26 char v_portyp[16]; /* 5c type of each port */ 27 }; 28 29 /* control bits for v_vioc and v_hdwre */ 30 #define V_RESET 0x1 /* cause a vioc reset */ 31 #define V_TRP 0x2 /* cause a vioc trap */ 32 #define V_INTR 0x4 /* cause a vioc interrupt */ 33 #define V_ERR 0x80 /* generic error flag */ 34 #define V_BSY 0x80 /* generic busy flag */ 35 #define V_UNBSY 0x80 /* not busy for unsolicited interrupt */ 36 37 /* command identifier codes */ 38 #define VXC_LIDENT 0x0000 /* load ident, set int vectors */ 39 #define VXC_XMITDTA 0x0200 /* transmit */ 40 #define VXC_XMITIMM 0x0400 /* xmit immediate */ 41 #define VXC_FDTATOX 0x0300 /* flush data */ 42 #define VXC_LPARAX 0x0600 /* load params */ 43 #define VXC_SNDBRKX 0x0C00 /* send break to port */ 44 #define VXC_MDMCTL 0x1000 /* auto modem control */ 45 /* bisync specific command identifiers */ 46 #define VXC_LPARAX1 0x060a 47 #define VXC_MDMCTL1 0x1004 48 #define VXC_HUNTMD1 0x0804 49 50 /* vioc types returned during config */ 51 #define VXT_VIOCBOP 0x05 /* vioc-bop */ 52 #define VXT_PVIOCX 0x0A /* old connector panel vioc-x */ 53 #define VXT_VIOCX 0x0B /* new connector panel vioc-x */ 54 #define VXT_VIOCB 0x0C /* vioc-bisync */ 55 #define VXT_NEW 0x10 /* new type bit (or'd in) */ 56 57 #define VX_BISYNC 0x1 /* bisync flag indicator for bscport */ 58 59 /* v_fault status values */ 60 #define VXF_READY 0x55 /* no err in vioc self-initializaton */ 61 62 /* modem control flags */ 63 #define VMOD_ON 1 64 #define VMOD_OFF 0 65 66 #define V_ENAB 0002 /* auto + DTR */ 67 #define V_DISAB 0000 /* auto + disable DTR */ 68 69 #define BRK_CHR 040 /* break character */ 70 #define DCD_ON 020 /* */ 71 #define DCD_OFF 010 /* */ 72 #define CTS_ON 004 /* */ 73 #define DSR_ON 0200 /* modem signal states for bisync */ 74 #define DSR_OFF 0100 75 #define DSR_CHG (DSR_ON|DSR_OFF) 76 77 #define VX_SILO 0x800 /* offset to base of silo */ 78 79 /* input status bits returned in silo */ 80 #define VX_PE 0x40 /* parity error */ 81 #define VX_FE 0x80 /* framing error */ 82 #define VX_RO 0xc0 /* receiver overrun */ 83 84 #define VRESPLEN 12 85 #define VCMDLEN 64 86 #define VC_IQLEN 64 /* Interrupt circular queue length */ 87 #define NVCXBUFS 16*3 /* 3 bufs per port per viocx */ 88 #define VC_CMDBUFL NVCXBUFS /* circular cmd (to exec) queue len*/ 89 90 struct vcmds { 91 int v_cmdsem; /* # cmds waiting for itrque */ 92 int v_curcnt; /* # cmds in itrque and executing */ 93 caddr_t v_curcmd[VCMDLEN]; /* pointers to cmds being executed */ 94 int v_fill; /* circular fill index */ 95 int v_empty; /* circular empty index */ 96 caddr_t cmdbuf[VC_CMDBUFL]; /* circular cmd (to exec) queue */ 97 int v_itrfill; /* circular intr issue queue fill */ 98 int v_itrempt; /* circular intr issue queue empty */ 99 short v_itrqueu[VC_IQLEN]; /* circular intr issue queue */ 100 }; 101 102 struct vxcmd { 103 struct vxcmd *c_fwd; 104 short cmd; 105 char par[58]; /* pad to 64 total size */ 106 }; 107 108 struct vxmit { 109 char line; 110 char bcount; 111 char ostream[6]; 112 }; 113 114 #define SSPEED 13 /* standard speed 9600 bps */ 115