• Sarah Sharp's avatar
    USB: xhci: Support USB hubs. · ac1c1b7f
    Sarah Sharp authored
    For a USB hub to work under an xHCI host controller, the xHC's internal
    scheduler must be made aware of the hub's characteristics.  Add an xHCI
    hook that the USB core will call after it fetches the hub descriptor.
    This hook will add hub information to the slot context for that device,
    including whether it has multiple TTs or a single TT, the number of ports
    on the hub, and TT think time.
    
    Setting up the slot context for the device is different for 0.95 and 0.96
    xHCI host controllers.
    
    Some of the slot context reserved fields in the 0.95 specification were
    changed into hub fields in the 0.96 specification.  Don't set the TT think
    time or number of ports for a hub if we're dealing with a 0.95-compliant
    xHCI host controller.
    
    The 0.95 xHCI specification says that to modify the hub flag, we need to
    issue an evaluate context command.  The 0.96 specification says that flag
    can be set with a configure endpoint command.  Issue the correct command
    based on the version reported by the hardware.
    
    This patch does not add support for multi-TT hubs.  Multi-TT hubs expose
    a single TT on alt setting 0, and multi-TT on alt setting 1.  The xHCI
    driver can't handle setting alternate interfaces yet.
    Signed-off-by: default avatarSarah Sharp <sarah.a.sharp@linux.intel.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    ac1c1b7f
xhci.h 43.8 KB