aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorSarah Sharp <sarah.a.sharp@linux.intel.com>2009-04-27 22:57:26 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2009-06-16 00:44:49 -0400
commitc6515272b858742962c1de0f3bf497a048b9abd7 (patch)
tree5172d9b646fa5e364b5b35004f10628aed934a71 /include/linux
parent0f2a79300a1471cf92ab43af165ea13555c8b0a5 (diff)
USB: Support for addressing a USB device under xHCI
Add host controller driver API and a slot_id variable to struct usb_device. This allows the xHCI host controller driver to ask the hardware to allocate a slot for the device when a struct usb_device is allocated. The slot needs to be allocated at that point because the hardware can run out of internal resources, and we want to know that very early in the device connection process. Don't call this new API for root hubs, since they aren't real devices. Add HCD API to let the host controller choose the device address. This is especially important for xHCI hardware running in a virtualized environment. The guests running under the VM don't need to know which addresses on the bus are taken, because the hardware picks the address for them. Announce SuperSpeed USB devices after the address has been assigned by the hardware. Don't use the new get descriptor/set address scheme with xHCI. Unless special handling is done in the host controller driver, the xHC can't issue control transfers before you set the device address. Support for the older addressing scheme will be added when the xHCI driver supports the Block Set Address Request (BSR) flag in the Address Device command. Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/usb.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/include/linux/usb.h b/include/linux/usb.h
index 2b380a16c62f..475cb75cc378 100644
--- a/include/linux/usb.h
+++ b/include/linux/usb.h
@@ -420,6 +420,7 @@ struct usb_tt;
420 * @skip_sys_resume: skip the next system resume 420 * @skip_sys_resume: skip the next system resume
421 * @wusb_dev: if this is a Wireless USB device, link to the WUSB 421 * @wusb_dev: if this is a Wireless USB device, link to the WUSB
422 * specific data for the device. 422 * specific data for the device.
423 * @slot_id: Slot ID assigned by xHCI
423 * 424 *
424 * Notes: 425 * Notes:
425 * Usbcore drivers should not set usbdev->state directly. Instead use 426 * Usbcore drivers should not set usbdev->state directly. Instead use
@@ -504,6 +505,7 @@ struct usb_device {
504 unsigned skip_sys_resume:1; 505 unsigned skip_sys_resume:1;
505#endif 506#endif
506 struct wusb_dev *wusb_dev; 507 struct wusb_dev *wusb_dev;
508 int slot_id;
507}; 509};
508#define to_usb_device(d) container_of(d, struct usb_device, dev) 510#define to_usb_device(d) container_of(d, struct usb_device, dev)
509 511