diff options
author | Ying-Chun Liu (PaulLiu) <paulliu@debian.org> | 2019-02-12 18:33:04 +0800 |
---|---|---|
committer | Ying-Chun Liu (PaulLiu) <paulliu@debian.org> | 2019-02-12 18:56:29 +0800 |
commit | 70086dc466d980248dfb6416fa6c2adae5aafe8a (patch) | |
tree | e69c4d75063e77a9dce20c3b819e0d8c192ae374 /plat | |
parent | 873e394b3bf93214a441f9f98237b58fbbea55aa (diff) | |
download | platform_external_arm-trusted-firmware-70086dc466d980248dfb6416fa6c2adae5aafe8a.tar.gz platform_external_arm-trusted-firmware-70086dc466d980248dfb6416fa6c2adae5aafe8a.tar.bz2 platform_external_arm-trusted-firmware-70086dc466d980248dfb6416fa6c2adae5aafe8a.zip |
imx: warp7: Migrate to MULTI_CONSOLE_API
This commit migrates to MULTI_CONSOLE_API for IMX Warp7 board.
We also rename the functions in imx_uart driver to more specific one.
Signed-off-by: Ying-Chun Liu (PaulLiu) <paulliu@debian.org>
Diffstat (limited to 'plat')
-rw-r--r-- | plat/imx/common/aarch32/imx_uart_console.S | 51 | ||||
-rw-r--r-- | plat/imx/imx7/warp7/platform.mk | 4 | ||||
-rw-r--r-- | plat/imx/imx7/warp7/warp7_bl2_el3_setup.c | 10 |
3 files changed, 63 insertions, 2 deletions
diff --git a/plat/imx/common/aarch32/imx_uart_console.S b/plat/imx/common/aarch32/imx_uart_console.S new file mode 100644 index 000000000..e526d9cb2 --- /dev/null +++ b/plat/imx/common/aarch32/imx_uart_console.S @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2018-2019, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include <arch.h> +#include <asm_macros.S> +#define USE_FINISH_CONSOLE_REG_2 +#include <console_macros.S> +#include <assert_macros.S> +#include "imx_uart.h" + + .globl console_imx_uart_register + .globl console_imx_uart_putc + .globl console_imx_uart_getc + .globl console_imx_uart_flush + +func console_imx_uart_register + push {r4, lr} + mov r4, r3 + cmp r4, #0 + beq register_fail + str r0, [r4, #CONSOLE_T_DRVDATA] + + bl console_imx_uart_core_init + cmp r0, #0 + bne register_fail + + mov r0, r4 + pop {r4, lr} + finish_console_register imx_uart putc=1, getc=1, flush=1 + +register_fail: + pop {r4, pc} +endfunc console_imx_uart_register + +func console_imx_uart_putc + ldr r1, [r1, #CONSOLE_T_DRVDATA] + b console_imx_uart_core_putc +endfunc console_imx_uart_putc + +func console_imx_uart_getc + ldr r0, [r0, #CONSOLE_T_DRVDATA] + b console_imx_uart_core_getc +endfunc console_imx_uart_getc + +func console_imx_uart_flush + ldr r0, [r0, #CONSOLE_T_DRVDATA] + b console_imx_uart_core_flush +endfunc console_imx_uart_flush diff --git a/plat/imx/imx7/warp7/platform.mk b/plat/imx/imx7/warp7/platform.mk index f29f7799a..6cd7566e9 100644 --- a/plat/imx/imx7/warp7/platform.mk +++ b/plat/imx/imx7/warp7/platform.mk @@ -59,6 +59,7 @@ BL2_SOURCES += common/desc_image_load.c \ plat/imx/imx7/warp7/warp7_bl2_mem_params_desc.c \ plat/imx/imx7/warp7/warp7_io_storage.c \ plat/imx/imx7/warp7/warp7_image_load.c \ + plat/imx/common/aarch32/imx_uart_console.S \ ${XLAT_TABLES_LIB_SRCS} ifneq (${TRUSTED_BOARD_BOOT},0) @@ -118,6 +119,9 @@ SEPARATE_CODE_AND_RODATA := 1 # Use Coherent memory USE_COHERENT_MEM := 1 +# Use multi console API +MULTI_CONSOLE_API := 1 + # PLAT_WARP7_UART PLAT_WARP7_UART :=1 $(eval $(call add_define,PLAT_WARP7_UART)) diff --git a/plat/imx/imx7/warp7/warp7_bl2_el3_setup.c b/plat/imx/imx7/warp7/warp7_bl2_el3_setup.c index 08baf1995..0eedd2100 100644 --- a/plat/imx/imx7/warp7/warp7_bl2_el3_setup.c +++ b/plat/imx/imx7/warp7/warp7_bl2_el3_setup.c @@ -258,6 +258,8 @@ void bl2_el3_early_platform_setup(u_register_t arg1, u_register_t arg2, uint32_t uart1_en_bits = (uint32_t)UART1_CLK_SELECT; uint32_t uart6_en_bits = (uint32_t)UART6_CLK_SELECT; uint32_t usdhc_clock_sel = PLAT_WARP7_SD - 1; + static console_imx_uart_t console; + int console_scope = CONSOLE_FLAG_BOOT | CONSOLE_FLAG_RUNTIME; /* Initialize the AIPS */ imx_aips_init(); @@ -278,8 +280,12 @@ void bl2_el3_early_platform_setup(u_register_t arg1, u_register_t arg2, warp7_setup_pinmux(); /* Init UART, storage and friends */ - console_init(PLAT_WARP7_BOOT_UART_BASE, PLAT_WARP7_BOOT_UART_CLK_IN_HZ, - PLAT_WARP7_CONSOLE_BAUDRATE); + console_imx_uart_register(PLAT_WARP7_BOOT_UART_BASE, + PLAT_WARP7_BOOT_UART_CLK_IN_HZ, + PLAT_WARP7_CONSOLE_BAUDRATE, + &console); + console_set_scope(&console.console, console_scope); + warp7_usdhc_setup(); /* Open handles to persistent storage */ |