hw/char/imx_serial: Update all state before restarting ageing timer
authorBernhard Beschow <shentey@gmail.com>
Sat, 11 Jan 2025 18:37:01 +0000 (19:37 +0100)
committerPeter Maydell <peter.maydell@linaro.org>
Mon, 27 Jan 2025 13:50:14 +0000 (13:50 +0000)
Fixes characters to be "echoed" after each keystroke rather than after every
other since imx_serial_rx_fifo_ageing_timer_restart() would see ~UTS1_RXEMPTY
only after every other keystroke.

Signed-off-by: Bernhard Beschow <shentey@gmail.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
hw/char/imx_serial.c

index cb6761d40e48916b18cf16b7599a28c1c693c18c..38b4865157ed752f90abc2162faf83f1627a60e9 100644 (file)
@@ -401,14 +401,14 @@ static void imx_put_data(void *opaque, uint32_t value)
     if (fifo32_num_used(&s->rx_fifo) >= rxtl) {
         s->usr1 |= USR1_RRDY;
     }
-
-    imx_serial_rx_fifo_ageing_timer_restart(s);
-
     s->usr2 |= USR2_RDR;
     s->uts1 &= ~UTS1_RXEMPTY;
     if (value & URXD_BRK) {
         s->usr2 |= USR2_BRCD;
     }
+
+    imx_serial_rx_fifo_ageing_timer_restart(s);
+
     imx_update(s);
 }