Add missing patch
This commit is contained in:
parent
3c560c6bd0
commit
4b1925a90e
1 changed files with 60 additions and 0 deletions
60
0007-ALSA-hda-Fix-regression-by-strip-mask-fix.patch
Normal file
60
0007-ALSA-hda-Fix-regression-by-strip-mask-fix.patch
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
From 04fe3cc1f00622bf3ff356dca7f122768a14bdbc Mon Sep 17 00:00:00 2001
|
||||
From: Takashi Iwai <tiwai@suse.de>
|
||||
Date: Sat, 14 Dec 2019 18:52:17 +0100
|
||||
Subject: [PATCH 7/9] ALSA: hda: Fix regression by strip mask fix
|
||||
|
||||
The commit e38e486d66e2 ("ALSA: hda: Modify stream stripe mask only
|
||||
when needed") tried to address the regression by the unconditional
|
||||
application of the stripe mask, but this caused yet another
|
||||
regression for the previously working devices. Namely, the patch
|
||||
clears the azx_dev->stripe flag at snd_hdac_stream_clear(), but this
|
||||
may be called multiple times before restarting the stream, so this
|
||||
ended up with clearance of the flag for the whole time.
|
||||
|
||||
This patch fixes the regression by moving the azx_dev->stripe flag
|
||||
clearance at the counter-part, the close callback of HDMI codec
|
||||
driver instead.
|
||||
|
||||
Fixes: e38e486d66e2 ("ALSA: hda: Modify stream stripe mask only when needed")
|
||||
BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=205855
|
||||
BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=204477
|
||||
Cc: <stable@vger.kernel.org>
|
||||
Link: https://lore.kernel.org/r/20191214175217.31852-1-tiwai@suse.de
|
||||
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
||||
---
|
||||
sound/hda/hdac_stream.c | 4 +---
|
||||
sound/pci/hda/patch_hdmi.c | 2 ++
|
||||
2 files changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/sound/hda/hdac_stream.c b/sound/hda/hdac_stream.c
|
||||
index f9707fb05efe..682ed39f79b0 100644
|
||||
--- a/sound/hda/hdac_stream.c
|
||||
+++ b/sound/hda/hdac_stream.c
|
||||
@@ -120,10 +120,8 @@ void snd_hdac_stream_clear(struct hdac_stream *azx_dev)
|
||||
snd_hdac_stream_updateb(azx_dev, SD_CTL,
|
||||
SD_CTL_DMA_START | SD_INT_MASK, 0);
|
||||
snd_hdac_stream_writeb(azx_dev, SD_STS, SD_INT_MASK); /* to be sure */
|
||||
- if (azx_dev->stripe) {
|
||||
+ if (azx_dev->stripe)
|
||||
snd_hdac_stream_updateb(azx_dev, SD_CTL_3B, SD_CTL_STRIPE_MASK, 0);
|
||||
- azx_dev->stripe = 0;
|
||||
- }
|
||||
azx_dev->running = false;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(snd_hdac_stream_clear);
|
||||
diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c
|
||||
index 4dafc864d765..488c17c9f375 100644
|
||||
--- a/sound/pci/hda/patch_hdmi.c
|
||||
+++ b/sound/pci/hda/patch_hdmi.c
|
||||
@@ -1983,6 +1983,8 @@ static int hdmi_pcm_close(struct hda_pcm_stream *hinfo,
|
||||
per_cvt->assigned = 0;
|
||||
hinfo->nid = 0;
|
||||
|
||||
+ azx_stream(get_azx_dev(substream))->stripe = 0;
|
||||
+
|
||||
mutex_lock(&spec->pcm_lock);
|
||||
snd_hda_spdif_ctls_unassign(codec, pcm_idx);
|
||||
clear_bit(pcm_idx, &spec->pcm_in_use);
|
||||
--
|
||||
2.24.1
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue