diff options
Diffstat (limited to 'hw/char/pl011.c')
-rw-r--r-- | hw/char/pl011.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/hw/char/pl011.c b/hw/char/pl011.c index 1a7911f81f..9645195f90 100644 --- a/hw/char/pl011.c +++ b/hw/char/pl011.c @@ -36,7 +36,7 @@ typedef struct PL011State { int read_pos; int read_count; int read_trigger; - CharDriverState *chr; + CharBackend chr; qemu_irq irq; const unsigned char *id; } PL011State; @@ -87,8 +87,8 @@ static uint64_t pl011_read(void *opaque, hwaddr offset, trace_pl011_read_fifo(s->read_count); s->rsr = c >> 8; pl011_update(s); - if (s->chr) { - qemu_chr_accept_input(s->chr); + if (s->chr.chr) { + qemu_chr_accept_input(s->chr.chr); } r = c; break; @@ -168,10 +168,11 @@ static void pl011_write(void *opaque, hwaddr offset, case 0: /* UARTDR */ /* ??? Check if transmitter is enabled. */ ch = value; - if (s->chr) + if (s->chr.chr) { /* 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); + qemu_chr_fe_write_all(s->chr.chr, &ch, 1); + } s->int_level |= PL011_INT_TX; pl011_update(s); break; @@ -331,8 +332,8 @@ static void pl011_realize(DeviceState *dev, Error **errp) { PL011State *s = PL011(dev); - if (s->chr) { - qemu_chr_add_handlers(s->chr, pl011_can_receive, pl011_receive, + if (s->chr.chr) { + qemu_chr_add_handlers(s->chr.chr, pl011_can_receive, pl011_receive, pl011_event, s); } } |