aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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)