Commit dcb32ecd authored by Anssi Hannula's avatar Anssi Hannula Committed by Takashi Iwai

ALSA: hda - Do not assign streams in reverse order

Currently stream numbers are assigned in reverse order.

Unfortunately commit 7546abfb ("ALSA: hda - Increment
default stream numbers for AMD HDMI controllers") assumed this was not
the case (specifically, it had the "old cards had single device only"
=> "extra unused stream numbers do not matter" assumption), causing
non-working audio regressions for AMD Radeon HDMI users.

Change the stream numbers to be assigned in forward order.

The benefit is that regular audio playback will still work even if the
assumed stream count is too high, downside is that a too high stream
count may remain hidden.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=77002Reported-by: default avatarChristian Güdel <cg@dmesg.ch>
Signed-off-by: default avatarAnssi Hannula <anssi.hannula@iki.fi>
Tested-by: Christian Güdel <cg@dmesg.ch> # 3.14
Cc: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 0435b3ff
...@@ -187,13 +187,14 @@ azx_assign_device(struct azx *chip, struct snd_pcm_substream *substream) ...@@ -187,13 +187,14 @@ azx_assign_device(struct azx *chip, struct snd_pcm_substream *substream)
struct azx_dev *azx_dev = &chip->azx_dev[dev]; struct azx_dev *azx_dev = &chip->azx_dev[dev];
dsp_lock(azx_dev); dsp_lock(azx_dev);
if (!azx_dev->opened && !dsp_is_locked(azx_dev)) { if (!azx_dev->opened && !dsp_is_locked(azx_dev)) {
res = azx_dev; if (azx_dev->assigned_key == key) {
if (res->assigned_key == key) { azx_dev->opened = 1;
res->opened = 1; azx_dev->assigned_key = key;
res->assigned_key = key;
dsp_unlock(azx_dev); dsp_unlock(azx_dev);
return azx_dev; return azx_dev;
} }
if (!res)
res = azx_dev;
} }
dsp_unlock(azx_dev); dsp_unlock(azx_dev);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment