Hi All, So phase one was the QOMification of qemu_irq. This is the next step. We start to setup GPIOs as proper QOM objects. Inputs are child objects of their device. Outputs are settable Links and connection is made via proper setting of a QOM link.
We then cleanup Sysbus to simply re-use device level GPIOs and get rid of it's special IRQ handling code. Depends of my pending QOM array property stuff (the "[*]" series): https://lists.nongnu.org/archive/html/qemu-devel/2014-07/msg04116.html Peter Crosthwaite (16): qdev: gpio: Don't allow name share between I and O qdev: gpio: Register GPIO inputs as child objects qdev: gpio: Register GPIO outputs as QOM links qmp: qstring: Handle NULL strings qom: Allow clearing of a Link property qom: Demote already-has-a-parent to a regular error qdev: gpio: Re-impement qdev_connect_gpio QOM style qdev: gpio: Add API for intercepting an IRQ qtest/irq: Rework IRQ interception irq: Remove qemu_irq_intercept_out qdev: gpio: delete NamedGPIOList::out qdev: gpio: Remove qdev_init_gpio_out x1 restriction qdev: gpio: Define qdev_pass_gpios() ssi: xilinx_spi: Initialise CS GPIOs as NULL ppc: convert g_new(qemu_irq usages to g_new0 sysbus: Use TYPE_DEVICE GPIO functionality hw/core/irq.c | 8 +---- hw/core/qdev.c | 89 ++++++++++++++++++++++++++++++++++++++++++++++---- hw/core/sysbus.c | 20 ++---------- hw/intc/openpic.c | 2 +- hw/ppc/e500.c | 2 +- hw/ppc/mac_newworld.c | 2 +- hw/ssi/xilinx_spi.c | 2 +- include/hw/irq.h | 1 - include/hw/qdev-core.h | 6 +++- include/hw/sysbus.h | 6 ++-- qobject/qstring.c | 12 ++++--- qom/object.c | 10 ++++-- qtest.c | 11 ++++--- 13 files changed, 120 insertions(+), 51 deletions(-) -- 2.0.1.1.gfbfc394