diff options
author | Nico Huber <nico.h@gmx.de> | 2020-11-08 23:22:32 +0100 |
---|---|---|
committer | Hung-Te Lin <hungte@chromium.org> | 2020-12-24 08:29:18 +0000 |
commit | 4f7b687fb71430df23a73c8d145f850dd5a0235c (patch) | |
tree | 1e87f2985cc33d1ee80e555259df6fcdd63a1405 /payloads/libpayload | |
parent | 6e021d31f9227e8e57289cb68494d903f5161d83 (diff) |
libpayload/i8042: Add API to peek on keyboard input queue
Change-Id: I60699e044b5bacd3f5292fed7edbf529ae133284
Signed-off-by: Nico Huber <nico.h@gmx.de>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/47592
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Diffstat (limited to 'payloads/libpayload')
-rw-r--r-- | payloads/libpayload/drivers/i8042/i8042.c | 21 | ||||
-rw-r--r-- | payloads/libpayload/include/libpayload.h | 1 |
2 files changed, 22 insertions, 0 deletions
diff --git a/payloads/libpayload/drivers/i8042/i8042.c b/payloads/libpayload/drivers/i8042/i8042.c index 476139e2ea..a89b9d9717 100644 --- a/payloads/libpayload/drivers/i8042/i8042.c +++ b/payloads/libpayload/drivers/i8042/i8042.c @@ -112,6 +112,19 @@ static u8 fifo_pop(struct fifo *fifo) return ret; } +/** Peek on the head of fifo queue. + * Returns the oldest object on the queue if any. + * In case the queue is empty 0 is returned. + * @fifo: Fifo to use + */ +static u8 fifo_peek(struct fifo *fifo) +{ + if (fifo_is_empty(fifo)) + return 0; + + return fifo->buf[fifo->rx]; +} + /** Destroys a fifo queue. * @fifo: Fifo to use */ @@ -391,6 +404,14 @@ u8 i8042_read_data_ps2(void) } /** + * Returns available keyboard data without advancing the queue. + */ +u8 i8042_peek_data_ps2(void) +{ + return fifo_peek(ps2_fifo); +} + +/** * Returns available mouse data, if any. */ u8 i8042_read_data_aux(void) diff --git a/payloads/libpayload/include/libpayload.h b/payloads/libpayload/include/libpayload.h index 371471ffae..a33d8bb382 100644 --- a/payloads/libpayload/include/libpayload.h +++ b/payloads/libpayload/include/libpayload.h @@ -233,6 +233,7 @@ u8 i8042_data_ready_ps2(void); u8 i8042_data_ready_aux(void); u8 i8042_read_data_ps2(void); +u8 i8042_peek_data_ps2(void); u8 i8042_read_data_aux(void); int i8042_wait_read_ps2(void); |