blob: 9db6157dea5f3b18425cd723c69df8b7ea18744d [file] [log] [blame]
Soby Mathew7abebe82016-08-08 12:38:52 +01001/*
Antonio Nino Diaz8377ae42017-02-06 16:03:41 +00002 * Copyright (c) 2015-2017, ARM Limited and Contributors. All rights reserved.
Soby Mathew7abebe82016-08-08 12:38:52 +01003 *
dp-armfa3cf0b2017-05-03 09:38:09 +01004 * SPDX-License-Identifier: BSD-3-Clause
Soby Mathew7abebe82016-08-08 12:38:52 +01005 */
6#include <asm_macros.S>
7
8 /*
9 * This file contains a skeleton console implementation that can
10 * be used as basis for a real console implementation by platforms
11 * that do not contain PL011 hardware.
12 */
13
14 .globl console_core_init
15 .globl console_core_putc
16 .globl console_core_getc
Antonio Nino Diaz8377ae42017-02-06 16:03:41 +000017 .globl console_core_flush
Soby Mathew7abebe82016-08-08 12:38:52 +010018
19 /* -----------------------------------------------
20 * int console_core_init(uintptr_t base_addr,
21 * unsigned int uart_clk, unsigned int baud_rate)
22 * Function to initialize the console without a
23 * C Runtime to print debug information. This
24 * function will be accessed by console_init and
25 * crash reporting.
26 * In: x0 - console base address
27 * w1 - Uart clock in Hz
28 * w2 - Baud rate
29 * Out: return 1 on success else 0 on error
30 * Clobber list : x1, x2
31 * -----------------------------------------------
32 */
33func console_core_init
34 /* Check the input base address */
35 cbz x0, core_init_fail
36 /* Check baud rate and uart clock for sanity */
37 cbz w1, core_init_fail
38 cbz w2, core_init_fail
39 /* Insert implementation here */
40 mov w0, #1
41 ret
42core_init_fail:
43 mov w0, wzr
44 ret
45endfunc console_core_init
46
47 /* --------------------------------------------------------
48 * int console_core_putc(int c, uintptr_t base_addr)
49 * Function to output a character over the console. It
50 * returns the character printed on success or -1 on error.
51 * In : w0 - character to be printed
52 * x1 - console base address
53 * Out : return -1 on error else return character.
54 * Clobber list : x2
55 * --------------------------------------------------------
56 */
57func console_core_putc
58 /* Check the input parameter */
59 cbz x1, putc_error
60 /* Insert implementation here */
61 ret
62putc_error:
63 mov w0, #-1
64 ret
65endfunc console_core_putc
66
67 /* ---------------------------------------------
68 * int console_core_getc(uintptr_t base_addr)
69 * Function to get a character from the console.
70 * It returns the character grabbed on success
71 * or -1 on error.
72 * In : x0 - console base address
73 * Clobber list : x0, x1
74 * ---------------------------------------------
75 */
76func console_core_getc
77 cbz x0, getc_error
78 /* Insert implementation here */
79 ret
80getc_error:
81 mov w0, #-1
82 ret
83endfunc console_core_getc
Antonio Nino Diaz8377ae42017-02-06 16:03:41 +000084
85 /* ---------------------------------------------
86 * int console_core_flush(uintptr_t base_addr)
87 * Function to force a write of all buffered
88 * data that hasn't been output.
89 * In : x0 - console base address
90 * Out : return -1 on error else return 0.
91 * Clobber list : x0, x1
92 * ---------------------------------------------
93 */
94func console_core_flush
95 cbz x0, flush_error
96 /* Insert implementation here */
97 mov w0, #0
98 ret
99flush_error:
100 mov w0, #-1
101 ret
102endfunc console_core_flush