@@ -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 = {
Signed-off-by: liguang <lig.fnst@cn.fujitsu.com> --- hw/parallel.c | 10 ++++++---- 1 files changed, 6 insertions(+), 4 deletions(-)