[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