BSD 4_3 release
[unix-history] / usr / src / sys / vaxuba / dhureg.h
CommitLineData
da7c5cc6 1/*
0880b18e 2 * Copyright (c) 1982, 1986 Regents of the University of California.
da7c5cc6
KM
3 * All rights reserved. The Berkeley software License Agreement
4 * specifies the terms and conditions for redistribution.
5 *
95f51977 6 * @(#)dhureg.h 7.1 (Berkeley) 6/5/86
da7c5cc6 7 */
856cf804
KM
8
9/*
10 * DHU-11 device register definitions.
11 */
12struct dhudevice {
13 union {
14 short csr; /* control-status register */
15 struct {
16 char csrl; /* low byte for line select */
17 char csrh; /* high byte for tx line */
18 } cb;
19 } un1;
20#define dhucsr un1.csr
21#define dhucsrl un1.cb.csrl
22#define dhucsrh un1.cb.csrh
23 union {
24 short rbuf; /* recv.char/ds.change register (R) */
25 short timo; /* delay between recv -> intr (W) */
26 } un2;
27#define dhurbuf un2.rbuf
28#define dhutimo un2.timo
29 short dhulpr; /* line parameter register */
30 union {
31 char fbyte[1]; /* fifo data byte (low byte only) (W) */
32 short fdata; /* fifo data word (W) */
33 char sbyte[2]; /* line status/fifo size (R) */
34 } un3;
35#define dhubyte un3.fbyte[0]
36#define dhufifo un3.fdata
37#define dhusize un3.sbyte[0]
38#define dhustat un3.sbyte[1]
39 short dhulcr; /* line control register */
40 short dhubar1; /* buffer address register 1 */
41 char dhubar2; /* buffer address register 2 */
42 char dhulcr2; /* xmit enable bit */
43 short dhubcr; /* buffer count register */
44};
45
46/* Bits in dhucsr */
47#define DHU_CS_TIE 0x4000 /* transmit interrupt enable */
48#define DHU_CS_DFAIL 0x2000 /* diagnostic fail */
49#define DHU_CS_RI 0x0080 /* receiver interrupt */
50#define DHU_CS_RIE 0x0040 /* receiver interrupt enable */
51#define DHU_CS_MCLR 0x0020 /* master clear */
52#define DHU_CS_SST 0x0010 /* skip self test (with DHU_CS_MCLR) */
53#define DHU_CS_IAP 0x000f /* indirect address pointer */
54
55#define DHU_IE (DHU_CS_TIE|DHU_CS_RIE)
56
57/* map unit into iap register select */
58#define DHU_SELECT(unit) ((unit) & DHU_CS_IAP)
59
60/* Transmitter bits in high byte of dhucsr */
61#define DHU_CSH_TI 0x80 /* transmit interrupt */
62#define DHU_CSH_NXM 0x10 /* transmit dma err: non-exist-mem */
63#define DHU_CSH_TLN 0x0f /* transmit line number */
64
65/* map csrh line bits into line */
66#define DHU_TX_LINE(csrh) ((csrh) & DHU_CSH_TLN)
67
68/* Bits in dhurbuf */
69#define DHU_RB_VALID 0x8000 /* data valid */
70#define DHU_RB_STAT 0x7000 /* status bits */
71#define DHU_RB_DO 0x4000 /* data overrun */
72#define DHU_RB_FE 0x2000 /* framing error */
73#define DHU_RB_PE 0x1000 /* parity error */
74#define DHU_RB_RLN 0x0f00 /* receive line number */
75#define DHU_RB_RDS 0x00ff /* receive data/status */
76#define DHU_RB_DIAG 0x0001 /* if DHU_RB_STAT -> diag vs modem */
77
78/* map rbuf line bits into line */
79#define DHU_RX_LINE(rbuf) (((rbuf) & DHU_RB_RLN) >> 8)
80
81/* Bits in dhulpr */
82#define DHU_LP_TSPEED 0xf000
83#define DHU_LP_RSPEED 0x0f00
84#define DHU_LP_TWOSB 0x0080
85#define DHU_LP_EPAR 0x0040
86#define DHU_LP_PENABLE 0x0020
87#define DHU_LP_BITS8 0x0018
88#define DHU_LP_BITS7 0x0010
89#define DHU_LP_BITS6 0x0008
90
91/* Bits in dhustat */
92#define DHU_ST_DSR 0x80 /* data set ready */
93#define DHU_ST_RI 0x20 /* ring indicator */
94#define DHU_ST_DCD 0x10 /* carrier detect */
95#define DHU_ST_CTS 0x04 /* clear to send */
96#define DHU_ST_DHU 0x01 /* always one on a dhu, zero on dhv */
97
98/* Bits in dhulcr */
99#define DHU_LC_RTS 0x1000 /* request to send */
100#define DHU_LC_DTR 0x0200 /* data terminal ready */
101#define DHU_LC_MODEM 0x0100 /* modem control enable */
102#define DHU_LC_MAINT 0x00c0 /* maintenance mode */
103#define DHU_LC_FXOFF 0x0020 /* force xoff */
104#define DHU_LC_OAUTOF 0x0010 /* output auto flow */
105#define DHU_LC_BREAK 0x0008 /* break control */
106#define DHU_LC_RXEN 0x0004 /* receiver enable */
107#define DHU_LC_IAUTOF 0x0002 /* input auto flow */
108#define DHU_LC_TXABORT 0x0001 /* transmitter abort */
109
110/* Bits in dhulcr2 */
111#define DHU_LC2_TXEN 0x80 /* transmitter enable */
112
113/* Bits in dhubar2 */
114#define DHU_BA2_DMAGO 0x80 /* transmit dma start */
115#define DHU_BA2_XBA 0x03 /* top two bits of dma address */
116#define DHU_XBA_SHIFT 16 /* amount to shift xba bits */
117
118/* Bits for dhumctl only: stat bits are shifted up 16 */
119#define DHU_ON (DHU_LC_DTR|DHU_LC_RTS|DHU_LC_MODEM)
120#define DHU_OFF DHU_LC_MODEM
121
122#define DHU_DSR (DHU_ST_DSR << 16)
123#define DHU_RNG (DHU_ST_RI << 16)
124#define DHU_CAR (DHU_ST_DCD << 16)
125#define DHU_CTS (DHU_ST_CTS << 16)
126
127#define DHU_RTS DHU_LC_RTS
128#define DHU_DTR DHU_LC_DTR
129#define DHU_BRK DHU_LC_BREAK
130#define DHU_LE DHU_LC_MODEM
131
132/* bits in dm lsr, copied from dmreg.h */
133#define DML_DSR 0000400 /* data set ready, not a real DM bit */
134#define DML_RNG 0000200 /* ring */
135#define DML_CAR 0000100 /* carrier detect */
136#define DML_CTS 0000040 /* clear to send */
137#define DML_SR 0000020 /* secondary receive */
138#define DML_ST 0000010 /* secondary transmit */
139#define DML_RTS 0000004 /* request to send */
140#define DML_DTR 0000002 /* data terminal ready */
141#define DML_LE 0000001 /* line enable */