xref: /rk3399_ARM-atf/plat/imx/common/include/imx8_lpuart.h (revision 27b9d5ead84877d6557f5dc02c184a9c2c31d64f)
1*27b9d5eaSAnson Huang /*
2*27b9d5eaSAnson Huang  * Copyright (c) 2015-2018, ARM Limited and Contributors. All rights reserved.
3*27b9d5eaSAnson Huang  *
4*27b9d5eaSAnson Huang  * SPDX-License-Identifier: BSD-3-Clause
5*27b9d5eaSAnson Huang  */
6*27b9d5eaSAnson Huang 
7*27b9d5eaSAnson Huang #ifndef __IMX_LPUART_H__
8*27b9d5eaSAnson Huang #define __IMX_LPUART_H__
9*27b9d5eaSAnson Huang 
10*27b9d5eaSAnson Huang #include <console.h>
11*27b9d5eaSAnson Huang 
12*27b9d5eaSAnson Huang #define VERID	0x0
13*27b9d5eaSAnson Huang #define PARAM	0x4
14*27b9d5eaSAnson Huang #define GLOBAL	0x8
15*27b9d5eaSAnson Huang #define PINCFG	0xC
16*27b9d5eaSAnson Huang #define BAUD	0x10
17*27b9d5eaSAnson Huang #define STAT	0x14
18*27b9d5eaSAnson Huang #define CTRL	0x18
19*27b9d5eaSAnson Huang #define DATA	0x1C
20*27b9d5eaSAnson Huang #define MATCH	0x20
21*27b9d5eaSAnson Huang #define MODIR	0x24
22*27b9d5eaSAnson Huang #define FIFO	0x28
23*27b9d5eaSAnson Huang #define WATER	0x2c
24*27b9d5eaSAnson Huang 
25*27b9d5eaSAnson Huang #define US1_TDRE	(1 << 23)
26*27b9d5eaSAnson Huang #define US1_RDRF	(1 << 21)
27*27b9d5eaSAnson Huang 
28*27b9d5eaSAnson Huang #define CTRL_TE		(1 << 19)
29*27b9d5eaSAnson Huang #define CTRL_RE		(1 << 18)
30*27b9d5eaSAnson Huang 
31*27b9d5eaSAnson Huang #define FIFO_TXFE	0x80
32*27b9d5eaSAnson Huang #define FIFO_RXFE	0x40
33*27b9d5eaSAnson Huang 
34*27b9d5eaSAnson Huang #define WATER_TXWATER_OFF	1
35*27b9d5eaSAnson Huang #define WATER_RXWATER_OFF	16
36*27b9d5eaSAnson Huang 
37*27b9d5eaSAnson Huang #define LPUART_CTRL_PT_MASK	0x1
38*27b9d5eaSAnson Huang #define LPUART_CTRL_PE_MASK	0x2
39*27b9d5eaSAnson Huang #define LPUART_CTRL_M_MASK	0x10
40*27b9d5eaSAnson Huang 
41*27b9d5eaSAnson Huang #define LPUART_BAUD_OSR_MASK                     (0x1F000000U)
42*27b9d5eaSAnson Huang #define LPUART_BAUD_OSR_SHIFT                    (24U)
43*27b9d5eaSAnson Huang #define LPUART_BAUD_OSR(x)                       (((uint32_t)(((uint32_t)(x)) << LPUART_BAUD_OSR_SHIFT)) & LPUART_BAUD_OSR_MASK)
44*27b9d5eaSAnson Huang 
45*27b9d5eaSAnson Huang #define LPUART_BAUD_SBR_MASK                     (0x1FFFU)
46*27b9d5eaSAnson Huang #define LPUART_BAUD_SBR_SHIFT                    (0U)
47*27b9d5eaSAnson Huang #define LPUART_BAUD_SBR(x)                       (((uint32_t)(((uint32_t)(x)) << LPUART_BAUD_SBR_SHIFT)) & LPUART_BAUD_SBR_MASK)
48*27b9d5eaSAnson Huang 
49*27b9d5eaSAnson Huang #define LPUART_BAUD_SBNS_MASK                    (0x2000U)
50*27b9d5eaSAnson Huang #define LPUART_BAUD_BOTHEDGE_MASK                (0x20000U)
51*27b9d5eaSAnson Huang #define LPUART_BAUD_M10_MASK                     (0x20000000U)
52*27b9d5eaSAnson Huang 
53*27b9d5eaSAnson Huang #ifndef __ASSEMBLY__
54*27b9d5eaSAnson Huang 
55*27b9d5eaSAnson Huang #include <types.h>
56*27b9d5eaSAnson Huang 
57*27b9d5eaSAnson Huang typedef struct {
58*27b9d5eaSAnson Huang 	console_t console;
59*27b9d5eaSAnson Huang 	uintptr_t base;
60*27b9d5eaSAnson Huang } console_lpuart_t;
61*27b9d5eaSAnson Huang 
62*27b9d5eaSAnson Huang int console_lpuart_register(uintptr_t baseaddr, uint32_t clock, uint32_t baud,
63*27b9d5eaSAnson Huang 			   console_lpuart_t *console);
64*27b9d5eaSAnson Huang #endif /*__ASSEMBLY__*/
65*27b9d5eaSAnson Huang 
66*27b9d5eaSAnson Huang #endif  /* __IMX_LPUART_H__*/
67