1*70086dc4SYing-Chun Liu (PaulLiu)/* 2*70086dc4SYing-Chun Liu (PaulLiu) * Copyright (c) 2018-2019, ARM Limited and Contributors. All rights reserved. 3*70086dc4SYing-Chun Liu (PaulLiu) * 4*70086dc4SYing-Chun Liu (PaulLiu) * SPDX-License-Identifier: BSD-3-Clause 5*70086dc4SYing-Chun Liu (PaulLiu) */ 6*70086dc4SYing-Chun Liu (PaulLiu) 7*70086dc4SYing-Chun Liu (PaulLiu)#include <arch.h> 8*70086dc4SYing-Chun Liu (PaulLiu)#include <asm_macros.S> 9*70086dc4SYing-Chun Liu (PaulLiu)#define USE_FINISH_CONSOLE_REG_2 10*70086dc4SYing-Chun Liu (PaulLiu)#include <console_macros.S> 11*70086dc4SYing-Chun Liu (PaulLiu)#include <assert_macros.S> 12*70086dc4SYing-Chun Liu (PaulLiu)#include "imx_uart.h" 13*70086dc4SYing-Chun Liu (PaulLiu) 14*70086dc4SYing-Chun Liu (PaulLiu) .globl console_imx_uart_register 15*70086dc4SYing-Chun Liu (PaulLiu) .globl console_imx_uart_putc 16*70086dc4SYing-Chun Liu (PaulLiu) .globl console_imx_uart_getc 17*70086dc4SYing-Chun Liu (PaulLiu) .globl console_imx_uart_flush 18*70086dc4SYing-Chun Liu (PaulLiu) 19*70086dc4SYing-Chun Liu (PaulLiu)func console_imx_uart_register 20*70086dc4SYing-Chun Liu (PaulLiu) push {r4, lr} 21*70086dc4SYing-Chun Liu (PaulLiu) mov r4, r3 22*70086dc4SYing-Chun Liu (PaulLiu) cmp r4, #0 23*70086dc4SYing-Chun Liu (PaulLiu) beq register_fail 24*70086dc4SYing-Chun Liu (PaulLiu) str r0, [r4, #CONSOLE_T_DRVDATA] 25*70086dc4SYing-Chun Liu (PaulLiu) 26*70086dc4SYing-Chun Liu (PaulLiu) bl console_imx_uart_core_init 27*70086dc4SYing-Chun Liu (PaulLiu) cmp r0, #0 28*70086dc4SYing-Chun Liu (PaulLiu) bne register_fail 29*70086dc4SYing-Chun Liu (PaulLiu) 30*70086dc4SYing-Chun Liu (PaulLiu) mov r0, r4 31*70086dc4SYing-Chun Liu (PaulLiu) pop {r4, lr} 32*70086dc4SYing-Chun Liu (PaulLiu) finish_console_register imx_uart putc=1, getc=1, flush=1 33*70086dc4SYing-Chun Liu (PaulLiu) 34*70086dc4SYing-Chun Liu (PaulLiu)register_fail: 35*70086dc4SYing-Chun Liu (PaulLiu) pop {r4, pc} 36*70086dc4SYing-Chun Liu (PaulLiu)endfunc console_imx_uart_register 37*70086dc4SYing-Chun Liu (PaulLiu) 38*70086dc4SYing-Chun Liu (PaulLiu)func console_imx_uart_putc 39*70086dc4SYing-Chun Liu (PaulLiu) ldr r1, [r1, #CONSOLE_T_DRVDATA] 40*70086dc4SYing-Chun Liu (PaulLiu) b console_imx_uart_core_putc 41*70086dc4SYing-Chun Liu (PaulLiu)endfunc console_imx_uart_putc 42*70086dc4SYing-Chun Liu (PaulLiu) 43*70086dc4SYing-Chun Liu (PaulLiu)func console_imx_uart_getc 44*70086dc4SYing-Chun Liu (PaulLiu) ldr r0, [r0, #CONSOLE_T_DRVDATA] 45*70086dc4SYing-Chun Liu (PaulLiu) b console_imx_uart_core_getc 46*70086dc4SYing-Chun Liu (PaulLiu)endfunc console_imx_uart_getc 47*70086dc4SYing-Chun Liu (PaulLiu) 48*70086dc4SYing-Chun Liu (PaulLiu)func console_imx_uart_flush 49*70086dc4SYing-Chun Liu (PaulLiu) ldr r0, [r0, #CONSOLE_T_DRVDATA] 50*70086dc4SYing-Chun Liu (PaulLiu) b console_imx_uart_core_flush 51*70086dc4SYing-Chun Liu (PaulLiu)endfunc console_imx_uart_flush 52