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