aboutsummaryrefslogtreecommitdiff
path: root/hw/wdt_ib700.c
diff options
context:
space:
mode:
Diffstat (limited to 'hw/wdt_ib700.c')
-rw-r--r--hw/wdt_ib700.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/hw/wdt_ib700.c b/hw/wdt_ib700.c
index 7b54bde708..5fc3d83e0d 100644
--- a/hw/wdt_ib700.c
+++ b/hw/wdt_ib700.c
@@ -88,11 +88,10 @@ static int ib700_load(QEMUFile *f, void *vp, int version)
return 0;
}
-/* Create and initialize a virtual IB700 during PC creation. */
-static void ib700_pc_init(PCIBus *unused)
+static void wdt_ib700_init(ISADevice *dev)
{
+ timer = qemu_new_timer(vm_clock, ib700_timer_expired, NULL);
register_savevm("ib700_wdt", -1, 0, ib700_save, ib700_load, NULL);
-
register_ioport_write(0x441, 2, 1, ib700_write_disable_reg, NULL);
register_ioport_write(0x443, 2, 1, ib700_write_enable_reg, NULL);
}
@@ -100,11 +99,18 @@ static void ib700_pc_init(PCIBus *unused)
static WatchdogTimerModel model = {
.wdt_name = "ib700",
.wdt_description = "iBASE 700",
- .wdt_pc_init = ib700_pc_init,
};
-void wdt_ib700_init(void)
+static ISADeviceInfo wdt_ib700_info = {
+ .qdev.name = "ib700",
+ .qdev.size = sizeof(ISADevice),
+ .init = wdt_ib700_init,
+};
+
+static void wdt_ib700_register_devices(void)
{
watchdog_add_model(&model);
- timer = qemu_new_timer(vm_clock, ib700_timer_expired, NULL);
+ isa_qdev_register(&wdt_ib700_info);
}
+
+device_init(wdt_ib700_register_devices);