diff options
author | Sarah Sharp <sarah.a.sharp@linux.intel.com> | 2009-04-27 22:57:26 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2009-06-16 00:44:49 -0400 |
commit | c6515272b858742962c1de0f3bf497a048b9abd7 (patch) | |
tree | 5172d9b646fa5e364b5b35004f10628aed934a71 /include/linux/usb.h | |
parent | 0f2a79300a1471cf92ab43af165ea13555c8b0a5 (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/usb.h')
-rw-r--r-- | include/linux/usb.h | 2 |
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 | ||