xref: /original-bsd/sys/vax/uba/dmfreg.h (revision 3708840b)
1 /*	dmfreg.h	4.2	83/05/14	*/
2 
3 /*
4  * DMF-32 definitions.
5  */
6 
7 /*
8  * "dmf" (unqualified) refers to the async portion of the dmf32,
9  * "dmfc" to the combo portion,
10  * "dmfs" to the sync portion,
11  * "dmfl" to the lp portion, and
12  * "dmfd" to the dr portion.
13  */
14 struct dmfdevice {
15 	short	dmfccsr0;		/* combo csr 0 */
16 	short	dmfccsr1;		/* combo csr 1 */
17 	short	dmfs[4];
18 	short	dmfcsr;			/* control-status register */
19 	short	dmflpr;			/* line parameter register */
20 	short	dmfrbuf;		/* receiver buffer (ro) */
21 	union {
22 		u_short	dmfirw;		/* indirect register word */
23 		u_char	dmfirc[2];	/*    "         "    bytes */
24 	} dmfun;
25 	short	dmfl[2];
26 	short	dmfd[4];
27 };
28 
29 #define	dmfrsp	dmfrbuf		/* receive silo parameter register (wo) */
30 #define	dmftbuf	dmfun.dmfirc[0]	/* transmit buffer */
31 #define	dmftsc	dmfun.dmfirc[0]	/* transmit silo count */
32 #define	dmfrms	dmfun.dmfirc[1]	/* receive modem status */
33 #define	dmflcr	dmfun.dmfirc[0]	/* line control register */
34 #define	dmftms	dmfun.dmfirc[1]	/* transmit modem status */
35 #define	dmftba	dmfun.dmfirw	/* transmit buffer address */
36 #define	dmftcc	dmfun.dmfirw	/* transmit character count */
37 
38 /* bits in dmfcsr */
39 #define	DMF_TI	0100000		/* transmit interrupt */
40 #define	DMF_TIE	0040000		/* transmit interrupt enable */
41 #define	DMF_NXM	0020000		/* non-existant memory */
42 #define	DMF_LIN	0003400		/* transmit line number */
43 #define	DMF_RI	0000200		/* receiver interrupt */
44 #define	DMF_RIE	0000100		/* receiver interrupt enable */
45 #define	DMF_CLR	0000040		/* master reset */
46 #define	DMF_IAD	0000037		/* indirect address register */
47 
48 #define	DMFIR_TBUF	000	/* select tbuf indirect register */
49 #define	DMFIR_LCR	010	/* select lcr indirect register */
50 #define	DMFIR_TBA	020	/* select tba indirect register */
51 #define	DMFIR_TCC	030	/* select tcc indirect register */
52 
53 /* bits in dmflpr */
54 #define	BITS6	(01<<3)
55 #define	BITS7	(02<<3)
56 #define	BITS8	(03<<3)
57 #define	TWOSB	0200
58 #define	PENABLE	040
59 #define	EPAR	0100
60 
61 #define	DMF_IE	(DMF_TIE|DMF_RIE)
62 
63 #define	DMF_SILOCNT	32		/* size of DMF output silo (per line) */
64 
65 /* bits in dmfrbuf */
66 #define	DMF_DSC		0004000		/* data set change */
67 #define	DMF_PE		0010000		/* parity error */
68 #define	DMF_FE		0020000		/* framing error */
69 #define	DMF_DO		0040000		/* data overrun */
70 
71 /* bits in dmfrms */
72 #define	DMF_USRR	0004		/* user modem signal (pin 25) */
73 #define	DMF_SR		0010		/* secondary receive */
74 #define	DMF_CTS		0020		/* clear to send */
75 #define	DMF_CAR		0040		/* carrier detect */
76 #define	DMF_RNG		0100		/* ring */
77 #define	DMF_DSR		0200		/* data set ready */
78 
79 /* bits in dmftms */
80 #define	DMF_USRW	0001		/* user modem signal (pin 18) */
81 #define	DMF_DTR		0002		/* data terminal ready */
82 #define	DMF_RATE	0004		/* data signal rate select */
83 #define	DMF_ST		0010		/* secondary transmit */
84 #define	DMF_RTS		0020		/* request to send */
85 #define	DMF_BRK		0040		/* pseudo break bit */
86 #define	DMF_PREEMPT	0200		/* preempt output */
87 
88 /* flags for modem control */
89 #define	DMF_ON	(DMF_DTR|DMF_RTS)
90 #define	DMF_OFF	0
91 
92 /* bits in dmflcr */
93 #define	DMF_MIE		0040		/* modem interrupt enable */
94 #define	DMF_FLUSH	0020		/* flush transmit silo */
95 #define	DMF_RBRK	0010		/* real break bit */
96 #define	DMF_RE		0004		/* receive enable */
97 #define	DMF_AUTOX	0002		/* auto XON/XOFF */
98 #define	DMF_TE		0001		/* transmit enable */
99 
100 #define	DMFLCR_ENA	(DMF_MIE|DMF_RE|DMF_TE)
101 
102 /* bits in dm lsr, copied from dh.c */
103 #define	DML_USR		0001000		/* usr modem sig, not a real DM bit */
104 #define	DML_DSR		0000400		/* data set ready, not a real DM bit */
105 #define	DML_RNG		0000200		/* ring */
106 #define	DML_CAR		0000100		/* carrier detect */
107 #define	DML_CTS		0000040		/* clear to send */
108 #define	DML_SR		0000020		/* secondary receive */
109 #define	DML_ST		0000010		/* secondary transmit */
110 #define	DML_RTS		0000004		/* request to send */
111 #define	DML_DTR		0000002		/* data terminal ready */
112 #define	DML_LE		0000001		/* line enable */
113 
114 #define SETLCR(pt, exp) \
115 	pt->dmfun.dmfirw = (((pt)->dmftms)<<8) | ((exp)&0xff)
116