[alsa-devel] [PATCH 1/1] ALSA: hda - bug fix for invalid connection list of more Haswell HDMI codec pins
From: Mengdong Lin mengdong.lin@intel.com
Haswell HDMI codec may report invalid connection list entries on all three pins. But our previous patch only fixes the HDMI pin, not the DP pin, so audio playbak via DP can still fail.
This patch adds fixup for Haswell to set proper connection list entries for the other 2 pins including the DP pin.
Signed-off-by: Mengdong Lin mengdong.lin@intel.com
diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c index 42fdf14..73d298a 100644 --- a/sound/pci/hda/patch_hdmi.c +++ b/sound/pci/hda/patch_hdmi.c @@ -1710,8 +1710,14 @@ static void intel_haswell_fixup_connect_list(struct hda_codec *codec, if (vendor_param == -1 || !(vendor_param & 0x02)) return;
+ snd_hda_override_conn_list(codec, 0x05, 3, list); + hdmi_read_pin_conn(codec, 1); + snd_hda_override_conn_list(codec, 0x06, 3, list); hdmi_read_pin_conn(codec, 1); + + snd_hda_override_conn_list(codec, 0x07, 3, list); + hdmi_read_pin_conn(codec, 1); }
At Tue, 18 Dec 2012 13:21:54 -0500, mengdong.lin@intel.com wrote:
From: Mengdong Lin mengdong.lin@intel.com
Haswell HDMI codec may report invalid connection list entries on all three pins. But our previous patch only fixes the HDMI pin, not the DP pin, so audio playbak via DP can still fail.
This patch adds fixup for Haswell to set proper connection list entries for the other 2 pins including the DP pin.
Signed-off-by: Mengdong Lin mengdong.lin@intel.com
Mengdong, your previous patch was currently dropped because it's not clear whether it's correct. As asked in the previous thread, the usage of fixup is doubtful in this case.
Is the fix really needed only for a certain PCI (or codec) *SSID*? If you need to apply it generically to a certain codec, you have to choose another way.
diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c index 42fdf14..73d298a 100644 --- a/sound/pci/hda/patch_hdmi.c +++ b/sound/pci/hda/patch_hdmi.c @@ -1710,8 +1710,14 @@ static void intel_haswell_fixup_connect_list(struct hda_codec *codec, if (vendor_param == -1 || !(vendor_param & 0x02)) return;
- snd_hda_override_conn_list(codec, 0x05, 3, list);
- hdmi_read_pin_conn(codec, 1);
- snd_hda_override_conn_list(codec, 0x06, 3, list); hdmi_read_pin_conn(codec, 1);
- snd_hda_override_conn_list(codec, 0x07, 3, list);
- hdmi_read_pin_conn(codec, 1);
What's the reason to call hdmi_read_pin_conn() multiple times?
Takashi
-----Original Message----- From: Takashi Iwai [mailto:tiwai@suse.de] Sent: Tuesday, December 18, 2012 3:08 PM
Mengdong, your previous patch was currently dropped because it's not clear whether it's correct. As asked in the previous thread, the usage of fixup is doubtful in this case.
Is the fix really needed only for a certain PCI (or codec) *SSID*? If you need to apply it generically to a certain codec, you have to choose another way.
Hi Takashi,
Will OEM change the PCI (or codec) SSID so that this fixup will not be applied at all?
In Haswell, there are two HD-A controllers: one for display codec and the other for legacy 3rd-party codec. I'm not sure if OEM will change the PCI SSID of the display HD-A controller.
- snd_hda_override_conn_list(codec, 0x05, 3, list);
- hdmi_read_pin_conn(codec, 1);
- snd_hda_override_conn_list(codec, 0x06, 3, list); hdmi_read_pin_conn(codec, 1);
- snd_hda_override_conn_list(codec, 0x07, 3, list);
- hdmi_read_pin_conn(codec, 1);
What's the reason to call hdmi_read_pin_conn() multiple times?
Sorry, it's not necessary here.
Thanks Mengdong
At Tue, 18 Dec 2012 07:36:59 +0000, Lin, Mengdong wrote:
-----Original Message----- From: Takashi Iwai [mailto:tiwai@suse.de] Sent: Tuesday, December 18, 2012 3:08 PM
Mengdong, your previous patch was currently dropped because it's not clear whether it's correct. As asked in the previous thread, the usage of fixup is doubtful in this case.
Is the fix really needed only for a certain PCI (or codec) *SSID*? If you need to apply it generically to a certain codec, you have to choose another way.
Hi Takashi,
Will OEM change the PCI (or codec) SSID so that this fixup will not be applied at all?
In Haswell, there are two HD-A controllers: one for display codec and the other for legacy 3rd-party codec. I'm not sure if OEM will change the PCI SSID of the display HD-A controller.
Of course, they'll change SSIDs.
Takashi
-----Original Message----- From: Takashi Iwai [mailto:tiwai@suse.de] Sent: Tuesday, December 18, 2012 3:46 PM
Will OEM change the PCI (or codec) SSID so that this fixup will not be
applied at all?
In Haswell, there are two HD-A controllers: one for display codec and the
other for legacy 3rd-party codec.
I'm not sure if OEM will change the PCI SSID of the display HD-A controller.
Of course, they'll change SSIDs.
Thanks for your info, Takashi! You're right. PCI spec allow these registers in configuration space to be changed.
So snd_hda_pick_fixup/snd_hda_apply_fixup is designed for fixing board or BIOS-specific issues, right?
I'll update the patch as you suggested.
Thanks Mengdong
At Tue, 18 Dec 2012 08:09:12 +0000, Lin, Mengdong wrote:
-----Original Message----- From: Takashi Iwai [mailto:tiwai@suse.de] Sent: Tuesday, December 18, 2012 3:46 PM
Will OEM change the PCI (or codec) SSID so that this fixup will not be
applied at all?
In Haswell, there are two HD-A controllers: one for display codec and the
other for legacy 3rd-party codec.
I'm not sure if OEM will change the PCI SSID of the display HD-A controller.
Of course, they'll change SSIDs.
Thanks for your info, Takashi! You're right. PCI spec allow these registers in configuration space to be changed.
So snd_hda_pick_fixup/snd_hda_apply_fixup is designed for fixing board or BIOS-specific issues, right?
Yes.
I'll update the patch as you suggested.
OK, thanks!
Takashi
participants (3)
-
Lin, Mengdong
-
mengdong.lin@intel.com
-
Takashi Iwai