]> git.baikalelectronics.ru Git - kernel.git/commit
ALSA: hda - Loop interrupt handling until really cleared
authorTakashi Iwai <tiwai@suse.de>
Tue, 23 Feb 2016 14:54:47 +0000 (15:54 +0100)
committerTakashi Iwai <tiwai@suse.de>
Fri, 26 Feb 2016 07:50:31 +0000 (08:50 +0100)
commit49cc561c8f9c789818c0be226d193b3df8b990b3
treee8ea3e59cf2988fd2b3f95d4a926c1d0bd007de7
parentf6e9db1a92aada35d0f5fb6fc8dce25340cd2c3a
ALSA: hda - Loop interrupt handling until really cleared

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: Libin Yang <libin.yang@linux.intel.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
include/sound/hdaudio.h
sound/hda/hdac_controller.c
sound/pci/hda/hda_controller.c