aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Cave-Ayland <mark.cave-ayland@ilande.co.uk>2022-06-24 14:40:17 +0100
committerMark Cave-Ayland <mark.cave-ayland@ilande.co.uk>2022-06-26 18:40:11 +0100
commit64bbdd138a1e40b71d54c71d25653361329d69fe (patch)
tree15a0bd3a21b00d67451bdb5614d69fd517da3488
parent545e5cf817c0e635479f202cbb2e0973aa6431d0 (diff)
downloadqemu-64bbdd138a1e40b71d54c71d25653361329d69fe.zip
qemu-64bbdd138a1e40b71d54c71d25653361329d69fe.tar.gz
qemu-64bbdd138a1e40b71d54c71d25653361329d69fe.tar.bz2
ps2: QOMify PS2State
Make PS2State a new abstract PS2_DEVICE QOM type to represent the common functionality shared between PS2 keyboard and mouse devices. 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-3-mark.cave-ayland@ilande.co.uk>
-rw-r--r--hw/input/ps2.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/hw/input/ps2.c b/hw/input/ps2.c
index 67dd2ec..514e55c 100644
--- a/hw/input/ps2.c
+++ b/hw/input/ps2.c
@@ -24,6 +24,7 @@
#include "qemu/osdep.h"
#include "qemu/log.h"
+#include "hw/sysbus.h"
#include "hw/input/ps2.h"
#include "migration/vmstate.h"
#include "ui/console.h"
@@ -96,12 +97,17 @@ typedef struct {
} PS2Queue;
struct PS2State {
+ SysBusDevice parent_obj;
+
PS2Queue queue;
int32_t write_cmd;
void (*update_irq)(void *, int);
void *update_arg;
};
+#define TYPE_PS2_DEVICE "ps2-device"
+OBJECT_DECLARE_SIMPLE_TYPE(PS2State, PS2_DEVICE)
+
typedef struct {
PS2State common;
int scan_enabled;
@@ -1277,3 +1283,25 @@ void *ps2_mouse_init(void (*update_irq)(void *, int), void *update_arg)
qemu_register_reset(ps2_mouse_reset, s);
return s;
}
+
+static void ps2_class_init(ObjectClass *klass, void *data)
+{
+ DeviceClass *dc = DEVICE_CLASS(klass);
+
+ set_bit(DEVICE_CATEGORY_INPUT, dc->categories);
+}
+
+static const TypeInfo ps2_info = {
+ .name = TYPE_PS2_DEVICE,
+ .parent = TYPE_SYS_BUS_DEVICE,
+ .instance_size = sizeof(PS2State),
+ .class_init = ps2_class_init,
+ .abstract = true
+};
+
+static void ps2_register_types(void)
+{
+ type_register_static(&ps2_info);
+}
+
+type_init(ps2_register_types)