From ff14d245ddf407ffa0904dd84c9cd7aad36e1197 Mon Sep 17 00:00:00 2001 From: evb Date: Thu, 4 Feb 2010 08:02:30 +0000 Subject: [PATCH] - Refactor keyboard support to match serial. Now reading a key and waiting for a key are two things. - Implement KbHit Firmware routine. - It is now possible to interact with FreeLDR using the keyboard. svn path=/trunk/; revision=45416 --- reactos/boot/armllb/fw.c | 4 ++-- reactos/boot/armllb/hw/versatile/hwkmi.c | 16 +++++++--------- reactos/boot/armllb/inc/hw.h | 6 ++++++ 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/reactos/boot/armllb/fw.c b/reactos/boot/armllb/fw.c index 3c205b2d1cd..4527a4df707 100644 --- a/reactos/boot/armllb/fw.c +++ b/reactos/boot/armllb/fw.c @@ -21,8 +21,8 @@ LlbFwPutChar(INT Ch) BOOLEAN LlbFwKbHit(VOID) { - /* Not yet implemented */ - return FALSE; + /* Check RX buffer */ + return LlbHwKbdReady(); } INT diff --git a/reactos/boot/armllb/hw/versatile/hwkmi.c b/reactos/boot/armllb/hw/versatile/hwkmi.c index 1963b0cb979..8e08023f551 100755 --- a/reactos/boot/armllb/hw/versatile/hwkmi.c +++ b/reactos/boot/armllb/hw/versatile/hwkmi.c @@ -115,19 +115,17 @@ LlbHwKbdSend(IN ULONG Value) WRITE_REGISTER_UCHAR(PL050_KMIDATA, Value); } +BOOLEAN +NTAPI +LlbHwKbdReady(VOID) +{ + return READ_REGISTER_UCHAR(PL050_KMISTAT) & KMISTAT_RXFULL; +} + INT NTAPI LlbHwKbdRead(VOID) { - ULONG Status; - - /* Wait for ready signal */ - do - { - /* Read TX buffer state */ - Status = READ_REGISTER_UCHAR(PL050_KMISTAT); - } while (!(Status & KMISTAT_RXFULL)); - /* Read current data on keyboard */ return READ_REGISTER_UCHAR(PL050_KMIDATA); } diff --git a/reactos/boot/armllb/inc/hw.h b/reactos/boot/armllb/inc/hw.h index d82123f7fc5..53eb6da1709 100755 --- a/reactos/boot/armllb/inc/hw.h +++ b/reactos/boot/armllb/inc/hw.h @@ -92,6 +92,12 @@ LlbHwKbdSend( IN ULONG Value ); +BOOLEAN +NTAPI +LlbHwKbdReady( + VOID +); + INT NTAPI LlbHwKbdRead( -- 2.17.1