• Sarah Sharp's avatar
    USB: xhci: Deal with stalled endpoints. · a1587d97
    Sarah Sharp authored
    When an endpoint on a device under an xHCI host controller stalls, the
    host controller driver must let the hardware know that the USB core has
    successfully cleared the halt condition.  The HCD submits a Reset Endpoint
    Command, which will clear the toggle bit for USB 2.0 devices, and set the
    sequence number to zero for USB 3.0 devices.
    
    The xHCI urb_enqueue will accept new URBs while the endpoint is halted,
    and will queue them to the hardware rings.  However, the endpoint doorbell
    will not be rung until the Reset Endpoint Command completes.
    
    Don't queue a reset endpoint command for root hubs.  khubd clears halt
    conditions on the roothub during the initialization process, but the roothub
    isn't a real device, so the xHCI host controller doesn't need to know about the
    cleared halt.
    Signed-off-by: default avatarSarah Sharp <sarah.a.sharp@linux.intel.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    a1587d97
xhci-hcd.c 41 KB