mbox series

[00/40] PS2 device QOMification - part 2

Message ID 20220629124026.1077021-1-mark.cave-ayland@ilande.co.uk
Headers show
Series PS2 device QOMification - part 2 | expand

Message

Mark Cave-Ayland June 29, 2022, 12:39 p.m. UTC
Here is the follow-on series from part 1 which completes the work to remove
the legacy global device init functions for PS2 devices. Now that part 1 has
been applied, the hard part to remove the PS2 function callback and argument
has been completed and all that remains is to improve the PS2 device
QOMification to allow the legacy PS2 functions to be removed.

Patches 1-11 update the pl050 device to remove the use of ps2_kbd_init() and
ps2_mouse_init(), whilst patches 12-34 make some more involved changes to
the lasips2 device (in particular completing the LASIPS2Port abstraction)
before doing the same.

Finally patches 35-40 complete the process for the pckbd (I8042 and I8042_MMIO
devices) before removing the now unused ps2_kbd_init(), ps2_mouse_init() and
i8042_mm_init() functions.

Note that this series is a migration break for the HPPA B160L and MIPS magnum
machines: I've had agreement from both Helge and Hervé that this is worth
doing to allow the use of the DeviceClass vmsd property to set the
VMStateDescription rather than manually calling vmstate_register().

Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>


Mark Cave-Ayland (40):
  pl050: move PL050State from pl050.c to new pl050.h header file
  pl050: rename pl050_keyboard_init() to pl050_kbd_init()
  pl050: change PL050State dev pointer from void to PS2State
  pl050: introduce new PL050_KBD_DEVICE QOM type
  pl050: introduce new PL050_MOUSE_DEVICE QOM type
  pl050: move logic from pl050_realize() to pl050_init()
  pl050: introduce PL050DeviceClass for the PL050 device
  pl050: introduce pl050_kbd_class_init() and pl050_kbd_realize()
  pl050: introduce pl050_mouse_class_init() and pl050_mouse_realize()
  pl050: don't use legacy ps2_kbd_init() function
  pl050: don't use legacy ps2_mouse_init() function
  lasips2: don't use vmstate_register() in lasips2_realize()
  lasips2: remove the qdev base property and the lasips2_properties
    array
  lasips2: remove legacy lasips2_initfn() function
  lasips2: change LASIPS2State dev pointer from void to PS2State
  lasips2: QOMify LASIPS2Port
  lasips2: introduce new LASIPS2_KBD_PORT QOM type
  lasips2: introduce new LASIPS2_MOUSE_PORT QOM type
  lasips2: move keyboard port initialisation to new
    lasips2_kbd_port_init() function
  lasips2: move mouse port initialisation to new
    lasips2_mouse_port_init() function
  lasips2: introduce lasips2_kbd_port_class_init() and
    lasips2_kbd_port_realize()
  lasips2: introduce lasips2_mouse_port_class_init() and
    lasips2_mouse_port_realize()
  lasips2: rename LASIPS2Port irq field to birq
  lasips2: introduce port IRQ and new lasips2_port_init() function
  lasips2: introduce LASIPS2PortDeviceClass for the LASIPS2_PORT device
  lasips2: add named input gpio to port for downstream PS2 device IRQ
  lasips2: add named input gpio to handle incoming port IRQs
  lasips2: switch to using port-based IRQs
  lasips2: rename LASIPS2Port parent pointer to lasips2
  lasips2: standardise on lp name for LASIPS2Port variables
  lasips2: switch register memory region to DEVICE_BIG_ENDIAN
  lasips2: don't use legacy ps2_kbd_init() function
  lasips2: don't use legacy ps2_mouse_init() function
  lasips2: update VMStateDescription for LASIPS2 device
  pckbd: introduce new vmstate_kbd_mmio VMStateDescription for the
    I8042_MMIO device
  pckbd: don't use legacy ps2_kbd_init() function
  ps2: remove unused legacy ps2_kbd_init() function
  pckbd: don't use legacy ps2_mouse_init() function
  ps2: remove unused legacy ps2_mouse_init() function
  pckbd: remove legacy i8042_mm_init() function

 hw/hppa/machine.c          |   7 +-
 hw/input/lasips2.c         | 320 ++++++++++++++++++++++++++-----------
 hw/input/pckbd.c           |  82 ++++++----
 hw/input/pl050.c           | 112 ++++++++-----
 hw/input/ps2.c             |  26 ---
 hw/input/trace-events      |   2 -
 hw/mips/jazz.c             |  13 +-
 include/hw/input/i8042.h   |   7 +-
 include/hw/input/lasips2.h |  57 +++++--
 include/hw/input/pl050.h   |  59 +++++++
 include/hw/input/ps2.h     |   2 -
 11 files changed, 466 insertions(+), 221 deletions(-)
 create mode 100644 include/hw/input/pl050.h

Comments

Helge Deller July 1, 2022, 7:37 p.m. UTC | #1
Hi Mark,

On 6/29/22 14:39, Mark Cave-Ayland wrote:
> Here is the follow-on series from part 1 which completes the work to remove
> the legacy global device init functions for PS2 devices. Now that part 1 has
> been applied, the hard part to remove the PS2 function callback and argument
> has been completed and all that remains is to improve the PS2 device
> QOMification to allow the legacy PS2 functions to be removed.
>
> Patches 1-11 update the pl050 device to remove the use of ps2_kbd_init() and
> ps2_mouse_init(), whilst patches 12-34 make some more involved changes to
> the lasips2 device (in particular completing the LASIPS2Port abstraction)
> before doing the same.
>
> Finally patches 35-40 complete the process for the pckbd (I8042 and I8042_MMIO
> devices) before removing the now unused ps2_kbd_init(), ps2_mouse_init() and
> i8042_mm_init() functions.
>
> Note that this series is a migration break for the HPPA B160L and MIPS magnum
> machines: I've had agreement from both Helge and Hervé that this is worth
> doing to allow the use of the DeviceClass vmsd property to set the
> VMStateDescription rather than manually calling vmstate_register().
>
> Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>

I did tested this patch series successfully with hppa Linux and HP-UX guests.
PS/2 mouse and keyboard works as expected.
Thanks for this nice cleanup work!

You may add either or both of:
Tested-by: Helge Deller <deller@gmx.de>
Acked-by: Helge Deller <deller@gmx.de>

Helge


>
> Mark Cave-Ayland (40):
>   pl050: move PL050State from pl050.c to new pl050.h header file
>   pl050: rename pl050_keyboard_init() to pl050_kbd_init()
>   pl050: change PL050State dev pointer from void to PS2State
>   pl050: introduce new PL050_KBD_DEVICE QOM type
>   pl050: introduce new PL050_MOUSE_DEVICE QOM type
>   pl050: move logic from pl050_realize() to pl050_init()
>   pl050: introduce PL050DeviceClass for the PL050 device
>   pl050: introduce pl050_kbd_class_init() and pl050_kbd_realize()
>   pl050: introduce pl050_mouse_class_init() and pl050_mouse_realize()
>   pl050: don't use legacy ps2_kbd_init() function
>   pl050: don't use legacy ps2_mouse_init() function
>   lasips2: don't use vmstate_register() in lasips2_realize()
>   lasips2: remove the qdev base property and the lasips2_properties
>     array
>   lasips2: remove legacy lasips2_initfn() function
>   lasips2: change LASIPS2State dev pointer from void to PS2State
>   lasips2: QOMify LASIPS2Port
>   lasips2: introduce new LASIPS2_KBD_PORT QOM type
>   lasips2: introduce new LASIPS2_MOUSE_PORT QOM type
>   lasips2: move keyboard port initialisation to new
>     lasips2_kbd_port_init() function
>   lasips2: move mouse port initialisation to new
>     lasips2_mouse_port_init() function
>   lasips2: introduce lasips2_kbd_port_class_init() and
>     lasips2_kbd_port_realize()
>   lasips2: introduce lasips2_mouse_port_class_init() and
>     lasips2_mouse_port_realize()
>   lasips2: rename LASIPS2Port irq field to birq
>   lasips2: introduce port IRQ and new lasips2_port_init() function
>   lasips2: introduce LASIPS2PortDeviceClass for the LASIPS2_PORT device
>   lasips2: add named input gpio to port for downstream PS2 device IRQ
>   lasips2: add named input gpio to handle incoming port IRQs
>   lasips2: switch to using port-based IRQs
>   lasips2: rename LASIPS2Port parent pointer to lasips2
>   lasips2: standardise on lp name for LASIPS2Port variables
>   lasips2: switch register memory region to DEVICE_BIG_ENDIAN
>   lasips2: don't use legacy ps2_kbd_init() function
>   lasips2: don't use legacy ps2_mouse_init() function
>   lasips2: update VMStateDescription for LASIPS2 device
>   pckbd: introduce new vmstate_kbd_mmio VMStateDescription for the
>     I8042_MMIO device
>   pckbd: don't use legacy ps2_kbd_init() function
>   ps2: remove unused legacy ps2_kbd_init() function
>   pckbd: don't use legacy ps2_mouse_init() function
>   ps2: remove unused legacy ps2_mouse_init() function
>   pckbd: remove legacy i8042_mm_init() function
>
>  hw/hppa/machine.c          |   7 +-
>  hw/input/lasips2.c         | 320 ++++++++++++++++++++++++++-----------
>  hw/input/pckbd.c           |  82 ++++++----
>  hw/input/pl050.c           | 112 ++++++++-----
>  hw/input/ps2.c             |  26 ---
>  hw/input/trace-events      |   2 -
>  hw/mips/jazz.c             |  13 +-
>  include/hw/input/i8042.h   |   7 +-
>  include/hw/input/lasips2.h |  57 +++++--
>  include/hw/input/pl050.h   |  59 +++++++
>  include/hw/input/ps2.h     |   2 -
>  11 files changed, 466 insertions(+), 221 deletions(-)
>  create mode 100644 include/hw/input/pl050.h
>