mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 00:03:54 -06:00
char: replace PROP_CHR with CharBackend
Store the property in a CharBackend instead of CharDriverState*. This also replace systematically chr by chr.chr to access the CharDriverState*. The following patches will replace it with calls to qemu_chr_fe CharBackend functions. Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Message-Id: <20161022095318.17775-12-marcandre.lureau@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
ecb672d14f
commit
becdfa00cf
37 changed files with 302 additions and 265 deletions
|
@ -121,8 +121,8 @@ static uint64_t imx_serial_read(void *opaque, hwaddr offset,
|
|||
s->usr2 &= ~USR2_RDR;
|
||||
s->uts1 |= UTS1_RXEMPTY;
|
||||
imx_update(s);
|
||||
if (s->chr) {
|
||||
qemu_chr_accept_input(s->chr);
|
||||
if (s->chr.chr) {
|
||||
qemu_chr_accept_input(s->chr.chr);
|
||||
}
|
||||
}
|
||||
return c;
|
||||
|
@ -175,16 +175,17 @@ static void imx_serial_write(void *opaque, hwaddr offset,
|
|||
unsigned char ch;
|
||||
|
||||
DPRINTF("write(offset=0x%" HWADDR_PRIx ", value = 0x%x) to %s\n",
|
||||
offset, (unsigned int)value, s->chr ? s->chr->label : "NODEV");
|
||||
offset, (unsigned int)value,
|
||||
s->chr.chr ? s->chr.chr->label : "NODEV");
|
||||
|
||||
switch (offset >> 2) {
|
||||
case 0x10: /* UTXD */
|
||||
ch = value;
|
||||
if (s->ucr2 & UCR2_TXEN) {
|
||||
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->usr1 &= ~USR1_TRDY;
|
||||
imx_update(s);
|
||||
|
@ -214,8 +215,8 @@ static void imx_serial_write(void *opaque, hwaddr offset,
|
|||
}
|
||||
if (value & UCR2_RXEN) {
|
||||
if (!(s->ucr2 & UCR2_RXEN)) {
|
||||
if (s->chr) {
|
||||
qemu_chr_accept_input(s->chr);
|
||||
if (s->chr.chr) {
|
||||
qemu_chr_accept_input(s->chr.chr);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -318,8 +319,8 @@ static void imx_serial_realize(DeviceState *dev, Error **errp)
|
|||
{
|
||||
IMXSerialState *s = IMX_SERIAL(dev);
|
||||
|
||||
if (s->chr) {
|
||||
qemu_chr_add_handlers(s->chr, imx_can_receive, imx_receive,
|
||||
if (s->chr.chr) {
|
||||
qemu_chr_add_handlers(s->chr.chr, imx_can_receive, imx_receive,
|
||||
imx_event, s);
|
||||
} else {
|
||||
DPRINTF("No char dev for uart\n");
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue