xref: /optee_os/core/arch/riscv/kernel/sbi_console.c (revision db96d03011d33e8da340270ee5aee1a69c7f4f3e)
1 // SPDX-License-Identifier: BSD-2-Clause
2 /*
3  * Copyright 2022 NXP
4  */
5 
6 #include <assert.h>
7 #include <compiler.h>
8 #include <config.h>
9 #include <console.h>
10 #include <drivers/serial.h>
11 #include <kernel/spinlock.h>
12 #include <riscv.h>
13 #include <sbi.h>
14 #include <trace.h>
15 #include <util.h>
16 
17 struct sbi_console_data {
18 	struct serial_chip chip;
19 };
20 
21 static struct sbi_console_data console_data __nex_bss;
22 static void sbi_console_flush(struct serial_chip *chip __unused)
23 {
24 }
25 
26 static void sbi_console_putc(struct serial_chip *chip __unused,
27 			     int ch)
28 {
29 	sbi_console_putchar(ch);
30 }
31 
32 static const struct serial_ops sbi_console_ops = {
33 	.flush = sbi_console_flush,
34 	.putc = sbi_console_putc,
35 };
36 
37 static void sbi_console_init(struct sbi_console_data *pd)
38 {
39 	pd->chip.ops = &sbi_console_ops;
40 }
41 
42 void plat_console_init(void)
43 {
44 	sbi_console_init(&console_data);
45 	register_serial_console(&console_data.chip);
46 }
47