summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYe.Li <B37916@freescale.com>2015-04-10 12:10:34 +0800
committerYe.Li <B37916@freescale.com>2015-04-10 12:20:21 +0800
commited53487d36a886fb4557088804a4b5232b168889 (patch)
treeb806f3b93852cdb29f24c7d716927d42e1104f3d
parent6fa6765b0dcdad8d414931e49edf6ba65a73d23a (diff)
downloadu-boot-imx-ed53487d36a886fb4557088804a4b5232b168889.zip
u-boot-imx-ed53487d36a886fb4557088804a4b5232b168889.tar.gz
u-boot-imx-ed53487d36a886fb4557088804a4b5232b168889.tar.bz2
MLK-10542 video: Support multiple lines version string display
The caculation of left space for version string is not correct, should use VIDEO_COLS not VIDEO_LINE_LEN / 2, otherwise we will get larger space than actual have and cause string to overlay logo picture. Also current version string display only supports two lines words at max. This also causes overlay when the LCD pixel colume size is not enough. Signed-off-by: Ye.Li <B37916@freescale.com>
-rw-r--r--drivers/video/cfb_console.c30
1 files changed, 23 insertions, 7 deletions
diff --git a/drivers/video/cfb_console.c b/drivers/video/cfb_console.c
index b52e9ed..d9b8f5a 100644
--- a/drivers/video/cfb_console.c
+++ b/drivers/video/cfb_console.c
@@ -2,6 +2,8 @@
* (C) Copyright 2002 ELTEC Elektronik AG
* Frank Gottschling <fgottschling@eltec.de>
*
+ * Copyright (C) 2015 Freescale Semiconductor, Inc.
+ *
* SPDX-License-Identifier: GPL-2.0+
*/
@@ -2035,16 +2037,30 @@ static void *video_logo(void)
sprintf(info, " %s", version_string);
- space = (VIDEO_LINE_LEN / 2 - VIDEO_INFO_X) / VIDEO_FONT_WIDTH;
+ space = (VIDEO_COLS - 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;
+ int xx = VIDEO_INFO_X, yy = VIDEO_INFO_Y;
+ while (len) {
+ if (len > space) {
+ video_drawchars(xx, yy,
+ (uchar *) info + (y_off * space), space);
+ len -= space;
+
+ if (!y_off) {
+ xx += VIDEO_FONT_WIDTH;
+ space--;
+ }
+ yy += VIDEO_FONT_HEIGHT;
+
+ y_off++;
+ } else {
+ video_drawchars(xx, yy,
+ (uchar *) info + (y_off * space), len);
+ len = 0;
+ }
+ }
} else
video_drawstring(VIDEO_INFO_X, VIDEO_INFO_Y, (uchar *) info);