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>
This commit is contained in:
Mark Cave-Ayland 2022-06-24 14:40:17 +01:00
parent 545e5cf817
commit 64bbdd138a
1 changed files with 28 additions and 0 deletions

View File

@ -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)