• Kai-Heng Feng's avatar
    ALSA: usb-audio: Disable USB autosuspend properly in setup_disable_autosuspend() · 97991108
    Kai-Heng Feng authored
    Rear audio on Lenovo ThinkStation P620 stops working after commit
    1965c436 ("ALSA: usb-audio: Disable autosuspend for Lenovo
    ThinkStation P620"):
    [    6.013526] usbcore: registered new interface driver snd-usb-audio
    [    6.023064] usb 3-6: cannot get ctl value: req = 0x81, wValue = 0x100, wIndex = 0x0, type = 1
    [    6.023083] usb 3-6: cannot get ctl value: req = 0x81, wValue = 0x202, wIndex = 0x0, type = 4
    [    6.023090] usb 3-6: cannot get ctl value: req = 0x81, wValue = 0x100, wIndex = 0x0, type = 1
    [    6.023098] usb 3-6: cannot get ctl value: req = 0x81, wValue = 0x202, wIndex = 0x0, type = 4
    [    6.023103] usb 3-6: cannot get ctl value: req = 0x81, wValue = 0x100, wIndex = 0x0, type = 1
    [    6.023110] usb 3-6: cannot get ctl value: req = 0x81, wValue = 0x202, wIndex = 0x0, type = 4
    [    6.045846] usb 3-6: cannot get ctl value: req = 0x81, wValue = 0x100, wIndex = 0x0, type = 1
    [    6.045866] usb 3-6: cannot get ctl value: req = 0x81, wValue = 0x202, wIndex = 0x0, type = 4
    [    6.045877] usb 3-6: cannot get ctl value: req = 0x81, wValue = 0x100, wIndex = 0x0, type = 1
    [    6.045886] usb 3-6: cannot get ctl value: req = 0x81, wValue = 0x202, wIndex = 0x0, type = 4
    [    6.045894] usb 3-6: cannot get ctl value: req = 0x81, wValue = 0x100, wIndex = 0x0, type = 1
    [    6.045908] usb 3-6: cannot get ctl value: req = 0x81, wValue = 0x202, wIndex = 0x0, type = 4
    
    I overlooked the issue because when I was working on the said commit,
    only the front audio is tested. Apology for that.
    
    Changing supports_autosuspend in driver is too late for disabling
    autosuspend, because it was already used by USB probe routine, so it can
    break the balance on the following code that depends on
    supports_autosuspend.
    
    Fix it by using usb_disable_autosuspend() helper, and balance the
    suspend count in disconnect callback.
    
    Fixes: 1965c436 ("ALSA: usb-audio: Disable autosuspend for Lenovo ThinkStation P620")
    Signed-off-by: default avatarKai-Heng Feng <kai.heng.feng@canonical.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20210304043419.287191-1-kai.heng.feng@canonical.comSigned-off-by: default avatarTakashi Iwai <tiwai@suse.de>
    97991108
card.c 30.1 KB