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

Reply via email to