X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=payloads%2Flibpayload%2Fdrivers%2Fkeyboard.c;h=95827463ca2b3827fd0ac47c265413857a4175b7;hb=ec6363dc48540db67a5966dc9987b192c26fcae1;hp=0bf7c56161b9430b63a6e41f77f5491f78c12594;hpb=6744231197b38bfc27c43b9cc95d25b6f8595d95;p=coreboot.git diff --git a/payloads/libpayload/drivers/keyboard.c b/payloads/libpayload/drivers/keyboard.c index 0bf7c5616..95827463c 100644 --- a/payloads/libpayload/drivers/keyboard.c +++ b/payloads/libpayload/drivers/keyboard.c @@ -175,11 +175,10 @@ static void keyboard_cmd(unsigned char cmd, unsigned char val) while (inb(0x64) & 2); } - int keyboard_havechar(void) { unsigned char c = inb(0x64); - return c & 1; + return (c == 0xFF) ? 0 : c & 1; } unsigned char keyboard_get_scancode(void) @@ -332,6 +331,12 @@ void keyboard_init(void) u8 mode; map = &keyboard_layouts[0]; + /* If 0x64 returns 0xff, then we have no keyboard + * controller */ + + if (inb(0x64) == 0xFF) + return; + /* Empty keyboard buffer */ while (keyboard_havechar()) keyboard_getchar();