• Kai-Heng Feng's avatar
    USB: Consolidate LPM checks to avoid enabling LPM twice · d7a6c0ce
    Kai-Heng Feng authored
    USB Bluetooth controller QCA ROME (0cf3:e007) sometimes stops working
    after S3:
    [ 165.110742] Bluetooth: hci0: using NVM file: qca/nvm_usb_00000302.bin
    [ 168.432065] Bluetooth: hci0: Failed to send body at 4 of 1953 (-110)
    
    After some experiments, I found that disabling LPM can workaround the
    issue.
    
    On some platforms, the USB power is cut during S3, so the driver uses
    reset-resume to resume the device. During port resume, LPM gets enabled
    twice, by usb_reset_and_verify_device() and usb_port_resume().
    
    Consolidate all checks into new LPM helpers to make sure LPM only gets
    enabled once.
    
    Fixes: de68bab4 ("usb: Don't enable USB 2.0 Link PM by default.”)
    Signed-off-by: default avatarKai-Heng Feng <kai.heng.feng@canonical.com>
    Cc: stable <stable@vger.kernel.org> # after much soaking
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    d7a6c0ce
message.c 67.1 KB