All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 00/54] PS2 device QOMification - part 1
@ 2022-06-24 13:40 Mark Cave-Ayland
  2022-06-24 13:40 ` [PATCH v2 01/54] ps2: checkpatch fixes Mark Cave-Ayland
                   ` (53 more replies)
  0 siblings, 54 replies; 67+ messages in thread
From: Mark Cave-Ayland @ 2022-06-24 13:40 UTC (permalink / raw)
  To: richard.henderson, deller, mst, pbonzini, peter.maydell,
	hpoussin, aleksandar.rikalo, f4bug, jiaxun.yang, qemu-arm,
	qemu-devel

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

Patches still missing review:
  22, 26, 29
  36, 37
  44, 46, 47, 48
  50, 53

v2:
- Rebase onto master
- Add R-B tags from Phil and Peter
- Add A-B tag from Helge (T-B tag dropped due to changes since v1)
- Move setting of extended_state from i8042_mmio_reset() to i8042_mmio_init()
- Move sysbus_init_mmio() from i8042_mmio_init() to i8042_realize()
- Use qemu_irq_is_connected() in patch 34
- Use named gpio inputs for pl050 in patch 36
- Use sysbus IRQ instead gpio out for laspis2 output IRQ in patch 46
- Use named gpio inputs for laspi2 in patch 47
- Use named gpio inputs for i8042 device in patch 52
- Add QEMU interface comments as suggested by Peter


Mark Cave-Ayland (54):
  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
  pckbd: introduce new I8042_MMIO QOM type
  pckbd: implement i8042_mmio_reset() for I8042_MMIO device
  pckbd: add mask qdev property to I8042_MMIO device
  pckbd: add size qdev property to I8042_MMIO device
  pckbd: implement i8042_mmio_realize() function
  pckbd: implement i8042_mmio_init() function
  pckbd: alter i8042_mm_init() to return a I8042_MMIO device
  pckbd: move mapping of I8042_MMIO registers to MIPS magnum machine
  pckbd: more vmstate_register() from i8042_mm_init() to
    i8042_mmio_realize()
  pckbd: move ps2_kbd_init() and ps2_mouse_init() to
    i8042_mmio_realize()
  ps2: make ps2_raise_irq() function static
  ps2: use ps2_raise_irq() instead of calling update_irq() directly
  ps2: introduce ps2_lower_irq() instead of calling update_irq()
    directly
  ps2: add gpio for output IRQ and optionally use it in ps2_raise_irq()
    and ps2_lower_irq()
  pckbd: replace irq_kbd and irq_mouse with qemu_irq array in KBDState
  pl050: switch over from update_irq() function to PS2 device gpio
  pl050: add QEMU interface comment
  lasips2: QOMify LASIPS2State
  lasips2: move lasips2 QOM types from lasips2.c to lasips2.h
  lasips2: rename lasips2_init() to lasips2_initfn() and update it to
    return the LASIPS2 device
  lasips2: implement lasips2_init() function
  lasips2: move mapping of LASIPS2 registers to HPPA machine
  lasips2: move initialisation of PS2 ports from lasi_initfn() to
    lasi_init()
  lasips2: add base property
  lasips2: implement lasips2_realize()
  lasips2: use sysbus IRQ for output IRQ
  lasips2: switch over from update_irq() function to PS2 device gpio
  lasips2: add QEMU interface comment
  pckbd: switch I8042_MMIO device from update_irq() function to PS2
    device gpio
  pckbd: add QEMU interface comment for I8042_MMIO device
  pckbd: add i8042_reset() function to I8042 device
  pckbd: switch I8042 device from update_irq() function to PS2 device
    gpio
  pckbd: add QEMU interface comment for I8042 device
  ps2: remove update_irq() function and update_arg parameter

 hw/hppa/machine.c          |  11 +-
 hw/input/lasips2.c         | 124 ++++++---
 hw/input/pckbd.c           | 338 +++++++++++++++++--------
 hw/input/pl050.c           |  56 +++--
 hw/input/ps2.c             | 501 +++++++++++++++++++++----------------
 hw/mips/jazz.c             |  11 +-
 include/hw/input/i8042.h   |  75 +++++-
 include/hw/input/lasips2.h |  39 ++-
 include/hw/input/ps2.h     |  79 +++++-
 9 files changed, 846 insertions(+), 388 deletions(-)

-- 
2.30.2



^ permalink raw reply	[flat|nested] 67+ messages in thread

end of thread, other threads:[~2022-06-26 10:17 UTC | newest]

Thread overview: 67+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-06-24 13:40 [PATCH v2 00/54] PS2 device QOMification - part 1 Mark Cave-Ayland
2022-06-24 13:40 ` [PATCH v2 01/54] ps2: checkpatch fixes Mark Cave-Ayland
2022-06-24 13:40 ` [PATCH v2 02/54] ps2: QOMify PS2State Mark Cave-Ayland
2022-06-24 13:40 ` [PATCH v2 03/54] ps2: QOMify PS2KbdState Mark Cave-Ayland
2022-06-24 13:40 ` [PATCH v2 04/54] ps2: QOMify PS2MouseState Mark Cave-Ayland
2022-06-24 13:40 ` [PATCH v2 05/54] ps2: move QOM type definitions from ps2.c to ps2.h Mark Cave-Ayland
2022-06-24 13:40 ` [PATCH v2 06/54] ps2: improve function prototypes in ps2.c and ps2.h Mark Cave-Ayland
2022-06-24 13:40 ` [PATCH v2 07/54] ps2: introduce PS2DeviceClass Mark Cave-Ayland
2022-06-24 13:40 ` [PATCH v2 08/54] ps2: implement ps2_reset() for the PS2_DEVICE QOM type based upon ps2_common_reset() Mark Cave-Ayland
2022-06-24 13:40 ` [PATCH v2 09/54] ps2: remove duplicate setting of scancode_set in ps2_kbd_init() Mark Cave-Ayland
2022-06-24 13:40 ` [PATCH v2 10/54] ps2: implement ps2_kbd_realize() and use it to register ps2_keyboard_handler Mark Cave-Ayland
2022-06-24 13:40 ` [PATCH v2 11/54] ps2: implement ps2_mouse_realize() and use it to register ps2_mouse_handler Mark Cave-Ayland
2022-06-24 13:40 ` [PATCH v2 12/54] ps2: don't use vmstate_register() in ps2_kbd_init() Mark Cave-Ayland
2022-06-24 13:40 ` [PATCH v2 13/54] ps2: don't use vmstate_register() in ps2_mouse_init() Mark Cave-Ayland
2022-06-24 13:40 ` [PATCH v2 14/54] pl050: checkpatch fixes Mark Cave-Ayland
2022-06-24 13:40 ` [PATCH v2 15/54] pl050: split pl050_update_irq() into separate pl050_set_irq() and pl050_update_irq() functions Mark Cave-Ayland
2022-06-24 13:40 ` [PATCH v2 16/54] lasips2: spacing fixes Mark Cave-Ayland
2022-06-24 13:40 ` [PATCH v2 17/54] lasips2: rename ps2dev_update_irq() to lasips2_port_set_irq() Mark Cave-Ayland
2022-06-24 13:40 ` [PATCH v2 18/54] pckbd: checkpatch fixes Mark Cave-Ayland
2022-06-24 13:40 ` [PATCH v2 19/54] pckbd: move KBDState from pckbd.c to i8042.h Mark Cave-Ayland
2022-06-24 13:40 ` [PATCH v2 20/54] pckbd: move ISAKBDState " Mark Cave-Ayland
2022-06-24 13:40 ` [PATCH v2 21/54] pckbd: introduce new I8042_MMIO QOM type Mark Cave-Ayland
2022-06-24 13:40 ` [PATCH v2 22/54] pckbd: implement i8042_mmio_reset() for I8042_MMIO device Mark Cave-Ayland
2022-06-24 15:07   ` Peter Maydell
2022-06-24 13:40 ` [PATCH v2 23/54] pckbd: add mask qdev property to " Mark Cave-Ayland
2022-06-24 13:40 ` [PATCH v2 24/54] pckbd: add size " Mark Cave-Ayland
2022-06-24 13:40 ` [PATCH v2 25/54] pckbd: implement i8042_mmio_realize() function Mark Cave-Ayland
2022-06-24 13:40 ` [PATCH v2 26/54] pckbd: implement i8042_mmio_init() function Mark Cave-Ayland
2022-06-24 15:07   ` Peter Maydell
2022-06-24 13:40 ` [PATCH v2 27/54] pckbd: alter i8042_mm_init() to return a I8042_MMIO device Mark Cave-Ayland
2022-06-24 13:40 ` [PATCH v2 28/54] pckbd: move mapping of I8042_MMIO registers to MIPS magnum machine Mark Cave-Ayland
2022-06-24 13:40 ` [PATCH v2 29/54] pckbd: more vmstate_register() from i8042_mm_init() to i8042_mmio_realize() Mark Cave-Ayland
2022-06-24 15:07   ` Peter Maydell
2022-06-24 13:40 ` [PATCH v2 30/54] pckbd: move ps2_kbd_init() and ps2_mouse_init() " Mark Cave-Ayland
2022-06-24 13:40 ` [PATCH v2 31/54] ps2: make ps2_raise_irq() function static Mark Cave-Ayland
2022-06-24 13:40 ` [PATCH v2 32/54] ps2: use ps2_raise_irq() instead of calling update_irq() directly Mark Cave-Ayland
2022-06-24 13:40 ` [PATCH v2 33/54] ps2: introduce ps2_lower_irq() " Mark Cave-Ayland
2022-06-24 13:40 ` [PATCH v2 34/54] ps2: add gpio for output IRQ and optionally use it in ps2_raise_irq() and ps2_lower_irq() Mark Cave-Ayland
2022-06-24 13:40 ` [PATCH v2 35/54] pckbd: replace irq_kbd and irq_mouse with qemu_irq array in KBDState Mark Cave-Ayland
2022-06-24 13:40 ` [PATCH v2 36/54] pl050: switch over from update_irq() function to PS2 device gpio Mark Cave-Ayland
2022-06-24 15:08   ` Peter Maydell
2022-06-24 13:40 ` [PATCH v2 37/54] pl050: add QEMU interface comment Mark Cave-Ayland
2022-06-24 15:08   ` Peter Maydell
2022-06-24 13:40 ` [PATCH v2 38/54] lasips2: QOMify LASIPS2State Mark Cave-Ayland
2022-06-24 13:40 ` [PATCH v2 39/54] lasips2: move lasips2 QOM types from lasips2.c to lasips2.h Mark Cave-Ayland
2022-06-24 13:40 ` [PATCH v2 40/54] lasips2: rename lasips2_init() to lasips2_initfn() and update it to return the LASIPS2 device Mark Cave-Ayland
2022-06-24 13:40 ` [PATCH v2 41/54] lasips2: implement lasips2_init() function Mark Cave-Ayland
2022-06-24 13:40 ` [PATCH v2 42/54] lasips2: move mapping of LASIPS2 registers to HPPA machine Mark Cave-Ayland
2022-06-24 13:40 ` [PATCH v2 43/54] lasips2: move initialisation of PS2 ports from lasi_initfn() to lasi_init() Mark Cave-Ayland
2022-06-24 13:40 ` [PATCH v2 44/54] lasips2: add base property Mark Cave-Ayland
2022-06-24 15:09   ` Peter Maydell
2022-06-24 13:41 ` [PATCH v2 45/54] lasips2: implement lasips2_realize() Mark Cave-Ayland
2022-06-24 13:41 ` [PATCH v2 46/54] lasips2: use sysbus IRQ for output IRQ Mark Cave-Ayland
2022-06-24 15:10   ` Peter Maydell
2022-06-24 13:41 ` [PATCH v2 47/54] lasips2: switch over from update_irq() function to PS2 device gpio Mark Cave-Ayland
2022-06-24 15:10   ` Peter Maydell
2022-06-26 10:14   ` Mark Cave-Ayland
2022-06-24 13:41 ` [PATCH v2 48/54] lasips2: add QEMU interface comment Mark Cave-Ayland
2022-06-24 15:11   ` Peter Maydell
2022-06-24 13:41 ` [PATCH v2 49/54] pckbd: switch I8042_MMIO device from update_irq() function to PS2 device gpio Mark Cave-Ayland
2022-06-24 13:41 ` [PATCH v2 50/54] pckbd: add QEMU interface comment for I8042_MMIO device Mark Cave-Ayland
2022-06-24 15:11   ` Peter Maydell
2022-06-24 13:41 ` [PATCH v2 51/54] pckbd: add i8042_reset() function to I8042 device Mark Cave-Ayland
2022-06-24 13:41 ` [PATCH v2 52/54] pckbd: switch I8042 device from update_irq() function to PS2 device gpio Mark Cave-Ayland
2022-06-24 13:41 ` [PATCH v2 53/54] pckbd: add QEMU interface comment for I8042 device Mark Cave-Ayland
2022-06-24 15:12   ` Peter Maydell
2022-06-24 13:41 ` [PATCH v2 54/54] ps2: remove update_irq() function and update_arg parameter Mark Cave-Ayland

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.