• Takashi Iwai's avatar
    ALSA: hda: Always use jackpoll helper for jack update after resume · 8d6762af
    Takashi Iwai authored
    HD-audio codec driver applies a tricky procedure to forcibly perform
    the runtime resume by mimicking the usage count even if the device has
    been runtime-suspended beforehand.  This was needed to assure to
    trigger the jack detection update after the system resume.
    
    And recently we also applied the similar logic to the HD-audio
    controller side.  However this seems leading to some inconsistency,
    and eventually PCI controller gets screwed up.
    
    This patch is an attempt to fix and clean up those behavior: instead
    of the tricky runtime resume procedure, the existing jackpoll work is
    scheduled when such a forced codec resume is required.  The jackpoll
    work will power up the codec, and this alone should suffice for the
    jack status update in usual cases.  If the extra polling is requested
    (by checking codec->jackpoll_interval), the manual update is invoked
    after that, and the codec is powered down again.
    
    Also, we filter the spurious wake up of the codec from the controller
    runtime resume by checking codec->relaxed_resume flag.  If this flag
    is set, basically we don't need to wake up explicitly, but it's
    supposed to be done via the audio component notifier.
    
    Fixes: c4c8dd6e ("ALSA: hda: Skip controller resume if not needed")
    Link: https://lore.kernel.org/r/20200422203744.26299-1-tiwai@suse.deSigned-off-by: default avatarTakashi Iwai <tiwai@suse.de>
    8d6762af
hda_codec.c 108 KB