From 33be660e4b1e75c19d5332556c3d2636dd3344bf Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Mon, 2 Nov 2020 16:44:51 +0100 Subject: [PATCH 01/24] fix the ucm2/codecs/hda/hdmi.conf use The mentioned commit (dcef48f13d) removed the index for the IEC958 on/off control which made the HDMI 2+ outputs silent. Fixes: dcef48f13d ("HDA-Intel: add support for AMD acp microphone devices") BugLink: https://github.com/alsa-project/alsa-lib/issues/95 Signed-off-by: Jaroslav Kysela --- ucm2/HDA-Intel/Hdmi.conf | 8 +++++++- ucm2/codecs/hda/hdmi.conf | 4 ++-- ucm2/sof-hda-dsp/Hdmi.conf | 3 +++ 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/ucm2/HDA-Intel/Hdmi.conf b/ucm2/HDA-Intel/Hdmi.conf index c8b6e77..c533e49 100644 --- a/ucm2/HDA-Intel/Hdmi.conf +++ b/ucm2/HDA-Intel/Hdmi.conf @@ -6,6 +6,7 @@ If.hdmi1 { Define { HdmiNum 1 HdmiPCM 3 + HdmiCtlIndex 0 HdmiPrio 1100 } Include.hdmi1.File "/codecs/hda/hdmi.conf" @@ -18,6 +19,7 @@ If.hdmi2 { Define { HdmiNum 2 HdmiPCM 7 + HdmiCtlIndex 1 HdmiPrio 1200 } Include.hdmi2.File "/codecs/hda/hdmi.conf" @@ -30,6 +32,7 @@ If.hdmi3 { Define { HdmiNum 3 HdmiPCM 8 + HdmiCtlIndex 2 HdmiPrio 1300 } Include.hdmi3.File "/codecs/hda/hdmi.conf" @@ -42,6 +45,7 @@ If.hdmi4 { Define { HdmiNum 4 HdmiPCM 9 + HdmiCtlIndex 3 HdmiPrio 1400 } Include.hdmi4.File "/codecs/hda/hdmi.conf" @@ -54,6 +58,7 @@ If.hdmi5 { Define { HdmiNum 5 HdmiPCM 10 + HdmiCtlIndex 4 HdmiPrio 1500 } Include.hdmi5.File "/codecs/hda/hdmi.conf" @@ -66,8 +71,9 @@ If.hdmi6 { Define { HdmiNum 6 HdmiPCM 11 + HdmiCtlIndex 5 HdmiPrio 1600 } - Include.hdmi5.File "/codecs/hda/hdmi.conf" + Include.hdmi6.File "/codecs/hda/hdmi.conf" } } diff --git a/ucm2/codecs/hda/hdmi.conf b/ucm2/codecs/hda/hdmi.conf index ba80fef..32a77f4 100644 --- a/ucm2/codecs/hda/hdmi.conf +++ b/ucm2/codecs/hda/hdmi.conf @@ -8,11 +8,11 @@ If.hdmi { Comment "HDMI${var:HdmiNum} Output" EnableSequence [ - cset "name='IEC958 Playback Switch' on" + cset "name='IEC958 Playback Switch',index=${var:HdmiCtlIndex} on" ] DisableSequence [ - cset "name='IEC958 Playback Switch' off" + cset "name='IEC958 Playback Switch',index=${var:HdmiCtlIndex} off" ] Value { diff --git a/ucm2/sof-hda-dsp/Hdmi.conf b/ucm2/sof-hda-dsp/Hdmi.conf index 7b777d1..1726567 100644 --- a/ucm2/sof-hda-dsp/Hdmi.conf +++ b/ucm2/sof-hda-dsp/Hdmi.conf @@ -6,6 +6,7 @@ If.hdmi1 { Define { HdmiNum 1 HdmiPCM 3 + HdmiCtlIndex 0 HdmiPrio 500 } Include.hdmi1.File "/codecs/hda/hdmi.conf" @@ -18,6 +19,7 @@ If.hdmi2 { Define { HdmiNum 2 HdmiPCM 4 + HdmiCtlIndex 1 HdmiPrio 600 } Include.hdmi2.File "/codecs/hda/hdmi.conf" @@ -30,6 +32,7 @@ If.hdmi3 { Define { HdmiNum 3 HdmiPCM 5 + HdmiCtlIndex 2 HdmiPrio 700 } Include.hdmi3.File "/codecs/hda/hdmi.conf" -- 2.29.2 From f8c2428ccc42488c5e96801cce9f7e28080ecb71 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Mon, 2 Nov 2020 18:15:14 +0100 Subject: [PATCH 02/24] codecs/hda/hdmi.conf - add DisplayPort to the device description (Comment) Signed-off-by: Jaroslav Kysela --- ucm2/codecs/hda/hdmi.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ucm2/codecs/hda/hdmi.conf b/ucm2/codecs/hda/hdmi.conf index 32a77f4..c7b7ba4 100644 --- a/ucm2/codecs/hda/hdmi.conf +++ b/ucm2/codecs/hda/hdmi.conf @@ -5,7 +5,7 @@ If.hdmi { } True { SectionDevice."HDMI${var:HdmiNum}" { - Comment "HDMI${var:HdmiNum} Output" + Comment "HDMI / DisplayPort ${var:HdmiNum} Output" EnableSequence [ cset "name='IEC958 Playback Switch',index=${var:HdmiCtlIndex} on" -- 2.29.2 From 334b12e9a796cddf70779b68418ee7ad52ba1d14 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Mon, 16 Nov 2020 11:48:05 +0100 Subject: [PATCH 03/24] sof-soundwire: use the codecs/hda/hdmi.conf macro Signed-off-by: Jaroslav Kysela --- ucm2/sof-soundwire/Hdmi.conf | 83 ++++++++++-------------------------- 1 file changed, 22 insertions(+), 61 deletions(-) diff --git a/ucm2/sof-soundwire/Hdmi.conf b/ucm2/sof-soundwire/Hdmi.conf index d0ba790..d5ee9c6 100644 --- a/ucm2/sof-soundwire/Hdmi.conf +++ b/ucm2/sof-soundwire/Hdmi.conf @@ -1,79 +1,40 @@ -# Use case Configuration for sof-soundwire card +# Use case Configuration for sof-soundwire If.hdmi1 { - Condition { - Type ControlExists - Control "iface=CARD,name='HDMI/DP,pcm=5 Jack'" - } + Condition { Type String Empty "" } True { - SectionDevice."HDMI1" { - Comment "HDMI1/DP1 Output" - - EnableSequence [ - cset "name='IEC958 Playback Switch' on" - ] - - DisableSequence [ - cset "name='IEC958 Playback Switch' off" - ] - - Value { - PlaybackPriority 500 - PlaybackPCM "hw:${CardId},5" - JackControl "HDMI/DP,pcm=5 Jack" - } + Define { + HdmiNum 1 + HdmiPCM 5 + HdmiCtlIndex 0 + HdmiPrio 500 } + Include.hdmi1.File "/codecs/hda/hdmi.conf" } } If.hdmi2 { - Condition { - Type ControlExists - Control "iface=CARD,name='HDMI/DP,pcm=6 Jack'" - } + Condition { Type String Empty "" } True { - SectionDevice."HDMI2" { - Comment "HDMI2/DP2 Output" - - EnableSequence [ - cset "name='IEC958 Playback Switch',index=1 on" - ] - - DisableSequence [ - cset "name='IEC958 Playback Switch',index=1 off" - ] - - Value { - PlaybackPriority 600 - PlaybackPCM "hw:${CardId},6" - JackControl "HDMI/DP,pcm=6 Jack" - } + Define { + HdmiNum 2 + HdmiPCM 6 + HdmiCtlIndex 1 + HdmiPrio 600 } + Include.hdmi2.File "/codecs/hda/hdmi.conf" } } If.hdmi3 { - Condition { - Type ControlExists - Control "iface=CARD,name='HDMI/DP,pcm=7 Jack'" - } + Condition { Type String Empty "" } True { - SectionDevice."HDMI3" { - Comment "HDMI3/DP3 Output" - - EnableSequence [ - cset "name='IEC958 Playback Switch',index=2 on" - ] - - DisableSequence [ - cset "name='IEC958 Playback Switch',index=2 off" - ] - - Value { - PlaybackPriority 700 - PlaybackPCM "hw:${CardId},7" - JackControl "HDMI/DP,pcm=7 Jack" - } + Define { + HdmiNum 3 + HdmiPCM 7 + HdmiCtlIndex 2 + HdmiPrio 700 } + Include.hdmi3.File "/codecs/hda/hdmi.conf" } } -- 2.29.2 From 6889736b917eed89c4d775824efd8655400e27e3 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Mon, 7 Dec 2020 09:33:30 +0100 Subject: [PATCH 04/24] Revert "ucm2: HDA/acp - add Capture simple mixer element to the ACP Mic device" This reverts commit 3320b1ac804595d6c145c1ad7af85917182a3c98. This solution does not work. The mute state is shared between the HDA and AMD ACP in PA, so it may cause the security issue, if the users do not set the mute manually. BugLink: https://github.com/alsa-project/alsa-ucm-conf/issues/64 Signed-off-by: Jaroslav Kysela --- ucm2/HDA-Intel/HiFi-acp.conf | 1 - 1 file changed, 1 deletion(-) diff --git a/ucm2/HDA-Intel/HiFi-acp.conf b/ucm2/HDA-Intel/HiFi-acp.conf index 15eeca5..123ae15 100644 --- a/ucm2/HDA-Intel/HiFi-acp.conf +++ b/ucm2/HDA-Intel/HiFi-acp.conf @@ -4,6 +4,5 @@ SectionDevice."Mic1" { Value { CapturePriority 100 CapturePCM "hw:${var:AcpCardId}" - CaptureMixerElem "Capture" } } -- 2.29.2 From 13420f94a6858e9c3e3a056a7987d9c0db823394 Mon Sep 17 00:00:00 2001 From: Hans de Goede Date: Sun, 6 Dec 2020 13:47:16 +0100 Subject: [PATCH 05/24] chtnau8824: Fix mono speaker config not working Fix the Speaker define / var being changed from "Speaker" to "MonoSpeaker" not having any effect because the variable gets expanded before the if making the change is interpreted. Signed-off-by: Hans de Goede Signed-off-by: Jaroslav Kysela --- ucm2/chtnau8824/HiFi.conf | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/ucm2/chtnau8824/HiFi.conf b/ucm2/chtnau8824/HiFi.conf index 3ccd6b1..d7a5f63 100644 --- a/ucm2/chtnau8824/HiFi.conf +++ b/ucm2/chtnau8824/HiFi.conf @@ -34,8 +34,15 @@ SectionVerb { } } -Include.spk.File "/codecs/nau8824/${var:Speaker}.conf" -Include.hp.File "/codecs/nau8824/HeadPhones.conf" +# The includes using $vars in there path must be conditional otherwise the +# $var gets expanded before the other If-s above can change the vars. +If.cfg-includes { + Condition { Type String Empty "" } + True { + Include.spk.File "/codecs/nau8824/${var:Speaker}.conf" + Include.hp.File "/codecs/nau8824/HeadPhones.conf" -Include.mic.File "/codecs/nau8824/InternalMic.conf" -Include.hsmic.File "/codecs/nau8824/HeadsetMic.conf" + Include.mic.File "/codecs/nau8824/InternalMic.conf" + Include.hsmic.File "/codecs/nau8824/HeadsetMic.conf" + } +} -- 2.29.2 From 7db718571440b13045ebb3150a71745033ff5c0c Mon Sep 17 00:00:00 2001 From: Hans de Goede Date: Sun, 6 Dec 2020 13:47:17 +0100 Subject: [PATCH 06/24] chtnau8824: Add support for laptops using stereo DMICs The Medion E2228T uses a NAU8824 codec combined with stereo DMICs, add support for this. Signed-off-by: Hans de Goede Signed-off-by: Jaroslav Kysela --- ucm2/chtnau8824/HiFi.conf | 16 +++++++++++++++- ucm2/codecs/nau8824/DMIC1_2.conf | 30 ++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 ucm2/codecs/nau8824/DMIC1_2.conf diff --git a/ucm2/chtnau8824/HiFi.conf b/ucm2/chtnau8824/HiFi.conf index d7a5f63..105f360 100644 --- a/ucm2/chtnau8824/HiFi.conf +++ b/ucm2/chtnau8824/HiFi.conf @@ -1,4 +1,5 @@ Define.Speaker "Speaker" +Define.Mic "InternalMic" If.cfg-mspk { Condition { @@ -11,6 +12,19 @@ If.cfg-mspk { } } +If.cfg-mic { + Condition { + Type RegexMatch + String "${CardLongName}" + # Medion E22??T models put DMIC in their product version + # when using DMICs + Regex "(MEDION-E22..T.*-DMIC-)" + } + True { + Define.Mic "DMIC1_2" + } +} + SectionVerb { Value { @@ -42,7 +56,7 @@ If.cfg-includes { Include.spk.File "/codecs/nau8824/${var:Speaker}.conf" Include.hp.File "/codecs/nau8824/HeadPhones.conf" - Include.mic.File "/codecs/nau8824/InternalMic.conf" + Include.mic.File "/codecs/nau8824/${var:Mic}.conf" Include.hsmic.File "/codecs/nau8824/HeadsetMic.conf" } } diff --git a/ucm2/codecs/nau8824/DMIC1_2.conf b/ucm2/codecs/nau8824/DMIC1_2.conf new file mode 100644 index 0000000..f54f671 --- /dev/null +++ b/ucm2/codecs/nau8824/DMIC1_2.conf @@ -0,0 +1,30 @@ +# Stereo DMICs on the DMIC1 and DMIC2 inputs + +SectionDevice."Mic" { + Comment "Internal Digital Microphones" + + Value { + CapturePriority 200 + CapturePCM "hw:${CardId}" + } + + ConflictingDevice [ + "Headset" + ] + + EnableSequence [ + # Note needs to be swapped / swap is deliberate! + cset "name='ADC CH0 Select' 1" + cset "name='ADC CH1 Select' 0" + + cset "name='Int Mic Switch' on" + cset "name='DMIC1 Enable Switch' on" + cset "name='DMIC2 Enable Switch' on" + ] + + DisableSequence [ + cset "name='Int Mic Switch' off" + cset "name='DMIC1 Enable Switch' off" + cset "name='DMIC2 Enable Switch' off" + ] +} -- 2.29.2 From dacfe2fc7b41b800f4f379ce4b1722462b97cab2 Mon Sep 17 00:00:00 2001 From: Hans de Goede Date: Sun, 6 Dec 2020 13:47:18 +0100 Subject: [PATCH 07/24] chtnau8824: Boost analog mic volumes a bit Both Mic1 (internal analog mic) and Mic2 (headset mic) are a bit soft with the current settings, boost their volumes a bit. Signed-off-by: Hans de Goede Signed-off-by: Jaroslav Kysela --- ucm2/codecs/nau8824/EnableSeq.conf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ucm2/codecs/nau8824/EnableSeq.conf b/ucm2/codecs/nau8824/EnableSeq.conf index 433e8e2..3650d06 100644 --- a/ucm2/codecs/nau8824/EnableSeq.conf +++ b/ucm2/codecs/nau8824/EnableSeq.conf @@ -7,8 +7,8 @@ EnableSequence [ cset "name='DMIC2 Enable Switch' off" cset "name='DMIC3 Enable Switch' off" cset "name='DMIC4 Enable Switch' off" - cset "name='MIC1 Volume' 10" - cset "name='MIC2 Volume' 10" + cset "name='MIC1 Volume' 14" + cset "name='MIC2 Volume' 14" # Button Configuration cset "name='THD for key media' 10" cset "name='THD for key voice command' 16" -- 2.29.2 From 263bd26b1216c933db3d216197a78678d0f8610e Mon Sep 17 00:00:00 2001 From: Libin Yang Date: Thu, 19 Nov 2020 20:01:30 +0800 Subject: [PATCH 08/24] rt715: init: setup ADC07 to a proper volume This patch initiates 'rt715 ADC 07 Capture Volume' to a proper volume. Signed-off-by: Libin Yang Signed-off-by: Jaroslav Kysela --- ucm2/codecs/rt715/init.conf | 1 + 1 file changed, 1 insertion(+) diff --git a/ucm2/codecs/rt715/init.conf b/ucm2/codecs/rt715/init.conf index 6e07b2d..15a0571 100644 --- a/ucm2/codecs/rt715/init.conf +++ b/ucm2/codecs/rt715/init.conf @@ -7,4 +7,5 @@ BootSequence [ cset "name='rt715 ADC 25 Mux' 4" cset "name='rt715 ADC 27 Capture Switch' 1" cset "name='rt715 ADC 07 Capture Switch' 1" + cset "name='rt715 ADC 07 Capture Volume' 58" ] -- 2.29.2 From cf267cce6d553d4d436c166c23d3befc5476acef Mon Sep 17 00:00:00 2001 From: Hui Wang Date: Thu, 29 Oct 2020 13:34:02 +0800 Subject: [PATCH 09/24] sof-hda-dsp: Set Master Playback Switch on in the BootSequence Otherwise, the audio output will be muted by default if there is no /var/lib/alsa/asound.state. I have experienced this issue When newly install an OS. Signed-off-by: Hui Wang Signed-off-by: Jaroslav Kysela --- ucm2/HDA-Intel/init.conf | 1 + ucm2/sof-hda-dsp/sof-hda-dsp.conf | 1 + 2 files changed, 2 insertions(+) diff --git a/ucm2/HDA-Intel/init.conf b/ucm2/HDA-Intel/init.conf index 1a351a9..6310eb3 100644 --- a/ucm2/HDA-Intel/init.conf +++ b/ucm2/HDA-Intel/init.conf @@ -15,6 +15,7 @@ If.master { } True.BootSequence [ cset "name='Master Playback Volume' 60%" + cset "name='Master Playback Switch' on" ] } diff --git a/ucm2/sof-hda-dsp/sof-hda-dsp.conf b/ucm2/sof-hda-dsp/sof-hda-dsp.conf index c8069a6..79b54a9 100644 --- a/ucm2/sof-hda-dsp/sof-hda-dsp.conf +++ b/ucm2/sof-hda-dsp/sof-hda-dsp.conf @@ -24,6 +24,7 @@ If.master { } True.BootSequence [ cset "name='Master Playback Volume' 60%" + cset "name='Master Playback Switch' on" ] } -- 2.29.2 From 5405544752c18153acc310ee7e4a4bacda040dca Mon Sep 17 00:00:00 2001 From: Kai-Heng Feng Date: Thu, 27 Aug 2020 21:18:13 +0800 Subject: [PATCH 10/24] HDA-Intel/HiFi-dual: Add EnableSequence and DisableSequence for Speaker and Headphones BugLink: https://github.com/alsa-project/alsa-ucm-conf/pull/48 Signed-off-by: Kai-Heng Feng Signed-off-by: Jaroslav Kysela --- ucm2/HDA-Intel/HiFi-dual.conf | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/ucm2/HDA-Intel/HiFi-dual.conf b/ucm2/HDA-Intel/HiFi-dual.conf index cff948e..bacfd80 100644 --- a/ucm2/HDA-Intel/HiFi-dual.conf +++ b/ucm2/HDA-Intel/HiFi-dual.conf @@ -27,6 +27,14 @@ SectionDevice."Speaker" { PlaybackMixerElem "Speaker" } + EnableSequence [ + cset "name='Speaker Playback Switch' on" + ] + + DisableSequence [ + cset "name='Speaker Playback Switch' off" + ] + ConflictingDevice [ "Headphones" ] @@ -54,6 +62,14 @@ SectionDevice."Headphones" { JackHWMute "Speaker" } + EnableSequence [ + cset "name='Headphone Playback Switch' on" + ] + + DisableSequence [ + cset "name='Headphone Playback Switch' off" + ] + ConflictingDevice [ "Speaker" ] -- 2.29.2 From 5947daef124c84fae511233248196576dfbfab7c Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Wed, 16 Dec 2020 08:55:04 +0100 Subject: [PATCH 11/24] HDA-Intel/HiFi-dual: Add BootSequence and disable playback channels in verb init BugLink: https://github.com/alsa-project/alsa-ucm-conf/pull/48 Signed-off-by: Jaroslav Kysela --- ucm2/HDA-Intel/HDAudio-DualCodecs.conf | 12 ++++++++++++ ucm2/HDA-Intel/HiFi-dual.conf | 2 ++ 2 files changed, 14 insertions(+) diff --git a/ucm2/HDA-Intel/HDAudio-DualCodecs.conf b/ucm2/HDA-Intel/HDAudio-DualCodecs.conf index 8aaabd0..6fd7bd1 100644 --- a/ucm2/HDA-Intel/HDAudio-DualCodecs.conf +++ b/ucm2/HDA-Intel/HDAudio-DualCodecs.conf @@ -4,3 +4,15 @@ SectionUseCase."HiFi" { File "HiFi-dual.conf" Comment "Default" } + +BootSequence [ + cset "name='Headphone Playback Volume' 60%" + cset "name='Headphone Playback Switch' off" + cset "name='Speaker Playback Volume' 60%" + cset "name='Speaker Playback Switch' on" + cset "name='Front Playback Volume' 100%" + cset "name='Front Playback Switch' on" + cset "name='Rear-Panel Capture Volume' 100%" + cset "name='Rear-Panel Capture Switch' on" + cset "name='Input Source' Rear Mic" +] diff --git a/ucm2/HDA-Intel/HiFi-dual.conf b/ucm2/HDA-Intel/HiFi-dual.conf index bacfd80..f2c6915 100644 --- a/ucm2/HDA-Intel/HiFi-dual.conf +++ b/ucm2/HDA-Intel/HiFi-dual.conf @@ -8,6 +8,8 @@ SectionVerb { cset "name='Front Playback Switch' on" cset "name='Rear-Panel Capture Volume' 100%" cset "name='Rear-Panel Capture Switch' on" + cset "name='Headphone Playback Switch' off" + cset "name='Speaker Playback Switch' off" ] DisableSequence [ -- 2.29.2 From 5634db4be3ed435f3e59f30a71c3c3711162929d Mon Sep 17 00:00:00 2001 From: Jian-Hong Pan Date: Tue, 15 Dec 2020 16:54:03 +0800 Subject: [PATCH 12/24] chtrt5645: Enable Internal MIC of ECS EF20EA The ECS EF20EA uses a digital mic connected to the dmic2 pin, rather then the default analog mic. 1 [chtrt5645 ]: chtrt5645 - chtrt5645 Standard-EF20EA-1.0 Add a card long name match for this, so that the right config is used. BugLink: https://github.com/alsa-project/alsa-ucm-conf/pull/68 Signed-off-by: Jian-Hong Pan Signed-off-by: Jaroslav Kysela --- ucm2/chtrt5645/HiFi.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ucm2/chtrt5645/HiFi.conf b/ucm2/chtrt5645/HiFi.conf index 10b0a1c..30fad50 100644 --- a/ucm2/chtrt5645/HiFi.conf +++ b/ucm2/chtrt5645/HiFi.conf @@ -18,7 +18,7 @@ If.cfg-dmic2 { Condition { Type RegexMatch String "${CardLongName}" - Regex "(LENOVO.*LenovoMIIX320|MEDION.*Wingman)" + Regex "(LENOVO.*LenovoMIIX320|MEDION.*Wingman|Standard-EF20EA-1.0)" } True { Define.AnalogMic "" -- 2.29.2 From bdd05ac3396a3a09f3818aaa9157eb7ef07676d6 Mon Sep 17 00:00:00 2001 From: Hans de Goede Date: Sat, 9 Jan 2021 22:02:51 +0100 Subject: [PATCH 13/24] bytcr-rt5640: Add support for devices without speakers and/or an internal mic There are kernel patches pending upstream for the bytcr-rt5640 machine-driver to support devices without speakers and/or an internal mic. Since the UCM profile already conditionally loads the speaker and internal-mic codec include files, these will simply get skipped in this case, so this almost works with the current UCM profile without changes. The only troublesome part is the ConflictingDevice sections in the codec HeadPhones.conf and HeadsetMic.conf files, which refer to resp. a "Speaker" and a "Mic" device. Without any of the speaker or mic codec conf files being included there will not by any "Speaker" / "Mic" devices leading to an error while parsing the HeadPhones.conf / HeadsetMic.conf files. This commit makes the ConflictingDevice section conditional, fixing this. Cc: Rasmus Porsager Signed-off-by: Hans de Goede Signed-off-by: Jaroslav Kysela --- ucm2/bytcr-rt5640/HiFi-Components.conf | 28 +++++++++++++++++++++----- ucm2/bytcr-rt5640/HiFi-LongName.conf | 28 +++++++++++++++++++++----- ucm2/codecs/rt5640/HeadPhones.conf | 14 ++++++++++--- ucm2/codecs/rt5640/HeadsetMic.conf | 14 ++++++++++--- 4 files changed, 68 insertions(+), 16 deletions(-) diff --git a/ucm2/bytcr-rt5640/HiFi-Components.conf b/ucm2/bytcr-rt5640/HiFi-Components.conf index 2ce4f59..a76b42d 100644 --- a/ucm2/bytcr-rt5640/HiFi-Components.conf +++ b/ucm2/bytcr-rt5640/HiFi-Components.conf @@ -1,10 +1,16 @@ +Define.HaveSpeaker "" +Define.HaveInternalMic "" + If.spk { Condition { Type String Haystack "${CardComponents}" Needle "cfg-spk:2" } - True.Include.spk.File "/codecs/rt5640/Speaker.conf" + True { + Include.spk.File "/codecs/rt5640/Speaker.conf" + Define.HaveSpeaker "yes" + } } If.mono { @@ -13,7 +19,10 @@ If.mono { Haystack "${CardComponents}" Needle "cfg-spk:1" } - True.Include.mspk.File "/codecs/rt5640/MonoSpeaker.conf" + True { + Include.mspk.File "/codecs/rt5640/MonoSpeaker.conf" + Define.HaveSpeaker "yes" + } } Include.hs.File "/codecs/rt5640/HeadPhones.conf" @@ -24,7 +33,10 @@ If.dmic1 { Haystack "${CardComponents}" Needle "cfg-mic:dmic1" } - True.Include.dmic.File "/codecs/rt5640/DigitalMics.conf" + True { + Include.dmic.File "/codecs/rt5640/DigitalMics.conf" + Define.HaveInternalMic "yes" + } } If.in1 { @@ -33,7 +45,10 @@ If.in1 { Haystack "${CardComponents}" Needle "cfg-mic:in1" } - True.Include.mic1.File "/codecs/rt5640/IN1-InternalMic.conf" + True { + Include.mic1.File "/codecs/rt5640/IN1-InternalMic.conf" + Define.HaveInternalMic "yes" + } } If.in3 { @@ -42,7 +57,10 @@ If.in3 { Haystack "${CardComponents}" Needle "cfg-mic:in3" } - True.Include.mic3.File "/codecs/rt5640/IN3-InternalMic.conf" + True { + Include.mic3.File "/codecs/rt5640/IN3-InternalMic.conf" + Define.HaveInternalMic "yes" + } } Include.hsmic.File "/codecs/rt5640/HeadsetMic.conf" diff --git a/ucm2/bytcr-rt5640/HiFi-LongName.conf b/ucm2/bytcr-rt5640/HiFi-LongName.conf index c07f153..6cb5556 100644 --- a/ucm2/bytcr-rt5640/HiFi-LongName.conf +++ b/ucm2/bytcr-rt5640/HiFi-LongName.conf @@ -1,10 +1,16 @@ +Define.HaveSpeaker "" +Define.HaveInternalMic "" + If.spk { Condition { Type String Haystack "${CardLongName}" Needle "-stereo-spk" } - True.Include.spk.File "/codecs/rt5640/Speaker.conf" + True { + Include.spk.File "/codecs/rt5640/Speaker.conf" + Define.HaveSpeaker "yes" + } } If.mono { @@ -13,7 +19,10 @@ If.mono { Haystack "${CardLongName}" Needle "-mono-spk" } - True.Include.mspk.File "/codecs/rt5640/MonoSpeaker.conf" + True { + Include.mspk.File "/codecs/rt5640/MonoSpeaker.conf" + Define.HaveSpeaker "yes" + } } Include.hs.File "/codecs/rt5640/HeadPhones.conf" @@ -24,7 +33,10 @@ If.dmic1 { Haystack "${CardLongName}" Needle "-dmic1-mic" } - True.Include.dmic.File "/codecs/rt5640/DigitalMics.conf" + True { + Include.dmic.File "/codecs/rt5640/DigitalMics.conf" + Define.HaveInternalMic "yes" + } } If.in1 { @@ -33,7 +45,10 @@ If.in1 { Haystack "${CardLongName}" Needle "-in1-mic" } - True.Include.mic1.File "/codecs/rt5640/IN1-InternalMic.conf" + True { + Include.mic1.File "/codecs/rt5640/IN1-InternalMic.conf" + Define.HaveInternalMic "yes" + } } If.in3 { @@ -42,7 +57,10 @@ If.in3 { Haystack "${CardLongName}" Needle "-in3-mic" } - True.Include.mic3.File "/codecs/rt5640/IN3-InternalMic.conf" + True { + Include.mic3.File "/codecs/rt5640/IN3-InternalMic.conf" + Define.HaveInternalMic "yes" + } } Include.hsmic.File "/codecs/rt5640/HeadsetMic.conf" diff --git a/ucm2/codecs/rt5640/HeadPhones.conf b/ucm2/codecs/rt5640/HeadPhones.conf index 42151d6..b7707e5 100644 --- a/ucm2/codecs/rt5640/HeadPhones.conf +++ b/ucm2/codecs/rt5640/HeadPhones.conf @@ -1,9 +1,17 @@ SectionDevice."Headphones" { Comment "Headphones" - ConflictingDevice [ - "Speaker" - ] + If.have-spk { + Condition { + Type String + Empty "${var:HaveSpeaker}" + } + False { + ConflictingDevice [ + "Speaker" + ] + } + } EnableSequence [ cset "name='DAC MIXL INF1 Switch' on" diff --git a/ucm2/codecs/rt5640/HeadsetMic.conf b/ucm2/codecs/rt5640/HeadsetMic.conf index 7a8dfb8..f88b611 100644 --- a/ucm2/codecs/rt5640/HeadsetMic.conf +++ b/ucm2/codecs/rt5640/HeadsetMic.conf @@ -1,9 +1,17 @@ SectionDevice."Headset" { Comment "Headset Microphone" - ConflictingDevice [ - "Mic" - ] + If.have-mic { + Condition { + Type String + Empty "${var:HaveInternalMic}" + } + False { + ConflictingDevice [ + "Mic" + ] + } + } EnableSequence [ cset "name='Headset Mic Switch' on" -- 2.29.2 From cd02791e9360bcfa2cd4bed40cf5ddabb378ef93 Mon Sep 17 00:00:00 2001 From: Hans de Goede Date: Sat, 9 Jan 2021 22:02:52 +0100 Subject: [PATCH 14/24] rt5640: Move standard DAC setup to EnableSeq.conf No matter which output is used, we always need to setup the standard DAC config. Move this to the shared EnableSeq.conf to avoid having to duplicate it in various places. Signed-off-by: Hans de Goede Signed-off-by: Jaroslav Kysela --- ucm2/codecs/rt5640/EnableSeq.conf | 6 ++++++ ucm2/codecs/rt5640/HeadPhones.conf | 6 ------ ucm2/codecs/rt5640/MonoSpeaker.conf | 6 ------ ucm2/codecs/rt5640/Speaker.conf | 6 ------ 4 files changed, 6 insertions(+), 18 deletions(-) diff --git a/ucm2/codecs/rt5640/EnableSeq.conf b/ucm2/codecs/rt5640/EnableSeq.conf index cbf4038..145a23b 100644 --- a/ucm2/codecs/rt5640/EnableSeq.conf +++ b/ucm2/codecs/rt5640/EnableSeq.conf @@ -1,5 +1,11 @@ EnableSequence [ # RT5640 default output routing + cset "name='DAC MIXL INF1 Switch' on" + cset "name='DAC MIXR INF1 Switch' on" + cset "name='Stereo DAC MIXL DAC L1 Switch' on" + cset "name='Stereo DAC MIXR DAC R1 Switch' on" + cset "name='Stereo DAC MIXL DAC L2 Switch' on" + cset "name='Stereo DAC MIXR DAC R2 Switch' on" cset "name='OUT MIXL DAC L1 Switch' on" cset "name='OUT MIXR DAC R1 Switch' on" diff --git a/ucm2/codecs/rt5640/HeadPhones.conf b/ucm2/codecs/rt5640/HeadPhones.conf index b7707e5..a9e4d20 100644 --- a/ucm2/codecs/rt5640/HeadPhones.conf +++ b/ucm2/codecs/rt5640/HeadPhones.conf @@ -14,12 +14,6 @@ SectionDevice."Headphones" { } EnableSequence [ - cset "name='DAC MIXL INF1 Switch' on" - cset "name='DAC MIXR INF1 Switch' on" - cset "name='Stereo DAC MIXL DAC L1 Switch' on" - cset "name='Stereo DAC MIXR DAC R1 Switch' on" - cset "name='Stereo DAC MIXL DAC L2 Switch' on" - cset "name='Stereo DAC MIXR DAC R2 Switch' on" cset "name='HPO MIX HPVOL Switch' on" cset "name='Headphone Switch' on" cset "name='HP Channel Switch' on" diff --git a/ucm2/codecs/rt5640/MonoSpeaker.conf b/ucm2/codecs/rt5640/MonoSpeaker.conf index ddc7ba8..23cf34c 100644 --- a/ucm2/codecs/rt5640/MonoSpeaker.conf +++ b/ucm2/codecs/rt5640/MonoSpeaker.conf @@ -6,12 +6,6 @@ SectionDevice."Speaker" { ] EnableSequence [ - cset "name='DAC MIXL INF1 Switch' on" - cset "name='DAC MIXR INF1 Switch' on" - cset "name='Stereo DAC MIXL DAC L1 Switch' on" - cset "name='Stereo DAC MIXR DAC R1 Switch' on" - cset "name='Stereo DAC MIXL DAC L2 Switch' on" - cset "name='Stereo DAC MIXR DAC R2 Switch' on" cset "name='SPK MIXL DAC L1 Switch' on" cset "name='SPK MIXR DAC R1 Switch' on" cset "name='SPOL MIX SPKVOL L Switch' on" diff --git a/ucm2/codecs/rt5640/Speaker.conf b/ucm2/codecs/rt5640/Speaker.conf index 411cd13..422cfdf 100644 --- a/ucm2/codecs/rt5640/Speaker.conf +++ b/ucm2/codecs/rt5640/Speaker.conf @@ -6,12 +6,6 @@ SectionDevice."Speaker" { ] EnableSequence [ - cset "name='DAC MIXL INF1 Switch' on" - cset "name='DAC MIXR INF1 Switch' on" - cset "name='Stereo DAC MIXL DAC L1 Switch' on" - cset "name='Stereo DAC MIXR DAC R1 Switch' on" - cset "name='Stereo DAC MIXL DAC L2 Switch' on" - cset "name='Stereo DAC MIXR DAC R2 Switch' on" cset "name='SPK MIXL DAC L1 Switch' on" cset "name='SPK MIXR DAC R1 Switch' on" cset "name='SPOL MIX SPKVOL L Switch' on" -- 2.29.2 From 95587ae8b75134c4bbc2cec0181e5d529826c9c4 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Thu, 14 Jan 2021 18:31:24 +0100 Subject: [PATCH 15/24] bytcr-rt5640: fix the execution order The includes must be run _after_ defines. The Include directives have precedence. Put everything to If compound. Fixes: bdd05ac339 ("bytcr-rt5640: Add support for devices without speakers and/or an internal mic") Signed-off-by: Jaroslav Kysela --- ucm2/bytcr-rt5640/HiFi-Components.conf | 10 ++++++++-- ucm2/bytcr-rt5640/HiFi-LongName.conf | 10 ++++++++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/ucm2/bytcr-rt5640/HiFi-Components.conf b/ucm2/bytcr-rt5640/HiFi-Components.conf index a76b42d..1999717 100644 --- a/ucm2/bytcr-rt5640/HiFi-Components.conf +++ b/ucm2/bytcr-rt5640/HiFi-Components.conf @@ -25,7 +25,10 @@ If.mono { } } -Include.hs.File "/codecs/rt5640/HeadPhones.conf" +If.hp { + Condition { Type String Empty "" } + True.Include.hs.File "/codecs/rt5640/HeadPhones.conf" +} If.dmic1 { Condition { @@ -63,4 +66,7 @@ If.in3 { } } -Include.hsmic.File "/codecs/rt5640/HeadsetMic.conf" +If.hsmic { + Condition { Type String Empty "" } + True.Include.hsmic.File "/codecs/rt5640/HeadsetMic.conf" +} diff --git a/ucm2/bytcr-rt5640/HiFi-LongName.conf b/ucm2/bytcr-rt5640/HiFi-LongName.conf index 6cb5556..34acef8 100644 --- a/ucm2/bytcr-rt5640/HiFi-LongName.conf +++ b/ucm2/bytcr-rt5640/HiFi-LongName.conf @@ -25,7 +25,10 @@ If.mono { } } -Include.hs.File "/codecs/rt5640/HeadPhones.conf" +If.hp { + Condition { Type String Empty "" } + True.Include.hs.File "/codecs/rt5640/HeadPhones.conf" +} If.dmic1 { Condition { @@ -63,4 +66,7 @@ If.in3 { } } -Include.hsmic.File "/codecs/rt5640/HeadsetMic.conf" +If.hsmic { + Condition { Type String Empty "" } + True.Include.hsmic.File "/codecs/rt5640/HeadsetMic.conf" +} -- 2.29.2 From 09e5271401480297c2c9c0b753df9705123a1af1 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Thu, 14 Jan 2021 11:03:56 +0100 Subject: [PATCH 16/24] ucm2: add initial configuration for TRX40 Gigabyte Aorus Master Audio BugLink: https://github.com/alsa-project/alsa-ucm-conf/pull/25 Signed-off-by: Jaroslav Kysela --- ...Gigabyte-Aorus-Master-Front-Headphone.conf | 1 + ...Gigabyte-Aorus-Master-Main-Audio-HiFi.conf | 61 +++++++++++++++++++ .../Gigabyte-Aorus-Master-Main-Audio.conf | 6 ++ 3 files changed, 68 insertions(+) create mode 120000 ucm2/USB-Audio/Gigabyte-Aorus-Master-Front-Headphone.conf create mode 100644 ucm2/USB-Audio/Gigabyte-Aorus-Master-Main-Audio-HiFi.conf create mode 100644 ucm2/USB-Audio/Gigabyte-Aorus-Master-Main-Audio.conf diff --git a/ucm2/USB-Audio/Gigabyte-Aorus-Master-Front-Headphone.conf b/ucm2/USB-Audio/Gigabyte-Aorus-Master-Front-Headphone.conf new file mode 120000 index 0000000..1376437 --- /dev/null +++ b/ucm2/USB-Audio/Gigabyte-Aorus-Master-Front-Headphone.conf @@ -0,0 +1 @@ +../module/lib/linked.conf \ No newline at end of file diff --git a/ucm2/USB-Audio/Gigabyte-Aorus-Master-Main-Audio-HiFi.conf b/ucm2/USB-Audio/Gigabyte-Aorus-Master-Main-Audio-HiFi.conf new file mode 100644 index 0000000..5c24165 --- /dev/null +++ b/ucm2/USB-Audio/Gigabyte-Aorus-Master-Main-Audio-HiFi.conf @@ -0,0 +1,61 @@ +Define.SecondaryCardId "$${CardIdByName:Aorus Master Front Headphone}" + +SectionDevice."Speaker" { + Comment "Speakers" + Value { + PlaybackChannels 8 + PlaybackPriority 200 + PlaybackPCM "hw:${CardId}" + JackControl "Line Out Jack" + PlaybackMixerElem "Line Out" + } +} + +SectionDevice."Headphones" { + Comment "Front Headphones" + Value { + PlaybackPriority 300 + PlaybackPCM "hw:${var:SecondaryCardId}" + JackCTL "hw:${var:SecondaryCardId}" + JackControl "Headphone - Output Jack" + } +} + +SectionDevice."SPDIF" { + Comment "S/PDIF Out" + Value { + PlaybackPriority 100 + PlaybackPCM "hw:${CardId},1" + # PlaybackMixerElem "IEC958" + } +} + +SectionDevice."Line" { + Comment "Line In" + Value { + CapturePriority 100 + CapturePCM "hw:${CardId}" + JackControl "Line Jack" + CaptureMixerElem "Line" + } +} + +SectionDevice."Mic1" { + Comment "Microphone" + Value { + CapturePriority 200 + CapturePCM "hw:${CardId},1" + JackControl "Mic Jack" + CaptureMixerElem "Mic" + } +} + +SectionDevice."Mic2" { + Comment "Front Microphone" + Value { + CapturePriority 300 + CapturePCM "hw:${CardId},2" + JackControl "Front Mic Jack" + CaptureMixerElem "Front Mic" + } +} diff --git a/ucm2/USB-Audio/Gigabyte-Aorus-Master-Main-Audio.conf b/ucm2/USB-Audio/Gigabyte-Aorus-Master-Main-Audio.conf new file mode 100644 index 0000000..656b989 --- /dev/null +++ b/ucm2/USB-Audio/Gigabyte-Aorus-Master-Main-Audio.conf @@ -0,0 +1,6 @@ +Syntax 3 +Comment "Gigabyte Aorus Integrated Audio" +SectionUseCase."HiFi" { + File "Gigabyte-Aorus-Master-Main-Audio-HiFi.conf" + Comment "Default Alsa Profile" +} -- 2.29.2 From 062e4710c524283c5d11cbf99931b24c6d963f98 Mon Sep 17 00:00:00 2001 From: Marijn Suijten Date: Thu, 14 Jan 2021 14:11:50 +0100 Subject: [PATCH 17/24] USB-Audio/ALC1220: Bump analog Speaker priority over S/PDIF The `S/PDIF` port does not have any jack sensing, and with a priority higher than the `Speakers` it will always be selected by default instead of the `Speakers` even if unplugged. Swapping the priorities around allows analog `Speakers` to be selected first, _if_ they are plugged in. Otherwise `S/PDIF` is used. Signed-off-by: Marijn Suijten Signed-off-by: Jaroslav Kysela --- ucm2/USB-Audio/Realtek-ALC1220-VB-Desktop-HiFi.conf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ucm2/USB-Audio/Realtek-ALC1220-VB-Desktop-HiFi.conf b/ucm2/USB-Audio/Realtek-ALC1220-VB-Desktop-HiFi.conf index 344db83..cbf7154 100644 --- a/ucm2/USB-Audio/Realtek-ALC1220-VB-Desktop-HiFi.conf +++ b/ucm2/USB-Audio/Realtek-ALC1220-VB-Desktop-HiFi.conf @@ -2,7 +2,7 @@ SectionDevice."Speaker" { Comment "Speakers" Value { PlaybackChannels 8 - PlaybackPriority 100 + PlaybackPriority 200 PlaybackPCM "hw:${CardId}" JackControl "Speaker Jack" PlaybackMixerElem "Speaker" @@ -22,7 +22,7 @@ SectionDevice."Headphones" { SectionDevice."SPDIF" { Comment "S/PDIF Out" Value { - PlaybackPriority 200 + PlaybackPriority 100 PlaybackPCM "hw:${CardId},2" PlaybackMixerElem "IEC958" } -- 2.29.2 From 8e875c9467cc72e53e53104b07d5515f3ef0a779 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Fri, 15 Jan 2021 14:03:35 +0100 Subject: [PATCH 18/24] USB-Audio/ALC1220: fix indentation for Speaker device Signed-off-by: Jaroslav Kysela --- ucm2/USB-Audio/Realtek-ALC1220-VB-Desktop-HiFi.conf | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ucm2/USB-Audio/Realtek-ALC1220-VB-Desktop-HiFi.conf b/ucm2/USB-Audio/Realtek-ALC1220-VB-Desktop-HiFi.conf index cbf7154..0d75384 100644 --- a/ucm2/USB-Audio/Realtek-ALC1220-VB-Desktop-HiFi.conf +++ b/ucm2/USB-Audio/Realtek-ALC1220-VB-Desktop-HiFi.conf @@ -1,11 +1,11 @@ SectionDevice."Speaker" { Comment "Speakers" Value { - PlaybackChannels 8 - PlaybackPriority 200 - PlaybackPCM "hw:${CardId}" - JackControl "Speaker Jack" - PlaybackMixerElem "Speaker" + PlaybackChannels 8 + PlaybackPriority 200 + PlaybackPCM "hw:${CardId}" + JackControl "Speaker Jack" + PlaybackMixerElem "Speaker" } } -- 2.29.2 From 5503703ab95d5ed40b1da138016777bb5429190e Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Fri, 15 Jan 2021 14:55:53 +0100 Subject: [PATCH 19/24] USB-Audio: fix indentation in Gigabyte-Aorus-Master-Main-Audio-HiFi.conf Signed-off-by: Jaroslav Kysela --- .../Gigabyte-Aorus-Master-Main-Audio-HiFi.conf | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ucm2/USB-Audio/Gigabyte-Aorus-Master-Main-Audio-HiFi.conf b/ucm2/USB-Audio/Gigabyte-Aorus-Master-Main-Audio-HiFi.conf index 5c24165..37800fb 100644 --- a/ucm2/USB-Audio/Gigabyte-Aorus-Master-Main-Audio-HiFi.conf +++ b/ucm2/USB-Audio/Gigabyte-Aorus-Master-Main-Audio-HiFi.conf @@ -3,11 +3,11 @@ Define.SecondaryCardId "$${CardIdByName:Aorus Master Front Headphone}" SectionDevice."Speaker" { Comment "Speakers" Value { - PlaybackChannels 8 - PlaybackPriority 200 - PlaybackPCM "hw:${CardId}" - JackControl "Line Out Jack" - PlaybackMixerElem "Line Out" + PlaybackChannels 8 + PlaybackPriority 200 + PlaybackPCM "hw:${CardId}" + JackControl "Line Out Jack" + PlaybackMixerElem "Line Out" } } -- 2.29.2 From eaa5eacd3e068471537888dee627751dc35e714a Mon Sep 17 00:00:00 2001 From: Hans de Goede Date: Wed, 16 Dec 2020 16:38:37 +0100 Subject: [PATCH 20/24] chtnau8824: Add a SST define/variable Add a SST define which gets set to "yes" when using the SST driver and to "" when not using the SST driver; And decide if platforms/bytcr/PlatformEnableSeq.conf should be included or not based on this. This is a preparation patch for adding SOF support. Signed-off-by: Hans de Goede Signed-off-by: Jaroslav Kysela --- ucm2/chtnau8824/HiFi.conf | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/ucm2/chtnau8824/HiFi.conf b/ucm2/chtnau8824/HiFi.conf index 105f360..b36588f 100644 --- a/ucm2/chtnau8824/HiFi.conf +++ b/ucm2/chtnau8824/HiFi.conf @@ -1,5 +1,16 @@ Define.Speaker "Speaker" Define.Mic "InternalMic" +Define.SST "yes" + +If.Controls { + Condition { + Type ControlExists + Control "name='media0_in Gain 0 Switch'" + } + False { + Define.SST "" + } +} If.cfg-mspk { Condition { @@ -33,12 +44,12 @@ SectionVerb { Include.e.File "/codecs/nau8824/EnableSeq.conf" - If.Controls { + If.SST { Condition { - Type ControlExists - Control "name='media0_in Gain 0 Switch'" + Type String + Empty "${var:SST}" } - True { + False { Include.pe { File "/platforms/bytcr/PlatformEnableSeq.conf" Before.EnableSequence "0" -- 2.29.2 From 4e0369b4fcebde195a38d5b90c73b08f28e0047a Mon Sep 17 00:00:00 2001 From: Takashi Iwai Date: Thu, 21 Jan 2021 11:15:02 +0100 Subject: [PATCH 21/24] kblrt5660: Fix file permissions The exec bit was set wrongly on those files. Fix them. Signed-off-by: Takashi Iwai --- ucm2/kblrt5660/Hdmi1.conf | 0 ucm2/kblrt5660/Hdmi2.conf | 0 ucm2/kblrt5660/HiFi.conf | 0 ucm2/kblrt5660/kblrt5660.conf | 0 4 files changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 ucm2/kblrt5660/Hdmi1.conf mode change 100755 => 100644 ucm2/kblrt5660/Hdmi2.conf mode change 100755 => 100644 ucm2/kblrt5660/HiFi.conf mode change 100755 => 100644 ucm2/kblrt5660/kblrt5660.conf diff --git a/ucm2/kblrt5660/Hdmi1.conf b/ucm2/kblrt5660/Hdmi1.conf old mode 100755 new mode 100644 diff --git a/ucm2/kblrt5660/Hdmi2.conf b/ucm2/kblrt5660/Hdmi2.conf old mode 100755 new mode 100644 diff --git a/ucm2/kblrt5660/HiFi.conf b/ucm2/kblrt5660/HiFi.conf old mode 100755 new mode 100644 diff --git a/ucm2/kblrt5660/kblrt5660.conf b/ucm2/kblrt5660/kblrt5660.conf old mode 100755 new mode 100644 -- 2.29.2 From 96e1c19a6bcc1e353f677966d4d93399204af0ec Mon Sep 17 00:00:00 2001 From: Hans de Goede Date: Wed, 16 Dec 2020 16:38:38 +0100 Subject: [PATCH 22/24] chtnau8824: Add support for using the SOF driver The old (and currently the default) SST driver uses TDM 4 slots 24 bit as wire format to the codec. Where as the new SOF driver uses standard I2S 2 channel 24 bit. Normally this should not impact the UCM settings, but on the NAU8824 the "DAC Right Channel Source" mixer setting must be set to 1 when using TDM 4 slots and to 0 when using I2S 2 channel mode. Getting this wrong (in either case) results in the right channel not outputting any sound. This commit introduces a RightOutputChannel variable which gets set to 0/1 depending on the driver and then uses that for the "DAC Right Channel Source" mixer setting so that we do the right thing depending on the driver. This has been tested on the following devices: Medion E2215T: Stereo speakers, analog mic Medion E2228T: Stereo speakers, stereo digital mics Cube iWork 8 Air: Mono speaker, analog mic Signed-off-by: Hans de Goede Signed-off-by: Jaroslav Kysela --- ucm2/chtnau8824/HiFi.conf | 2 ++ ucm2/codecs/nau8824/EnableSeq.conf | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/ucm2/chtnau8824/HiFi.conf b/ucm2/chtnau8824/HiFi.conf index b36588f..c3d830d 100644 --- a/ucm2/chtnau8824/HiFi.conf +++ b/ucm2/chtnau8824/HiFi.conf @@ -1,6 +1,7 @@ Define.Speaker "Speaker" Define.Mic "InternalMic" Define.SST "yes" +Define.RightOutputChannel 1 If.Controls { Condition { @@ -9,6 +10,7 @@ If.Controls { } False { Define.SST "" + Define.RightOutputChannel 0 } } diff --git a/ucm2/codecs/nau8824/EnableSeq.conf b/ucm2/codecs/nau8824/EnableSeq.conf index 3650d06..660856f 100644 --- a/ucm2/codecs/nau8824/EnableSeq.conf +++ b/ucm2/codecs/nau8824/EnableSeq.conf @@ -1,7 +1,7 @@ EnableSequence [ # Playback TDM configuration cset "name='DACL Channel Source' 0" - cset "name='DACR Channel Source' 1" + cset "name='DACR Channel Source' ${var:RightOutputChannel}" # Input Configuration cset "name='DMIC1 Enable Switch' off" cset "name='DMIC2 Enable Switch' off" -- 2.29.2 From 3bea51c3188257c5bc0eaaed922d1f714e3508c7 Mon Sep 17 00:00:00 2001 From: Pierre-Louis Bossart Date: Thu, 21 Jan 2021 14:38:26 -0600 Subject: [PATCH 23/24] sof-hda-dsp: update handling of cfg-dmics strings Existing platforms can have 1,2,3 or 4 microphones. The SOF firmware will generate 2 or 4 channels. Since by default CaptureChannels is 2, we need to add the case for cfg-dmics = 3. Signed-off-by: Pierre-Louis Bossart Signed-off-by: Jaroslav Kysela --- ucm2/sof-hda-dsp/HiFi.conf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ucm2/sof-hda-dsp/HiFi.conf b/ucm2/sof-hda-dsp/HiFi.conf index a250331..2c02c15 100644 --- a/ucm2/sof-hda-dsp/HiFi.conf +++ b/ucm2/sof-hda-dsp/HiFi.conf @@ -16,9 +16,9 @@ SectionDevice."Mic1" { CapturePCM "hw:${CardId},6" If.chn { Condition { - Type String - Haystack "${CardComponents}" - Needle "cfg-dmics:4" + Type RegexMatch + Regex "cfg-dmics:[34]" + String "${CardComponents}" } True { CaptureChannels 4 -- 2.29.2 From 889c5b9809f1635005d77871bb9abc09df6a3cc3 Mon Sep 17 00:00:00 2001 From: Pierre-Louis Bossart Date: Thu, 21 Jan 2021 14:44:05 -0600 Subject: [PATCH 24/24] sof-soundwire: add support for dmics the pinmux allows for SoundWire to be used on e.g. link0 and link1, and the rest of the pins can be assigned for dmic usages. We currently don't track this capability which means users don't see a capture device, e.g. on HP Spectre x360. The sof_sdw machine driver was modified to report the cfg-dmics string, possible values are 0..4. BugLink: https://github.com/thesofproject/linux/issues/2700 BugLink: https://github.com/alsa-project/alsa-ucm-conf/pull/75 Signed-off-by: Pierre-Louis Bossart Signed-off-by: Jaroslav Kysela --- ucm2/sof-soundwire/dmic.conf | 21 +++++++++++++++++++++ ucm2/sof-soundwire/sof-soundwire.conf | 5 +++++ 2 files changed, 26 insertions(+) create mode 100644 ucm2/sof-soundwire/dmic.conf diff --git a/ucm2/sof-soundwire/dmic.conf b/ucm2/sof-soundwire/dmic.conf new file mode 100644 index 0000000..1f704a5 --- /dev/null +++ b/ucm2/sof-soundwire/dmic.conf @@ -0,0 +1,21 @@ +SectionDevice."Mic" { + Comment "Digital Microphone" + + Value { + CapturePriority 100 + CapturePCM "hw:${CardId},3" + If.chn { + Condition { + Type RegexMatch + Regex "[34]" + String "${var:Mics1}" + } + True { + CaptureChannels 4 + } + } + CaptureMixerElem "Dmic0" + CaptureVolume "Dmic0 Capture Volume" + CaptureSwitch "Dmic0 Capture Switch" + } +} diff --git a/ucm2/sof-soundwire/sof-soundwire.conf b/ucm2/sof-soundwire/sof-soundwire.conf index 2ba44be..ec8b01e 100644 --- a/ucm2/sof-soundwire/sof-soundwire.conf +++ b/ucm2/sof-soundwire/sof-soundwire.conf @@ -11,6 +11,7 @@ Define { SpeakerAmps1 "0" HeadsetCodec1 "" MicCodec1 "" + Mics1 "0" } DefineRegex { @@ -34,6 +35,10 @@ DefineRegex { Regex " mic:([a-z0-9]+)" String "${CardComponents}" } + Mics { + Regex " cfg-mics:([1-9][0-9]*)" + String "${CardComponents}" + } } If.hs_init { -- 2.29.2