aboutsummaryrefslogtreecommitdiff
path: root/hw
diff options
context:
space:
mode:
authorMark Cave-Ayland <mark.cave-ayland@ilande.co.uk>2022-06-24 14:40:53 +0100
committerMark Cave-Ayland <mark.cave-ayland@ilande.co.uk>2022-06-26 18:40:12 +0100
commit653b388c39ffa75c2935e30d49d24cbf4a5c12e4 (patch)
tree74fef94d092d70af797a8c73b60afeac2b95390c /hw
parent1d9d4b072db7e1de406122a3012eced157939299 (diff)
downloadqemu-653b388c39ffa75c2935e30d49d24cbf4a5c12e4.zip
qemu-653b388c39ffa75c2935e30d49d24cbf4a5c12e4.tar.gz
qemu-653b388c39ffa75c2935e30d49d24cbf4a5c12e4.tar.bz2
lasips2: QOMify LASIPS2State
Currently lasip2_init() creates a new LASIPS2State directly which is used by the HPPA machine. Introduce a new LASIPS2 QOM type that will soon be used to allow the HPPA machine to be wired up using standard qdev GPIOs. Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> Acked-by: Helge Deller <deller@gmx.de> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Message-Id: <20220624134109.881989-39-mark.cave-ayland@ilande.co.uk>
Diffstat (limited to 'hw')
-rw-r--r--hw/input/lasips2.c29
1 files changed, 26 insertions, 3 deletions
diff --git a/hw/input/lasips2.c b/hw/input/lasips2.c
index adfde16..db0a791 100644
--- a/hw/input/lasips2.c
+++ b/hw/input/lasips2.c
@@ -24,6 +24,7 @@
#include "qemu/osdep.h"
#include "qemu/log.h"
#include "hw/qdev-properties.h"
+#include "hw/sysbus.h"
#include "hw/input/ps2.h"
#include "hw/input/lasips2.h"
#include "exec/hwaddr.h"
@@ -31,6 +32,7 @@
#include "exec/address-spaces.h"
#include "migration/vmstate.h"
#include "hw/irq.h"
+#include "qapi/error.h"
struct LASIPS2State;
@@ -45,11 +47,16 @@ typedef struct LASIPS2Port {
bool irq;
} LASIPS2Port;
-typedef struct LASIPS2State {
+struct LASIPS2State {
+ SysBusDevice parent_obj;
+
LASIPS2Port kbd;
LASIPS2Port mouse;
qemu_irq irq;
-} LASIPS2State;
+};
+
+#define TYPE_LASIPS2 "lasips2"
+OBJECT_DECLARE_SIMPLE_TYPE(LASIPS2State, LASIPS2)
static const VMStateDescription vmstate_lasips2 = {
.name = "lasips2",
@@ -265,8 +272,11 @@ void lasips2_init(MemoryRegion *address_space,
hwaddr base, qemu_irq irq)
{
LASIPS2State *s;
+ DeviceState *dev;
- s = g_new0(LASIPS2State, 1);
+ dev = qdev_new(TYPE_LASIPS2);
+ sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal);
+ s = LASIPS2(dev);
s->irq = irq;
s->mouse.id = 1;
@@ -286,3 +296,16 @@ void lasips2_init(MemoryRegion *address_space,
"lasips2-mouse", 0x100);
memory_region_add_subregion(address_space, base + 0x100, &s->mouse.reg);
}
+
+static const TypeInfo lasips2_info = {
+ .name = TYPE_LASIPS2,
+ .parent = TYPE_SYS_BUS_DEVICE,
+ .instance_size = sizeof(LASIPS2State)
+};
+
+static void lasips2_register_types(void)
+{
+ type_register_static(&lasips2_info);
+}
+
+type_init(lasips2_register_types)