• Geoff Levand's avatar
    usb: Fix PS3 EHCI suspend · df7c1ca2
    Geoff Levand authored
    The EHCI USB controller of the Cell Super Companion Chip used in the PS3
    will stop the root hub after all root hub ports are suspended.  When in
    this condition the ehci-hcd handshake routine will return -ETIMEDOUT and
    the USB runtime suspend sequence will fail.  The STS_HLT bit will not be
    set, so inspection of the frame index is used to test for the condition.
    
    Add a new routine handshake_for_broken_root_hub() that is called after
    an unsuccessful -ETIMEDOUT handshake.  On PS3 handshake_for_broken_root_hub()
    will test for the condition, and if found will return success to allow the
    USB suspend to complete.  For all other platforms
    handshake_for_broken_root_hub() will return -ETIMEDOUT
    Signed-off-by: default avatarGeoff Levand <geoff@infradead.org>
    Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
    df7c1ca2
ehci-hcd.c 39.7 KB