1297669Ssgalabov/*-
2297669Ssgalabov * Copyright (c) 2010 Aleksandr Rybalko.
3297669Ssgalabov * All rights reserved.
4297669Ssgalabov *
5297669Ssgalabov * Redistribution and use in source and binary forms, with or
6297669Ssgalabov * without modification, are permitted provided that the following
7297669Ssgalabov * conditions are met:
8297669Ssgalabov * 1. Redistributions of source code must retain the above copyright
9297669Ssgalabov *    notice, this list of conditions and the following disclaimer.
10297669Ssgalabov * 2. Redistributions in binary form must reproduce the above
11297669Ssgalabov *    copyright notice, this list of conditions and the following
12297669Ssgalabov *    disclaimer in the documentation and/or other materials provided
13297669Ssgalabov *    with the distribution.
14297669Ssgalabov * 3. The names of the authors may not be used to endorse or promote
15297669Ssgalabov *    products derived from this software without specific prior
16297669Ssgalabov *    written permission.
17297669Ssgalabov *
18297669Ssgalabov * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY
19297669Ssgalabov * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
20297669Ssgalabov * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
21297669Ssgalabov * PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS
22297669Ssgalabov * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
23297669Ssgalabov * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24297669Ssgalabov * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
25297669Ssgalabov * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26297669Ssgalabov * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
27297669Ssgalabov * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
28297669Ssgalabov * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
29297669Ssgalabov * OF SUCH DAMAGE.
30297669Ssgalabov *
31297669Ssgalabov * $FreeBSD: releng/11.0/sys/mips/mediatek/uart_dev_mtk.h 297669 2016-04-07 11:16:32Z sgalabov $
32297669Ssgalabov */
33297669Ssgalabov#ifndef	_MTKUART_H
34297669Ssgalabov#define	_MTKUART_H
35297669Ssgalabov
36297669Ssgalabov#undef	uart_getreg
37297669Ssgalabov#undef	uart_setreg
38297669Ssgalabov#define	uart_getreg(bas, reg)		\
39297669Ssgalabov	bus_space_read_4((bas)->bst, (bas)->bsh, reg)
40297669Ssgalabov#define	uart_setreg(bas, reg, value)	\
41297669Ssgalabov	bus_space_write_4((bas)->bst, (bas)->bsh, reg, value)
42297669Ssgalabov
43297669Ssgalabov/* UART registers */
44297669Ssgalabov#define	UART_RX_REG	0x00
45297669Ssgalabov#define	UART_TX_REG	0x04
46297669Ssgalabov
47297669Ssgalabov#define	UART_IER_REG	0x08
48297669Ssgalabov#define		UART_IER_EDSSI		(1<<3) /* Only full UART */
49297669Ssgalabov#define		UART_IER_ELSI		(1<<2)
50297669Ssgalabov#define		UART_IER_ETBEI		(1<<1)
51297669Ssgalabov#define		UART_IER_ERBFI		(1<<0)
52297669Ssgalabov
53297669Ssgalabov#define	UART_IIR_REG	0x0c
54297669Ssgalabov#define		UART_IIR_RXFIFO		(1<<7)
55297669Ssgalabov#define		UART_IIR_TXFIFO		(1<<6)
56297669Ssgalabov#define		UART_IIR_ID_MST		0
57297669Ssgalabov#define		UART_IIR_ID_THRE	1
58297669Ssgalabov#define		UART_IIR_ID_DR		2
59297669Ssgalabov#define		UART_IIR_ID_LINESTATUS	3
60297669Ssgalabov#define		UART_IIR_ID_DR2		6
61297669Ssgalabov#define		UART_IIR_ID_SHIFT	1
62297669Ssgalabov#define		UART_IIR_ID_MASK	0x0000000e
63297669Ssgalabov#define		UART_IIR_INTP		(1<<0)
64297669Ssgalabov
65297669Ssgalabov#define	UART_FCR_REG	0x10
66297669Ssgalabov#define		UART_FCR_RXTGR_1	(0<<6)
67297669Ssgalabov#define		UART_FCR_RXTGR_4	(1<<6)
68297669Ssgalabov#define		UART_FCR_RXTGR_8	(2<<6)
69297669Ssgalabov#define		UART_FCR_RXTGR_12	(3<<6)
70297669Ssgalabov#define		UART_FCR_TXTGR_1	(0<<4)
71297669Ssgalabov#define		UART_FCR_TXTGR_4	(1<<4)
72297669Ssgalabov#define		UART_FCR_TXTGR_8	(2<<4)
73297669Ssgalabov#define		UART_FCR_TXTGR_12	(3<<4)
74297669Ssgalabov#define		UART_FCR_DMA		(1<<3)
75297669Ssgalabov#define		UART_FCR_TXRST		(1<<2)
76297669Ssgalabov#define		UART_FCR_RXRST		(1<<1)
77297669Ssgalabov#define		UART_FCR_FIFOEN		(1<<0)
78297669Ssgalabov
79297669Ssgalabov#define	UART_LCR_REG	0x14
80297669Ssgalabov#define		UART_LCR_DLAB	(1<<7)
81297669Ssgalabov#define		UART_LCR_BRK	(1<<6)
82297669Ssgalabov#define		UART_LCR_FPAR	(1<<5)
83297669Ssgalabov#define		UART_LCR_EVEN	(1<<4)
84297669Ssgalabov#define		UART_LCR_PEN	(1<<3)
85297669Ssgalabov#define		UART_LCR_STB_15	(1<<2)
86297669Ssgalabov#define		UART_LCR_5B	0
87297669Ssgalabov#define		UART_LCR_6B	1
88297669Ssgalabov#define		UART_LCR_7B	2
89297669Ssgalabov#define		UART_LCR_8B	3
90297669Ssgalabov
91297669Ssgalabov#define	UART_MCR_REG	0x18
92297669Ssgalabov#define		UART_MCR_LOOP	(1<<4)
93297669Ssgalabov#define		UART_MCR_OUT2_L	(1<<3) /* Only full UART */
94297669Ssgalabov#define		UART_MCR_OUT1_L	(1<<2) /* Only full UART */
95297669Ssgalabov#define		UART_MCR_RTS_L	(1<<1) /* Only full UART */
96297669Ssgalabov#define		UART_MCR_DTR_L	(1<<0) /* Only full UART */
97297669Ssgalabov
98297669Ssgalabov#define	UART_LSR_REG	0x1c
99297669Ssgalabov#define		UART_LSR_ERINF	(1<<7)
100297669Ssgalabov#define		UART_LSR_TEMT	(1<<6)
101297669Ssgalabov#define		UART_LSR_THRE	(1<<5)
102297669Ssgalabov#define		UART_LSR_BI	(1<<4)
103297669Ssgalabov#define		UART_LSR_FE	(1<<3)
104297669Ssgalabov#define		UART_LSR_PE	(1<<2)
105297669Ssgalabov#define		UART_LSR_OE	(1<<1)
106297669Ssgalabov#define		UART_LSR_DR	(1<<0)
107297669Ssgalabov
108297669Ssgalabov#define	UART_MSR_REG	0x20 	/* Only full UART */
109297669Ssgalabov#define		UART_MSR_DCD	(1<<7) /* Only full UART */
110297669Ssgalabov#define		UART_MSR_RI	(1<<6) /* Only full UART */
111297669Ssgalabov#define		UART_MSR_DSR	(1<<5) /* Only full UART */
112297669Ssgalabov#define		UART_MSR_CTS	(1<<4) /* Only full UART */
113297669Ssgalabov#define		UART_MSR_DDCD	(1<<3) /* Only full UART */
114297669Ssgalabov#define		UART_MSR_TERI	(1<<2) /* Only full UART */
115297669Ssgalabov#define		UART_MSR_DDSR	(1<<1) /* Only full UART */
116297669Ssgalabov#define		UART_MSR_DCTS	(1<<0) /* Only full UART */
117297669Ssgalabov
118297669Ssgalabov#define	UART_CDDL_REG	0x28
119297669Ssgalabov#define	UART_CDDLL_REG	0x2c
120297669Ssgalabov#define	UART_CDDLH_REG	0x30
121297669Ssgalabov
122297669Ssgalabov#define	UART_IFCTL_REG	0x34
123297669Ssgalabov#define		UART_IFCTL_IFCTL	(1<<0)
124297669Ssgalabov
125297669Ssgalabovint	uart_cnattach(void);
126297669Ssgalabov#endif	/* _MTKUART_H */
127