Signed-off-by: liguang <lig.f...@cn.fujitsu.com> --- hw/parallel.c | 10 ++++++---- 1 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/hw/parallel.c b/hw/parallel.c index 3a4e06b..7dc53eb 100644 --- a/hw/parallel.c +++ b/hw/parallel.c @@ -427,9 +427,11 @@ static uint32_t parallel_ioport_ecp_read(void *opaque, uint32_t addr) return ret; } -static void parallel_reset(void *opaque) +static void parallel_reset(DeviceState *dev) { - ParallelState *s = opaque; + ISADevice *isadev = ISA_DEVICE(dev); + ISAParallelState *isaparal = DO_UPCAST(ISAParallelState, dev, isadev); + ParallelState *s = &isaparal->state; s->datar = ~0; s->dataw = ~0; @@ -495,7 +497,6 @@ static int parallel_isa_initfn(ISADevice *dev) base = isa->iobase; isa_init_irq(dev, &s->irq, isa->isairq); - qemu_register_reset(parallel_reset, s); if (qemu_chr_fe_ioctl(s->chr, CHR_IOCTL_PP_READ_STATUS, &dummy) == 0) { s->hw_driver = 1; @@ -575,7 +576,6 @@ bool parallel_mm_init(MemoryRegion *address_space, s->irq = irq; s->chr = chr; s->it_shift = it_shift; - qemu_register_reset(parallel_reset, s); memory_region_init_io(&s->iomem, ¶llel_mm_ops, s, "parallel", 8 << it_shift); @@ -597,6 +597,8 @@ static void parallel_isa_class_initfn(ObjectClass *klass, void *data) ISADeviceClass *ic = ISA_DEVICE_CLASS(klass); ic->init = parallel_isa_initfn; dc->props = parallel_isa_properties; + dc->reset = parallel_reset; + dc->on = parallel_reset; } static const TypeInfo parallel_isa_info = { -- 1.7.2.5