1*865e3474SBiju Das/* 2*865e3474SBiju Das * Copyright (c) 2018-2019, Renesas Electronics Corporation. All rights reserved. 3*865e3474SBiju Das * 4*865e3474SBiju Das * SPDX-License-Identifier: BSD-3-Clause 5*865e3474SBiju Das */ 6*865e3474SBiju Das 7*865e3474SBiju Das#include <arch.h> 8*865e3474SBiju Das#include <asm_macros.S> 9*865e3474SBiju Das#include <console_macros.S> 10*865e3474SBiju Das#include <drivers/renesas/rcar/console/console.h> 11*865e3474SBiju Das 12*865e3474SBiju Das .globl console_rcar_register 13*865e3474SBiju Das .globl console_rcar_init 14*865e3474SBiju Das .globl console_rcar_putc 15*865e3474SBiju Das .globl console_rcar_flush 16*865e3474SBiju Das 17*865e3474SBiju Das .extern rcar_log_init 18*865e3474SBiju Das .extern rcar_set_log_data 19*865e3474SBiju Das 20*865e3474SBiju Das /* ----------------------------------------------- 21*865e3474SBiju Das * int console_rcar_register( 22*865e3474SBiju Das * uintptr_t base, uint32_t clk, uint32_t baud, 23*865e3474SBiju Das * console_t *console) 24*865e3474SBiju Das * Function to initialize and register a new rcar 25*865e3474SBiju Das * console. Storage passed in for the console struct 26*865e3474SBiju Das * *must* be persistent (i.e. not from the stack). 27*865e3474SBiju Das * In: x0 - UART register base address 28*865e3474SBiju Das * w1 - UART clock in Hz 29*865e3474SBiju Das * w2 - Baud rate 30*865e3474SBiju Das * x3 - pointer to empty console_t struct 31*865e3474SBiju Das * Out: return 1 on success, 0 on error 32*865e3474SBiju Das * Clobber list : x0, x1, x2, x6, x7, x14 33*865e3474SBiju Das * ----------------------------------------------- 34*865e3474SBiju Das */ 35*865e3474SBiju Dasfunc console_rcar_register 36*865e3474SBiju Das mov x7, x30 37*865e3474SBiju Das mov x6, x3 38*865e3474SBiju Das cbz x6, register_fail 39*865e3474SBiju Das str x0, [x6, #CONSOLE_T_BASE] 40*865e3474SBiju Das 41*865e3474SBiju Das bl rcar_log_init 42*865e3474SBiju Das cbz x0, register_fail 43*865e3474SBiju Das 44*865e3474SBiju Das mov x0, x6 45*865e3474SBiju Das mov x30, x7 46*865e3474SBiju Das finish_console_register rcar, putc=1, getc=0, flush=1 47*865e3474SBiju Das 48*865e3474SBiju Dasregister_fail: 49*865e3474SBiju Das ret x7 50*865e3474SBiju Dasendfunc console_rcar_register 51*865e3474SBiju Das 52*865e3474SBiju Das /* --------------------------------------------- 53*865e3474SBiju Das * int console_rcar_init(unsigned long base_addr, 54*865e3474SBiju Das * unsigned int uart_clk, unsigned int baud_rate) 55*865e3474SBiju Das * Function to initialize the console without a 56*865e3474SBiju Das * C Runtime to print debug information. This 57*865e3474SBiju Das * function will be accessed by crash reporting. 58*865e3474SBiju Das * In: x0 - console base address 59*865e3474SBiju Das * w1 - Uart clock in Hz 60*865e3474SBiju Das * w2 - Baud rate 61*865e3474SBiju Das * Out: return 1 on success 62*865e3474SBiju Das * Clobber list : x1, x2 63*865e3474SBiju Das * --------------------------------------------- 64*865e3474SBiju Das */ 65*865e3474SBiju Dasfunc console_rcar_init 66*865e3474SBiju Das mov w0, #0 67*865e3474SBiju Das ret 68*865e3474SBiju Dasendfunc console_rcar_init 69*865e3474SBiju Das 70*865e3474SBiju Das /* -------------------------------------------------------- 71*865e3474SBiju Das * int console_rcar_putc(int c, console_t *console) 72*865e3474SBiju Das * Function to output a character over the console. It 73*865e3474SBiju Das * returns the character printed on success or -1 on error. 74*865e3474SBiju Das * In : w0 - character to be printed 75*865e3474SBiju Das * x1 - pointer to console_t structure 76*865e3474SBiju Das * Out : return -1 on error else return character. 77*865e3474SBiju Das * Clobber list : x2 78*865e3474SBiju Das * -------------------------------------------------------- 79*865e3474SBiju Das */ 80*865e3474SBiju Dasfunc console_rcar_putc 81*865e3474SBiju Das b rcar_set_log_data 82*865e3474SBiju Dasendfunc console_rcar_putc 83*865e3474SBiju Das 84*865e3474SBiju Das /* --------------------------------------------- 85*865e3474SBiju Das * void console_rcar_flush(void) 86*865e3474SBiju Das * Function to force a write of all buffered 87*865e3474SBiju Das * data that hasn't been output. It returns void 88*865e3474SBiju Das * Clobber list : x0, x1 89*865e3474SBiju Das * --------------------------------------------- 90*865e3474SBiju Das */ 91*865e3474SBiju Dasfunc console_rcar_flush 92*865e3474SBiju Das ret 93*865e3474SBiju Dasendfunc console_rcar_flush 94