diff options
-rw-r--r-- | bsps/microblaze/include/dev/serial/uartlite.h | 1 | ||||
-rw-r--r-- | bsps/microblaze/include/dev/serial/uartlite_l.h | 18 | ||||
-rw-r--r-- | bsps/microblaze/shared/dev/serial/uartlite.c | 3 |
3 files changed, 21 insertions, 1 deletions
diff --git a/bsps/microblaze/include/dev/serial/uartlite.h b/bsps/microblaze/include/dev/serial/uartlite.h index 6e288d4dc7..2fda3796b3 100644 --- a/bsps/microblaze/include/dev/serial/uartlite.h +++ b/bsps/microblaze/include/dev/serial/uartlite.h @@ -36,6 +36,7 @@ #ifndef LIBBSP_MICROBLAZE_SHARED_UARTLITE_H #define LIBBSP_MICROBLAZE_SHARED_UARTLITE_H +#include <bspopts.h> #include <rtems/termiostypes.h> #include <dev/serial/uartlite_l.h> diff --git a/bsps/microblaze/include/dev/serial/uartlite_l.h b/bsps/microblaze/include/dev/serial/uartlite_l.h index 8c0598e191..834fbb5f75 100644 --- a/bsps/microblaze/include/dev/serial/uartlite_l.h +++ b/bsps/microblaze/include/dev/serial/uartlite_l.h @@ -234,6 +234,24 @@ static inline void Xil_Out32(UINTPTR Addr, u32 Value) ((XUartLite_GetStatusReg((BaseAddress)) & XUL_SR_RX_FIFO_VALID_DATA) != \ XUL_SR_RX_FIFO_VALID_DATA) +#ifdef __rtems__ +/****************************************************************************/ +/** +* +* Check to see if the transmitter is empty. +* +* @param BaseAddress is the base address of the device +* +* @return TRUE if the transmitter is empty, FALSE otherwise. +* +* @note C-style Signature: +* int XUartLite_IsTransmitEmpty(u32 BaseAddress); +* +*****************************************************************************/ +#define XUartLite_IsTransmitEmpty(BaseAddress) \ + ((XUartLite_GetStatusReg((BaseAddress)) & XUL_SR_TX_FIFO_EMPTY) == \ + XUL_SR_TX_FIFO_EMPTY) +#endif /* __rtems__ */ /****************************************************************************/ /** diff --git a/bsps/microblaze/shared/dev/serial/uartlite.c b/bsps/microblaze/shared/dev/serial/uartlite.c index 7387e22635..a5fc4fe82b 100644 --- a/bsps/microblaze/shared/dev/serial/uartlite.c +++ b/bsps/microblaze/shared/dev/serial/uartlite.c @@ -35,6 +35,7 @@ #include <bsp/irq.h> #include <dev/serial/uartlite.h> +#include <bspopts.h> #ifdef BSP_MICROBLAZE_FPGA_CONSOLE_INTERRUPTS static void microblaze_uart_interrupt( void *arg ) @@ -47,7 +48,7 @@ static void microblaze_uart_interrupt( void *arg ) rtems_termios_enqueue_raw_characters( tty, &c, 1 ); } - while ( ctx->transmitting && !XUartLite_IsTransmitEmpty( ctx ) ) { + while ( ctx->transmitting && !XUartLite_IsTransmitEmpty( ctx->address ) ) { rtems_termios_dequeue_characters( tty, 1 ); } } |