ALSA: hda: Reset all SIE bits in INTCTL
Old code resets SIE for up to 8 streams using byte accessor, but register is laid out in following way: 31 GIE 30 CIE 29:x Reserved x-1:0 SIE If there is more than 8 streams, some of them may and up with enabled interrupts. To fix this just clear whole INTCTL register when disabling interrupts. Signed-off-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com> Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com> Link: https://lore.kernel.org/r/20220706120230.427296-8-cezary.rojewski@intel.com Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
980b3a8790
commit
856282f166
@ -474,11 +474,8 @@ static void azx_int_disable(struct hdac_bus *bus)
|
||||
list_for_each_entry(azx_dev, &bus->stream_list, list)
|
||||
snd_hdac_stream_updateb(azx_dev, SD_CTL, SD_INT_MASK, 0);
|
||||
|
||||
/* disable SIE for all streams */
|
||||
snd_hdac_chip_writeb(bus, INTCTL, 0);
|
||||
|
||||
/* disable controller CIE and GIE */
|
||||
snd_hdac_chip_updatel(bus, INTCTL, AZX_INT_CTRL_EN | AZX_INT_GLOBAL_EN, 0);
|
||||
/* disable SIE for all streams & disable controller CIE and GIE */
|
||||
snd_hdac_chip_writel(bus, INTCTL, 0);
|
||||
}
|
||||
|
||||
/* clear interrupts */
|
||||
|
Loading…
Reference in New Issue
Block a user