diff mbox series

[PULL,02/23] hw/char: cadence_uart: Disable transmit when input clock is disabled

Message ID 20210913161144.12347-3-peter.maydell@linaro.org
State Accepted
Commit 62a3f63182a7cda98bdc168ed841507befca014f
Headers show
Series target-arm queue | expand

Commit Message

Peter Maydell Sept. 13, 2021, 4:11 p.m. UTC
From: Bin Meng <bmeng.cn@gmail.com>


At present when input clock is disabled, any character transmitted
to tx fifo can still show on the serial line, which is wrong.

Fixes: b636db306e06 ("hw/char/cadence_uart: add clock support")
Signed-off-by: Bin Meng <bmeng.cn@gmail.com>

Reviewed-by: Alistair Francis <alistair.francis@wdc.com>

Reviewed-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>

Message-id: 20210901124521.30599-3-bmeng.cn@gmail.com
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

---
 hw/char/cadence_uart.c | 5 +++++
 1 file changed, 5 insertions(+)

-- 
2.20.1
diff mbox series

Patch

diff --git a/hw/char/cadence_uart.c b/hw/char/cadence_uart.c
index b4b5e8a3ee0..154be34992b 100644
--- a/hw/char/cadence_uart.c
+++ b/hw/char/cadence_uart.c
@@ -327,6 +327,11 @@  static gboolean cadence_uart_xmit(void *do_not_use, GIOCondition cond,
 static void uart_write_tx_fifo(CadenceUARTState *s, const uint8_t *buf,
                                int size)
 {
+    /* ignore characters when unclocked or in reset */
+    if (!clock_is_enabled(s->refclk) || device_is_in_reset(DEVICE(s))) {
+        return;
+    }
+
     if ((s->r[R_CR] & UART_CR_TX_DIS) || !(s->r[R_CR] & UART_CR_TX_EN)) {
         return;
     }