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
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
|
/*-
* Defines for Cronyx-Tau adapter, based on Hitachi HD64570 controller.
*
* Copyright (C) 1996 Cronyx Engineering.
* Author: Serge Vakulenko, <vak@cronyx.ru>
*
* This software is distributed with NO WARRANTIES, not even the implied
* warranties for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
* Authors grant any other persons or organisations permission to use
* or modify this software as long as this message is kept with the software,
* all derivative works or modified versions.
*
* Cronyx Id: ctaureg.h,v 1.1.2.1 2003/11/12 17:16:10 rik Exp $
* $FreeBSD$
*/
/*
* Chip register address, B is chip base port, R is chip register number.
*/
#define R(b,r) ((b) | 0x8000 | (((r)<<6 & 0x3c00) | ((r) & 0xf)))
/*
* Interface board registers, R is register number 0..7.
*/
#define GR(p,r) ((p) | 0x0010 | (r)<<1)
/*------------------------------------------------------------
* Basic Tau model.
*/
#define BSR0(p) (p) /* board status register 0, read only */
#define BSR1(p) ((p) | 0x2000) /* board status register 1, read only */
#define BSR2(p) ((p) | 0x4010) /* board status register 2, read only */
#define BSR3(p) ((p) | 0x4000) /* board status register 3, read only */
#define BCR0(p) (p) /* board command register 0, write only */
#define BCR1(p) ((p) | 0x2000) /* board command register 1, write only */
#define BCR2(p) ((p) | 0x4010) /* board command register 2, write only */
#define BCR3(p) ((p) | 0x4000) /* board command register 3, write only */
#define IACK(p) ((p) | 0x6000) /* interrupt acknowledge register, ro */
/*
* Board status register 0 bits.
*/
#define BSR0_INTR 0x01 /* interrupt pending flag */
#define BSR0_HDINT 0x02 /* HD64570 interrupt pending */
#define BSR0_GINT 0x04 /* interface board interrupt pending */
#define BSR0_RDYERR 0x10 /* HD64570 reg.i/o error - not ready */
#define BSR0_TE1 0x02 /* 0 - E1 daughter board installed */
#define BSR0_T703 0x04 /* 0 - G.703 daughter board installed */
/*
* Board status register 1 bits.
*/
#define BSR1_DSR0 0x01 /* DSR from channel 0 */
#define BSR1_DSR1 0x02 /* DSR from channel 1 */
#define BSR1_CH0_CABLE 0x0c /* channel 0 cable type mask */
#define BSR1_CH0_V35 0x0c /* channel 0 is V.35 */
#define BSR1_CH0_RS232 0x08 /* channel 0 is RS-232 or not connected */
#define BSR1_CH0_X21 0x04 /* channel 0 is X.21 */
#define BSR1_CH0_RS530 0x00 /* channel 0 is RS-530 */
#define BSR1_CH1_CABLE 0x30 /* channel 1 cable type mask */
#define BSR1_CH1_SHIFT 2
#define BSR1_CH1_V35 0x0c /* channel 1 is V.35 */
#define BSR1_CH1_RS232 0x08 /* channel 1 is RS-232 or not connected */
#define BSR1_CH1_X21 0x04 /* channel 1 is X.21 */
#define BSR1_CH1_RS530 0x00 /* channel 1 is RS-530 */
/*
* Board status register 2 bits.
*/
#define BSR2_GINT0 0x08 /* interface board chan0 interrupt pending */
#define BSR2_GINT1 0x40 /* interface board chan1 interrupt pending */
#define BSR2_LERR 0x80 /* firmware download error signal */
/*
* Board status register 3 bits.
*/
#define BSR3_IB 0x08 /* identification bit */
#define BSR3_NSTATUS 0x10 /* firmware download status */
#define BSR3_CONF_DN 0x20 /* firmware download done */
#define BSR3_IB_NEG 0x40 /* negated identification bit */
#define BSR3_ZERO 0x80 /* always zero */
/*
* Board control register 0 bits.
*/
#define BCR0_IRQ_DIS 0x00 /* no interrupt generated */
#define BCR0_IRQ_3 0x01 /* select IRQ number 3 */
#define BCR0_IRQ_5 0x02 /* select IRQ number 5 */
#define BCR0_IRQ_7 0x03 /* select IRQ number 7 */
#define BCR0_IRQ_10 0x04 /* select IRQ number 10 */
#define BCR0_IRQ_11 0x05 /* select IRQ number 11 */
#define BCR0_IRQ_12 0x06 /* select IRQ number 12 */
#define BCR0_IRQ_15 0x07 /* select IRQ number 15 */
#define BCR0_IRQ_MASK 0x07 /* IRQ mask */
#define BCR0_HDRUN 0x08 /* inverted board reset flag */
#define BCR0_DMA_DIS 0x00 /* no interrupt generated */
#define BCR0_DMA_5 0x10 /* select DMA channel 5 */
#define BCR0_DMA_6 0x20 /* select DMA channel 6 */
#define BCR0_DMA_7 0x30 /* select DMA channel 7 */
#define BCR0_TCK 0x80 /* firmware download TCK signal */
/*
* Board control register 1 bits.
*/
#define BCR1_DTR0 0x01 /* channel 0 DTR enable */
#define BCR1_DTR1 0x02 /* channel 1 DTR enable */
#define BCR1_TXCOUT0 0x10 /* channel 0 TXCOUT enable */
#define BCR1_TXCOUT1 0x20 /* channel 1 TXCOUT enable */
#define BCR1_TMS 0x08 /* firmware download TMS signal */
#define BCR1_TDI 0x80 /* firmware download TDI signal */
#define BCR1_NCONFIGI 0x08 /* firmware download start */
#define BCR1_DCLK 0x40 /* firmware download clock */
#define BCR1_1KDAT 0x80 /* firmware download data */
/*
* Board control register 2 bits -- see ctau.h.
*/
#define IMVR(b) R(b,HD_IMVR) /* interrupt modified vector reg. */
#define ITCR(b) R(b,HD_ITCR) /* interrupt control register */
#define ISR0(b) R(b,HD_ISR0) /* interrupt status register 0, ro */
#define ISR1(b) R(b,HD_ISR1) /* interrupt status register 1, ro */
#define ISR2(b) R(b,HD_ISR2) /* interrupt status register 2, ro */
#define IER0(b) R(b,HD_IER0) /* interrupt enable register 0 */
#define IER1(b) R(b,HD_IER1) /* interrupt enable register 1 */
#define IER2(b) R(b,HD_IER2) /* interrupt enable register 2 */
#define PCR(b) R(b,HD_PCR) /* DMA priority control register */
#define DMER(b) R(b,HD_DMER) /* DMA master enable register */
#define WCRL(b) R(b,HD_WCRL) /* wait control register L */
#define WCRM(b) R(b,HD_WCRM) /* wait control register M */
#define WCRH(b) R(b,HD_WCRH) /* wait control register H */
/*------------------------------------------------------------
* Tau/E1 model.
*/
#define E1CFG(p) GR(p,0) /* control register 0, write only */
#define E1SR(p) GR(p,0) /* status register, read only */
#define E1CS2(p) GR(p,1) /* chip select 2/IACK, read/write */
#define E1SYN(p) GR(p,3) /* sync mode enable, write only */
#define E1CS0(p) GR(p,4) /* chip select 0, write only */
#define E1CS1(p) GR(p,5) /* chip select 1, write only */
#define E1DAT(p) GR(p,7) /* selected chip read/write */
/*
* Tau/E1 CS2/IACK register bits.
*/
#define E1CS2_IACK 0x08 /* serial controller interrupt acknowledge */
#define E1CS2_SCC 0x04 /* serial controller select */
#define E1CS2_AB 0x02 /* serial controller A/B signal */
#define E1CS2_DC 0x01 /* serial controller D/C signal */
/*
* Tau/E1 control register bits.
*/
#define E1CFG_II 0x00 /* configuration II */
#define E1CFG_K 0x01 /* configuration K */
#define E1CFG_HI 0x02 /* configuration HI */
#define E1CFG_D 0x03 /* configuration D */
#define E1CFG_CLK0_INT 0x00 /* channel E0 transmit clock - internal */
#define E1CFG_CLK0_RCV 0x04 /* channel E0 transmit clock - RCLK0 */
#define E1CFG_CLK0_RCLK1 0x08 /* channel E0 transmit clock - RCLK1 */
#define E1CFG_CLK1_INT 0x00 /* channel E1 transmit clock - internal */
#define E1CFG_CLK1_RCLK0 0x10 /* channel E1 transmit clock - RCLK0 */
#define E1CFG_CLK1_RCV 0x20 /* channel E1 transmit clock - RCLK1 */
#define E1CFG_LED 0x40 /* LED control */
#define E1CFG_GRUN 0x80 /* global run flag */
/*
* Tau/E1 sync control register bits.
*/
#define E1SYN_ENS0 0x01 /* enable channel 0 sync mode */
#define E1SYN_ENS1 0x02 /* enable channel 1 sync mode */
/*
* Tau/E1 status register bits.
*/
#define E1SR_E0_IRQ0 0x01 /* E0 controller interrupt 0 */
#define E1SR_E0_IRQ1 0x02 /* E0 controller interrupt 1 */
#define E1SR_E1_IRQ0 0x04 /* E1 controller interrupt 0 */
#define E1SR_E1_IRQ1 0x08 /* E1 controller interrupt 1 */
#define E1SR_SCC_IRQ 0x10 /* serial controller interrupt */
#define E1SR_TP0 0x20 /* channel 0 is twisted pair */
#define E1SR_TP1 0x40 /* channel 1 is twisted pair */
#define E1SR_REV 0x80 /* Tau/E1 revision */
/*
* Tau/E1 serial memory register bits.
*/
/*------------------------------------------------------------
* Tau/G.703 model.
*/
#define GLCR0(p) GR(p,3) /* line control register 0, write only */
#define GMD0(p) GR(p,4) /* mode register 0, write only */
#define GMD1(p) GR(p,5) /* mode register 1, write only */
#define GMD2(p) GR(p,6) /* mode register 2, write only */
#define GLCR1(p) GR(p,7) /* line control register 1, write only */
#define GERR(p) GR(p,0) /* error register, read/write */
#define GLQ(p) GR(p,1) /* line quality register, read only */
#define GLDR(p) GR(p,2) /* loop detect request, read only */
/*
* Tau/G.703 mode register 0/1 bits.
*/
#define GMD_2048 0x00 /* 2048 kbit/sec */
#define GMD_1024 0x02 /* 1024 kbit/sec */
#define GMD_512 0x03 /* 512 kbit/sec */
#define GMD_256 0x04 /* 256 kbit/sec */
#define GMD_128 0x05 /* 128 kbit/sec */
#define GMD_64 0x06 /* 64 kbit/sec */
#define GMD_RSYNC 0x08 /* receive synchronization */
#define GMD_PCE_PCM2 0x10 /* precoder enable, mode PCM2 */
#define GMD_PCE_PCM2D 0x20 /* precoder enable, mode PCM2D */
#define GMD0_SDI 0x40 /* serial data input */
#define GMD0_SCLK 0x80 /* serial data clock */
#define GMD1_NCS0 0x40 /* chip select 0 inverted */
#define GMD1_NCS1 0x80 /* chip select 1 inverted */
/*
* Tau/G.703 mode register 2 bits.
*/
#define GMD2_SERIAL 0x01 /* channel 1 serial interface V.35/RS-232/etc */
#define GMD2_LED 0x02 /* LED control */
#define GMD2_RAW0 0x04 /* channel 0 raw mode (byte-sync) */
#define GMD2_RAW1 0x08 /* channel 1 raw mode (byte-sync) */
/*
* Tau/G.703 interrupt status register bits.
*/
#define GERR_BPV0 0x01 /* channel 0 bipolar violation */
#define GERR_ERR0 0x02 /* channel 0 test error */
#define GERR_BPV1 0x04 /* channel 1 bipolar violation */
#define GERR_ERR1 0x08 /* channel 1 test error */
/*
* Tau/G.703 line quality register bits.
*/
#define GLQ_MASK 0x03 /* channel 0 mask */
#define GLQ_SHIFT 2 /* channel 1 shift */
#define GLQ_DB0 0x00 /* channel 0 level 0.0 dB */
#define GLQ_DB95 0x01 /* channel 0 level -9.5 dB */
#define GLQ_DB195 0x02 /* channel 0 level -19.5 dB */
#define GLQ_DB285 0x03 /* channel 0 level -28.5 dB */
/*
* Tau/G.703 serial data output register bits.
*/
#define GLDR_C0 0x01 /* chip 0 serial data output */
#define GLDR_LREQ0 0x02 /* channel 0 remote loop request */
#define GLDR_C1 0x04 /* chip 1 serial data output */
#define GLDR_LREQ1 0x08 /* channel 1 remote loop request */
/*
* Tau/G.703 line control register 0/1 bits.
*/
#define GLCR_RENABLE 0x00 /* normal mode, auto remote loop enabled */
#define GLCR_RDISABLE 0x01 /* normal mode, auto remote loop disabled */
#define GLCR_RREFUSE 0x02 /* send the remote loop request sequence */
#define GLCR_RREQUEST 0x03 /* send the remote loop refuse sequence */
|