summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/arm/tms570/console/tms570-sci.c
diff options
context:
space:
mode:
authorPremysl Houdek <kom541000@gmail.com>2015-11-18 18:45:32 +0100
committerGedare Bloom <gedare@rtems.org>2015-11-18 13:12:44 -0500
commit3e1196d9e1e65f3a77bc4537934438f105b35d98 (patch)
tree80d1f3a2920c61b629e29323065169e08106d1eb /c/src/lib/libbsp/arm/tms570/console/tms570-sci.c
parentbsp/tms570: use common tms570ls3137.inc file for all board ling variants. (diff)
downloadrtems-3e1196d9e1e65f3a77bc4537934438f105b35d98.tar.bz2
bsp/tms570: unite code duplication in pinmux and clean SCI close per review remarks.
Signed-off-by: Premysl Houdek <kom541000@gmail.com>
Diffstat (limited to 'c/src/lib/libbsp/arm/tms570/console/tms570-sci.c')
-rw-r--r--c/src/lib/libbsp/arm/tms570/console/tms570-sci.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/c/src/lib/libbsp/arm/tms570/console/tms570-sci.c b/c/src/lib/libbsp/arm/tms570/console/tms570-sci.c
index a799a666a0..fac258d3b2 100644
--- a/c/src/lib/libbsp/arm/tms570/console/tms570-sci.c
+++ b/c/src/lib/libbsp/arm/tms570/console/tms570-sci.c
@@ -525,17 +525,19 @@ static void tms570_sci_interrupt_last_close(
{
tms570_sci_context *ctx = (tms570_sci_context *) base;
rtems_interrupt_lock_context lock_context;
+ rtems_interval tw;
+ int32_t baudrate;
/* Turn off RX interrupts */
rtems_termios_device_lock_acquire(base, &lock_context);
tms570_sci_disable_interrupts(ctx);
rtems_termios_device_lock_release(base, &lock_context);
- if ( 0 /* for flush on close */ ) {
- /* Flush device */
- while ( ( ctx->regs->FLR & TMS570_SCI_FLR_TX_EMPTY ) == 0 ) {
- ;/* Wait until all data has been sent */
- }
+ tw = rtems_clock_get_ticks_per_second();
+ baudrate = rtems_termios_baud_to_number(cfgetospeed(&tty->termios));
+ tw = tw * 10 / baudrate + 1;
+ while ( ( ctx->regs->FLR & TMS570_SCI_FLR_TX_EMPTY ) == 0 ) {
+ rtems_task_wake_after(tw);
}
/* uninstall ISR */