xref: /csrg-svn/sys/tahoe/vba/vxreg.h (revision 44535)
134406Skarels /*
234406Skarels  * Copyright (c) 1988 Regents of the University of California.
334406Skarels  * All rights reserved.
434406Skarels  *
540236Skarels  * This code is derived from software contributed to Berkeley by
640236Skarels  * Computer Consoles Inc.
740236Skarels  *
8*44535Sbostic  * %sccs.include.redist.c%
934406Skarels  *
10*44535Sbostic  *	@(#)vxreg.h	7.4 (Berkeley) 06/28/90
1134406Skarels  */
1223999Ssam 
1323999Ssam /*
1425881Ssam  * Vioc hardware interface structure.
1523999Ssam  */
1625881Ssam struct	vxdevice {
1725881Ssam 	char	v_vioc;		/*  0 type of interrupt + vioc busy flag */
1823999Ssam 	char	v_hdwre;	/*  1 trap, reset, or hard interrupt */
1923999Ssam 	char	v_vcbsy;	/*  2 command busy (set by host) */
2025881Ssam 	char	v_vcid;		/*  3 command identifier */
2123999Ssam 	short	v_vcp[2];	/*  4 command pointer (sent by host) */
2223999Ssam 	short	v_unused;	/*  8 unused */
2323999Ssam 	short	v_rspoff;	/*  a offset into vblock for response buf */
2423999Ssam 	char	v_ustat;	/*  c status */
2525881Ssam 	char	v_uqual;	/*  d interrupt qualifier */
2623999Ssam 	char	v_usdata[0x3E];	/*  e unsolicited interrupt data */
2725881Ssam 	short	v_maxxmt;	/* 4C max xmit block size */
2825881Ssam 	short	v_maxsilo;	/* 4E max silo size */
2925881Ssam 	char	v_ident;	/* 50 identifies type of vioc */
3025881Ssam 	char	v_fault;	/* 51 denotes fault or ready after reset */
3125881Ssam 	short	v_dcd;		/* 52 bit mask for carr detect by port */
3225881Ssam 	short	v_cts;		/* 54 bit mask for cts by port */
3323999Ssam 	short	v_dsr;		/* 56 bit mask for dsr by port */
3423999Ssam 	short	v_secrec;	/* 58 bit mask for secondary receive */
3523999Ssam 	short	v_badport;	/* 5a bit mask of failed ports */
3623999Ssam 	char	v_portyp[16];	/* 5c type of each port */
3725881Ssam };
3823999Ssam 
3925881Ssam /* control bits for v_vioc and v_hdwre */
4025948Ssam #define	V_RESET 0x1		/* cause a vioc reset */
4125948Ssam #define	V_TRP	0x2		/* cause a vioc trap */
4225948Ssam #define	V_INTR	0x4		/* cause a vioc interrupt */
4325948Ssam #define	V_ERR	0x80		/* generic error flag */
4425948Ssam #define	V_BSY	0x80		/* generic busy flag */
4525948Ssam #define	V_UNBSY	0x80		/* not busy for unsolicited interrupt */
4623999Ssam 
4725881Ssam /* command identifier codes */
4825948Ssam #define	VXC_LIDENT	0x0000		/* load ident, set int vectors */
4925948Ssam #define	VXC_XMITDTA	0x0200		/* transmit */
5025948Ssam #define	VXC_XMITIMM	0x0400		/* xmit immediate */
5125948Ssam #define	VXC_FDTATOX	0x0300		/* flush data */
5225948Ssam #define	VXC_LPARAX	0x0600		/* load params */
5325948Ssam #define	VXC_SNDBRKX	0x0C00		/* send break to port */
5425948Ssam #define	VXC_MDMCTL	0x1000		/* auto modem control */
5525881Ssam /* bisync specific command identifiers */
5625948Ssam #define	VXC_LPARAX1	0x060a
5725948Ssam #define	VXC_MDMCTL1	0x1004
5825948Ssam #define	VXC_HUNTMD1	0x0804
5923999Ssam 
6025881Ssam /* vioc types returned during config */
6125948Ssam #define	VXT_VIOCBOP	0x05		/* vioc-bop */
6225948Ssam #define	VXT_PVIOCX	0x0A		/* old connector panel vioc-x */
6325948Ssam #define	VXT_VIOCX	0x0B		/* new connector panel vioc-x */
6425948Ssam #define	VXT_VIOCB	0x0C		/* vioc-bisync */
6525948Ssam #define	VXT_NEW		0x10		/* new type bit (or'd in) */
6623999Ssam 
6725948Ssam #define	VX_BISYNC	0x1		/* bisync flag indicator for bscport */
6825881Ssam 
6930373Skarels /* connector panel types (per port) */
7030373Skarels #define	VXT_NONE	0		/* no connector panel */
7130373Skarels #define	VXT_8PORT	1		/* 8 port RS-232C */
7230373Skarels #define	VXT_RS422	2		/* 8 port RS-422 (nonexistent) */
7330373Skarels #define	VXT_4PORT	3		/* 4 port RS-232 (with DSR/RING) */
7430373Skarels #define	VXT_PARALLEL	4		/* 4 port panel parallel port */
7530373Skarels 
7625881Ssam /* v_fault status values */
7725948Ssam #define	VXF_READY	0x55		/* no err in vioc self-initializaton */
7825881Ssam 
7930373Skarels /* line parameters, set with VXC_LPARAX */
8030373Skarels #define	BITS5		0x00		/* 5 bits per character */
8130373Skarels #define	BITS6		0x80		/* 6 bits per character */
8230373Skarels #define	BITS7		0x40		/* 7 bits per character */
8330373Skarels #define	BITS8		0xc0		/* 8 bits per character */
8430373Skarels 
8530373Skarels #define	VNOPARITY	0x00		/* no parity bit */
8630373Skarels #define	VODDP		0x01		/* odd parity bit */
8730373Skarels #define	VEVENP		0x03		/* even parity bit */
8830373Skarels 
8930373Skarels #define	VSTOP1		0x04		/* 1 stop bit */
9030373Skarels #define	VSTOP2		0x0c		/* 2 stop bit */
9130373Skarels 
9230373Skarels #define	V19200		0x13		/* 19.2 kbaud */
9330373Skarels 
9425881Ssam /* modem control flags */
9525948Ssam #define	VMOD_ON		1
9625948Ssam #define	VMOD_OFF	0
9725881Ssam 
9830373Skarels #define	V_AUTO		0x00		/* auto control of RTS, uses CTS */
9930373Skarels #define	V_MANUAL	0x80		/* manual control of RTS, ignore CTS */
10030373Skarels #define	V_DTR_ON	0x02		/* set DTR output */
10130373Skarels #define	V_DTR_OFF	0x00		/* drop DTR output */
10230373Skarels #define	V_RTS		0x01		/* set RTS output (manual only) */
10325881Ssam 
10425948Ssam #define	BRK_CHR	040			/* break character */
10525948Ssam #define	DCD_ON	020			/* */
10625948Ssam #define	DCD_OFF	010			/* */
10725948Ssam #define	CTS_ON	004			/* */
10825948Ssam #define	DSR_ON	0200			/* modem signal states for bisync */
10925948Ssam #define	DSR_OFF 0100
11025948Ssam #define	DSR_CHG	(DSR_ON|DSR_OFF)
11125881Ssam 
11225948Ssam #define	VX_SILO	0x800			/* offset to base of silo */
11325881Ssam 
11425881Ssam /* input status bits returned in silo */
11525948Ssam #define	VX_PE	0x40			/* parity error */
11625948Ssam #define	VX_FE	0x80			/* framing error */
11725948Ssam #define	VX_RO	0xc0			/* receiver overrun */
11825881Ssam 
11940236Skarels /* VIOC Process Error (PROCER) codes */
12040236Skarels #define	VP_SILO_OFLOW	0x40		/* input silo error, non-fatal */
12140236Skarels 
12225948Ssam #define	VRESPLEN	12
12325948Ssam #define	VCMDLEN		64
12425948Ssam #define	VC_IQLEN	64		/* Interrupt circular queue length */
12525948Ssam #define	NVCXBUFS	16*3		/* 3 bufs per port per viocx */
12625948Ssam #define	VC_CMDBUFL	NVCXBUFS	/* circular cmd (to exec) queue len*/
12725881Ssam 
12825881Ssam struct	vcmds {
12925881Ssam 	int	v_cmdsem;		/* # cmds waiting for itrque */
13025881Ssam 	int	v_curcnt;		/* # cmds in itrque and executing */
13125881Ssam 	caddr_t	v_curcmd[VCMDLEN];	/* pointers to cmds being executed */
13225881Ssam 	int	v_fill;			/* circular fill index */
13325881Ssam 	int	v_empty;		/* circular empty index */
13425881Ssam 	caddr_t	cmdbuf[VC_CMDBUFL];	/* circular cmd (to exec) queue */
13525881Ssam 	int	v_itrfill;		/* circular intr issue queue fill */
13625881Ssam 	int	v_itrempt;		/* circular intr issue queue empty */
13725881Ssam 	short	v_itrqueu[VC_IQLEN];	/* circular intr issue queue */
13823999Ssam };
13923999Ssam 
14025881Ssam struct	vxcmd {
14125881Ssam 	struct	vxcmd *c_fwd;
14225881Ssam 	short	cmd;
14325881Ssam 	char	par[58];		/* pad to 64 total size */
14425881Ssam };
14525881Ssam 
14625881Ssam struct	vxmit {
14725881Ssam 	char	line;
14825881Ssam 	char	bcount;
14925881Ssam 	char	ostream[6];
15025881Ssam };
15125881Ssam 
15225948Ssam #define	SSPEED	13			/* standard speed 9600 bps */
153