xref: /utopia/UTPA2-700.0.x/modules/uart/hal/manhattan/uart/regUART.h (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1*53ee8cc1Swenshuai.xi //<MStar Software>
2*53ee8cc1Swenshuai.xi //******************************************************************************
3*53ee8cc1Swenshuai.xi // MStar Software
4*53ee8cc1Swenshuai.xi // Copyright (c) 2010 - 2012 MStar Semiconductor, Inc. All rights reserved.
5*53ee8cc1Swenshuai.xi // All software, firmware and related documentation herein ("MStar Software") are
6*53ee8cc1Swenshuai.xi // intellectual property of MStar Semiconductor, Inc. ("MStar") and protected by
7*53ee8cc1Swenshuai.xi // law, including, but not limited to, copyright law and international treaties.
8*53ee8cc1Swenshuai.xi // Any use, modification, reproduction, retransmission, or republication of all
9*53ee8cc1Swenshuai.xi // or part of MStar Software is expressly prohibited, unless prior written
10*53ee8cc1Swenshuai.xi // permission has been granted by MStar.
11*53ee8cc1Swenshuai.xi //
12*53ee8cc1Swenshuai.xi // By accessing, browsing and/or using MStar Software, you acknowledge that you
13*53ee8cc1Swenshuai.xi // have read, understood, and agree, to be bound by below terms ("Terms") and to
14*53ee8cc1Swenshuai.xi // comply with all applicable laws and regulations:
15*53ee8cc1Swenshuai.xi //
16*53ee8cc1Swenshuai.xi // 1. MStar shall retain any and all right, ownership and interest to MStar
17*53ee8cc1Swenshuai.xi //    Software and any modification/derivatives thereof.
18*53ee8cc1Swenshuai.xi //    No right, ownership, or interest to MStar Software and any
19*53ee8cc1Swenshuai.xi //    modification/derivatives thereof is transferred to you under Terms.
20*53ee8cc1Swenshuai.xi //
21*53ee8cc1Swenshuai.xi // 2. You understand that MStar Software might include, incorporate or be
22*53ee8cc1Swenshuai.xi //    supplied together with third party`s software and the use of MStar
23*53ee8cc1Swenshuai.xi //    Software may require additional licenses from third parties.
24*53ee8cc1Swenshuai.xi //    Therefore, you hereby agree it is your sole responsibility to separately
25*53ee8cc1Swenshuai.xi //    obtain any and all third party right and license necessary for your use of
26*53ee8cc1Swenshuai.xi //    such third party`s software.
27*53ee8cc1Swenshuai.xi //
28*53ee8cc1Swenshuai.xi // 3. MStar Software and any modification/derivatives thereof shall be deemed as
29*53ee8cc1Swenshuai.xi //    MStar`s confidential information and you agree to keep MStar`s
30*53ee8cc1Swenshuai.xi //    confidential information in strictest confidence and not disclose to any
31*53ee8cc1Swenshuai.xi //    third party.
32*53ee8cc1Swenshuai.xi //
33*53ee8cc1Swenshuai.xi // 4. MStar Software is provided on an "AS IS" basis without warranties of any
34*53ee8cc1Swenshuai.xi //    kind. Any warranties are hereby expressly disclaimed by MStar, including
35*53ee8cc1Swenshuai.xi //    without limitation, any warranties of merchantability, non-infringement of
36*53ee8cc1Swenshuai.xi //    intellectual property rights, fitness for a particular purpose, error free
37*53ee8cc1Swenshuai.xi //    and in conformity with any international standard.  You agree to waive any
38*53ee8cc1Swenshuai.xi //    claim against MStar for any loss, damage, cost or expense that you may
39*53ee8cc1Swenshuai.xi //    incur related to your use of MStar Software.
40*53ee8cc1Swenshuai.xi //    In no event shall MStar be liable for any direct, indirect, incidental or
41*53ee8cc1Swenshuai.xi //    consequential damages, including without limitation, lost of profit or
42*53ee8cc1Swenshuai.xi //    revenues, lost or damage of data, and unauthorized system use.
43*53ee8cc1Swenshuai.xi //    You agree that this Section 4 shall still apply without being affected
44*53ee8cc1Swenshuai.xi //    even if MStar Software has been modified by MStar in accordance with your
45*53ee8cc1Swenshuai.xi //    request or instruction for your use, except otherwise agreed by both
46*53ee8cc1Swenshuai.xi //    parties in writing.
47*53ee8cc1Swenshuai.xi //
48*53ee8cc1Swenshuai.xi // 5. If requested, MStar may from time to time provide technical supports or
49*53ee8cc1Swenshuai.xi //    services in relation with MStar Software to you for your use of
50*53ee8cc1Swenshuai.xi //    MStar Software in conjunction with your or your customer`s product
51*53ee8cc1Swenshuai.xi //    ("Services").
52*53ee8cc1Swenshuai.xi //    You understand and agree that, except otherwise agreed by both parties in
53*53ee8cc1Swenshuai.xi //    writing, Services are provided on an "AS IS" basis and the warranty
54*53ee8cc1Swenshuai.xi //    disclaimer set forth in Section 4 above shall apply.
55*53ee8cc1Swenshuai.xi //
56*53ee8cc1Swenshuai.xi // 6. Nothing contained herein shall be construed as by implication, estoppels
57*53ee8cc1Swenshuai.xi //    or otherwise:
58*53ee8cc1Swenshuai.xi //    (a) conferring any license or right to use MStar name, trademark, service
59*53ee8cc1Swenshuai.xi //        mark, symbol or any other identification;
60*53ee8cc1Swenshuai.xi //    (b) obligating MStar or any of its affiliates to furnish any person,
61*53ee8cc1Swenshuai.xi //        including without limitation, you and your customers, any assistance
62*53ee8cc1Swenshuai.xi //        of any kind whatsoever, or any information; or
63*53ee8cc1Swenshuai.xi //    (c) conferring any license or right under any intellectual property right.
64*53ee8cc1Swenshuai.xi //
65*53ee8cc1Swenshuai.xi // 7. These terms shall be governed by and construed in accordance with the laws
66*53ee8cc1Swenshuai.xi //    of Taiwan, R.O.C., excluding its conflict of law rules.
67*53ee8cc1Swenshuai.xi //    Any and all dispute arising out hereof or related hereto shall be finally
68*53ee8cc1Swenshuai.xi //    settled by arbitration referred to the Chinese Arbitration Association,
69*53ee8cc1Swenshuai.xi //    Taipei in accordance with the ROC Arbitration Law and the Arbitration
70*53ee8cc1Swenshuai.xi //    Rules of the Association by three (3) arbitrators appointed in accordance
71*53ee8cc1Swenshuai.xi //    with the said Rules.
72*53ee8cc1Swenshuai.xi //    The place of arbitration shall be in Taipei, Taiwan and the language shall
73*53ee8cc1Swenshuai.xi //    be English.
74*53ee8cc1Swenshuai.xi //    The arbitration award shall be final and binding to both parties.
75*53ee8cc1Swenshuai.xi //
76*53ee8cc1Swenshuai.xi //******************************************************************************
77*53ee8cc1Swenshuai.xi //<MStar Software>
78*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
79*53ee8cc1Swenshuai.xi //
80*53ee8cc1Swenshuai.xi // Copyright (c) 2006-2007 MStar Semiconductor, Inc.
81*53ee8cc1Swenshuai.xi // All rights reserved.
82*53ee8cc1Swenshuai.xi //
83*53ee8cc1Swenshuai.xi // Unless otherwise stipulated in writing, any and all information contained
84*53ee8cc1Swenshuai.xi // herein regardless in any format shall remain the sole proprietary of
85*53ee8cc1Swenshuai.xi // MStar Semiconductor Inc. and be kept in strict confidence
86*53ee8cc1Swenshuai.xi // ("MStar Confidential Information") by the recipient.
87*53ee8cc1Swenshuai.xi // Any unauthorized act including without limitation unauthorized disclosure,
88*53ee8cc1Swenshuai.xi // copying, use, reproduction, sale, distribution, modification, disassembling,
89*53ee8cc1Swenshuai.xi // reverse engineering and compiling of the contents of MStar Confidential
90*53ee8cc1Swenshuai.xi // Information is unlawful and strictly prohibited. MStar hereby reserves the
91*53ee8cc1Swenshuai.xi // rights to any and all damages, losses, costs and expenses resulting therefrom.
92*53ee8cc1Swenshuai.xi //
93*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
94*53ee8cc1Swenshuai.xi 
95*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////////////////////////
96*53ee8cc1Swenshuai.xi //
97*53ee8cc1Swenshuai.xi //  File name: regUART.h
98*53ee8cc1Swenshuai.xi //  Description: UART Register Definition
99*53ee8cc1Swenshuai.xi //
100*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////////////////////////
101*53ee8cc1Swenshuai.xi 
102*53ee8cc1Swenshuai.xi #ifndef _REG_UART_H_
103*53ee8cc1Swenshuai.xi #define _REG_UART_H_
104*53ee8cc1Swenshuai.xi 
105*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
106*53ee8cc1Swenshuai.xi //  Global Definition
107*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
108*53ee8cc1Swenshuai.xi 
109*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
110*53ee8cc1Swenshuai.xi //  Compliation Option
111*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
112*53ee8cc1Swenshuai.xi 
113*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
114*53ee8cc1Swenshuai.xi //  Hardware Capability
115*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
116*53ee8cc1Swenshuai.xi #if defined(MCU_AEON)
117*53ee8cc1Swenshuai.xi #define PIU_UART_VER                1
118*53ee8cc1Swenshuai.xi #endif
119*53ee8cc1Swenshuai.xi 
120*53ee8cc1Swenshuai.xi #if defined(MCU_MIPS_4KE)
121*53ee8cc1Swenshuai.xi #define PIU_UART_VER                2
122*53ee8cc1Swenshuai.xi #endif
123*53ee8cc1Swenshuai.xi 
124*53ee8cc1Swenshuai.xi #if defined(MCU_MIPS_34K)
125*53ee8cc1Swenshuai.xi #define PIU_UART_VER                2
126*53ee8cc1Swenshuai.xi #endif
127*53ee8cc1Swenshuai.xi 
128*53ee8cc1Swenshuai.xi #if defined(MCU_MIPS_74K)
129*53ee8cc1Swenshuai.xi #define PIU_UART_VER                2
130*53ee8cc1Swenshuai.xi #endif
131*53ee8cc1Swenshuai.xi 
132*53ee8cc1Swenshuai.xi #if defined(MCU_ARM_CA53)
133*53ee8cc1Swenshuai.xi #define PIU_UART_VER                2
134*53ee8cc1Swenshuai.xi #endif
135*53ee8cc1Swenshuai.xi 
136*53ee8cc1Swenshuai.xi #ifndef PIU_UART_VER
137*53ee8cc1Swenshuai.xi #define PIU_UART_VER     2
138*53ee8cc1Swenshuai.xi #endif
139*53ee8cc1Swenshuai.xi 
140*53ee8cc1Swenshuai.xi #define UART_AEON_NUM               3
141*53ee8cc1Swenshuai.xi #define UART_PIU_NUM                3
142*53ee8cc1Swenshuai.xi 
143*53ee8cc1Swenshuai.xi #define UART_AEON_ADDR              0x90000000
144*53ee8cc1Swenshuai.xi #define UART_AEON_IRQ               E_INT_IRQ_UART0
145*53ee8cc1Swenshuai.xi 
146*53ee8cc1Swenshuai.xi #define UART0_PIU_ADDR              0x1300
147*53ee8cc1Swenshuai.xi #define UART0_PIU_IRQ               E_INT_IRQ_UART0
148*53ee8cc1Swenshuai.xi 
149*53ee8cc1Swenshuai.xi #define UART1_PIU_ADDR              0x20C00
150*53ee8cc1Swenshuai.xi #define UART1_PIU_IRQ               E_INT_IRQ_UART1
151*53ee8cc1Swenshuai.xi 
152*53ee8cc1Swenshuai.xi #define UART2_PIU_ADDR              0x20C80
153*53ee8cc1Swenshuai.xi #define UART2_PIU_IRQ               E_INT_IRQ_UART2
154*53ee8cc1Swenshuai.xi 
155*53ee8cc1Swenshuai.xi #define FUART_PIU_ADDR              0x20D00
156*53ee8cc1Swenshuai.xi #define FUART_PIU_IRQ               E_INT_IRQ_UART2MCU
157*53ee8cc1Swenshuai.xi 
158*53ee8cc1Swenshuai.xi #if defined(MCU_AEON)
159*53ee8cc1Swenshuai.xi #define UART_CLK_FREQ               172800000
160*53ee8cc1Swenshuai.xi #endif
161*53ee8cc1Swenshuai.xi 
162*53ee8cc1Swenshuai.xi #if defined(MCU_MIPS_4KE)
163*53ee8cc1Swenshuai.xi #define UART_CLK_FREQ               123000000//123000000
164*53ee8cc1Swenshuai.xi #endif
165*53ee8cc1Swenshuai.xi 
166*53ee8cc1Swenshuai.xi #if defined(MCU_MIPS_34K)
167*53ee8cc1Swenshuai.xi #define UART_CLK_FREQ               123000000//123000000
168*53ee8cc1Swenshuai.xi #endif
169*53ee8cc1Swenshuai.xi 
170*53ee8cc1Swenshuai.xi #if defined(MCU_MIPS_74K)
171*53ee8cc1Swenshuai.xi #define UART_CLK_FREQ               123000000//123000000
172*53ee8cc1Swenshuai.xi #endif
173*53ee8cc1Swenshuai.xi 
174*53ee8cc1Swenshuai.xi #if defined(MCU_ARM_CA53)
175*53ee8cc1Swenshuai.xi #define UART_CLK_FREQ               123000000//123000000
176*53ee8cc1Swenshuai.xi #endif
177*53ee8cc1Swenshuai.xi 
178*53ee8cc1Swenshuai.xi #ifndef UART_CLK_FREQ
179*53ee8cc1Swenshuai.xi #define UART_CLK_FREQ               123000000//123000000
180*53ee8cc1Swenshuai.xi #endif
181*53ee8cc1Swenshuai.xi 
182*53ee8cc1Swenshuai.xi #ifndef UART_CLK_FREQ_172M
183*53ee8cc1Swenshuai.xi #define UART_CLK_FREQ_172M          172000000//172000000
184*53ee8cc1Swenshuai.xi #endif
185*53ee8cc1Swenshuai.xi 
186*53ee8cc1Swenshuai.xi #ifndef UART_CLK_FREQ_160M
187*53ee8cc1Swenshuai.xi #define UART_CLK_FREQ_160M          160000000//160000000
188*53ee8cc1Swenshuai.xi #endif
189*53ee8cc1Swenshuai.xi 
190*53ee8cc1Swenshuai.xi #ifndef UART_CLK_FREQ_144M
191*53ee8cc1Swenshuai.xi #define UART_CLK_FREQ_144M          144000000//144000000
192*53ee8cc1Swenshuai.xi #endif
193*53ee8cc1Swenshuai.xi 
194*53ee8cc1Swenshuai.xi #ifndef UART_CLK_FREQ_108M
195*53ee8cc1Swenshuai.xi #define UART_CLK_FREQ_108M          108000000//108000000
196*53ee8cc1Swenshuai.xi #endif
197*53ee8cc1Swenshuai.xi 
198*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
199*53ee8cc1Swenshuai.xi //  Type and Structure
200*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
201*53ee8cc1Swenshuai.xi 
202*53ee8cc1Swenshuai.xi //
203*53ee8cc1Swenshuai.xi // UART Register List
204*53ee8cc1Swenshuai.xi //
205*53ee8cc1Swenshuai.xi 
206*53ee8cc1Swenshuai.xi #if (PIU_UART_VER == 1)
207*53ee8cc1Swenshuai.xi #define UART_RX         0       // In:  Receive buffer (DLAB=0)
208*53ee8cc1Swenshuai.xi #define UART_TX         0       // Out: Transmit buffer (DLAB=0)
209*53ee8cc1Swenshuai.xi #define UART_DLL        0       // Out: Divisor Latch Low (DLAB=1)
210*53ee8cc1Swenshuai.xi #define UART_DLM        1       // Out: Divisor Latch High (DLAB=1)
211*53ee8cc1Swenshuai.xi #define UART_IER        1       // Out: Interrupt Enable Register
212*53ee8cc1Swenshuai.xi #define UART_IIR        2       // In:  Interrupt ID Register
213*53ee8cc1Swenshuai.xi #define UART_FCR        2       // Out: FIFO Control Register
214*53ee8cc1Swenshuai.xi #define UART_LCR        3       // Out: Line Control Register
215*53ee8cc1Swenshuai.xi #define UART_MCR        4       // Out: Modem Control Register
216*53ee8cc1Swenshuai.xi #define UART_LSR        5       // In:  Line Status Register
217*53ee8cc1Swenshuai.xi #define UART_USR        7
218*53ee8cc1Swenshuai.xi #endif
219*53ee8cc1Swenshuai.xi 
220*53ee8cc1Swenshuai.xi #if (PIU_UART_VER == 2)
221*53ee8cc1Swenshuai.xi #define UART_RX        (0 * 2)  // In:  Receive buffer (DLAB=0)
222*53ee8cc1Swenshuai.xi #define UART_TX        (0 * 2)  // Out: Transmit buffer (DLAB=0)
223*53ee8cc1Swenshuai.xi #define UART_DLL       (0 * 2)  // Out: Divisor Latch Low (DLAB=1)
224*53ee8cc1Swenshuai.xi #define UART_DLM       (1 * 2)  // Out: Divisor Latch High (DLAB=1)
225*53ee8cc1Swenshuai.xi #define UART_IER       (1 * 2)  // Out: Interrupt Enable Register
226*53ee8cc1Swenshuai.xi #define UART_IIR       (2 * 2)  // In:  Interrupt ID Register
227*53ee8cc1Swenshuai.xi #define UART_FCR       (2 * 2)  // Out: FIFO Control Register
228*53ee8cc1Swenshuai.xi #define UART_LCR       (3 * 2)  // Out: Line Control Register
229*53ee8cc1Swenshuai.xi #define UART_MCR       (4 * 2)	// Out: Modem Control Register
230*53ee8cc1Swenshuai.xi #define UART_LSR       (5 * 2)  // In:  Line Status Register
231*53ee8cc1Swenshuai.xi #define UART_MSR       (6 * 2)  // In:  Modem Status Register
232*53ee8cc1Swenshuai.xi #define UART_USR       (7 * 2)  // Out: USER Status Register
233*53ee8cc1Swenshuai.xi #endif
234*53ee8cc1Swenshuai.xi 
235*53ee8cc1Swenshuai.xi #define UART_FIFO                   1           // Divisor Latch Low
236*53ee8cc1Swenshuai.xi #define UART_EFR                    2              // I/O: Extended Features Register
237*53ee8cc1Swenshuai.xi #define UART_RB                     3           // optional: set rf_pop delay for memack ; [3:0] rf_pop_delay; [6] rf_pop_mode_sel ; [7] reg_rb_read_ack
238*53ee8cc1Swenshuai.xi                                                 // (DLAB=1, 16C660 only)
239*53ee8cc1Swenshuai.xi #define UART_SCR                    7           // I/O: Scratch Register
240*53ee8cc1Swenshuai.xi #define UART_SCCR                   8           // Smartcard Control Register
241*53ee8cc1Swenshuai.xi #define UART_SCSR                   9           // Smartcard Status Register
242*53ee8cc1Swenshuai.xi #define UART_SCFC                   10          // Smartcard Fifo Count Register
243*53ee8cc1Swenshuai.xi #define UART_SCFI                   11          // Smartcard Fifo Index Register
244*53ee8cc1Swenshuai.xi #define UART_SCFR                   12          // Smartcard Fifo Read Delay Register
245*53ee8cc1Swenshuai.xi #define UART_SCMR                   13          // Smartcard Mode Register
246*53ee8cc1Swenshuai.xi #define UART_DL                     0           // Divisor Latch
247*53ee8cc1Swenshuai.xi #define UART_DL1_LSB                0           // Divisor Latch Low
248*53ee8cc1Swenshuai.xi #define UART_DL2_MSB                0           // Divisor Latch High
249*53ee8cc1Swenshuai.xi 
250*53ee8cc1Swenshuai.xi //
251*53ee8cc1Swenshuai.xi // UART_FCR(2)
252*53ee8cc1Swenshuai.xi // FIFO Control Register (16650 only)
253*53ee8cc1Swenshuai.xi //
254*53ee8cc1Swenshuai.xi #define UART_FCR_ENABLE_FIFO        0x01        // Enable the FIFO
255*53ee8cc1Swenshuai.xi #define UART_FCR_CLEAR_RCVR         0x02        // Clear the RCVR FIFO
256*53ee8cc1Swenshuai.xi #define UART_FCR_CLEAR_XMIT         0x04        // Clear the XMIT FIFO
257*53ee8cc1Swenshuai.xi #define UART_FCR_DMA_SELECT         0x08        // For DMA applications
258*53ee8cc1Swenshuai.xi #define UART_FCR_TRIGGER_MASK       0xC0        // Mask for the FIFO trigger range
259*53ee8cc1Swenshuai.xi //#define UART_FCR_TRIGGER_1          0x00        // Mask for trigger set at 1
260*53ee8cc1Swenshuai.xi //#define UART_FCR_TRIGGER_4          0x40        // Mask for trigger set at 4
261*53ee8cc1Swenshuai.xi #define UART_FCR_TRIGGER_8          0x80        // Mask for trigger set at 8
262*53ee8cc1Swenshuai.xi #define UART_FCR_TRIGGER_14         0xC0        // Mask for trigger set at 14
263*53ee8cc1Swenshuai.xi 
264*53ee8cc1Swenshuai.xi //
265*53ee8cc1Swenshuai.xi // UART_LCR(3)
266*53ee8cc1Swenshuai.xi // Line Control Register
267*53ee8cc1Swenshuai.xi // Note: if the word length is 5 bits (UART_LCR_WLEN5), then setting
268*53ee8cc1Swenshuai.xi // UART_LCR_STOP will select 1.5 stop bits, not 2 stop bits.
269*53ee8cc1Swenshuai.xi //
270*53ee8cc1Swenshuai.xi #define UART_LCR_WLEN5              0x00        // Wordlength: 5 bits
271*53ee8cc1Swenshuai.xi #define UART_LCR_WLEN6              0x01        // Wordlength: 6 bits
272*53ee8cc1Swenshuai.xi #define UART_LCR_WLEN7              0x02        // Wordlength: 7 bits
273*53ee8cc1Swenshuai.xi #define UART_LCR_WLEN8              0x03        // Wordlength: 8 bits
274*53ee8cc1Swenshuai.xi #define UART_LCR_STOP1              0x00        // Stop bits: 0=1 stop bit, 1= 2 stop bits
275*53ee8cc1Swenshuai.xi #define UART_LCR_STOP2              0x04        // Stop bits: 0=1 stop bit, 1= 2 stop bits
276*53ee8cc1Swenshuai.xi #define UART_LCR_PARITY             0x08        // Parity Enable
277*53ee8cc1Swenshuai.xi #define UART_LCR_EPAR               0x10        // Even parity select
278*53ee8cc1Swenshuai.xi #define UART_LCR_SPAR               0x20        // Stick parity (?)
279*53ee8cc1Swenshuai.xi #define UART_LCR_SBC                0x40        // Set break control
280*53ee8cc1Swenshuai.xi #define UART_LCR_DLAB               0x80        // Divisor latch access bit
281*53ee8cc1Swenshuai.xi 
282*53ee8cc1Swenshuai.xi // UART_FCR(4)
283*53ee8cc1Swenshuai.xi // FIFO Control Register (16650 only)
284*53ee8cc1Swenshuai.xi #define UART_FCR_MASK               0x00FF
285*53ee8cc1Swenshuai.xi #define UART_FCR_RXFIFO_CLR         0x0001
286*53ee8cc1Swenshuai.xi #define UART_FCR_TXFIFO_CLR         0x0002
287*53ee8cc1Swenshuai.xi #define UART_FCR_TRIGGER_0          0x0000
288*53ee8cc1Swenshuai.xi #define UART_FCR_TRIGGER_1          0x0010
289*53ee8cc1Swenshuai.xi #define UART_FCR_TRIGGER_2          0x0020
290*53ee8cc1Swenshuai.xi #define UART_FCR_TRIGGER_3          0x0030
291*53ee8cc1Swenshuai.xi #define UART_FCR_TRIGGER_4          0x0040
292*53ee8cc1Swenshuai.xi #define UART_FCR_TRIGGER_5          0x0050
293*53ee8cc1Swenshuai.xi #define UART_FCR_TRIGGER_6          0x0060
294*53ee8cc1Swenshuai.xi #define UART_FCR_TRIGGER_7          0x0070
295*53ee8cc1Swenshuai.xi 
296*53ee8cc1Swenshuai.xi //
297*53ee8cc1Swenshuai.xi // UART_LSR(5)
298*53ee8cc1Swenshuai.xi // Line Status Register
299*53ee8cc1Swenshuai.xi //
300*53ee8cc1Swenshuai.xi #define UART_LSR_DR                 0x01          // Receiver data ready
301*53ee8cc1Swenshuai.xi #define UART_LSR_OE                 0x02          // Overrun error indicator
302*53ee8cc1Swenshuai.xi #define UART_LSR_PE                 0x04          // Parity error indicator
303*53ee8cc1Swenshuai.xi #define UART_LSR_FE                 0x08          // Frame error indicator
304*53ee8cc1Swenshuai.xi #define UART_LSR_BI                 0x10          // Break interrupt indicator
305*53ee8cc1Swenshuai.xi #define UART_LSR_THRE               0x20          // Transmit-hold-register empty
306*53ee8cc1Swenshuai.xi #define UART_LSR_TEMT               0x40          // Transmitter empty
307*53ee8cc1Swenshuai.xi 
308*53ee8cc1Swenshuai.xi // UART_LSR(6)
309*53ee8cc1Swenshuai.xi // Line Status Register
310*53ee8cc1Swenshuai.xi #define UART_LSR_TXFIFO_FULL        0x0080      //
311*53ee8cc1Swenshuai.xi 
312*53ee8cc1Swenshuai.xi //
313*53ee8cc1Swenshuai.xi // UART_IIR(2)
314*53ee8cc1Swenshuai.xi // Interrupt Identification Register
315*53ee8cc1Swenshuai.xi //
316*53ee8cc1Swenshuai.xi 
317*53ee8cc1Swenshuai.xi #define UART_IIR_MSI                0x00          // Modem status interrupt
318*53ee8cc1Swenshuai.xi #define UART_IIR_NO_INT             0x01          // No interrupts pending
319*53ee8cc1Swenshuai.xi #define UART_IIR_THRI               0x02          // Transmitter holding register empty
320*53ee8cc1Swenshuai.xi #define UART_IIR_TOI                0x0c          // Receive time out interrupt
321*53ee8cc1Swenshuai.xi #define UART_IIR_RDI                0x04          // Receiver data interrupt
322*53ee8cc1Swenshuai.xi #define UART_IIR_RLSI               0x06          // Receiver line status interrupt
323*53ee8cc1Swenshuai.xi #define UART_IIR_ID                 0x06          // Mask for the interrupt ID
324*53ee8cc1Swenshuai.xi 
325*53ee8cc1Swenshuai.xi //
326*53ee8cc1Swenshuai.xi // UART_IER(1)
327*53ee8cc1Swenshuai.xi // Interrupt Enable Register
328*53ee8cc1Swenshuai.xi //
329*53ee8cc1Swenshuai.xi #define UART_IER_RDI                0x01        // Enable receiver data available interrupt
330*53ee8cc1Swenshuai.xi #define UART_IER_THRI               0x02        // Enable Transmitter holding reg empty int
331*53ee8cc1Swenshuai.xi #define UART_IER_RLSI               0x04        // Enable receiver line status interrupt
332*53ee8cc1Swenshuai.xi #define UART_IER_MSI                0x08        // Enable Modem status interrupt
333*53ee8cc1Swenshuai.xi 
334*53ee8cc1Swenshuai.xi // UART_IER(3)
335*53ee8cc1Swenshuai.xi // Interrupt Enable Register
336*53ee8cc1Swenshuai.xi #define UART_IER_MASK               0xFF00
337*53ee8cc1Swenshuai.xi #define UART_IER_RDA                0x0100      // Enable receiver data available interrupt
338*53ee8cc1Swenshuai.xi #define UART_IER_THRE               0x0200      // Enable Transmitter holding reg empty int
339*53ee8cc1Swenshuai.xi 
340*53ee8cc1Swenshuai.xi //
341*53ee8cc1Swenshuai.xi // UART_MCR(4)
342*53ee8cc1Swenshuai.xi // Modem Control Register
343*53ee8cc1Swenshuai.xi //
344*53ee8cc1Swenshuai.xi #define UART_MCR_DTR                0x01        // DTR complement
345*53ee8cc1Swenshuai.xi #define UART_MCR_RTS                0x02        // RTS complement
346*53ee8cc1Swenshuai.xi #define UART_MCR_OUT1               0x04        // Out1 complement
347*53ee8cc1Swenshuai.xi #define UART_MCR_OUT2               0x08        // Out2 complement
348*53ee8cc1Swenshuai.xi #define UART_MCR_LOOP               0x10        // Enable loopback test mode
349*53ee8cc1Swenshuai.xi 
350*53ee8cc1Swenshuai.xi #define UART_MCR_FAST               0x20        // Slow / Fast baud rate mode
351*53ee8cc1Swenshuai.xi 
352*53ee8cc1Swenshuai.xi // UART_LCR(5)  //2008/07/09 Nick
353*53ee8cc1Swenshuai.xi #define UART_LCR_MASK               0xFF00
354*53ee8cc1Swenshuai.xi #define UART_LCR_CHAR_BITS_5        0x0000      // Wordlength: 5 bits
355*53ee8cc1Swenshuai.xi #define UART_LCR_CHAR_BITS_6        0x0100      // Wordlength: 6 bits
356*53ee8cc1Swenshuai.xi #define UART_LCR_CHAR_BITS_7        0x0200      // Wordlength: 7 bits
357*53ee8cc1Swenshuai.xi #define UART_LCR_CHAR_BITS_8        0x0300      // Wordlength: 8 bits
358*53ee8cc1Swenshuai.xi #define UART_LCR_STOP_BITS_1        0x0000      // 1 bit
359*53ee8cc1Swenshuai.xi #define UART_LCR_STOP_BITS_2        0x0400      // 1.5, 2 bit
360*53ee8cc1Swenshuai.xi #define UART_LCR_PARITY_EN          0x0800      // Parity Enable
361*53ee8cc1Swenshuai.xi #define UART_LCR_EVEN_PARITY_SEL    0x1000      // Even parity select
362*53ee8cc1Swenshuai.xi #define UART_LCR_DIVISOR_EN         0x8000      // Divisor latch access bit
363*53ee8cc1Swenshuai.xi 
364*53ee8cc1Swenshuai.xi //
365*53ee8cc1Swenshuai.xi // UART_MSR(6)
366*53ee8cc1Swenshuai.xi // Modem Status Register
367*53ee8cc1Swenshuai.xi //
368*53ee8cc1Swenshuai.xi #define UART_MSR_ANY_DELTA          0x0F        // Any of the delta bits!
369*53ee8cc1Swenshuai.xi #define UART_MSR_DCTS               0x01        // Delta CTS
370*53ee8cc1Swenshuai.xi #define UART_MSR_DDSR               0x02        // Delta DSR
371*53ee8cc1Swenshuai.xi #define UART_MSR_TERI               0x04        // Trailing edge ring indicator
372*53ee8cc1Swenshuai.xi #define UART_MSR_DDCD               0x08        // Delta DCD
373*53ee8cc1Swenshuai.xi #define UART_MSR_CTS                0x10        // Clear to Send
374*53ee8cc1Swenshuai.xi #define UART_MSR_DSR                0x20        // Data Set Ready
375*53ee8cc1Swenshuai.xi #define UART_MSR_RI                 0x40        // Ring Indicator
376*53ee8cc1Swenshuai.xi #define UART_MSR_DCD                0x80        // Data Carrier Detect
377*53ee8cc1Swenshuai.xi 
378*53ee8cc1Swenshuai.xi //
379*53ee8cc1Swenshuai.xi // UART_EFR(2, UART_LCR_DLAB)
380*53ee8cc1Swenshuai.xi // These are the definitions for the Extended Features Register
381*53ee8cc1Swenshuai.xi // (StarTech 16C660 only, when DLAB=1)
382*53ee8cc1Swenshuai.xi //
383*53ee8cc1Swenshuai.xi #define UART_EFR_ENI                0x10        // Enhanced Interrupt
384*53ee8cc1Swenshuai.xi #define UART_EFR_SCD                0x20        // Special character detect
385*53ee8cc1Swenshuai.xi #define UART_EFR_RTS                0x40        // RTS flow control
386*53ee8cc1Swenshuai.xi #define UART_EFR_CTS                0x80        // CTS flow control
387*53ee8cc1Swenshuai.xi 
388*53ee8cc1Swenshuai.xi //
389*53ee8cc1Swenshuai.xi // UART_SCCR(8)
390*53ee8cc1Swenshuai.xi // SmartCard Control Register
391*53ee8cc1Swenshuai.xi //
392*53ee8cc1Swenshuai.xi #define UART_SCCR_MASK_CARDIN       0x01        // Smartcard card in interrupt mask
393*53ee8cc1Swenshuai.xi #define UART_SCCR_MASK_CARDOUT      0x02        // Smartcard card out interrupt mask
394*53ee8cc1Swenshuai.xi #define UART_SCCR_TX_BINV           0x04        // Smartcard Tx bit invert
395*53ee8cc1Swenshuai.xi #define UART_SCCR_TX_BSWAP          0x08        // Smartcard Tx bit swap
396*53ee8cc1Swenshuai.xi #define UART_SCCR_RST               0x10        // Smartcard reset 0->1, UART Rx enable 1
397*53ee8cc1Swenshuai.xi #define UART_SCCR_RX_BINV           0x20        // Smartcard Rx bit inverse
398*53ee8cc1Swenshuai.xi #define UART_SCCR_RX_BSWAP          0x40        // Smartcard Rx bit swap
399*53ee8cc1Swenshuai.xi 
400*53ee8cc1Swenshuai.xi //
401*53ee8cc1Swenshuai.xi // UART_SCSR(9)
402*53ee8cc1Swenshuai.xi // Smartcard Status Register
403*53ee8cc1Swenshuai.xi //
404*53ee8cc1Swenshuai.xi #define UART_SCSR_CLK               0x01        // Smartcard clock out
405*53ee8cc1Swenshuai.xi #define UART_SCSR_INT_CARDIN        0x02        // Smartcard card in interrupt
406*53ee8cc1Swenshuai.xi #define UART_SCSR_INT_CARDOUT       0x04        // Smartcard card out interrupt
407*53ee8cc1Swenshuai.xi #define UART_SCSR_DETECT            0x08        // Smartcard detection status
408*53ee8cc1Swenshuai.xi 
409*53ee8cc1Swenshuai.xi //
410*53ee8cc1Swenshuai.xi // UART_SCFC(10), UART_SCFI(11), UART_SCFR(12)
411*53ee8cc1Swenshuai.xi // Smartcard Fifo Register
412*53ee8cc1Swenshuai.xi //
413*53ee8cc1Swenshuai.xi #define UART_SCFC_MASK              0x07
414*53ee8cc1Swenshuai.xi #define UART_SCFI_MASK              0x0F
415*53ee8cc1Swenshuai.xi #define UART_SCFR_MASK              0x07
416*53ee8cc1Swenshuai.xi 
417*53ee8cc1Swenshuai.xi 
418*53ee8cc1Swenshuai.xi //
419*53ee8cc1Swenshuai.xi // UART_SCFR(12)
420*53ee8cc1Swenshuai.xi // Smartcard Fifo Read Delay Register
421*53ee8cc1Swenshuai.xi #define UART_SCFR_DELAY_MASK        0x03
422*53ee8cc1Swenshuai.xi #define UART_SCFR_V_HIGH            0x04
423*53ee8cc1Swenshuai.xi #define UART_SCFR_V_ENABLE          0x08        // Vcc = (Vcc_high ^ (Vcc_en & UART_SCSR_INT_CARDOUT))
424*53ee8cc1Swenshuai.xi 
425*53ee8cc1Swenshuai.xi //
426*53ee8cc1Swenshuai.xi // UART_SCMR(13)
427*53ee8cc1Swenshuai.xi // SMart Mode Register
428*53ee8cc1Swenshuai.xi //
429*53ee8cc1Swenshuai.xi #define UART_SCMR_RETRY_MASK        0x1F
430*53ee8cc1Swenshuai.xi #define UART_SCMR_SMARTCARD         0x20
431*53ee8cc1Swenshuai.xi #define UART_SCMR_2STOP_BIT         0x40
432*53ee8cc1Swenshuai.xi 
433*53ee8cc1Swenshuai.xi //both Transmitter empty / Transmit-hold-register empty
434*53ee8cc1Swenshuai.xi #define BOTH_EMPTY (UART_LSR_TEMT | UART_LSR_THRE)
435*53ee8cc1Swenshuai.xi 
436*53ee8cc1Swenshuai.xi // UART_SEL_TYPE
437*53ee8cc1Swenshuai.xi #define UART_SEL_HK_R2          0x00
438*53ee8cc1Swenshuai.xi #define UART_SEL_VD_MHEG5       0x02
439*53ee8cc1Swenshuai.xi #define UART_SEL_TSP            0x03
440*53ee8cc1Swenshuai.xi #define UART_SEL_PIU_UART0      0x04
441*53ee8cc1Swenshuai.xi #define UART_SEL_PIU_UART1      0x05
442*53ee8cc1Swenshuai.xi #define UART_SEL_PIU_UART2      0x06
443*53ee8cc1Swenshuai.xi #define UART_SEL_PIU_FAST_UART  0x07
444*53ee8cc1Swenshuai.xi #define UART_SEL_DMD_MCU51_TXD0 0x08
445*53ee8cc1Swenshuai.xi #define UART_SEL_DMD_MCU51_TXD1 0x09
446*53ee8cc1Swenshuai.xi #define UART_SEL_VD_MCU51_TXD0  0x0A
447*53ee8cc1Swenshuai.xi #define UART_SEL_VD_MCU51_TXD1  0x0B
448*53ee8cc1Swenshuai.xi #define UART_SEL_AUDIO_R2       0x0C
449*53ee8cc1Swenshuai.xi #define UART_SEL_SECURE_R2      0x0D
450*53ee8cc1Swenshuai.xi #define UART_SEL_OFF            0x0F
451*53ee8cc1Swenshuai.xi 
452*53ee8cc1Swenshuai.xi //
453*53ee8cc1Swenshuai.xi // PM_SLEEP
454*53ee8cc1Swenshuai.xi // for UART RX enable and switch MCU & PM51
455*53ee8cc1Swenshuai.xi //
456*53ee8cc1Swenshuai.xi #define REG_PM_SLEEP 0x0E00
457*53ee8cc1Swenshuai.xi #define REG_PM_UART_CTRL (REG_PM_SLEEP + (0x09*2) + 1)
458*53ee8cc1Swenshuai.xi 	#define _uart_rx_enable     BIT3
459*53ee8cc1Swenshuai.xi 	#define _reg_hk51_uart0_en  BIT4
460*53ee8cc1Swenshuai.xi 
461*53ee8cc1Swenshuai.xi //
462*53ee8cc1Swenshuai.xi // CHIP_TOP
463*53ee8cc1Swenshuai.xi // for UART PAD Select
464*53ee8cc1Swenshuai.xi //
465*53ee8cc1Swenshuai.xi #define CHIP_REG_BASE 0x1E00
466*53ee8cc1Swenshuai.xi #define CHIP_REG_FastUART                  (CHIP_REG_BASE+ (0x02*2))
467*53ee8cc1Swenshuai.xi     #define CHIP_FastUART_PAD_1            (BIT4)
468*53ee8cc1Swenshuai.xi 	#define CHIP_FastUART_PAD_2            (BIT5)
469*53ee8cc1Swenshuai.xi 	#define CHIP_FastUART_PAD_3            (BIT4|BIT5)
470*53ee8cc1Swenshuai.xi 	#define CHIP_FastUART_PAD_MASK            (BIT4|BIT5)
471*53ee8cc1Swenshuai.xi #define CHIP_REG_FourthUART                  (CHIP_REG_BASE+ (0x02*2))
472*53ee8cc1Swenshuai.xi     #define CHIP_FourthUART_PAD_1            (BIT6)
473*53ee8cc1Swenshuai.xi 	#define CHIP_FourthUART_PAD_2            (BIT7)
474*53ee8cc1Swenshuai.xi 	#define CHIP_FourthUART_PAD_3            (BIT6|BIT7)
475*53ee8cc1Swenshuai.xi 	#define CHIP_FourthUART_PAD_MASK            (BIT6|BIT7)
476*53ee8cc1Swenshuai.xi #define CHIP_REG_SecondUART                  (CHIP_REG_BASE+ (0x02*2) + 1)
477*53ee8cc1Swenshuai.xi     #define CHIP_SecondUART_PAD_1            (BIT0)
478*53ee8cc1Swenshuai.xi 	#define CHIP_SecondUART_PAD_2            (BIT1)
479*53ee8cc1Swenshuai.xi 	#define CHIP_SecondUART_PAD_3            (BIT0|BIT1)
480*53ee8cc1Swenshuai.xi 	#define CHIP_SecondUART_PAD_MASK            (BIT0|BIT1)
481*53ee8cc1Swenshuai.xi #define CHIP_REG_ThirdUART                  (CHIP_REG_BASE+ (0x02*2) + 1)
482*53ee8cc1Swenshuai.xi     #define CHIP_ThirdUART_PAD_1            (BIT2)
483*53ee8cc1Swenshuai.xi 	#define CHIP_ThirdUART_PAD_2            (BIT3)
484*53ee8cc1Swenshuai.xi 	#define CHIP_ThirdUART_PAD_3            (BIT2|BIT3)
485*53ee8cc1Swenshuai.xi 	#define CHIP_ThirdUART_PAD_MASK            (BIT2|BIT3)
486*53ee8cc1Swenshuai.xi 
487*53ee8cc1Swenshuai.xi #define UART_CLOCK_REG_BASE (0xB00)
488*53ee8cc1Swenshuai.xi     #define UART0_CLK_REG     (UART_CLOCK_REG_BASE + 0x27)
489*53ee8cc1Swenshuai.xi     #define UART1_CLK_REG     (UART_CLOCK_REG_BASE + 0x28)
490*53ee8cc1Swenshuai.xi     #define UART2_CLK_REG     (UART_CLOCK_REG_BASE + 0x29)
491*53ee8cc1Swenshuai.xi     #define FUART_CLK_REG     (UART_CLOCK_REG_BASE + 0x2A)
492*53ee8cc1Swenshuai.xi 
493*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
494*53ee8cc1Swenshuai.xi //  Type and Structure
495*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
496*53ee8cc1Swenshuai.xi 
497*53ee8cc1Swenshuai.xi #endif // _REG_UART_H_
498