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 struct serial_ops sbi_console_ops __nex_bss; 23 sbi_console_putc_legacy(struct serial_chip * chip __unused,int ch)24static void sbi_console_putc_legacy(struct serial_chip *chip __unused, int ch) 25 { 26 sbi_console_putchar(ch); 27 } 28 sbi_console_putc(struct serial_chip * chip __unused,int ch)29static void sbi_console_putc(struct serial_chip *chip __unused, int ch) 30 { 31 sbi_dbcn_write_byte(ch); 32 } 33 sbi_console_init(struct sbi_console_data * pd)34static void sbi_console_init(struct sbi_console_data *pd) 35 { 36 if (sbi_probe_extension(SBI_EXT_DBCN)) 37 sbi_console_ops.putc = sbi_console_putc; 38 else 39 sbi_console_ops.putc = sbi_console_putc_legacy; 40 41 pd->chip.ops = &sbi_console_ops; 42 } 43 plat_console_init(void)44void plat_console_init(void) 45 { 46 sbi_console_init(&console_data); 47 register_serial_console(&console_data.chip); 48 } 49