diff options
-rw-r--r-- | hw/input/pl050.c | 13 | ||||
-rw-r--r-- | include/hw/input/pl050.h | 2 |
2 files changed, 12 insertions, 3 deletions
diff --git a/hw/input/pl050.c b/hw/input/pl050.c index fcc40758a3..64b579e877 100644 --- a/hw/input/pl050.c +++ b/hw/input/pl050.c @@ -160,17 +160,24 @@ static void pl050_realize(DeviceState *dev, Error **errp) static void pl050_kbd_realize(DeviceState *dev, Error **errp) { PL050DeviceClass *pdc = PL050_GET_CLASS(dev); + PL050KbdState *s = PL050_KBD_DEVICE(dev); PL050State *ps = PL050(dev); - ps->ps2dev = ps2_kbd_init(); + if (!sysbus_realize(SYS_BUS_DEVICE(&s->kbd), errp)) { + return; + } + + ps->ps2dev = PS2_DEVICE(&s->kbd); pdc->parent_realize(dev, errp); } static void pl050_kbd_init(Object *obj) { - PL050State *s = PL050(obj); + PL050KbdState *s = PL050_KBD_DEVICE(obj); + PL050State *ps = PL050(obj); - s->is_mouse = false; + ps->is_mouse = false; + object_initialize_child(obj, "kbd", &s->kbd, TYPE_PS2_KBD_DEVICE); } static void pl050_mouse_realize(DeviceState *dev, Error **errp) diff --git a/include/hw/input/pl050.h b/include/hw/input/pl050.h index 203f03a194..28f6216dc3 100644 --- a/include/hw/input/pl050.h +++ b/include/hw/input/pl050.h @@ -43,6 +43,8 @@ OBJECT_DECLARE_SIMPLE_TYPE(PL050KbdState, PL050_KBD_DEVICE) struct PL050KbdState { PL050State parent_obj; + + PS2KbdState kbd; }; #define TYPE_PL050_MOUSE_DEVICE "pl050_mouse" |