summaryrefslogtreecommitdiff
path: root/plat/imx/common
diff options
context:
space:
mode:
authorAnson Huang <Anson.Huang@nxp.com>2018-07-05 10:28:58 +0800
committerAnson Huang <Anson.Huang@nxp.com>2018-07-05 10:30:55 +0800
commitec182180f98539ea0fdbe427b60c9d0276524aea (patch)
treec74716bdf805cd55db1e3e904ca7a3d50ef8f492 /plat/imx/common
parente88e844028da9805c8de695ef2371090e44ccfe2 (diff)
imx8qm/imx8qxp: switch to MULTI_CONSOLE_API for debug uart support
Switch to MULTI_CONSOLE_API to make debug UART work. Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
Diffstat (limited to 'plat/imx/common')
-rw-r--r--plat/imx/common/include/lpuart.h22
-rw-r--r--plat/imx/common/lpuart_console.S75
2 files changed, 57 insertions, 40 deletions
diff --git a/plat/imx/common/include/lpuart.h b/plat/imx/common/include/lpuart.h
index d64ea197..4ff91bda 100644
--- a/plat/imx/common/include/lpuart.h
+++ b/plat/imx/common/include/lpuart.h
@@ -1,5 +1,5 @@
/*
- * Copyright 2017 NXP
+ * Copyright (c) 2015-2018, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
@@ -7,6 +7,8 @@
#ifndef __IMX_LPUART_H__
#define __IMX_LPUART_H__
+#include <console.h>
+
#define VERID 0x0
#define PARAM 0x4
#define GLOBAL 0x8
@@ -18,7 +20,10 @@
#define MATCH 0x20
#define MODIR 0x24
#define FIFO 0x28
-#define WATER 0x2C
+#define WATER 0x2c
+
+#define US1_TDRE (1 << 23)
+#define US1_RDRF (1 << 21)
#define CTRL_TE (1 << 19)
#define CTRL_RE (1 << 18)
@@ -45,4 +50,17 @@
#define LPUART_BAUD_BOTHEDGE_MASK (0x20000U)
#define LPUART_BAUD_M10_MASK (0x20000000U)
+#ifndef __ASSEMBLY__
+
+#include <types.h>
+
+typedef struct {
+ console_t console;
+ uintptr_t base;
+} console_lpuart_t;
+
+int console_lpuart_register(uintptr_t baseaddr, uint32_t clock, uint32_t baud,
+ console_lpuart_t *console);
+#endif /*__ASSEMBLY__*/
+
#endif /* __IMX_LPUART_H__*/
diff --git a/plat/imx/common/lpuart_console.S b/plat/imx/common/lpuart_console.S
index e53ef2a6..9263182b 100644
--- a/plat/imx/common/lpuart_console.S
+++ b/plat/imx/common/lpuart_console.S
@@ -1,72 +1,71 @@
/*
- * Copyright 2017 NXP
+ * Copyright (c) 2015-2018, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include <arch.h>
#include <asm_macros.S>
+#include <console_macros.S>
+#include <assert_macros.S>
+#include "lpuart.h"
-#define UARTBAUD 0x10
-#define UARTSTAT 0x14
-#define UARTCTRL 0x18
-#define UARTDATA 0x1C
-#define UARTMATCH 0x20
-#define UARTMODIR 0x24
-#define UARTFIFO 0x28
-#define UARTWATER 0x2c
+ .globl console_lpuart_register
+ .globl console_lpuart_init
+ .globl console_lpuart_putc
+ .globl console_lpuart_getc
-#define US1_TDRE (1 << 23)
-#define US1_RDRF (1 << 21)
+func console_lpuart_register
+ mov x7, x30
+ mov x6, x3
+ cbz x6, register_fail
+ str x0, [x6, #CONSOLE_T_DRVDATA]
- .globl console_core_init
- .globl console_core_putc
- .globl console_core_getc
- .globl console_core_flush
+ bl console_lpuart_init
+ cbz x0, register_fail
-/* console_core_init */
-func console_core_init
- mov w0, wzr
+ mov x0, x6
+ mov x30, x7
+ finish_console_register lpuart
+
+register_fail:
+ ret x7
+endfunc console_lpuart_register
+
+func console_lpuart_init
+ mov w0, #1
ret
-endfunc console_core_init
+endfunc console_lpuart_init
-/* console_core_putc */
-func console_core_putc
- /* Check the input parameter */
+func console_lpuart_putc
+ ldr x1, [x1, #CONSOLE_T_DRVDATA]
cbz x1, putc_error
- /* Insert implementation here */
/* Prepare '\r' to '\n' */
cmp w0, #0xA
b.ne 2f
1:
/* Check if the transmit FIFO is full */
- ldr w2, [x1, #UARTSTAT]
+ ldr w2, [x1, #STAT]
tbz w2, #23, 1b
mov w2, #0xD
- str w2, [x1, #UARTDATA]
+ str w2, [x1, #DATA]
2:
/* Check if the transmit FIFO is full */
- ldr w2, [x1, #UARTSTAT]
+ ldr w2, [x1, #STAT]
tbz w2, #23, 2b
- str w0, [x1, #UARTDATA]
+ str w0, [x1, #DATA]
ret
putc_error:
mov w0, #-1
ret
-endfunc console_core_putc
+endfunc console_lpuart_putc
-/* console_core_getc */
-func console_core_getc
+func console_lpuart_getc
+ ldr x0, [x0, #CONSOLE_T_DRVDATA]
cbz x0, getc_error
- /* Insert implementation here */
/* Check if the receive FIFO state */
ret
getc_error:
mov w0, #-1
ret
-endfunc console_core_getc
-
-/* console_core_flush */
-func console_core_flush
- mov w0, wzr
- ret
-endfunc console_core_flush
+endfunc console_lpuart_getc