summaryrefslogtreecommitdiff
path: root/chips/dz_7085.h
blob: 66c8916b3bf798ffa14014c0840241442c65eb9a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
/* 
 * Mach Operating System
 * Copyright (c) 1991,1990,1989 Carnegie Mellon University
 * All Rights Reserved.
 * 
 * Permission to use, copy, modify and distribute this software and its
 * documentation is hereby granted, provided that both the copyright
 * notice and this permission notice appear in all copies of the
 * software, derivative works or modified versions, and any portions
 * thereof, and that both notices appear in supporting documentation.
 * 
 * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
 * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
 * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
 * 
 * Carnegie Mellon requests users of this software to return to
 * 
 *  Software Distribution Coordinator  or  Software.Distribution@CS.CMU.EDU
 *  School of Computer Science
 *  Carnegie Mellon University
 *  Pittsburgh PA 15213-3890
 * 
 * any improvements or extensions that they make and grant Carnegie Mellon
 * the rights to redistribute these changes.
 */
/*
 *	File: dz_7085.h
 * 	Author: Alessandro Forin, Carnegie Mellon University
 *	Date:	9/90
 *
 *	Defines for the DEC 7085 Serial Line Controller Chip
 */

#define	NDZ_LINE		4

/*
 * What's hanging off those 4 lines
 */

#define DZ_LINE_KEYBOARD	0
#define DZ_LINE_MOUSE		1
#define DZ_LINE_MODEM		2
#define DZ_LINE_PRINTER		3

/*
 * Register layout, ignoring padding
 */
typedef struct {
	volatile unsigned short	dz_csr;		/* Control and Status */
	volatile unsigned short	dz_rbuf;	/* Rcv buffer (RONLY) */
	volatile unsigned short	dz_tcr;		/* Xmt control (R/W)*/
	volatile unsigned short	dz_tbuf;	/* Xmt buffer (WONLY)*/
#	define 			dz_lpr dz_rbuf	/* Line parameters (WONLY)*/
#	define 			dz_msr dz_tbuf	/* Modem status (RONLY)*/
} dz_regmap_t;

/*
 * CSR bits
 */

#define DZ_CSR_MBZ		0x3c07	/* Must be zero */
#define DZ_CSR_MAINT		0x0008	/* rw: Maintenance mode */
#define DZ_CSR_CLR		0x0010	/* rw: Master clear (init) */
#define DZ_CSR_MSE		0x0020	/* rw: Master scan enable */
#define DZ_CSR_RIE		0x0040	/* rw: Rcv Interrupt Enable */
#define DZ_CSR_RDONE		0x0080	/* ro: Rcv done (silo avail) */
#define DZ_CSR_TLINE		0x0300	/* ro: Lineno ready for xmt */
#define DZ_CSR_TIE		0x4000	/* rw: Xmt Interrupt Enable */
#define DZ_CSR_TRDY		0x8000	/* ro: Xmt ready */

/*
 * Receiver buffer (top of silo).  Read-only.
 */

#define DZ_SILO_DEEP		64

#define DZ_RBUF_CHAR		0x00ff	/* Received character */
#define DZ_RBUF_RLINE		0x0300	/* Line it came from */
#define DZ_RBUF_XXXX		0x0c00	/* Reads as zero */
#define DZ_RBUF_PERR		0x1000	/* Parity error */
#define DZ_RBUF_FERR		0x2000	/* Framing error (break) */
#define DZ_RBUF_OERR		0x4000	/* Silo overrun */
#define DZ_RBUF_VALID		0x8000	/* Info is valid */

/*
 * Line parameters register.  Write-only.
 */

#define DZ_LPAR_LINE		0x0003	/* Bin encoded line no */
#define DZ_LPAR_MBZ		0xe004	/* Must be zero */
#define DZ_LPAR_CLEN		0x0018	/* Character length: */
#	define DZ_LPAR_5BITS	0x0000	/* 5 bits per char */
#	define DZ_LPAR_6BITS	0x0008	/* 6 bits per char */
#	define DZ_LPAR_7BITS	0x0010	/* 7 bits per char */
#	define DZ_LPAR_8BITS	0x0018	/* 8 bits per char */
#define DZ_LPAR_STOP		0x0020	/* stop bits: off->1, on->2 */
#define DZ_LPAR_PAR_ENB		0x0040	/* generate/detect parity */
#define DZ_LPAR_ODD_PAR		0x0080	/* generate/detect ODD parity */
#define DZ_LPAR_SPEED		0x0f00	/* Speed code: */
#	define DZ_LPAR_50	0x0000	/* 50 baud */
#	define DZ_LPAR_75	0x0100	/* 75 baud */
#	define DZ_LPAR_110	0x0200	/* 110 baud */
#	define DZ_LPAR_134_5	0x0300	/* 134.5 baud */
#	define DZ_LPAR_150	0x0400	/* 150 baud */
#	define DZ_LPAR_300	0x0500	/* 300 baud */
#	define DZ_LPAR_600	0x0600	/* 600 baud */
#	define DZ_LPAR_1200	0x0700	/* 1200 baud */
#	define DZ_LPAR_1800	0x0800	/* 1800 baud */
#	define DZ_LPAR_2000	0x0900	/* 2000 baud */
#	define DZ_LPAR_2400	0x0a00	/* 2400 baud */
#	define DZ_LPAR_3600	0x0b00	/* 3600 baud */
#	define DZ_LPAR_4800	0x0c00	/* 4800 baud */
#	define DZ_LPAR_7200	0x0d00	/* 7200 baud */
#	define DZ_LPAR_9600	0x0e00	/* 9600 baud */
#	define DZ_LPAR_MAX_SPEED	0x0f00	/* 19200/38400 baud */
#define DZ_LPAR_ENABLE		0x1000	/* Enable receiver */

/*
 * Xmt control register
 */

#define DZ_TCR_LNENB		0x000f	/* rw: Xmt line enable */
#define DZ_TCR_MBZ		0xf0f0	/* Must be zero */
#define DZ_TCR_DTR3		0x0100	/* rw: DTR on printer line */
#define DZ_TCR_RTS3		0x0200	/* rw: RTS on printer line */
#define DZ_TCR_DTR2		0x0400	/* rw: DTR on modem line */
#define DZ_TCR_RTS2		0x0800	/* rw: RTS on modem line */

/*
 * Modem status register. Read-only.
 */

#define DZ_MSR_CTS3		0x0001	/* Clear To Send,  printer line */
#define DZ_MSR_DSR3		0x0002	/* Data Set Ready, printer line */
#define DZ_MSR_CD3		0x0004	/* Carrier Detect, printer line */
#define DZ_MSR_RI3		0x0008	/* Ring Indicator, printer line */
#define DZ_MSR_XXXX		0xf0f0	/* Reads as zero */
#define DZ_MSR_CTS2		0x0100	/* Clear To Send,  modem line */
#define DZ_MSR_DSR2		0x0200	/* Data Set Ready, modem line */
#define DZ_MSR_CD2		0x0400	/* Carrier Detect, modem line */
#define DZ_MSR_RI2		0x0800	/* Ring Indicator, modem line */


/*
 * Xmt buffer
 */

#define DZ_TBUF_CHAR		0x00ff	/* Xmt character */
#define DZ_TBUF_BREAK_0		0x0100	/* set line 0 to space */
#define DZ_TBUF_BREAK_1		0x0200	/* set line 1 to space */
#define DZ_TBUF_BREAK_2		0x0400	/* set line 2 to space */
#define DZ_TBUF_BREAK_3		0x0800	/* set line 3 to space */
#define DZ_TBUF_MBZ		0xf000	/* Must be zero */