[SeaBIOS] Problems with coreboot, GRUB payload and SeaBIOS

Kevin O'Connor kevin at koconnor.net
Sun Feb 5 16:56:28 CET 2017


On Sun, Feb 05, 2017 at 01:02:55PM +0100, Paul Menzel wrote:
> Am Freitag, den 03.02.2017, 12:11 -0500 schrieb Kevin O'Connor:
> > On Thu, Feb 02, 2017 at 09:21:17PM +0100, Paul Menzel wrote:
> > > With that, I get a non-working keyboard in SeaBIOS, when loading
> > > SeaBIOS without timeout from GRUB. Then the problem can be reproduced
> > > each time despite having the file `etc/ps2-keyboard-spinup` with 3
> > > seconds in CBFS.
> > > 
> > > ```
> > > i8042 self test failed (got fa not 0x55)
> > > ```
> > > 
> > > Could it be that the keyboard is in an „unclean“ state from GRUB, which
> > > also still probed it?
> > 
> > Does the patch below help?
> 
> […]
> 
> Yes, it does.
> 
> Tested-by: Paul Menzel <paulepanter at users.sourceforge.net>

Matt, John - any chance you can see if the patch below also fixes
issues you were seeing with ps2 keyboards on some of the chromebooks?

-Kevin


--- a/src/hw/ps2port.c
+++ b/src/hw/ps2port.c
@@ -449,11 +449,22 @@ ps2_check_event(void)
 static void
 ps2_keyboard_setup(void *data)
 {
-    /* flush incoming keys */
+    // flush incoming keys (also verifies port is likely present)
     int ret = i8042_flush();
     if (ret)
         return;
 
+    // Disable keyboard / mouse and drain any input they may have sent
+    ret = i8042_command(I8042_CMD_KBD_DISABLE, NULL);
+    if (ret)
+        return;
+    ret = i8042_command(I8042_CMD_AUX_DISABLE, NULL);
+    if (ret)
+        return;
+    ret = i8042_flush();
+    if (ret)
+        return;
+
     // Controller self-test.
     u8 param[2];
     ret = i8042_command(I8042_CMD_CTL_TEST, param);



More information about the SeaBIOS mailing list