]> git.alsa-project.org Git - alsa-ucm-conf.git/commitdiff
tegra: Add UCM for MAX98089 based LG Optimus 4X HD and Vu
authorSvyatoslav Ryhel <clamor95@gmail.com>
Mon, 19 Sep 2022 07:04:19 +0000 (10:04 +0300)
committerJaroslav Kysela <perex@perex.cz>
Mon, 21 Aug 2023 13:34:47 +0000 (15:34 +0200)
Maxim MAX98089 based LG Optimus 4X HD and Vu are powered by
NVIDIA Tegra30 SoC. They feature 2-channel speaker, built-in
stereo microphone and 4-pin 3.5mm jack for headphones and
headset.

Fixes: https://github.com/alsa-project/alsa-ucm-conf/pull/291
Tested-by: Andreas Westman Dorcsak <hedmoo@yahoo.com> # LG P880 T30
Tested-by: Svyatoslav Ryhel <clamor95@gmail.com> # LG P895 T30
Signed-off-by: Svyatoslav Ryhel <clamor95@gmail.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
ucm2/Tegra/max98089/lge-x3-HiFi.conf [new file with mode: 0644]
ucm2/Tegra/max98089/lge-x3-VoiceCall.conf [new file with mode: 0644]
ucm2/Tegra/max98089/lge-x3.conf [new file with mode: 0644]
ucm2/conf.d/tegra/LG Optimus 4X HD MAX98089.conf [new symlink]
ucm2/conf.d/tegra/LG Optimus Vu MAX98089.conf [new symlink]

diff --git a/ucm2/Tegra/max98089/lge-x3-HiFi.conf b/ucm2/Tegra/max98089/lge-x3-HiFi.conf
new file mode 100644 (file)
index 0000000..3738d72
--- /dev/null
@@ -0,0 +1,148 @@
+# Use case Configuration for MAX98089 on LG Optimus 4X HD/Vu P880/P895
+
+SectionDevice."Speaker" {
+       Comment "Speaker"
+
+       ConflictingDevice [
+               "Headphones"
+       ]
+
+       EnableSequence [
+               cset "name='Speaker Switch' on"
+               cset "name='Int Spk Switch' on"
+
+               cset "name='Left SPK Mixer Left DAC1 Switch' on"
+               cset "name='Left SPK Mixer Left DAC2 Switch' on"
+               cset "name='Left SPK Mixer Right DAC1 Switch' on"
+               cset "name='Left SPK Mixer Right DAC2 Switch' on"
+       ]
+
+       DisableSequence [
+               cset "name='Speaker Switch' off"
+               cset "name='Int Spk Switch' off"
+
+               cset "name='Left SPK Mixer Left DAC1 Switch' off"
+               cset "name='Left SPK Mixer Left DAC2 Switch' off"
+               cset "name='Left SPK Mixer Right DAC1 Switch' off"
+               cset "name='Left SPK Mixer Right DAC2 Switch' off"
+       ]
+
+       Value {
+               PlaybackPCM "hw:${CardId}"
+               PlaybackChannels 2
+               PlaybackPriority 300
+
+               PlaybackMixerElem "Speaker"
+       }
+}
+
+SectionDevice."Headphones" {
+       Comment "Headphones"
+
+       ConflictingDevice [
+               "Speaker"
+       ]
+
+       EnableSequence [
+               cset "name='Headphone Switch' on"
+
+               cset "name='Left HP Mixer Left DAC1 Switch' on"
+               cset "name='Left HP Mixer Left DAC2 Switch' on"
+               cset "name='Right HP Mixer Right DAC1 Switch' on"
+               cset "name='Right HP Mixer Right DAC2 Switch' on"
+       ]
+
+       DisableSequence [
+               cset "name='Headphone Switch' off"
+
+               cset "name='Left HP Mixer Left DAC1 Switch' off"
+               cset "name='Left HP Mixer Left DAC2 Switch' off"
+               cset "name='Right HP Mixer Right DAC1 Switch' off"
+               cset "name='Right HP Mixer Right DAC2 Switch' off"
+       ]
+
+       Value {
+               PlaybackPCM "hw:${CardId}"
+               PlaybackChannels 2
+               PlaybackPriority 100
+
+               PlaybackMixerElem "Headphone"
+
+               JackControl "Headphone Jack"
+       }
+}
+
+SectionDevice."Mic1" {
+       Comment "Internal Microphone"
+
+       ConflictingDevice [
+               "Mic2"
+       ]
+
+       EnableSequence [
+               # Main MIC
+               cset "name='Internal Mic 1 Switch' on"
+               cset "name='DAI1 ADC Filter' fc=258/fs=16k"
+
+               cset "name='Left ADC Mixer MIC1 Switch' on"
+               cset "name='Right ADC Mixer MIC1 Switch' on"
+
+               # Secondary MIC
+               cset "name='Int Mic Switch' on"
+               cset "name='Internal Mic 2 Switch' on"
+
+               cset "name='Left ADC Mixer MIC2 Switch' on"
+               cset "name='Right ADC Mixer MIC2 Switch' on"
+       ]
+
+       DisableSequence [
+               # Main MIC
+               cset "name='Internal Mic 1 Switch' off"
+               cset "name='DAI1 ADC Filter' off"
+
+               cset "name='Left ADC Mixer MIC1 Switch' off"
+               cset "name='Right ADC Mixer MIC1 Switch' off"
+
+               # Secondary MIC
+               cset "name='Int Mic Switch' off"
+               cset "name='Internal Mic 2 Switch' off"
+
+               cset "name='Left ADC Mixer MIC2 Switch' off"
+               cset "name='Right ADC Mixer MIC2 Switch' off"
+       ]
+
+       Value {
+               CapturePCM "hw:${CardId}"
+               CaptureChannels 2
+               CapturePriority 200
+       }
+}
+
+SectionDevice."Mic2" {
+       Comment "External Microphone"
+
+       ConflictingDevice [
+               "Mic1"
+       ]
+
+       EnableSequence [
+               cset "name='Mic Jack Switch' on"
+
+               cset "name='Left ADC Mixer INA1 Switch' on"
+               cset "name='Right ADC Mixer INA1 Switch' on"
+       ]
+
+       DisableSequence [
+               cset "name='Mic Jack Switch' off"
+
+               cset "name='Left ADC Mixer INA1 Switch' off"
+               cset "name='Right ADC Mixer INA1 Switch' off"
+       ]
+
+       Value {
+               CapturePCM "hw:${CardId}"
+               CapturePriority 100
+
+               JackControl "Mic Jack"
+       }
+}
diff --git a/ucm2/Tegra/max98089/lge-x3-VoiceCall.conf b/ucm2/Tegra/max98089/lge-x3-VoiceCall.conf
new file mode 100644 (file)
index 0000000..1634c7b
--- /dev/null
@@ -0,0 +1,125 @@
+# Use case Configuration for MAX98089 on LG Optimus 4X HD/Vu P880/P895
+
+SectionDevice."Speaker" {
+       Comment "Speaker"
+
+       ConflictingDevice [
+               "Earpiece"
+       ]
+
+       EnableSequence [
+               cset "name='Speaker Switch' on"
+               cset "name='Int Spk Switch' on"
+
+               cset "name='Left SPK Mixer Left DAC1 Switch' on"
+               cset "name='Left SPK Mixer Left DAC2 Switch' on"
+               cset "name='Left SPK Mixer Right DAC1 Switch' on"
+               cset "name='Left SPK Mixer Right DAC2 Switch' on"
+       ]
+
+       DisableSequence [
+               cset "name='Speaker Switch' off"
+               cset "name='Int Spk Switch' off"
+
+               cset "name='Left SPK Mixer Left DAC1 Switch' off"
+               cset "name='Left SPK Mixer Left DAC2 Switch' off"
+               cset "name='Left SPK Mixer Right DAC1 Switch' off"
+               cset "name='Left SPK Mixer Right DAC2 Switch' off"
+       ]
+
+       Value {
+               PlaybackPCM "hw:${CardId}"
+               PlaybackChannels 2
+               PlaybackPriority 100
+
+               PlaybackMixerElem "Speaker"
+       }
+}
+
+SectionDevice."Earpiece" {
+       Comment "Earpiece"
+
+       ConflictingDevice [
+               "Speaker"
+       ]
+
+       EnableSequence [
+               cset "name='Receiver Switch' on"
+               cset "name='Earpiece Switch' on"
+
+               cset "name='Left REC Mixer Left DAC1 Switch' on"
+               cset "name='Left REC Mixer Left DAC2 Switch' on"
+               cset "name='Left REC Mixer Right DAC1 Switch' on"
+               cset "name='Left REC Mixer Right DAC2 Switch' on"
+
+               cset "name='Right REC Mixer Left DAC1 Switch' on"
+               cset "name='Right REC Mixer Left DAC2 Switch' on"
+               cset "name='Right REC Mixer Right DAC1 Switch' on"
+               cset "name='Right REC Mixer Right DAC2 Switch' on"
+       ]
+
+       DisableSequence [
+               cset "name='Receiver Switch' off"
+               cset "name='Earpiece Switch' off"
+
+               cset "name='Left REC Mixer Left DAC1 Switch' off"
+               cset "name='Left REC Mixer Left DAC2 Switch' off"
+               cset "name='Left REC Mixer Right DAC1 Switch' off"
+               cset "name='Left REC Mixer Right DAC2 Switch' off"
+
+               cset "name='Right REC Mixer Left DAC1 Switch' off"
+               cset "name='Right REC Mixer Left DAC2 Switch' off"
+               cset "name='Right REC Mixer Right DAC1 Switch' off"
+               cset "name='Right REC Mixer Right DAC2 Switch' off"
+       ]
+
+       Value {
+               PlaybackPCM "hw:${CardId}"
+               PlaybackChannels 2
+               PlaybackPriority 200
+
+               PlaybackMixerElem "Receiver"
+       }
+}
+
+SectionDevice."Mic1" {
+       Comment "Internal Microphone"
+
+       EnableSequence [
+               # Main MIC
+               cset "name='Internal Mic 1 Switch' on"
+               cset "name='DAI1 ADC Filter' fc=258/fs=16k"
+
+               cset "name='Left ADC Mixer MIC1 Switch' on"
+               cset "name='Right ADC Mixer MIC1 Switch' on"
+
+               # Secondary MIC
+               cset "name='Int Mic Switch' on"
+               cset "name='Internal Mic 2 Switch' on"
+
+               cset "name='Left ADC Mixer MIC2 Switch' on"
+               cset "name='Right ADC Mixer MIC2 Switch' on"
+       ]
+
+       DisableSequence [
+               # Main MIC
+               cset "name='Internal Mic 1 Switch' off"
+               cset "name='DAI1 ADC Filter' off"
+
+               cset "name='Left ADC Mixer MIC1 Switch' off"
+               cset "name='Right ADC Mixer MIC1 Switch' off"
+
+               # Secondary MIC
+               cset "name='Int Mic Switch' off"
+               cset "name='Internal Mic 2 Switch' off"
+
+               cset "name='Left ADC Mixer MIC2 Switch' off"
+               cset "name='Right ADC Mixer MIC2 Switch' off"
+       ]
+
+       Value {
+               CapturePCM "hw:${CardId}"
+               CaptureChannels 2
+               CapturePriority 200
+       }
+}
diff --git a/ucm2/Tegra/max98089/lge-x3.conf b/ucm2/Tegra/max98089/lge-x3.conf
new file mode 100644 (file)
index 0000000..994a606
--- /dev/null
@@ -0,0 +1,47 @@
+# Use case Configuration for MAX98089 on LG Optimus 4X HD/Vu P880/P895
+
+Syntax 4
+
+BootSequence [
+       cset "name='MIC1 Volume' 10"
+       cset "name='MIC1 Boost Volume' 1"
+       cset "name='MIC2 Volume' 10"
+       cset "name='MIC2 Boost Volume' 1"
+
+       cset "name='INA Volume' 5"
+       cset "name='INB Volume' 5"
+
+       cset "name='ADCL Volume' 15"
+       cset "name='ADCR Volume' 15"
+
+       cset "name='DAI1 Filter Mode' Music"
+
+       cset "name='EQ1 Switch' off"
+       cset "name='EQ2 Switch' off"
+
+       cset "name='Speaker Switch' off"
+       cset "name='Int Spk Switch' off"
+       cset "name='Headphone Switch' off"
+       cset "name='Earpiece Switch' off"
+       cset "name='Receiver Switch' off"
+
+       cset "name='Int Mic Switch' off"
+       cset "name='Internal Mic 1 Switch' off"
+       cset "name='Internal Mic 2 Switch' off"
+       cset "name='Mic Jack Switch' off"
+
+       cset "name='Right SPK Mixer Left DAC1 Switch' on"
+       cset "name='Right SPK Mixer Left DAC2 Switch' on"
+       cset "name='Right SPK Mixer Right DAC1 Switch' on"
+       cset "name='Right SPK Mixer Right DAC2 Switch' on"
+]
+
+SectionUseCase."HiFi" {
+    File "/Tegra/max98089/lge-x3-HiFi.conf"
+    Comment "Play HiFi quality Music"
+}
+
+SectionUseCase."Voice Call" {
+    File "/Tegra/max98089/lge-x3-VoiceCall.conf"
+    Comment "Make a phone call"
+}
diff --git a/ucm2/conf.d/tegra/LG Optimus 4X HD MAX98089.conf b/ucm2/conf.d/tegra/LG Optimus 4X HD MAX98089.conf
new file mode 120000 (symlink)
index 0000000..e569b85
--- /dev/null
@@ -0,0 +1 @@
+../../Tegra/max98089/lge-x3.conf
\ No newline at end of file
diff --git a/ucm2/conf.d/tegra/LG Optimus Vu MAX98089.conf b/ucm2/conf.d/tegra/LG Optimus Vu MAX98089.conf
new file mode 120000 (symlink)
index 0000000..e569b85
--- /dev/null
@@ -0,0 +1 @@
+../../Tegra/max98089/lge-x3.conf
\ No newline at end of file