This is a note to let you know that I've just added the patch titled
ALSA: hda - Do not wrongly restrict min_channels based on ELD
to the 2.6.36-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
alsa-hda-do-not-wrongly-restrict-min_channels-based-on-eld.patch
and it can be found in the queue-2.6.36 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <[email protected]> know about it.
>From 4b0dbdb17f846a8887e5f7fbeea2deb0703236bd Mon Sep 17 00:00:00 2001
From: Anssi Hannula <[email protected]>
Date: Tue, 7 Dec 2010 18:41:35 +0200
Subject: ALSA: hda - Do not wrongly restrict min_channels based on ELD
From: Anssi Hannula <[email protected]>
commit 4b0dbdb17f846a8887e5f7fbeea2deb0703236bd upstream.
Commit bbbe33900d1f3c added functionality to restrict PCM parameters
based on ELD info (derived from EDID data) of the audio sink.
However, it wrongly assumes that the bits 0-2 of the first byte of
CEA Short Audio Descriptors mean a supported number of channels. In
reality, they mean the maximum number of channels (as per CEA-861-D
7.5.2). This means that the channel count can only be used to restrict
max_channels, not min_channels.
Restricting min_channels causes us to deny opening the device in stereo
mode if the sink only has SADs that declare larger numbers of channels
(like Primare SP32 AV Processor does).
Fix that by not restricting min_channels based on ELD information.
Signed-off-by: Anssi Hannula <[email protected]>
Reported-by: Jean-Yves Avenard <[email protected]>
Tested-by: Jean-Yves Avenard <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
sound/pci/hda/hda_eld.c | 4 ----
sound/pci/hda/patch_hdmi.c | 1 -
2 files changed, 5 deletions(-)
--- a/sound/pci/hda/hda_eld.c
+++ b/sound/pci/hda/hda_eld.c
@@ -607,13 +607,10 @@ void hdmi_eld_update_pcm_info(struct hdm
pcm->rates = 0;
pcm->formats = 0;
pcm->maxbps = 0;
- pcm->channels_min = -1;
pcm->channels_max = 0;
for (i = 0; i < eld->sad_count; i++) {
struct cea_sad *a = &eld->sad[i];
pcm->rates |= a->rates;
- if (a->channels < pcm->channels_min)
- pcm->channels_min = a->channels;
if (a->channels > pcm->channels_max)
pcm->channels_max = a->channels;
if (a->format == AUDIO_CODING_TYPE_LPCM) {
@@ -641,7 +638,6 @@ void hdmi_eld_update_pcm_info(struct hdm
/* restrict the parameters by the values the codec provides */
pcm->rates &= codec_pars->rates;
pcm->formats &= codec_pars->formats;
- pcm->channels_min = max(pcm->channels_min, codec_pars->channels_min);
pcm->channels_max = min(pcm->channels_max, codec_pars->channels_max);
pcm->maxbps = min(pcm->maxbps, codec_pars->maxbps);
}
--- a/sound/pci/hda/patch_hdmi.c
+++ b/sound/pci/hda/patch_hdmi.c
@@ -779,7 +779,6 @@ static int hdmi_pcm_open(struct hda_pcm_
return -ENODEV;
} else {
/* fallback to the codec default */
- hinfo->channels_min = codec_pars->channels_min;
hinfo->channels_max = codec_pars->channels_max;
hinfo->rates = codec_pars->rates;
hinfo->formats = codec_pars->formats;
Patches currently in stable-queue which might be from [email protected] are
queue-2.6.36/alsa-hda-do-not-wrongly-restrict-min_channels-based-on-eld.patch
queue-2.6.36/alsa-hda-always-allow-basic-audio-irrespective-of-eld-info.patch
_______________________________________________
stable mailing list
[email protected]
http://linux.kernel.org/mailman/listinfo/stable