diff options
author | Patrick Delaunay <patrick.delaunay@st.com> | 2018-08-03 13:38:44 +0200 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2018-09-10 20:20:34 -0400 |
commit | 273a12526c6b6278a79f1bdf7f6cc50a32938b28 (patch) | |
tree | 7022cfe0891775052cb8261a832ab5baf688418b | |
parent | d3bb7858545fa54ff3c591570f1d36234ecde2bf (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>
-rw-r--r-- | common/console.c | 9 |
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; |