• J
    usb: Retry port status check on resume to work around RH bugs · 7fa40910
    Julius Werner 提交于
    The EHCI controller on the RK3288 SoC is violating basic parts of the
    USB spec and thereby unable to properly resume a suspended port. It does
    not start SOF generation within 3ms of finishing resume signaling, so
    the attached device will drop of the bus again. This is a particular
    problem with runtime PM, where accessing the device will trigger a
    resume that immediately makes it unavailable (and reenumerate with a new
    handle).
    
    Thankfully, the persist feature is generally able to work around stuff
    like that. Unfortunately, it doesn't quite work in this particular case
    because the controller will turn off the CurrentConnectStatus bit for an
    instant while the device is reconnecting, which causes the kernel to
    conclude that it permanently disappeared. This patch adds a tiny retry
    mechanism to the core port resume code which will catch this case and
    shouldn't have any notable impact on other controllers.
    Signed-off-by: NJulius Werner <jwerner@chromium.org>
    Acked-by: NAlan Stern <stern@rowland.harvard.edu>
    Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    7fa40910
hub.c 161.9 KB