console.c: fix problem with splashimage
authorAnatolij Gustschin <agust@denx.de>
Tue, 16 Mar 2010 14:29:33 +0000 (15:29 +0100)
committerWolfgang Denk <wd@denx.de>
Sun, 21 Mar 2010 21:22:53 +0000 (22:22 +0100)
If a board uses cfb_console driver and splash image
and also defines CONFIG_SILENT_CONSOLE, the user is
locked out even if "silent" is not set. It is not
possible to get any output, neither on vga console
device nor on serial console after redirecting the
output to the serial console, since the GD_FLG_SILENT
flag remains set.

Fix the problem by redirecting the output from frame
buffer to serial console if splashimage is used.
Only suppress the output if "silent" environment
variable was set and don't set the GD_FLG_SILENT
flag arbitrarily.

Signed-off-by: Anatolij Gustschin <agust@denx.de>
common/console.c

index dc0d13b5a520837cbb4e7a9c5260de1b51b27747..51c6fb6264a1deedbbcc8008f00daf04ff07dbc8 100644 (file)
@@ -659,10 +659,14 @@ int console_init_r(void)
 #ifdef CONFIG_SPLASH_SCREEN
        /*
         * suppress all output if splash screen is enabled and we have
-        * a bmp to display
+        * a bmp to display. We redirect the output from frame buffer
+        * console to serial console in this case or suppress it if
+        * "silent" mode was requested.
         */
-       if (getenv("splashimage") != NULL)
-               gd->flags |= GD_FLG_SILENT;
+       if (getenv("splashimage") != NULL) {
+               if (!(gd->flags & GD_FLG_SILENT))
+                       outputdev = search_device (DEV_FLAGS_OUTPUT, "serial");
+       }
 #endif
 
        /* Scan devices looking for input and output devices */