diff options
author | Guenter Roeck <linux@roeck-us.net> | 2015-08-20 08:52:35 -0700 |
---|---|---|
committer | Michael Tokarev <mjt@tls.msk.ru> | 2015-10-08 19:46:01 +0300 |
commit | dc1442204a2235b1ad0c4bdceb3580c97f71f1b5 (patch) | |
tree | 94736c920956c58188d0674cfd5e4986d75acb1d | |
parent | 7af0fc994e85c0ff16eda6d7e328427b02a01008 (diff) | |
download | qemu-dc1442204a2235b1ad0c4bdceb3580c97f71f1b5.zip |
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>
-rw-r--r-- | hw/char/imx_serial.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/hw/char/imx_serial.c b/hw/char/imx_serial.c index e8f32c46c2..f0c4c722d6 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; } |