summaryrefslogtreecommitdiffstats
path: root/drivers/serial
diff options
context:
space:
mode:
authorFabian Godehardt <fg@emlix.com>2009-06-11 15:37:19 +0200
committerLinus Torvalds <torvalds@linux-foundation.org>2009-06-11 17:51:08 +0200
commit977757311e50dc5d832c9fef34e7555411f7ccd8 (patch)
tree595e42d3a11c5067b70daba2b72e279b63009224 /drivers/serial
parentimx: serial: fix one bit field type (diff)
downloadlinux-977757311e50dc5d832c9fef34e7555411f7ccd8.tar.xz
linux-977757311e50dc5d832c9fef34e7555411f7ccd8.zip
imx: serial: notify higher layers in case xmit IRQ was not called
upper layers, namely line discipline, need to be notified when transmission of more data is possible. For spurious cases, where IRQ handling does not supply notification for sure, it is given additionally here, when data has just been transmitted and space in the buffer will most probably be available. Signed-off-by: Fabian Godehardt <fg@emlix.com> Signed-off-by: Oskar Schirmer <os@emlix.com> Signed-off-by: Alan Cox <alan@linux.intel.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/serial')
-rw-r--r--drivers/serial/imx.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/serial/imx.c b/drivers/serial/imx.c
index 6b8f12f4a705..49f2e12ba58d 100644
--- a/drivers/serial/imx.c
+++ b/drivers/serial/imx.c
@@ -308,6 +308,9 @@ static inline void imx_transmit_buffer(struct imx_port *sport)
break;
}
+ if (uart_circ_chars_pending(xmit) < WAKEUP_CHARS)
+ uart_write_wakeup(&sport->port);
+
if (uart_circ_empty(xmit))
imx_stop_tx(&sport->port);
}