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>
This commit is contained in:
Anup Patel
2021-04-21 18:03:50 +05:30
committed by Anup Patel
parent a3689db92a
commit 068ca086af
25 changed files with 96 additions and 134 deletions

View File

@@ -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);

View File

@@ -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);
@@ -496,33 +492,6 @@ static inline int sbi_platform_domains_init(const struct sbi_platform *plat)
return 0;
}
/**
* 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
*

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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);

View File

@@ -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);