• Takashi Iwai's avatar
    ALSA: x86: Handle reset at prepare callback · e2acecf2
    Takashi Iwai authored
    Currently the driver handles some reset procedure at the trigger STOP
    and the underrun functions, where both are executed in the interrupt
    context.  Especially the underrun function has a sync-loop to clear
    the UNDERRUN status bit, and this is supposed to be one of plausible
    causes of GPU hangup.
    
    Since the job to be done in the interrupt handler should be minimum,
    we move the reset function out of trigger and underrun, and push it
    into the prepare (and hw_free) callbacks instead.  Here a new flag,
    need_reset, is introduced to indicate the requirement of the reset
    procedure.  This is for avoiding the multiple resets when PCM prepare
    is called sequentially.
    
    Also in the UNDERRUN bit-clear sync loop, take a longer pause to be in
    the safer side.  Taking a longer delay is no longer a problem now
    because we're running in the normal context.
    Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
    e2acecf2
intel_hdmi_audio.c 50.2 KB