From: Amadeusz Sławiński Date: Wed, 6 Jul 2022 12:02:28 +0000 (+0200) Subject: ALSA: hda: Reset all SIE bits in INTCTL X-Git-Tag: v6.0-rc1~93^2~9^2~52 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=856282f166d7b95004e70859ca87cf33eb7f9a6d;p=thirdparty%2Fkernel%2Flinux.git 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 Signed-off-by: Cezary Rojewski Link: https://lore.kernel.org/r/20220706120230.427296-8-cezary.rojewski@intel.com Signed-off-by: Takashi Iwai --- diff --git a/sound/hda/hdac_controller.c b/sound/hda/hdac_controller.c index f7bd6e2db085b..9a60bfdb39bac 100644 --- a/sound/hda/hdac_controller.c +++ b/sound/hda/hdac_controller.c @@ -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 */