Anssi Hannula wrote: > Currently stream numbers are assigned in reverse order. > > Unfortunately commit 7546abfb8e1f9933b5 ("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 on v3.14. > > Change the stream numbers to be assigned in increasing order instead. > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=77002 > Reported-by: Christian Güdel <cg@xxxxxxxx> > Signed-off-by: Anssi Hannula <anssi.hannula@xxxxxx> > Tested-by: Christian Güdel <cg@xxxxxxxx> > Cc: Alex Deucher <alexander.deucher@xxxxxxx> > Cc: <stable@xxxxxxxxxxxxxxx> # 3.14 > --- > > Takashi, please check I didn't miss anything (I'm not that familiar > with this low-level HDA code). :) Alex wrote in the above bugreport now that the stream counts are: Kaveri: 4 streams, 7 endpoints Kabini: 2 streams, 3 endpoints Bonaire/Hawaii: 6 streams, 7 endpoints Trinity/Richland: 4 streams, 6 endpoints Oland: 2 streams, 2 endpoints Tahiti/Pitcairn/Verde: 6 streams, 6 endpoints So we have cards with less streams than converters, if I understood correctly. I'd think my patch is still reasonable even if we'll have to fix the stream counts anyway, the pros and cons I see are: + safer in case we/manufacturer get the stream count wrong for some card - easily hides too high stream count But your call :) > sound/pci/hda/hda_intel.c | 9 +++++---- > 1 file changed, 5 insertions(+), 4 deletions(-) > > diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c > index e354ab1ec20f..7a7b7b10dddf 100644 > --- a/sound/pci/hda/hda_intel.c > +++ b/sound/pci/hda/hda_intel.c > @@ -1856,13 +1856,14 @@ azx_assign_device(struct azx *chip, struct snd_pcm_substream *substream) > struct azx_dev *azx_dev = &chip->azx_dev[dev]; > dsp_lock(azx_dev); > if (!azx_dev->opened && !dsp_is_locked(azx_dev)) { > - res = azx_dev; > - if (res->assigned_key == key) { > - res->opened = 1; > - res->assigned_key = key; > + if (azx_dev->assigned_key == key) { > + azx_dev->opened = 1; > + azx_dev->assigned_key = key; > dsp_unlock(azx_dev); > return azx_dev; > } > + if (!res) > + res = azx_dev; > } > dsp_unlock(azx_dev); > } > -- > 1.8.4.5 -- Anssi Hannula -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html