[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 09/40] pl050: introduce pl050_mouse_class_init() and pl050_mou
From: |
Mark Cave-Ayland |
Subject: |
[PATCH v2 09/40] pl050: introduce pl050_mouse_class_init() and pl050_mouse_realize() |
Date: |
Tue, 12 Jul 2022 22:52:20 +0100 |
Introduce a new pl050_mouse_class_init() function containing a call to
device_class_set_parent_realize() which calls a new pl050_mouse_realize()
function to initialise the PS2 mouse device.
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Tested-by: Helge Deller <deller@gmx.de>
Acked-by: Helge Deller <deller@gmx.de>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
---
hw/input/pl050.c | 23 +++++++++++++++++++----
1 file changed, 19 insertions(+), 4 deletions(-)
diff --git a/hw/input/pl050.c b/hw/input/pl050.c
index 24363c007e..fcc40758a3 100644
--- a/hw/input/pl050.c
+++ b/hw/input/pl050.c
@@ -153,10 +153,6 @@ static void pl050_realize(DeviceState *dev, Error **errp)
{
PL050State *s = PL050(dev);
- if (s->is_mouse) {
- s->ps2dev = ps2_mouse_init();
- }
-
qdev_connect_gpio_out(DEVICE(s->ps2dev), PS2_DEVICE_IRQ,
qdev_get_gpio_in_named(dev, "ps2-input-irq", 0));
}
@@ -177,6 +173,15 @@ static void pl050_kbd_init(Object *obj)
s->is_mouse = false;
}
+static void pl050_mouse_realize(DeviceState *dev, Error **errp)
+{
+ PL050DeviceClass *pdc = PL050_GET_CLASS(dev);
+ PL050State *ps = PL050(dev);
+
+ ps->ps2dev = ps2_mouse_init();
+ pdc->parent_realize(dev, errp);
+}
+
static void pl050_mouse_init(Object *obj)
{
PL050State *s = PL050(obj);
@@ -201,11 +206,21 @@ static const TypeInfo pl050_kbd_info = {
.class_init = pl050_kbd_class_init,
};
+static void pl050_mouse_class_init(ObjectClass *oc, void *data)
+{
+ DeviceClass *dc = DEVICE_CLASS(oc);
+ PL050DeviceClass *pdc = PL050_CLASS(oc);
+
+ device_class_set_parent_realize(dc, pl050_mouse_realize,
+ &pdc->parent_realize);
+}
+
static const TypeInfo pl050_mouse_info = {
.name = TYPE_PL050_MOUSE_DEVICE,
.parent = TYPE_PL050,
.instance_init = pl050_mouse_init,
.instance_size = sizeof(PL050MouseState),
+ .class_init = pl050_mouse_class_init,
};
static void pl050_init(Object *obj)
--
2.30.2
- [PATCH v2 00/40] PS2 device QOMification - part 2, Mark Cave-Ayland, 2022/07/12
- [PATCH v2 01/40] pl050: move PL050State from pl050.c to new pl050.h header file, Mark Cave-Ayland, 2022/07/12
- [PATCH v2 02/40] pl050: rename pl050_keyboard_init() to pl050_kbd_init(), Mark Cave-Ayland, 2022/07/12
- [PATCH v2 03/40] pl050: change PL050State dev pointer from void to PS2State, Mark Cave-Ayland, 2022/07/12
- [PATCH v2 05/40] pl050: introduce new PL050_MOUSE_DEVICE QOM type, Mark Cave-Ayland, 2022/07/12
- [PATCH v2 08/40] pl050: introduce pl050_kbd_class_init() and pl050_kbd_realize(), Mark Cave-Ayland, 2022/07/12
- [PATCH v2 04/40] pl050: introduce new PL050_KBD_DEVICE QOM type, Mark Cave-Ayland, 2022/07/12
- [PATCH v2 07/40] pl050: introduce PL050DeviceClass for the PL050 device, Mark Cave-Ayland, 2022/07/12
- [PATCH v2 06/40] pl050: move logic from pl050_realize() to pl050_init(), Mark Cave-Ayland, 2022/07/12
- [PATCH v2 09/40] pl050: introduce pl050_mouse_class_init() and pl050_mouse_realize(),
Mark Cave-Ayland <=
- [PATCH v2 10/40] pl050: don't use legacy ps2_kbd_init() function, Mark Cave-Ayland, 2022/07/12
- [PATCH v2 11/40] pl050: don't use legacy ps2_mouse_init() function, Mark Cave-Ayland, 2022/07/12
- [PATCH v2 12/40] lasips2: don't use vmstate_register() in lasips2_realize(), Mark Cave-Ayland, 2022/07/12
- [PATCH v2 13/40] lasips2: remove the qdev base property and the lasips2_properties array, Mark Cave-Ayland, 2022/07/12
- [PATCH v2 15/40] lasips2: change LASIPS2State dev pointer from void to PS2State, Mark Cave-Ayland, 2022/07/12
- [PATCH v2 14/40] lasips2: remove legacy lasips2_initfn() function, Mark Cave-Ayland, 2022/07/12
- [PATCH v2 16/40] lasips2: QOMify LASIPS2Port, Mark Cave-Ayland, 2022/07/12
- [PATCH v2 17/40] lasips2: introduce new LASIPS2_KBD_PORT QOM type, Mark Cave-Ayland, 2022/07/12
- [PATCH v2 18/40] lasips2: introduce new LASIPS2_MOUSE_PORT QOM type, Mark Cave-Ayland, 2022/07/12
- [PATCH v2 20/40] lasips2: move mouse port initialisation to new lasips2_mouse_port_init() function, Mark Cave-Ayland, 2022/07/12