[U-Boot] [PATCH 2/2] video: Support multiple lines version string display
Peng Fan
peng.fan at nxp.com
Tue Jan 2 07:25:37 UTC 2018
The calculation 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: Peng Fan <peng.fan at nxp.com>
---
drivers/video/cfb_console.c | 30 +++++++++++++++++++++++-------
1 file changed, 23 insertions(+), 7 deletions(-)
diff --git a/drivers/video/cfb_console.c b/drivers/video/cfb_console.c
index 74cc20d653..0b25897062 100644
--- a/drivers/video/cfb_console.c
+++ b/drivers/video/cfb_console.c
@@ -1900,16 +1900,32 @@ static void *video_logo(void)
sprintf(info, " %s", version_string);
#ifndef CONFIG_HIDE_LOGO_VERSION
- 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;
+ uchar *p = (uchar *) info;
+
+ while (len) {
+ if (len > space) {
+ video_drawchars(xx, yy, p, space);
+ len -= space;
+
+ p = (uchar *)p + space;
+
+ if (!y_off) {
+ xx += VIDEO_FONT_WIDTH;
+ space--;
+ }
+ yy += VIDEO_FONT_HEIGHT;
+
+ y_off++;
+ } else {
+ video_drawchars(xx, yy, p, len);
+ len = 0;
+ }
+ }
} else
video_drawstring(VIDEO_INFO_X, VIDEO_INFO_Y, (uchar *) info);
--
2.14.1
More information about the U-Boot
mailing list