Hi
In a few boards (at least x60, x200, google peppy and likely more) ps2 keyboard does not work consistently in seabios unless a timeout value is set (3sec default for x60), which adds a file etc/ps2-keyboard-spinup containing the max timeout value. A way to fix this to add this delay in the Kconfig of all the concerned boards. Requiring an extra file in cbfs for a board to work with a payload is less than ideal, because this is inconsistent. A simple way to fix this is to change seabios to have a non-zero timeout for ps2-keyboard init, when compiled for coreboot.
diff --git a/src/hw/ps2port.c b/src/hw/ps2port.c index d5504f7..ede09f0 100644 --- a/src/hw/ps2port.c +++ b/src/hw/ps2port.c @@ -478,7 +478,8 @@ ps2_keyboard_setup(void *data)
/* ------------------- keyboard side ------------------------*/ /* reset keyboard and self test (keyboard side) */ - int spinupdelay = romfile_loadint("etc/ps2-keyboard-spinup", 0); + int spinupdelay = romfile_loadint("etc/ps2-keyboard-spinup", + !CONFIG_COREBOOT ? 0 : 3000); u32 end = timer_calc(spinupdelay);
This solution is not a good one since if a board does not have a keyboard, this will delay the startup of 3 seconds.
My idea was to add an entry to coreboot tables which tells whether or not a board has a ps2 controller. That way this information can be passed to seabios, which would then again be a more universally working binary(not relying on files in cbfs for correct behavior).
Kind regard --
Arthur