xref: /OK3568_Linux_fs/kernel/arch/mips/include/asm/sibyte/sb1250_uart.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-or-later */
2*4882a593Smuzhiyun /*  *********************************************************************
3*4882a593Smuzhiyun     *  SB1250 Board Support Package
4*4882a593Smuzhiyun     *
5*4882a593Smuzhiyun     *  UART Constants				File: sb1250_uart.h
6*4882a593Smuzhiyun     *
7*4882a593Smuzhiyun     *  This module contains constants and macros useful for
8*4882a593Smuzhiyun     *  manipulating the SB1250's UARTs
9*4882a593Smuzhiyun     *
10*4882a593Smuzhiyun     *  SB1250 specification level:  User's manual 1/02/02
11*4882a593Smuzhiyun     *
12*4882a593Smuzhiyun     *********************************************************************
13*4882a593Smuzhiyun     *
14*4882a593Smuzhiyun     *  Copyright 2000,2001,2002,2003
15*4882a593Smuzhiyun     *  Broadcom Corporation. All rights reserved.
16*4882a593Smuzhiyun     *
17*4882a593Smuzhiyun     ********************************************************************* */
18*4882a593Smuzhiyun 
19*4882a593Smuzhiyun 
20*4882a593Smuzhiyun #ifndef _SB1250_UART_H
21*4882a593Smuzhiyun #define _SB1250_UART_H
22*4882a593Smuzhiyun 
23*4882a593Smuzhiyun #include <asm/sibyte/sb1250_defs.h>
24*4882a593Smuzhiyun 
25*4882a593Smuzhiyun /* **********************************************************************
26*4882a593Smuzhiyun    * DUART Registers
27*4882a593Smuzhiyun    ********************************************************************** */
28*4882a593Smuzhiyun 
29*4882a593Smuzhiyun /*
30*4882a593Smuzhiyun  * DUART Mode Register #1 (Table 10-3)
31*4882a593Smuzhiyun  * Register: DUART_MODE_REG_1_A
32*4882a593Smuzhiyun  * Register: DUART_MODE_REG_1_B
33*4882a593Smuzhiyun  */
34*4882a593Smuzhiyun 
35*4882a593Smuzhiyun #define S_DUART_BITS_PER_CHAR	    0
36*4882a593Smuzhiyun #define M_DUART_BITS_PER_CHAR	    _SB_MAKEMASK(2, S_DUART_BITS_PER_CHAR)
37*4882a593Smuzhiyun #define V_DUART_BITS_PER_CHAR(x)    _SB_MAKEVALUE(x, S_DUART_BITS_PER_CHAR)
38*4882a593Smuzhiyun 
39*4882a593Smuzhiyun #define K_DUART_BITS_PER_CHAR_RSV0  0
40*4882a593Smuzhiyun #define K_DUART_BITS_PER_CHAR_RSV1  1
41*4882a593Smuzhiyun #define K_DUART_BITS_PER_CHAR_7	    2
42*4882a593Smuzhiyun #define K_DUART_BITS_PER_CHAR_8	    3
43*4882a593Smuzhiyun 
44*4882a593Smuzhiyun #define V_DUART_BITS_PER_CHAR_RSV0  V_DUART_BITS_PER_CHAR(K_DUART_BITS_PER_CHAR_RSV0)
45*4882a593Smuzhiyun #define V_DUART_BITS_PER_CHAR_RSV1  V_DUART_BITS_PER_CHAR(K_DUART_BITS_PER_CHAR_RSV1)
46*4882a593Smuzhiyun #define V_DUART_BITS_PER_CHAR_7	    V_DUART_BITS_PER_CHAR(K_DUART_BITS_PER_CHAR_7)
47*4882a593Smuzhiyun #define V_DUART_BITS_PER_CHAR_8	    V_DUART_BITS_PER_CHAR(K_DUART_BITS_PER_CHAR_8)
48*4882a593Smuzhiyun 
49*4882a593Smuzhiyun 
50*4882a593Smuzhiyun #define M_DUART_PARITY_TYPE_EVEN    0x00
51*4882a593Smuzhiyun #define M_DUART_PARITY_TYPE_ODD	    _SB_MAKEMASK1(2)
52*4882a593Smuzhiyun 
53*4882a593Smuzhiyun #define S_DUART_PARITY_MODE	     3
54*4882a593Smuzhiyun #define M_DUART_PARITY_MODE	    _SB_MAKEMASK(2, S_DUART_PARITY_MODE)
55*4882a593Smuzhiyun #define V_DUART_PARITY_MODE(x)	    _SB_MAKEVALUE(x, S_DUART_PARITY_MODE)
56*4882a593Smuzhiyun 
57*4882a593Smuzhiyun #define K_DUART_PARITY_MODE_ADD	      0
58*4882a593Smuzhiyun #define K_DUART_PARITY_MODE_ADD_FIXED 1
59*4882a593Smuzhiyun #define K_DUART_PARITY_MODE_NONE      2
60*4882a593Smuzhiyun 
61*4882a593Smuzhiyun #define V_DUART_PARITY_MODE_ADD	      V_DUART_PARITY_MODE(K_DUART_PARITY_MODE_ADD)
62*4882a593Smuzhiyun #define V_DUART_PARITY_MODE_ADD_FIXED V_DUART_PARITY_MODE(K_DUART_PARITY_MODE_ADD_FIXED)
63*4882a593Smuzhiyun #define V_DUART_PARITY_MODE_NONE      V_DUART_PARITY_MODE(K_DUART_PARITY_MODE_NONE)
64*4882a593Smuzhiyun 
65*4882a593Smuzhiyun #define M_DUART_TX_IRQ_SEL_TXRDY    0
66*4882a593Smuzhiyun #define M_DUART_TX_IRQ_SEL_TXEMPT   _SB_MAKEMASK1(5)
67*4882a593Smuzhiyun 
68*4882a593Smuzhiyun #define M_DUART_RX_IRQ_SEL_RXRDY    0
69*4882a593Smuzhiyun #define M_DUART_RX_IRQ_SEL_RXFULL   _SB_MAKEMASK1(6)
70*4882a593Smuzhiyun 
71*4882a593Smuzhiyun #define M_DUART_RX_RTS_ENA	    _SB_MAKEMASK1(7)
72*4882a593Smuzhiyun 
73*4882a593Smuzhiyun /*
74*4882a593Smuzhiyun  * DUART Mode Register #2 (Table 10-4)
75*4882a593Smuzhiyun  * Register: DUART_MODE_REG_2_A
76*4882a593Smuzhiyun  * Register: DUART_MODE_REG_2_B
77*4882a593Smuzhiyun  */
78*4882a593Smuzhiyun 
79*4882a593Smuzhiyun #define M_DUART_MODE_RESERVED1	    _SB_MAKEMASK(3, 0)	 /* ignored */
80*4882a593Smuzhiyun 
81*4882a593Smuzhiyun #define M_DUART_STOP_BIT_LEN_2	    _SB_MAKEMASK1(3)
82*4882a593Smuzhiyun #define M_DUART_STOP_BIT_LEN_1	    0
83*4882a593Smuzhiyun 
84*4882a593Smuzhiyun #define M_DUART_TX_CTS_ENA	    _SB_MAKEMASK1(4)
85*4882a593Smuzhiyun 
86*4882a593Smuzhiyun 
87*4882a593Smuzhiyun #define M_DUART_MODE_RESERVED2	    _SB_MAKEMASK1(5)	/* must be zero */
88*4882a593Smuzhiyun 
89*4882a593Smuzhiyun #define S_DUART_CHAN_MODE	    6
90*4882a593Smuzhiyun #define M_DUART_CHAN_MODE	    _SB_MAKEMASK(2, S_DUART_CHAN_MODE)
91*4882a593Smuzhiyun #define V_DUART_CHAN_MODE(x)	    _SB_MAKEVALUE(x, S_DUART_CHAN_MODE)
92*4882a593Smuzhiyun 
93*4882a593Smuzhiyun #define K_DUART_CHAN_MODE_NORMAL    0
94*4882a593Smuzhiyun #define K_DUART_CHAN_MODE_LCL_LOOP  2
95*4882a593Smuzhiyun #define K_DUART_CHAN_MODE_REM_LOOP  3
96*4882a593Smuzhiyun 
97*4882a593Smuzhiyun #define V_DUART_CHAN_MODE_NORMAL    V_DUART_CHAN_MODE(K_DUART_CHAN_MODE_NORMAL)
98*4882a593Smuzhiyun #define V_DUART_CHAN_MODE_LCL_LOOP  V_DUART_CHAN_MODE(K_DUART_CHAN_MODE_LCL_LOOP)
99*4882a593Smuzhiyun #define V_DUART_CHAN_MODE_REM_LOOP  V_DUART_CHAN_MODE(K_DUART_CHAN_MODE_REM_LOOP)
100*4882a593Smuzhiyun 
101*4882a593Smuzhiyun /*
102*4882a593Smuzhiyun  * DUART Command Register (Table 10-5)
103*4882a593Smuzhiyun  * Register: DUART_CMD_A
104*4882a593Smuzhiyun  * Register: DUART_CMD_B
105*4882a593Smuzhiyun  */
106*4882a593Smuzhiyun 
107*4882a593Smuzhiyun #define M_DUART_RX_EN		    _SB_MAKEMASK1(0)
108*4882a593Smuzhiyun #define M_DUART_RX_DIS		    _SB_MAKEMASK1(1)
109*4882a593Smuzhiyun #define M_DUART_TX_EN		    _SB_MAKEMASK1(2)
110*4882a593Smuzhiyun #define M_DUART_TX_DIS		    _SB_MAKEMASK1(3)
111*4882a593Smuzhiyun 
112*4882a593Smuzhiyun #define S_DUART_MISC_CMD	    4
113*4882a593Smuzhiyun #define M_DUART_MISC_CMD	    _SB_MAKEMASK(3, S_DUART_MISC_CMD)
114*4882a593Smuzhiyun #define V_DUART_MISC_CMD(x)	    _SB_MAKEVALUE(x, S_DUART_MISC_CMD)
115*4882a593Smuzhiyun 
116*4882a593Smuzhiyun #define K_DUART_MISC_CMD_NOACTION0	 0
117*4882a593Smuzhiyun #define K_DUART_MISC_CMD_NOACTION1	 1
118*4882a593Smuzhiyun #define K_DUART_MISC_CMD_RESET_RX	 2
119*4882a593Smuzhiyun #define K_DUART_MISC_CMD_RESET_TX	 3
120*4882a593Smuzhiyun #define K_DUART_MISC_CMD_NOACTION4	 4
121*4882a593Smuzhiyun #define K_DUART_MISC_CMD_RESET_BREAK_INT 5
122*4882a593Smuzhiyun #define K_DUART_MISC_CMD_START_BREAK	 6
123*4882a593Smuzhiyun #define K_DUART_MISC_CMD_STOP_BREAK	 7
124*4882a593Smuzhiyun 
125*4882a593Smuzhiyun #define V_DUART_MISC_CMD_NOACTION0	 V_DUART_MISC_CMD(K_DUART_MISC_CMD_NOACTION0)
126*4882a593Smuzhiyun #define V_DUART_MISC_CMD_NOACTION1	 V_DUART_MISC_CMD(K_DUART_MISC_CMD_NOACTION1)
127*4882a593Smuzhiyun #define V_DUART_MISC_CMD_RESET_RX	 V_DUART_MISC_CMD(K_DUART_MISC_CMD_RESET_RX)
128*4882a593Smuzhiyun #define V_DUART_MISC_CMD_RESET_TX	 V_DUART_MISC_CMD(K_DUART_MISC_CMD_RESET_TX)
129*4882a593Smuzhiyun #define V_DUART_MISC_CMD_NOACTION4	 V_DUART_MISC_CMD(K_DUART_MISC_CMD_NOACTION4)
130*4882a593Smuzhiyun #define V_DUART_MISC_CMD_RESET_BREAK_INT V_DUART_MISC_CMD(K_DUART_MISC_CMD_RESET_BREAK_INT)
131*4882a593Smuzhiyun #define V_DUART_MISC_CMD_START_BREAK	 V_DUART_MISC_CMD(K_DUART_MISC_CMD_START_BREAK)
132*4882a593Smuzhiyun #define V_DUART_MISC_CMD_STOP_BREAK	 V_DUART_MISC_CMD(K_DUART_MISC_CMD_STOP_BREAK)
133*4882a593Smuzhiyun 
134*4882a593Smuzhiyun #define M_DUART_CMD_RESERVED		 _SB_MAKEMASK1(7)
135*4882a593Smuzhiyun 
136*4882a593Smuzhiyun /*
137*4882a593Smuzhiyun  * DUART Status Register (Table 10-6)
138*4882a593Smuzhiyun  * Register: DUART_STATUS_A
139*4882a593Smuzhiyun  * Register: DUART_STATUS_B
140*4882a593Smuzhiyun  * READ-ONLY
141*4882a593Smuzhiyun  */
142*4882a593Smuzhiyun 
143*4882a593Smuzhiyun #define M_DUART_RX_RDY		    _SB_MAKEMASK1(0)
144*4882a593Smuzhiyun #define M_DUART_RX_FFUL		    _SB_MAKEMASK1(1)
145*4882a593Smuzhiyun #define M_DUART_TX_RDY		    _SB_MAKEMASK1(2)
146*4882a593Smuzhiyun #define M_DUART_TX_EMT		    _SB_MAKEMASK1(3)
147*4882a593Smuzhiyun #define M_DUART_OVRUN_ERR	    _SB_MAKEMASK1(4)
148*4882a593Smuzhiyun #define M_DUART_PARITY_ERR	    _SB_MAKEMASK1(5)
149*4882a593Smuzhiyun #define M_DUART_FRM_ERR		    _SB_MAKEMASK1(6)
150*4882a593Smuzhiyun #define M_DUART_RCVD_BRK	    _SB_MAKEMASK1(7)
151*4882a593Smuzhiyun 
152*4882a593Smuzhiyun /*
153*4882a593Smuzhiyun  * DUART Baud Rate Register (Table 10-7)
154*4882a593Smuzhiyun  * Register: DUART_CLK_SEL_A
155*4882a593Smuzhiyun  * Register: DUART_CLK_SEL_B
156*4882a593Smuzhiyun  */
157*4882a593Smuzhiyun 
158*4882a593Smuzhiyun #define M_DUART_CLK_COUNTER	    _SB_MAKEMASK(12, 0)
159*4882a593Smuzhiyun #define V_DUART_BAUD_RATE(x)	    (100000000/((x)*20)-1)
160*4882a593Smuzhiyun 
161*4882a593Smuzhiyun /*
162*4882a593Smuzhiyun  * DUART Data Registers (Table 10-8 and 10-9)
163*4882a593Smuzhiyun  * Register: DUART_RX_HOLD_A
164*4882a593Smuzhiyun  * Register: DUART_RX_HOLD_B
165*4882a593Smuzhiyun  * Register: DUART_TX_HOLD_A
166*4882a593Smuzhiyun  * Register: DUART_TX_HOLD_B
167*4882a593Smuzhiyun  */
168*4882a593Smuzhiyun 
169*4882a593Smuzhiyun #define M_DUART_RX_DATA		    _SB_MAKEMASK(8, 0)
170*4882a593Smuzhiyun #define M_DUART_TX_DATA		    _SB_MAKEMASK(8, 0)
171*4882a593Smuzhiyun 
172*4882a593Smuzhiyun /*
173*4882a593Smuzhiyun  * DUART Input Port Register (Table 10-10)
174*4882a593Smuzhiyun  * Register: DUART_IN_PORT
175*4882a593Smuzhiyun  */
176*4882a593Smuzhiyun 
177*4882a593Smuzhiyun #define M_DUART_IN_PIN0_VAL	    _SB_MAKEMASK1(0)
178*4882a593Smuzhiyun #define M_DUART_IN_PIN1_VAL	    _SB_MAKEMASK1(1)
179*4882a593Smuzhiyun #define M_DUART_IN_PIN2_VAL	    _SB_MAKEMASK1(2)
180*4882a593Smuzhiyun #define M_DUART_IN_PIN3_VAL	    _SB_MAKEMASK1(3)
181*4882a593Smuzhiyun #define M_DUART_IN_PIN4_VAL	    _SB_MAKEMASK1(4)
182*4882a593Smuzhiyun #define M_DUART_IN_PIN5_VAL	    _SB_MAKEMASK1(5)
183*4882a593Smuzhiyun #define M_DUART_RIN0_PIN	    _SB_MAKEMASK1(6)
184*4882a593Smuzhiyun #define M_DUART_RIN1_PIN	    _SB_MAKEMASK1(7)
185*4882a593Smuzhiyun 
186*4882a593Smuzhiyun /*
187*4882a593Smuzhiyun  * DUART Input Port Change Status Register (Tables 10-11, 10-12, and 10-13)
188*4882a593Smuzhiyun  * Register: DUART_INPORT_CHNG
189*4882a593Smuzhiyun  */
190*4882a593Smuzhiyun 
191*4882a593Smuzhiyun #define S_DUART_IN_PIN_VAL	    0
192*4882a593Smuzhiyun #define M_DUART_IN_PIN_VAL	    _SB_MAKEMASK(4, S_DUART_IN_PIN_VAL)
193*4882a593Smuzhiyun 
194*4882a593Smuzhiyun #define S_DUART_IN_PIN_CHNG	    4
195*4882a593Smuzhiyun #define M_DUART_IN_PIN_CHNG	    _SB_MAKEMASK(4, S_DUART_IN_PIN_CHNG)
196*4882a593Smuzhiyun 
197*4882a593Smuzhiyun 
198*4882a593Smuzhiyun /*
199*4882a593Smuzhiyun  * DUART Output port control register (Table 10-14)
200*4882a593Smuzhiyun  * Register: DUART_OPCR
201*4882a593Smuzhiyun  */
202*4882a593Smuzhiyun 
203*4882a593Smuzhiyun #define M_DUART_OPCR_RESERVED0	    _SB_MAKEMASK1(0)   /* must be zero */
204*4882a593Smuzhiyun #define M_DUART_OPC2_SEL	    _SB_MAKEMASK1(1)
205*4882a593Smuzhiyun #define M_DUART_OPCR_RESERVED1	    _SB_MAKEMASK1(2)   /* must be zero */
206*4882a593Smuzhiyun #define M_DUART_OPC3_SEL	    _SB_MAKEMASK1(3)
207*4882a593Smuzhiyun #define M_DUART_OPCR_RESERVED2	    _SB_MAKEMASK(4, 4)	/* must be zero */
208*4882a593Smuzhiyun 
209*4882a593Smuzhiyun /*
210*4882a593Smuzhiyun  * DUART Aux Control Register (Table 10-15)
211*4882a593Smuzhiyun  * Register: DUART_AUX_CTRL
212*4882a593Smuzhiyun  */
213*4882a593Smuzhiyun 
214*4882a593Smuzhiyun #define M_DUART_IP0_CHNG_ENA	    _SB_MAKEMASK1(0)
215*4882a593Smuzhiyun #define M_DUART_IP1_CHNG_ENA	    _SB_MAKEMASK1(1)
216*4882a593Smuzhiyun #define M_DUART_IP2_CHNG_ENA	    _SB_MAKEMASK1(2)
217*4882a593Smuzhiyun #define M_DUART_IP3_CHNG_ENA	    _SB_MAKEMASK1(3)
218*4882a593Smuzhiyun #define M_DUART_ACR_RESERVED	    _SB_MAKEMASK(4, 4)
219*4882a593Smuzhiyun 
220*4882a593Smuzhiyun #define M_DUART_CTS_CHNG_ENA	    _SB_MAKEMASK1(0)
221*4882a593Smuzhiyun #define M_DUART_CIN_CHNG_ENA	    _SB_MAKEMASK1(2)
222*4882a593Smuzhiyun 
223*4882a593Smuzhiyun /*
224*4882a593Smuzhiyun  * DUART Interrupt Status Register (Table 10-16)
225*4882a593Smuzhiyun  * Register: DUART_ISR
226*4882a593Smuzhiyun  */
227*4882a593Smuzhiyun 
228*4882a593Smuzhiyun #define M_DUART_ISR_TX_A	    _SB_MAKEMASK1(0)
229*4882a593Smuzhiyun 
230*4882a593Smuzhiyun #define S_DUART_ISR_RX_A	    1
231*4882a593Smuzhiyun #define M_DUART_ISR_RX_A	    _SB_MAKEMASK1(S_DUART_ISR_RX_A)
232*4882a593Smuzhiyun #define V_DUART_ISR_RX_A(x)	    _SB_MAKEVALUE(x, S_DUART_ISR_RX_A)
233*4882a593Smuzhiyun #define G_DUART_ISR_RX_A(x)	    _SB_GETVALUE(x, S_DUART_ISR_RX_A, M_DUART_ISR_RX_A)
234*4882a593Smuzhiyun 
235*4882a593Smuzhiyun #define M_DUART_ISR_BRK_A	    _SB_MAKEMASK1(2)
236*4882a593Smuzhiyun #define M_DUART_ISR_IN_A	    _SB_MAKEMASK1(3)
237*4882a593Smuzhiyun #define M_DUART_ISR_ALL_A	    _SB_MAKEMASK(4, 0)
238*4882a593Smuzhiyun 
239*4882a593Smuzhiyun #define M_DUART_ISR_TX_B	    _SB_MAKEMASK1(4)
240*4882a593Smuzhiyun #define M_DUART_ISR_RX_B	    _SB_MAKEMASK1(5)
241*4882a593Smuzhiyun #define M_DUART_ISR_BRK_B	    _SB_MAKEMASK1(6)
242*4882a593Smuzhiyun #define M_DUART_ISR_IN_B	    _SB_MAKEMASK1(7)
243*4882a593Smuzhiyun #define M_DUART_ISR_ALL_B	    _SB_MAKEMASK(4, 4)
244*4882a593Smuzhiyun 
245*4882a593Smuzhiyun /*
246*4882a593Smuzhiyun  * DUART Channel A Interrupt Status Register (Table 10-17)
247*4882a593Smuzhiyun  * DUART Channel B Interrupt Status Register (Table 10-18)
248*4882a593Smuzhiyun  * Register: DUART_ISR_A
249*4882a593Smuzhiyun  * Register: DUART_ISR_B
250*4882a593Smuzhiyun  */
251*4882a593Smuzhiyun 
252*4882a593Smuzhiyun #define M_DUART_ISR_TX		    _SB_MAKEMASK1(0)
253*4882a593Smuzhiyun #define M_DUART_ISR_RX		    _SB_MAKEMASK1(1)
254*4882a593Smuzhiyun #define M_DUART_ISR_BRK		    _SB_MAKEMASK1(2)
255*4882a593Smuzhiyun #define M_DUART_ISR_IN		    _SB_MAKEMASK1(3)
256*4882a593Smuzhiyun #define M_DUART_ISR_ALL		    _SB_MAKEMASK(4, 0)
257*4882a593Smuzhiyun #define M_DUART_ISR_RESERVED	    _SB_MAKEMASK(4, 4)
258*4882a593Smuzhiyun 
259*4882a593Smuzhiyun /*
260*4882a593Smuzhiyun  * DUART Interrupt Mask Register (Table 10-19)
261*4882a593Smuzhiyun  * Register: DUART_IMR
262*4882a593Smuzhiyun  */
263*4882a593Smuzhiyun 
264*4882a593Smuzhiyun #define M_DUART_IMR_TX_A	    _SB_MAKEMASK1(0)
265*4882a593Smuzhiyun #define M_DUART_IMR_RX_A	    _SB_MAKEMASK1(1)
266*4882a593Smuzhiyun #define M_DUART_IMR_BRK_A	    _SB_MAKEMASK1(2)
267*4882a593Smuzhiyun #define M_DUART_IMR_IN_A	    _SB_MAKEMASK1(3)
268*4882a593Smuzhiyun #define M_DUART_IMR_ALL_A	    _SB_MAKEMASK(4, 0)
269*4882a593Smuzhiyun 
270*4882a593Smuzhiyun #define M_DUART_IMR_TX_B	    _SB_MAKEMASK1(4)
271*4882a593Smuzhiyun #define M_DUART_IMR_RX_B	    _SB_MAKEMASK1(5)
272*4882a593Smuzhiyun #define M_DUART_IMR_BRK_B	    _SB_MAKEMASK1(6)
273*4882a593Smuzhiyun #define M_DUART_IMR_IN_B	    _SB_MAKEMASK1(7)
274*4882a593Smuzhiyun #define M_DUART_IMR_ALL_B	    _SB_MAKEMASK(4, 4)
275*4882a593Smuzhiyun 
276*4882a593Smuzhiyun /*
277*4882a593Smuzhiyun  * DUART Channel A Interrupt Mask Register (Table 10-20)
278*4882a593Smuzhiyun  * DUART Channel B Interrupt Mask Register (Table 10-21)
279*4882a593Smuzhiyun  * Register: DUART_IMR_A
280*4882a593Smuzhiyun  * Register: DUART_IMR_B
281*4882a593Smuzhiyun  */
282*4882a593Smuzhiyun 
283*4882a593Smuzhiyun #define M_DUART_IMR_TX		    _SB_MAKEMASK1(0)
284*4882a593Smuzhiyun #define M_DUART_IMR_RX		    _SB_MAKEMASK1(1)
285*4882a593Smuzhiyun #define M_DUART_IMR_BRK		    _SB_MAKEMASK1(2)
286*4882a593Smuzhiyun #define M_DUART_IMR_IN		    _SB_MAKEMASK1(3)
287*4882a593Smuzhiyun #define M_DUART_IMR_ALL		    _SB_MAKEMASK(4, 0)
288*4882a593Smuzhiyun #define M_DUART_IMR_RESERVED	    _SB_MAKEMASK(4, 4)
289*4882a593Smuzhiyun 
290*4882a593Smuzhiyun 
291*4882a593Smuzhiyun /*
292*4882a593Smuzhiyun  * DUART Output Port Set Register (Table 10-22)
293*4882a593Smuzhiyun  * Register: DUART_SET_OPR
294*4882a593Smuzhiyun  */
295*4882a593Smuzhiyun 
296*4882a593Smuzhiyun #define M_DUART_SET_OPR0	    _SB_MAKEMASK1(0)
297*4882a593Smuzhiyun #define M_DUART_SET_OPR1	    _SB_MAKEMASK1(1)
298*4882a593Smuzhiyun #define M_DUART_SET_OPR2	    _SB_MAKEMASK1(2)
299*4882a593Smuzhiyun #define M_DUART_SET_OPR3	    _SB_MAKEMASK1(3)
300*4882a593Smuzhiyun #define M_DUART_OPSR_RESERVED	    _SB_MAKEMASK(4, 4)
301*4882a593Smuzhiyun 
302*4882a593Smuzhiyun /*
303*4882a593Smuzhiyun  * DUART Output Port Clear Register (Table 10-23)
304*4882a593Smuzhiyun  * Register: DUART_CLEAR_OPR
305*4882a593Smuzhiyun  */
306*4882a593Smuzhiyun 
307*4882a593Smuzhiyun #define M_DUART_CLR_OPR0	    _SB_MAKEMASK1(0)
308*4882a593Smuzhiyun #define M_DUART_CLR_OPR1	    _SB_MAKEMASK1(1)
309*4882a593Smuzhiyun #define M_DUART_CLR_OPR2	    _SB_MAKEMASK1(2)
310*4882a593Smuzhiyun #define M_DUART_CLR_OPR3	    _SB_MAKEMASK1(3)
311*4882a593Smuzhiyun #define M_DUART_OPCR_RESERVED	    _SB_MAKEMASK(4, 4)
312*4882a593Smuzhiyun 
313*4882a593Smuzhiyun /*
314*4882a593Smuzhiyun  * DUART Output Port RTS Register (Table 10-24)
315*4882a593Smuzhiyun  * Register: DUART_OUT_PORT
316*4882a593Smuzhiyun  */
317*4882a593Smuzhiyun 
318*4882a593Smuzhiyun #define M_DUART_OUT_PIN_SET0	    _SB_MAKEMASK1(0)
319*4882a593Smuzhiyun #define M_DUART_OUT_PIN_SET1	    _SB_MAKEMASK1(1)
320*4882a593Smuzhiyun #define M_DUART_OUT_PIN_CLR0	    _SB_MAKEMASK1(2)
321*4882a593Smuzhiyun #define M_DUART_OUT_PIN_CLR1	    _SB_MAKEMASK1(3)
322*4882a593Smuzhiyun #define M_DUART_OPRR_RESERVED	    _SB_MAKEMASK(4, 4)
323*4882a593Smuzhiyun 
324*4882a593Smuzhiyun #define M_DUART_OUT_PIN_SET(chan) \
325*4882a593Smuzhiyun     (chan == 0 ? M_DUART_OUT_PIN_SET0 : M_DUART_OUT_PIN_SET1)
326*4882a593Smuzhiyun #define M_DUART_OUT_PIN_CLR(chan) \
327*4882a593Smuzhiyun     (chan == 0 ? M_DUART_OUT_PIN_CLR0 : M_DUART_OUT_PIN_CLR1)
328*4882a593Smuzhiyun 
329*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS2) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480)
330*4882a593Smuzhiyun /*
331*4882a593Smuzhiyun  * Full Interrupt Control Register
332*4882a593Smuzhiyun  */
333*4882a593Smuzhiyun 
334*4882a593Smuzhiyun #define S_DUART_SIG_FULL	   _SB_MAKE64(0)
335*4882a593Smuzhiyun #define M_DUART_SIG_FULL	   _SB_MAKEMASK(4, S_DUART_SIG_FULL)
336*4882a593Smuzhiyun #define V_DUART_SIG_FULL(x)	   _SB_MAKEVALUE(x, S_DUART_SIG_FULL)
337*4882a593Smuzhiyun #define G_DUART_SIG_FULL(x)	   _SB_GETVALUE(x, S_DUART_SIG_FULL, M_DUART_SIG_FULL)
338*4882a593Smuzhiyun 
339*4882a593Smuzhiyun #define S_DUART_INT_TIME	   _SB_MAKE64(4)
340*4882a593Smuzhiyun #define M_DUART_INT_TIME	   _SB_MAKEMASK(4, S_DUART_INT_TIME)
341*4882a593Smuzhiyun #define V_DUART_INT_TIME(x)	   _SB_MAKEVALUE(x, S_DUART_INT_TIME)
342*4882a593Smuzhiyun #define G_DUART_INT_TIME(x)	   _SB_GETVALUE(x, S_DUART_INT_TIME, M_DUART_INT_TIME)
343*4882a593Smuzhiyun #endif /* 1250 PASS2 || 112x PASS1 || 1480 */
344*4882a593Smuzhiyun 
345*4882a593Smuzhiyun 
346*4882a593Smuzhiyun /* ********************************************************************** */
347*4882a593Smuzhiyun 
348*4882a593Smuzhiyun 
349*4882a593Smuzhiyun #endif
350