[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 01/11] usb: Add a register_companion USB bus op.
From: |
Hans de Goede |
Subject: |
[Qemu-devel] [PATCH 01/11] usb: Add a register_companion USB bus op. |
Date: |
Fri, 24 Jun 2011 21:32:48 +0200 |
This is a preparation patch for adding support for USB companion controllers.
Signed-off-by: Hans de Goede <address@hidden>
---
hw/usb-bus.c | 25 +++++++++++++++++++++++++
hw/usb.h | 4 ++++
2 files changed, 29 insertions(+), 0 deletions(-)
diff --git a/hw/usb-bus.c b/hw/usb-bus.c
index 2abce12..052fa66 100644
--- a/hw/usb-bus.c
+++ b/hw/usb-bus.c
@@ -63,6 +63,31 @@ USBBus *usb_bus_find(int busnr)
return NULL;
}
+int usb_bus_register_companion(const char *masterbus, USBPort *ports[],
+ uint32_t portcount, uint32_t firstport)
+{
+ USBBus *bus;
+
+ QTAILQ_FOREACH(bus, &busses, next) {
+ if (strcmp(bus->qbus.name, masterbus) == 0) {
+ break;
+ }
+ }
+
+ if (!bus || !bus->ops->register_companion) {
+ qerror_report(QERR_INVALID_PARAMETER_VALUE, "masterbus",
+ "an USB masterbus");
+ if (bus) {
+ error_printf_unless_qmp(
+ "USB bus '%s' does not allow companion controllers\n",
+ masterbus);
+ }
+ return -1;
+ }
+
+ return bus->ops->register_companion(bus, ports, portcount, firstport);
+}
+
static int usb_qdev_init(DeviceState *qdev, DeviceInfo *base)
{
USBDevice *dev = DO_UPCAST(USBDevice, qdev, qdev);
diff --git a/hw/usb.h b/hw/usb.h
index b861b73..419ff0c 100644
--- a/hw/usb.h
+++ b/hw/usb.h
@@ -349,11 +349,15 @@ struct USBBus {
};
struct USBBusOps {
+ int (*register_companion)(USBBus *bus, USBPort *ports[],
+ uint32_t portcount, uint32_t firstport);
void (*device_destroy)(USBBus *bus, USBDevice *dev);
};
void usb_bus_new(USBBus *bus, USBBusOps *ops, DeviceState *host);
USBBus *usb_bus_find(int busnr);
+int usb_bus_register_companion(const char *masterbus, USBPort *ports[],
+ uint32_t portcount, uint32_t firstport);
void usb_qdev_register(USBDeviceInfo *info);
void usb_qdev_register_many(USBDeviceInfo *info);
USBDevice *usb_create(USBBus *bus, const char *name);
--
1.7.5.1
- [Qemu-devel] RFC/PULL: usb: add support for companion controllers, Hans de Goede, 2011/06/24
- [Qemu-devel] [PATCH 01/11] usb: Add a register_companion USB bus op.,
Hans de Goede <=
- [Qemu-devel] [PATCH 02/11] usb: Make port wakeup and complete ops take a USBPort instead of a Device, Hans de Goede, 2011/06/24
- [Qemu-devel] [PATCH 03/11] usb: Replace device_destroy bus op with a child_detach port op, Hans de Goede, 2011/06/24
- [Qemu-devel] [PATCH 05/11] usb-ehci: Connect Status bit is read only, don't allow changing it by the guest, Hans de Goede, 2011/06/24
- [Qemu-devel] [PATCH 04/11] usb-ehci: drop unused num-ports state member, Hans de Goede, 2011/06/24
- [Qemu-devel] [PATCH 06/11] usb-ehci: cleanup port reset handling, Hans de Goede, 2011/06/24
- [Qemu-devel] [PATCH 07/11] usb: assert on calling usb_attach(port, NULL) on a port without a dev, Hans de Goede, 2011/06/24
- [Qemu-devel] [PATCH 08/11] usb-ehci: Fix handling of PED and PEDC port status bits, Hans de Goede, 2011/06/24
- [Qemu-devel] [PATCH 09/11] usb-ehci: Add support for registering companion controllers, Hans de Goede, 2011/06/24