}
}
-static CPUReadMemoryFunc *syborg_timer_readfn[] = {
+static CPUReadMemoryFunc * const syborg_timer_readfn[] = {
syborg_timer_read,
syborg_timer_read,
syborg_timer_read
};
-static CPUWriteMemoryFunc *syborg_timer_writefn[] = {
+static CPUWriteMemoryFunc * const syborg_timer_writefn[] = {
syborg_timer_write,
syborg_timer_write,
syborg_timer_write
return 0;
}
-static void syborg_timer_init(SysBusDevice *dev)
+static int syborg_timer_init(SysBusDevice *dev)
{
SyborgTimerState *s = FROM_SYSBUS(SyborgTimerState, dev);
QEMUBH *bh;
int iomemtype;
- s->freq = qdev_get_prop_int(&dev->qdev, "frequency", 0);
if (s->freq == 0) {
fprintf(stderr, "syborg_timer: Zero/unset frequency\n");
exit(1);
}
sysbus_init_irq(dev, &s->irq);
- iomemtype = cpu_register_io_memory(0, syborg_timer_readfn,
+ iomemtype = cpu_register_io_memory(syborg_timer_readfn,
syborg_timer_writefn, s);
sysbus_init_mmio(dev, 0x1000, iomemtype);
ptimer_set_freq(s->timer, s->freq);
register_savevm("syborg_timer", -1, 1,
syborg_timer_save, syborg_timer_load, s);
+ return 0;
}
static SysBusDeviceInfo syborg_timer_info = {
.init = syborg_timer_init,
- .qdev = {
- .props = (DevicePropList[]) {
- {.name = "frequency", .type = PROP_TYPE_INT},
- {.name = NULL}
- }
+ .qdev.name = "syborg,timer",
+ .qdev.size = sizeof(SyborgTimerState),
+ .qdev.props = (Property[]) {
+ DEFINE_PROP_UINT32("frequency",SyborgTimerState, freq, 0),
+ DEFINE_PROP_END_OF_LIST(),
}
};
static void syborg_timer_register_devices(void)
{
- sysbus_register_withprop("syborg,timer", sizeof(SyborgTimerState),
- &syborg_timer_info);
+ sysbus_register_withprop(&syborg_timer_info);
}
device_init(syborg_timer_register_devices)