[SeaBIOS] [PATCH] ps2port: Enable keyboard write for i8042 before reset

Kevin O'Connor kevin at koconnor.net
Thu Mar 22 23:13:30 CET 2018


On Sat, Mar 17, 2018 at 09:49:11PM -0400, Jean Lucas wrote:
> This enables the keyboard on some Chromebooks after a hard reset.
> 
> Tested on an Acer C720 and a Dell Inspiron 660s.
> 
> Signed-off-by: Jean Lucas <jean at 4ray.co>
> ---
>  src/hw/ps2port.c | 10 +++++-----
>  1 file changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/src/hw/ps2port.c b/src/hw/ps2port.c
> index 88b1059..ac409de 100644
> --- a/src/hw/ps2port.c
> +++ b/src/hw/ps2port.c
> @@ -475,6 +475,11 @@ ps2_keyboard_setup(void *data)
>          return;
>      }
> +    // Keyboard write command
> +    ret = i8042_command(I8042_CMD_CTL_WCTR, NULL);
> +    if (ret)
> +        return;

Thanks, but this doesn't look right - the I8042_CMD_CTL_WCTR command
should always takes a parameter.  By passing NULL as the parameter,
the code will read the first byte from address 0 (which is I suspect
going to be 0x53).  It's also unclear to me why this would help as the
first ps2_kbd_command() call will explicitly set the ps2 port CTR
bits.

>      // Controller keyboard test.
>      ret = i8042_command(I8042_CMD_KBD_TEST, param);
>      if (ret)
> @@ -505,11 +510,6 @@ ps2_keyboard_setup(void *data)
>          return;
>      }
> -    /* Disable keyboard */
> -    ret = ps2_kbd_command(ATKBD_CMD_RESET_DIS, NULL);
> -    if (ret)
> -        return;

Removing this code would cause it to not reset the keyboard.  I don't
think that's right.

If you're having a keyboard failure on reboot, could you flash an
unmodified version of SeaBIOS (with debug level set to 7) and provide
the log (via cbmem)?

-Kevin



More information about the SeaBIOS mailing list