[PATCH alsa-ucm-conf 5/5] bytcr-rt5640: Add support for a second headset input

Hans de Goede hdegoede at redhat.com
Wed Sep 29 11:11:44 CEST 2021


Some devices (HP Elitepad 1000 G2) have a second headphones output
(1 on the dock, 2nd on the tablet itself) the headset mic input of
this second headset is connected to IN1, add support for this.

BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=213415
Signed-off-by: Hans de Goede <hdegoede at redhat.com>
---
 ucm2/bytcr-rt5640/HiFi-Components.conf  |  9 +++++
 ucm2/bytcr-rt5640/HiFi.conf             | 22 +++++++++++
 ucm2/codecs/rt5640/HeadsetMic2-IN1.conf | 52 +++++++++++++++++++++++++
 3 files changed, 83 insertions(+)
 create mode 100644 ucm2/codecs/rt5640/HeadsetMic2-IN1.conf

diff --git a/ucm2/bytcr-rt5640/HiFi-Components.conf b/ucm2/bytcr-rt5640/HiFi-Components.conf
index 3f941ac..ae5fd05 100644
--- a/ucm2/bytcr-rt5640/HiFi-Components.conf
+++ b/ucm2/bytcr-rt5640/HiFi-Components.conf
@@ -66,3 +66,12 @@ If.in3 {
 	}
 	True.Define.HaveInternalMic "in3"
 }
+
+If.hs2 {
+	Condition {
+		Type String
+		Haystack "${CardComponents}"
+		Needle "cfg-hs2:in1"
+	}
+	True.Define.HaveHeadsetMic2 "in1"
+}
diff --git a/ucm2/bytcr-rt5640/HiFi.conf b/ucm2/bytcr-rt5640/HiFi.conf
index 2e099bd..f758507 100644
--- a/ucm2/bytcr-rt5640/HiFi.conf
+++ b/ucm2/bytcr-rt5640/HiFi.conf
@@ -5,6 +5,7 @@ Define.HaveSpeaker ""
 Define.HaveHeadPhones2 ""
 Define.HaveInternalMic ""
 Define.HaveHeadsetMic "yes"
+Define.HaveHeadsetMic2 ""
 Define.StereoADC2Mux "DMIC1"
 
 If.DefineAif1 {
@@ -213,3 +214,24 @@ If.hsmic {
 		}
 	}
 }
+
+If.hsmic2 {
+	Condition {
+		Type String
+		Haystack "${var:HaveHeadsetMic2}"
+		Needle "in1"
+	}
+	True {
+		Include.hsmic.File "/codecs/rt5640/HeadsetMic2-IN1.conf"
+
+		SectionDevice."Headset2" {
+			EnableSequence [
+				cset "name='Headset Mic 2 Switch' on"
+			]
+
+			DisableSequence [
+				cset "name='Headset Mic 2 Switch' off"
+			]
+		}
+	}
+}
diff --git a/ucm2/codecs/rt5640/HeadsetMic2-IN1.conf b/ucm2/codecs/rt5640/HeadsetMic2-IN1.conf
new file mode 100644
index 0000000..ff05f82
--- /dev/null
+++ b/ucm2/codecs/rt5640/HeadsetMic2-IN1.conf
@@ -0,0 +1,52 @@
+SectionDevice."Headset2" {
+	Comment "Headset Microphone 2"
+
+	ConflictingDevice [
+		"Mic"
+		"Headset"
+	]
+
+	EnableSequence [
+		cset "name='RECMIXL BST1 Switch' on"
+		cset "name='RECMIXR BST1 Switch' on"
+
+		cset "name='Stereo ADC MIXL ADC1 Switch' on"
+		cset "name='Stereo ADC MIXR ADC1 Switch' on"
+		cset "name='Mono ADC MIXL ADC1 Switch' on"
+		cset "name='Mono ADC MIXR ADC1 Switch' on"
+	]
+
+	DisableSequence [
+		cset "name='Stereo ADC MIXL ADC1 Switch' off"
+		cset "name='Stereo ADC MIXR ADC1 Switch' off"
+		cset "name='Mono ADC MIXL ADC1 Switch' off"
+		cset "name='Mono ADC MIXR ADC1 Switch' off"
+
+		cset "name='RECMIXL BST1 Switch' off"
+		cset "name='RECMIXR BST1 Switch' off"
+	]
+
+	Value {
+		CapturePriority 300
+		CapturePCM "hw:${CardId}"
+		JackControl "Headset Mic 2 Jack"
+		CaptureMixerElem "IN1 Boost"
+		CaptureVolume "IN1 Boost"
+		If.In1Aif1 {
+			Condition {
+				Type String
+				String1 "${var:HaveAif}"
+				String2 "1"
+			}
+			True.CaptureMasterElem "ADC"
+		}
+		If.In1Aif2 {
+			Condition {
+				Type String
+				String1 "${var:HaveAif}"
+				String2 "2"
+			}
+			True.CaptureMasterElem "Mono ADC"
+		}
+	}
+}
-- 
2.31.1



More information about the Alsa-devel mailing list