[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 37/50] lasips2: QOMify LASIPS2State
From: |
Mark Cave-Ayland |
Subject: |
[PATCH 37/50] lasips2: QOMify LASIPS2State |
Date: |
Sun, 22 May 2022 19:18:23 +0100 |
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>
---
hw/input/lasips2.c | 29 ++++++++++++++++++++++++++---
1 file changed, 26 insertions(+), 3 deletions(-)
diff --git a/hw/input/lasips2.c b/hw/input/lasips2.c
index adfde1684f..db0a791e6c 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)
--
2.20.1
- [PATCH 31/50] ps2: make ps2_raise_irq() function static, (continued)
- [PATCH 31/50] ps2: make ps2_raise_irq() function static, Mark Cave-Ayland, 2022/05/22
- [PATCH 21/50] pckbd: introduce new I8042_MMIO QOM type, Mark Cave-Ayland, 2022/05/22
- [PATCH 25/50] pckbd: implement i8042_mmio_realize() function, Mark Cave-Ayland, 2022/05/22
- [PATCH 36/50] pl050: switch over from update_irq() function to PS2 device gpio, Mark Cave-Ayland, 2022/05/22
- [PATCH 35/50] pckbd: replace irq_kbd and irq_mouse with qemu_irq array in KBDState, Mark Cave-Ayland, 2022/05/22
- [PATCH 30/50] pckbd: move ps2_kbd_init() and ps2_mouse_init() to i8042_mmio_realize(), Mark Cave-Ayland, 2022/05/22
- [PATCH 27/50] pckbd: alter i8042_mm_init() to return a I8042_MMIO device, Mark Cave-Ayland, 2022/05/22
- [PATCH 39/50] lasips2: rename lasips2_init() to lasips2_initfn() and update it to return the LASIPS2 device, Mark Cave-Ayland, 2022/05/22
- [PATCH 34/50] ps2: add gpio for output IRQ and optionally use it in ps2_raise_irq() and ps2_lower_irq(), Mark Cave-Ayland, 2022/05/22
- [PATCH 33/50] ps2: introduce ps2_lower_irq() instead of calling update_irq() directly, Mark Cave-Ayland, 2022/05/22
- [PATCH 37/50] lasips2: QOMify LASIPS2State,
Mark Cave-Ayland <=
- [PATCH 32/50] ps2: use ps2_raise_irq() instead of calling update_irq() directly, Mark Cave-Ayland, 2022/05/22
- [PATCH 38/50] lasips2: move lasips2 QOM types from lasips2.c to lasips2.h, Mark Cave-Ayland, 2022/05/22
- [PATCH 41/50] lasips2: move mapping of LASIPS2 registers to HPPA machine, Mark Cave-Ayland, 2022/05/22
- [PATCH 40/50] lasips2: implement lasips2_init() function, Mark Cave-Ayland, 2022/05/22
- [PATCH 42/50] lasips2: move initialisation of PS2 ports from lasi_initfn() to lasi_init(), Mark Cave-Ayland, 2022/05/22
- [PATCH 43/50] lasips2: add base property, Mark Cave-Ayland, 2022/05/22
- [PATCH 48/50] pckbd: add i8042_reset() function to I8042 device, Mark Cave-Ayland, 2022/05/22
- [PATCH 44/50] lasips2: implement lasips2_realize(), Mark Cave-Ayland, 2022/05/22
- [PATCH 45/50] lasips2: use qdev gpio for output IRQ, Mark Cave-Ayland, 2022/05/22
- [PATCH 49/50] pckbd: switch I8042 device from update_irq() function to PS2 device gpio, Mark Cave-Ayland, 2022/05/22