xref: /rk3399_ARM-atf/drivers/renesas/common/console/rcar_console.S (revision a6db44ad1658f1418e3fe3cf13708771ab3bf350)
1865e3474SBiju Das/*
2*bb273e3bSToshiyuki Ogasahara * Copyright (c) 2018-2021, Renesas Electronics Corporation. All rights reserved.
3865e3474SBiju Das *
4865e3474SBiju Das * SPDX-License-Identifier: BSD-3-Clause
5865e3474SBiju Das */
6865e3474SBiju Das
7865e3474SBiju Das#include <arch.h>
8865e3474SBiju Das#include <asm_macros.S>
9865e3474SBiju Das#include <console_macros.S>
10865e3474SBiju Das#include <drivers/renesas/rcar/console/console.h>
11865e3474SBiju Das
12865e3474SBiju Das	.globl	console_rcar_register
13865e3474SBiju Das	.globl	console_rcar_init
14865e3474SBiju Das	.globl	console_rcar_putc
15865e3474SBiju Das	.globl	console_rcar_flush
16865e3474SBiju Das
17865e3474SBiju Das	.extern	rcar_log_init
18865e3474SBiju Das	.extern	rcar_set_log_data
19865e3474SBiju Das
20865e3474SBiju Das	/* -----------------------------------------------
21865e3474SBiju Das	 * int console_rcar_register(
22865e3474SBiju Das	 *      uintptr_t base, uint32_t clk, uint32_t baud,
23865e3474SBiju Das	 *      console_t *console)
24865e3474SBiju Das	 * Function to initialize and register a new rcar
25865e3474SBiju Das	 * console. Storage passed in for the console struct
26865e3474SBiju Das	 * *must* be persistent (i.e. not from the stack).
27865e3474SBiju Das	 * In: x0 - UART register base address
28865e3474SBiju Das	 *     w1 - UART clock in Hz
29865e3474SBiju Das	 *     w2 - Baud rate
30865e3474SBiju Das	 *     x3 - pointer to empty console_t struct
31865e3474SBiju Das	 * Out: return 1 on success, 0 on error
32865e3474SBiju Das	 * Clobber list : x0, x1, x2, x6, x7, x14
33865e3474SBiju Das	 * -----------------------------------------------
34865e3474SBiju Das	 */
35865e3474SBiju Dasfunc console_rcar_register
36865e3474SBiju Das	mov	x7, x30
37865e3474SBiju Das	mov	x6, x3
38865e3474SBiju Das	cbz	x6, register_fail
39865e3474SBiju Das	str	x0, [x6, #CONSOLE_T_BASE]
40865e3474SBiju Das
41865e3474SBiju Das	bl	rcar_log_init
42865e3474SBiju Das	cbz	x0, register_fail
43865e3474SBiju Das
44865e3474SBiju Das	mov	x0, x6
45865e3474SBiju Das	mov	x30, x7
46865e3474SBiju Das	finish_console_register rcar, putc=1, getc=0, flush=1
47865e3474SBiju Das
48865e3474SBiju Dasregister_fail:
49865e3474SBiju Das	ret	x7
50865e3474SBiju Dasendfunc console_rcar_register
51865e3474SBiju Das
52865e3474SBiju Das	/* ---------------------------------------------
53865e3474SBiju Das	 * int console_rcar_init(unsigned long base_addr,
54865e3474SBiju Das	 * unsigned int uart_clk, unsigned int baud_rate)
55865e3474SBiju Das	 * Function to initialize the console without a
56865e3474SBiju Das	 * C Runtime to print debug information. This
57865e3474SBiju Das	 * function will be accessed by crash reporting.
58865e3474SBiju Das	 * In: x0 - console base address
59865e3474SBiju Das	 *     w1 - Uart clock in Hz
60865e3474SBiju Das	 *     w2 - Baud rate
61865e3474SBiju Das	 * Out: return 1 on success
62865e3474SBiju Das	 * Clobber list : x1, x2
63865e3474SBiju Das	 * ---------------------------------------------
64865e3474SBiju Das	 */
65865e3474SBiju Dasfunc console_rcar_init
66*bb273e3bSToshiyuki Ogasahara	mov	w0, #1
67865e3474SBiju Das	ret
68865e3474SBiju Dasendfunc console_rcar_init
69865e3474SBiju Das
70865e3474SBiju Das	/* --------------------------------------------------------
71865e3474SBiju Das	 * int console_rcar_putc(int c, console_t *console)
72865e3474SBiju Das	 * Function to output a character over the console. It
73865e3474SBiju Das	 * returns the character printed on success or -1 on error.
74865e3474SBiju Das	 * In : w0 - character to be printed
75865e3474SBiju Das	 *      x1 - pointer to console_t structure
76865e3474SBiju Das	 * Out : return -1 on error else return character.
77865e3474SBiju Das	 * Clobber list : x2
78865e3474SBiju Das	 * --------------------------------------------------------
79865e3474SBiju Das	 */
80865e3474SBiju Dasfunc console_rcar_putc
81865e3474SBiju Das	b	rcar_set_log_data
82865e3474SBiju Dasendfunc console_rcar_putc
83865e3474SBiju Das
84865e3474SBiju Das	/* ---------------------------------------------
85865e3474SBiju Das	 * void console_rcar_flush(void)
86865e3474SBiju Das	 * Function to force a write of all buffered
87865e3474SBiju Das	 * data that hasn't been output. It returns void
88865e3474SBiju Das	 * Clobber list : x0, x1
89865e3474SBiju Das	 * ---------------------------------------------
90865e3474SBiju Das	 */
91865e3474SBiju Dasfunc console_rcar_flush
92865e3474SBiju Das	ret
93865e3474SBiju Dasendfunc console_rcar_flush
94