X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=drivers%2Fvideo%2Fcfb_console.c;h=a087d2e54a25761d0f6c3d61eab7f2d014722fe7;hb=9909aebc9d0820aa4f35308f3d8a8d7821e9f8e5;hp=30e0317bb254b8e3d0d65453b6ee8303795fc635;hpb=632093b566569329bc6e5b0893bdca01de905314;p=u-boot diff --git a/drivers/video/cfb_console.c b/drivers/video/cfb_console.c index 30e0317bb2..a087d2e54a 100644 --- a/drivers/video/cfb_console.c +++ b/drivers/video/cfb_console.c @@ -15,8 +15,10 @@ * logo can be placed in the upper left corner and additional board * information strings (that normally goes to serial port) can be drawn. * - * The console driver can use the standard PC keyboard interface (i8042) - * for character input. Character output goes to a memory mapped video + * The console driver can use a keyboard interface for character input + * but this is deprecated. Only rk51 uses it. + * + * Character output goes to a memory-mapped video * framebuffer with little or big-endian organisation. * With environment setting 'console=serial' the console i/o can be * forced to serial port. @@ -25,7 +27,6 @@ * * (for SMI LynxE graphic chip) * - * CONFIG_VIDEO_SMI_LYNXEM - use graphic driver for SMI 710,712,810 * VIDEO_FB_LITTLE_ENDIAN - framebuffer organisation default: big endian * VIDEO_HW_RECTFILL - graphic driver supports hardware rectangle fill * VIDEO_HW_BITBLT - graphic driver supports hardware bit blt @@ -38,18 +39,10 @@ * VIDEO_DATA_FORMAT - graphical data format GDF * VIDEO_FB_ADRS - start of video memory * - * CONFIG_I8042_KBD - AT Keyboard driver for i8042 * VIDEO_KBD_INIT_FCT - init function for keyboard * VIDEO_TSTC_FCT - keyboard_tstc function * VIDEO_GETC_FCT - keyboard_getc function * - * CONFIG_CONSOLE_CURSOR - on/off drawing cursor is done with - * delay loop in VIDEO_TSTC_FCT (i8042) - * - * 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. * Use CONFIG_SPLASH_SCREEN_ALIGN with * environment variable "splashpos" to place @@ -92,18 +85,6 @@ #include #include -/* - * Console device defines with SMI graphic - * Any other graphic must change this section - */ - -#ifdef CONFIG_VIDEO_SMI_LYNXEM - -#define VIDEO_FB_LITTLE_ENDIAN -#define VIDEO_HW_RECTFILL -#define VIDEO_HW_BITBLT -#endif - /* * Defines for the CT69000 driver */ @@ -123,7 +104,7 @@ #define VIDEO_HW_BITBLT #endif -#ifdef CONFIG_VIDEO_MXS +#if defined(CONFIG_VIDEO_MXS) || defined(CONFIG_VIDEO_S3C) #define VIDEO_FB_16BPP_WORD_SWAP #endif @@ -164,19 +145,6 @@ #define VIDEO_DATA_FORMAT (pGD->gdfIndex) #define VIDEO_FB_ADRS (pGD->frameAdrs) -/* - * Console device defines with i8042 keyboard controller - * Any other keyboard controller must change this section - */ - -#ifdef CONFIG_I8042_KBD -#include - -#define VIDEO_KBD_INIT_FCT i8042_kbd_init() -#define VIDEO_TSTC_FCT i8042_tstc -#define VIDEO_GETC_FCT i8042_getc -#endif - /* * Console device */ @@ -198,9 +166,6 @@ /* * Cursor definition: - * CONFIG_CONSOLE_CURSOR: Uses a timer function (see drivers/input/i8042.c) - * to let the cursor blink. Uses the macros - * CURSOR_OFF and CURSOR_ON. * CONFIG_VIDEO_SW_CURSOR: Draws a cursor after the last character. No * blinking is provided. Uses the macros CURSOR_SET * and CURSOR_OFF. @@ -210,42 +175,29 @@ * must disable the hardware register of the graphic * chip. Otherwise a blinking field is displayed */ -#if !defined(CONFIG_CONSOLE_CURSOR) && \ - !defined(CONFIG_VIDEO_SW_CURSOR) && \ - !defined(CONFIG_VIDEO_HW_CURSOR) +#if !defined(CONFIG_VIDEO_SW_CURSOR) && !defined(CONFIG_VIDEO_HW_CURSOR) /* no Cursor defined */ #define CURSOR_ON #define CURSOR_OFF #define CURSOR_SET #endif -#if defined(CONFIG_CONSOLE_CURSOR) || defined(CONFIG_VIDEO_SW_CURSOR) -#if defined(CURSOR_ON) || \ - (defined(CONFIG_CONSOLE_CURSOR) && defined(CONFIG_VIDEO_SW_CURSOR)) -#error only one of CONFIG_CONSOLE_CURSOR, CONFIG_VIDEO_SW_CURSOR, \ - or CONFIG_VIDEO_HW_CURSOR can be defined +#if defined(CONFIG_VIDEO_SW_CURSOR) +#if defined(CONFIG_VIDEO_HW_CURSOR) +#error only one of CONFIG_VIDEO_SW_CURSOR or CONFIG_VIDEO_HW_CURSOR can be \ + defined #endif void console_cursor(int state); #define CURSOR_ON console_cursor(1) #define CURSOR_OFF console_cursor(0) #define CURSOR_SET video_set_cursor() -#endif /* CONFIG_CONSOLE_CURSOR || CONFIG_VIDEO_SW_CURSOR */ - -#ifdef CONFIG_CONSOLE_CURSOR -#ifndef CONFIG_CONSOLE_TIME -#error CONFIG_CONSOLE_CURSOR must be defined for CONFIG_CONSOLE_TIME -#endif -#ifndef CONFIG_I8042_KBD -#warning Cursor drawing on/off needs timer function s.a. drivers/input/i8042.c -#endif -#endif /* CONFIG_CONSOLE_CURSOR */ - +#endif /* CONFIG_VIDEO_SW_CURSOR */ #ifdef CONFIG_VIDEO_HW_CURSOR #ifdef CURSOR_ON -#error only one of CONFIG_CONSOLE_CURSOR, CONFIG_VIDEO_SW_CURSOR, \ - or CONFIG_VIDEO_HW_CURSOR can be defined +#error only one of CONFIG_VIDEO_SW_CURSOR or CONFIG_VIDEO_HW_CURSOR can be \ + defined #endif #define CURSOR_ON #define CURSOR_OFF @@ -626,7 +578,7 @@ static void video_putchar(int xx, int yy, unsigned char c) video_drawchars(xx, yy + video_logo_height, &c, 1); } -#if defined(CONFIG_CONSOLE_CURSOR) || defined(CONFIG_VIDEO_SW_CURSOR) +#if defined(CONFIG_VIDEO_SW_CURSOR) static void video_set_cursor(void) { if (cursor_state) @@ -651,27 +603,6 @@ static void video_invertchar(int xx, int yy) void console_cursor(int state) { -#ifdef CONFIG_CONSOLE_TIME - struct rtc_time tm; - char info[16]; - - /* time update only if cursor is on (faster scroll) */ - if (state) { - rtc_get(&tm); - - sprintf(info, " %02d:%02d:%02d ", tm.tm_hour, tm.tm_min, - tm.tm_sec); - video_drawstring(VIDEO_VISIBLE_COLS - 10 * VIDEO_FONT_WIDTH, - VIDEO_INFO_Y, (uchar *) info); - - sprintf(info, "%02d.%02d.%04d", tm.tm_mday, tm.tm_mon, - tm.tm_year); - video_drawstring(VIDEO_VISIBLE_COLS - 10 * VIDEO_FONT_WIDTH, - VIDEO_INFO_Y + 1 * VIDEO_FONT_HEIGHT, - (uchar *) info); - } -#endif - if (cursor_state != state) { if (cursor_state) { /* turn off the cursor */ @@ -1985,10 +1916,10 @@ static void plot_logo_or_black(void *screen, int x, int y, int black) static void *video_logo(void) { char info[128]; - int space, len; __maybe_unused int y_off = 0; __maybe_unused ulong addr; __maybe_unused char *s; + __maybe_unused int len, space; splash_get_pos(&video_logo_xpos, &video_logo_ypos); @@ -2034,6 +1965,7 @@ 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; len = strlen(info); @@ -2082,6 +2014,7 @@ static void *video_logo(void) } } } +#endif #endif return (video_fb_address + video_logo_height * VIDEO_LINE_LEN); @@ -2147,70 +2080,72 @@ static int video_init(void) /* Init drawing pats */ switch (VIDEO_DATA_FORMAT) { case GDF__8BIT_INDEX: - video_set_lut(0x01, CONSOLE_FG_COL, CONSOLE_FG_COL, - CONSOLE_FG_COL); - video_set_lut(0x00, CONSOLE_BG_COL, CONSOLE_BG_COL, - CONSOLE_BG_COL); + video_set_lut(0x01, CONFIG_SYS_CONSOLE_FG_COL, + CONFIG_SYS_CONSOLE_FG_COL, + CONFIG_SYS_CONSOLE_FG_COL); + video_set_lut(0x00, CONFIG_SYS_CONSOLE_BG_COL, + CONFIG_SYS_CONSOLE_BG_COL, + CONFIG_SYS_CONSOLE_BG_COL); fgx = 0x01010101; bgx = 0x00000000; break; case GDF__8BIT_332RGB: - color8 = ((CONSOLE_FG_COL & 0xe0) | - ((CONSOLE_FG_COL >> 3) & 0x1c) | - CONSOLE_FG_COL >> 6); + color8 = ((CONFIG_SYS_CONSOLE_FG_COL & 0xe0) | + ((CONFIG_SYS_CONSOLE_FG_COL >> 3) & 0x1c) | + CONFIG_SYS_CONSOLE_FG_COL >> 6); fgx = (color8 << 24) | (color8 << 16) | (color8 << 8) | color8; - color8 = ((CONSOLE_BG_COL & 0xe0) | - ((CONSOLE_BG_COL >> 3) & 0x1c) | - CONSOLE_BG_COL >> 6); + color8 = ((CONFIG_SYS_CONSOLE_BG_COL & 0xe0) | + ((CONFIG_SYS_CONSOLE_BG_COL >> 3) & 0x1c) | + CONFIG_SYS_CONSOLE_BG_COL >> 6); bgx = (color8 << 24) | (color8 << 16) | (color8 << 8) | color8; break; case GDF_15BIT_555RGB: - fgx = (((CONSOLE_FG_COL >> 3) << 26) | - ((CONSOLE_FG_COL >> 3) << 21) | - ((CONSOLE_FG_COL >> 3) << 16) | - ((CONSOLE_FG_COL >> 3) << 10) | - ((CONSOLE_FG_COL >> 3) << 5) | - (CONSOLE_FG_COL >> 3)); - bgx = (((CONSOLE_BG_COL >> 3) << 26) | - ((CONSOLE_BG_COL >> 3) << 21) | - ((CONSOLE_BG_COL >> 3) << 16) | - ((CONSOLE_BG_COL >> 3) << 10) | - ((CONSOLE_BG_COL >> 3) << 5) | - (CONSOLE_BG_COL >> 3)); + fgx = (((CONFIG_SYS_CONSOLE_FG_COL >> 3) << 26) | + ((CONFIG_SYS_CONSOLE_FG_COL >> 3) << 21) | + ((CONFIG_SYS_CONSOLE_FG_COL >> 3) << 16) | + ((CONFIG_SYS_CONSOLE_FG_COL >> 3) << 10) | + ((CONFIG_SYS_CONSOLE_FG_COL >> 3) << 5) | + (CONFIG_SYS_CONSOLE_FG_COL >> 3)); + bgx = (((CONFIG_SYS_CONSOLE_BG_COL >> 3) << 26) | + ((CONFIG_SYS_CONSOLE_BG_COL >> 3) << 21) | + ((CONFIG_SYS_CONSOLE_BG_COL >> 3) << 16) | + ((CONFIG_SYS_CONSOLE_BG_COL >> 3) << 10) | + ((CONFIG_SYS_CONSOLE_BG_COL >> 3) << 5) | + (CONFIG_SYS_CONSOLE_BG_COL >> 3)); break; case GDF_16BIT_565RGB: - fgx = (((CONSOLE_FG_COL >> 3) << 27) | - ((CONSOLE_FG_COL >> 2) << 21) | - ((CONSOLE_FG_COL >> 3) << 16) | - ((CONSOLE_FG_COL >> 3) << 11) | - ((CONSOLE_FG_COL >> 2) << 5) | - (CONSOLE_FG_COL >> 3)); - bgx = (((CONSOLE_BG_COL >> 3) << 27) | - ((CONSOLE_BG_COL >> 2) << 21) | - ((CONSOLE_BG_COL >> 3) << 16) | - ((CONSOLE_BG_COL >> 3) << 11) | - ((CONSOLE_BG_COL >> 2) << 5) | - (CONSOLE_BG_COL >> 3)); + fgx = (((CONFIG_SYS_CONSOLE_FG_COL >> 3) << 27) | + ((CONFIG_SYS_CONSOLE_FG_COL >> 2) << 21) | + ((CONFIG_SYS_CONSOLE_FG_COL >> 3) << 16) | + ((CONFIG_SYS_CONSOLE_FG_COL >> 3) << 11) | + ((CONFIG_SYS_CONSOLE_FG_COL >> 2) << 5) | + (CONFIG_SYS_CONSOLE_FG_COL >> 3)); + bgx = (((CONFIG_SYS_CONSOLE_BG_COL >> 3) << 27) | + ((CONFIG_SYS_CONSOLE_BG_COL >> 2) << 21) | + ((CONFIG_SYS_CONSOLE_BG_COL >> 3) << 16) | + ((CONFIG_SYS_CONSOLE_BG_COL >> 3) << 11) | + ((CONFIG_SYS_CONSOLE_BG_COL >> 2) << 5) | + (CONFIG_SYS_CONSOLE_BG_COL >> 3)); break; case GDF_32BIT_X888RGB: - fgx = (CONSOLE_FG_COL << 16) | - (CONSOLE_FG_COL << 8) | - CONSOLE_FG_COL; - bgx = (CONSOLE_BG_COL << 16) | - (CONSOLE_BG_COL << 8) | - CONSOLE_BG_COL; + fgx = (CONFIG_SYS_CONSOLE_FG_COL << 16) | + (CONFIG_SYS_CONSOLE_FG_COL << 8) | + CONFIG_SYS_CONSOLE_FG_COL; + bgx = (CONFIG_SYS_CONSOLE_BG_COL << 16) | + (CONFIG_SYS_CONSOLE_BG_COL << 8) | + CONFIG_SYS_CONSOLE_BG_COL; break; case GDF_24BIT_888RGB: - fgx = (CONSOLE_FG_COL << 24) | - (CONSOLE_FG_COL << 16) | - (CONSOLE_FG_COL << 8) | - CONSOLE_FG_COL; - bgx = (CONSOLE_BG_COL << 24) | - (CONSOLE_BG_COL << 16) | - (CONSOLE_BG_COL << 8) | - CONSOLE_BG_COL; + fgx = (CONFIG_SYS_CONSOLE_FG_COL << 24) | + (CONFIG_SYS_CONSOLE_FG_COL << 16) | + (CONFIG_SYS_CONSOLE_FG_COL << 8) | + CONFIG_SYS_CONSOLE_FG_COL; + bgx = (CONFIG_SYS_CONSOLE_BG_COL << 24) | + (CONFIG_SYS_CONSOLE_BG_COL << 16) | + (CONFIG_SYS_CONSOLE_BG_COL << 8) | + CONFIG_SYS_CONSOLE_BG_COL; break; } eorx = fgx ^ bgx; @@ -2247,16 +2182,17 @@ __weak int board_video_skip(void) int drv_video_init(void) { - int skip_dev_init; struct stdio_dev console_dev; bool have_keyboard; + bool __maybe_unused keyboard_ok = false; /* Check if video initialization should be skipped */ if (board_video_skip()) return 0; /* Init video chip - returns with framebuffer cleared */ - skip_dev_init = (video_init() == -1); + if (video_init() == -1) + return 0; if (board_cfb_skip()) return 0; @@ -2272,22 +2208,19 @@ int drv_video_init(void) if (have_keyboard) { debug("KBD: Keyboard init ...\n"); #if !defined(CONFIG_VGA_AS_SINGLE_DEVICE) - skip_dev_init |= (VIDEO_KBD_INIT_FCT == -1); + keyboard_ok = !(VIDEO_KBD_INIT_FCT == -1); #endif } - if (skip_dev_init) - return 0; /* Init vga device */ memset(&console_dev, 0, sizeof(console_dev)); strcpy(console_dev.name, "vga"); - console_dev.ext = DEV_EXT_VIDEO; /* Video extensions */ - console_dev.flags = DEV_FLAGS_OUTPUT | DEV_FLAGS_SYSTEM; + console_dev.flags = DEV_FLAGS_OUTPUT; console_dev.putc = video_putc; /* 'putc' function */ console_dev.puts = video_puts; /* 'puts' function */ #if !defined(CONFIG_VGA_AS_SINGLE_DEVICE) - if (have_keyboard) { + if (have_keyboard && keyboard_ok) { /* Also init console device */ console_dev.flags |= DEV_FLAGS_INPUT; console_dev.tstc = VIDEO_TSTC_FCT; /* 'tstc' function */