[PATCH alsa-ucm-conf 7/8] codecs/rt5640: Use the new "aif:%d" part of the components string
Hans de Goede
hdegoede at redhat.com
Fri Feb 26 16:40:24 CET 2021
Newer kernels add "aif:1" or "aif:2" to the components string to let
us know which AIF is being used.
Use this to mute the ADC/DAC master controls on the other AIF. Muting
these is necessary to make mute LED control work properly, because the
snd_ctl_led will only turn on the mute LED if both DAC Volume Switches
are disabled.
Signed-off-by: Hans de Goede <hdegoede at redhat.com>
---
ucm2/bytcr-rt5640/HiFi.conf | 46 +++++++++++++++++++
ucm2/codecs/rt5640/EnableSeq-AIF-unknown.conf | 7 +++
ucm2/codecs/rt5640/EnableSeq-AIF1.conf | 7 +++
ucm2/codecs/rt5640/EnableSeq-AIF2.conf | 7 +++
ucm2/codecs/rt5640/EnableSeq.conf | 4 --
5 files changed, 67 insertions(+), 4 deletions(-)
create mode 100644 ucm2/codecs/rt5640/EnableSeq-AIF-unknown.conf
create mode 100644 ucm2/codecs/rt5640/EnableSeq-AIF1.conf
create mode 100644 ucm2/codecs/rt5640/EnableSeq-AIF2.conf
diff --git a/ucm2/bytcr-rt5640/HiFi.conf b/ucm2/bytcr-rt5640/HiFi.conf
index a5c05ba..39a9a2b 100644
--- a/ucm2/bytcr-rt5640/HiFi.conf
+++ b/ucm2/bytcr-rt5640/HiFi.conf
@@ -1,8 +1,54 @@
# Use case Configuration for bytcr-rt5640
+Define.HaveAif ""
+Define.HaveAif1 ""
+Define.HaveAif2 ""
+
+If.DefineAif1 {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "aif:1"
+ }
+ True {
+ Define.HaveAif "yes"
+ Define.HaveAif1 "yes"
+ }
+}
+
+If.DefineAif2 {
+ Condition {
+ Type String
+ Haystack "${CardComponents}"
+ Needle "aif:2"
+ }
+ True {
+ Define.HaveAif "yes"
+ Define.HaveAif2 "yes"
+ }
+}
+
SectionVerb {
Include.e.File "/codecs/rt5640/EnableSeq.conf"
+ If.Aif1 {
+ Condition { Type String Empty "${var:HaveAif1}" }
+ Before.EnableSequence "0"
+ False.Include.aif1.File "/codecs/rt5640/EnableSeq-AIF1.conf"
+ }
+
+ If.Aif2 {
+ Condition { Type String Empty "${var:HaveAif2}" }
+ Before.EnableSequence "0"
+ False.Include.aif1.File "/codecs/rt5640/EnableSeq-AIF2.conf"
+ }
+
+ If.AifUnknown {
+ Condition { Type String Empty "${var:HaveAif}" }
+ Before.EnableSequence "0"
+ True.Include.aif-unknown.File "/codecs/rt5640/EnableSeq-AIF-unknown.conf"
+ }
+
If.Controls {
Condition {
Type ControlExists
diff --git a/ucm2/codecs/rt5640/EnableSeq-AIF-unknown.conf b/ucm2/codecs/rt5640/EnableSeq-AIF-unknown.conf
new file mode 100644
index 0000000..3160d5c
--- /dev/null
+++ b/ucm2/codecs/rt5640/EnableSeq-AIF-unknown.conf
@@ -0,0 +1,7 @@
+EnableSequence [
+ # When the AIF is unknown enable audio from/to both AIFs
+ # Note kernels which do not advertise the AIF do not have a 'DAC1 Playback Switch'
+ cset "name='DAC2 Playback Switch' on"
+ cset "name='ADC Capture Switch' on"
+ cset "name='Mono ADC Capture Switch' on"
+]
diff --git a/ucm2/codecs/rt5640/EnableSeq-AIF1.conf b/ucm2/codecs/rt5640/EnableSeq-AIF1.conf
new file mode 100644
index 0000000..b31fb7b
--- /dev/null
+++ b/ucm2/codecs/rt5640/EnableSeq-AIF1.conf
@@ -0,0 +1,7 @@
+EnableSequence [
+ cset "name='DAC1 Playback Switch' on"
+ cset "name='ADC Capture Switch' on"
+ # When AIF1 is used, mute the AIF2 ADC/DAC master control
+ cset "name='DAC2 Playback Switch' off"
+ cset "name='Mono ADC Capture Switch' off"
+]
diff --git a/ucm2/codecs/rt5640/EnableSeq-AIF2.conf b/ucm2/codecs/rt5640/EnableSeq-AIF2.conf
new file mode 100644
index 0000000..a1d4d68
--- /dev/null
+++ b/ucm2/codecs/rt5640/EnableSeq-AIF2.conf
@@ -0,0 +1,7 @@
+EnableSequence [
+ cset "name='DAC2 Playback Switch' on"
+ cset "name='Mono ADC Capture Switch' on"
+ # When AIF2 is used, mute the AIF1 ADC/DAC master control
+ cset "name='DAC1 Playback Switch' off"
+ cset "name='ADC Capture Switch' off"
+]
diff --git a/ucm2/codecs/rt5640/EnableSeq.conf b/ucm2/codecs/rt5640/EnableSeq.conf
index 8b30153..572d1a2 100644
--- a/ucm2/codecs/rt5640/EnableSeq.conf
+++ b/ucm2/codecs/rt5640/EnableSeq.conf
@@ -26,18 +26,14 @@ EnableSequence [
#cset "name='SDI select' 1"
#cset "name='DAI select' 1"
- cset "name='DAC2 Playback Switch' on"
-
# Input Configuration
cset "name='Stereo ADC1 Mux' ADC"
cset "name='Stereo ADC2 Mux' DMIC1"
- cset "name='ADC Capture Switch' on"
cset "name='Mono ADC L1 Mux' ADCL"
cset "name='Mono ADC R1 Mux' ADCR"
cset "name='Mono ADC L2 Mux' DMIC L1"
cset "name='Mono ADC R2 Mux' DMIC R1"
- cset "name='Mono ADC Capture Switch' on"
# 47=0dB, 0.375 dB/step, set it to 9 dB to help with soft mics
cset "name='ADC Capture Volume' 71"
--
2.30.1
More information about the Alsa-devel
mailing list