lib: sbi: Make console_puts/console_putc interchangeable
authorXiang W <wxjstz@126.com>
Fri, 17 Nov 2023 01:03:58 +0000 (09:03 +0800)
committerAnup Patel <anup@brainfault.org>
Fri, 17 Nov 2023 10:33:21 +0000 (16:03 +0530)
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>
lib/sbi/sbi_console.c

index 2b3b0a3fe80dcaf5ba9c8f1a364f441efabe1f0c..ab09a5c01e1932f7c81d845643e26712fd08a730 100644 (file)
@@ -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);