2 * Hitachi HD64570 serial communications adaptor registers.
4 * Copyright (C) 1996 Cronyx Engineering.
5 * Author: Serge Vakulenko, <vak@cronyx.ru>
7 * This software is distributed with NO WARRANTIES, not even the implied
8 * warranties for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
10 * Authors grant any other persons or organisations permission to use
11 * or modify this software as long as this message is kept with the software,
12 * all derivative works or modified versions.
14 * Cronyx Id: hdc64570.h,v 1.1.2.2 2003/11/12 17:31:21 rik Exp $
19 * Low power mode control register.
21 #define HD_LPR 0x00 /* low power register */
24 * Interrupt control registers.
26 #define HD_IVR 0x1a /* interrupt vector register */
27 #define HD_IMVR 0x1c /* interrupt modified vector register */
28 #define HD_ITCR 0x18 /* interrupt control register */
29 #define HD_ISR0 0x10 /* interrupt status register 0, ro */
30 #define HD_ISR1 0x11 /* interrupt status register 1, ro */
31 #define HD_ISR2 0x12 /* interrupt status register 2, ro */
32 #define HD_IER0 0x14 /* interrupt enable register 0 */
33 #define HD_IER1 0x15 /* interrupt enable register 1 */
34 #define HD_IER2 0x16 /* interrupt enable register 2 */
37 * Multiprotocol serial communication interface registers.
39 #define HD_MD0_0 0x2e /* mode register 0 chan 0 */
40 #define HD_MD0_1 0x4e /* mode register 0 chan 1 */
41 #define HD_MD1_0 0x2f /* mode register 1 chan 0 */
42 #define HD_MD1_1 0x4f /* mode register 1 chan 1 */
43 #define HD_MD2_0 0x30 /* mode register 2 chan 0 */
44 #define HD_MD2_1 0x50 /* mode register 2 chan 1 */
45 #define HD_CTL_0 0x31 /* control register chan 0 */
46 #define HD_CTL_1 0x51 /* control register chan 1 */
47 #define HD_RXS_0 0x36 /* RX clock source register chan 0 */
48 #define HD_RXS_1 0x56 /* RX clock source register chan 1 */
49 #define HD_TXS_0 0x37 /* TX clock source register chan 0 */
50 #define HD_TXS_1 0x57 /* TX clock source register chan 1 */
51 #define HD_TMC_0 0x35 /* time constant register chan 0 */
52 #define HD_TMC_1 0x55 /* time constant register chan 1 */
53 #define HD_CMD_0 0x2c /* command register chan 0, wo */
54 #define HD_CMD_1 0x4c /* command register chan 1, wo */
55 #define HD_ST0_0 0x22 /* status register 0 chan 0, ro */
56 #define HD_ST0_1 0x42 /* status register 0 chan 1, ro */
57 #define HD_ST1_0 0x23 /* status register 1 chan 0 */
58 #define HD_ST1_1 0x43 /* status register 1 chan 1 */
59 #define HD_ST2_0 0x24 /* status register 2 chan 0 */
60 #define HD_ST2_1 0x44 /* status register 2 chan 1 */
61 #define HD_ST3_0 0x25 /* status register 3 chan 0, ro */
62 #define HD_ST3_1 0x45 /* status register 3 chan 1, ro */
63 #define HD_FST_0 0x26 /* frame status register chan 0 */
64 #define HD_FST_1 0x46 /* frame status register chan 1 */
65 #define HD_IE0_0 0x28 /* interrupt enable register 0 chan 0 */
66 #define HD_IE0_1 0x48 /* interrupt enable register 0 chan 1 */
67 #define HD_IE1_0 0x29 /* interrupt enable register 1 chan 0 */
68 #define HD_IE1_1 0x49 /* interrupt enable register 1 chan 1 */
69 #define HD_IE2_0 0x2a /* interrupt enable register 2 chan 0 */
70 #define HD_IE2_1 0x4a /* interrupt enable register 2 chan 1 */
71 #define HD_FIE_0 0x2b /* frame interrupt enable register chan 0 */
72 #define HD_FIE_1 0x4b /* frame interrupt enable register chan 1 */
73 #define HD_SA0_0 0x32 /* sync/address register 0 chan 0 */
74 #define HD_SA0_1 0x52 /* sync/address register 0 chan 1 */
75 #define HD_SA1_0 0x33 /* sync/address register 1 chan 0 */
76 #define HD_SA1_1 0x53 /* sync/address register 1 chan 1 */
77 #define HD_IDL_0 0x34 /* idle pattern register chan 0 */
78 #define HD_IDL_1 0x54 /* idle pattern register chan 1 */
79 #define HD_TRB_0 0x20 /* TX/RX buffer register chan 0 */
80 #define HD_TRB_1 0x40 /* TX/RX buffer register chan 1 */
81 #define HD_RRC_0 0x3a /* RX ready control register chan 0 */
82 #define HD_RRC_1 0x5a /* RX ready control register chan 1 */
83 #define HD_TRC0_0 0x38 /* TX ready control register 0 chan 0 */
84 #define HD_TRC0_1 0x58 /* TX ready control register 0 chan 1 */
85 #define HD_TRC1_0 0x39 /* TX ready control register 1 chan 0 */
86 #define HD_TRC1_1 0x59 /* TX ready control register 1 chan 1 */
87 #define HD_CST_0 0x3c /* current status register chan 0 */
88 #define HD_CST_1 0x5c /* current status register chan 1 */
91 * DMA controller registers.
93 #define HD_PCR 0x08 /* DMA priority control register */
94 #define HD_DMER 0x09 /* DMA master enable register */
96 #define HD_DAR_0R 0x80 /* destination address chan 0rx */
97 #define HD_DAR_0T 0xa0 /* destination address chan 0tx */
98 #define HD_DAR_1R 0xc0 /* destination address chan 1rx */
99 #define HD_DAR_1T 0xe0 /* destination address chan 1tx */
100 #define HD_DARB_0R 0x82 /* destination address B chan 0rx */
101 #define HD_DARB_0T 0xa2 /* destination address B chan 0tx */
102 #define HD_DARB_1R 0xc2 /* destination address B chan 1rx */
103 #define HD_DARB_1T 0xe2 /* destination address B chan 1tx */
104 #define HD_SAR_0R 0x84 /* source address chan 0rx */
105 #define HD_SAR_0T 0xa4 /* source address chan 0tx */
106 #define HD_SAR_1R 0xc4 /* source address chan 1rx */
107 #define HD_SAR_1T 0xe4 /* source address chan 1tx */
108 #define HD_SARB_0R 0x86 /* source address B chan 0rx */
109 #define HD_SARB_0T 0xa6 /* source address B chan 0tx */
110 #define HD_SARB_1R 0xc6 /* source address B chan 1rx */
111 #define HD_SARB_1T 0xe6 /* source address B chan 1tx */
112 #define HD_CDA_0R 0x88 /* current descriptor address chan 0rx */
113 #define HD_CDA_0T 0xa8 /* current descriptor address chan 0tx */
114 #define HD_CDA_1R 0xc8 /* current descriptor address chan 1rx */
115 #define HD_CDA_1T 0xe8 /* current descriptor address chan 1tx */
116 #define HD_EDA_0R 0x8a /* error descriptor address chan 0rx */
117 #define HD_EDA_0T 0xaa /* error descriptor address chan 0tx */
118 #define HD_EDA_1R 0xca /* error descriptor address chan 1rx */
119 #define HD_EDA_1T 0xea /* error descriptor address chan 1tx */
120 #define HD_BFL_0R 0x8c /* receive buffer length chan 0rx */
121 #define HD_BFL_1R 0xcc /* receive buffer length chan 1rx */
122 #define HD_BCR_0R 0x8e /* byte count register chan 0rx */
123 #define HD_BCR_0T 0xae /* byte count register chan 0tx */
124 #define HD_BCR_1R 0xce /* byte count register chan 1rx */
125 #define HD_BCR_1T 0xee /* byte count register chan 1tx */
126 #define HD_DSR_0R 0x90 /* DMA status register chan 0rx */
127 #define HD_DSR_0T 0xb0 /* DMA status register chan 0tx */
128 #define HD_DSR_1R 0xd0 /* DMA status register chan 1rx */
129 #define HD_DSR_1T 0xf0 /* DMA status register chan 1tx */
130 #define HD_DMR_0R 0x91 /* DMA mode register chan 0rx */
131 #define HD_DMR_0T 0xb1 /* DMA mode register chan 0tx */
132 #define HD_DMR_1R 0xd1 /* DMA mode register chan 1rx */
133 #define HD_DMR_1T 0xf1 /* DMA mode register chan 1tx */
134 #define HD_FCT_0R 0x93 /* end-of-frame intr counter chan 0rx, ro */
135 #define HD_FCT_0T 0xb3 /* end-of-frame intr counter chan 0tx, ro */
136 #define HD_FCT_1R 0xd3 /* end-of-frame intr counter chan 1rx, ro */
137 #define HD_FCT_1T 0xf3 /* end-of-frame intr counter chan 1tx, ro */
138 #define HD_DIR_0R 0x94 /* DMA interrupt enable register chan 0rx */
139 #define HD_DIR_0T 0xb4 /* DMA interrupt enable register chan 0tx */
140 #define HD_DIR_1R 0xd4 /* DMA interrupt enable register chan 1rx */
141 #define HD_DIR_1T 0xf4 /* DMA interrupt enable register chan 1tx */
142 #define HD_DCR_0R 0x95 /* DMA command register chan 0rx, wo */
143 #define HD_DCR_0T 0xb5 /* DMA command register chan 0tx, wo */
144 #define HD_DCR_1R 0xd5 /* DMA command register chan 1rx, wo */
145 #define HD_DCR_1T 0xf5 /* DMA command register chan 1tx, wo */
150 #define HD_TCNT_0R 0x60 /* timer up counter chan 0rx */
151 #define HD_TCNT_0T 0x68 /* timer up counter chan 0tx */
152 #define HD_TCNT_1R 0x70 /* timer up counter chan 1rx */
153 #define HD_TCNT_1T 0x78 /* timer up counter chan 1tx */
154 #define HD_TCONR_0R 0x62 /* timer constant register chan 0rx, wo */
155 #define HD_TCONR_0T 0x6a /* timer constant register chan 0tx, wo */
156 #define HD_TCONR_1R 0x72 /* timer constant register chan 1rx, wo */
157 #define HD_TCONR_1T 0x7a /* timer constant register chan 1tx, wo */
158 #define HD_TCSR_0R 0x64 /* timer control/status register chan 0rx */
159 #define HD_TCSR_0T 0x6c /* timer control/status register chan 0tx */
160 #define HD_TCSR_1R 0x74 /* timer control/status register chan 1rx */
161 #define HD_TCSR_1T 0x7c /* timer control/status register chan 1tx */
162 #define HD_TEPR_0R 0x65 /* timer expand prescale register chan 0rx */
163 #define HD_TEPR_0T 0x6d /* timer expand prescale register chan 0tx */
164 #define HD_TEPR_1R 0x75 /* timer expand prescale register chan 1rx */
165 #define HD_TEPR_1T 0x7d /* timer expand prescale register chan 1tx */
168 * Wait controller registers.
170 #define HD_PABR0 0x02 /* physical address boundary register 0 */
171 #define HD_PABR1 0x03 /* physical address boundary register 1 */
172 #define HD_WCRL 0x04 /* wait control register L */
173 #define HD_WCRM 0x05 /* wait control register M */
174 #define HD_WCRH 0x06 /* wait control register H */
177 * Interrupt modified vector register (IMVR) bits.
179 #define IMVR_CHAN1 040 /* channel 1 vector bit */
180 #define IMVR_VECT_MASK 037 /* interrupt reason mask */
182 #define IMVR_RX_RDY 004 /* receive buffer ready */
183 #define IMVR_RX_INT 010 /* receive status */
184 #define IMVR_RX_DMERR 024 /* receive DMA error */
185 #define IMVR_RX_DMOK 026 /* receive DMA normal end */
186 #define IMVR_RX_TIMER 034 /* timer 0/2 count match */
188 #define IMVR_TX_RDY 006 /* transmit buffer ready */
189 #define IMVR_TX_INT 012 /* transmit status */
190 #define IMVR_TX_DMERR 030 /* transmit DMA error */
191 #define IMVR_TX_DMOK 032 /* transmit DMA normal end */
192 #define IMVR_TX_TIMER 036 /* timer 1/3 count match */
195 * Interrupt control register (ITCR) bits.
197 #define ITCR_PRIO_DMAC 0x80 /* DMA priority higher than MSCI */
198 #define ITCR_CYCLE_VOID 0x00 /* non-acknowledge cycle */
199 #define ITCR_CYCLE_SINGLE 0x20 /* single acknowledge cycle */
200 #define ITCR_CYCLE_DOUBLE 0x40 /* double acknowledge cycle */
201 #define ITCR_VECT_MOD 0x10 /* interrupt modified vector flag */
204 * Interrupt status register 0 (ISR0) bits.
206 #define ISR0_RX_RDY_0 0x01 /* channel 0 receiver ready */
207 #define ISR0_TX_RDY_0 0x02 /* channel 0 transmitter ready */
208 #define ISR0_RX_INT_0 0x04 /* channel 0 receiver status */
209 #define ISR0_TX_INT_0 0x08 /* channel 0 transmitter status */
210 #define ISR0_RX_RDY_1 0x10 /* channel 1 receiver ready */
211 #define ISR0_TX_RDY_1 0x20 /* channel 1 transmitter ready */
212 #define ISR0_RX_INT_1 0x40 /* channel 1 receiver status */
213 #define ISR0_TX_INT_1 0x80 /* channel 1 transmitter status */
216 * Interrupt status register 1 (ISR1) bits.
218 #define ISR1_RX_DMERR_0 0x01 /* channel 0 receive DMA error */
219 #define ISR1_RX_DMOK_0 0x02 /* channel 0 receive DMA finished */
220 #define ISR1_TX_DMERR_0 0x04 /* channel 0 transmit DMA error */
221 #define ISR1_TX_DMOK_0 0x08 /* channel 0 transmit DMA finished */
222 #define ISR1_RX_DMERR_1 0x10 /* channel 1 receive DMA error */
223 #define ISR1_RX_DMOK_1 0x20 /* channel 1 receive DMA finished */
224 #define ISR1_TX_DMERR_1 0x40 /* channel 1 transmit DMA error */
225 #define ISR1_TX_DMOK_1 0x80 /* channel 1 transmit DMA finished */
228 * Interrupt status register 2 (ISR2) bits.
230 #define ISR2_RX_TIMER_0 0x10 /* channel 0 receive timer */
231 #define ISR2_TX_TIMER_0 0x20 /* channel 0 transmit timer */
232 #define ISR2_RX_TIMER_1 0x40 /* channel 1 receive timer */
233 #define ISR2_TX_TIMER_1 0x80 /* channel 1 transmit timer */
236 * Interrupt enable register 0 (IER0) bits.
238 #define IER0_RX_RDYE_0 0x01 /* channel 0 receiver ready enable */
239 #define IER0_TX_RDYE_0 0x02 /* channel 0 transmitter ready enable */
240 #define IER0_RX_INTE_0 0x04 /* channel 0 receiver status enable */
241 #define IER0_TX_INTE_0 0x08 /* channel 0 transmitter status enable */
242 #define IER0_RX_RDYE_1 0x10 /* channel 1 receiver ready enable */
243 #define IER0_TX_RDYE_1 0x20 /* channel 1 transmitter ready enable */
244 #define IER0_RX_INTE_1 0x40 /* channel 1 receiver status enable */
245 #define IER0_TX_INTE_1 0x80 /* channel 1 transmitter status enable */
246 #define IER0_MASK_0 0x0f /* channel 0 bits */
247 #define IER0_MASK_1 0xf0 /* channel 1 bits */
250 * Interrupt enable register 1 (IER1) bits.
252 #define IER1_RX_DMERE_0 0x01 /* channel 0 receive DMA error enable */
253 #define IER1_RX_DME_0 0x02 /* channel 0 receive DMA finished enable */
254 #define IER1_TX_DMERE_0 0x04 /* channel 0 transmit DMA error enable */
255 #define IER1_TX_DME_0 0x08 /* channel 0 transmit DMA finished enable */
256 #define IER1_RX_DMERE_1 0x10 /* channel 1 receive DMA error enable */
257 #define IER1_RX_DME_1 0x20 /* channel 1 receive DMA finished enable */
258 #define IER1_TX_DMERE_1 0x40 /* channel 1 transmit DMA error enable */
259 #define IER1_TX_DME_1 0x80 /* channel 1 transmit DMA finished enable */
260 #define IER1_MASK_0 0x0f /* channel 0 bits */
261 #define IER1_MASK_1 0xf0 /* channel 1 bits */
264 * Interrupt enable register 2 (IER2) bits.
266 #define IER2_RX_TME_0 0x10 /* channel 0 receive timer enable */
267 #define IER2_TX_TME_0 0x20 /* channel 0 transmit timer enable */
268 #define IER2_RX_TME_1 0x40 /* channel 1 receive timer enable */
269 #define IER2_TX_TME_1 0x80 /* channel 1 transmit timer enable */
270 #define IER2_MASK_0 0x30 /* channel 0 bits */
271 #define IER2_MASK_1 0xc0 /* channel 1 bits */
274 * Control register (CTL) bits.
276 #define CTL_RTS_INV 0x01 /* RTS control bit (inverted) */
277 #define CTL_SYNCLD 0x04 /* load SYN characters */
278 #define CTL_BRK 0x08 /* async: send break */
279 #define CTL_IDLE_MARK 0 /* HDLC: when idle, transmit mark */
280 #define CTL_IDLE_PTRN 0x10 /* HDLC: when idle, transmit an idle pattern */
281 #define CTL_UDRN_ABORT 0 /* HDLC: on underrun - abort */
282 #define CTL_UDRN_FCS 0x20 /* HDLC: on underrun - send FCS/flag */
285 * Command register (CMD) values.
287 #define CMD_TX_RESET 001 /* reset: disable, clear buffer/status/BRK */
288 #define CMD_TX_ENABLE 002 /* transmitter enable */
289 #define CMD_TX_DISABLE 003 /* transmitter disable */
290 #define CMD_TX_CRC_INIT 004 /* initialize CRC calculator */
291 #define CMD_TX_EOM_CHAR 006 /* set end-of-message char */
292 #define CMD_TX_ABORT 007 /* abort transmission (HDLC mode) */
293 #define CMD_TX_MPON 010 /* transmit char with MP bit on (async) */
294 #define CMD_TX_CLEAR 011 /* clear the transmit buffer */
296 #define CMD_RX_RESET 021 /* reset: disable, clear buffer/status */
297 #define CMD_RX_ENABLE 022 /* receiver enable */
298 #define CMD_RX_DISABLE 023 /* receiver disable */
299 #define CMD_RX_CRC_INIT 024 /* initialize CRC calculator */
300 #define CMD_RX_REJECT 025 /* reject current message (sync mode) */
301 #define CMD_RX_SRCH_MP 026 /* skip all until the char witn MP bit on */
303 #define CMD_NOOP 000 /* continue current operation */
304 #define CMD_CHAN_RESET 041 /* init registers, disable/clear RX/TX */
305 #define CMD_SEARCH_MODE 061 /* set the ADPLL to search mode */
308 * Status register 0 (ST0) bits.
310 #define ST0_RX_RDY 0x01 /* receiver ready */
311 #define ST0_TX_RDY 0x02 /* transmitter ready */
312 #define ST0_RX_INT 0x40 /* receiver status interrupt */
313 #define ST0_TX_INT 0x80 /* transmitter status interrupt */
316 * Status register 1 (ST1) bits.
318 #define ST1_CDCD 0x04 /* carrier changed */
319 #define ST1_CCTS 0x08 /* CTS changed */
320 #define ST1_IDL 0x40 /* transmitter idle, ro */
322 #define ST1_ASYNC_BRKE 0x01 /* break end detected */
323 #define ST1_ASYNC_BRKD 0x02 /* break start detected */
324 #define ST1_ASYNC_BITS "\20\1brke\2brkd\3cdcd\4ccts\7idl"
326 #define ST1_HDLC_IDLD 0x01 /* idle sequence start detected */
327 #define ST1_HDLC_ABTD 0x02 /* abort sequence start detected */
328 #define ST1_HDLC_FLGD 0x10 /* flag detected */
329 #define ST1_HDLC_UDRN 0x80 /* underrun detected */
330 #define ST1_HDLC_BITS "\20\1idld\2abtd\3cdcd\4ccts\5flgd\7idl\10udrn"
333 * Status register 2 (ST2) bits.
335 #define ST2_OVRN 0x08 /* overrun error detected */
337 #define ST2_ASYNC_FRME 0x10 /* framing error detected */
338 #define ST2_ASYNC_PE 0x20 /* parity error detected */
339 #define ST2_ASYNC_PMP 0x40 /* parity/MP bit = 1 */
340 #define ST2_ASYNC_BITS "\20\4ovrn\5frme\6pe\7pmp"
342 #define ST2_HDLC_CRCE 0x04 /* CRC error detected */
343 #define ST2_HDLC_RBIT 0x10 /* residual bit frame detected */
344 #define ST2_HDLC_ABT 0x20 /* frame with abort end detected */
345 #define ST2_HDLC_SHRT 0x40 /* short frame detected */
346 #define ST2_HDLC_EOM 0x80 /* receive frame end detected */
347 #define ST2_HDLC_BITS "\20\3crce\4ovrn\5rbit\6abt\7shrt\10eom"
350 * Status register 3 (ST3) bits.
352 #define ST3_RX_ENABLED 0x01 /* receiver is enabled */
353 #define ST3_TX_ENABLED 0x02 /* transmitter is enabled */
354 #define ST3_DCD_INV 0x04 /* DCD input line inverted */
355 #define ST3_CTS_INV 0x08 /* CTS input line inverted */
356 #define ST3_ASYNC_BITS "\20\1rx\2tx\3nodcd\4nocts"
358 #define ST3_HDLC_SEARCH 0x10 /* ADPLL search mode */
359 #define ST3_HDLC_TX 0x20 /* channel is transmitting data */
360 #define ST3_HDLC_BITS "\20\1rx\2tx\3nodcd\4nocts\5search\6txact"
363 * Frame status register (FST) bits, HDLC mode only.
365 #define FST_CRCE 0x04 /* CRC error detected */
366 #define FST_OVRN 0x08 /* overrun error detected */
367 #define FST_RBIT 0x10 /* residual bit frame detected */
368 #define FST_ABT 0x20 /* frame with abort end detected */
369 #define FST_SHRT 0x40 /* short frame detected */
370 #define FST_EOM 0x80 /* frame end flag */
372 #define FST_EOT 0x01 /* end of transfer, transmit only */
375 * Interrupt enable register 0 (IE0) bits.
377 #define IE0_RX_RDYE 0x01 /* receiver ready interrupt enable */
378 #define IE0_TX_RDYE 0x02 /* transmitter ready interrupt enable */
379 #define IE0_RX_INTE 0x40 /* receiver status interrupt enable */
380 #define IE0_TX_INTE 0x80 /* transmitter status interrupt enable */
383 * Interrupt enable register 1 (IE1) bits.
385 #define IE1_CDCDE 0x04 /* carrier changed */
386 #define IE1_CCTSE 0x08 /* CTS changed */
387 #define IE1_IDLE 0x40 /* transmitter idle, ro */
389 #define IE1_ASYNC_BRKEE 0x01 /* break end detected */
390 #define IE1_ASYNC_BRKDE 0x02 /* break start detected */
392 #define IE1_HDLC_IDLDE 0x01 /* idle sequence start detected */
393 #define IE1_HDLC_ABTDE 0x02 /* abort sequence start detected */
394 #define IE1_HDLC_FLGDE 0x10 /* flag detected */
395 #define IE1_HDLC_UDRNE 0x80 /* underrun detected */
398 * Interrupt enable register 2 (IE2) bits.
400 #define IE2_OVRNE 0x08 /* overrun error detected */
402 #define IE2_ASYNC_FRMEE 0x10 /* framing error detected */
403 #define IE2_ASYNC_PEE 0x20 /* parity error detected */
404 #define IE2_ASYNC_PMPE 0x40 /* parity/MP bit = 1 */
406 #define IE2_HDLC_CRCEE 0x04 /* CRC error detected */
407 #define IE2_HDLC_RBITE 0x10 /* residual bit frame detected */
408 #define IE2_HDLC_ABTE 0x20 /* frame with abort end detected */
409 #define IE2_HDLC_SHRTE 0x40 /* short frame detected */
410 #define IE2_HDLC_EOME 0x80 /* receive frame end detected */
413 * Frame interrupt enable register (FIE) bits, HDLC mode only.
415 #define FIE_EOMFE 0x80 /* receive frame end detected */
418 * Current status register (CST0,CST1) bits.
419 * For other bits, see ST2.
421 #define CST0_CDE 0x0001 /* data present on top of FIFO */
422 #define CST1_CDE 0x0100 /* data present on second stage of FIFO */
425 * Receive/transmit clock source register (RXS/TXS) bits.
427 #define CLK_MASK 0x70 /* RXC/TXC clock input mask */
428 #define CLK_LINE 0x00 /* RXC/TXC line input */
429 #define CLK_INT 0x40 /* internal baud rate generator */
431 #define CLK_RXS_LINE_NS 0x20 /* RXC line with noise suppression */
432 #define CLK_RXS_DPLL_INT 0x60 /* ADPLL based on internal BRG */
433 #define CLK_RXS_DPLL_LINE 0x70 /* ADPLL based on RXC line */
435 #define CLK_TXS_RECV 0x60 /* receive clock */
438 * DMA status register (DSR) bits.
440 #define DSR_DMA_DISABLE 0x00 /* disable DMA channel */
441 #define DSR_DMA_ENABLE 0x02 /* enable DMA channel */
442 #define DSR_DMA_CONTINUE 0x01 /* do not enable/disable DMA channel */
443 #define DSR_CHAIN_COF 0x10 /* counter overflow */
444 #define DSR_CHAIN_BOF 0x20 /* buffer overflow/underflow */
445 #define DSR_CHAIN_EOM 0x40 /* frame transfer completed */
446 #define DSR_EOT 0x80 /* transfer completed */
447 #define DSR_BITS "\20\1cont\2enab\5cof\6bof\7eom\10eot"
450 * DMA mode register (DMR) bits.
452 #define DMR_CHAIN_CNTE 0x02 /* enable frame interrupt counter (FCT) */
453 #define DMR_CHAIN_NF 0x04 /* multi-frame block chain */
454 #define DMR_TMOD 0x10 /* chained-block transfer mode */
457 * DMA interrupt enable register (DIR) bits.
459 #define DIR_CHAIN_COFE 0x10 /* counter overflow */
460 #define DIR_CHAIN_BOFE 0x20 /* buffer overflow/underflow */
461 #define DIR_CHAIN_EOME 0x40 /* frame transfer completed */
462 #define DIR_EOTE 0x80 /* transfer completed */
465 * DMA command register (DCR) values.
467 #define DCR_ABORT 1 /* software abort: initialize DMA channel */
468 #define DCR_CLEAR 2 /* clear FCT and EOM bit of DSR */
471 * DMA master enable register (DME) bits.
473 #define DME_ENABLE 0x80 /* enable DMA master operation */
476 * Timer control/status register (TCSR) bits.
478 #define TCSR_ENABLE 0x10 /* timer starts incrementing */
479 #define TCSR_INTR 0x40 /* timer interrupt enable */
480 #define TCSR_MATCH 0x80 /* TCNT and TCONR are equal */
483 * Timer expand prescale register (TEPR) values.
485 #define TEPR_1 0 /* sysclk/8 */
486 #define TEPR_2 1 /* sysclk/8/2 */
487 #define TEPR_4 2 /* sysclk/8/4 */
488 #define TEPR_8 3 /* sysclk/8/8 */
489 #define TEPR_16 4 /* sysclk/8/16 */
490 #define TEPR_32 5 /* sysclk/8/32 */
491 #define TEPR_64 6 /* sysclk/8/64 */
492 #define TEPR_128 7 /* sysclk/8/128 */