[U-Boot] [PATCH] video: Fix console display when splashscreen is used

If a splashscreen is used the console scrolling used the scroll size as needed when a logo was displayd. This patch sets the scroll size to the whole screen if a splashscreen is shown.
Signed-off-by: Matthias Weisser matthias.weisser@graf-syteco.de --- drivers/video/cfb_console.c | 21 ++++++++++++--------- 1 files changed, 12 insertions(+), 9 deletions(-)
diff --git a/drivers/video/cfb_console.c b/drivers/video/cfb_console.c index 506337b..2391f31 100644 --- a/drivers/video/cfb_console.c +++ b/drivers/video/cfb_console.c @@ -260,7 +260,7 @@ void console_cursor (int state); #define CURSOR_ON #define CURSOR_OFF #define CURSOR_SET video_set_hw_cursor(console_col * VIDEO_FONT_WIDTH, \ - (console_row * VIDEO_FONT_HEIGHT) + VIDEO_LOGO_HEIGHT); + (console_row * VIDEO_FONT_HEIGHT) + video_logo_height); #endif /* CONFIG_VIDEO_HW_CURSOR */
#ifdef CONFIG_VIDEO_LOGO @@ -298,7 +298,7 @@ void console_cursor (int state); #define VIDEO_BURST_LEN (VIDEO_COLS/8)
#ifdef CONFIG_VIDEO_LOGO -#define CONSOLE_ROWS ((VIDEO_ROWS - VIDEO_LOGO_HEIGHT) / VIDEO_FONT_HEIGHT) +#define CONSOLE_ROWS ((VIDEO_ROWS - video_logo_height) / VIDEO_FONT_HEIGHT) #else #define CONSOLE_ROWS (VIDEO_ROWS / VIDEO_FONT_HEIGHT) #endif @@ -349,6 +349,8 @@ static GraphicDevice *pGD; /* Pointer to Graphic array */ static void *video_fb_address; /* frame buffer address */ static void *video_console_address; /* console buffer start address */
+static int video_logo_height = VIDEO_LOGO_HEIGHT; + static int console_col = 0; /* cursor col */ static int console_row = 0; /* cursor row */
@@ -527,7 +529,7 @@ static inline void video_drawstring (int xx, int yy, unsigned char *s)
static void video_putchar (int xx, int yy, unsigned char c) { - video_drawchars (xx, yy + VIDEO_LOGO_HEIGHT, &c, 1); + video_drawchars (xx, yy + video_logo_height, &c, 1); }
/*****************************************************************************/ @@ -620,11 +622,11 @@ static void console_scrollup (void) #ifdef VIDEO_HW_BITBLT video_hw_bitblt (VIDEO_PIXEL_SIZE, /* bytes per pixel */ 0, /* source pos x */ - VIDEO_LOGO_HEIGHT + VIDEO_FONT_HEIGHT, /* source pos y */ + video_logo_height + VIDEO_FONT_HEIGHT, /* source pos y */ 0, /* dest pos x */ - VIDEO_LOGO_HEIGHT, /* dest pos y */ + video_logo_height, /* dest pos y */ VIDEO_VISIBLE_COLS, /* frame width */ - VIDEO_VISIBLE_ROWS - VIDEO_LOGO_HEIGHT - VIDEO_FONT_HEIGHT /* frame height */ + VIDEO_VISIBLE_ROWS - video_logo_height - VIDEO_FONT_HEIGHT /* frame height */ ); #else memcpyl (CONSOLE_ROW_FIRST, CONSOLE_ROW_SECOND, @@ -1101,7 +1103,7 @@ void logo_plot (void *screen, int width, int x, int y)
int xcount, i; int skip = (width - VIDEO_LOGO_WIDTH) * VIDEO_PIXEL_SIZE; - int ycount = VIDEO_LOGO_HEIGHT; + int ycount = video_logo_height; unsigned char r, g, b, *logo_red, *logo_blue, *logo_green; unsigned char *source; unsigned char *dest = (unsigned char *)screen + @@ -1225,6 +1227,7 @@ static void *video_logo (void) #endif /* CONFIG_SPLASH_SCREEN_ALIGN */
if (video_display_bitmap (addr, x, y) == 0) { + video_logo_height = 0; return ((void *) (video_fb_address)); } } @@ -1249,7 +1252,7 @@ static void *video_logo (void)
#ifdef CONFIG_CONSOLE_EXTRA_INFO { - int i, n = ((VIDEO_LOGO_HEIGHT - VIDEO_FONT_HEIGHT) / VIDEO_FONT_HEIGHT); + int i, n = ((video_logo_height - VIDEO_FONT_HEIGHT) / VIDEO_FONT_HEIGHT);
for (i = 1; i < n; i++) { video_get_info_str (i, info); @@ -1278,7 +1281,7 @@ static void *video_logo (void) } #endif
- return (video_fb_address + VIDEO_LOGO_HEIGHT * VIDEO_LINE_LEN); + return (video_fb_address + video_logo_height * VIDEO_LINE_LEN); } #endif

Dear Anatolij,
In message 1263294391-15715-1-git-send-email-matthias.weisser@graf-syteco.de Matthias Weisser wrote:
If a splashscreen is used the console scrolling used the scroll size as needed when a logo was displayd. This patch sets the scroll size to the whole screen if a splashscreen is shown.
Signed-off-by: Matthias Weisser matthias.weisser@graf-syteco.de
drivers/video/cfb_console.c | 21 ++++++++++++--------- 1 files changed, 12 insertions(+), 9 deletions(-)
diff --git a/drivers/video/cfb_console.c b/drivers/video/cfb_console.c index 506337b..2391f31 100644 --- a/drivers/video/cfb_console.c +++ b/drivers/video/cfb_console.c @@ -260,7 +260,7 @@ void console_cursor (int state); #define CURSOR_ON #define CURSOR_OFF #define CURSOR_SET video_set_hw_cursor(console_col * VIDEO_FONT_WIDTH, \
(console_row * VIDEO_FONT_HEIGHT) + VIDEO_LOGO_HEIGHT);
(console_row * VIDEO_FONT_HEIGHT) + video_logo_height);
#endif /* CONFIG_VIDEO_HW_CURSOR */
#ifdef CONFIG_VIDEO_LOGO @@ -298,7 +298,7 @@ void console_cursor (int state); #define VIDEO_BURST_LEN (VIDEO_COLS/8)
#ifdef CONFIG_VIDEO_LOGO -#define CONSOLE_ROWS ((VIDEO_ROWS - VIDEO_LOGO_HEIGHT) / VIDEO_FONT_HEIGHT) +#define CONSOLE_ROWS ((VIDEO_ROWS - video_logo_height) / VIDEO_FONT_HEIGHT) #else #define CONSOLE_ROWS (VIDEO_ROWS / VIDEO_FONT_HEIGHT) #endif @@ -349,6 +349,8 @@ static GraphicDevice *pGD; /* Pointer to Graphic array */ static void *video_fb_address; /* frame buffer address */ static void *video_console_address; /* console buffer start address */
+static int video_logo_height = VIDEO_LOGO_HEIGHT;
static int console_col = 0; /* cursor col */ static int console_row = 0; /* cursor row */
@@ -527,7 +529,7 @@ static inline void video_drawstring (int xx, int yy, unsigned char *s)
static void video_putchar (int xx, int yy, unsigned char c) {
- video_drawchars (xx, yy + VIDEO_LOGO_HEIGHT, &c, 1);
- video_drawchars (xx, yy + video_logo_height, &c, 1);
}
/*****************************************************************************/ @@ -620,11 +622,11 @@ static void console_scrollup (void) #ifdef VIDEO_HW_BITBLT video_hw_bitblt (VIDEO_PIXEL_SIZE, /* bytes per pixel */ 0, /* source pos x */
VIDEO_LOGO_HEIGHT + VIDEO_FONT_HEIGHT, /* source pos y */
video_logo_height + VIDEO_FONT_HEIGHT, /* source pos y */ 0, /* dest pos x */
VIDEO_LOGO_HEIGHT, /* dest pos y */
video_logo_height, /* dest pos y */ VIDEO_VISIBLE_COLS, /* frame width */
VIDEO_VISIBLE_ROWS - VIDEO_LOGO_HEIGHT - VIDEO_FONT_HEIGHT /* frame height */
);VIDEO_VISIBLE_ROWS - video_logo_height - VIDEO_FONT_HEIGHT /* frame height */
#else memcpyl (CONSOLE_ROW_FIRST, CONSOLE_ROW_SECOND, @@ -1101,7 +1103,7 @@ void logo_plot (void *screen, int width, int x, int y)
int xcount, i; int skip = (width - VIDEO_LOGO_WIDTH) * VIDEO_PIXEL_SIZE;
- int ycount = VIDEO_LOGO_HEIGHT;
- int ycount = video_logo_height; unsigned char r, g, b, *logo_red, *logo_blue, *logo_green; unsigned char *source; unsigned char *dest = (unsigned char *)screen +
@@ -1225,6 +1227,7 @@ static void *video_logo (void) #endif /* CONFIG_SPLASH_SCREEN_ALIGN */
if (video_display_bitmap (addr, x, y) == 0) {
} }video_logo_height = 0; return ((void *) (video_fb_address));
@@ -1249,7 +1252,7 @@ static void *video_logo (void)
#ifdef CONFIG_CONSOLE_EXTRA_INFO {
int i, n = ((VIDEO_LOGO_HEIGHT - VIDEO_FONT_HEIGHT) / VIDEO_FONT_HEIGHT);
int i, n = ((video_logo_height - VIDEO_FONT_HEIGHT) / VIDEO_FONT_HEIGHT);
for (i = 1; i < n; i++) { video_get_info_str (i, info);
@@ -1278,7 +1281,7 @@ static void *video_logo (void) } #endif
- return (video_fb_address + VIDEO_LOGO_HEIGHT * VIDEO_LINE_LEN);
- return (video_fb_address + video_logo_height * VIDEO_LINE_LEN);
} #endif
--
What's the status of this patch? Is it on your queue?
Best regards,
Wolfgang Denk

Dear Wolfgang,
On Thu, 11 Mar 2010 23:43:13 +0100 Wolfgang Denk wd@denx.de wrote:
In message 1263294391-15715-1-git-send-email-matthias.weisser@graf-syteco.de Matthias Weisser wrote:
If a splashscreen is used the console scrolling used the scroll size as needed when a logo was displayd. This patch sets the scroll size to the whole screen if a splashscreen is shown.
Signed-off-by: Matthias Weisser matthias.weisser@graf-syteco.de
drivers/video/cfb_console.c | 21 ++++++++++++--------- 1 files changed, 12 insertions(+), 9 deletions(-)
...
What's the status of this patch? Is it on your queue?
Yes, in is on my TODO list. Sorry, I'm quite busy now, but I hope to look at this patch soon.
Best regards, Anatolij

On Tue, 12 Jan 2010 12:06:31 +0100 Matthias Weisser matthias.weisser@graf-syteco.de wrote:
If a splashscreen is used the console scrolling used the scroll size as needed when a logo was displayd. This patch sets the scroll size to the whole screen if a splashscreen is shown.
Signed-off-by: Matthias Weisser matthias.weisser@graf-syteco.de
drivers/video/cfb_console.c | 21 ++++++++++++--------- 1 files changed, 12 insertions(+), 9 deletions(-)
Applied to u-boot-video master.
Thanks, and sorry for really unacceptable delay.
Anatolij
participants (3)
-
Anatolij Gustschin
-
Matthias Weisser
-
Wolfgang Denk