aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristos Margiolis <christos@FreeBSD.org>2025-03-25 19:13:49 +0000
committerChristos Margiolis <christos@FreeBSD.org>2025-04-01 13:20:05 +0000
commite431b38b0f77a6deff9f6f214fe520b689c38bd2 (patch)
treea5a826c8c99ef25523a2dcbb743e7ea08f40a892
parente683e7e0f887216b52dfd64db226f0a6d3ce853a (diff)
snd_hda: Patch Framework 16 AMD
Reported by: jrm Tested by: jrm Sponsored by: The FreeBSD Foundation MFC after: 1 week Reviewed by: jrm Differential Revision: https://reviews.freebsd.org/D49416 (cherry picked from commit 2f1f523a45fb7f9fddd36a3402edbf7b111996c3)
-rw-r--r--sys/dev/sound/pci/hda/hdaa_patches.c14
-rw-r--r--sys/dev/sound/pci/hda/hdac.h1
2 files changed, 15 insertions, 0 deletions
diff --git a/sys/dev/sound/pci/hda/hdaa_patches.c b/sys/dev/sound/pci/hda/hdaa_patches.c
index 8ad1c845c254..233ba1ae8d13 100644
--- a/sys/dev/sound/pci/hda/hdaa_patches.c
+++ b/sys/dev/sound/pci/hda/hdaa_patches.c
@@ -341,6 +341,20 @@ hdac_pin_patch(struct hdaa_widget *w)
break;
}
} else if (id == HDA_CODEC_ALC295 &&
+ subid == FRAMEWORK_LAPTOP_0005_SUBVENDOR) {
+ switch (nid) {
+ case 20:
+ /*
+ * This pin is a duplicate of pin 23 (both as=1 seq=0),
+ * which ends up in the driver disabling the
+ * association altogether. Since sound quality from pin
+ * 23 seems to be better, configure this one as a back
+ * speaker.
+ */
+ patch_str = "as=1 seq=2";
+ break;
+ }
+ } else if (id == HDA_CODEC_ALC295 &&
subid == FRAMEWORK_LAPTOP_0006_SUBVENDOR) {
switch (nid) {
case 33:
diff --git a/sys/dev/sound/pci/hda/hdac.h b/sys/dev/sound/pci/hda/hdac.h
index 9b11dcba32a8..cb383d3be498 100644
--- a/sys/dev/sound/pci/hda/hdac.h
+++ b/sys/dev/sound/pci/hda/hdac.h
@@ -530,6 +530,7 @@
#define FRAMEWORK_LAPTOP_0001_SUBVENDOR HDA_MODEL_CONSTRUCT(FRAMEWORK, 0x0001)
#define FRAMEWORK_LAPTOP_0002_SUBVENDOR HDA_MODEL_CONSTRUCT(FRAMEWORK, 0x0002)
#define FRAMEWORK_LAPTOP_0003_SUBVENDOR HDA_MODEL_CONSTRUCT(FRAMEWORK, 0x0003)
+#define FRAMEWORK_LAPTOP_0005_SUBVENDOR HDA_MODEL_CONSTRUCT(FRAMEWORK, 0x0005)
#define FRAMEWORK_LAPTOP_0006_SUBVENDOR HDA_MODEL_CONSTRUCT(FRAMEWORK, 0x0006)
/* All codecs you can eat... */