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 <[email protected]>
> Signed-off-by: Anssi Hannula <[email protected]>
> Tested-by: Christian Güdel <[email protected]>
> Cc: Alex Deucher <[email protected]>
> Cc: <[email protected]> # 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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html