[coreboot] ps2 keyboard init in seabios

Arthur Heymans arthur at aheymans.xyz
Sun Aug 14 22:55:40 CEST 2016


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



More information about the coreboot mailing list