Signed-off-by: Bastian Ruppert <bastian.rupp...@sewerin.de> CC: Anatolij Gustschin <ag...@denx.de> CC: Tom Rini <tr...@ti.com> CC: Stefano Babic <sba...@denx.de> --- drivers/video/cfb_console.c | 61 ++++++++++++++++++++++++++++--------------- 1 files changed, 40 insertions(+), 21 deletions(-)
diff --git a/drivers/video/cfb_console.c b/drivers/video/cfb_console.c index 19d061f..21b52bd 100644 --- a/drivers/video/cfb_console.c +++ b/drivers/video/cfb_console.c @@ -66,7 +66,11 @@ * 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 + * CONFIG_VIDEO_LOGO - display Linux Logo in upper left corner. + * Use CONFIG_SPLASH_SCREEN_ALIGN with + * environment variable "splashpos" to place + * the logo on other position. In this case + * no CONSOLE_EXTRA_INFO is possible. * CONFIG_VIDEO_BMP_LOGO - use bmp_logo instead of linux_logo * CONFIG_CONSOLE_EXTRA_INFO - display additional board information * strings that normaly goes to serial @@ -369,6 +373,8 @@ 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 video_logo_xpos; +static int video_logo_ypos; static int __maybe_unused cursor_state; static int __maybe_unused old_col; @@ -1594,40 +1600,53 @@ static void *video_logo(void) __maybe_unused int y_off = 0; #ifdef CONFIG_SPLASH_SCREEN - char *s; ulong addr; - - s = getenv("splashimage"); +#endif +#if defined(CONFIG_SPLASH_SCREEN) || defined(CONFIG_SPLASH_SCREEN_ALIGN) + char *s; +#endif +#ifdef CONFIG_SPLASH_SCREEN_ALIGN + s = getenv("splashpos"); if (s != NULL) { - int x = 0, y = 0; + if (s[0] == 'm') + video_logo_xpos = BMP_ALIGN_CENTER; + else + video_logo_xpos = simple_strtol(s, NULL, 0); - addr = simple_strtoul(s, NULL, 16); -#ifdef CONFIG_SPLASH_SCREEN_ALIGN - s = getenv("splashpos"); + s = strchr(s + 1, ','); if (s != NULL) { - if (s[0] == 'm') - x = BMP_ALIGN_CENTER; + if (s[1] == 'm') + video_logo_ypos = BMP_ALIGN_CENTER; else - x = simple_strtol(s, NULL, 0); - - s = strchr(s + 1, ','); - if (s != NULL) { - if (s[1] == 'm') - y = BMP_ALIGN_CENTER; - else - y = simple_strtol(s + 1, NULL, 0); - } + video_logo_ypos = simple_strtol(s + 1, NULL, 0); } + } #endif /* CONFIG_SPLASH_SCREEN_ALIGN */ +#ifdef CONFIG_SPLASH_SCREEN + s = getenv("splashimage"); + if (s != NULL) { + + addr = simple_strtoul(s, NULL, 16); - if (video_display_bitmap(addr, x, y) == 0) { + + if (video_display_bitmap(addr, \ + video_logo_xpos, \ + video_logo_ypos) == 0) { video_logo_height = 0; return ((void *) (video_fb_address)); } } #endif /* CONFIG_SPLASH_SCREEN */ - logo_plot(video_fb_address, VIDEO_COLS, 0, 0); + logo_plot(video_fb_address, \ + VIDEO_COLS, \ + video_logo_xpos, \ + video_logo_ypos); + +#ifdef CONFIG_SPLASH_SCREEN_ALIGN + /* when using splashpos for video_logo, no console output */ + return (video_fb_address + video_logo_height * VIDEO_LINE_LEN); +#endif sprintf(info, " %s", version_string); -- 1.7.0.4 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot