BSD 4_3_Net_2 release
[unix-history] / usr / src / sys / tahoe / vba / vxreg.h
CommitLineData
430f81c3
MK
1/*
2 * Copyright (c) 1988 Regents of the University of California.
3 * All rights reserved.
4 *
b982b543
MK
5 * This code is derived from software contributed to Berkeley by
6 * Computer Consoles Inc.
7 *
af359dea
C
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions
10 * are met:
11 * 1. Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 * 2. Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in the
15 * documentation and/or other materials provided with the distribution.
16 * 3. All advertising materials mentioning features or use of this software
17 * must display the following acknowledgement:
18 * This product includes software developed by the University of
19 * California, Berkeley and its contributors.
20 * 4. Neither the name of the University nor the names of its contributors
21 * may be used to endorse or promote products derived from this software
22 * without specific prior written permission.
430f81c3 23 *
af359dea
C
24 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
25 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
30 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
31 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
33 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
34 * SUCH DAMAGE.
430f81c3 35 *
1c15e888 36 * @(#)vxreg.h 7.4 (Berkeley) 6/28/90
430f81c3 37 */
b56a1465
SL
38
39/*
3155ebd2 40 * Vioc hardware interface structure.
b56a1465 41 */
3155ebd2
SL
42struct vxdevice {
43 char v_vioc; /* 0 type of interrupt + vioc busy flag */
b56a1465
SL
44 char v_hdwre; /* 1 trap, reset, or hard interrupt */
45 char v_vcbsy; /* 2 command busy (set by host) */
3155ebd2 46 char v_vcid; /* 3 command identifier */
b56a1465
SL
47 short v_vcp[2]; /* 4 command pointer (sent by host) */
48 short v_unused; /* 8 unused */
49 short v_rspoff; /* a offset into vblock for response buf */
50 char v_ustat; /* c status */
3155ebd2 51 char v_uqual; /* d interrupt qualifier */
b56a1465 52 char v_usdata[0x3E]; /* e unsolicited interrupt data */
3155ebd2
SL
53 short v_maxxmt; /* 4C max xmit block size */
54 short v_maxsilo; /* 4E max silo size */
55 char v_ident; /* 50 identifies type of vioc */
56 char v_fault; /* 51 denotes fault or ready after reset */
57 short v_dcd; /* 52 bit mask for carr detect by port */
58 short v_cts; /* 54 bit mask for cts by port */
b56a1465
SL
59 short v_dsr; /* 56 bit mask for dsr by port */
60 short v_secrec; /* 58 bit mask for secondary receive */
61 short v_badport; /* 5a bit mask of failed ports */
62 char v_portyp[16]; /* 5c type of each port */
b56a1465
SL
63};
64
3155ebd2 65/* control bits for v_vioc and v_hdwre */
fce3c26d
SL
66#define V_RESET 0x1 /* cause a vioc reset */
67#define V_TRP 0x2 /* cause a vioc trap */
68#define V_INTR 0x4 /* cause a vioc interrupt */
69#define V_ERR 0x80 /* generic error flag */
70#define V_BSY 0x80 /* generic busy flag */
71#define V_UNBSY 0x80 /* not busy for unsolicited interrupt */
3155ebd2
SL
72
73/* command identifier codes */
fce3c26d
SL
74#define VXC_LIDENT 0x0000 /* load ident, set int vectors */
75#define VXC_XMITDTA 0x0200 /* transmit */
76#define VXC_XMITIMM 0x0400 /* xmit immediate */
77#define VXC_FDTATOX 0x0300 /* flush data */
78#define VXC_LPARAX 0x0600 /* load params */
79#define VXC_SNDBRKX 0x0C00 /* send break to port */
80#define VXC_MDMCTL 0x1000 /* auto modem control */
3155ebd2 81/* bisync specific command identifiers */
fce3c26d
SL
82#define VXC_LPARAX1 0x060a
83#define VXC_MDMCTL1 0x1004
84#define VXC_HUNTMD1 0x0804
3155ebd2
SL
85
86/* vioc types returned during config */
fce3c26d
SL
87#define VXT_VIOCBOP 0x05 /* vioc-bop */
88#define VXT_PVIOCX 0x0A /* old connector panel vioc-x */
89#define VXT_VIOCX 0x0B /* new connector panel vioc-x */
90#define VXT_VIOCB 0x0C /* vioc-bisync */
91#define VXT_NEW 0x10 /* new type bit (or'd in) */
3155ebd2 92
fce3c26d 93#define VX_BISYNC 0x1 /* bisync flag indicator for bscport */
3155ebd2 94
82bc5dc5
MK
95/* connector panel types (per port) */
96#define VXT_NONE 0 /* no connector panel */
97#define VXT_8PORT 1 /* 8 port RS-232C */
98#define VXT_RS422 2 /* 8 port RS-422 (nonexistent) */
99#define VXT_4PORT 3 /* 4 port RS-232 (with DSR/RING) */
100#define VXT_PARALLEL 4 /* 4 port panel parallel port */
101
3155ebd2 102/* v_fault status values */
fce3c26d 103#define VXF_READY 0x55 /* no err in vioc self-initializaton */
3155ebd2 104
82bc5dc5
MK
105/* line parameters, set with VXC_LPARAX */
106#define BITS5 0x00 /* 5 bits per character */
107#define BITS6 0x80 /* 6 bits per character */
108#define BITS7 0x40 /* 7 bits per character */
109#define BITS8 0xc0 /* 8 bits per character */
110
111#define VNOPARITY 0x00 /* no parity bit */
112#define VODDP 0x01 /* odd parity bit */
113#define VEVENP 0x03 /* even parity bit */
114
115#define VSTOP1 0x04 /* 1 stop bit */
116#define VSTOP2 0x0c /* 2 stop bit */
117
118#define V19200 0x13 /* 19.2 kbaud */
119
3155ebd2 120/* modem control flags */
fce3c26d
SL
121#define VMOD_ON 1
122#define VMOD_OFF 0
3155ebd2 123
82bc5dc5
MK
124#define V_AUTO 0x00 /* auto control of RTS, uses CTS */
125#define V_MANUAL 0x80 /* manual control of RTS, ignore CTS */
126#define V_DTR_ON 0x02 /* set DTR output */
127#define V_DTR_OFF 0x00 /* drop DTR output */
128#define V_RTS 0x01 /* set RTS output (manual only) */
3155ebd2 129
fce3c26d
SL
130#define BRK_CHR 040 /* break character */
131#define DCD_ON 020 /* */
132#define DCD_OFF 010 /* */
133#define CTS_ON 004 /* */
134#define DSR_ON 0200 /* modem signal states for bisync */
135#define DSR_OFF 0100
136#define DSR_CHG (DSR_ON|DSR_OFF)
3155ebd2 137
fce3c26d 138#define VX_SILO 0x800 /* offset to base of silo */
3155ebd2
SL
139
140/* input status bits returned in silo */
fce3c26d
SL
141#define VX_PE 0x40 /* parity error */
142#define VX_FE 0x80 /* framing error */
143#define VX_RO 0xc0 /* receiver overrun */
3155ebd2 144
b982b543
MK
145/* VIOC Process Error (PROCER) codes */
146#define VP_SILO_OFLOW 0x40 /* input silo error, non-fatal */
147
fce3c26d
SL
148#define VRESPLEN 12
149#define VCMDLEN 64
150#define VC_IQLEN 64 /* Interrupt circular queue length */
151#define NVCXBUFS 16*3 /* 3 bufs per port per viocx */
152#define VC_CMDBUFL NVCXBUFS /* circular cmd (to exec) queue len*/
3155ebd2
SL
153
154struct vcmds {
155 int v_cmdsem; /* # cmds waiting for itrque */
156 int v_curcnt; /* # cmds in itrque and executing */
157 caddr_t v_curcmd[VCMDLEN]; /* pointers to cmds being executed */
158 int v_fill; /* circular fill index */
159 int v_empty; /* circular empty index */
160 caddr_t cmdbuf[VC_CMDBUFL]; /* circular cmd (to exec) queue */
161 int v_itrfill; /* circular intr issue queue fill */
162 int v_itrempt; /* circular intr issue queue empty */
163 short v_itrqueu[VC_IQLEN]; /* circular intr issue queue */
164};
165
166struct vxcmd {
167 struct vxcmd *c_fwd;
168 short cmd;
169 char par[58]; /* pad to 64 total size */
170};
171
172struct vxmit {
173 char line;
174 char bcount;
175 char ostream[6];
176};
177
fce3c26d 178#define SSPEED 13 /* standard speed 9600 bps */