lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20240802-hdmi-audio-hp-wrongpins-v1-1-8d8ba10d77f8@chromium.org>
Date: Fri, 02 Aug 2024 23:50:11 +0000
From: Steven 'Steve' Kendall <skend@...omium.org>
To: Jaroslav Kysela <perex@...ex.cz>, Takashi Iwai <tiwai@...e.com>
Cc: linux-sound@...r.kernel.org, linux-kernel@...r.kernel.org, 
 Steven 'Steve' Kendall <skend@...omium.org>
Subject: [PATCH] ALSA: hda: Manally set pins to correct HP firmware
 settings

In recent HP UEFI firmware (likely v2.15 and above, tested on 2.27),
these pins are incorrectly set for HDMI/DP audio. Tested on
HP MP9 G4 Retail System AMS. Pins for the ports set to escalating values
(0x70, 80, 90) to have differing default associations, though in my
testing setting all pins to 0x70 also worked as suggested by the first
link below. Tested audio with two monitors connected via DisplayPort.

Link: https://forum.manjaro.org/t/intel-cannon-lake-pch-cavs-conexant-cx20632-no-sound-at-hdmi-or-displayport/133494
Link: https://bbs.archlinux.org/viewtopic.php?id=270523
Signed-off-by: Steven 'Steve' Kendall <skend@...omium.org>
---
 sound/pci/hda/patch_hdmi.c | 21 ++++++++++++++++++++-
 1 file changed, 20 insertions(+), 1 deletion(-)

diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c
index 707d203ba652..dfcbd41097f8 100644
--- a/sound/pci/hda/patch_hdmi.c
+++ b/sound/pci/hda/patch_hdmi.c
@@ -3115,6 +3115,25 @@ static int patch_i915_hsw_hdmi(struct hda_codec *codec)
 				     enable_silent_stream);
 }
 
+static const struct snd_pci_quirk kaby_hdmi_list[] = {
+	SND_PCI_QUIRK(0x103c, 0x83ef, "HP MP9 G4 Retail System AMS", 1),
+	{}
+};
+
+static int patch_i915_kaby_hdmi(struct hda_codec *codec)
+{
+	const struct snd_pci_quirk *q;
+
+	q = snd_pci_quirk_lookup(codec->bus->pci, kaby_hdmi_list);
+	if (q && q->value) {
+		/* Recent HP firmware assigns incorrect pins, corrected here */
+		snd_hda_codec_set_pincfg(codec, 0x05, 0x18560070);
+		snd_hda_codec_set_pincfg(codec, 0x06, 0x18560080);
+		snd_hda_codec_set_pincfg(codec, 0x07, 0x18560090);
+	}
+	return patch_i915_hsw_hdmi(codec);
+}
+
 static int patch_i915_glk_hdmi(struct hda_codec *codec)
 {
 	/*
@@ -4620,7 +4639,7 @@ HDA_CODEC_ENTRY(0x80862807, "Haswell HDMI",	patch_i915_hsw_hdmi),
 HDA_CODEC_ENTRY(0x80862808, "Broadwell HDMI",	patch_i915_hsw_hdmi),
 HDA_CODEC_ENTRY(0x80862809, "Skylake HDMI",	patch_i915_hsw_hdmi),
 HDA_CODEC_ENTRY(0x8086280a, "Broxton HDMI",	patch_i915_hsw_hdmi),
-HDA_CODEC_ENTRY(0x8086280b, "Kabylake HDMI",	patch_i915_hsw_hdmi),
+HDA_CODEC_ENTRY(0x8086280b, "Kabylake HDMI",	patch_i915_kaby_hdmi),
 HDA_CODEC_ENTRY(0x8086280c, "Cannonlake HDMI",	patch_i915_glk_hdmi),
 HDA_CODEC_ENTRY(0x8086280d, "Geminilake HDMI",	patch_i915_glk_hdmi),
 HDA_CODEC_ENTRY(0x8086280f, "Icelake HDMI",	patch_i915_icl_hdmi),

---
base-commit: 8400291e289ee6b2bf9779ff1c83a291501f017b
change-id: 20240802-hdmi-audio-hp-wrongpins-f88606f8d3ab

Best regards,
-- 
Steven 'Steve' Kendall <skend@...omium.org>


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ