Commit 2e8ab4f5 authored by Anson Huang's avatar Anson Huang
Browse files

imx: make imx uart work for debug mode


With DEBUG_CONSOLE enabled, build will fail for imx8mq platform:

./build/imx8mq/release/bl31/imx8mq_bl31_setup.o:
In function `bl31_early_platform_setup2':
imx8mq_bl31_setup.c:(.text.bl31_early_platform_setup2+0x40):
	undefined reference to `console_uart_register'
Makefile:741: recipe for target 'build/imx8mq/release/bl31/bl31.elf' failed
make: *** [build/imx8mq/release/bl31/bl31.elf] Error 1

Besides, the .console_flush callback needs to be added to avoid
panic when debug mode is enabled, since the console_flush() will
call it without checking whether the function callback is valid.
Signed-off-by: default avatarAnson Huang <Anson.Huang@nxp.com>
parent f1ac7964
Showing with 16 additions and 10 deletions
+16 -10
/* /*
* Copyright (c) 2018, ARM Limited and Contributors. All rights reserved. * Copyright (c) 2018-2019, ARM Limited and Contributors. All rights reserved.
* *
* SPDX-License-Identifier: BSD-3-Clause * SPDX-License-Identifier: BSD-3-Clause
*/ */
...@@ -16,10 +16,11 @@ ...@@ -16,10 +16,11 @@
#define UTS 0xb4 /* UART Test Register (mx31) */ #define UTS 0xb4 /* UART Test Register (mx31) */
#define URXD_RX_DATA (0xFF) #define URXD_RX_DATA (0xFF)
.globl console_uart_register .globl console_imx_uart_register
.globl console_uart_init .globl console_imx_uart_init
.globl console_uart_putc .globl console_imx_uart_putc
.globl console_uart_getc .globl console_imx_uart_getc
.globl console_imx_uart_flush
func console_imx_uart_register func console_imx_uart_register
mov x7, x30 mov x7, x30
...@@ -32,7 +33,7 @@ func console_imx_uart_register ...@@ -32,7 +33,7 @@ func console_imx_uart_register
mov x0, x6 mov x0, x6
mov x30, x7 mov x30, x7
finish_console_register imx_uart putc=1, getc=1 finish_console_register imx_uart putc=1, getc=1, flush=1
register_fail: register_fail:
ret x7 ret x7
...@@ -82,3 +83,8 @@ getc_error: ...@@ -82,3 +83,8 @@ getc_error:
mov w0, #-1 mov w0, #-1
ret ret
endfunc console_imx_uart_getc endfunc console_imx_uart_getc
func console_imx_uart_flush
mov x0, #0
ret
endfunc console_imx_uart_flush
/* /*
* Copyright (c) 2018, ARM Limited and Contributors. All rights reserved. * Copyright (c) 2018-2019, ARM Limited and Contributors. All rights reserved.
* *
* SPDX-License-Identifier: BSD-3-Clause * SPDX-License-Identifier: BSD-3-Clause
*/ */
...@@ -16,7 +16,7 @@ typedef struct { ...@@ -16,7 +16,7 @@ typedef struct {
uintptr_t base; uintptr_t base;
} console_uart_t; } console_uart_t;
int console_uart_register(uintptr_t baseaddr, uint32_t clock, uint32_t baud, int console_imx_uart_register(uintptr_t baseaddr, uint32_t clock, uint32_t baud,
console_uart_t *console); console_uart_t *console);
#endif /*__ASSEMBLY__*/ #endif /*__ASSEMBLY__*/
......
/* /*
* Copyright (c) 2018, ARM Limited and Contributors. All rights reserved. * Copyright (c) 2018-2019, ARM Limited and Contributors. All rights reserved.
* *
* SPDX-License-Identifier: BSD-3-Clause * SPDX-License-Identifier: BSD-3-Clause
*/ */
...@@ -87,7 +87,7 @@ void bl31_early_platform_setup2(u_register_t arg0, u_register_t arg1, ...@@ -87,7 +87,7 @@ void bl31_early_platform_setup2(u_register_t arg0, u_register_t arg1,
#if DEBUG_CONSOLE #if DEBUG_CONSOLE
static console_uart_t console; static console_uart_t console;
console_uart_register(IMX_BOOT_UART_BASE, IMX_BOOT_UART_CLK_IN_HZ, console_imx_uart_register(IMX_BOOT_UART_BASE, IMX_BOOT_UART_CLK_IN_HZ,
IMX_CONSOLE_BAUDRATE, &console); IMX_CONSOLE_BAUDRATE, &console);
#endif #endif
/* /*
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment