This patch doesn't apply to the .37 stable tree. If someone wants it applied there, please email the backport to [email protected]
thanks, greg k-h > commit: 0ebaa24c6b1f62839bcd12d63fa76e3cf23b9bd0 > From: Takashi Iwai <[email protected]> > Date: Tue, 11 Jan 2011 18:11:04 +0100 > Subject: [PATCH] ALSA: hda - Add static_hdmi_pcm option to HDMI codec parser > > The dynamic PCM restriction based on ELD information may lead to the > problem in some cases, e.g. when the receiver is turned off. Then it > may send a TV HDMI default such as channels = 2. Since it's still > plugged, the driver doesn't know whether it's the right configuration > for future use. Now, when an app opens the device at this moment, > then turn on the receiver, the app still sends channels=2. > > The right solution is to implement some kind of notification and > automatic re-open mechanism. But, this is a goal far ahead. > > This patch provides a workaround for such a case by providing a new > module option static_hdmi_pcm for snd-hda-codec-hdmi module. When > this is set to true, the driver doesn't change PCM parameters per > ELD information. For users who need the static configuration like > the scenario above, set this to true. > > The parameter can be changed dynamically via sysfs, too. > > Signed-off-by: Takashi Iwai <[email protected]> > Cc: <[email protected]> > --- > sound/pci/hda/patch_hdmi.c | 7 ++++++- > 1 files changed, 6 insertions(+), 1 deletions(-) > > diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c > index 27e8597..8804c05 100644 > --- a/sound/pci/hda/patch_hdmi.c > +++ b/sound/pci/hda/patch_hdmi.c > @@ -31,10 +31,15 @@ > #include <linux/init.h> > #include <linux/delay.h> > #include <linux/slab.h> > +#include <linux/moduleparam.h> > #include <sound/core.h> > #include "hda_codec.h" > #include "hda_local.h" > > +static bool static_hdmi_pcm; > +module_param(static_hdmi_pcm, bool, 0644); > +MODULE_PARM_DESC(static_hdmi_pcm, "Don't restrict PCM parameters per ELD > info"); > + > /* > * The HDMI/DisplayPort configuration can be highly dynamic. A graphics > device > * could support two independent pipes, each of them can be connected to one > or > @@ -827,7 +832,7 @@ static int hdmi_pcm_open(struct hda_pcm_stream *hinfo, > *codec_pars = *hinfo; > > eld = &spec->sink_eld[idx]; > - if (eld->eld_valid && eld->sad_count > 0) { > + if (!static_hdmi_pcm && eld->eld_valid && eld->sad_count > 0) { > hdmi_eld_update_pcm_info(eld, hinfo, codec_pars); > if (hinfo->channels_min > hinfo->channels_max || > !hinfo->rates || !hinfo->formats) > > _______________________________________________ > stable mailing list > [email protected] > http://linux.kernel.org/mailman/listinfo/stable _______________________________________________ stable mailing list [email protected] http://linux.kernel.org/mailman/listinfo/stable
