Libpayload: Add keyboard-disble function.
Add a function to disable and clear the keyboard controller.
BUG=chrome-os-partner:20758
TEST=Verified Code flow in normal boot/S3 resume with print statements.
Verified Keyboard was correctly disabled and flushed by booting
to recovery mode screen while pressing keys on the integrated
keyboard.
BRANCH=none
Change-Id: I3e1f011c3436fee5ce10993c6c26a3c8597c6fca
Signed-off-by: Martin Roth <martin.roth@se-eng.com>
Reviewed-on: https://gerrit.chromium.org/gerrit/63627
Reviewed-by: Shawn Nematbakhsh <shawnn@chromium.org>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Tested-by: Shawn Nematbakhsh <shawnn@chromium.org>
Commit-Queue: Shawn Nematbakhsh <shawnn@chromium.org>
This commit is contained in:
parent
cc78ac7000
commit
e5a986e539
2 changed files with 21 additions and 0 deletions
|
|
@ -33,6 +33,7 @@
|
|||
|
||||
#define I8042_CMD_READ_MODE 0x20
|
||||
#define I8042_CMD_WRITE_MODE 0x60
|
||||
#define I8042_CMD_DIS_KB 0xad
|
||||
|
||||
#define I8042_MODE_XLATE 0x40
|
||||
|
||||
|
|
@ -352,3 +353,22 @@ void keyboard_init(void)
|
|||
console_add_input_driver(&cons);
|
||||
}
|
||||
|
||||
void keyboard_disconnect(void)
|
||||
{
|
||||
/* If 0x64 returns 0xff, then we have no keyboard
|
||||
* controller */
|
||||
if (inb(0x64) == 0xFF)
|
||||
return;
|
||||
|
||||
/* Empty keyboard buffer */
|
||||
while (keyboard_havechar())
|
||||
keyboard_getchar();
|
||||
|
||||
/* Send keyboard disconnect command */
|
||||
outb(I8042_CMD_DIS_KB, 0x64);
|
||||
keyboard_wait_write();
|
||||
|
||||
/* Hand off with empty buffer */
|
||||
while (keyboard_havechar())
|
||||
keyboard_getchar();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -150,6 +150,7 @@ int add_reset_handler(void (*new_handler)(void));
|
|||
* @{
|
||||
*/
|
||||
void keyboard_init(void);
|
||||
void keyboard_disconnect(void);
|
||||
int keyboard_havechar(void);
|
||||
unsigned char keyboard_get_scancode(void);
|
||||
int keyboard_getchar(void);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue