This becomes an abstract QOM type which will be a parent type for separate keyboard and mouse port types.
Signed-off-by: Mark Cave-Ayland <mark.cave-ayl...@ilande.co.uk> --- hw/input/lasips2.c | 8 ++++++++ include/hw/input/lasips2.h | 14 ++++++++++---- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/hw/input/lasips2.c b/hw/input/lasips2.c index b539c4de7a..56bfd759af 100644 --- a/hw/input/lasips2.c +++ b/hw/input/lasips2.c @@ -311,9 +311,17 @@ static const TypeInfo lasips2_info = { .class_init = lasips2_class_init, }; +static const TypeInfo lasips2_port_info = { + .name = TYPE_LASIPS2_PORT, + .parent = TYPE_DEVICE, + .instance_size = sizeof(LASIPS2Port), + .abstract = true, +}; + static void lasips2_register_types(void) { type_register_static(&lasips2_info); + type_register_static(&lasips2_port_info); } type_init(lasips2_register_types) diff --git a/include/hw/input/lasips2.h b/include/hw/input/lasips2.h index 9746b7a132..f4514081fe 100644 --- a/include/hw/input/lasips2.h +++ b/include/hw/input/lasips2.h @@ -25,9 +25,15 @@ #include "hw/sysbus.h" #include "hw/input/ps2.h" -struct LASIPS2State; -typedef struct LASIPS2Port { - struct LASIPS2State *parent; +#define TYPE_LASIPS2_PORT "lasips2-port" +OBJECT_DECLARE_SIMPLE_TYPE(LASIPS2Port, LASIPS2_PORT) + +typedef struct LASIPS2State LASIPS2State; + +struct LASIPS2Port { + DeviceState parent_obj; + + LASIPS2State *parent; MemoryRegion reg; PS2State *ps2dev; uint8_t id; @@ -35,7 +41,7 @@ typedef struct LASIPS2Port { uint8_t buf; bool loopback_rbne; bool irq; -} LASIPS2Port; +}; struct LASIPS2State { SysBusDevice parent_obj; -- 2.30.2