imx: make imx uart work for debug mode
authorAnson Huang <Anson.Huang@nxp.com>
Tue, 15 Jan 2019 06:27:10 +0000 (14:27 +0800)
committerAnson Huang <Anson.Huang@nxp.com>
Tue, 15 Jan 2019 06:32:31 +0000 (14:32 +0800)
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: Anson Huang <Anson.Huang@nxp.com>
plat/imx/common/imx_uart_console.S
plat/imx/common/include/imx_uart.h
plat/imx/imx8m/imx8mq/imx8mq_bl31_setup.c

index 7dbde795b9eba316a6e67d94459677b555283d26..03ec3133e304af03a672153de817da450ea1b24c 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * 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
  */
 #define UTS   0xb4 /* UART Test Register (mx31) */
 #define  URXD_RX_DATA    (0xFF)
 
-       .globl  console_uart_register
-       .globl  console_uart_init
-       .globl  console_uart_putc
-       .globl  console_uart_getc
+       .globl  console_imx_uart_register
+       .globl  console_imx_uart_init
+       .globl  console_imx_uart_putc
+       .globl  console_imx_uart_getc
+       .globl  console_imx_uart_flush
 
 func console_imx_uart_register
        mov     x7, x30
@@ -32,7 +33,7 @@ func console_imx_uart_register
 
        mov     x0, x6
        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:
        ret     x7
@@ -82,3 +83,8 @@ getc_error:
        mov     w0, #-1
        ret
 endfunc console_imx_uart_getc
+
+func console_imx_uart_flush
+       mov     x0, #0
+       ret
+endfunc console_imx_uart_flush
index a251024f162db155dc3aad5fe37047ce8cbc729b..1b52e2f0b8878223c875573d9e2840d8a0fe511d 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * 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
  */
@@ -16,7 +16,7 @@ typedef struct {
        uintptr_t base;
 } 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);
 #endif /*__ASSEMBLY__*/
 
index f4e6ee746e80aa0fa61f660d9cc52acb7c557040..b18edd96d1b5833bced178d7552363b01316ee1c 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * 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
  */
@@ -87,7 +87,7 @@ void bl31_early_platform_setup2(u_register_t arg0, u_register_t arg1,
 #if DEBUG_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);
 #endif
        /*