From 2cedc4608e75662e341c697d6cf64e5da6945b46 Mon Sep 17 00:00:00 2001 From: Till Straumann Date: Fri, 21 Mar 2008 18:48:49 +0000 Subject: [PATCH] 2008-03-21 Till Straumann * shared/console/uart.c: In IRQ driven mode also keep reading chars while they are available (fifo could be enabled). --- c/src/lib/libbsp/powerpc/ChangeLog | 6 ++++++ c/src/lib/libbsp/powerpc/shared/console/uart.c | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/c/src/lib/libbsp/powerpc/ChangeLog b/c/src/lib/libbsp/powerpc/ChangeLog index 1a9ddae87c..6d84ae32d0 100644 --- a/c/src/lib/libbsp/powerpc/ChangeLog +++ b/c/src/lib/libbsp/powerpc/ChangeLog @@ -1,3 +1,9 @@ +2008-03-21 Till Straumann + + * shared/console/uart.c: In IRQ driven mode also + keep reading chars while they are available (fifo + could be enabled). + 2008-03-19 Till Straumann * shared/console/console.c, shared/console/uart.c, diff --git a/c/src/lib/libbsp/powerpc/shared/console/uart.c b/c/src/lib/libbsp/powerpc/shared/console/uart.c index 9823e446e9..ea47aa8313 100644 --- a/c/src/lib/libbsp/powerpc/shared/console/uart.c +++ b/c/src/lib/libbsp/powerpc/shared/console/uart.c @@ -725,7 +725,6 @@ BSP_uart_termios_isr_com(int uart) break; case RECEIVER_DATA_AVAIL : case CHARACTER_TIMEOUT_INDICATION: - if ( uart_data[uart].ioMode == TERMIOS_TASK_DRIVEN ) { /* ensure interrupts are enabled */ @@ -741,7 +740,8 @@ BSP_uart_termios_isr_com(int uart) { /* RX data ready */ assert(off < sizeof(buf)); - buf[off++] = uread(uart, RBR); + while ( off < sizeof(buf) && ( DR & uread(uart, LSR) ) ) + buf[off++] = uread(uart, RBR); } break; case RECEIVER_ERROR: