hw/char/pl011: Extract pl011_write_txdata() from pl011_write()
When implementing FIFO, this code will become more complex. Start by factoring it out to a new pl011_write_txdata() function. No functional change intended. Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Message-Id: <20240719181041.49545-7-philmd@linaro.org>
This commit is contained in:
parent
02b1f7f619
commit
bd6051b7cf
@ -221,6 +221,20 @@ static void pl011_loopback_tx(PL011State *s, uint32_t value)
|
||||
pl011_put_fifo(s, value);
|
||||
}
|
||||
|
||||
static void pl011_write_txdata(PL011State *s, uint8_t data)
|
||||
{
|
||||
/* ??? Check if transmitter is enabled. */
|
||||
|
||||
/*
|
||||
* XXX this blocks entire thread. Rewrite to use
|
||||
* qemu_chr_fe_write and background I/O callbacks
|
||||
*/
|
||||
qemu_chr_fe_write_all(&s->chr, &data, 1);
|
||||
pl011_loopback_tx(s, data);
|
||||
s->int_level |= INT_TX;
|
||||
pl011_update(s);
|
||||
}
|
||||
|
||||
static uint64_t pl011_read(void *opaque, hwaddr offset,
|
||||
unsigned size)
|
||||
{
|
||||
@ -388,14 +402,8 @@ static void pl011_write(void *opaque, hwaddr offset,
|
||||
|
||||
switch (offset >> 2) {
|
||||
case 0: /* UARTDR */
|
||||
/* ??? Check if transmitter is enabled. */
|
||||
ch = value;
|
||||
/* XXX this blocks entire thread. Rewrite to use
|
||||
* qemu_chr_fe_write and background I/O callbacks */
|
||||
qemu_chr_fe_write_all(&s->chr, &ch, 1);
|
||||
pl011_loopback_tx(s, ch);
|
||||
s->int_level |= INT_TX;
|
||||
pl011_update(s);
|
||||
pl011_write_txdata(s, ch);
|
||||
break;
|
||||
case 1: /* UARTRSR/UARTECR */
|
||||
s->rsr = 0;
|
||||
|
Loading…
Reference in New Issue
Block a user