aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBin Meng <bmeng.cn@gmail.com>2015-08-24 01:00:07 -0700
committerSimon Glass <sjg@chromium.org>2015-08-26 07:54:16 -0700
commit8ceb2429c97cc037bd2a6f27f4645d02a78e7aa5 (patch)
treeb0cd9885628cf67554ecb2aebf7379ebe6a88e7b
parent7d96166b1b1a261ddd4247befd62b35b2f482bae (diff)
downloadu-boot-8ceb2429c97cc037bd2a6f27f4645d02a78e7aa5.zip
u-boot-8ceb2429c97cc037bd2a6f27f4645d02a78e7aa5.tar.gz
u-boot-8ceb2429c97cc037bd2a6f27f4645d02a78e7aa5.tar.bz2
video: cfb_console: Allow VGA device to work without i8042 keyboard
So far if CONFIG_VGA_AS_SINGLE_DEVICE is not defined, the VGA device will try to initialize a keyboard device (for x86, it is i8042). But if i8042 controller initialization fails (eg: there is no keyboard connected to the PS/2 port), drv_video_init() just simply returns. This kills the opportunity of using a usb keyboard later with the vga console, as the vga initialization part is actually ok, only keyboard part fails. Change the code logic to allow this. Signed-off-by: Bin Meng <bmeng.cn@gmail.com> Reviewed-by: Simon Glass <sjg@chromium.org> Acked-by: Anatolij Gustschin <agust@denx.de>
-rw-r--r--drivers/video/cfb_console.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/drivers/video/cfb_console.c b/drivers/video/cfb_console.c
index 30e0317..aa7ca86 100644
--- a/drivers/video/cfb_console.c
+++ b/drivers/video/cfb_console.c
@@ -2247,16 +2247,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,11 +2273,9 @@ 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));
@@ -2287,7 +2286,7 @@ int drv_video_init(void)
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 */