diff options
-rw-r--r-- | sound/pci/hda/hda_controller.c | 9 |
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 | } |