diff mbox series

[alsa-ucm-conf,2/2] bytcr-wm5102: Add support for different microphone routes

Message ID 20231021211614.115152-2-hdegoede@redhat.com
State New
Headers show
Series None | expand

Commit Message

Hans de Goede Oct. 21, 2023, 9:16 p.m. UTC
Unlike all designs supported sofar the Lenovo Yoga Tab 3 YT3-X90 does not
have its internal microphone (intmic) on IN3L with the headset microphone
on IN1L. Instead this tablet has the intmic on IN1L and the hsmic on IN2L.

Add IN1-InternalMic.conf and IN2-HeadsetMic.conf config snippets
under ucm2/codecs/wm5102/ for this and check the components string
to determine which microphone routes should be used.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
 ucm2/Intel/bytcr-wm5102/HiFi.conf       | 22 ++++++++++++++++++++--
 ucm2/codecs/wm5102/EnableSeq.conf       |  3 ++-
 ucm2/codecs/wm5102/IN1-InternalMic.conf | 23 +++++++++++++++++++++++
 ucm2/codecs/wm5102/IN2-HeadsetMic.conf  | 24 ++++++++++++++++++++++++
 4 files changed, 69 insertions(+), 3 deletions(-)
 create mode 100644 ucm2/codecs/wm5102/IN1-InternalMic.conf
 create mode 100644 ucm2/codecs/wm5102/IN2-HeadsetMic.conf

Comments

Jaroslav Kysela Oct. 31, 2023, 3:40 p.m. UTC | #1
On 21. 10. 23 23:16, Hans de Goede wrote:
> Unlike all designs supported sofar the Lenovo Yoga Tab 3 YT3-X90 does not
> have its internal microphone (intmic) on IN3L with the headset microphone
> on IN1L. Instead this tablet has the intmic on IN1L and the hsmic on IN2L.
> 
> Add IN1-InternalMic.conf and IN2-HeadsetMic.conf config snippets
> under ucm2/codecs/wm5102/ for this and check the components string
> to determine which microphone routes should be used.
> 
> Signed-off-by: Hans de Goede <hdegoede@redhat.com>

Thanks. Applied.

				Jaroslav
diff mbox series

Patch

diff --git a/ucm2/Intel/bytcr-wm5102/HiFi.conf b/ucm2/Intel/bytcr-wm5102/HiFi.conf
index 2afc757..46ef7d1 100644
--- a/ucm2/Intel/bytcr-wm5102/HiFi.conf
+++ b/ucm2/Intel/bytcr-wm5102/HiFi.conf
@@ -32,5 +32,23 @@  If.spk {
 }
 
 Include.hp.File "/codecs/wm5102/HeadPhones.conf"
-Include.mic.File "/codecs/wm5102/IN3-InternalMic.conf"
-Include.headset.File "/codecs/wm5102/IN1-HeadsetMic.conf"
+
+If.intmic {
+	Condition {
+		Type String
+		Haystack "${CardComponents}"
+		Needle "cfg-intmic:in1l"
+	}
+	True.Include.intmic1.File "/codecs/wm5102/IN1-InternalMic.conf"
+	False.Include.intmic3.File "/codecs/wm5102/IN3-InternalMic.conf"
+}
+
+If.hsmic {
+	Condition {
+		Type String
+		Haystack "${CardComponents}"
+		Needle "cfg-hsmic:in2l"
+	}
+	True.Include.hsmic2.File "/codecs/wm5102/IN2-HeadsetMic.conf"
+	False.Include.hsmic1.File "/codecs/wm5102/IN1-HeadsetMic.conf"
+}
diff --git a/ucm2/codecs/wm5102/EnableSeq.conf b/ucm2/codecs/wm5102/EnableSeq.conf
index 87cb3bb..11166c0 100644
--- a/ucm2/codecs/wm5102/EnableSeq.conf
+++ b/ucm2/codecs/wm5102/EnableSeq.conf
@@ -7,8 +7,9 @@  EnableSequence [
 	cset "name='HPOUT2L Input 1' AIF1RX1"
 	cset "name='HPOUT2R Input 1' AIF1RX2"
 
-	# Both mics are quite soft by default, boost then
+	# mics are quite soft by default, boost then
 	cset "name='IN1L Volume' 28"
+	cset "name='IN2L Volume' 28"
 	cset "name='IN3L Volume' 28"
 
 	cset "name='Headphone Switch' off"
diff --git a/ucm2/codecs/wm5102/IN1-InternalMic.conf b/ucm2/codecs/wm5102/IN1-InternalMic.conf
new file mode 100644
index 0000000..d9a70ce
--- /dev/null
+++ b/ucm2/codecs/wm5102/IN1-InternalMic.conf
@@ -0,0 +1,23 @@ 
+SectionDevice."Mic" {
+	Comment "Internal Microphone"
+
+	ConflictingDevice [
+		"Headset"
+	]
+
+	EnableSequence [
+		cset "name='AIF1TX1 Input 1' IN1L"
+		cset "name='AIF1TX2 Input 1' IN1L"
+
+		cset "name='Internal Mic Switch' on"
+	]
+
+	DisableSequence [
+		cset "name='Internal Mic Switch' off"
+	]
+
+	Value {
+		CapturePriority 100
+		CapturePCM "hw:${CardId}"
+	}
+}
diff --git a/ucm2/codecs/wm5102/IN2-HeadsetMic.conf b/ucm2/codecs/wm5102/IN2-HeadsetMic.conf
new file mode 100644
index 0000000..8fbbcb1
--- /dev/null
+++ b/ucm2/codecs/wm5102/IN2-HeadsetMic.conf
@@ -0,0 +1,24 @@ 
+SectionDevice."Headset" {
+	Comment "Headset Microphone"
+
+	ConflictingDevice [
+		"Mic"
+	]
+
+	EnableSequence [
+		cset "name='AIF1TX1 Input 1' IN2L"
+		cset "name='AIF1TX2 Input 1' IN2L"
+
+		cset "name='Headset Mic Switch' on"
+	]
+
+	DisableSequence [
+		cset "name='Headset Mic Switch' off"
+	]
+
+	Value {
+		CapturePriority 200
+		CapturePCM "hw:${CardId}"
+		JackControl "Headset Mic Jack"
+	}
+}