vmstate_register(NULL, s->base, &vmstate_lasips2, s);
- s->kbd.dev = ps2_kbd_init(NULL, NULL);
+ s->kbd.dev = ps2_kbd_init();
qdev_connect_gpio_out(DEVICE(s->kbd.dev), PS2_DEVICE_IRQ,
qdev_get_gpio_in_named(dev, "ps2-kbd-input-irq",
0));
- s->mouse.dev = ps2_mouse_init(NULL, NULL);
+ s->mouse.dev = ps2_mouse_init();
qdev_connect_gpio_out(DEVICE(s->mouse.dev), PS2_DEVICE_IRQ,
qdev_get_gpio_in_named(dev, "ps2-mouse-input-irq",
0));
/* Note we can't use dc->vmsd without breaking migration compatibility */
vmstate_register(NULL, 0, &vmstate_kbd, ks);
- ks->kbd = ps2_kbd_init(NULL, NULL);
+ ks->kbd = ps2_kbd_init();
qdev_connect_gpio_out(DEVICE(ks->kbd), PS2_DEVICE_IRQ,
qdev_get_gpio_in_named(dev, "ps2-kbd-input-irq",
0));
- ks->mouse = ps2_mouse_init(NULL, NULL);
+ ks->mouse = ps2_mouse_init();
qdev_connect_gpio_out(DEVICE(ks->mouse), PS2_DEVICE_IRQ,
qdev_get_gpio_in_named(dev, "ps2-mouse-input-irq",
0));
isa_register_ioport(isadev, isa_s->io + 0, 0x60);
isa_register_ioport(isadev, isa_s->io + 1, 0x64);
- s->kbd = ps2_kbd_init(NULL, NULL);
+ s->kbd = ps2_kbd_init();
qdev_connect_gpio_out(DEVICE(s->kbd), PS2_DEVICE_IRQ,
qdev_get_gpio_in_named(dev, "ps2-kbd-input-irq",
0));
- s->mouse = ps2_mouse_init(NULL, NULL);
+ s->mouse = ps2_mouse_init();
qdev_connect_gpio_out(DEVICE(s->mouse), PS2_DEVICE_IRQ,
qdev_get_gpio_in_named(dev, "ps2-mouse-input-irq",
0));
sysbus_init_mmio(sbd, &s->iomem);
sysbus_init_irq(sbd, &s->irq);
if (s->is_mouse) {
- s->dev = ps2_mouse_init(NULL, NULL);
+ s->dev = ps2_mouse_init();
} else {
- s->dev = ps2_kbd_init(NULL, NULL);
+ s->dev = ps2_kbd_init();
}
qdev_connect_gpio_out(DEVICE(s->dev), PS2_DEVICE_IRQ,
qdev_get_gpio_in_named(dev, "ps2-input-irq", 0));
static void ps2_raise_irq(PS2State *s)
{
- if (qemu_irq_is_connected(s->irq)) {
- qemu_set_irq(s->irq, 1);
- } else {
- s->update_irq(s->update_arg, 1);
- }
+ qemu_set_irq(s->irq, 1);
}
static void ps2_lower_irq(PS2State *s)
{
- if (qemu_irq_is_connected(s->irq)) {
- qemu_set_irq(s->irq, 0);
- } else {
- s->update_irq(s->update_arg, 0);
- }
+ qemu_set_irq(s->irq, 0);
}
void ps2_queue(PS2State *s, int b)
qemu_input_handler_register(dev, &ps2_keyboard_handler);
}
-void *ps2_kbd_init(void (*update_irq)(void *, int), void *update_arg)
+void *ps2_kbd_init(void)
{
DeviceState *dev;
PS2KbdState *s;
- PS2State *ps2;
dev = qdev_new(TYPE_PS2_KBD_DEVICE);
sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal);
s = PS2_KBD_DEVICE(dev);
- ps2 = PS2_DEVICE(s);
trace_ps2_kbd_init(s);
- ps2->update_irq = update_irq;
- ps2->update_arg = update_arg;
-
return s;
}
qemu_input_handler_register(dev, &ps2_mouse_handler);
}
-void *ps2_mouse_init(void (*update_irq)(void *, int), void *update_arg)
+void *ps2_mouse_init(void)
{
DeviceState *dev;
PS2MouseState *s;
- PS2State *ps2;
dev = qdev_new(TYPE_PS2_MOUSE_DEVICE);
sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal);
s = PS2_MOUSE_DEVICE(dev);
- ps2 = PS2_DEVICE(s);
trace_ps2_mouse_init(s);
- ps2->update_irq = update_irq;
- ps2->update_arg = update_arg;
return s;
}
PS2Queue queue;
int32_t write_cmd;
qemu_irq irq;
- void (*update_irq)(void *, int);
- void *update_arg;
};
#define TYPE_PS2_DEVICE "ps2-device"
OBJECT_DECLARE_SIMPLE_TYPE(PS2MouseState, PS2_MOUSE_DEVICE)
/* ps2.c */
-void *ps2_kbd_init(void (*update_irq)(void *, int), void *update_arg);
-void *ps2_mouse_init(void (*update_irq)(void *, int), void *update_arg);
+void *ps2_kbd_init(void);
+void *ps2_mouse_init(void);
void ps2_write_mouse(PS2MouseState *s, int val);
void ps2_write_keyboard(PS2KbdState *s, int val);
uint32_t ps2_read_data(PS2State *s);