aboutsummaryrefslogtreecommitdiff
path: root/hw/char/imx_serial.c
diff options
context:
space:
mode:
authorGuenter Roeck <linux@roeck-us.net>2015-08-20 08:52:35 -0700
committerMichael Tokarev <mjt@tls.msk.ru>2015-10-08 19:46:01 +0300
commitdc1442204a2235b1ad0c4bdceb3580c97f71f1b5 (patch)
tree94736c920956c58188d0674cfd5e4986d75acb1d /hw/char/imx_serial.c
parent7af0fc994e85c0ff16eda6d7e328427b02a01008 (diff)
downloadqemu-dc1442204a2235b1ad0c4bdceb3580c97f71f1b5.zip
qemu-dc1442204a2235b1ad0c4bdceb3580c97f71f1b5.tar.gz
qemu-dc1442204a2235b1ad0c4bdceb3580c97f71f1b5.tar.bz2
imx_serial: Generate interrupt on tx empty if enabled
Generate an interrupt if the tx buffer is empty and the tx empty interrupt is enabled. This fixes a problem seen when running a Linux image since Linux commit 55c3cb1358e ("serial: imx: remove unneeded imx_transmit_buffer() from imx_start_tx()"). Linux now waits for the tx empty interrupt before starting to send data, causing transmit stalls until there is an interrupt for another reason. Signed-off-by: Guenter Roeck <linux@roeck-us.net> Reviewed-by: Peter Crosthwaite <crosthwaite.peter@gmail.com> Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
Diffstat (limited to 'hw/char/imx_serial.c')
-rw-r--r--hw/char/imx_serial.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/hw/char/imx_serial.c b/hw/char/imx_serial.c
index e8f32c4..f0c4c72 100644
--- a/hw/char/imx_serial.c
+++ b/hw/char/imx_serial.c
@@ -66,7 +66,9 @@ static void imx_update(IMXSerialState *s)
uint32_t flags;
flags = (s->usr1 & s->ucr1) & (USR1_TRDY|USR1_RRDY);
- if (!(s->ucr1 & UCR1_TXMPTYEN)) {
+ if (s->ucr1 & UCR1_TXMPTYEN) {
+ flags |= (s->uts1 & UTS1_TXEMPTY);
+ } else {
flags &= ~USR1_TRDY;
}