arm-trusted-firmware/plat/imx/common/lpuart_console.S
Jimmy Brisson 831b0e9824 Don't return error information from console_flush
And from crash_console_flush.

We ignore the error information return by console_flush in _every_
place where we call it, and casting the return type to void does not
work around the MISRA violation that this causes. Instead, we collect
the error information from the driver (to avoid changing that API), and
don't return it to the caller.

Change-Id: I1e35afe01764d5c8f0efd04f8949d333ffb688c1
Signed-off-by: Jimmy Brisson <jimmy.brisson@arm.com>
2020-10-09 10:21:50 -05:00

76 lines
1.4 KiB
ArmAsm

/*
* Copyright (c) 2015-2020, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#include <arch.h>
#include <asm_macros.S>
#include <console_macros.S>
#include <assert_macros.S>
#include "imx8_lpuart.h"
.globl console_lpuart_register
.globl console_lpuart_init
.globl console_lpuart_putc
.globl console_lpuart_getc
.globl console_lpuart_flush
func console_lpuart_register
mov x7, x30
mov x6, x3
cbz x6, register_fail
str x0, [x6, #CONSOLE_T_BASE]
bl console_lpuart_init
cbz x0, register_fail
mov x0, x6
mov x30, x7
finish_console_register lpuart putc=1, getc=1, flush=1
register_fail:
ret x7
endfunc console_lpuart_register
func console_lpuart_init
mov w0, #1
ret
endfunc console_lpuart_init
func console_lpuart_putc
ldr x1, [x1, #CONSOLE_T_BASE]
cbz x1, putc_error
/* Prepare '\r' to '\n' */
cmp w0, #0xA
b.ne 2f
1:
/* Check if the transmit FIFO is full */
ldr w2, [x1, #STAT]
tbz w2, #23, 1b
mov w2, #0xD
str w2, [x1, #DATA]
2:
/* Check if the transmit FIFO is full */
ldr w2, [x1, #STAT]
tbz w2, #23, 2b
str w0, [x1, #DATA]
ret
putc_error:
mov w0, #-1
ret
endfunc console_lpuart_putc
func console_lpuart_getc
ldr x0, [x0, #CONSOLE_T_BASE]
cbz x0, getc_error
/* Check if the receive FIFO state */
ret
getc_error:
mov w0, #-1
ret
endfunc console_lpuart_getc
func console_lpuart_flush
ret
endfunc console_lpuart_flush