Libpayload: Add keyboard-disable function.
Add a function to disable and clear the keyboard controller. 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. 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> Reviewed-on: http://review.coreboot.org/4395 Tested-by: build bot (Jenkins) Reviewed-by: Patrick Georgi <patrick@georgi-clan.de>
This commit is contained in:
parent
2f38b07570
commit
3ee59f7b31
|
@ -31,6 +31,8 @@
|
||||||
#include <libpayload-config.h>
|
#include <libpayload-config.h>
|
||||||
#include <libpayload.h>
|
#include <libpayload.h>
|
||||||
|
|
||||||
|
#define I8042_CMD_DIS_KB 0xad
|
||||||
|
|
||||||
struct layout_maps {
|
struct layout_maps {
|
||||||
const char *country;
|
const char *country;
|
||||||
const unsigned short map[4][0x57];
|
const unsigned short map[4][0x57];
|
||||||
|
@ -300,3 +302,22 @@ void keyboard_init(void)
|
||||||
console_add_input_driver(&cons);
|
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_init(void);
|
||||||
|
void keyboard_disconnect(void);
|
||||||
int keyboard_havechar(void);
|
int keyboard_havechar(void);
|
||||||
unsigned char keyboard_get_scancode(void);
|
unsigned char keyboard_get_scancode(void);
|
||||||
int keyboard_getchar(void);
|
int keyboard_getchar(void);
|
||||||
|
|
Loading…
Reference in New Issue