xref: /csrg-svn/sys/vax/if/if_dmv.h (revision 44558)
131907Skarels /*
234727Smckusick  * Copyright (c) 1988 Regents of the University of California.
334727Smckusick  * All rights reserved.
434727Smckusick  *
5*44558Sbostic  * %sccs.include.redist.c%
634727Smckusick  *
7*44558Sbostic  *	@(#)if_dmv.h	7.4 (Berkeley) 06/28/90
834868Sbostic  */
934868Sbostic 
1034868Sbostic /*
1131907Skarels  * DMV-11 Driver
1231907Skarels  *
1331907Skarels  * Qbus Sync DDCMP interface - DMV operated in full duplex, point to point mode
1431907Skarels  *
1534727Smckusick  * Written by Bob Kridle of Mt Xinu
1634727Smckusick  * starting from if_dmc.h version 6.4 dated 6/8/85
1731907Skarels  */
1831907Skarels 
1931907Skarels struct dmvdevice {
2031907Skarels 	union {
2131907Skarels 		u_char    xbsel[2];
2231907Skarels 		u_short	xwsel;
2331907Skarels 	} xw0;
2431907Skarels 	union {
2531907Skarels 		u_char    xbsel[2];
2631907Skarels 		u_short	xwsel;
2731907Skarels 	} xw1;
2831907Skarels 	union {
2931907Skarels 		u_char    xbsel[2];
3031907Skarels 		u_short	xwsel;
3131907Skarels 	} xw2;
3231907Skarels 	union {
3331907Skarels 		u_char    xbsel[2];
3431907Skarels 		u_short	xwsel;
3531907Skarels 	} xw3;
3631907Skarels 	union {
3731907Skarels 		u_char    xbsel[2];
3831907Skarels 		u_short	xwsel;
3931907Skarels 	} xw4;
4031907Skarels };
4131907Skarels 
4231907Skarels #define  bsel0	xw0.xbsel[0]
4331907Skarels #define  bsel1	xw0.xbsel[1]
4431907Skarels #define  bsel2	xw1.xbsel[0]
4531907Skarels #define  bsel3	xw1.xbsel[1]
4631907Skarels #define  bsel4	xw2.xbsel[0]
4731907Skarels #define  bsel5	xw2.xbsel[1]
4831907Skarels #define  bsel6	xw3.xbsel[0]
4931907Skarels #define  bsel7	xw3.xbsel[1]
5031907Skarels #define  bsel10	xw4.xbsel[0]
5131907Skarels #define  bsel11	xw4.xbsel[1]
5231907Skarels 
5331907Skarels #define	 wsel0	xw0.xwsel
5431907Skarels #define	 wsel2	xw1.xwsel
5531907Skarels #define	 wsel4	xw2.xwsel
5631907Skarels #define	 wsel6	xw3.xwsel
5731907Skarels #define	 wsel10	xw4.xwsel
5831907Skarels 
5931907Skarels /*
6031907Skarels  * dmv software packet encapsulation.  This allows the dmv
6131907Skarels  * link to be multiplexed among several protocols.
6231907Skarels  * The first eight bytes of the dmc header are garbage,
6331907Skarels  * since on a vax the uba has been known to mung these
6431907Skarels  * bytes.  The next two bytes encapsulate packet type.
6531907Skarels  */
6631907Skarels struct dmv_header {
6731907Skarels 	short	dmv_type;	/* encapsulate packet type */
6831907Skarels };
6931907Skarels 
7031907Skarels /* packet types */
7131907Skarels #define	DMV_IPTYPE	1
7231907Skarels #define	DMV_TRAILER	2
7331907Skarels #define	DMV_NTRAILER	16
7431907Skarels 
7531907Skarels /*
7631907Skarels  * DMVMTU includes space for data (1024) +
7731907Skarels  * protocol header (256) + trailer descriptor (4).
7831907Skarels  * The software link encapsulation header (dmv_header)
7931907Skarels  * is handled separately.
8031907Skarels  */
8131907Skarels #define DMVMTU  1284
8231907Skarels 
8331907Skarels #define	RDYSCAN	16	/* loop delay for RDYI after RQI */
8431907Skarels 
8531907Skarels 	/* defines for bsel0 */
8631907Skarels 
8731907Skarels #define	DMV_IEI		0x01		/* interrupt enable, input */
8831907Skarels #define	DMV_IEO		0x10		/* interrupt enable, output */
8931907Skarels #define	DMV_RQI		0x80		/* request input */
9031907Skarels #define DMV0BITS	"\10\8RQI\5IEO\1IEI"
9131907Skarels 
9231907Skarels 	/* defines for bsel1 */
9331907Skarels 
9431907Skarels #define	DMV_MCLR	0x40		/* master clear */
9531907Skarels #define	DMV_RUN		0x80		/* run */
9631907Skarels #define DMV1BITS	"\10\8RUN\7MCLR"
9731907Skarels 
9831907Skarels 	/* defines for bsel2 */
9931907Skarels 
10031907Skarels #define	DMV_CMD		0x07		/* command/response type field */
10131907Skarels 
10231907Skarels 
10331907Skarels 	/* input commands */
10431907Skarels 
10531907Skarels #define	DMV_BACCR	0x00		/* buffer address, char. count - rec */
10631907Skarels #define	DMV_BACCX	0x04		/* buffer address, char. count - xmit */
10731907Skarels #define	DMV_MDEFI	0x02		/* mode definition input */
10831907Skarels #define	DMV_CNTRLI	0x01		/* control input */
10931907Skarels 
11031907Skarels 	/* response identifiers */
11131907Skarels 
11231907Skarels #define	DMV_CNTRLO	0x01		/* control output */
11331907Skarels #define	DMV_MDEFO	0x02		/* information output */
11431907Skarels #define	DMV_BDRUS	0x00		/* buffer definition - rec. used */
11531907Skarels #define	DMV_BDRUNUS	0x03		/* buffer disposition - rec. unused */
11631907Skarels #define	DMV_BDXSA	0x04		/* buffer dispostiion - sent & ack */
11731907Skarels #define	DMV_BDXSN	0x06		/* buffer dispostiion - sent & not ack*/
11831907Skarels #define	DMV_BDXNS	0x07		/* buffer dispostiion - not sent */
11931907Skarels 
12031907Skarels #define DMV_22BIT	0x08		/* buffer address in 22 bit format */
12131907Skarels #define DMV_RDI		0x10		/* ready for input */
12231907Skarels #define DMV_RDO		0x80		/* ready for output */
12331907Skarels #define DMV2BITS	"\10\8RDO\5RDI"
12431907Skarels 
12531907Skarels 	/* defines for CNTRLI mode */
12631907Skarels 
12731907Skarels #define	DMV_RDTSS	0x20		/* read tributary status slot */
12831907Skarels #define	DMV_RDCTSS	0x40		/* read/clear tributary status slot */
12931907Skarels #define	DMV_WRTSS	0x80		/* write tributary status slot */
13031907Skarels #define	DMV_TRIBN	0x1f		/* tributary number */
13131907Skarels #define	DMV_RQKEY	0x1f		/* control command request key */
13231907Skarels #define DMV_ECBP	0x100		/* establish common buffer pool */
13331907Skarels 
13431907Skarels 	/* relevant command request keys */
13531907Skarels 
13631907Skarels #define DMV_NOP		0x00		/* no-op */
13731907Skarels #define DMV_ESTTRIB	0x01		/* establish tributary */
13831907Skarels #define DMV_REQSUS	0x03		/* request start up state */
13931907Skarels #define DMV_REQHS	0x05		/* request halt state */
14031907Skarels #define DMV_WMC		0x10		/* write modem control */
14131907Skarels #define DMV_RMC		0x11		/* read modem control */
14231907Skarels 
14331907Skarels 	/* some interesting CNTRLO codes
14431907Skarels 	 *
14531907Skarels 	 * use the manual if yours isn't here!!
14631907Skarels 	 */
14731907Skarels 
14831907Skarels #define	DMV_RTE		0002		/* receive threshold error */
14931907Skarels #define	DMV_TTE		0004		/* xmit threshold error */
15031907Skarels #define	DMV_STE		0006		/* select threshold error */
15131907Skarels #define DMV_ORUN	0024		/* other end enters run state */
15231907Skarels #define DMV_NXM		0302		/* non-existant memory */
15331907Skarels #define DMV_MODD	0304		/* modem disconnected */
15431907Skarels #define DMV_QOVF	0306		/* response queue overflow */
15531907Skarels #define DMV_CXRL	0310		/* modem cxr lost */
15631907Skarels 
15731907Skarels #define DMV_EEC		0377		/* CNTRLO error code mask */
158