[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 13/24] qdev: gpio: Define qdev_pass_gpios()
From: |
Paolo Bonzini |
Subject: |
[Qemu-devel] [PULL 13/24] qdev: gpio: Define qdev_pass_gpios() |
Date: |
Thu, 23 Oct 2014 15:34:01 +0200 |
From: Peter Crosthwaite <address@hidden>
Allows a container to take ownership of GPIOs in a contained
device and automatically connect them as GPIOs to the container.
This prepares for deprecation of the SYSBUS IRQ functionality, which
has this feature. We push it up to the device level instead of sysbus
level. There's nothing sysbus specific about passing GPIOs to
containers so its a legitimate device-level generic feature.
Reviewed-by: Alexander Graf <address@hidden>
Signed-off-by: Peter Crosthwaite <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
---
hw/core/qdev.c | 26 ++++++++++++++++++++++++++
include/hw/qdev-core.h | 3 +++
2 files changed, 29 insertions(+)
diff --git a/hw/core/qdev.c b/hw/core/qdev.c
index 31014e8..c247fff 100644
--- a/hw/core/qdev.c
+++ b/hw/core/qdev.c
@@ -483,6 +483,32 @@ void qdev_connect_gpio_out(DeviceState * dev, int n,
qemu_irq pin)
qdev_connect_gpio_out_named(dev, NULL, n, pin);
}
+void qdev_pass_gpios(DeviceState *dev, DeviceState *container,
+ const char *name)
+{
+ int i;
+ NamedGPIOList *ngl = qdev_get_named_gpio_list(dev, name);
+
+ for (i = 0; i < ngl->num_in; i++) {
+ const char *nm = ngl->name ? ngl->name : "unnamed-gpio-in";
+ char *propname = g_strdup_printf("%s[%d]", nm, i);
+
+ object_property_add_alias(OBJECT(container), propname,
+ OBJECT(dev), propname,
+ &error_abort);
+ }
+ for (i = 0; i < ngl->num_out; i++) {
+ const char *nm = ngl->name ? ngl->name : "unnamed-gpio-out";
+ char *propname = g_strdup_printf("%s[%d]", nm, i);
+
+ object_property_add_alias(OBJECT(container), propname,
+ OBJECT(dev), propname,
+ &error_abort);
+ }
+ QLIST_REMOVE(ngl, node);
+ QLIST_INSERT_HEAD(&container->gpios, ngl, node);
+}
+
BusState *qdev_get_child_bus(DeviceState *dev, const char *name)
{
BusState *bus;
diff --git a/include/hw/qdev-core.h b/include/hw/qdev-core.h
index 86d341f..a7327fd 100644
--- a/include/hw/qdev-core.h
+++ b/include/hw/qdev-core.h
@@ -288,6 +288,9 @@ void qdev_init_gpio_in_named(DeviceState *dev,
qemu_irq_handler handler,
void qdev_init_gpio_out_named(DeviceState *dev, qemu_irq *pins,
const char *name, int n);
+void qdev_pass_gpios(DeviceState *dev, DeviceState *container,
+ const char *name);
+
BusState *qdev_get_parent_bus(DeviceState *dev);
/*** BUS API. ***/
--
1.8.3.1
- [Qemu-devel] [PULL 02/24] virtio-scsi: dataplane: print why starting failed, (continued)
- [Qemu-devel] [PULL 02/24] virtio-scsi: dataplane: print why starting failed, Paolo Bonzini, 2014/10/23
- [Qemu-devel] [PULL 05/24] qom: Allow clearing of a Link property, Paolo Bonzini, 2014/10/23
- [Qemu-devel] [PULL 07/24] qdev: gpio: Re-implement qdev_connect_gpio QOM style, Paolo Bonzini, 2014/10/23
- [Qemu-devel] [PULL 03/24] virtio-scsi: dataplane: fail setup gracefully, Paolo Bonzini, 2014/10/23
- [Qemu-devel] [PULL 08/24] qdev: gpio: Add API for intercepting a GPIO, Paolo Bonzini, 2014/10/23
- [Qemu-devel] [PULL 09/24] qtest/irq: Rework IRQ interception, Paolo Bonzini, 2014/10/23
- [Qemu-devel] [PULL 10/24] irq: Remove qemu_irq_intercept_out, Paolo Bonzini, 2014/10/23
- [Qemu-devel] [PULL 04/24] virtio-scsi: dataplane: stop trying on notifier error, Paolo Bonzini, 2014/10/23
- [Qemu-devel] [PULL 11/24] qdev: gpio: delete NamedGPIOList::out, Paolo Bonzini, 2014/10/23
- [Qemu-devel] [PULL 12/24] qdev: gpio: Remove qdev_init_gpio_out x1 restriction, Paolo Bonzini, 2014/10/23
- [Qemu-devel] [PULL 13/24] qdev: gpio: Define qdev_pass_gpios(),
Paolo Bonzini <=
- [Qemu-devel] [PULL 14/24] sysbus: Use TYPE_DEVICE GPIO functionality, Paolo Bonzini, 2014/10/23
- [Qemu-devel] [PULL 16/24] MAINTAINERS: grab more files from Anthony's pile, Paolo Bonzini, 2014/10/23
- [Qemu-devel] [PULL 17/24] MAINTAINERS: add Samuel Thibault as usb-serial.c and baum.c maintainer, Paolo Bonzini, 2014/10/23
- [Qemu-devel] [PULL 18/24] MAINTAINERS: add myself for X86, Paolo Bonzini, 2014/10/23
- [Qemu-devel] [PULL 19/24] MAINTAINERS: Add more TCG files, Paolo Bonzini, 2014/10/23
- [Qemu-devel] [PULL 20/24] MAINTAINERS: add some tests directories, Paolo Bonzini, 2014/10/23
- [Qemu-devel] [PULL 15/24] target-i386: warns users when CPU threads>1 for non-Intel CPUs, Paolo Bonzini, 2014/10/23
- [Qemu-devel] [PULL 22/24] qtest: fix qtest log fd should be initialized before qtest chardev, Paolo Bonzini, 2014/10/23
- [Qemu-devel] [PULL 21/24] MAINTAINERS: avoid M entries that point to mailing lists, Paolo Bonzini, 2014/10/23
- [Qemu-devel] [PULL 24/24] get_maintainer.pl: restrict cases where it falls back to --git, Paolo Bonzini, 2014/10/23