aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sound/pci/hda/hda_controller.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/sound/pci/hda/hda_controller.c b/sound/pci/hda/hda_controller.c
index 97993e17f46a..3e005e509131 100644
--- a/sound/pci/hda/hda_controller.c
+++ b/sound/pci/hda/hda_controller.c
@@ -187,13 +187,14 @@ azx_assign_device(struct azx *chip, struct snd_pcm_substream *substream)
187 struct azx_dev *azx_dev = &chip->azx_dev[dev]; 187 struct azx_dev *azx_dev = &chip->azx_dev[dev];
188 dsp_lock(azx_dev); 188 dsp_lock(azx_dev);
189 if (!azx_dev->opened && !dsp_is_locked(azx_dev)) { 189 if (!azx_dev->opened && !dsp_is_locked(azx_dev)) {
190 res = azx_dev; 190 if (azx_dev->assigned_key == key) {
191 if (res->assigned_key == key) { 191 azx_dev->opened = 1;
192 res->opened = 1; 192 azx_dev->assigned_key = key;
193 res->assigned_key = key;
194 dsp_unlock(azx_dev); 193 dsp_unlock(azx_dev);
195 return azx_dev; 194 return azx_dev;
196 } 195 }
196 if (!res)
197 res = azx_dev;
197 } 198 }
198 dsp_unlock(azx_dev); 199 dsp_unlock(azx_dev);
199 } 200 }