diff options
author | Anup Patel <anup.patel@wdc.com> | 2021-04-21 15:33:50 +0300 |
---|---|---|
committer | Anup Patel <anup@brainfault.org> | 2021-04-28 14:28:23 +0300 |
commit | 068ca086af2312d56efe51a724d78d84e1339ab4 (patch) | |
tree | 0e90c1a9e7a03254ff5dcb33507c5c9a06f9de3e /include | |
parent | a3689db92a0e83ef25c52887aa686e4527e35a22 (diff) | |
download | opensbi-068ca086af2312d56efe51a724d78d84e1339ab4.tar.xz |
lib: sbi: Simplify console platform operations
Instead of having console_putc() and console_getc() callbacks in
platform operations, it will be much simpler for console driver to
directly register these operations as device to the sbi_console
implementation.
Signed-off-by: Anup Patel <anup.patel@wdc.com>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Reviewed-by: Xiang W <wxjstz@126.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/sbi/sbi_console.h | 15 | ||||
-rw-r--r-- | include/sbi/sbi_platform.h | 31 | ||||
-rw-r--r-- | include/sbi_utils/serial/fdt_serial.h | 6 | ||||
-rw-r--r-- | include/sbi_utils/serial/shakti-uart.h | 4 | ||||
-rw-r--r-- | include/sbi_utils/serial/sifive-uart.h | 4 | ||||
-rw-r--r-- | include/sbi_utils/serial/uart8250.h | 4 | ||||
-rw-r--r-- | include/sbi_utils/sys/htif.h | 4 |
7 files changed, 16 insertions, 52 deletions
diff --git a/include/sbi/sbi_console.h b/include/sbi/sbi_console.h index 7d648f0..e24ba5f 100644 --- a/include/sbi/sbi_console.h +++ b/include/sbi/sbi_console.h @@ -12,6 +12,17 @@ #include <sbi/sbi_types.h> +struct sbi_console_device { + /** Name of the console device */ + char name[32]; + + /** Write a character to the console output */ + void (*console_putc)(char ch); + + /** Read a character from the console input */ + int (*console_getc)(void); +}; + #define __printf(a, b) __attribute__((format(printf, a, b))) bool sbi_isprintable(char ch); @@ -32,6 +43,10 @@ int __printf(1, 2) sbi_printf(const char *format, ...); int __printf(1, 2) sbi_dprintf(const char *format, ...); +const struct sbi_console_device *sbi_console_get_device(void); + +void sbi_console_set_device(const struct sbi_console_device *dev); + struct sbi_scratch; int sbi_console_init(struct sbi_scratch *scratch); diff --git a/include/sbi/sbi_platform.h b/include/sbi/sbi_platform.h index 6736169..0d18ef2 100644 --- a/include/sbi/sbi_platform.h +++ b/include/sbi/sbi_platform.h @@ -95,10 +95,6 @@ struct sbi_platform_operations { /** Initialize (or populate) domains for the platform */ int (*domains_init)(void); - /** Write a character to the platform console output */ - void (*console_putc)(char ch); - /** Read a character from the platform console input */ - int (*console_getc)(void); /** Initialize the platform console */ int (*console_init)(void); @@ -497,33 +493,6 @@ static inline int sbi_platform_domains_init(const struct sbi_platform *plat) } /** - * Write a character to the platform console output - * - * @param plat pointer to struct sbi_platform - * @param ch character to write - */ -static inline void sbi_platform_console_putc(const struct sbi_platform *plat, - char ch) -{ - if (plat && sbi_platform_ops(plat)->console_putc) - sbi_platform_ops(plat)->console_putc(ch); -} - -/** - * Read a character from the platform console input - * - * @param plat pointer to struct sbi_platform - * - * @return character read from console input - */ -static inline int sbi_platform_console_getc(const struct sbi_platform *plat) -{ - if (plat && sbi_platform_ops(plat)->console_getc) - return sbi_platform_ops(plat)->console_getc(); - return -1; -} - -/** * Initialize the platform console * * @param plat pointer to struct sbi_platform diff --git a/include/sbi_utils/serial/fdt_serial.h b/include/sbi_utils/serial/fdt_serial.h index 08f9799..6451c23 100644 --- a/include/sbi_utils/serial/fdt_serial.h +++ b/include/sbi_utils/serial/fdt_serial.h @@ -15,14 +15,8 @@ struct fdt_serial { const struct fdt_match *match_table; int (*init)(void *fdt, int nodeoff, const struct fdt_match *match); - void (*putc)(char ch); - int (*getc)(void); }; -void fdt_serial_putc(char ch); - -int fdt_serial_getc(void); - int fdt_serial_init(void); #endif diff --git a/include/sbi_utils/serial/shakti-uart.h b/include/sbi_utils/serial/shakti-uart.h index 08043be..bcb019e 100644 --- a/include/sbi_utils/serial/shakti-uart.h +++ b/include/sbi_utils/serial/shakti-uart.h @@ -9,10 +9,6 @@ #include <sbi/sbi_types.h> -void shakti_uart_putc(char ch); - -int shakti_uart_getc(void); - int shakti_uart_init(unsigned long base, u32 in_freq, u32 baudrate); #endif diff --git a/include/sbi_utils/serial/sifive-uart.h b/include/sbi_utils/serial/sifive-uart.h index f323392..9c465ec 100644 --- a/include/sbi_utils/serial/sifive-uart.h +++ b/include/sbi_utils/serial/sifive-uart.h @@ -12,10 +12,6 @@ #include <sbi/sbi_types.h> -void sifive_uart_putc(char ch); - -int sifive_uart_getc(void); - int sifive_uart_init(unsigned long base, u32 in_freq, u32 baudrate); #endif diff --git a/include/sbi_utils/serial/uart8250.h b/include/sbi_utils/serial/uart8250.h index 0a1b5d3..6b9b48b 100644 --- a/include/sbi_utils/serial/uart8250.h +++ b/include/sbi_utils/serial/uart8250.h @@ -12,10 +12,6 @@ #include <sbi/sbi_types.h> -void uart8250_putc(char ch); - -int uart8250_getc(void); - int uart8250_init(unsigned long base, u32 in_freq, u32 baudrate, u32 reg_shift, u32 reg_width); diff --git a/include/sbi_utils/sys/htif.h b/include/sbi_utils/sys/htif.h index a431723..8073a44 100644 --- a/include/sbi_utils/sys/htif.h +++ b/include/sbi_utils/sys/htif.h @@ -10,9 +10,7 @@ #include <sbi/sbi_types.h> -void htif_putc(char ch); - -int htif_getc(void); +int htif_serial_init(void); int htif_system_reset_check(u32 type, u32 reason); |