arm,dev: PL011 UART_FR read status enhancement
authorBjoern A. Zeeb <baz21@cam.ac.uk>
Thu, 19 May 2016 20:19:35 +0000 (15:19 -0500)
committerBjoern A. Zeeb <baz21@cam.ac.uk>
Thu, 19 May 2016 20:19:35 +0000 (15:19 -0500)
Given we do not simulate a FIFO currently there are only two states
we can be in upon read: empty or full.  Properly signal the latter.

Add and sort constants for states in the header file.

Committed by Jason Lowe-Power <power.jg@gmail.com>

src/dev/arm/pl011.cc
src/dev/arm/pl011.hh

index f0c3d2d9871628ed595ebbe9a94dadbbf896586e..e00ee835111eaf0fe377e9cfa691dd3f0538e2be 100644 (file)
@@ -91,7 +91,8 @@ Pl011::read(PacketPtr pkt)
       case UART_FR:
         data =
             UART_FR_CTS | // Clear To Send
-            (!term->dataAvailable() ? UART_FR_RXFE : 0) | // RX FIFO Empty
+            // Given we do not simulate a FIFO we are either empty or full.
+            (!term->dataAvailable() ? UART_FR_RXFE : UART_FR_RXFF) |
             UART_FR_TXFE; // TX FIFO empty
 
         DPRINTF(Uart,
index e19c74fa241dd7d9c147412e9e0746588fb73da0..81745eded7e7bcdf1c9e9cb3645e9c401098ada5 100644 (file)
@@ -120,8 +120,10 @@ class Pl011 : public Uart, public AmbaDevice
     static const int UART_DR = 0x000;
     static const int UART_FR = 0x018;
     static const int UART_FR_CTS  = 0x001;
-    static const int UART_FR_TXFE = 0x080;
     static const int UART_FR_RXFE = 0x010;
+    static const int UART_FR_TXFF = 0x020;
+    static const int UART_FR_RXFF = 0x040;
+    static const int UART_FR_TXFE = 0x080;
     static const int UART_IBRD = 0x024;
     static const int UART_FBRD = 0x028;
     static const int UART_LCRH = 0x02C;