summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorPatrick Delaunay <patrick.delaunay@st.com>2018-08-03 13:38:44 +0200
committerTom Rini <trini@konsulko.com>2018-09-10 20:20:34 -0400
commit273a12526c6b6278a79f1bdf7f6cc50a32938b28 (patch)
tree7022cfe0891775052cb8261a832ab5baf688418b /common
parentd3bb7858545fa54ff3c591570f1d36234ecde2bf (diff)
console: unify fgetc function when console MUX is deactivated
Unify the fgetc function when MUX is activated or not: - always call tstc() : it is the normal behavior expected by serial uclass (call tstc then getc) and that avoids issue when SERIAL_RX_BUFFER is activated - reload WATCHDOG in the char waiting loop This patch allow to have the same behavior when CONSOLE_MUX is activated or not and avoid regression when this feature is deactivated. Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com> Reviewed-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'common')
-rw-r--r--common/console.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/common/console.c b/common/console.c
index 7aa58d0a63..9a94f32192 100644
--- a/common/console.c
+++ b/common/console.c
@@ -311,12 +311,12 @@ int serial_printf(const char *fmt, ...)
int fgetc(int file)
{
if (file < MAX_FILES) {
-#if CONFIG_IS_ENABLED(CONSOLE_MUX)
/*
* Effectively poll for input wherever it may be available.
*/
for (;;) {
WATCHDOG_RESET();
+#if CONFIG_IS_ENABLED(CONSOLE_MUX)
/*
* Upper layer may have already called tstc() so
* check for that first.
@@ -324,6 +324,10 @@ int fgetc(int file)
if (tstcdev != NULL)
return console_getc(file);
console_tstc(file);
+#else
+ if (console_tstc(file))
+ return console_getc(file);
+#endif
#ifdef CONFIG_WATCHDOG
/*
* If the watchdog must be rate-limited then it should
@@ -332,9 +336,6 @@ int fgetc(int file)
udelay(1);
#endif
}
-#else
- return console_getc(file);
-#endif
}
return -1;