aboutsummaryrefslogtreecommitdiff
path: root/SOURCES/loki-mini-pro-hda-pin-fixes.patch
blob: 3a9e2e4e02a71faf658ab9fabb093c0af89aaa17 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
From ac9f4bc9951e89d92bf01b1744de7847d0b0bf78 Mon Sep 17 00:00:00 2001
From: CVMagic <546352+CVMagic@users.noreply.github.com>
Date: Mon, 29 Jul 2024 21:34:45 -0400
Subject: [PATCH 1/2] Applying HDA pin fixes specific for the Loki MiniPro

---
 sound/pci/hda/patch_realtek.c | 20 ++++++++++++++++++--
 1 file changed, 18 insertions(+), 2 deletions(-)

diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index 7193d295ceeecd..342e60c65a1c2c 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -7306,6 +7306,7 @@ enum {
 	ALC269VB_FIXUP_ASUS_ZENBOOK_UX31A,
 	ALC269VB_FIXUP_ASUS_MIC_NO_PRESENCE,
 	ALC269VB_FIXUP_AYANEO_SPKR_PIN_FIX,
+	ALC269VB_FIXUP_AYN_SPKR_PIN_FIX,
 	ALC269_FIXUP_LIMIT_INT_MIC_BOOST_MUTE_LED,
 	ALC269VB_FIXUP_ORDISSIMO_EVE2,
 	ALC283_FIXUP_CHROME_BOOK,
@@ -7549,16 +7550,22 @@ static void alc269_fixup_match_via_dmi(struct hda_codec *codec,
 {
 	int alc269_fix_id;
 	const char *board_name = dmi_get_system_info(DMI_BOARD_NAME);
-
+	
 	if (dmi_name_in_vendors("AYANEO") || dmi_name_in_vendors("AYADEVICE") || dmi_name_in_vendors("AYA DEVICE")) {
+		codec_dbg(codec, "Board Vendor: Ayaneo\n");
 		if (board_name && (strcmp(board_name, "AYANEO 2") || strcmp(board_name, "AYANEO 2S") || strcmp(board_name, "GEEK") || strcmp(board_name, "GEEK 1S"))) {
+			codec_dbg(codec, "Applying: ALC269_FIXUP_AYA_HEADSET_VOLUME\n");
 			alc269_fix_id = ALC269_FIXUP_AYA_HEADSET_VOLUME;
 		} else {
+			codec_dbg(codec, "No matching board found. Applying default settings.\n");
 			return;
 		}	
 	} else if (dmi_name_in_vendors("ayn") && strcmp(board_name, "Loki MiniPro")) {
-		alc269_fix_id = ALC269VB_FIXUP_AYANEO_SPKR_PIN_FIX;
+		codec_dbg(codec, "Board Vendor: Ayn\n");
+		codec_dbg(codec, "Applying: ALC269VB_FIXUP_AYN_SPKR_PIN_FIX\n");
+		alc269_fix_id = ALC269VB_FIXUP_AYN_SPKR_PIN_FIX;
 	} else {
+		codec_dbg(codec, "No matching board found. Applying default settings.\n");
 		return;
 	}
 	__snd_hda_apply_fixup(codec, alc269_fix_id, action, 0);
@@ -8050,6 +8057,14 @@ static const struct hda_fixup alc269_fixups[] = {
 			{ }
 		},
 	},
+	[ALC269VB_FIXUP_AYN_SPKR_PIN_FIX] = {
+	        .type = HDA_FIXUP_PINS,
+	        .v.pins = (const struct hda_pintbl[]) {
+	                { 0x14, 0x40f000f0 },  /* not connected */
+	                { 0x1a, 0x90170150 },  /* speaker */
+	                { }
+	        },
+	},
 	[ALC269_FIXUP_LIMIT_INT_MIC_BOOST_MUTE_LED] = {
 		.type = HDA_FIXUP_FUNC,
 		.v.func = alc269_fixup_limit_int_mic_boost,
@@ -10801,6 +10816,7 @@ static const struct hda_model_fixup alc269_fixup_models[] = {
 	{.id = ALC269VB_FIXUP_ASUS_ZENBOOK_UX31A, .name = "asus-zenbook-ux31a"},
 	{.id = ALC269VB_FIXUP_ORDISSIMO_EVE2, .name = "ordissimo"},
 	{.id = ALC269VB_FIXUP_AYANEO_SPKR_PIN_FIX, .name = "ayaneo-speaker-pin-fix"},
+	{.id = ALC269VB_FIXUP_AYN_SPKR_PIN_FIX, .name = "ayn-speaker-pin-fix"},
 	{.id = ALC282_FIXUP_ASUS_TX300, .name = "asus-tx300"},
 	{.id = ALC283_FIXUP_INT_MIC, .name = "alc283-int-mic"},
 	{.id = ALC290_FIXUP_MONO_SPEAKERS_HSJACK, .name = "mono-speakers"},

From 29e6669c5c5b186d8192e285241596b44cd8de6c Mon Sep 17 00:00:00 2001
From: CVMagic <546352+CVMagic@users.noreply.github.com>
Date: Mon, 29 Jul 2024 21:37:48 -0400
Subject: [PATCH 2/2] Update patch_realtek.c

---
 sound/pci/hda/patch_realtek.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index 342e60c65a1c2c..f74561c8646657 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -7550,7 +7550,7 @@ static void alc269_fixup_match_via_dmi(struct hda_codec *codec,
 {
 	int alc269_fix_id;
 	const char *board_name = dmi_get_system_info(DMI_BOARD_NAME);
-	
+
 	if (dmi_name_in_vendors("AYANEO") || dmi_name_in_vendors("AYADEVICE") || dmi_name_in_vendors("AYA DEVICE")) {
 		codec_dbg(codec, "Board Vendor: Ayaneo\n");
 		if (board_name && (strcmp(board_name, "AYANEO 2") || strcmp(board_name, "AYANEO 2S") || strcmp(board_name, "GEEK") || strcmp(board_name, "GEEK 1S"))) {