[rtems commit] or1ksim: Console: implement uart_read_polled

Joel Sherrill joel at rtems.org
Mon Sep 29 19:28:38 UTC 2014


Module:    rtems
Branch:    master
Commit:    fbe59f7c6756edc2952b13167893b85fe6e7aecb
Changeset: http://git.rtems.org/rtems/commit/?id=fbe59f7c6756edc2952b13167893b85fe6e7aecb

Author:    Hesham ALMatary <heshamelmatary at gmail.com>
Date:      Fri Sep 19 14:20:35 2014 -0500

or1ksim: Console: implement uart_read_polled

Implement uart_read_polled which is needed for any application that
reads input from users. It works fine with pppd, capture, and all
termios tests.

---

 c/src/lib/libbsp/or1k/or1ksim/console/uart.c |   13 +++++++++++--
 1 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/c/src/lib/libbsp/or1k/or1ksim/console/uart.c b/c/src/lib/libbsp/or1k/or1ksim/console/uart.c
index f1cfa09..7ceca81 100644
--- a/c/src/lib/libbsp/or1k/or1ksim/console/uart.c
+++ b/c/src/lib/libbsp/or1k/or1ksim/console/uart.c
@@ -86,9 +86,18 @@ static int uart_last_close(int major, int minor, void *arg)
   return 0;
 }
 
-static int uart_read_polled(int minor)
+static char uart_read_polled(int minor)
 {
-   return -1;
+  unsigned char lsr;
+  char c;
+
+ /* Get a character when avaiable */
+  do {
+       lsr = OR1KSIM_REG(OR1KSIM_BSP_UART_REG_LINE_STATUS);
+  } while ((lsr & OR1KSIM_BSP_UART_REG_LINE_STATUS_DR)
+           != OR1KSIM_BSP_UART_REG_LINE_STATUS_DR);
+
+  return OR1KSIM_REG(OR1KSIM_BSP_UART_REG_RX);
 }
 
 static void uart_write_polled(int minor, char c)



More information about the vc mailing list