console: add console_has_tstc helper function for CONSOLE_MUX
authorPatrick Delaunay <patrick.delaunay@st.com>
Fri, 18 Dec 2020 11:46:46 +0000 (12:46 +0100)
committerTom Rini <trini@konsulko.com>
Fri, 15 Jan 2021 19:36:12 +0000 (14:36 -0500)
Add the helper function console_has_tstc() and replace the test
#if CONFIG_IS_ENABLED(CONSOLE_MUX) to a simple 'if' test to
respect the U-Boot coding rule.

No functional change.

Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com>
Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
common/console.c

index 295c10f..e82b5d2 100644 (file)
@@ -231,6 +231,7 @@ static bool console_dev_is_serial(struct stdio_dev *sdev)
 #if CONFIG_IS_ENABLED(CONSOLE_MUX)
 /** Console I/O multiplexing *******************************************/
 
+/* tstcdev: save the last stdio device with pending characters, with tstc != 0 */
 static struct stdio_dev *tstcdev;
 struct stdio_dev **console_devices[MAX_FILES];
 int cd_count[MAX_FILES];
@@ -256,6 +257,12 @@ static int console_getc(int file)
        return ret;
 }
 
+/*  Upper layer may have already called tstc(): check the saved result */
+static bool console_has_tstc(void)
+{
+       return !!tstcdev;
+}
+
 static int console_tstc(int file)
 {
        int i, ret;
@@ -348,6 +355,11 @@ static inline int console_getc(int file)
        return stdio_devices[file]->getc(stdio_devices[file]);
 }
 
+static bool console_has_tstc(void)
+{
+       return false;
+}
+
 static inline int console_tstc(int file)
 {
        return stdio_devices[file]->tstc(stdio_devices[file]);
@@ -405,18 +417,19 @@ int fgetc(int file)
                 */
                for (;;) {
                        WATCHDOG_RESET();
-#if CONFIG_IS_ENABLED(CONSOLE_MUX)
-                       /*
-                        * Upper layer may have already called tstc() so
-                        * check for that first.
-                        */
-                       if (tstcdev != NULL)
-                               return console_getc(file);
-                       console_tstc(file);
-#else
-                       if (console_tstc(file))
-                               return console_getc(file);
-#endif
+                       if (CONFIG_IS_ENABLED(CONSOLE_MUX)) {
+                               /*
+                                * Upper layer may have already called tstc() so
+                                * check for that first.
+                                */
+                               if (console_has_tstc())
+                                       return console_getc(file);
+                               console_tstc(file);
+                       } else {
+                               if (console_tstc(file))
+                                       return console_getc(file);
+                       }
+
                        /*
                         * If the watchdog must be rate-limited then it should
                         * already be handled in board-specific code.