• Sarah Sharp's avatar
    USB: Support for addressing a USB device under xHCI · c6515272
    Sarah Sharp authored
    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: default avatarSarah Sharp <sarah.a.sharp@linux.intel.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    c6515272
hub.c 104 KB