Merge git://git.denx.de/u-boot-sh
[oweals/u-boot.git] / common / console.c
index 89b1e9590cad7b9695b1a0322d3b81574a45c26c..1deca3cb78f81fabfdd541814775709c7ba49b07 100644 (file)
@@ -19,6 +19,7 @@
 #include <exports.h>
 #include <env_internal.h>
 #include <watchdog.h>
+#include <linux/delay.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -252,10 +253,12 @@ static void console_puts(int file, const char *s)
        }
 }
 
+#if CONFIG_IS_ENABLED(SYS_CONSOLE_IS_IN_ENV)
 static inline void console_doenv(int file, struct stdio_dev *dev)
 {
        iomux_doenv(file, dev->name);
 }
+#endif
 #else
 static inline int console_getc(int file)
 {
@@ -283,10 +286,12 @@ static inline void console_puts(int file, const char *s)
        stdio_devices[file]->puts(stdio_devices[file], s);
 }
 
+#if CONFIG_IS_ENABLED(SYS_CONSOLE_IS_IN_ENV)
 static inline void console_doenv(int file, struct stdio_dev *dev)
 {
        console_setfile(file, dev);
 }
+#endif
 #endif /* CONIFIG_IS_ENABLED(CONSOLE_MUX) */
 
 /** U-Boot INITIAL CONSOLE-NOT COMPATIBLE FUNCTIONS *************************/
@@ -397,7 +402,7 @@ int getc(void)
        if (gd->console_in.start) {
                int ch;
 
-               ch = membuff_getbyte(&gd->console_in);
+               ch = membuff_getbyte((struct membuff *)&gd->console_in);
                if (ch != -1)
                        return 1;
        }
@@ -422,7 +427,7 @@ int tstc(void)
                return 0;
 #ifdef CONFIG_CONSOLE_RECORD
        if (gd->console_in.start) {
-               if (membuff_peekbyte(&gd->console_in) != -1)
+               if (membuff_peekbyte((struct membuff *)&gd->console_in) != -1)
                        return 1;
        }
 #endif
@@ -514,7 +519,7 @@ void putc(const char c)
                return;
 #ifdef CONFIG_CONSOLE_RECORD
        if ((gd->flags & GD_FLG_RECORD) && gd->console_out.start)
-               membuff_putbyte(&gd->console_out, c);
+               membuff_putbyte((struct membuff *)&gd->console_out, c);
 #endif
 #ifdef CONFIG_SILENT_CONSOLE
        if (gd->flags & GD_FLG_SILENT) {
@@ -565,7 +570,7 @@ void puts(const char *s)
                return;
 #ifdef CONFIG_CONSOLE_RECORD
        if ((gd->flags & GD_FLG_RECORD) && gd->console_out.start)
-               membuff_put(&gd->console_out, s, strlen(s));
+               membuff_put((struct membuff *)&gd->console_out, s, strlen(s));
 #endif
 #ifdef CONFIG_SILENT_CONSOLE
        if (gd->flags & GD_FLG_SILENT) {
@@ -598,18 +603,20 @@ int console_record_init(void)
 {
        int ret;
 
-       ret = membuff_new(&gd->console_out, CONFIG_CONSOLE_RECORD_OUT_SIZE);
+       ret = membuff_new((struct membuff *)&gd->console_out,
+                         CONFIG_CONSOLE_RECORD_OUT_SIZE);
        if (ret)
                return ret;
-       ret = membuff_new(&gd->console_in, CONFIG_CONSOLE_RECORD_IN_SIZE);
+       ret = membuff_new((struct membuff *)&gd->console_in,
+                         CONFIG_CONSOLE_RECORD_IN_SIZE);
 
        return ret;
 }
 
 void console_record_reset(void)
 {
-       membuff_purge(&gd->console_out);
-       membuff_purge(&gd->console_in);
+       membuff_purge((struct membuff *)&gd->console_out);
+       membuff_purge((struct membuff *)&gd->console_in);
 }
 
 void console_record_reset_enable(void)
@@ -617,6 +624,18 @@ void console_record_reset_enable(void)
        console_record_reset();
        gd->flags |= GD_FLG_RECORD;
 }
+
+int console_record_readline(char *str, int maxlen)
+{
+       return membuff_readline((struct membuff *)&gd->console_out, str,
+                               maxlen, ' ');
+}
+
+int console_record_avail(void)
+{
+       return membuff_avail((struct membuff *)&gd->console_out);
+}
+
 #endif
 
 /* test if ctrl-c was pressed */