git: 4027e17c1795 - stable/14 - snd_hda: Patch Lenovo T420s

From: Christos Margiolis <christos_at_FreeBSD.org>
Date: Fri, 13 Jun 2025 12:30:40 UTC
The branch stable/14 has been updated by christos:

URL: https://cgit.FreeBSD.org/src/commit/?id=4027e17c179573c428143d3c3cb2aeef3f446b42

commit 4027e17c179573c428143d3c3cb2aeef3f446b42
Author:     Christos Margiolis <christos@FreeBSD.org>
AuthorDate: 2025-06-11 17:28:40 +0000
Commit:     Christos Margiolis <christos@FreeBSD.org>
CommitDate: 2025-06-13 12:30:22 +0000

    snd_hda: Patch Lenovo T420s
    
    PR:             222636
    Tested by:      vermaden@interia.pl
    Sponsored by:   The FreeBSD Foundation
    MFC after:      1 day
    
    (cherry picked from commit 84e73074412719ec83143fb514625c09d27f468c)
---
 sys/dev/sound/pci/hda/hdaa_patches.c | 16 ++++++++++++++++
 sys/dev/sound/pci/hda/hdac.h         |  1 +
 2 files changed, 17 insertions(+)

diff --git a/sys/dev/sound/pci/hda/hdaa_patches.c b/sys/dev/sound/pci/hda/hdaa_patches.c
index 233ba1ae8d13..ae609e60eea2 100644
--- a/sys/dev/sound/pci/hda/hdaa_patches.c
+++ b/sys/dev/sound/pci/hda/hdaa_patches.c
@@ -300,6 +300,22 @@ hdac_pin_patch(struct hdaa_widget *w)
 			patch_str = "as=2";
 			break;
 		}
+	} else if (id == HDA_CODEC_CX20590 &&
+	    subid == LENOVO_T420S_SUBVENDOR) {
+		switch (nid) {
+		case 25:
+			patch_str = "as=1 seq=15";
+			break;
+		case 27:
+			patch_str = "as=2 seq=15";
+			break;
+		case 31:
+			patch_str = "as=1 seq=0";
+			break;
+		case 35:
+			patch_str = "as=2 seq=0";
+			break;
+		}
 	} else if (id == HDA_CODEC_ALC235 && subid == ASUS_GL553VE_SUBVENDOR) {
 		switch (nid) {
 		case 33:
diff --git a/sys/dev/sound/pci/hda/hdac.h b/sys/dev/sound/pci/hda/hdac.h
index cb383d3be498..e19508ea3535 100644
--- a/sys/dev/sound/pci/hda/hdac.h
+++ b/sys/dev/sound/pci/hda/hdac.h
@@ -373,6 +373,7 @@
 #define LENOVO_X300_SUBVENDOR	HDA_MODEL_CONSTRUCT(LENOVO, 0x20ac)
 #define	LENOVO_T400_SUBVENDOR	HDA_MODEL_CONSTRUCT(LENOVO, 0x20f2)
 #define	LENOVO_T420_SUBVENDOR	HDA_MODEL_CONSTRUCT(LENOVO, 0x21ce)
+#define	LENOVO_T420S_SUBVENDOR	HDA_MODEL_CONSTRUCT(LENOVO, 0x21d2)
 #define	LENOVO_T430_SUBVENDOR	HDA_MODEL_CONSTRUCT(LENOVO, 0x21f3)
 #define	LENOVO_T430S_SUBVENDOR	HDA_MODEL_CONSTRUCT(LENOVO, 0x21fb)
 #define	LENOVO_T520_SUBVENDOR	HDA_MODEL_CONSTRUCT(LENOVO, 0x21cf)