• Takashi Iwai's avatar
    ALSA: hda - Loop interrupt handling until really cleared · 8e93853b
    Takashi Iwai authored
    commit 473f4145 upstream.
    
    Currently the interrupt handler of HD-audio driver assumes that no irq
    update is needed while processing the irq.  But in reality, it has
    been confirmed that the HW irq is issued even during the irq
    handling.  Since we clear the irq status at the beginning, process the
    interrupt, then exits from the handler, the lately issued interrupt is
    left untouched without being properly processed.
    
    This patch changes the interrupt handler code to loop over the
    check-and-process.  The handler tries repeatedly as long as the IRQ
    status are turned on, and either stream or CORB/RIRB is handled.
    
    For checking the stream handling, snd_hdac_bus_handle_stream_irq()
    returns a value indicating the stream indices bits.  Other than that,
    the change is only in the irq handler itself.
    Reported-by: default avatarLibin Yang <libin.yang@linux.intel.com>
    Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
    [ kamal: backport to 4.2-stable: context ]
    Signed-off-by: default avatarKamal Mostafa <kamal@canonical.com>
    8e93853b
hdaudio.h 17 KB