xref: /rk3399_ARM-atf/plat/imx/common/aarch32/imx_uart_console.S (revision 70086dc466d980248dfb6416fa6c2adae5aafe8a)
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