aboutsummaryrefslogtreecommitdiffstats
path: root/hw/usb-bus.c
diff options
context:
space:
mode:
authorGerd Hoffmann <kraxel@redhat.com>2012-01-10 16:59:28 +0100
committerGerd Hoffmann <kraxel@redhat.com>2012-02-10 11:31:48 +0100
commit73796fe6228ae1e294b4946c6c90337141cacc42 (patch)
tree3fadff48cc8a9e0595832c94147bd6d6af2a05aa /hw/usb-bus.c
parent70fc20d4dc7c8990a508411db1ee441ae9ee5034 (diff)
usb: add usb_find_device()
Add usb_find_device(). This function will check whenever a device with a specific address is connected to the specified port. Usually this will just check state and address of the device hooked up to the port, but in case of a hub it will ask the hub to check all hub ports for a matching device. This patch doesn't put the code into use yet, see the following patches for details. The master plan is to separate device lookup and packet processing. Right now the usb code simply walks all devices, calls usb_handle_packet() on each until one accepts the packet (by returning something different that USB_RET_NODEV). I want to have a device lookup first, then call usb_handle_packet() once, for the device which actually processes the packet. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Diffstat (limited to 'hw/usb-bus.c')
-rw-r--r--hw/usb-bus.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/hw/usb-bus.c b/hw/usb-bus.c
index b75383458..5c05ed580 100644
--- a/hw/usb-bus.c
+++ b/hw/usb-bus.c
@@ -74,6 +74,15 @@ static int usb_device_init(USBDevice *dev)
return 0;
}
+USBDevice *usb_device_find_device(USBDevice *dev, uint8_t addr)
+{
+ USBDeviceClass *klass = USB_DEVICE_GET_CLASS(dev);
+ if (klass->find_device) {
+ return klass->find_device(dev, addr);
+ }
+ return NULL;
+}
+
static void usb_device_handle_destroy(USBDevice *dev)
{
USBDeviceClass *klass = USB_DEVICE_GET_CLASS(dev);