mirror of https://github.com/xemu-project/xemu.git
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);
|
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,
|
static uint64_t pl011_read(void *opaque, hwaddr offset,
|
||||||
unsigned size)
|
unsigned size)
|
||||||
{
|
{
|
||||||
|
@ -388,14 +402,8 @@ static void pl011_write(void *opaque, hwaddr offset,
|
||||||
|
|
||||||
switch (offset >> 2) {
|
switch (offset >> 2) {
|
||||||
case 0: /* UARTDR */
|
case 0: /* UARTDR */
|
||||||
/* ??? Check if transmitter is enabled. */
|
|
||||||
ch = value;
|
ch = value;
|
||||||
/* XXX this blocks entire thread. Rewrite to use
|
pl011_write_txdata(s, ch);
|
||||||
* 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);
|
|
||||||
break;
|
break;
|
||||||
case 1: /* UARTRSR/UARTECR */
|
case 1: /* UARTRSR/UARTECR */
|
||||||
s->rsr = 0;
|
s->rsr = 0;
|
||||||
|
|
Loading…
Reference in New Issue