diff options
author | Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> | 2022-06-24 14:40:25 +0100 |
---|---|---|
committer | Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> | 2022-06-26 18:40:11 +0100 |
commit | ea247a0f3696a0ccdbc7ab818c1c15e5b53e4c31 (patch) | |
tree | b1d490c01fc0834f01eefc358911c786ccf123a9 | |
parent | a243ecf8c09efd25a09f28e41eca0fea4f3444a0 (diff) | |
download | qemu-ea247a0f3696a0ccdbc7ab818c1c15e5b53e4c31.zip qemu-ea247a0f3696a0ccdbc7ab818c1c15e5b53e4c31.tar.gz qemu-ea247a0f3696a0ccdbc7ab818c1c15e5b53e4c31.tar.bz2 |
ps2: implement ps2_kbd_realize() and use it to register ps2_keyboard_handler
Move the registration of ps2_keyboard_handler from ps2_kbd_init() to a new
ps2_kbd_realize() function. Since the abstract PS2_DEVICE parent class doesn't
have a realize() function then it is not necessary to store the reference to
it in PS2DeviceClass and use device_class_set_parent_realize().
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Acked-by: Helge Deller <deller@gmx.de>
Message-Id: <20220624134109.881989-11-mark.cave-ayland@ilande.co.uk>
-rw-r--r-- | hw/input/ps2.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/hw/input/ps2.c b/hw/input/ps2.c index 8018e39..62ea4c2 100644 --- a/hw/input/ps2.c +++ b/hw/input/ps2.c @@ -1213,6 +1213,11 @@ static QemuInputHandler ps2_keyboard_handler = { .event = ps2_keyboard_event, }; +static void ps2_kbd_realize(DeviceState *dev, Error **errp) +{ + qemu_input_handler_register(dev, &ps2_keyboard_handler); +} + void *ps2_kbd_init(void (*update_irq)(void *, int), void *update_arg) { DeviceState *dev; @@ -1228,8 +1233,7 @@ void *ps2_kbd_init(void (*update_irq)(void *, int), void *update_arg) ps2->update_irq = update_irq; ps2->update_arg = update_arg; vmstate_register(NULL, 0, &vmstate_ps2_keyboard, s); - qemu_input_handler_register((DeviceState *)s, - &ps2_keyboard_handler); + return s; } @@ -1265,6 +1269,7 @@ static void ps2_kbd_class_init(ObjectClass *klass, void *data) DeviceClass *dc = DEVICE_CLASS(klass); PS2DeviceClass *ps2dc = PS2_DEVICE_CLASS(klass); + dc->realize = ps2_kbd_realize; device_class_set_parent_reset(dc, ps2_kbd_reset, &ps2dc->parent_reset); } |