This series came about when looking at improving the LASI PS2 device for
the HPPA machine: there were improvements that I was keen to make, but
was restricted because the PS2 device(s) weren't QOMified.
Trying to do everything in a single patchset would be a very large series
indeed, so here is part 1 of the series which does the basic QOMification
process and consists of:
- QOMifying the basic PS2, PS2 keyboard and PS2 mouse types
- Moving any functionality that exists in a global device init function
directly into the relevant device, so that all device behaviour is
configured using qdev properties and QOM
- Introducing a new I8042_MMIO type for use by the MIPS magnum machine
- Switch all PS2 devices to use qdev gpios for IRQs instead of using the
update_irq() callback function along with the update_arg opaque
Once this work has been done, a follow-up part 2 series will finish the
remainder of the work which involves i) improving the QOM object model
now QOMification is complete and ii) removing the legacy global device
init functions for PS2 and related devices.
Testing for this series has comprised of booting a machine with each type
of PS2 device and confirming that i) the machine responds to keypresses
when using a graphical console and ii) completing a successful migration
from a machine with this series applies back to a machine running latest
git master. The test machines I used were:
- qemu-system-x86_64 -M pc for the I8042 device
- qemu-system-hppa for the LASIPS2 device
- qemu-system-arm -M versatilepb for the PL050 device
- qemu-system-mips64el -M magnum for the I8042_MMIO device
Finally the QOM tree changes caused by QOMification of the PS2 devices
trigger a failure due to a bug in the bios-tables-test qtest for subtest
/x86_64/acpi/q35/viot. This can be fixed by applying the series at
https://lists.gnu.org/archive/html/qemu-devel/2022-05/msg04266.html
"hw/acpi/viot: generate stable VIOT ACPI tables" first.
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Mark Cave-Ayland (50):
ps2: checkpatch fixes
ps2: QOMify PS2State
ps2: QOMify PS2KbdState
ps2: QOMify PS2MouseState
ps2: move QOM type definitions from ps2.c to ps2.h
ps2: improve function prototypes in ps2.c and ps2.h
ps2: introduce PS2DeviceClass
ps2: implement ps2_reset() for the PS2_DEVICE QOM type based upon
ps2_common_reset()
ps2: remove duplicate setting of scancode_set in ps2_kbd_init()
ps2: implement ps2_kbd_realize() and use it to register
ps2_keyboard_handler
ps2: implement ps2_mouse_realize() and use it to register
ps2_mouse_handler
ps2: don't use vmstate_register() in ps2_kbd_init()
ps2: don't use vmstate_register() in ps2_mouse_init()
pl050: checkpatch fixes
pl050: split pl050_update_irq() into separate pl050_set_irq() and
pl050_update_irq() functions
lasips2: spacing fixes
lasips2: rename ps2dev_update_irq() to lasips2_port_set_irq()
pckbd: checkpatch fixes
pckbd: move KBDState from pckbd.c to i8042.h
pckbd: move ISAKBDState from pckbd.c to i8042.h