On 12 May 2016 at 23:46, Alistair Francis <alistair.fran...@xilinx.com> wrote: > From: Peter Crosthwaite <peter.crosthwa...@xilinx.com> > > An API similar to the existing qdev_get_gpio_in() except gets outputs. > Useful for: > > 1: Implementing lightweight devices that don't want to keep pointers > to their own GPIOs. They can get their GPIO pointers at runtime from > QOM using this API. > > 2: testing or debugging code which may wish to override the > hardware generated value of of a GPIO with a user specified value > (E.G. interrupt injection). > > Signed-off-by: Peter Crosthwaite <peter.crosthwa...@xilinx.com> > Signed-off-by: Alistair Francis <alistair.fran...@xilinx.com> > --- > > hw/core/qdev.c | 12 ++++++++++++ > include/hw/qdev-core.h | 2 ++ > 2 files changed, 14 insertions(+) > > diff --git a/hw/core/qdev.c b/hw/core/qdev.c > index db41aa1..e3015d2 100644 > --- a/hw/core/qdev.c > +++ b/hw/core/qdev.c > @@ -489,6 +489,18 @@ qemu_irq qdev_get_gpio_in(DeviceState *dev, int n) > return qdev_get_gpio_in_named(dev, NULL, n); > } > > +qemu_irq qdev_get_gpio_out_named(DeviceState *dev, const char *name, int n) > +{ > + char *propname = g_strdup_printf("%s[%d]", > + name ? name : "unnamed-gpio-out", n); > + return (qemu_irq)object_property_get_link(OBJECT(dev), propname, NULL); > +}
This appears to be identical to the existing function qdev_get_gpio_out_connector() ? > + > +qemu_irq qdev_get_gpio_out(DeviceState *dev, int n) > +{ > + return qdev_get_gpio_out_named(dev, NULL, n); > +} > + > void qdev_connect_gpio_out_named(DeviceState *dev, const char *name, int n, > qemu_irq pin) > { > diff --git a/include/hw/qdev-core.h b/include/hw/qdev-core.h > index 1ce02b2..0e216af 100644 > --- a/include/hw/qdev-core.h > +++ b/include/hw/qdev-core.h > @@ -285,6 +285,8 @@ bool qdev_machine_modified(void); > > qemu_irq qdev_get_gpio_in(DeviceState *dev, int n); > qemu_irq qdev_get_gpio_in_named(DeviceState *dev, const char *name, int n); > +qemu_irq qdev_get_gpio_out(DeviceState *dev, int n); > +qemu_irq qdev_get_gpio_out_named(DeviceState *dev, const char *name, int n); Doc comments for new global functions would be nice. thanks -- PMM