Merge branch 'master' of git://git.denx.de/u-boot-video
[oweals/u-boot.git] / drivers / video / cfb_console.c
index fe418f11b23c6b07aac95510635beda6fd0894aa..5ee2314f3cd5e83c05bb8c3c53cedb08a8018c7b 100644 (file)
@@ -61,7 +61,7 @@
 
  CONFIG_CONSOLE_CURSOR      - on/off drawing cursor is done with delay
                               loop in VIDEO_TSTC_FCT (i8042)
- CFG_CONSOLE_BLINK_COUNT     - value for delay loop - blink rate
+ CONFIG_SYS_CONSOLE_BLINK_COUNT     - value for delay loop - blink rate
  CONFIG_CONSOLE_TIME        - display time/date in upper right corner,
                               needs CONFIG_CMD_DATE and CONFIG_CONSOLE_CURSOR
  CONFIG_VIDEO_LOGO          - display Linux Logo in upper left corner
@@ -824,19 +824,19 @@ int video_display_bitmap (ulong bmp_image, int x, int y)
                /*
                 * Could be a gzipped bmp image, try to decrompress...
                 */
-               len = CFG_VIDEO_LOGO_MAX_SIZE;
-               dst = malloc(CFG_VIDEO_LOGO_MAX_SIZE);
+               len = CONFIG_SYS_VIDEO_LOGO_MAX_SIZE;
+               dst = malloc(CONFIG_SYS_VIDEO_LOGO_MAX_SIZE);
                if (dst == NULL) {
                        printf("Error: malloc in gunzip failed!\n");
                        return(1);
                }
-               if (gunzip(dst, CFG_VIDEO_LOGO_MAX_SIZE, (uchar *)bmp_image, &len) != 0) {
+               if (gunzip(dst, CONFIG_SYS_VIDEO_LOGO_MAX_SIZE, (uchar *)bmp_image, &len) != 0) {
                        printf ("Error: no valid bmp or bmp.gz image at %lx\n", bmp_image);
                        free(dst);
                        return 1;
                }
-               if (len == CFG_VIDEO_LOGO_MAX_SIZE) {
-                       printf("Image could be truncated (increase CFG_VIDEO_LOGO_MAX_SIZE)!\n");
+               if (len == CONFIG_SYS_VIDEO_LOGO_MAX_SIZE) {
+                       printf("Image could be truncated (increase CONFIG_SYS_VIDEO_LOGO_MAX_SIZE)!\n");
                }
 
                /*
@@ -1181,6 +1181,7 @@ static void *video_logo (void)
 {
        char info[128];
        extern char version_string;
+       int space, len, y_off = 0;
 
 #ifdef CONFIG_SPLASH_SCREEN
        char *s;
@@ -1198,7 +1199,19 @@ static void *video_logo (void)
        logo_plot (video_fb_address, VIDEO_COLS, 0, 0);
 
        sprintf (info, " %s", &version_string);
-       video_drawstring (VIDEO_INFO_X, VIDEO_INFO_Y, (uchar *)info);
+
+       space = (VIDEO_LINE_LEN / 2 - VIDEO_INFO_X) / VIDEO_FONT_WIDTH;
+       len = strlen(info);
+
+       if (len > space) {
+               video_drawchars (VIDEO_INFO_X, VIDEO_INFO_Y,
+                                (uchar *)info, space);
+               video_drawchars (VIDEO_INFO_X + VIDEO_FONT_WIDTH,
+                                VIDEO_INFO_Y + VIDEO_FONT_HEIGHT,
+                                (uchar *)info + space, len - space);
+               y_off = 1;
+       } else
+               video_drawstring (VIDEO_INFO_X, VIDEO_INFO_Y, (uchar *)info);
 
 #ifdef CONFIG_CONSOLE_EXTRA_INFO
        {
@@ -1206,10 +1219,27 @@ static void *video_logo (void)
 
                for (i = 1; i < n; i++) {
                        video_get_info_str (i, info);
-                       if (*info)
+                       if (!*info)
+                               continue;
+
+                       len = strlen(info);
+                       if (len > space) {
+                               video_drawchars (VIDEO_INFO_X,
+                                                VIDEO_INFO_Y +
+                                                (i + y_off) * VIDEO_FONT_HEIGHT,
+                                                (uchar *)info, space);
+                               y_off++;
+                               video_drawchars (VIDEO_INFO_X + VIDEO_FONT_WIDTH,
+                                                VIDEO_INFO_Y +
+                                                (i + y_off) * VIDEO_FONT_HEIGHT,
+                                                (uchar *)info + space,
+                                                len - space);
+                       } else {
                                video_drawstring (VIDEO_INFO_X,
-                                                 VIDEO_INFO_Y + i * VIDEO_FONT_HEIGHT,
+                                                 VIDEO_INFO_Y +
+                                                 (i + y_off) * VIDEO_FONT_HEIGHT,
                                                  (uchar *)info);
+                       }
                }
        }
 #endif