Revision 7f23f812

b/hw/qdev.c
222 222
    return qdev;
223 223
}
224 224

  
225
static void qdev_reset(void *opaque)
226
{
227
    DeviceState *dev = opaque;
228
    if (dev->info->reset)
229
        dev->info->reset(dev);
230
}
231

  
225 232
/* Initialize a device.  Device properties should be set before calling
226 233
   this function.  IRQs and MMIO regions should be connected/mapped after
227 234
   calling this function.  */
......
233 240
    rc = dev->info->init(dev, dev->info);
234 241
    if (rc < 0)
235 242
        return rc;
236
    if (dev->info->reset)
237
        qemu_register_reset(dev->info->reset, dev);
243
    qemu_register_reset(qdev_reset, dev);
238 244
    if (dev->info->vmsd)
239 245
        vmstate_register(-1, dev->info->vmsd, dev);
240 246
    dev->state = DEV_STATE_INITIALIZED;
......
273 279
        if (dev->info->vmsd)
274 280
            vmstate_unregister(dev->info->vmsd, dev);
275 281
#endif
276
        if (dev->info->reset)
277
            qemu_unregister_reset(dev->info->reset, dev);
278 282
        if (dev->info->exit)
279 283
            dev->info->exit(dev);
280 284
        if (dev->opts)
281 285
            qemu_opts_del(dev->opts);
282 286
    }
287
    qemu_unregister_reset(qdev_reset, dev);
283 288
    QLIST_REMOVE(dev, sibling);
284 289
    qemu_free(dev);
285 290
}
b/hw/qdev.h
115 115

  
116 116
typedef int (*qdev_initfn)(DeviceState *dev, DeviceInfo *info);
117 117
typedef int (*qdev_event)(DeviceState *dev);
118
typedef void (*qdev_resetfn)(DeviceState *dev);
118 119

  
119 120
struct DeviceInfo {
120 121
    const char *name;
......
125 126
    int no_user;
126 127

  
127 128
    /* callbacks */
128
    QEMUResetHandler *reset;
129
    qdev_resetfn reset;
129 130

  
130 131
    /* device state */
131 132
    const VMStateDescription *vmsd;
b/hw/rtl8139.c
1173 1173
    s->RxBufAddr = 0;
1174 1174
}
1175 1175

  
1176
static void rtl8139_reset(void *opaque)
1176
static void rtl8139_reset(DeviceState *d)
1177 1177
{
1178
    RTL8139State *s = opaque;
1178
    RTL8139State *s = container_of(d, RTL8139State, dev.qdev);
1179 1179
    int i;
1180 1180

  
1181 1181
    /* restore MAC address */
......
1371 1371
    if (val & CmdReset)
1372 1372
    {
1373 1373
        DEBUG_PRINT(("RTL8139: ChipCmd reset\n"));
1374
        rtl8139_reset(s);
1374
        rtl8139_reset(&s->dev.qdev);
1375 1375
    }
1376 1376
    if (val & CmdRxEnb)
1377 1377
    {
......
1544 1544
    } else if (opmode == 0x40) {
1545 1545
        /* Reset.  */
1546 1546
        val = 0;
1547
        rtl8139_reset(s);
1547
        rtl8139_reset(&s->dev.qdev);
1548 1548
    }
1549 1549

  
1550 1550
    s->Cfg9346 = val;
......
3464 3464
                           PCI_ADDRESS_SPACE_MEM, rtl8139_mmio_map);
3465 3465

  
3466 3466
    qdev_get_macaddr(&dev->qdev, s->macaddr);
3467
    rtl8139_reset(s);
3467
    rtl8139_reset(&s->dev.qdev);
3468 3468
    s->vc = qdev_get_vlan_client(&dev->qdev,
3469 3469
                                 rtl8139_can_receive, rtl8139_receive, NULL,
3470 3470
                                 rtl8139_cleanup, s);
b/hw/tcx.c
411 411
    }
412 412
};
413 413

  
414
static void tcx_reset(void *opaque)
414
static void tcx_reset(DeviceState *d)
415 415
{
416
    TCXState *s = opaque;
416
    TCXState *s = container_of(d, TCXState, busdev.qdev);
417 417

  
418 418
    /* Initialize palette */
419 419
    memset(s->r, 0, 256);
......
560 560
                                     tcx_screen_dump, NULL, s);
561 561
    }
562 562

  
563
    tcx_reset(s);
563
    tcx_reset(&s->busdev.qdev);
564 564
    qemu_console_resize(s->ds, s->width, s->height);
565 565
    return 0;
566 566
}

Also available in: Unified diff