diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2013-06-24 17:29:11 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2013-06-25 17:03:21 +0200 |
commit | e18db9f0cffcb143e5fdec27539efb417cb4ebf3 (patch) | |
tree | 804edba552541bea8d5ea5c38680903373bf6c27 /c/src/lib/libbsp/sparc/erc32 | |
parent | bsps/arm: Rename function (diff) | |
download | rtems-e18db9f0cffcb143e5fdec27539efb417cb4ebf3.tar.bz2 |
termios: Update due to API changes
Termios notifies now the driver about an inactive transmit with the
length argument set to zero.
Diffstat (limited to 'c/src/lib/libbsp/sparc/erc32')
-rw-r--r-- | c/src/lib/libbsp/sparc/erc32/console/erc32_console.c | 34 |
1 files changed, 17 insertions, 17 deletions
diff --git a/c/src/lib/libbsp/sparc/erc32/console/erc32_console.c b/c/src/lib/libbsp/sparc/erc32/console/erc32_console.c index 08606957d4..2acc72f156 100644 --- a/c/src/lib/libbsp/sparc/erc32/console/erc32_console.c +++ b/c/src/lib/libbsp/sparc/erc32/console/erc32_console.c @@ -149,28 +149,28 @@ static int erc32_console_first_open(int major, int minor, void *arg) #if (CONSOLE_USE_INTERRUPTS) static ssize_t erc32_console_write_support_int(int minor, const char *buf, size_t len) { - console_data *cd = &Console_Port_Data[minor]; - int k = 0; + if (len > 0) { + console_data *cd = &Console_Port_Data[minor]; + int k = 0; - if (minor == 0) { /* uart a */ - for (k = 0; - k < len && (ERC32_MEC.UART_Status & ERC32_MEC_UART_STATUS_THEA); k ++) { - ERC32_MEC.UART_Channel_A = (unsigned char)buf[k]; - } - ERC32_Force_interrupt(ERC32_INTERRUPT_UART_A_RX_TX); - } else { /* uart b */ - for (k = 0; - k < len && (ERC32_MEC.UART_Status & ERC32_MEC_UART_STATUS_THEB); k ++) { - ERC32_MEC.UART_Channel_B = (unsigned char)buf[k]; + if (minor == 0) { /* uart a */ + for (k = 0; + k < len && (ERC32_MEC.UART_Status & ERC32_MEC_UART_STATUS_THEA); k ++) { + ERC32_MEC.UART_Channel_A = (unsigned char)buf[k]; + } + ERC32_Force_interrupt(ERC32_INTERRUPT_UART_A_RX_TX); + } else { /* uart b */ + for (k = 0; + k < len && (ERC32_MEC.UART_Status & ERC32_MEC_UART_STATUS_THEB); k ++) { + ERC32_MEC.UART_Channel_B = (unsigned char)buf[k]; + } + ERC32_Force_interrupt(ERC32_INTERRUPT_UART_B_RX_TX); } - ERC32_Force_interrupt(ERC32_INTERRUPT_UART_B_RX_TX); - } - - if (len > 0) { + cd->pDeviceContext = (void *)k; cd->bActive = true; } - + return 0; } |