[U-Boot] [PATCH] Add background serial print and correct search_device function

The patch introduces a new macro 'CFG_BG_CONSOLE_SERIAL'. It means print messages through serial port although current console isn't serial port. It is important for debugging and looks like multi-consoles in Linux but without input.
Another modification in the patch is that verify if search_device function found device. If found, return dev. Otherwise, return NULL.
Signed-off-by: Ryan Chen ryan.chen@st.com
--- common/console.c | 13 +++++++++++++ 1 files changed, 13 insertions(+), 0 deletions(-)
diff --git a/common/console.c b/common/console.c index 1b095b1..c60baef 100644 --- a/common/console.c +++ b/common/console.c @@ -132,12 +132,20 @@ void fputc (int file, const char c) { if (file < MAX_FILES) stdio_devices[file]->putc (c); +#ifdef CFG_BG_CONSOLE_SERIAL + if((unsigned int)stdio_devices[file]->putc != (unsigned int)serial_putc) + serial_putc (c); +#endif/*CFG_BG_CONSOLE_SERIAL*/ }
void fputs (int file, const char *s) { if (file < MAX_FILES) stdio_devices[file]->puts (s); +#ifdef CFG_BG_CONSOLE_SERIAL + if((unsigned int)stdio_devices[file]->puts != (unsigned int)serial_puts) + serial_puts(s); +#endif/*CFG_BG_CONSOLE_SERIAL*/ }
void fprintf (int file, const char *fmt, ...) @@ -377,6 +385,7 @@ device_t *search_device (int flags, char *name) { int i, items; device_t *dev = NULL; + int found_flag = 0;
items = ListNumItems (devlist); if (name == NULL) @@ -385,9 +394,13 @@ device_t *search_device (int flags, char *name) for (i = 1; i <= items; i++) { dev = ListGetPtrToItem (devlist, i); if ((dev->flags & flags) && (strcmp (name, dev->name) == 0)) { + found_flag = 1; break; } } + + if(!found_flag) + return NULL; return dev; } #endif /* CFG_CONSOLE_IS_IN_ENV || CONFIG_SPLASH_SCREEN */

Dear Ryan CHEN,
In message 1219251490-26134-1-git-send-email-ryan.chen@st.com you wrote:
The patch introduces a new macro 'CFG_BG_CONSOLE_SERIAL'. It means print messages through serial port although current console isn't serial port. It is important for debugging and looks like multi-consoles in Linux but without input.
Another modification in the patch is that verify if search_device function found device. If found, return dev. Otherwise, return NULL.
Signed-off-by: Ryan Chen ryan.chen@st.com
This patch doesn't apply any more due to the changes to the list and device code. Can you please rebase it?
But - I recommend to wait a bit doing this, until Gary Jennejohn has posted the input multiplexing stuff he is working on, which will probably obsolete parts of your code (in an hopefully more elegant and more general way).
Best regards,
Wolfgang Denk

On 12:58 Wed 20 Aug , Ryan CHEN wrote:
The patch introduces a new macro 'CFG_BG_CONSOLE_SERIAL'. It means print messages through serial port although current console isn't serial port. It is important for debugging and looks like multi-consoles in Linux but without input.
Another modification in the patch is that verify if search_device function found device. If found, return dev. Otherwise, return NULL.
Signed-off-by: Ryan Chen ryan.chen@st.com
common/console.c | 13 +++++++++++++ 1 files changed, 13 insertions(+), 0 deletions(-)
void fprintf (int file, const char *fmt, ...) @@ -377,6 +385,7 @@ device_t *search_device (int flags, char *name) { int i, items; device_t *dev = NULL;
int found_flag = 0;
items = ListNumItems (devlist); if (name == NULL)
@@ -385,9 +394,13 @@ device_t *search_device (int flags, char *name) for (i = 1; i <= items; i++) { dev = ListGetPtrToItem (devlist, i); if ((dev->flags & flags) && (strcmp (name, dev->name) == 0)) {
} }found_flag = 1; break;
- if(!found_flag)
return dev;return NULL;
}
This part is no more need, It's already fix by this commit c1de7a6daf9c657484e1c6d433f01fccd49a7f48
Best Regards, J.
participants (3)
-
Jean-Christophe PLAGNIOL-VILLARD
-
Ryan CHEN
-
Wolfgang Denk