typedef struct {
SysBusDevice busdev;
int int_enabled;
- int fifo_size;
+ uint32_t fifo_size;
event_data *event_fifo;
int read_pos, read_count;
qemu_irq irq;
- int absolute;
+ uint32_t absolute;
} SyborgPointerState;
static void syborg_pointer_update(SyborgPointerState *s)
syborg_pointer_update(s);
}
-static CPUReadMemoryFunc *syborg_pointer_readfn[] = {
+static CPUReadMemoryFunc * const syborg_pointer_readfn[] = {
syborg_pointer_read,
syborg_pointer_read,
syborg_pointer_read
};
-static CPUWriteMemoryFunc *syborg_pointer_writefn[] = {
+static CPUWriteMemoryFunc * const syborg_pointer_writefn[] = {
syborg_pointer_write,
syborg_pointer_write,
syborg_pointer_write
return 0;
}
-static void syborg_pointer_init(SysBusDevice *dev)
+static int syborg_pointer_init(SysBusDevice *dev)
{
SyborgPointerState *s = FROM_SYSBUS(SyborgPointerState, dev);
int iomemtype;
sysbus_init_irq(dev, &s->irq);
- iomemtype = cpu_register_io_memory(0, syborg_pointer_readfn,
- syborg_pointer_writefn, s);
+ iomemtype = cpu_register_io_memory(syborg_pointer_readfn,
+ syborg_pointer_writefn, s,
+ DEVICE_NATIVE_ENDIAN);
sysbus_init_mmio(dev, 0x1000, iomemtype);
- s->absolute = qdev_get_prop_int(&dev->qdev, "absolute", 1);
- s->fifo_size = qdev_get_prop_int(&dev->qdev, "fifo-size", 16);
if (s->fifo_size <= 0) {
fprintf(stderr, "syborg_pointer: fifo too small\n");
s->fifo_size = 16;
qemu_add_mouse_event_handler(syborg_pointer_event, s, s->absolute,
"Syborg Pointer");
- register_savevm("syborg_pointer", -1, 1,
+ register_savevm(&dev->qdev, "syborg_pointer", -1, 1,
syborg_pointer_save, syborg_pointer_load, s);
+ return 0;
}
+static SysBusDeviceInfo syborg_pointer_info = {
+ .init = syborg_pointer_init,
+ .qdev.name = "syborg,pointer",
+ .qdev.size = sizeof(SyborgPointerState),
+ .qdev.props = (Property[]) {
+ DEFINE_PROP_UINT32("fifo-size", SyborgPointerState, fifo_size, 16),
+ DEFINE_PROP_UINT32("absolute", SyborgPointerState, absolute, 1),
+ DEFINE_PROP_END_OF_LIST(),
+ }
+};
+
static void syborg_pointer_register_devices(void)
{
- sysbus_register_dev("syborg,pointer", sizeof(SyborgPointerState),
- syborg_pointer_init);
+ sysbus_register_withprop(&syborg_pointer_info);
}
device_init(syborg_pointer_register_devices)