On Wed, Jan 02, 2013 at 10:17:35AM +0100, David Henningsson wrote: > From: Mengdong Lin <[email protected]> > > Haswell HDMI codec pins may report invalid connection list entries, which > will cause failure to play audio via HDMI or Display Port. > > So this patch adds fixup for Haswell to workaround this hardware issue: > enable DP1.2 mode and override the pins' connection list entries with proper > value. > > Signed-off-by: Mengdong Lin <[email protected]> > Signed-off-by: Xingchao Wang <[email protected]> > Signed-off-by: Takashi Iwai <[email protected]> > (cherry picked from commit 6ffe168f822cf7f777987cddc00ade542fd73bf0) > > BugLink: https://bugs.launchpad.net/bugs/1095242 > Signed-off-by: David Henningsson <[email protected]> > --- > > We're being advised by Intel to include the following patch for the Quantal > kernel, to fix a Haswell/Sharkbay HDMI/DP audio issue. As there are no > sharkbay machines out there yet, and the patch contains a "if > codec->vendor_id == 80862807" I assume this will cause no regressions. > > The commit is already in the 3.8 kernel, so this is just for the 3.5 SRU. > > sound/pci/hda/patch_hdmi.c | 28 ++++++++++++++++++++++++++++ > 1 file changed, 28 insertions(+) > > diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c > index dc249b2..a7e4da4 100644 > --- a/sound/pci/hda/patch_hdmi.c > +++ b/sound/pci/hda/patch_hdmi.c > @@ -1323,6 +1323,30 @@ static const struct hda_codec_ops > generic_hdmi_patch_ops = { > .unsol_event = hdmi_unsol_event, > }; > > +static void intel_haswell_fixup_connect_list(struct hda_codec *codec) > +{ > + unsigned int vendor_param; > + hda_nid_t list[3] = {0x2, 0x3, 0x4}; > + > + vendor_param = snd_hda_codec_read(codec, 0x08, 0, 0xf81, 0); > + if (vendor_param == -1 || vendor_param & 0x02) > + return; > + > + /* enable DP1.2 mode */ > + vendor_param |= 0x02; > + snd_hda_codec_read(codec, 0x08, 0, 0x781, vendor_param); > + > + vendor_param = snd_hda_codec_read(codec, 0x08, 0, 0xf81, 0); > + if (vendor_param == -1 || !(vendor_param & 0x02)) > + return; > + > + /* override 3 pins connection list */ > + snd_hda_override_conn_list(codec, 0x05, 3, list); > + snd_hda_override_conn_list(codec, 0x06, 3, list); > + snd_hda_override_conn_list(codec, 0x07, 3, list); > +} > + > + > static int patch_generic_hdmi(struct hda_codec *codec) > { > struct hdmi_spec *spec; > @@ -1332,6 +1356,10 @@ static int patch_generic_hdmi(struct hda_codec *codec) > return -ENOMEM; > > codec->spec = spec; > + > + if (codec->vendor_id == 0x80862807) > + intel_haswell_fixup_connect_list(codec); > + > if (hdmi_parse_codec(codec) < 0) { > codec->spec = NULL; > kfree(spec);
Seems to be already upstream, highly machine specific, and recommended by the manufacturer, therefore: Acked-by: Andy Whitcroft <[email protected]> -apw ** Also affects: linux (Ubuntu Quantal) Importance: Undecided Status: New ** Changed in: linux (Ubuntu Quantal) Status: New => Fix Committed ** Changed in: linux (Ubuntu) Status: Confirmed => Fix Committed -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1095242 Title: Sharkbay HDMI audio bug fix To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1095242/+subscriptions -- ubuntu-bugs mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs
