aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorXiang W <wxjstz@126.com>2023-11-17 09:03:58 +0800
committerAnup Patel <anup@brainfault.org>2023-11-17 16:03:21 +0530
commit3aaed4fadfce9e02823c813bd5a69a84376b3397 (patch)
tree1ea7eaeaa028c7119656afc0859765bf94154749 /lib
parent6602e11de375b761d778808cc38645fce314c4fa (diff)
downloadopensbi-3aaed4fadfce9e02823c813bd5a69a84376b3397.zip
opensbi-3aaed4fadfce9e02823c813bd5a69a84376b3397.tar.gz
opensbi-3aaed4fadfce9e02823c813bd5a69a84376b3397.tar.bz2
lib: sbi: Make console_puts/console_putc interchangeable
console_puts/console_putc should replace each other, but the previous sbi_putc can only use console_putc. This patch addresses this problem. Signed-off-by: Xiang W <wxjstz@126.com> Reviewed-by: Guo Ren <guoren@kernel.org> Reviewed-by: Anup Patel <anup@brainfault.org>
Diffstat (limited to 'lib')
-rw-r--r--lib/sbi/sbi_console.c35
1 files changed, 17 insertions, 18 deletions
diff --git a/lib/sbi/sbi_console.c b/lib/sbi/sbi_console.c
index 2b3b0a3..ab09a5c 100644
--- a/lib/sbi/sbi_console.c
+++ b/lib/sbi/sbi_console.c
@@ -37,28 +37,22 @@ int sbi_getc(void)
return -1;
}
-void sbi_putc(char ch)
-{
- if (console_dev && console_dev->console_putc) {
- if (ch == '\n')
- console_dev->console_putc('\r');
- console_dev->console_putc(ch);
- }
-}
-
static unsigned long nputs(const char *str, unsigned long len)
{
- unsigned long i, ret;
+ unsigned long i;
- if (console_dev && console_dev->console_puts) {
- ret = console_dev->console_puts(str, len);
- } else {
- for (i = 0; i < len; i++)
- sbi_putc(str[i]);
- ret = len;
+ if (console_dev) {
+ if (console_dev->console_puts)
+ return console_dev->console_puts(str, len);
+ else if (console_dev->console_putc) {
+ for (i = 0; i < len; i++) {
+ if (str[i] == '\n')
+ console_dev->console_putc('\r');
+ console_dev->console_putc(str[i]);
+ }
+ }
}
-
- return ret;
+ return len;
}
static void nputs_all(const char *str, unsigned long len)
@@ -69,6 +63,11 @@ static void nputs_all(const char *str, unsigned long len)
p += nputs(&str[p], len - p);
}
+void sbi_putc(char ch)
+{
+ nputs_all(&ch, 1);
+}
+
void sbi_puts(const char *str)
{
unsigned long len = sbi_strlen(str);