- Refactor keyboard support to match serial. Now reading a key and waiting for a...
authorevb <evb@svn.reactos.org>
Thu, 4 Feb 2010 08:02:30 +0000 (08:02 +0000)
committerevb <evb@svn.reactos.org>
Thu, 4 Feb 2010 08:02:30 +0000 (08:02 +0000)
- 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
reactos/boot/armllb/hw/versatile/hwkmi.c
reactos/boot/armllb/inc/hw.h

index 3c205b2..4527a4d 100644 (file)
@@ -21,8 +21,8 @@ LlbFwPutChar(INT Ch)
 BOOLEAN
 LlbFwKbHit(VOID)
 {
 BOOLEAN
 LlbFwKbHit(VOID)
 {
-    /* Not yet implemented */
-    return FALSE;
+    /* Check RX buffer */
+    return LlbHwKbdReady();
 }
 
 INT
 }
 
 INT
index 1963b0c..8e08023 100755 (executable)
@@ -115,19 +115,17 @@ LlbHwKbdSend(IN ULONG Value)
     WRITE_REGISTER_UCHAR(PL050_KMIDATA, Value);
 }
 
     WRITE_REGISTER_UCHAR(PL050_KMIDATA, Value);
 }
 
+BOOLEAN
+NTAPI
+LlbHwKbdReady(VOID)
+{
+    return READ_REGISTER_UCHAR(PL050_KMISTAT) & KMISTAT_RXFULL;
+}
+
 INT
 NTAPI
 LlbHwKbdRead(VOID)
 {
 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);
 }
     /* Read current data on keyboard */
     return READ_REGISTER_UCHAR(PL050_KMIDATA);
 }
index d82123f..53eb6da 100755 (executable)
@@ -92,6 +92,12 @@ LlbHwKbdSend(
     IN ULONG Value
 );
 
     IN ULONG Value
 );
 
+BOOLEAN
+NTAPI
+LlbHwKbdReady(
+    VOID
+);
+
 INT
 NTAPI
 LlbHwKbdRead(
 INT
 NTAPI
 LlbHwKbdRead(