summaryrefslogtreecommitdiff
path: root/include/sbi
diff options
context:
space:
mode:
authorAnup Patel <anup.patel@wdc.com>2021-04-21 15:33:50 +0300
committerAnup Patel <anup@brainfault.org>2021-04-28 14:28:23 +0300
commit068ca086af2312d56efe51a724d78d84e1339ab4 (patch)
tree0e90c1a9e7a03254ff5dcb33507c5c9a06f9de3e /include/sbi
parenta3689db92a0e83ef25c52887aa686e4527e35a22 (diff)
downloadopensbi-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/sbi')
-rw-r--r--include/sbi/sbi_console.h15
-rw-r--r--include/sbi/sbi_platform.h31
2 files changed, 15 insertions, 31 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