[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH-for-8.2 v4 07/10] hw/char/pl011: Check if receiver is enabled
From: |
Philippe Mathieu-Daudé |
Subject: |
[PATCH-for-8.2 v4 07/10] hw/char/pl011: Check if receiver is enabled |
Date: |
Thu, 9 Nov 2023 20:28:11 +0100 |
Do not receive characters when UART or receiver are disabled.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
---
hw/char/pl011.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/hw/char/pl011.c b/hw/char/pl011.c
index 9c43cb47bf..ca931be139 100644
--- a/hw/char/pl011.c
+++ b/hw/char/pl011.c
@@ -77,6 +77,7 @@ DeviceState *pl011_create(hwaddr addr, qemu_irq irq, Chardev
*chr)
#define LCR_BRK (1 << 0)
/* Control Register, UARTCR */
+#define CR_RXE (1 << 9)
#define CR_TXE (1 << 8)
#define CR_UARTEN (1 << 0)
@@ -359,9 +360,11 @@ static void pl011_write(void *opaque, hwaddr offset,
static int pl011_can_receive(void *opaque)
{
PL011State *s = (PL011State *)opaque;
- int r;
+ int r = 0;
- r = s->read_count < pl011_get_fifo_depth(s);
+ if ((s->cr & CR_UARTEN) && (s->cr & CR_RXE)) {
+ r = s->read_count < pl011_get_fifo_depth(s);
+ }
trace_pl011_can_receive(s->lcr, s->read_count, r);
return r;
}
--
2.41.0
- [PATCH-for-8.2 v4 00/10] hw/char/pl011: Implement TX (async) FIFO to avoid blocking the main loop, Philippe Mathieu-Daudé, 2023/11/09
- [PATCH-for-8.2 v4 01/10] util/fifo8: Allow fifo8_pop_buf() to not populate popped length, Philippe Mathieu-Daudé, 2023/11/09
- [PATCH-for-8.2 v4 02/10] util/fifo8: Introduce fifo8_peek_buf(), Philippe Mathieu-Daudé, 2023/11/09
- [PATCH-for-8.2 v4 03/10] hw/char/pl011: Split RX/TX path of pl011_reset_fifo(), Philippe Mathieu-Daudé, 2023/11/09
- [PATCH-for-8.2 v4 04/10] hw/char/pl011: Extract pl011_write_txdata() from pl011_write(), Philippe Mathieu-Daudé, 2023/11/09
- [PATCH-for-8.2 v4 05/10] hw/char/pl011: Extract pl011_read_rxdata() from pl011_read(), Philippe Mathieu-Daudé, 2023/11/09
- [PATCH-for-8.2 v4 06/10] hw/char/pl011: Warn when using disabled transmitter, Philippe Mathieu-Daudé, 2023/11/09
- [PATCH-for-8.2 v4 07/10] hw/char/pl011: Check if receiver is enabled,
Philippe Mathieu-Daudé <=
- [PATCH-for-8.2 v4 08/10] hw/char/pl011: Rename RX FIFO methods, Philippe Mathieu-Daudé, 2023/11/09
- [PATCH-for-8.2 v4 09/10] hw/char/pl011: Add transmit FIFO to PL011State, Philippe Mathieu-Daudé, 2023/11/09
- [PATCH-for-8.2 v4 10/10] hw/char/pl011: Implement TX FIFO, Philippe Mathieu-Daudé, 2023/11/09
- Re: [PATCH-for-8.2 v4 00/10] hw/char/pl011: Implement TX (async) FIFO to avoid blocking the main loop, Peter Maydell, 2023/11/09