[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v5 03/16] hw/char/pl011: Move pl011_put_fifo() earlier
From: |
Philippe Mathieu-Daudé |
Subject: |
[PATCH v5 03/16] hw/char/pl011: Move pl011_put_fifo() earlier |
Date: |
Fri, 19 Jul 2024 20:10:28 +0200 |
Avoid forward-declaring pl011_put_fifo() by moving it earlier.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
hw/char/pl011.c | 46 ++++++++++++++++++++++------------------------
1 file changed, 22 insertions(+), 24 deletions(-)
diff --git a/hw/char/pl011.c b/hw/char/pl011.c
index 260f5fc0bc..edb5395fb8 100644
--- a/hw/char/pl011.c
+++ b/hw/char/pl011.c
@@ -159,6 +159,28 @@ static inline void pl011_reset_fifo(PL011State *s)
s->flags |= PL011_FLAG_RXFE | PL011_FLAG_TXFE;
}
+static void pl011_put_fifo(void *opaque, uint32_t value)
+{
+ PL011State *s = (PL011State *)opaque;
+ int slot;
+ unsigned pipe_depth;
+
+ pipe_depth = pl011_get_fifo_depth(s);
+ slot = (s->read_pos + s->read_count) & (pipe_depth - 1);
+ s->read_fifo[slot] = value;
+ s->read_count++;
+ s->flags &= ~PL011_FLAG_RXFE;
+ trace_pl011_put_fifo(value, s->read_count);
+ if (s->read_count == pipe_depth) {
+ trace_pl011_put_fifo_full();
+ s->flags |= PL011_FLAG_RXFF;
+ }
+ if (s->read_count == s->read_trigger) {
+ s->int_level |= INT_RX;
+ pl011_update(s);
+ }
+}
+
static uint64_t pl011_read(void *opaque, hwaddr offset,
unsigned size)
{
@@ -314,8 +336,6 @@ static void pl011_loopback_mdmctrl(PL011State *s)
pl011_update(s);
}
-static void pl011_put_fifo(void *opaque, uint32_t value);
-
static void pl011_loopback_tx(PL011State *s, uint32_t value)
{
if (!pl011_loopback_enabled(s)) {
@@ -440,28 +460,6 @@ static int pl011_can_receive(void *opaque)
return r;
}
-static void pl011_put_fifo(void *opaque, uint32_t value)
-{
- PL011State *s = (PL011State *)opaque;
- int slot;
- unsigned pipe_depth;
-
- pipe_depth = pl011_get_fifo_depth(s);
- slot = (s->read_pos + s->read_count) & (pipe_depth - 1);
- s->read_fifo[slot] = value;
- s->read_count++;
- s->flags &= ~PL011_FLAG_RXFE;
- trace_pl011_put_fifo(value, s->read_count);
- if (s->read_count == pipe_depth) {
- trace_pl011_put_fifo_full();
- s->flags |= PL011_FLAG_RXFF;
- }
- if (s->read_count == s->read_trigger) {
- s->int_level |= INT_RX;
- pl011_update(s);
- }
-}
-
static void pl011_receive(void *opaque, const uint8_t *buf, int size)
{
/*
--
2.41.0
- [PATCH v5 00/16] hw/char/pl011: Implement TX (async) FIFO to avoid blocking the main loop, Philippe Mathieu-Daudé, 2024/07/19
- [PATCH v5 01/16] tests/avocado: Add 'device:pl011' tag to tests exercising PL011 UART, Philippe Mathieu-Daudé, 2024/07/19
- [PATCH v5 02/16] hw/char/pl011: Remove unused 'readbuff' field, Philippe Mathieu-Daudé, 2024/07/19
- [PATCH v5 03/16] hw/char/pl011: Move pl011_put_fifo() earlier,
Philippe Mathieu-Daudé <=
- [PATCH v5 04/16] hw/char/pl011: Move pl011_loopback_enabled|tx() around, Philippe Mathieu-Daudé, 2024/07/19
- [PATCH v5 06/16] hw/char/pl011: Extract pl011_write_txdata() from pl011_write(), Philippe Mathieu-Daudé, 2024/07/19
- [PATCH v5 05/16] hw/char/pl011: Split RX/TX path of pl011_reset_fifo(), Philippe Mathieu-Daudé, 2024/07/19
- [PATCH v5 07/16] hw/char/pl011: Extract pl011_read_rxdata() from pl011_read(), Philippe Mathieu-Daudé, 2024/07/19
- [PATCH v5 08/16] hw/char/pl011: Warn when using disabled transmitter, Philippe Mathieu-Daudé, 2024/07/19
- [PATCH v5 09/16] tests/qtest: Update tests using PL011 UART, Philippe Mathieu-Daudé, 2024/07/19
- [PATCH v5 10/16] hw/char/pl011: Check if receiver is enabled, Philippe Mathieu-Daudé, 2024/07/19