xref: /rk3399_ARM-atf/drivers/renesas/common/scif/scif_helpers.S (revision 579254a8aa4b9cd87ff0b7ba51119205731e0110)
1*9979a20aSMarek Vasut/*
2*9979a20aSMarek Vasut * Copyright (c) 2025, Renesas Electronics Corporation. All rights reserved.
3*9979a20aSMarek Vasut *
4*9979a20aSMarek Vasut * SPDX-License-Identifier: BSD-3-Clause
5*9979a20aSMarek Vasut */
6*9979a20aSMarek Vasut
7*9979a20aSMarek Vasut#include <arch.h>
8*9979a20aSMarek Vasut#include <asm_macros.S>
9*9979a20aSMarek Vasut#include <console_macros.S>
10*9979a20aSMarek Vasut
11*9979a20aSMarek Vasut	.globl	console_rcar_register
12*9979a20aSMarek Vasut	.extern	console_rcar_init
13*9979a20aSMarek Vasut
14*9979a20aSMarek Vasut	/*
15*9979a20aSMarek Vasut	 * -----------------------------------------------
16*9979a20aSMarek Vasut	 * int console_rcar_register(
17*9979a20aSMarek Vasut	 *      uintptr_t base, uint32_t clk, uint32_t baud,
18*9979a20aSMarek Vasut	 *      console_t *console)
19*9979a20aSMarek Vasut	 * Function to initialize and register a new rcar
20*9979a20aSMarek Vasut	 * console. Storage passed in for the console struct
21*9979a20aSMarek Vasut	 * *must* be persistent (i.e. not from the stack).
22*9979a20aSMarek Vasut	 * In: x0 - UART register base address
23*9979a20aSMarek Vasut	 *     w1 - UART clock in Hz
24*9979a20aSMarek Vasut	 *     w2 - Baud rate
25*9979a20aSMarek Vasut	 *     x3 - pointer to empty console_t struct
26*9979a20aSMarek Vasut	 * Out: return 1 on success, 0 on error
27*9979a20aSMarek Vasut	 * Clobber list : x0, x1, x2, x6, x7, x14
28*9979a20aSMarek Vasut	 * -----------------------------------------------
29*9979a20aSMarek Vasut	 */
30*9979a20aSMarek Vasutfunc console_rcar_register
31*9979a20aSMarek Vasut	mov	x7, x30
32*9979a20aSMarek Vasut	mov	x6, x3
33*9979a20aSMarek Vasut	cbz	x6, register_fail
34*9979a20aSMarek Vasut	str	x0, [x6, #CONSOLE_T_BASE]
35*9979a20aSMarek Vasut
36*9979a20aSMarek Vasut	bl	console_rcar_init
37*9979a20aSMarek Vasut
38*9979a20aSMarek Vasut	mov	x0, x6
39*9979a20aSMarek Vasut	mov	x30, x7
40*9979a20aSMarek Vasut	finish_console_register rcar, putc=1, getc=0, flush=1
41*9979a20aSMarek Vasut
42*9979a20aSMarek Vasutregister_fail:
43*9979a20aSMarek Vasut	ret	x7
44*9979a20aSMarek Vasutendfunc console_rcar_register
45