hw/char: QOM'ify escc.c (fix)

The previous commit e7c9136977
(hw/char: QOM'ify escc.c) cause qemu-system-ppc/ppc64
OpenBIOS to freeze on startup, this commit fix it.

Signed-off-by: xiaoqiang zhao <zxq_yx_007@163.com>
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Message-Id: <1464767898-30526-1-git-send-email-zxq_yx_007@163.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
xiaoqiang zhao 2016-06-01 15:58:18 +08:00 committed by Paolo Bonzini
parent 8156d48086
commit 4b3eec91b9

View File

@ -989,18 +989,13 @@ static void escc_init1(Object *obj)
SysBusDevice *dev = SYS_BUS_DEVICE(obj); SysBusDevice *dev = SYS_BUS_DEVICE(obj);
unsigned int i; unsigned int i;
s->chn[0].disabled = s->disabled;
s->chn[1].disabled = s->disabled;
for (i = 0; i < 2; i++) { for (i = 0; i < 2; i++) {
sysbus_init_irq(dev, &s->chn[i].irq); sysbus_init_irq(dev, &s->chn[i].irq);
s->chn[i].chn = 1 - i; s->chn[i].chn = 1 - i;
s->chn[i].clock = s->frequency / 2;
} }
s->chn[0].otherchn = &s->chn[1]; s->chn[0].otherchn = &s->chn[1];
s->chn[1].otherchn = &s->chn[0]; s->chn[1].otherchn = &s->chn[0];
memory_region_init_io(&s->mmio, obj, &escc_mem_ops, s, "escc",
ESCC_SIZE << s->it_shift);
sysbus_init_mmio(dev, &s->mmio); sysbus_init_mmio(dev, &s->mmio);
} }
@ -1009,8 +1004,15 @@ static void escc_realize(DeviceState *dev, Error **errp)
ESCCState *s = ESCC(dev); ESCCState *s = ESCC(dev);
unsigned int i; unsigned int i;
s->chn[0].disabled = s->disabled;
s->chn[1].disabled = s->disabled;
memory_region_init_io(&s->mmio, OBJECT(dev), &escc_mem_ops, s, "escc",
ESCC_SIZE << s->it_shift);
for (i = 0; i < 2; i++) { for (i = 0; i < 2; i++) {
if (s->chn[i].chr) { if (s->chn[i].chr) {
s->chn[i].clock = s->frequency / 2;
qemu_chr_add_handlers(s->chn[i].chr, serial_can_receive, qemu_chr_add_handlers(s->chn[i].chr, serial_can_receive,
serial_receive1, serial_event, &s->chn[i]); serial_receive1, serial_event, &s->chn[i]);
} }