clmpccreg.h revision 1.2 1 1.2 scw /* $NetBSD: clmpccreg.h,v 1.2 1999/08/01 09:35:05 scw Exp $ */
2 1.1 scw
3 1.1 scw /*-
4 1.1 scw * Copyright (c) 1999 The NetBSD Foundation, Inc.
5 1.1 scw * All rights reserved.
6 1.1 scw *
7 1.1 scw * This code is derived from software contributed to The NetBSD Foundation
8 1.1 scw * by Steve C. Woodford.
9 1.1 scw *
10 1.1 scw * Redistribution and use in source and binary forms, with or without
11 1.1 scw * modification, are permitted provided that the following conditions
12 1.1 scw * are met:
13 1.1 scw * 1. Redistributions of source code must retain the above copyright
14 1.1 scw * notice, this list of conditions and the following disclaimer.
15 1.1 scw * 2. Redistributions in binary form must reproduce the above copyright
16 1.1 scw * notice, this list of conditions and the following disclaimer in the
17 1.1 scw * documentation and/or other materials provided with the distribution.
18 1.1 scw * 3. All advertising materials mentioning features or use of this software
19 1.1 scw * must display the following acknowledgement:
20 1.1 scw * This product includes software developed by the NetBSD
21 1.1 scw * Foundation, Inc. and its contributors.
22 1.1 scw * 4. Neither the name of The NetBSD Foundation nor the names of its
23 1.1 scw * contributors may be used to endorse or promote products derived
24 1.1 scw * from this software without specific prior written permission.
25 1.1 scw *
26 1.1 scw * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
27 1.1 scw * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
28 1.1 scw * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
29 1.1 scw * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
30 1.1 scw * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
31 1.1 scw * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
32 1.1 scw * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
33 1.1 scw * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
34 1.1 scw * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
35 1.1 scw * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
36 1.1 scw * POSSIBILITY OF SUCH DAMAGE.
37 1.1 scw */
38 1.1 scw
39 1.1 scw /*
40 1.1 scw * Register definitions for the Cirrus Logic CD2400/CD2401
41 1.1 scw * Four Channel Multi-Protocol Communications Controller.
42 1.1 scw *
43 1.1 scw * The values defined here are based on the August 1993 data book.
44 1.1 scw * At the present time, this driver supports non-DMA async. mode only.
45 1.1 scw */
46 1.1 scw
47 1.1 scw #ifndef __clmpccreg_h
48 1.1 scw #define __clmpccreg_h
49 1.1 scw
50 1.1 scw /*
51 1.1 scw * Register offsets depend on the level on the chip's BYTESWAP pin.
52 1.1 scw * When BYTESWAP is low, Motorola byte alignment is in effect.
53 1.1 scw * Otherwise, Intel byte alignment is in effect.
54 1.1 scw * The values given here assume BYTESWAP is low. See 'sc_byteswap'
55 1.1 scw * <dev/ic/clmpccvar.h>.
56 1.1 scw */
57 1.2 scw
58 1.2 scw /* Number of bytes of FIFO (Rx & Tx) */
59 1.2 scw #define CLMPCC_FIFO_DEPTH 16
60 1.1 scw
61 1.1 scw /* Global Registers */
62 1.1 scw #define CLMPCC_REG_GFRCR 0x81 /* Global Firmware Revision Code Register */
63 1.1 scw #define CLMPCC_REG_CAR 0xee /* Channel Access Register */
64 1.1 scw
65 1.1 scw /* Option Registers */
66 1.1 scw #define CLMPCC_REG_CMR 0x1b /* Channel Mode Register */
67 1.1 scw #define CLMPCC_REG_COR1 0x10 /* Channel Option Register #1 */
68 1.1 scw #define CLMPCC_REG_COR2 0x17 /* Channel Option Register #2 */
69 1.1 scw #define CLMPCC_REG_COR3 0x16 /* Channel Option Register #3 */
70 1.1 scw #define CLMPCC_REG_COR4 0x15 /* Channel Option Register #4 */
71 1.1 scw #define CLMPCC_REG_COR5 0x14 /* Channel Option Register #5 */
72 1.1 scw #define CLMPCC_REG_COR6 0x18 /* Channel Option Register #6 */
73 1.1 scw #define CLMPCC_REG_COR7 0x07 /* Channel Option Register #7 */
74 1.1 scw #define CLMPCC_REG_SCHR1 0x1f /* Special Character Register #1 */
75 1.1 scw #define CLMPCC_REG_SCHR2 0x1e /* Special Character Register #2 */
76 1.1 scw #define CLMPCC_REG_SCHR3 0x1d /* Special Character Register #3 */
77 1.1 scw #define CLMPCC_REG_SCHR4 0x1c /* Special Character Register #4 */
78 1.1 scw #define CLMPCC_REG_SCRl 0x23 /* Special Character Range (low) */
79 1.1 scw #define CLMPCC_REG_SCRh 0x22 /* Special Character Range (high) */
80 1.1 scw #define CLMPCC_REG_LNXT 0x2e /* LNext Character */
81 1.1 scw #define CLMPCC_REG_RFAR1 0x1f /* Receive Frame Address Register #1 */
82 1.1 scw #define CLMPCC_REG_RFAR2 0x1e /* Receive Frame Address Register #2 */
83 1.1 scw #define CLMPCC_REG_RFAR3 0x1d /* Receive Frame Address Register #3 */
84 1.1 scw #define CLMPCC_REG_RFAR4 0x1c /* Receive Frame Address Register #4 */
85 1.1 scw #define CLMPCC_REG_CPSR 0xd6 /* CRC Polynomial Select Register */
86 1.1 scw
87 1.1 scw /* Bit Rate and Clock Option Registers */
88 1.1 scw #define CLMPCC_REG_RBPR 0xcb /* Receive Baud Rate Period Register */
89 1.1 scw #define CLMPCC_REG_RCOR 0xc8 /* Receive Clock Options Register */
90 1.1 scw #define CLMPCC_REG_TBPR 0xc3 /* Transmit Baud Rate Period Register */
91 1.1 scw #define CLMPCC_REG_TCOR 0xc0 /* Transmit Clock Options Register */
92 1.1 scw
93 1.1 scw /* Channel Command and Status Registers */
94 1.1 scw #define CLMPCC_REG_CCR 0x13 /* Channel Command Register */
95 1.1 scw #define CLMPCC_REG_STCR 0x12 /* Special Transmit Command Register */
96 1.1 scw #define CLMPCC_REG_CSR 0x1a /* Channel Status Register */
97 1.1 scw #define CLMPCC_REG_MSVR 0xde /* Modem Signal Value Register */
98 1.1 scw #define CLMPCC_REG_MSVR_RTS 0xde /* Modem Signal Value Register (RTS) */
99 1.1 scw #define CLMPCC_REG_MSVR_DTR 0xdf /* Modem Signal Value Register (DTR) */
100 1.1 scw
101 1.1 scw /* Interrupt Registers */
102 1.1 scw #define CLMPCC_REG_LIVR 0x09 /* Local Interrupt Vector Register */
103 1.1 scw #define CLMPCC_REG_IER 0x11 /* Interrupt Enable Register */
104 1.1 scw #define CLMPCC_REG_LICR 0x26 /* Local Interrupting Channel Register */
105 1.1 scw #define CLMPCC_REG_STK 0xe2 /* Stack Register */
106 1.1 scw
107 1.1 scw /* Receive Interrupt Registers */
108 1.1 scw #define CLMPCC_REG_RPILR 0xe1 /* Receive Priority Interrupt Level Reg */
109 1.1 scw #define CLMPCC_REG_RIR 0xed /* Receive Interrupt Register */
110 1.1 scw #define CLMPCC_REG_RISR 0x88 /* Receive Interrupt Status Reg (16-bits) */
111 1.1 scw #define CLMPCC_REG_RISRl 0x89 /* Receive Interrupt Status Reg (low) */
112 1.1 scw #define CLMPCC_REG_RISRh 0x88 /* Receive Interrupt Status Reg (high) */
113 1.1 scw #define CLMPCC_REG_RFOC 0x30 /* Receive FIFO Output Count */
114 1.1 scw #define CLMPCC_REG_RDR 0xf8 /* Receive Data Register */
115 1.1 scw #define CLMPCC_REG_REOIR 0x84 /* Receive End of Interrupt Register */
116 1.1 scw
117 1.1 scw /* Transmit Interrupt Registers */
118 1.1 scw #define CLMPCC_REG_TPILR 0xe0 /* Transmit Priority Interrupt Level Reg */
119 1.1 scw #define CLMPCC_REG_TIR 0xec /* Transmit Interrupt Register */
120 1.1 scw #define CLMPCC_REG_TISR 0x8a /* Transmit Interrupt Status Register */
121 1.1 scw #define CLMPCC_REG_TFTC 0x80 /* Transmit FIFO Transfer Count */
122 1.1 scw #define CLMPCC_REG_TDR 0xf8 /* Transmit Data Register */
123 1.1 scw #define CLMPCC_REG_TEOIR 0x85 /* Transmit End of Interrupt Register */
124 1.1 scw
125 1.1 scw /* Modem Interrupt Registers */
126 1.1 scw #define CLMPCC_REG_MPILR 0xe3 /* Modem Priority Interrupt Level Reg */
127 1.1 scw #define CLMPCC_REG_MIR 0xef /* Modem Interrupt Register */
128 1.1 scw #define CLMPCC_REG_MISR 0x8b /* Modem (/Timer) Interrupt Status Reg */
129 1.1 scw #define CLMPCC_REG_MEOIR 0x86 /* Modem End of Interrupt Register */
130 1.1 scw
131 1.1 scw /* DMA Registers */
132 1.1 scw #define CLMPCC_REG_DMR 0xf6 /* DMA Mode Register (write only) */
133 1.1 scw #define CLMPCC_REG_BERCNT 0x8e /* Bus Error Retry Count */
134 1.1 scw #define CLMPCC_REG_DMABSTS 0x19 /* DMA Buffer Status */
135 1.1 scw
136 1.1 scw /* DMA Receive Registers */
137 1.1 scw #define CLMPCC_REG_ARBADRL 0x42 /* A Receive Buffer Address Lower (word) */
138 1.1 scw #define CLMPCC_REG_ARBADRU 0x40 /* A Receive Buffer Address Upper (word) */
139 1.1 scw #define CLMPCC_REG_BRBADRL 0x46 /* B Receive Buffer Address Lower (word) */
140 1.1 scw #define CLMPCC_REG_BRBADRU 0x44 /* B Receive Buffer Address Upper (16bit) */
141 1.1 scw #define CLMPCC_REG_ARBCNT 0x4a /* A Receive Buffer Byte Count (word) */
142 1.1 scw #define CLMPCC_REG_BRBCNT 0x48 /* B Receive Buffer Byte Count (word) */
143 1.1 scw #define CLMPCC_REG_ARBSTS 0x4f /* A Receive Buffer Status */
144 1.1 scw #define CLMPCC_REG_BRBSTS 0x4e /* B Receive Buffer Status */
145 1.1 scw #define CLMPCC_REG_RCBADRL 0x3e /* Receive Current Buff Addr Lower (word) */
146 1.1 scw #define CLMPCC_REG_RCBADRU 0x3c /* Receive Current Buff Addr Upper (word) */
147 1.1 scw
148 1.1 scw /* DMA Transmit Registers */
149 1.1 scw #define CLMPCC_REG_ATBADRL 0x52 /* A Transmit Buffer Address Lower (word) */
150 1.1 scw #define CLMPCC_REG_ATBADRU 0x50 /* A Transmit Buffer Address Upper (word) */
151 1.1 scw #define CLMPCC_REG_BTBADRL 0x56 /* B Transmit Buffer Address Lower (word) */
152 1.1 scw #define CLMPCC_REG_BTBADRU 0x54 /* B Transmit Buffer Address Upper (word) */
153 1.1 scw #define CLMPCC_REG_ATBCNT 0x5a /* A Transmit Buffer Byte Count (word) */
154 1.1 scw #define CLMPCC_REG_BTBCNT 0x58 /* B Transmit Buffer Byte Count (word) */
155 1.1 scw #define CLMPCC_REG_ATBSTS 0x5f /* A Transmit Buffer Status */
156 1.1 scw #define CLMPCC_REG_BTBSTS 0x5e /* B Transmit Buffer Status */
157 1.1 scw #define CLMPCC_REG_TCBADRL 0x3a /* Transmit Current Buf Addr Lower (word) */
158 1.1 scw #define CLMPCC_REG_TCBADRU 0x38 /* Transmit Current Buf Addr Upper (word) */
159 1.1 scw
160 1.1 scw /* Timer Registers */
161 1.1 scw #define CLMPCC_REG_TPR 0xda /* Timer Period Register */
162 1.1 scw #define CLMPCC_REG_RTPR 0x24 /* Receive Timeout Period Register (word) */
163 1.1 scw #define CLMPCC_REG_RTPRl 0x25 /* Receive Timeout Period Register (low) */
164 1.1 scw #define CLMPCC_REG_RTPRh 0x24 /* Receive Timeout Period Register (high) */
165 1.1 scw #define CLMPCC_REG_GT1 0x2a /* General Timer 1 (word) */
166 1.1 scw #define CLMPCC_REG_GT1l 0x2b /* General Timer 1 (low) */
167 1.1 scw #define CLMPCC_REG_GT1h 0x2a /* General Timer 1 (high) */
168 1.1 scw #define CLMPCC_REG_GT2 0x29 /* General Timer 2 */
169 1.1 scw #define CLMPCC_REG_TTR 0x29 /* Transmit Timer Register */
170 1.1 scw
171 1.1 scw
172 1.1 scw /* Channel Access Register */
173 1.1 scw #define CLMPCC_CAR_MASK 0x03 /* Channel bit mask */
174 1.1 scw
175 1.1 scw /* Channel Mode Register */
176 1.1 scw #define CLMPCC_CMR_RX_INT (0 << 7) /* Rx using interrupts */
177 1.1 scw #define CLMPCC_CMR_RX_DMA (1 << 7) /* Rx using DMA */
178 1.1 scw #define CLMPCC_CMR_TX_INT (0 << 6) /* Tx using interrupts */
179 1.1 scw #define CLMPCC_CMR_TX_DMA (1 << 6) /* Tx using DMA */
180 1.1 scw #define CLMPCC_CMR_HDLC 0x00 /* Select HDLC mode */
181 1.1 scw #define CLMPCC_CMR_BISYNC 0x01 /* Select Bisync mode */
182 1.1 scw #define CLMPCC_CMR_ASYNC 0x02 /* Select async mode */
183 1.1 scw #define CLMPCC_CMR_X21 0x03 /* Select X.21 mode */
184 1.1 scw
185 1.1 scw /* Channel Option Register #1 (Async options) */
186 1.1 scw #define CLMPCC_COR1_EVEN_PARITY (0 << 7) /* Even parity */
187 1.1 scw #define CLMPCC_COR1_ODD_PARITY (1 << 7) /* Odd parity */
188 1.1 scw #define CLMPCC_COR1_NO_PARITY (0 << 5) /* No parity */
189 1.1 scw #define CLMPCC_COR1_FORCE_PAR (1 << 5) /* Force parity */
190 1.1 scw #define CLMPCC_COR1_NORM_PARITY (2 << 5) /* Normal parity */
191 1.1 scw #define CLMPCC_COR1_CHECK_PAR (0 << 4) /* Check parity */
192 1.1 scw #define CLMPCC_COR1_IGNORE_PAR (1 << 4) /* Ignore parity */
193 1.1 scw #define CLMPCC_COR1_CHAR_5BITS 0x04 /* 5 bits per character */
194 1.1 scw #define CLMPCC_COR1_CHAR_6BITS 0x05 /* 6 bits per character */
195 1.1 scw #define CLMPCC_COR1_CHAR_7BITS 0x06 /* 7 bits per character */
196 1.1 scw #define CLMPCC_COR1_CHAR_8BITS 0x07 /* 8 bits per character */
197 1.1 scw
198 1.1 scw /* Channel Option Register #2 (Async options) */
199 1.1 scw #define CLMPCC_COR2_IXM (1 << 7) /* Implied XON mode */
200 1.1 scw #define CLMPCC_COR2_TxIBE (1 << 6) /* Transmit In-Band Flow Control */
201 1.1 scw #define CLMPCC_COR2_ETC (1 << 5) /* Embedded Tx Command Enable */
202 1.1 scw #define CLMPCC_COR2_RLM (1 << 3) /* Remote Loopback Mode */
203 1.1 scw #define CLMPCC_COR2_RtsAO (1 << 2) /* RTS Automatic Output Enable */
204 1.1 scw #define CLMPCC_COR2_CtsAE (1 << 1) /* CTS Automatic Enable */
205 1.1 scw #define CLMPCC_COR2_DsrAE (1 << 1) /* DSR Automatic Enable */
206 1.1 scw
207 1.1 scw /* Channel Option Register #3 (Async options) */
208 1.1 scw #define CLMPCC_COR3_ESCDE (1 << 7) /* Ext Special Char Detect Enab */
209 1.1 scw #define CLMPCC_COR3_RngDE (1 << 6) /* Range Detect Enable */
210 1.1 scw #define CLMPCC_COR3_FCT (1 << 5) /* Flow Ctrl Transparency Mode */
211 1.1 scw #define CLMPCC_COR3_SCDE (1 << 4) /* Special Character Detection */
212 1.1 scw #define CLMPCC_COR3_SpIstp (1 << 3) /* Special Character I Strip */
213 1.1 scw #define CLMPCC_COR3_STOP_1 0x02 /* 1 Stop Bit */
214 1.1 scw #define CLMPCC_COR3_STOP_1_5 0x03 /* 1.5 Stop Bits */
215 1.1 scw #define CLMPCC_COR3_STOP_2 0x04 /* 2 Stop Bits */
216 1.1 scw
217 1.1 scw /* Channel Option Register #4 */
218 1.1 scw #define CLMPCC_COR4_DSRzd (1 << 7) /* Detect 1->0 transition on DSR */
219 1.1 scw #define CLMPCC_COR4_CDzd (1 << 6) /* Detect 1->0 transition on CD */
220 1.1 scw #define CLMPCC_COR4_CTSzd (1 << 5) /* Detect 1->0 transition on CTS */
221 1.1 scw #define CLMPCC_COR4_FIFO_MASK 0x0f /* FIFO Threshold bits */
222 1.1 scw #define CLMPCC_COR4_FIFO_LOW 1
223 1.1 scw #define CLMPCC_COR4_FIFO_MED 4
224 1.1 scw #define CLMPCC_COR4_FIFO_HIGH 8
225 1.1 scw
226 1.1 scw /* Channel Option Register #5 */
227 1.1 scw #define CLMPCC_COR5_DSRod (1 << 7) /* Detect 0->1 transition on DSR */
228 1.1 scw #define CLMPCC_COR5_CDod (1 << 6) /* Detect 0->1 transition on CD */
229 1.1 scw #define CLMPCC_COR5_CTSod (1 << 5) /* Detect 0->1 transition on CTS */
230 1.1 scw #define CLMPCC_COR5_FLOW_MASK 0x0f /* Rx Flow Control FIFO Threshold */
231 1.1 scw #define CLMPCC_COR5_FLOW_NORM 8
232 1.1 scw
233 1.1 scw /* Channel Option Register #6 (Async options) */
234 1.1 scw #define CLMPCC_COR6_RX_CRNL 0x00 /* No special action on CR or NL */
235 1.1 scw #define CLMPCC_COR6_BRK_EXCEPT (0 << 3) /* Exception interrupt on BREAK */
236 1.1 scw #define CLMPCC_COR6_BRK_2_NULL (1 << 3) /* Translate BREAK to NULL char */
237 1.1 scw #define CLMPCC_COR6_BRK_DISCARD (3 << 3) /* Discard BREAK characters */
238 1.1 scw #define CLMPCC_COR6_PF_EXCEPT 0x00 /* Exception irq on parity/frame */
239 1.1 scw #define CLMPCC_COR6_PF_2_NULL 0x01 /* Translate parity/frame to NULL */
240 1.1 scw #define CLMPCC_COR6_PF_IGNORE 0x02 /* Ignore error */
241 1.1 scw #define CLMPCC_COR6_PF_DISCARD 0x03 /* Discard character */
242 1.1 scw #define CLMPCC_COR6_PF_TRANS 0x05 /* Translate to FF NULL + char */
243 1.1 scw
244 1.1 scw /* Channel Option Register #7 (Async options) */
245 1.1 scw #define CLMPCC_COR7_ISTRIP (1 << 7) /* Strip MSB */
246 1.1 scw #define CLMPCC_COR7_LNE (1 << 6) /* Enable LNext Option */
247 1.1 scw #define CLMPCC_COR7_FCERR (1 << 5) /* Flow Control on Error Char */
248 1.1 scw #define CLMPCC_COR7_TX_CRNL 0x00 /* No special action on NL or CR */
249 1.1 scw
250 1.1 scw /* Receive Clock Options Register */
251 1.1 scw #define CLMPCC_RCOR_CLK(x) (x)
252 1.1 scw #define CLMPCC_RCOR_TLVAL (1 << 7) /* Transmit Line Value */
253 1.1 scw #define CLMPCC_RCOR_DPLL_ENABLE (1 << 5) /* Phase Locked Loop Enable */
254 1.1 scw #define CLMPCC_RCOR_DPLL_NRZ (0 << 3) /* PLL runs in NRZ mode */
255 1.1 scw #define CLMPCC_RCOR_DPLL_NRZI (1 << 3) /* PLL runs in NRZI mode */
256 1.1 scw #define CLMPCC_RCOR_DPLL_MAN (2 << 3) /* PLL runs in Manchester mode */
257 1.1 scw #define CLMPCC_RCOR_CLK_0 0x0 /* Rx Clock Source 'Clk0' */
258 1.1 scw #define CLMPCC_RCOR_CLK_1 0x1 /* Rx Clock Source 'Clk1' */
259 1.1 scw #define CLMPCC_RCOR_CLK_2 0x2 /* Rx Clock Source 'Clk2' */
260 1.1 scw #define CLMPCC_RCOR_CLK_3 0x3 /* Rx Clock Source 'Clk3' */
261 1.1 scw #define CLMPCC_RCOR_CLK_4 0x4 /* Rx Clock Source 'Clk4' */
262 1.1 scw #define CLMPCC_RCOR_CLK_EXT 0x6 /* Rx Clock Source 'External' */
263 1.1 scw
264 1.1 scw /* Transmit Clock Options Register */
265 1.1 scw #define CLMPCC_TCOR_CLK(x) ((x) << 5)
266 1.1 scw #define CLMPCC_TCOR_CLK_0 (0 << 5) /* Tx Clock Source 'Clk0' */
267 1.1 scw #define CLMPCC_TCOR_CLK_1 (1 << 5) /* Tx Clock Source 'Clk1' */
268 1.1 scw #define CLMPCC_TCOR_CLK_2 (2 << 5) /* Tx Clock Source 'Clk2' */
269 1.1 scw #define CLMPCC_TCOR_CLK_3 (3 << 5) /* Tx Clock Source 'Clk3' */
270 1.1 scw #define CLMPCC_TCOR_CLK_4 (4 << 5) /* Tx Clock Source 'Clk4' */
271 1.1 scw #define CLMPCC_TCOR_CLK_EXT (6 << 5) /* Tx Clock Source 'External' */
272 1.1 scw #define CLMPCC_TCOR_CLK_RX (7 << 5) /* Tx Clock Source 'Same as Rx' */
273 1.1 scw #define CLMPCC_TCOR_EXT_1X (1 << 3) /* Times 1 External Clock */
274 1.1 scw #define CLMPCC_TCOR_LOCAL_LOOP (1 << 1) /* Enable Local Loopback */
275 1.1 scw
276 1.1 scw /* Special Transmit Command Register */
277 1.1 scw #define CLMPCC_STCR_SSPC(n) ((n) & 0x7) /* Send special character 'n' */
278 1.1 scw #define CLMPCC_STCR_SND_SPC (1 << 3) /* Initiate send special char */
279 1.1 scw #define CLMPCC_STCR_APPEND_COMP (1 << 5) /* Append complete (Async DMA) */
280 1.1 scw #define CLMPCC_STCR_ABORT_TX (1 << 6) /* Abort Tx (HDLC Mode only) */
281 1.1 scw
282 1.1 scw /* Channel Command Register */
283 1.1 scw #define CLMPCC_CCR_T0_CLEAR 0x40 /* Type 0: Clear Channel */
284 1.1 scw #define CLMPCC_CCR_T0_INIT 0x20 /* Type 0: Initialise Channel */
285 1.1 scw #define CLMPCC_CCR_T0_RESET_ALL 0x10 /* Type 0: Reset All */
286 1.1 scw #define CLMPCC_CCR_T0_TX_EN 0x08 /* Type 0: Transmitter Enable */
287 1.1 scw #define CLMPCC_CCR_T0_TX_DIS 0x04 /* Type 0: Transmitter Disable */
288 1.1 scw #define CLMPCC_CCR_T0_RX_EN 0x02 /* Type 0: Receiver Enable */
289 1.1 scw #define CLMPCC_CCR_T0_RX_DIS 0x01 /* Type 0: Receiver Disable */
290 1.1 scw #define CLMPCC_CCR_T1_CLR_TMR1 0xc0 /* Type 1: Clear Timer 1 */
291 1.1 scw #define CLMPCC_CCR_T1_CLR_TMR2 0xa0 /* Type 1: Clear Timer 5 */
292 1.1 scw #define CLMPCC_CCR_T1_CLR_RECV 0x90 /* Type 1: Clear Receiver */
293 1.1 scw
294 1.1 scw /* Channel Status Register (Async Mode) */
295 1.1 scw #define CLMPCC_CSR_RX_ENABLED (1 << 7) /* Receiver Enabled */
296 1.1 scw #define CLMPCC_CSR_RX_FLOW_OFF (1 << 6) /* Receive Flow Off */
297 1.1 scw #define CLMPCC_CSR_RX_FLOW_ON (1 << 5) /* Receive Flow On */
298 1.1 scw #define CLMPCC_CSR_TX_ENABLED (1 << 3) /* Transmitter Enabled */
299 1.1 scw #define CLMPCC_CSR_TX_FLOW_OFF (1 << 2) /* Transmit Flow Off */
300 1.1 scw #define CLMPCC_CSR_TX_FLOW_ON (1 << 1) /* Transmit Flow On */
301 1.1 scw
302 1.1 scw /* Modem Signal Value Register */
303 1.1 scw #define CLMPCC_MSVR_DSR (1 << 7) /* Current State of DSR Input */
304 1.1 scw #define CLMPCC_MSVR_CD (1 << 6) /* Current State of CD Input */
305 1.1 scw #define CLMPCC_MSVR_CTS (1 << 5) /* Current State of CTS Input */
306 1.1 scw #define CLMPCC_MSVR_DTR_OPT (1 << 4) /* DTR Option Select */
307 1.1 scw #define CLMPCC_MSVR_PORT_ID (1 << 2) /* Device Type (2400 / 2401) */
308 1.1 scw #define CLMPCC_MSVR_DTR (1 << 1) /* Current State of DTR Output */
309 1.1 scw #define CLMPCC_MSVR_RTS (1 << 0) /* Current State of RTS Output */
310 1.1 scw
311 1.1 scw /* Local Interrupt Vector Register */
312 1.1 scw #define CLMPCC_LIVR_TYPE_MASK 0x03 /* Type of Interrupt */
313 1.1 scw #define CLMPCC_LIVR_EXCEPTION 0x0 /* Exception (DMA Completion) */
314 1.1 scw #define CLMPCC_LIVR_MODEM 0x1 /* Modem Signal Change */
315 1.1 scw #define CLMPCC_LIVR_TX 0x2 /* Transmit Data Interrupt */
316 1.1 scw #define CLMPCC_LIVR_RX 0x3 /* Receive Data Interrupt */
317 1.1 scw
318 1.1 scw /* Interrupt Enable Register */
319 1.1 scw #define CLMPCC_IER_MODEM (1 << 7) /* Modem Pin Change Detect */
320 1.1 scw #define CLMPCC_IER_RET (1 << 5) /* Receive Exception Timeout */
321 1.1 scw #define CLMPCC_IER_RX_FIFO (1 << 3) /* Rx FIFO Threshold Reached */
322 1.1 scw #define CLMPCC_IER_TIMER (1 << 2) /* General Timer(s) Timeout */
323 1.1 scw #define CLMPCC_IER_TX_EMPTY (1 << 1) /* Tx Empty */
324 1.1 scw #define CLMPCC_IER_TX_FIFO (1 << 0) /* Tx FIFO Threshold Reached */
325 1.1 scw
326 1.1 scw /* Local Interrupting Channel Register */
327 1.1 scw #define CLMPCC_LICR_MASK 0x0c /* Mask for channel number */
328 1.1 scw #define CLMPCC_LICR_CHAN(v) (((v) & CLMPCC_LICR_MASK) >> 2)
329 1.1 scw
330 1.1 scw /* Receive Interrupt Register */
331 1.1 scw #define CLMPCC_RIR_REN (1 << 7) /* Receive Enable */
332 1.1 scw #define CLMPCC_RIR_RACT (1 << 6) /* Receive Active */
333 1.1 scw #define CLMPCC_RIR_REOI (1 << 5) /* Receive End of Interrupt */
334 1.1 scw #define CLMPCC_RIR_RCVT_MASK 0x0c
335 1.1 scw #define CLMPCC_RIR_RCN_MASK 0x03
336 1.1 scw
337 1.1 scw /* Receive Interrupt Status Register, Low (Async option) */
338 1.1 scw #define CLMPCC_RISR_TIMEOUT (1 << 7) /* Rx FIFO Empty and Timeout */
339 1.1 scw #define CLMPCC_RISR_OVERRUN (1 << 3) /* Rx Overrun Error */
340 1.1 scw #define CLMPCC_RISR_PARITY (1 << 2) /* Rx Parity Error */
341 1.1 scw #define CLMPCC_RISR_FRAMING (1 << 1) /* Rx Framing Error */
342 1.1 scw #define CLMPCC_RISR_BREAK (1 << 0) /* BREAK Detected */
343 1.1 scw
344 1.1 scw /* Receive FIFO Counter Register */
345 1.1 scw #define CLMPCC_RFOC_MASK 0x1f /* Mask for valid bits */
346 1.1 scw
347 1.1 scw /* Receive End of Interrupt Register */
348 1.1 scw #define CLMPCC_REOIR_TERMBUFF (1 << 7) /* Terminate Current DMA Buffer */
349 1.1 scw #define CLMPCC_REOIR_DIS_EX_CHR (1 << 6) /* Discard Exception Char (DMA) */
350 1.1 scw #define CLMPCC_REOIR_TMR2_SYNC (1 << 5) /* Set Timer 2 in Sync Mode */
351 1.1 scw #define CLMPCC_REOIR_TMR1_SYNC (1 << 4) /* Set Timer 1 in Sync Mode */
352 1.1 scw #define CLMPCC_REOIR_NO_TRANS (1 << 3) /* No Transfer of Data */
353 1.1 scw
354 1.1 scw /* Transmit Interrupt Register */
355 1.1 scw #define CLMPCC_TIR_TEN (1 << 7) /* Transmit Enable */
356 1.1 scw #define CLMPCC_TIR_TACT (1 << 6) /* Transmit Active */
357 1.1 scw #define CLMPCC_TIR_TEOI (1 << 5) /* Transmit End of Interrupt */
358 1.1 scw #define CLMPCC_TIR_TCVT_MASK 0x0c
359 1.1 scw #define CLMPCC_TIR_TCN_MASK 0x03
360 1.1 scw
361 1.1 scw /* Transmit Interrupt Status Register (Async option) */
362 1.1 scw #define CLMPCC_TISR_BERR (1 << 7) /* Bus Error (DMA) */
363 1.1 scw #define CLMPCC_TISR_EOF (1 << 6) /* Transmit End of Frame (DMA) */
364 1.1 scw #define CLMPCC_TISR_EOB (1 << 5) /* Transmit End of Buffer (DMA) */
365 1.1 scw #define CLMPCC_TISR_UNDERRUN (1 << 4) /* Transmit Underrun (sync only) */
366 1.1 scw #define CLMPCC_TISR_BUFF_ID (1 << 3) /* Buffer that has exception */
367 1.1 scw #define CLMPCC_TISR_TX_EMPTY (1 << 1) /* Transmitter Empty */
368 1.1 scw #define CLMPCC_TISR_TX_FIFO (1 << 0) /* Transmit FIFO Below Threshold */
369 1.1 scw
370 1.1 scw /* Transmit FIFO Transfer Count Register */
371 1.1 scw #define CLMPCC_TFTC_MASK 0x1f /* Mask for valid bits */
372 1.1 scw
373 1.1 scw /* Transmit End of Interrupt Register */
374 1.1 scw #define CLMPCC_TEOIR_TERMBUFF (1 << 7) /* Terminate Current DMA Buffer */
375 1.1 scw #define CLMPCC_TEOIR_END_OF_FRM (1 << 6) /* End of Frame (sync mode) */
376 1.1 scw #define CLMPCC_TEOIR_TMR2_SYNC (1 << 5) /* Set Timer 2 in Sync Mode */
377 1.1 scw #define CLMPCC_TEOIR_TMR1_SYNC (1 << 4) /* Set Timer 1 in Sync Mode */
378 1.1 scw #define CLMPCC_TEOIR_NO_TRANS (1 << 3) /* No Transfer of Data */
379 1.1 scw
380 1.1 scw /* Modem Interrupt Register */
381 1.1 scw #define CLMPCC_MIR_MEN (1 << 7) /* Modem Enable */
382 1.1 scw #define CLMPCC_MIR_MACT (1 << 6) /* Modem Active */
383 1.1 scw #define CLMPCC_MIR_MEOI (1 << 5) /* Modem End of Interrupt */
384 1.1 scw #define CLMPCC_MIR_MCVT_MASK 0x0c
385 1.1 scw #define CLMPCC_MIR_MCN_MASK 0x03
386 1.1 scw
387 1.1 scw /* Modem/Timer Interrupt Status Register */
388 1.1 scw #define CLMPCC_MISR_DSR (1 << 7) /* DSR Changed State */
389 1.1 scw #define CLMPCC_MISR_CD (1 << 6) /* CD Changed State */
390 1.1 scw #define CLMPCC_MISR_CTS (1 << 5) /* CTS Changed State */
391 1.1 scw #define CLMPCC_MISR_TMR2 (1 << 1) /* Timer 2 Timed Out */
392 1.1 scw #define CLMPCC_MISR_TMR1 (1 << 0) /* Timer 1 Timed Out */
393 1.1 scw
394 1.1 scw /* Modem End of Interrupt Register */
395 1.1 scw #define CLMPCC_MEOIR_TMR2_SYNC (1 << 5) /* Set Timer 2 in Sync Mode */
396 1.1 scw #define CLMPCC_MEOIR_TMR1_SYNC (1 << 4) /* Set Timer 1 in Sync Mode */
397 1.1 scw
398 1.1 scw /* Default value for CLMPCC_REG_RTPRl */
399 1.1 scw #define CLMPCC_RTPR_DEFAULT 2 /* 2mS timeout period */
400 1.1 scw
401 1.1 scw /*
402 1.1 scw * Return a value for the Receive Timer Prescaler register
403 1.1 scw * for a given clock rate and number of milliseconds.
404 1.1 scw * The minimum recommended value for this register is 0x0a.
405 1.1 scw */
406 1.1 scw #define CLMPCC_MSEC_TO_TPR(c,m) (((((c)/2048)/(1000/(m))) > 0x0a) ? \
407 1.1 scw (((c)/2048)/(1000/(m))) : 0x0a)
408 1.1 scw
409 1.1 scw #endif /* __clmpccreg_h */
410