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