diff -Nru alsa-ucm-conf-1.2.2/debian/changelog alsa-ucm-conf-1.2.2/debian/changelog --- alsa-ucm-conf-1.2.2/debian/changelog 2020-05-25 14:36:48.000000000 +0800 +++ alsa-ucm-conf-1.2.2/debian/changelog 2020-08-08 14:39:39.000000000 +0800 @@ -1,3 +1,23 @@ +alsa-ucm-conf (1.2.2-1ubuntu2) groovy; urgency=medium + + * d/p/0003-ucm-fix-wrong-If-in-sequence-in-HiFi-dual.conf.patch + * d/p/0004-ucm2-add-initial-ucm.conf-for-the-latest-alsa-lib.patch + * d/p/0005-sof-hda-dsp-don-t-fail-if-Auto-Mute-control-is-not-p.patch + * d/p/0006-ucm.conf-add-support-for-the-kernel-module-name-tree.patch + * d/p/0007-sof-hda-dsp-make-Headphone-Playback-Switch-condition.patch + * d/p/0008-sof-soundwire-initial-UCM2-version.patch + * d/p/0009-sof-soundwire-cleanups-recommended-by-the-ucm-valida.patch + * d/p/0010-sof-soundwire-rewrite-for-syntax-3.patch + * d/p/0011-HDA-Intel-add-support-for-AMD-acp-microphone-devices.patch + * d/p/0012-hda-hdmi-add-HDMI4-HDMI5-HDMI6-devices.patch + * d/p/0013-amd-renoir-acp-use-the-machine-driver-s-name-for-top.patch + * d/p/0014-amd-renoir-acp-add-syntax-in-the-Linked.patch + * d/p/0015-HDA-Intel-only-bind-the-acp-dmic-to-the-soundcard-wi.patch + * d/p/0016-Fix-invalid-Regex-Type-in-various-Condition-blocks.patch + * (LP: #1889217) + + -- Hui Wang Sat, 08 Aug 2020 14:39:39 +0800 + alsa-ucm-conf (1.2.2-1ubuntu1) groovy; urgency=medium * Fix the audio crash on the machine without Intel HDMI audio (lp: #1874698) diff -Nru alsa-ucm-conf-1.2.2/debian/patches/0003-ucm-fix-wrong-If-in-sequence-in-HiFi-dual.conf.patch alsa-ucm-conf-1.2.2/debian/patches/0003-ucm-fix-wrong-If-in-sequence-in-HiFi-dual.conf.patch --- alsa-ucm-conf-1.2.2/debian/patches/0003-ucm-fix-wrong-If-in-sequence-in-HiFi-dual.conf.patch 1970-01-01 08:00:00.000000000 +0800 +++ alsa-ucm-conf-1.2.2/debian/patches/0003-ucm-fix-wrong-If-in-sequence-in-HiFi-dual.conf.patch 2020-08-08 14:37:45.000000000 +0800 @@ -0,0 +1,47 @@ +From 9199204e37b32a00cdc314615f23a283828a3a61 Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Mon, 25 May 2020 20:57:43 +0200 +Subject: [PATCH 03/14] ucm: fix wrong If in sequence in HiFi-dual.conf + +Signed-off-by: Jaroslav Kysela +(cherry picked from commit 63ae90d6366b9a787baf9af3ebed4207679b0789) +Signed-off-by: Hui Wang +--- + ucm2/HDA-Intel/HiFi-dual.conf | 19 +++++++++++-------- + 1 file changed, 11 insertions(+), 8 deletions(-) + +diff --git a/ucm2/HDA-Intel/HiFi-dual.conf b/ucm2/HDA-Intel/HiFi-dual.conf +index 174fef4..e0e814f 100644 +--- a/ucm2/HDA-Intel/HiFi-dual.conf ++++ b/ucm2/HDA-Intel/HiFi-dual.conf +@@ -74,16 +74,19 @@ SectionDevice."Line2" { + + EnableSequence [ + cset "name='Input Source' Line" +- If.0 { +- Condition { +- Type ControlExists +- Control "name='Line Boost Volume'" +- } +- True { ++ ] ++ ++ If.0 { ++ Condition { ++ Type ControlExists ++ Control "name='Line Boost Volume'" ++ } ++ True { ++ EnableSequence [ + cset "name='Line Boost Volume' 3" +- } ++ ] + } +- ] ++ } + } + + SectionDevice."Mic2" { +-- +2.17.1 + diff -Nru alsa-ucm-conf-1.2.2/debian/patches/0004-ucm2-add-initial-ucm.conf-for-the-latest-alsa-lib.patch alsa-ucm-conf-1.2.2/debian/patches/0004-ucm2-add-initial-ucm.conf-for-the-latest-alsa-lib.patch --- alsa-ucm-conf-1.2.2/debian/patches/0004-ucm2-add-initial-ucm.conf-for-the-latest-alsa-lib.patch 1970-01-01 08:00:00.000000000 +0800 +++ alsa-ucm-conf-1.2.2/debian/patches/0004-ucm2-add-initial-ucm.conf-for-the-latest-alsa-lib.patch 2020-08-08 14:37:45.000000000 +0800 @@ -0,0 +1,115 @@ +From e4f3a366fcff6703948017b6e3335a6a23744f46 Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Wed, 27 May 2020 12:28:32 +0200 +Subject: [PATCH 04/14] ucm2: add initial ucm.conf for the latest alsa-lib + +Signed-off-by: Jaroslav Kysela +(cherry picked from commit 24ac1523e51469bdfa2ebb5f5dbec35743935403) +Signed-off-by: Hui Wang +--- + ucm2/ucm.conf | 93 +++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 93 insertions(+) + create mode 100644 ucm2/ucm.conf + +diff --git a/ucm2/ucm.conf b/ucm2/ucm.conf +new file mode 100644 +index 0000000..29bef5c +--- /dev/null ++++ b/ucm2/ucm.conf +@@ -0,0 +1,93 @@ ++# ++# This is the toplevel file included from the alsa-lib. ++# ++# It allows to add extra lookups for the old kernels or so. ++# ++# You may specify the directory (relative to the toplevel) and ++# the master configuration file which defines the verbs. ++# ++ ++# ++# Syntax version is reset for the master configuration file. ++# ++ ++Syntax 3 ++ ++If.driver { ++ Condition { ++ Type String ++ Empty "${CardNumber}" ++ } ++ True { ++ ++ # ++ # The last probed path for no-hw-card: ++ # ++ # ucm2/${OpenName}/${OpenName}.conf ++ # ucm/${OpenName}/${OpenName}.conf ++ # ++ ++ UseCasePath { ++ legacy { ++ Directory "${OpenName}" ++ File "${OpenName}.conf" ++ } ++ v1_legacy { ++ Version 1 ++ Directory "${OpenName}" ++ File "${OpenName}.conf" ++ } ++ } ++ ++ } ++ False { ++ ++ # ++ # The last probed path when hw-card is found: ++ # ++ # ucm2/${CardDriver}/${CardLongName}.conf ++ # ucm2/${CardDriver}/${CardDriver}.conf ++ # ucm/${CardLongName}/${CardLongName}.conf ++ # ucm/${CardName}/${CardName}.conf or \ ++ # ucm/${OpenName}/${OpenName}.conf ++ # ++ ++ UseCasePath { ++ longname { ++ Directory "${CardDriver}" ++ File "${CardLongName}.conf" ++ } ++ driver { ++ Directory "${CardDriver}" ++ File "${CardDriver}.conf" ++ } ++ v1_longname { ++ Version 1 ++ Directory "${CardLongName}" ++ File "${CardLongName}.conf" ++ } ++ } ++ ++ If.hw { ++ Condition { ++ Type String ++ Haystack "${OpenName}.conf" ++ Needle "hw:" ++ } ++ True { ++ UseCasePath.v1_cardnamme { ++ Version 1 ++ Directory "${CardName}" ++ File "${CardName}.conf" ++ } ++ } ++ False { ++ UseCasePath.v1_openname { ++ Version 1 ++ Directory "${OpenName}" ++ File "${OpenName}.conf" ++ } ++ } ++ } ++ } ++} +-- +2.17.1 + diff -Nru alsa-ucm-conf-1.2.2/debian/patches/0005-sof-hda-dsp-don-t-fail-if-Auto-Mute-control-is-not-p.patch alsa-ucm-conf-1.2.2/debian/patches/0005-sof-hda-dsp-don-t-fail-if-Auto-Mute-control-is-not-p.patch --- alsa-ucm-conf-1.2.2/debian/patches/0005-sof-hda-dsp-don-t-fail-if-Auto-Mute-control-is-not-p.patch 1970-01-01 08:00:00.000000000 +0800 +++ alsa-ucm-conf-1.2.2/debian/patches/0005-sof-hda-dsp-don-t-fail-if-Auto-Mute-control-is-not-p.patch 2020-08-08 14:37:45.000000000 +0800 @@ -0,0 +1,46 @@ +From ffe77aedcf378b95f45d51ec65d313156c957343 Mon Sep 17 00:00:00 2001 +From: Kai Vehmanen +Date: Wed, 10 Jun 2020 17:14:16 +0300 +Subject: [PATCH 05/14] sof-hda-dsp: don't fail if Auto-Mute control is not + present + +The "Auto-Mute Mode" control is not present in all HDA codecs. +The generic SOF HDA UCM file should be robust enough to handle +these cases as well. + +Signed-off-by: Kai Vehmanen +Signed-off-by: Jaroslav Kysela +(cherry picked from commit 4c1189fdcb4819df6c36cf490d17f532f82c8bbe) +Signed-off-by: Hui Wang +--- + ucm2/sof-hda-dsp/HiFi.conf | 14 +++++++++++--- + 1 file changed, 11 insertions(+), 3 deletions(-) + +diff --git a/ucm2/sof-hda-dsp/HiFi.conf b/ucm2/sof-hda-dsp/HiFi.conf +index 9a82930..eea6ed9 100644 +--- a/ucm2/sof-hda-dsp/HiFi.conf ++++ b/ucm2/sof-hda-dsp/HiFi.conf +@@ -1,9 +1,17 @@ + # Use case Configuration for sof-hda-dsp + + SectionVerb { +- EnableSequence [ +- cset "name='Auto-Mute Mode' 'Disabled'" +- ] ++ If.automute { ++ Condition { ++ Type ControlExists ++ Control "name='Auto-Mute Mode'" ++ } ++ True { ++ EnableSequence [ ++ cset "name='Auto-Mute Mode' 'Disabled'" ++ ] ++ } ++ } + } + + SectionDevice."Headphones" { +-- +2.17.1 + diff -Nru alsa-ucm-conf-1.2.2/debian/patches/0006-ucm.conf-add-support-for-the-kernel-module-name-tree.patch alsa-ucm-conf-1.2.2/debian/patches/0006-ucm.conf-add-support-for-the-kernel-module-name-tree.patch --- alsa-ucm-conf-1.2.2/debian/patches/0006-ucm.conf-add-support-for-the-kernel-module-name-tree.patch 1970-01-01 08:00:00.000000000 +0800 +++ alsa-ucm-conf-1.2.2/debian/patches/0006-ucm.conf-add-support-for-the-kernel-module-name-tree.patch 2020-08-08 14:37:45.000000000 +0800 @@ -0,0 +1,181 @@ +From 1fbef6c6c06cfeb41a1dc4f1e9c8c6ae45906d12 Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Mon, 22 Jun 2020 17:52:54 +0200 +Subject: [PATCH 06/14] ucm.conf: add support for the kernel module name tree + +It seems that some ASoC drivers (mainly created from the DT tree) +does not offer any good identification for the common part. +This change adds the sysfs kernel module name lookup to +module/.conf . + +Also, modularize V1, V2Name, V2Module blocks. The V1 compatibility +is turned off by default now. + +Signed-off-by: Jaroslav Kysela +(cherry picked from commit d001c8de287f9fa3ce1814fb1c0804390576a19e) +Signed-off-by: Hui Wang +--- + ucm2/ucm.conf | 112 ++++++++++++++++++++++++++++++++++---------------- + 1 file changed, 77 insertions(+), 35 deletions(-) + +diff --git a/ucm2/ucm.conf b/ucm2/ucm.conf +index 29bef5c..ec82878 100644 +--- a/ucm2/ucm.conf ++++ b/ucm2/ucm.conf +@@ -13,76 +13,118 @@ + + Syntax 3 + ++Define.V1 "" # non-empty string to enable ucm v1 paths ++Define.V2Module yes # empty string to disable ++Define.V2Name yes # empty string to disable ++ + If.driver { + Condition { + Type String + Empty "${CardNumber}" + } + True { +- + # +- # The last probed path for no-hw-card: ++ # The probed path for no-hw-card: + # + # ucm2/${OpenName}/${OpenName}.conf +- # ucm/${OpenName}/${OpenName}.conf + # +- + UseCasePath { + legacy { + Directory "${OpenName}" + File "${OpenName}.conf" + } +- v1_legacy { +- Version 1 +- Directory "${OpenName}" +- File "${OpenName}.conf" +- } + } +- + } + False { + + # +- # The last probed path when hw-card is found: ++ # The probed path when hw-card is found: + # ++ # ucm2/${KernelModule}/${KernelModule}.conf + # ucm2/${CardDriver}/${CardLongName}.conf + # ucm2/${CardDriver}/${CardDriver}.conf +- # ucm/${CardLongName}/${CardLongName}.conf +- # ucm/${CardName}/${CardName}.conf or \ +- # ucm/${OpenName}/${OpenName}.conf + # + +- UseCasePath { +- longname { +- Directory "${CardDriver}" +- File "${CardLongName}.conf" +- } +- driver { +- Directory "${CardDriver}" +- File "${CardDriver}.conf" ++ If.V2Module { ++ Condition { ++ Type String ++ Empty "${var:V2Module}" + } +- v1_longname { +- Version 1 +- Directory "${CardLongName}" +- File "${CardLongName}.conf" ++ False { ++ Define.KernelModulePath "class/sound/card${CardNumber}/device/driver" ++ Define.KernelModule "${sys:$KernelModulePath}" ++ UseCasePath.module { ++ Directory "module" ++ File "${var:KernelModule}.conf" ++ } + } + } +- +- If.hw { ++ If.V2Name { + Condition { + Type String +- Haystack "${OpenName}.conf" +- Needle "hw:" ++ Empty "${var:V2Name}" ++ } ++ False.UseCasePath { ++ longname { ++ Directory "${CardDriver}" ++ File "${CardLongName}.conf" ++ } ++ driver { ++ Directory "${CardDriver}" ++ File "${CardDriver}.conf" ++ } + } +- True { +- UseCasePath.v1_cardnamme { ++ } ++ } ++} ++ ++If.V1 { ++ Condition { ++ Type String ++ Empty "${var:V1}" ++ } ++ False.If.v1_driver { ++ Condition { ++ Type String ++ Empty "${CardNumber}" ++ } ++ True { ++ # ++ # The probed path for no-hw-card: ++ # ++ # ucm/${OpenName}/${OpenName}.conf ++ # ++ UseCasePath.v1_legacy { ++ Version 1 ++ Directory "${OpenName}" ++ File "${OpenName}.conf" ++ } ++ } ++ False { ++ # ++ # The ucm v1 probed path when hw-card is found: ++ # ++ # ucm/${CardLongName}/${CardLongName}.conf ++ # ucm/${CardName}/${CardName}.conf or \ ++ # ucm/${OpenName}/${OpenName}.conf ++ # ++ UseCasePath.v1_longname { ++ Version 1 ++ Directory "${CardLongName}" ++ File "${CardLongName}.conf" ++ } ++ If.v1_hw { ++ Condition { ++ Type String ++ Haystack "${OpenName}" ++ Needle "hw:" ++ } ++ True.UseCasePath.v1_cardnamme { + Version 1 + Directory "${CardName}" + File "${CardName}.conf" + } +- } +- False { +- UseCasePath.v1_openname { ++ False.UseCasePath.v1_openname { + Version 1 + Directory "${OpenName}" + File "${OpenName}.conf" +-- +2.17.1 + diff -Nru alsa-ucm-conf-1.2.2/debian/patches/0007-sof-hda-dsp-make-Headphone-Playback-Switch-condition.patch alsa-ucm-conf-1.2.2/debian/patches/0007-sof-hda-dsp-make-Headphone-Playback-Switch-condition.patch --- alsa-ucm-conf-1.2.2/debian/patches/0007-sof-hda-dsp-make-Headphone-Playback-Switch-condition.patch 1970-01-01 08:00:00.000000000 +0800 +++ alsa-ucm-conf-1.2.2/debian/patches/0007-sof-hda-dsp-make-Headphone-Playback-Switch-condition.patch 2020-08-08 14:37:45.000000000 +0800 @@ -0,0 +1,52 @@ +From d11b97caa9ed357687a26bb55df1ec5ff854d53b Mon Sep 17 00:00:00 2001 +From: Kai Vehmanen +Date: Thu, 11 Jun 2020 17:46:07 +0300 +Subject: [PATCH 07/14] sof-hda-dsp: make Headphone Playback Switch conditional + +The Headphone Playback Switch control is not present in all +HDA codecs. Allow the Headphones definition to work also on +such systems. + +Signed-off-by: Kai Vehmanen +Signed-off-by: Jaroslav Kysela +(cherry picked from commit 6b0216d7b9ed5094a7bf28e6f643d90dd7e6fa62) +Signed-off-by: Hui Wang +--- + ucm2/sof-hda-dsp/HiFi.conf | 21 ++++++++++++++------- + 1 file changed, 14 insertions(+), 7 deletions(-) + +diff --git a/ucm2/sof-hda-dsp/HiFi.conf b/ucm2/sof-hda-dsp/HiFi.conf +index eea6ed9..f553625 100644 +--- a/ucm2/sof-hda-dsp/HiFi.conf ++++ b/ucm2/sof-hda-dsp/HiFi.conf +@@ -17,13 +17,20 @@ SectionVerb { + SectionDevice."Headphones" { + Comment "Headphones" + +- EnableSequence [ +- cset "name='Headphone Playback Switch' on" +- ] +- +- DisableSequence [ +- cset "name='Headphone Playback Switch' off" +- ] ++ If.headphone_switch { ++ Condition { ++ Type ControlExists ++ Control "name='Headphone Playback Switch'" ++ } ++ True { ++ EnableSequence [ ++ cset "name='Headphone Playback Switch' on" ++ ] ++ DisableSequence [ ++ cset "name='Headphone Playback Switch' off" ++ ] ++ } ++ } + + Value { + PlaybackPriority 200 +-- +2.17.1 + diff -Nru alsa-ucm-conf-1.2.2/debian/patches/0008-sof-soundwire-initial-UCM2-version.patch alsa-ucm-conf-1.2.2/debian/patches/0008-sof-soundwire-initial-UCM2-version.patch --- alsa-ucm-conf-1.2.2/debian/patches/0008-sof-soundwire-initial-UCM2-version.patch 1970-01-01 08:00:00.000000000 +0800 +++ alsa-ucm-conf-1.2.2/debian/patches/0008-sof-soundwire-initial-UCM2-version.patch 2020-08-08 14:37:45.000000000 +0800 @@ -0,0 +1,608 @@ +From a9ea67df93618e432d395b492dfcf04e2c66be8f Mon Sep 17 00:00:00 2001 +From: Pierre-Louis Bossart +Date: Mon, 16 Mar 2020 16:42:11 -0500 +Subject: [PATCH 08/14] sof-soundwire: initial UCM2 version + +Add support for sof-soundwire driver, with conditional inclusion of +sections for RT700, RT711, RT5682, RT1308, RT715. + +Signed-off-by: Libin Yang +Signed-off-by: Pierre-Louis Bossart +Signed-off-by: Jaroslav Kysela +(cherry picked from commit 9f2dae6a560c60593c24aa4b85aed07418f9dd8e) +Signed-off-by: Hui Wang +--- + ucm2/codecs/rt5682/init.conf | 24 ++++++++ + ucm2/codecs/rt700/init.conf | 17 ++++++ + ucm2/codecs/rt711/init.conf | 17 ++++++ + ucm2/codecs/rt715/init.conf | 19 +++++++ + ucm2/sof-soundwire/Hdmi.conf | 79 +++++++++++++++++++++++++++ + ucm2/sof-soundwire/HiFi.conf | 8 +++ + ucm2/sof-soundwire/RT1308-1.conf | 23 ++++++++ + ucm2/sof-soundwire/RT1308-2.conf | 30 ++++++++++ + ucm2/sof-soundwire/RT1308.conf | 30 ++++++++++ + ucm2/sof-soundwire/RT5682.conf | 62 +++++++++++++++++++++ + ucm2/sof-soundwire/RT700.conf | 75 +++++++++++++++++++++++++ + ucm2/sof-soundwire/RT711.conf | 51 +++++++++++++++++ + ucm2/sof-soundwire/RT715.conf | 31 +++++++++++ + ucm2/sof-soundwire/sof-soundwire.conf | 11 ++++ + 14 files changed, 477 insertions(+) + create mode 100644 ucm2/codecs/rt5682/init.conf + create mode 100644 ucm2/codecs/rt700/init.conf + create mode 100644 ucm2/codecs/rt711/init.conf + create mode 100644 ucm2/codecs/rt715/init.conf + create mode 100644 ucm2/sof-soundwire/Hdmi.conf + create mode 100644 ucm2/sof-soundwire/HiFi.conf + create mode 100644 ucm2/sof-soundwire/RT1308-1.conf + create mode 100644 ucm2/sof-soundwire/RT1308-2.conf + create mode 100644 ucm2/sof-soundwire/RT1308.conf + create mode 100644 ucm2/sof-soundwire/RT5682.conf + create mode 100644 ucm2/sof-soundwire/RT700.conf + create mode 100644 ucm2/sof-soundwire/RT711.conf + create mode 100644 ucm2/sof-soundwire/RT715.conf + create mode 100644 ucm2/sof-soundwire/sof-soundwire.conf + +diff --git a/ucm2/codecs/rt5682/init.conf b/ucm2/codecs/rt5682/init.conf +new file mode 100644 +index 0000000..d819feb +--- /dev/null ++++ b/ucm2/codecs/rt5682/init.conf +@@ -0,0 +1,24 @@ ++# RT5682 specific volume control settings ++If.RT5682init { ++ Condition { ++ Type String ++ Haystack "${CardComponents}" ++ Needle "hs:rt5682" ++ } ++ True { ++ BootSequence [ ++ cset "name='rt5682 Stereo1 DAC MIXL DAC L1 Switch' 1" ++ cset "name='rt5682 Stereo1 DAC MIXR DAC R1 Switch' 1" ++ cset "name='rt5682 DAC L Mux' 1" ++ cset "name='rt5682 DAC R Mux' 1" ++ cset "name='rt5682 IF1 01 ADC Swap Mux' 2" ++ cset "name='rt5682 CBJ Boost Volume' 3" ++ cset "name='rt5682 Stereo1 ADC L Mux' 0" ++ cset "name='rt5682 Stereo1 ADC R Mux' 0" ++ cset "name='rt5682 Stereo1 ADC L1 Mux' 1" ++ cset "name='rt5682 Stereo1 ADC R1 Mux' 1" ++ cset "name='rt5682 Stereo1 ADC MIXL ADC2 Switch' 0" ++ cset "name='rt5682 Stereo1 ADC MIXR ADC2 Switch' 0" ++ ] ++ } ++} +diff --git a/ucm2/codecs/rt700/init.conf b/ucm2/codecs/rt700/init.conf +new file mode 100644 +index 0000000..c5be34f +--- /dev/null ++++ b/ucm2/codecs/rt700/init.conf +@@ -0,0 +1,17 @@ ++# RT700 specific volume control settings ++If.rt700init { ++ Condition { ++ Type String ++ Haystack "${CardComponents}" ++ Needle "hs:rt700" ++ } ++ True { ++ BootSequence [ ++ cset "name='DAC Front Playback Volume' 87" ++ cset "name='HPO Mux' 'Front'" ++ cset "name='ADC 09 Capture Volume' 63" ++ cset "name='ADC 22 Mux' 'MIC2'" ++ cset "name='AMIC Volume' 1" ++ ] ++ } ++} +diff --git a/ucm2/codecs/rt711/init.conf b/ucm2/codecs/rt711/init.conf +new file mode 100644 +index 0000000..c2b8629 +--- /dev/null ++++ b/ucm2/codecs/rt711/init.conf +@@ -0,0 +1,17 @@ ++# RT711 specific volume control settings ++If.rt711init { ++ Condition { ++ Type String ++ Haystack "${CardComponents}" ++ Needle "hs:rt711" ++ } ++ True { ++ BootSequence [ ++ cset "name='rt711 DAC Surr Playback Volume' 87" ++ cset "name='rt711 ADC 08 Capture Volume' 63" ++ cset "name='rt711 ADC 23 Mux' 'MIC2'" ++ cset "name='rt711 ADC 08 Capture Switch' 1" ++ cset "name='rt711 AMIC Volume' 1" ++ ] ++ } ++} +diff --git a/ucm2/codecs/rt715/init.conf b/ucm2/codecs/rt715/init.conf +new file mode 100644 +index 0000000..745f471 +--- /dev/null ++++ b/ucm2/codecs/rt715/init.conf +@@ -0,0 +1,19 @@ ++# RT715 specific volume control settings ++If.RT715init { ++ Condition { ++ Type String ++ Haystack "${CardComponents}" ++ Needle "mic:rt715" ++ } ++ True { ++ BootSequence [ ++ cset "name='rt715 DMIC3 Boost' 2" ++ cset "name='rt715 DMIC4 Boost' 2" ++ cset "name='rt715 ADC 24 Mux' 3" ++ cset "name='rt715 ADC 25 Mux' 4" ++ cset "name='rt715 ADC 27 Capture Switch' 1" ++ cset "name='rt715 ADC 07 Capture Switch' 1" ++ ++ ] ++ } ++} +diff --git a/ucm2/sof-soundwire/Hdmi.conf b/ucm2/sof-soundwire/Hdmi.conf +new file mode 100644 +index 0000000..d0ba790 +--- /dev/null ++++ b/ucm2/sof-soundwire/Hdmi.conf +@@ -0,0 +1,79 @@ ++# Use case Configuration for sof-soundwire card ++ ++If.hdmi1 { ++ Condition { ++ Type ControlExists ++ Control "iface=CARD,name='HDMI/DP,pcm=5 Jack'" ++ } ++ 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" ++ } ++ } ++ } ++} ++ ++If.hdmi2 { ++ Condition { ++ Type ControlExists ++ Control "iface=CARD,name='HDMI/DP,pcm=6 Jack'" ++ } ++ 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" ++ } ++ } ++ } ++} ++ ++If.hdmi3 { ++ Condition { ++ Type ControlExists ++ Control "iface=CARD,name='HDMI/DP,pcm=7 Jack'" ++ } ++ 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" ++ } ++ } ++ } ++} +diff --git a/ucm2/sof-soundwire/HiFi.conf b/ucm2/sof-soundwire/HiFi.conf +new file mode 100644 +index 0000000..457cf67 +--- /dev/null ++++ b/ucm2/sof-soundwire/HiFi.conf +@@ -0,0 +1,8 @@ ++# Use case Configuration for sof-soundwire card ++ ++ ++ ++ ++ ++ ++ +diff --git a/ucm2/sof-soundwire/RT1308-1.conf b/ucm2/sof-soundwire/RT1308-1.conf +new file mode 100644 +index 0000000..da2eeae +--- /dev/null ++++ b/ucm2/sof-soundwire/RT1308-1.conf +@@ -0,0 +1,23 @@ ++# Use case Configuration for sof-soundwire card ++ ++SectionDevice."Speaker" { ++ Comment "Speaker" ++ ++ EnableSequence [ ++ cset "name='rt1308-1 DAC L Switch' 1" ++ cset "name='rt1308-1 DAC R Switch' 1" ++ cset "name='Speaker Switch' on" ++ ] ++ ++ DisableSequence [ ++ cset "name='rt1308-1 DAC L Switch' 0" ++ cset "name='rt1308-1 DAC R Switch' 0" ++ cset "name='Speaker Switch' off" ++ ] ++ ++ Value { ++ PlaybackPriority 100 ++ PlaybackPCM "hw:${CardId},2" ++ PlaybackChannels "2" ++ } ++} +diff --git a/ucm2/sof-soundwire/RT1308-2.conf b/ucm2/sof-soundwire/RT1308-2.conf +new file mode 100644 +index 0000000..3484b70 +--- /dev/null ++++ b/ucm2/sof-soundwire/RT1308-2.conf +@@ -0,0 +1,30 @@ ++# Use case Configuration for sof-soundwire card ++ ++SectionDevice."Speaker" { ++ Comment "Speaker" ++ ++ EnableSequence [ ++ cset "name='rt1308-1 RX Channel Select' LL" ++ cset "name='rt1308-2 RX Channel Select' RR" ++ ++ cset "name='rt1308-1 DAC L Switch' 1" ++ cset "name='rt1308-1 DAC R Switch' 1" ++ cset "name='rt1308-2 DAC L Switch' 1" ++ cset "name='rt1308-2 DAC R Switch' 1" ++ cset "name='Speaker Switch' on" ++ ] ++ ++ DisableSequence [ ++ cset "name='rt1308-1 DAC L Switch' 0" ++ cset "name='rt1308-1 DAC R Switch' 0" ++ cset "name='rt1308-2 DAC L Switch' 0" ++ cset "name='rt1308-2 DAC R Switch' 0" ++ cset "name='Speaker Switch' off" ++ ] ++ ++ Value { ++ PlaybackPriority 100 ++ PlaybackPCM "hw:${CardId},2" ++ PlaybackChannels "2" ++ } ++} +diff --git a/ucm2/sof-soundwire/RT1308.conf b/ucm2/sof-soundwire/RT1308.conf +new file mode 100644 +index 0000000..f8e36a3 +--- /dev/null ++++ b/ucm2/sof-soundwire/RT1308.conf +@@ -0,0 +1,30 @@ ++# Use case Configuration for sof-soundwire card ++# alsaucm -c sof-soundwire set _verb HiFi set _enadev Speaker ++ ++If.RT1308 { ++ Condition { ++ Type String ++ Haystack "${CardComponents}" ++ Needle "spk:rt1308" ++ } ++ True { ++ ++ If.2ch { ++ Condition { ++ Type String ++ Haystack "${CardComponents}" ++ Needle "cfg-spk:2" ++ } ++ True { ++ ++ ++ ++ } ++ False { ++ ++ ++ ++ } ++ } ++ } ++} +diff --git a/ucm2/sof-soundwire/RT5682.conf b/ucm2/sof-soundwire/RT5682.conf +new file mode 100644 +index 0000000..2a63bf2 +--- /dev/null ++++ b/ucm2/sof-soundwire/RT5682.conf +@@ -0,0 +1,62 @@ ++# Use case Configuration for sof-soundwire card ++ ++If.RT5682 { ++ Condition { ++ Type String ++ Haystack "${CardComponents}" ++ Needle "hs:rt5682" ++ } ++ True { ++ ++ SectionDevice."Headphones" { ++ Comment "Headphones" ++ ++ EnableSequence [ ++ cset "name='Headphone Switch' on" ++ cset "name='rt5682 HPOL Playback Switch' 1" ++ cset "name='rt5682 HPOR Playback Switch' 1" ++ ] ++ ++ DisableSequence [ ++ cset "name='rt5682 HPOL Playback Switch' 0" ++ cset "name='rt5682 HPOR Playback Switch' 0" ++ cset "name='Headphone Switch' off" ++ ++ ] ++ ++ Value { ++ PlaybackPriority 200 ++ PlaybackPCM "hw:${CardId},0" ++ PlaybackChannels "2" ++ JackControl "Headphone Jack" ++ } ++ } ++ ++ SectionDevice."Headset" { ++ Comment "Headset Microphone" ++ ++ EnableSequence [ ++ cset "name='Headset Mic Switch' on" ++ cset "name='rt5682 STO1 ADC Capture Switch' 1" ++ cset "name='rt5682 RECMIX1L CBJ Switch' 1" ++ cset "name='rt5682 Stereo1 ADC MIXL ADC1 Switch' 1" ++ cset "name='rt5682 Stereo1 ADC MIXR ADC1 Switch' 1" ++ ] ++ ++ DisableSequence [ ++ cset "name='rt5682 STO1 ADC Capture Switch' 0" ++ cset "name='rt5682 RECMIX1L CBJ Switch' 0" ++ cset "name='rt5682 Stereo1 ADC MIXL ADC1 Switch' 0" ++ cset "name='rt5682 Stereo1 ADC MIXR ADC1 Switch' 0" ++ cset "name='Headset Mic Switch' off" ++ ] ++ ++ Value { ++ CapturePriority 200 ++ CapturePCM "hw:${CardId},1" ++ CaptureChannels "2" ++ JackControl "Headset Mic Jack" ++ } ++ } ++ } ++} +diff --git a/ucm2/sof-soundwire/RT700.conf b/ucm2/sof-soundwire/RT700.conf +new file mode 100644 +index 0000000..9fe532c +--- /dev/null ++++ b/ucm2/sof-soundwire/RT700.conf +@@ -0,0 +1,75 @@ ++# Use case Configuration for sof-soundwire card ++ ++If.RT700 { ++ Condition { ++ Type String ++ Haystack "${CardComponents}" ++ Needle "hs:rt700" ++ } ++ True { ++ ++ SectionDevice."Headphones" { ++ Comment "Headphones" ++ ++ ConflictingDevice [ ++ "Speaker" ++ ] ++ ++ EnableSequence [ ++ cset "name='Headphones Switch' on" ++ ] ++ ++ DisableSequence [ ++ cset "name='Headphones Switch' off" ++ ] ++ ++ Value { ++ PlaybackPriority 200 ++ PlaybackPCM "hw:${CardId},0" ++ PlaybackChannels "2" ++ JackControl "Headphone Jack" ++ } ++ } ++ ++ SectionDevice."Speaker" { ++ Comment "Speaker" ++ ++ ConflictingDevice [ ++ "Headphones" ++ ] ++ ++ EnableSequence [ ++ cset "name='Speaker Switch' on" ++ ] ++ ++ DisableSequence [ ++ cset "name='Speaker Switch' off" ++ ] ++ ++ Value { ++ PlaybackPriority 100 ++ PlaybackPCM "hw:${CardId},0" ++ PlaybackChannels "2" ++ } ++ } ++ ++ SectionDevice."Headset" { ++ Comment "Headset Microphone" ++ ++ EnableSequence [ ++ cset "name='ADC 09 Capture Switch' 1" ++ ] ++ ++ DisableSequence [ ++ cset "name='ADC 09 Capture Switch' 0" ++ ] ++ ++ Value { ++ CapturePriority 200 ++ CapturePCM "hw:${CardId},1" ++ CaptureChannels "2" ++ JackControl "Headset Mic Jack" ++ } ++ } ++ } ++} +diff --git a/ucm2/sof-soundwire/RT711.conf b/ucm2/sof-soundwire/RT711.conf +new file mode 100644 +index 0000000..11a504a +--- /dev/null ++++ b/ucm2/sof-soundwire/RT711.conf +@@ -0,0 +1,51 @@ ++# Use case Configuration for sof-soundwire card ++ ++If.RT711 { ++ Condition { ++ Type String ++ Haystack "${CardComponents}" ++ Needle "hs:rt711" ++ } ++ True { ++ ++ SectionDevice."Headphones" { ++ Comment "Headphones" ++ ++ EnableSequence [ ++ cset "name='Headphone Switch' on" ++ ] ++ ++ DisableSequence [ ++ cset "name='Headphone Switch' off" ++ ] ++ ++ Value { ++ PlaybackPriority 200 ++ PlaybackPCM "hw:${CardId},0" ++ PlaybackChannels "2" ++ JackControl "Headphone Jack" ++ } ++ } ++ ++ SectionDevice."Headset" { ++ Comment "Headset Microphone" ++ ++ EnableSequence [ ++ cset "name='PGA2.0 2 Master Capture Switch' 1" ++ ] ++ ++ DisableSequence [ ++ cset "name='PGA2.0 2 Master Capture Switch' 0" ++ ] ++ ++ Value { ++ CapturePriority 200 ++ CapturePCM "hw:${CardId},1" ++ CaptureChannels "2" ++ JackControl "Headset Mic Jack" ++ CaptureSwitch "PGA2.0 2 Master Capture Switch" ++ CaptureVolume "PGA2.0 2 Master Capture Volume" ++ } ++ } ++ } ++} +diff --git a/ucm2/sof-soundwire/RT715.conf b/ucm2/sof-soundwire/RT715.conf +new file mode 100644 +index 0000000..2b8d89d +--- /dev/null ++++ b/ucm2/sof-soundwire/RT715.conf +@@ -0,0 +1,31 @@ ++# Use case Configuration for sof-soundwire card ++ ++If.RT715 { ++ Condition { ++ Type String ++ Haystack "${CardComponents}" ++ Needle "mic:rt715" ++ } ++ True { ++ ++ SectionDevice."Mic" { ++ Comment "SoundWire microphones" ++ ++ EnableSequence [ ++ cset "name='PGA5.0 5 Master Capture Switch' 1" ++ ] ++ ++ DisableSequence [ ++ cset "name='PGA5.0 5 Master Capture Switch' 0" ++ ] ++ ++ Value { ++ CapturePriority 100 ++ CapturePCM "hw:${CardId},4" ++ CaptureChannels "2" ++ CaptureSwitch "PGA5.0 5 Master Capture Switch" ++ CaptureVolume "PGA5.0 5 Master Capture Volume" ++ } ++ } ++ } ++} +diff --git a/ucm2/sof-soundwire/sof-soundwire.conf b/ucm2/sof-soundwire/sof-soundwire.conf +new file mode 100644 +index 0000000..565f2b5 +--- /dev/null ++++ b/ucm2/sof-soundwire/sof-soundwire.conf +@@ -0,0 +1,11 @@ ++Syntax 2 ++ ++SectionUseCase."HiFi" { ++ File "HiFi.conf" ++ Comment "Play HiFi quality Music" ++} ++ ++ ++ ++ ++ +-- +2.17.1 + diff -Nru alsa-ucm-conf-1.2.2/debian/patches/0009-sof-soundwire-cleanups-recommended-by-the-ucm-valida.patch alsa-ucm-conf-1.2.2/debian/patches/0009-sof-soundwire-cleanups-recommended-by-the-ucm-valida.patch --- alsa-ucm-conf-1.2.2/debian/patches/0009-sof-soundwire-cleanups-recommended-by-the-ucm-valida.patch 1970-01-01 08:00:00.000000000 +0800 +++ alsa-ucm-conf-1.2.2/debian/patches/0009-sof-soundwire-cleanups-recommended-by-the-ucm-valida.patch 2020-08-08 14:37:45.000000000 +0800 @@ -0,0 +1,131 @@ +From 0a5c528a4b1f10b2264130267eeb2c05ae1202f3 Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Wed, 24 Jun 2020 11:15:42 +0200 +Subject: [PATCH 09/14] sof-soundwire: cleanups recommended by the + ucm-validator + +Signed-off-by: Jaroslav Kysela +(cherry picked from commit 1072c6d68e69ac432b411557237effa2dcc869cc) +Signed-off-by: Hui Wang +--- + ucm2/sof-soundwire/RT1308-1.conf | 1 - + ucm2/sof-soundwire/RT1308-2.conf | 1 - + ucm2/sof-soundwire/RT5682.conf | 4 +--- + ucm2/sof-soundwire/RT700.conf | 7 ++----- + ucm2/sof-soundwire/RT711.conf | 4 +--- + ucm2/sof-soundwire/RT715.conf | 1 - + 6 files changed, 4 insertions(+), 14 deletions(-) + +diff --git a/ucm2/sof-soundwire/RT1308-1.conf b/ucm2/sof-soundwire/RT1308-1.conf +index da2eeae..6da5b7e 100644 +--- a/ucm2/sof-soundwire/RT1308-1.conf ++++ b/ucm2/sof-soundwire/RT1308-1.conf +@@ -18,6 +18,5 @@ SectionDevice."Speaker" { + Value { + PlaybackPriority 100 + PlaybackPCM "hw:${CardId},2" +- PlaybackChannels "2" + } + } +diff --git a/ucm2/sof-soundwire/RT1308-2.conf b/ucm2/sof-soundwire/RT1308-2.conf +index 3484b70..f88cb81 100644 +--- a/ucm2/sof-soundwire/RT1308-2.conf ++++ b/ucm2/sof-soundwire/RT1308-2.conf +@@ -25,6 +25,5 @@ SectionDevice."Speaker" { + Value { + PlaybackPriority 100 + PlaybackPCM "hw:${CardId},2" +- PlaybackChannels "2" + } + } +diff --git a/ucm2/sof-soundwire/RT5682.conf b/ucm2/sof-soundwire/RT5682.conf +index 2a63bf2..95a251d 100644 +--- a/ucm2/sof-soundwire/RT5682.conf ++++ b/ucm2/sof-soundwire/RT5682.conf +@@ -26,8 +26,7 @@ If.RT5682 { + + Value { + PlaybackPriority 200 +- PlaybackPCM "hw:${CardId},0" +- PlaybackChannels "2" ++ PlaybackPCM "hw:${CardId}" + JackControl "Headphone Jack" + } + } +@@ -54,7 +53,6 @@ If.RT5682 { + Value { + CapturePriority 200 + CapturePCM "hw:${CardId},1" +- CaptureChannels "2" + JackControl "Headset Mic Jack" + } + } +diff --git a/ucm2/sof-soundwire/RT700.conf b/ucm2/sof-soundwire/RT700.conf +index 9fe532c..d2df463 100644 +--- a/ucm2/sof-soundwire/RT700.conf ++++ b/ucm2/sof-soundwire/RT700.conf +@@ -25,8 +25,7 @@ If.RT700 { + + Value { + PlaybackPriority 200 +- PlaybackPCM "hw:${CardId},0" +- PlaybackChannels "2" ++ PlaybackPCM "hw:${CardId}" + JackControl "Headphone Jack" + } + } +@@ -48,8 +47,7 @@ If.RT700 { + + Value { + PlaybackPriority 100 +- PlaybackPCM "hw:${CardId},0" +- PlaybackChannels "2" ++ PlaybackPCM "hw:${CardId}" + } + } + +@@ -67,7 +65,6 @@ If.RT700 { + Value { + CapturePriority 200 + CapturePCM "hw:${CardId},1" +- CaptureChannels "2" + JackControl "Headset Mic Jack" + } + } +diff --git a/ucm2/sof-soundwire/RT711.conf b/ucm2/sof-soundwire/RT711.conf +index 11a504a..12b48ed 100644 +--- a/ucm2/sof-soundwire/RT711.conf ++++ b/ucm2/sof-soundwire/RT711.conf +@@ -21,8 +21,7 @@ If.RT711 { + + Value { + PlaybackPriority 200 +- PlaybackPCM "hw:${CardId},0" +- PlaybackChannels "2" ++ PlaybackPCM "hw:${CardId}" + JackControl "Headphone Jack" + } + } +@@ -41,7 +40,6 @@ If.RT711 { + Value { + CapturePriority 200 + CapturePCM "hw:${CardId},1" +- CaptureChannels "2" + JackControl "Headset Mic Jack" + CaptureSwitch "PGA2.0 2 Master Capture Switch" + CaptureVolume "PGA2.0 2 Master Capture Volume" +diff --git a/ucm2/sof-soundwire/RT715.conf b/ucm2/sof-soundwire/RT715.conf +index 2b8d89d..d1734ad 100644 +--- a/ucm2/sof-soundwire/RT715.conf ++++ b/ucm2/sof-soundwire/RT715.conf +@@ -22,7 +22,6 @@ If.RT715 { + Value { + CapturePriority 100 + CapturePCM "hw:${CardId},4" +- CaptureChannels "2" + CaptureSwitch "PGA5.0 5 Master Capture Switch" + CaptureVolume "PGA5.0 5 Master Capture Volume" + } +-- +2.17.1 + diff -Nru alsa-ucm-conf-1.2.2/debian/patches/0010-sof-soundwire-rewrite-for-syntax-3.patch alsa-ucm-conf-1.2.2/debian/patches/0010-sof-soundwire-rewrite-for-syntax-3.patch --- alsa-ucm-conf-1.2.2/debian/patches/0010-sof-soundwire-rewrite-for-syntax-3.patch 1970-01-01 08:00:00.000000000 +0800 +++ alsa-ucm-conf-1.2.2/debian/patches/0010-sof-soundwire-rewrite-for-syntax-3.patch 2020-08-08 14:38:06.000000000 +0800 @@ -0,0 +1,760 @@ +From 465691121617531c8b296a01b03e3812bc0ded87 Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Wed, 24 Jun 2020 12:24:45 +0200 +Subject: [PATCH 10/14] sof-soundwire: rewrite for 'syntax 3' + +The codec/ sequences must not have the platform specific checks. + +Signed-off-by: Jaroslav Kysela +(cherry picked from commit 4734c44b38cd36588c774a4f52aa899ae5ad7fc4) +Signed-off-by: Hui Wang +--- + ucm2/codecs/rt5682/init.conf | 38 ++++------ + ucm2/codecs/rt700/init.conf | 24 +++---- + ucm2/codecs/rt711/init.conf | 24 +++---- + ucm2/codecs/rt715/init.conf | 25 +++---- + ucm2/sof-soundwire/HiFi.conf | 33 +++++++-- + ucm2/sof-soundwire/RT1308.conf | 30 -------- + ucm2/sof-soundwire/RT5682.conf | 60 ---------------- + ucm2/sof-soundwire/RT700.conf | 72 ------------------- + ucm2/sof-soundwire/RT711.conf | 49 ------------- + ucm2/sof-soundwire/RT715.conf | 30 -------- + .../{RT1308-1.conf => rt1308-2.conf} | 0 + .../{RT1308-2.conf => rt1308-4.conf} | 0 + ucm2/sof-soundwire/rt5682.conf | 50 +++++++++++++ + ucm2/sof-soundwire/rt700.conf | 62 ++++++++++++++++ + ucm2/sof-soundwire/rt711.conf | 39 ++++++++++ + ucm2/sof-soundwire/rt715.conf | 20 ++++++ + ucm2/sof-soundwire/sof-soundwire.conf | 54 ++++++++++++-- + 17 files changed, 287 insertions(+), 323 deletions(-) + delete mode 100644 ucm2/sof-soundwire/RT1308.conf + delete mode 100644 ucm2/sof-soundwire/RT5682.conf + delete mode 100644 ucm2/sof-soundwire/RT700.conf + delete mode 100644 ucm2/sof-soundwire/RT711.conf + delete mode 100644 ucm2/sof-soundwire/RT715.conf + rename ucm2/sof-soundwire/{RT1308-1.conf => rt1308-2.conf} (100%) + rename ucm2/sof-soundwire/{RT1308-2.conf => rt1308-4.conf} (100%) + create mode 100644 ucm2/sof-soundwire/rt5682.conf + create mode 100644 ucm2/sof-soundwire/rt700.conf + create mode 100644 ucm2/sof-soundwire/rt711.conf + create mode 100644 ucm2/sof-soundwire/rt715.conf + +diff --git a/ucm2/codecs/rt5682/init.conf b/ucm2/codecs/rt5682/init.conf +index d819feb..11ce9db 100644 +--- a/ucm2/codecs/rt5682/init.conf ++++ b/ucm2/codecs/rt5682/init.conf +@@ -1,24 +1,16 @@ + # RT5682 specific volume control settings +-If.RT5682init { +- Condition { +- Type String +- Haystack "${CardComponents}" +- Needle "hs:rt5682" +- } +- True { +- BootSequence [ +- cset "name='rt5682 Stereo1 DAC MIXL DAC L1 Switch' 1" +- cset "name='rt5682 Stereo1 DAC MIXR DAC R1 Switch' 1" +- cset "name='rt5682 DAC L Mux' 1" +- cset "name='rt5682 DAC R Mux' 1" +- cset "name='rt5682 IF1 01 ADC Swap Mux' 2" +- cset "name='rt5682 CBJ Boost Volume' 3" +- cset "name='rt5682 Stereo1 ADC L Mux' 0" +- cset "name='rt5682 Stereo1 ADC R Mux' 0" +- cset "name='rt5682 Stereo1 ADC L1 Mux' 1" +- cset "name='rt5682 Stereo1 ADC R1 Mux' 1" +- cset "name='rt5682 Stereo1 ADC MIXL ADC2 Switch' 0" +- cset "name='rt5682 Stereo1 ADC MIXR ADC2 Switch' 0" +- ] +- } +-} ++ ++BootSequence [ ++ cset "name='rt5682 Stereo1 DAC MIXL DAC L1 Switch' 1" ++ cset "name='rt5682 Stereo1 DAC MIXR DAC R1 Switch' 1" ++ cset "name='rt5682 DAC L Mux' 1" ++ cset "name='rt5682 DAC R Mux' 1" ++ cset "name='rt5682 IF1 01 ADC Swap Mux' 2" ++ cset "name='rt5682 CBJ Boost Volume' 3" ++ cset "name='rt5682 Stereo1 ADC L Mux' 0" ++ cset "name='rt5682 Stereo1 ADC R Mux' 0" ++ cset "name='rt5682 Stereo1 ADC L1 Mux' 1" ++ cset "name='rt5682 Stereo1 ADC R1 Mux' 1" ++ cset "name='rt5682 Stereo1 ADC MIXL ADC2 Switch' 0" ++ cset "name='rt5682 Stereo1 ADC MIXR ADC2 Switch' 0" ++] +diff --git a/ucm2/codecs/rt700/init.conf b/ucm2/codecs/rt700/init.conf +index c5be34f..406e2cb 100644 +--- a/ucm2/codecs/rt700/init.conf ++++ b/ucm2/codecs/rt700/init.conf +@@ -1,17 +1,9 @@ + # RT700 specific volume control settings +-If.rt700init { +- Condition { +- Type String +- Haystack "${CardComponents}" +- Needle "hs:rt700" +- } +- True { +- BootSequence [ +- cset "name='DAC Front Playback Volume' 87" +- cset "name='HPO Mux' 'Front'" +- cset "name='ADC 09 Capture Volume' 63" +- cset "name='ADC 22 Mux' 'MIC2'" +- cset "name='AMIC Volume' 1" +- ] +- } +-} ++ ++BootSequence [ ++ cset "name='DAC Front Playback Volume' 87" ++ cset "name='HPO Mux' 'Front'" ++ cset "name='ADC 09 Capture Volume' 63" ++ cset "name='ADC 22 Mux' 'MIC2'" ++ cset "name='AMIC Volume' 1" ++] +diff --git a/ucm2/codecs/rt711/init.conf b/ucm2/codecs/rt711/init.conf +index c2b8629..f3cea28 100644 +--- a/ucm2/codecs/rt711/init.conf ++++ b/ucm2/codecs/rt711/init.conf +@@ -1,17 +1,9 @@ + # RT711 specific volume control settings +-If.rt711init { +- Condition { +- Type String +- Haystack "${CardComponents}" +- Needle "hs:rt711" +- } +- True { +- BootSequence [ +- cset "name='rt711 DAC Surr Playback Volume' 87" +- cset "name='rt711 ADC 08 Capture Volume' 63" +- cset "name='rt711 ADC 23 Mux' 'MIC2'" +- cset "name='rt711 ADC 08 Capture Switch' 1" +- cset "name='rt711 AMIC Volume' 1" +- ] +- } +-} ++ ++BootSequence [ ++ cset "name='rt711 DAC Surr Playback Volume' 87" ++ cset "name='rt711 ADC 08 Capture Volume' 63" ++ cset "name='rt711 ADC 23 Mux' 'MIC2'" ++ cset "name='rt711 ADC 08 Capture Switch' 1" ++ cset "name='rt711 AMIC Volume' 1" ++] +diff --git a/ucm2/codecs/rt715/init.conf b/ucm2/codecs/rt715/init.conf +index 745f471..6e07b2d 100644 +--- a/ucm2/codecs/rt715/init.conf ++++ b/ucm2/codecs/rt715/init.conf +@@ -1,19 +1,10 @@ + # RT715 specific volume control settings +-If.RT715init { +- Condition { +- Type String +- Haystack "${CardComponents}" +- Needle "mic:rt715" +- } +- True { +- BootSequence [ +- cset "name='rt715 DMIC3 Boost' 2" +- cset "name='rt715 DMIC4 Boost' 2" +- cset "name='rt715 ADC 24 Mux' 3" +- cset "name='rt715 ADC 25 Mux' 4" +- cset "name='rt715 ADC 27 Capture Switch' 1" +- cset "name='rt715 ADC 07 Capture Switch' 1" + +- ] +- } +-} ++BootSequence [ ++ cset "name='rt715 DMIC3 Boost' 2" ++ cset "name='rt715 DMIC4 Boost' 2" ++ cset "name='rt715 ADC 24 Mux' 3" ++ cset "name='rt715 ADC 25 Mux' 4" ++ cset "name='rt715 ADC 27 Capture Switch' 1" ++ cset "name='rt715 ADC 07 Capture Switch' 1" ++] +diff --git a/ucm2/sof-soundwire/HiFi.conf b/ucm2/sof-soundwire/HiFi.conf +index 457cf67..f2240e8 100644 +--- a/ucm2/sof-soundwire/HiFi.conf ++++ b/ucm2/sof-soundwire/HiFi.conf +@@ -1,8 +1,31 @@ + # Use case Configuration for sof-soundwire card + +- +- +- +- +- ++SectionVerb { ++ Value.TQ "HiFi" ++} ++ ++If.spkdev { ++ Condition { ++ Type String ++ Empty "${var:SpeakerCodec1}" ++ } ++ False.Include.spkdev.File "/sof-soundwire/${var:SpeakerCodec1}-${var:SpeakerChannels1}.conf" ++} ++ ++If.micdev { ++ Condition { ++ Type String ++ Empty "${var:MicCodec1}" ++ } ++ False.Include.micdev.File "/sof-soundwire/${var:MicCodec1}.conf" ++} ++ ++If.hsdev { ++ Condition { ++ Type String ++ Empty "${var:HeadsetCodec1}" ++ } ++ False.Include.hsdev.File "/sof-soundwire/${var:HeadsetCodec1}.conf" ++} ++ + +diff --git a/ucm2/sof-soundwire/RT1308.conf b/ucm2/sof-soundwire/RT1308.conf +deleted file mode 100644 +index f8e36a3..0000000 +--- a/ucm2/sof-soundwire/RT1308.conf ++++ /dev/null +@@ -1,30 +0,0 @@ +-# Use case Configuration for sof-soundwire card +-# alsaucm -c sof-soundwire set _verb HiFi set _enadev Speaker +- +-If.RT1308 { +- Condition { +- Type String +- Haystack "${CardComponents}" +- Needle "spk:rt1308" +- } +- True { +- +- If.2ch { +- Condition { +- Type String +- Haystack "${CardComponents}" +- Needle "cfg-spk:2" +- } +- True { +- +- +- +- } +- False { +- +- +- +- } +- } +- } +-} +diff --git a/ucm2/sof-soundwire/RT5682.conf b/ucm2/sof-soundwire/RT5682.conf +deleted file mode 100644 +index 95a251d..0000000 +--- a/ucm2/sof-soundwire/RT5682.conf ++++ /dev/null +@@ -1,60 +0,0 @@ +-# Use case Configuration for sof-soundwire card +- +-If.RT5682 { +- Condition { +- Type String +- Haystack "${CardComponents}" +- Needle "hs:rt5682" +- } +- True { +- +- SectionDevice."Headphones" { +- Comment "Headphones" +- +- EnableSequence [ +- cset "name='Headphone Switch' on" +- cset "name='rt5682 HPOL Playback Switch' 1" +- cset "name='rt5682 HPOR Playback Switch' 1" +- ] +- +- DisableSequence [ +- cset "name='rt5682 HPOL Playback Switch' 0" +- cset "name='rt5682 HPOR Playback Switch' 0" +- cset "name='Headphone Switch' off" +- +- ] +- +- Value { +- PlaybackPriority 200 +- PlaybackPCM "hw:${CardId}" +- JackControl "Headphone Jack" +- } +- } +- +- SectionDevice."Headset" { +- Comment "Headset Microphone" +- +- EnableSequence [ +- cset "name='Headset Mic Switch' on" +- cset "name='rt5682 STO1 ADC Capture Switch' 1" +- cset "name='rt5682 RECMIX1L CBJ Switch' 1" +- cset "name='rt5682 Stereo1 ADC MIXL ADC1 Switch' 1" +- cset "name='rt5682 Stereo1 ADC MIXR ADC1 Switch' 1" +- ] +- +- DisableSequence [ +- cset "name='rt5682 STO1 ADC Capture Switch' 0" +- cset "name='rt5682 RECMIX1L CBJ Switch' 0" +- cset "name='rt5682 Stereo1 ADC MIXL ADC1 Switch' 0" +- cset "name='rt5682 Stereo1 ADC MIXR ADC1 Switch' 0" +- cset "name='Headset Mic Switch' off" +- ] +- +- Value { +- CapturePriority 200 +- CapturePCM "hw:${CardId},1" +- JackControl "Headset Mic Jack" +- } +- } +- } +-} +diff --git a/ucm2/sof-soundwire/RT700.conf b/ucm2/sof-soundwire/RT700.conf +deleted file mode 100644 +index d2df463..0000000 +--- a/ucm2/sof-soundwire/RT700.conf ++++ /dev/null +@@ -1,72 +0,0 @@ +-# Use case Configuration for sof-soundwire card +- +-If.RT700 { +- Condition { +- Type String +- Haystack "${CardComponents}" +- Needle "hs:rt700" +- } +- True { +- +- SectionDevice."Headphones" { +- Comment "Headphones" +- +- ConflictingDevice [ +- "Speaker" +- ] +- +- EnableSequence [ +- cset "name='Headphones Switch' on" +- ] +- +- DisableSequence [ +- cset "name='Headphones Switch' off" +- ] +- +- Value { +- PlaybackPriority 200 +- PlaybackPCM "hw:${CardId}" +- JackControl "Headphone Jack" +- } +- } +- +- SectionDevice."Speaker" { +- Comment "Speaker" +- +- ConflictingDevice [ +- "Headphones" +- ] +- +- EnableSequence [ +- cset "name='Speaker Switch' on" +- ] +- +- DisableSequence [ +- cset "name='Speaker Switch' off" +- ] +- +- Value { +- PlaybackPriority 100 +- PlaybackPCM "hw:${CardId}" +- } +- } +- +- SectionDevice."Headset" { +- Comment "Headset Microphone" +- +- EnableSequence [ +- cset "name='ADC 09 Capture Switch' 1" +- ] +- +- DisableSequence [ +- cset "name='ADC 09 Capture Switch' 0" +- ] +- +- Value { +- CapturePriority 200 +- CapturePCM "hw:${CardId},1" +- JackControl "Headset Mic Jack" +- } +- } +- } +-} +diff --git a/ucm2/sof-soundwire/RT711.conf b/ucm2/sof-soundwire/RT711.conf +deleted file mode 100644 +index 12b48ed..0000000 +--- a/ucm2/sof-soundwire/RT711.conf ++++ /dev/null +@@ -1,49 +0,0 @@ +-# Use case Configuration for sof-soundwire card +- +-If.RT711 { +- Condition { +- Type String +- Haystack "${CardComponents}" +- Needle "hs:rt711" +- } +- True { +- +- SectionDevice."Headphones" { +- Comment "Headphones" +- +- EnableSequence [ +- cset "name='Headphone Switch' on" +- ] +- +- DisableSequence [ +- cset "name='Headphone Switch' off" +- ] +- +- Value { +- PlaybackPriority 200 +- PlaybackPCM "hw:${CardId}" +- JackControl "Headphone Jack" +- } +- } +- +- SectionDevice."Headset" { +- Comment "Headset Microphone" +- +- EnableSequence [ +- cset "name='PGA2.0 2 Master Capture Switch' 1" +- ] +- +- DisableSequence [ +- cset "name='PGA2.0 2 Master Capture Switch' 0" +- ] +- +- Value { +- CapturePriority 200 +- CapturePCM "hw:${CardId},1" +- JackControl "Headset Mic Jack" +- CaptureSwitch "PGA2.0 2 Master Capture Switch" +- CaptureVolume "PGA2.0 2 Master Capture Volume" +- } +- } +- } +-} +diff --git a/ucm2/sof-soundwire/RT715.conf b/ucm2/sof-soundwire/RT715.conf +deleted file mode 100644 +index d1734ad..0000000 +--- a/ucm2/sof-soundwire/RT715.conf ++++ /dev/null +@@ -1,30 +0,0 @@ +-# Use case Configuration for sof-soundwire card +- +-If.RT715 { +- Condition { +- Type String +- Haystack "${CardComponents}" +- Needle "mic:rt715" +- } +- True { +- +- SectionDevice."Mic" { +- Comment "SoundWire microphones" +- +- EnableSequence [ +- cset "name='PGA5.0 5 Master Capture Switch' 1" +- ] +- +- DisableSequence [ +- cset "name='PGA5.0 5 Master Capture Switch' 0" +- ] +- +- Value { +- CapturePriority 100 +- CapturePCM "hw:${CardId},4" +- CaptureSwitch "PGA5.0 5 Master Capture Switch" +- CaptureVolume "PGA5.0 5 Master Capture Volume" +- } +- } +- } +-} +diff --git a/ucm2/sof-soundwire/RT1308-1.conf b/ucm2/sof-soundwire/rt1308-2.conf +similarity index 100% +rename from ucm2/sof-soundwire/RT1308-1.conf +rename to ucm2/sof-soundwire/rt1308-2.conf +diff --git a/ucm2/sof-soundwire/RT1308-2.conf b/ucm2/sof-soundwire/rt1308-4.conf +similarity index 100% +rename from ucm2/sof-soundwire/RT1308-2.conf +rename to ucm2/sof-soundwire/rt1308-4.conf +diff --git a/ucm2/sof-soundwire/rt5682.conf b/ucm2/sof-soundwire/rt5682.conf +new file mode 100644 +index 0000000..092ac9c +--- /dev/null ++++ b/ucm2/sof-soundwire/rt5682.conf +@@ -0,0 +1,50 @@ ++# Use case Configuration for sof-soundwire card ++ ++SectionDevice."Headphones" { ++ Comment "Headphones" ++ ++ EnableSequence [ ++ cset "name='Headphone Switch' on" ++ cset "name='rt5682 HPOL Playback Switch' 1" ++ cset "name='rt5682 HPOR Playback Switch' 1" ++ ] ++ ++ DisableSequence [ ++ cset "name='rt5682 HPOL Playback Switch' 0" ++ cset "name='rt5682 HPOR Playback Switch' 0" ++ cset "name='Headphone Switch' off" ++ ++ ] ++ ++ Value { ++ PlaybackPriority 200 ++ PlaybackPCM "hw:${CardId}" ++ JackControl "Headphone Jack" ++ } ++} ++ ++SectionDevice."Headset" { ++ Comment "Headset Microphone" ++ ++ EnableSequence [ ++ cset "name='Headset Mic Switch' on" ++ cset "name='rt5682 STO1 ADC Capture Switch' 1" ++ cset "name='rt5682 RECMIX1L CBJ Switch' 1" ++ cset "name='rt5682 Stereo1 ADC MIXL ADC1 Switch' 1" ++ cset "name='rt5682 Stereo1 ADC MIXR ADC1 Switch' 1" ++ ] ++ ++ DisableSequence [ ++ cset "name='rt5682 STO1 ADC Capture Switch' 0" ++ cset "name='rt5682 RECMIX1L CBJ Switch' 0" ++ cset "name='rt5682 Stereo1 ADC MIXL ADC1 Switch' 0" ++ cset "name='rt5682 Stereo1 ADC MIXR ADC1 Switch' 0" ++ cset "name='Headset Mic Switch' off" ++ ] ++ ++ Value { ++ CapturePriority 200 ++ CapturePCM "hw:${CardId},1" ++ JackControl "Headset Mic Jack" ++ } ++} +diff --git a/ucm2/sof-soundwire/rt700.conf b/ucm2/sof-soundwire/rt700.conf +new file mode 100644 +index 0000000..ab647f7 +--- /dev/null ++++ b/ucm2/sof-soundwire/rt700.conf +@@ -0,0 +1,62 @@ ++# Use case Configuration for sof-soundwire card ++ ++SectionDevice."Headphones" { ++ Comment "Headphones" ++ ++ ConflictingDevice [ ++ "Speaker" ++ ] ++ ++ EnableSequence [ ++ cset "name='Headphones Switch' on" ++ ] ++ ++ DisableSequence [ ++ cset "name='Headphones Switch' off" ++ ] ++ ++ Value { ++ PlaybackPriority 200 ++ PlaybackPCM "hw:${CardId}" ++ JackControl "Headphone Jack" ++ } ++} ++ ++SectionDevice."Speaker" { ++ Comment "Speaker" ++ ++ ConflictingDevice [ ++ "Headphones" ++ ] ++ ++ EnableSequence [ ++ cset "name='Speaker Switch' on" ++ ] ++ ++ DisableSequence [ ++ cset "name='Speaker Switch' off" ++ ] ++ ++ Value { ++ PlaybackPriority 100 ++ PlaybackPCM "hw:${CardId}" ++ } ++} ++ ++SectionDevice."Headset" { ++ Comment "Headset Microphone" ++ ++ EnableSequence [ ++ cset "name='ADC 09 Capture Switch' 1" ++ ] ++ ++ DisableSequence [ ++ cset "name='ADC 09 Capture Switch' 0" ++ ] ++ ++ Value { ++ CapturePriority 200 ++ CapturePCM "hw:${CardId},1" ++ JackControl "Headset Mic Jack" ++ } ++} +diff --git a/ucm2/sof-soundwire/rt711.conf b/ucm2/sof-soundwire/rt711.conf +new file mode 100644 +index 0000000..5300cf9 +--- /dev/null ++++ b/ucm2/sof-soundwire/rt711.conf +@@ -0,0 +1,39 @@ ++# Use case Configuration for sof-soundwire card ++ ++SectionDevice."Headphones" { ++ Comment "Headphones" ++ ++ EnableSequence [ ++ cset "name='Headphone Switch' on" ++ ] ++ ++ DisableSequence [ ++ cset "name='Headphone Switch' off" ++ ] ++ ++ Value { ++ PlaybackPriority 200 ++ PlaybackPCM "hw:${CardId}" ++ JackControl "Headphone Jack" ++ } ++} ++ ++SectionDevice."Headset" { ++ Comment "Headset Microphone" ++ ++ EnableSequence [ ++ cset "name='PGA2.0 2 Master Capture Switch' 1" ++ ] ++ ++ DisableSequence [ ++ cset "name='PGA2.0 2 Master Capture Switch' 0" ++ ] ++ ++ Value { ++ CapturePriority 200 ++ CapturePCM "hw:${CardId},1" ++ JackControl "Headset Mic Jack" ++ CaptureSwitch "PGA2.0 2 Master Capture Switch" ++ CaptureVolume "PGA2.0 2 Master Capture Volume" ++ } ++} +diff --git a/ucm2/sof-soundwire/rt715.conf b/ucm2/sof-soundwire/rt715.conf +new file mode 100644 +index 0000000..7b8ca59 +--- /dev/null ++++ b/ucm2/sof-soundwire/rt715.conf +@@ -0,0 +1,20 @@ ++# Use case Configuration for sof-soundwire card ++ ++SectionDevice."Mic" { ++ Comment "SoundWire microphones" ++ ++ EnableSequence [ ++ cset "name='PGA5.0 5 Master Capture Switch' 1" ++ ] ++ ++ DisableSequence [ ++ cset "name='PGA5.0 5 Master Capture Switch' 0" ++ ] ++ ++ Value { ++ CapturePriority 100 ++ CapturePCM "hw:${CardId},4" ++ CaptureSwitch "PGA5.0 5 Master Capture Switch" ++ CaptureVolume "PGA5.0 5 Master Capture Volume" ++ } ++} +diff --git a/ucm2/sof-soundwire/sof-soundwire.conf b/ucm2/sof-soundwire/sof-soundwire.conf +index 565f2b5..fe43d5f 100644 +--- a/ucm2/sof-soundwire/sof-soundwire.conf ++++ b/ucm2/sof-soundwire/sof-soundwire.conf +@@ -1,11 +1,55 @@ +-Syntax 2 ++Syntax 3 + + SectionUseCase."HiFi" { + File "HiFi.conf" + Comment "Play HiFi quality Music" + } + +- +- +- +- ++Define { ++ SpeakerCodec1 "" ++ SpeakerChannels1 "2" ++ SpeakerAmps1 "0" ++ HeadsetCodec1 "" ++ MicCodec1 "" ++} ++ ++DefineRegex { ++ SpeakerCodec { ++ Regex " spk:([a-z0-9]+)" ++ String "${CardComponents}" ++ } ++ SpeakerChannels { ++ Regex " cfg-spk:([0-9]+)" ++ String "${CardComponents}" ++ } ++ SpeakerAmps { ++ Regex " cfg-amp:([0-9]+)" ++ String "${CardComponents}" ++ } ++ HeadsetCodec { ++ Regex " hs:([a-z0-9]+)" ++ String "${CardComponents}" ++ } ++ MicCodec { ++ Regex " mic:([a-z0-9]+)" ++ String "${CardComponents}" ++ } ++} ++ ++If.hs_init { ++ Condition { ++ Type Regex ++ Regex "(rt5682|rt700|rt711)" ++ String "${var:HeadsetCodec1}" ++ } ++ True.Include.hs_init.File "/codecs/${var:HeadsetCodec1}/init.conf" ++} ++ ++If.mic_init { ++ Condition { ++ Type Regex ++ Regex "(rt715)" ++ String "${var:MicCodec1}" ++ } ++ True.Include.mic_init.File "/codecs/${var:MicCodec1}/init.conf" ++} +-- +2.17.1 + diff -Nru alsa-ucm-conf-1.2.2/debian/patches/0011-HDA-Intel-add-support-for-AMD-acp-microphone-devices.patch alsa-ucm-conf-1.2.2/debian/patches/0011-HDA-Intel-add-support-for-AMD-acp-microphone-devices.patch --- alsa-ucm-conf-1.2.2/debian/patches/0011-HDA-Intel-add-support-for-AMD-acp-microphone-devices.patch 1970-01-01 08:00:00.000000000 +0800 +++ alsa-ucm-conf-1.2.2/debian/patches/0011-HDA-Intel-add-support-for-AMD-acp-microphone-devices.patch 2020-08-08 14:38:06.000000000 +0800 @@ -0,0 +1,408 @@ +From 0574339829f36e302f4bc05d49830fa73ae2c4f5 Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Thu, 23 Jul 2020 12:43:48 +0800 +Subject: [PATCH 11/14] HDA-Intel: add support for AMD acp microphone devices + +- move the generic HDA code from sof-hda-dsp to HDA-Intel +- add generic codecs/hda/hdmi.conf + +Signed-off-by: Jaroslav Kysela +(backported from commit dcef48f13d4f5db79b006755074940b94730a883) +Signed-off-by: Hui Wang +--- + ucm2/HDA-Intel/HDA-Capture-value.conf | 4 + + ucm2/HDA-Intel/HDA-Intel.conf | 28 ++++++ + ucm2/HDA-Intel/Hdmi.conf | 37 +++++++ + ucm2/HDA-Intel/HiFi-acp.conf | 8 ++ + ucm2/HDA-Intel/HiFi-analog.conf | 133 ++++++++++++++++++++++++++ + ucm2/HDA-Intel/HiFi.conf | 32 +++++++ + ucm2/HDA-Intel/init.conf | 39 ++++++++ + ucm2/codecs/hda/hdmi.conf | 25 +++++ + ucm2/module/lib/linked.conf | 3 + + ucm2/module/snd_acp3x_rn.conf | 1 + + 10 files changed, 310 insertions(+) + create mode 100644 ucm2/HDA-Intel/HDA-Capture-value.conf + create mode 100644 ucm2/HDA-Intel/HDA-Intel.conf + create mode 100644 ucm2/HDA-Intel/Hdmi.conf + create mode 100644 ucm2/HDA-Intel/HiFi-acp.conf + create mode 100644 ucm2/HDA-Intel/HiFi-analog.conf + create mode 100644 ucm2/HDA-Intel/HiFi.conf + create mode 100644 ucm2/HDA-Intel/init.conf + create mode 100644 ucm2/codecs/hda/hdmi.conf + create mode 100644 ucm2/module/lib/linked.conf + create mode 120000 ucm2/module/snd_acp3x_rn.conf + +diff --git a/ucm2/HDA-Intel/HDA-Capture-value.conf b/ucm2/HDA-Intel/HDA-Capture-value.conf +new file mode 100644 +index 0000000..2f1316a +--- /dev/null ++++ b/ucm2/HDA-Intel/HDA-Capture-value.conf +@@ -0,0 +1,4 @@ ++CapturePCM "hw:${CardId}" ++CaptureMixerElem "Capture" ++CaptureVolume "Capture Volume" ++CaptureSwitch "Capture Switch" +diff --git a/ucm2/HDA-Intel/HDA-Intel.conf b/ucm2/HDA-Intel/HDA-Intel.conf +new file mode 100644 +index 0000000..109eea6 +--- /dev/null ++++ b/ucm2/HDA-Intel/HDA-Intel.conf +@@ -0,0 +1,28 @@ ++Syntax 3 ++ ++Define.Use "" # a non-empty string to use UCM configuration for HDA devices ++ ++Define.AcpCardId "$${CardIdByName:acp}" ++ ++If.acp { ++ Condition { ++ Type String ++ Empty "${var:AcpCardId}" ++ } ++ False.Define.Use y ++} ++ ++If.use { ++ Condition { ++ Type String ++ Empty "${var:Use}" ++ } ++ False { ++ SectionUseCase."HiFi" { ++ File "HiFi.conf" ++ Comment "Play HiFi quality Music" ++ } ++ ++ Include.init.File "/HDA-Intel/init.conf" ++ } ++} +diff --git a/ucm2/HDA-Intel/Hdmi.conf b/ucm2/HDA-Intel/Hdmi.conf +new file mode 100644 +index 0000000..8b1843b +--- /dev/null ++++ b/ucm2/HDA-Intel/Hdmi.conf +@@ -0,0 +1,37 @@ ++# Use case Configuration for sof-hda-dsp ++ ++If.hdmi1 { ++ Condition { Type String Empty "" } ++ True { ++ Define { ++ HdmiNum 1 ++ HdmiPCM 3 ++ HdmiPrio 500 ++ } ++ Include.hdmi1.File "/codecs/hda/hdmi.conf" ++ } ++} ++ ++If.hdmi2 { ++ Condition { Type String Empty "" } ++ True { ++ Define { ++ HdmiNum 2 ++ HdmiPCM 7 ++ HdmiPrio 600 ++ } ++ Include.hdmi2.File "/codecs/hda/hdmi.conf" ++ } ++} ++ ++If.hdmi3 { ++ Condition { Type String Empty "" } ++ True { ++ Define { ++ HdmiNum 3 ++ HdmiPCM 8 ++ HdmiPrio 700 ++ } ++ Include.hdmi3.File "/codecs/hda/hdmi.conf" ++ } ++} +diff --git a/ucm2/HDA-Intel/HiFi-acp.conf b/ucm2/HDA-Intel/HiFi-acp.conf +new file mode 100644 +index 0000000..123ae15 +--- /dev/null ++++ b/ucm2/HDA-Intel/HiFi-acp.conf +@@ -0,0 +1,8 @@ ++SectionDevice."Mic1" { ++ Comment "Digital Microphone" ++ ++ Value { ++ CapturePriority 100 ++ CapturePCM "hw:${var:AcpCardId}" ++ } ++} +diff --git a/ucm2/HDA-Intel/HiFi-analog.conf b/ucm2/HDA-Intel/HiFi-analog.conf +new file mode 100644 +index 0000000..1143a67 +--- /dev/null ++++ b/ucm2/HDA-Intel/HiFi-analog.conf +@@ -0,0 +1,133 @@ ++# Generic HDA devices for analog I/O ++ ++SectionDevice."Headphones" { ++ Comment "Headphones" ++ ++ If.headphone_switch { ++ Condition { ++ Type ControlExists ++ Control "name='Headphone Playback Switch'" ++ } ++ True { ++ EnableSequence [ ++ cset "name='Headphone Playback Switch' on" ++ ] ++ DisableSequence [ ++ cset "name='Headphone Playback Switch' off" ++ ] ++ } ++ } ++ ++ Value { ++ PlaybackPriority 200 ++ PlaybackPCM "hw:${CardId}" ++ PlaybackMixerElem "Headphone" ++ PlaybackMasterElem "Master" ++ PlaybackVolume "Headphone Playback Volume" ++ PlaybackSwitch "Headphone Playback Switch" ++ If.jack { ++ Condition { ++ Type ControlExists ++ Control "iface=CARD,name='Headphone Mic Jack'" ++ } ++ True { ++ JackControl "Headphone Mic Jack" ++ } ++ False { ++ JackControl "Headphone Jack" ++ } ++ } ++ } ++} ++ ++SectionDevice."Speaker" { ++ Comment "Speaker" ++ ++ If.seq { ++ Condition { ++ Type ControlExists ++ Control "name='Bass Speaker Playback Switch'" ++ } ++ True { ++ EnableSequence [ ++ cset "name='Speaker Playback Switch' on" ++ cset "name='Bass Speaker Playback Switch' on" ++ ] ++ ++ DisableSequence [ ++ cset "name='Speaker Playback Switch' off" ++ cset "name='Bass Speaker Playback Switch' off" ++ ] ++ } ++ False { ++ EnableSequence [ ++ cset "name='Speaker Playback Switch' on" ++ ] ++ ++ DisableSequence [ ++ cset "name='Speaker Playback Switch' off" ++ ] ++ } ++ } ++ ++ Value { ++ PlaybackPriority 100 ++ PlaybackPCM "hw:${CardId}" ++ PlaybackMixerElem "Speaker" ++ PlaybackMasterElem "Master" ++ PlaybackVolume "Speaker Playback Volume" ++ PlaybackSwitch "Speaker Playback Switch" ++ } ++} ++ ++If.monomic { ++ Condition { ++ Type ControlExists ++ Control "name='Input Source'" ++ ControlEnum "Headphone Mic" ++ } ++ True { ++ SectionDevice."Mic2" { ++ Comment "Headphones Stereo Microphone" ++ ++ ConflictingDevice [ ++ "Headset" ++ ] ++ ++ EnableSequence [ ++ cset "name='Input Source' 'Headphone Mic'" ++ ] ++ ++ Value { ++ CapturePriority 200 ++ Include.value.File "/HDA-Intel/HDA-Capture-value.conf" ++ JackControl "Headphone Mic Jack" ++ } ++ } ++ ++ SectionDevice."Headset" { ++ Comment "Headset Mono Microphone" ++ ++ EnableSequence [ ++ cset "name='Input Source' 'Headset Mic'" ++ ] ++ ++ Value { ++ CapturePriority 300 ++ Include.value.File "/HDA-Intel/HDA-Capture-value.conf" ++ JackControl "Headphone Mic Jack" ++ } ++ } ++ } ++ False { ++ SectionDevice."Mic2" { ++ Comment "Headphones Stereo Microphone" ++ ++ Value { ++ CapturePriority 200 ++ Include.value.File "/HDA-Intel/HDA-Capture-value.conf" ++ JackControl "Mic Jack" ++ } ++ } ++ } ++} +diff --git a/ucm2/HDA-Intel/HiFi.conf b/ucm2/HDA-Intel/HiFi.conf +new file mode 100644 +index 0000000..2d18c9e +--- /dev/null ++++ b/ucm2/HDA-Intel/HiFi.conf +@@ -0,0 +1,32 @@ ++# Use case Configuration for sof-hda-dsp ++ ++SectionVerb { ++ Value.TQ "HiFi" ++} ++ ++If.analog { ++ Condition { ++ Type ControlExists ++ Control "name='Master Playback Switch'" ++ } ++ True.Include.analog.File "/HDA-Intel/HiFi-analog.conf" ++} ++ ++If.hdmi { ++ Condition { Type String Empty "" } ++ True.Include.hdmi.File "/HDA-Intel/Hdmi.conf" ++} ++ ++If.acp { ++ Condition { ++ Type String ++ Empty "${var:AcpCardId}" ++ } ++ True { ++ RenameDevice."Mic1" "Mic" ++ } ++ False.Include.acp { ++ Before.SectionDevice "Mic1" ++ File "/HDA-Intel/HiFi-acp.conf" ++ } ++} +diff --git a/ucm2/HDA-Intel/init.conf b/ucm2/HDA-Intel/init.conf +new file mode 100644 +index 0000000..1a351a9 +--- /dev/null ++++ b/ucm2/HDA-Intel/init.conf +@@ -0,0 +1,39 @@ ++If.amute { ++ Condition { ++ Type ControlExists ++ Control "name='Auto-Mute Mode'" ++ } ++ True.BootSequence [ ++ cset "name='Auto-Mute Mode' off" ++ ] ++} ++ ++If.master { ++ Condition { ++ Type ControlExists ++ Control "name='Master Playback Volume'" ++ } ++ True.BootSequence [ ++ cset "name='Master Playback Volume' 60%" ++ ] ++} ++ ++If.speaker { ++ Condition { ++ Type ControlExists ++ Control "name='Speaker Playback Volume'" ++ } ++ True.BootSequence [ ++ cset "name='Speaker Playback Volume' 60%" ++ ] ++} ++ ++If.headphone { ++ Condition { ++ Type ControlExists ++ Control "name='Headphone Playback Volume'" ++ } ++ True.BootSequence [ ++ cset "name='Headphone Playback Volume' 60%" ++ ] ++} +diff --git a/ucm2/codecs/hda/hdmi.conf b/ucm2/codecs/hda/hdmi.conf +new file mode 100644 +index 0000000..c22f615 +--- /dev/null ++++ b/ucm2/codecs/hda/hdmi.conf +@@ -0,0 +1,25 @@ ++If.hdmi { ++ Condition { ++ Type ControlExists ++ Control "iface=CARD,name='HDMI/DP,pcm=${var:HdmiPCM} Jack'" ++ } ++ True { ++ SectionDevice."HDMI${var:HdmiNum}" { ++ Comment "HDMI${var:HdmiNum}/${var:HdmiNum} Output" ++ ++ EnableSequence [ ++ cset "name='IEC958 Playback Switch' on" ++ ] ++ ++ DisableSequence [ ++ cset "name='IEC958 Playback Switch' off" ++ ] ++ ++ Value { ++ PlaybackPriority "${var:HdmiPrio}" ++ PlaybackPCM "hw:${CardId},${var:HdmiPCM}" ++ JackControl "HDMI/DP,pcm=${var:HdmiPCM} Jack" ++ } ++ } ++ } ++} +diff --git a/ucm2/module/lib/linked.conf b/ucm2/module/lib/linked.conf +new file mode 100644 +index 0000000..d7656a8 +--- /dev/null ++++ b/ucm2/module/lib/linked.conf +@@ -0,0 +1,3 @@ ++ValueDefaults { ++ Linked 1 ++} +diff --git a/ucm2/module/snd_acp3x_rn.conf b/ucm2/module/snd_acp3x_rn.conf +new file mode 120000 +index 0000000..b56794a +--- /dev/null ++++ b/ucm2/module/snd_acp3x_rn.conf +@@ -0,0 +1 @@ ++lib/linked.conf +\ No newline at end of file +-- +2.17.1 + diff -Nru alsa-ucm-conf-1.2.2/debian/patches/0012-hda-hdmi-add-HDMI4-HDMI5-HDMI6-devices.patch alsa-ucm-conf-1.2.2/debian/patches/0012-hda-hdmi-add-HDMI4-HDMI5-HDMI6-devices.patch --- alsa-ucm-conf-1.2.2/debian/patches/0012-hda-hdmi-add-HDMI4-HDMI5-HDMI6-devices.patch 1970-01-01 08:00:00.000000000 +0800 +++ alsa-ucm-conf-1.2.2/debian/patches/0012-hda-hdmi-add-HDMI4-HDMI5-HDMI6-devices.patch 2020-08-08 14:38:06.000000000 +0800 @@ -0,0 +1,100 @@ +From 1478d4c3e7e689c9d1daddbb1422f645b2fd619f Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Mon, 6 Jul 2020 16:47:57 +0200 +Subject: [PATCH 12/14] hda hdmi: add HDMI4,HDMI5,HDMI6 devices + +- fix the duplicate index value in the comment section +- change priorities + +Signed-off-by: Jaroslav Kysela +(cherry picked from commit 3e8973062fa2b2c7df6d07ac98bfd4aef6bff5e3) +Signed-off-by: Hui Wang +--- + ucm2/HDA-Intel/Hdmi.conf | 42 ++++++++++++++++++++++++++++++++++++--- + ucm2/codecs/hda/hdmi.conf | 2 +- + 2 files changed, 40 insertions(+), 4 deletions(-) + +diff --git a/ucm2/HDA-Intel/Hdmi.conf b/ucm2/HDA-Intel/Hdmi.conf +index 8b1843b..c8b6e77 100644 +--- a/ucm2/HDA-Intel/Hdmi.conf ++++ b/ucm2/HDA-Intel/Hdmi.conf +@@ -6,7 +6,7 @@ If.hdmi1 { + Define { + HdmiNum 1 + HdmiPCM 3 +- HdmiPrio 500 ++ HdmiPrio 1100 + } + Include.hdmi1.File "/codecs/hda/hdmi.conf" + } +@@ -18,7 +18,7 @@ If.hdmi2 { + Define { + HdmiNum 2 + HdmiPCM 7 +- HdmiPrio 600 ++ HdmiPrio 1200 + } + Include.hdmi2.File "/codecs/hda/hdmi.conf" + } +@@ -30,8 +30,44 @@ If.hdmi3 { + Define { + HdmiNum 3 + HdmiPCM 8 +- HdmiPrio 700 ++ HdmiPrio 1300 + } + Include.hdmi3.File "/codecs/hda/hdmi.conf" + } + } ++ ++If.hdmi4 { ++ Condition { Type String Empty "" } ++ True { ++ Define { ++ HdmiNum 4 ++ HdmiPCM 9 ++ HdmiPrio 1400 ++ } ++ Include.hdmi4.File "/codecs/hda/hdmi.conf" ++ } ++} ++ ++If.hdmi5 { ++ Condition { Type String Empty "" } ++ True { ++ Define { ++ HdmiNum 5 ++ HdmiPCM 10 ++ HdmiPrio 1500 ++ } ++ Include.hdmi5.File "/codecs/hda/hdmi.conf" ++ } ++} ++ ++If.hdmi6 { ++ Condition { Type String Empty "" } ++ True { ++ Define { ++ HdmiNum 6 ++ HdmiPCM 11 ++ HdmiPrio 1600 ++ } ++ Include.hdmi5.File "/codecs/hda/hdmi.conf" ++ } ++} +diff --git a/ucm2/codecs/hda/hdmi.conf b/ucm2/codecs/hda/hdmi.conf +index c22f615..ba80fef 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}/${var:HdmiNum} Output" ++ Comment "HDMI${var:HdmiNum} Output" + + EnableSequence [ + cset "name='IEC958 Playback Switch' on" +-- +2.17.1 + diff -Nru alsa-ucm-conf-1.2.2/debian/patches/0013-amd-renoir-acp-use-the-machine-driver-s-name-for-top.patch alsa-ucm-conf-1.2.2/debian/patches/0013-amd-renoir-acp-use-the-machine-driver-s-name-for-top.patch --- alsa-ucm-conf-1.2.2/debian/patches/0013-amd-renoir-acp-use-the-machine-driver-s-name-for-top.patch 1970-01-01 08:00:00.000000000 +0800 +++ alsa-ucm-conf-1.2.2/debian/patches/0013-amd-renoir-acp-use-the-machine-driver-s-name-for-top.patch 2020-08-08 14:38:06.000000000 +0800 @@ -0,0 +1,8 @@ +Index: alsa-ucm-conf-1.2.2/ucm2/module/acp_pdm_mach.conf +=================================================================== +--- /dev/null ++++ alsa-ucm-conf-1.2.2/ucm2/module/acp_pdm_mach.conf +@@ -0,0 +1,3 @@ ++ValueDefaults { ++ Linked 1 ++} diff -Nru alsa-ucm-conf-1.2.2/debian/patches/0014-amd-renoir-acp-add-syntax-in-the-Linked.patch alsa-ucm-conf-1.2.2/debian/patches/0014-amd-renoir-acp-add-syntax-in-the-Linked.patch --- alsa-ucm-conf-1.2.2/debian/patches/0014-amd-renoir-acp-add-syntax-in-the-Linked.patch 1970-01-01 08:00:00.000000000 +0800 +++ alsa-ucm-conf-1.2.2/debian/patches/0014-amd-renoir-acp-add-syntax-in-the-Linked.patch 2020-08-08 14:38:06.000000000 +0800 @@ -0,0 +1,20 @@ +Index: alsa-ucm-conf-1.2.2/ucm2/module/acp_pdm_mach.conf +=================================================================== +--- alsa-ucm-conf-1.2.2.orig/ucm2/module/acp_pdm_mach.conf ++++ alsa-ucm-conf-1.2.2/ucm2/module/acp_pdm_mach.conf +@@ -1,3 +1,5 @@ ++Syntax 3 ++ + ValueDefaults { + Linked 1 + } +Index: alsa-ucm-conf-1.2.2/ucm2/module/lib/linked.conf +=================================================================== +--- alsa-ucm-conf-1.2.2.orig/ucm2/module/lib/linked.conf ++++ alsa-ucm-conf-1.2.2/ucm2/module/lib/linked.conf +@@ -1,3 +1,5 @@ ++Syntax 3 ++ + ValueDefaults { + Linked 1 + } diff -Nru alsa-ucm-conf-1.2.2/debian/patches/0015-HDA-Intel-only-bind-the-acp-dmic-to-the-soundcard-wi.patch alsa-ucm-conf-1.2.2/debian/patches/0015-HDA-Intel-only-bind-the-acp-dmic-to-the-soundcard-wi.patch --- alsa-ucm-conf-1.2.2/debian/patches/0015-HDA-Intel-only-bind-the-acp-dmic-to-the-soundcard-wi.patch 1970-01-01 08:00:00.000000000 +0800 +++ alsa-ucm-conf-1.2.2/debian/patches/0015-HDA-Intel-only-bind-the-acp-dmic-to-the-soundcard-wi.patch 2020-08-08 14:38:06.000000000 +0800 @@ -0,0 +1,58 @@ +From b21b89fb37c6bb64a392d86d4f1ff28277077087 Mon Sep 17 00:00:00 2001 +From: Hui Wang +Date: Thu, 23 Jul 2020 15:21:05 +0800 +Subject: [PATCH 15/15] HDA-Intel: only bind the acp dmic to the soundcard with + analog codec + +On the Lenovo amd renoir laptops, there are 2 soundcards, one is the +intel soundcard with analog codec, the other is the nvidia soundcard +with only hdmi audio codec. We expect the the dmic of acp driver to +bind to the soundcard with analog codec instead of both 2 soundcards. + +Signed-off-by: Hui Wang +--- + ucm2/HDA-Intel/HDA-Intel.conf | 8 ++++++++ + ucm2/HDA-Intel/HiFi.conf | 8 +------- + 2 files changed, 9 insertions(+), 7 deletions(-) + +diff --git a/ucm2/HDA-Intel/HDA-Intel.conf b/ucm2/HDA-Intel/HDA-Intel.conf +index 109eea6..e288ae4 100644 +--- a/ucm2/HDA-Intel/HDA-Intel.conf ++++ b/ucm2/HDA-Intel/HDA-Intel.conf +@@ -12,6 +12,14 @@ If.acp { + False.Define.Use y + } + ++If.analog { ++ Condition { ++ Type ControlExists ++ Control "name='Master Playback Switch'" ++ } ++ False.Define.Use "" ++} ++ + If.use { + Condition { + Type String +diff --git a/ucm2/HDA-Intel/HiFi.conf b/ucm2/HDA-Intel/HiFi.conf +index 2d18c9e..7d4acb9 100644 +--- a/ucm2/HDA-Intel/HiFi.conf ++++ b/ucm2/HDA-Intel/HiFi.conf +@@ -4,13 +4,7 @@ SectionVerb { + Value.TQ "HiFi" + } + +-If.analog { +- Condition { +- Type ControlExists +- Control "name='Master Playback Switch'" +- } +- True.Include.analog.File "/HDA-Intel/HiFi-analog.conf" +-} ++Include.analog.File "/HDA-Intel/HiFi-analog.conf" + + If.hdmi { + Condition { Type String Empty "" } +-- +2.17.1 + diff -Nru alsa-ucm-conf-1.2.2/debian/patches/0016-Fix-invalid-Regex-Type-in-various-Condition-blocks.patch alsa-ucm-conf-1.2.2/debian/patches/0016-Fix-invalid-Regex-Type-in-various-Condition-blocks.patch --- alsa-ucm-conf-1.2.2/debian/patches/0016-Fix-invalid-Regex-Type-in-various-Condition-blocks.patch 1970-01-01 08:00:00.000000000 +0800 +++ alsa-ucm-conf-1.2.2/debian/patches/0016-Fix-invalid-Regex-Type-in-various-Condition-blocks.patch 2020-08-08 14:38:06.000000000 +0800 @@ -0,0 +1,46 @@ +From 36a4725d4ed7210259bbe7ab47f4175ac8ad10db Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Sun, 28 Jun 2020 19:44:17 +0200 +Subject: [PATCH 12/16] Fix invalid "Regex" Type in various Condition blocks + +Regex is not a valid Condition type, using it leads to errors like these: + +ALSA lib ucm_cond.c:300:(if_eval) unknown If.Condition.Type +ALSA lib main.c:983:(snd_use_case_mgr_open) error: failed to import cht-bsw-rt5672 use case configuration -22 +alsaucm: error failed to open sound card cht-bsw-rt5672: Invalid argument + +Replacing it with "RegexMatch" fixes this. + +Signed-off-by: Hans de Goede +Signed-off-by: Jaroslav Kysela +(backported from commit a396908d25976c030e7a6a56bd5be0738c11d2ee) +Signed-off-by: Hui Wang +--- + ucm2/sof-soundwire/sof-soundwire.conf | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/ucm2/sof-soundwire/sof-soundwire.conf b/ucm2/sof-soundwire/sof-soundwire.conf +index fe43d5f..2ba44be 100644 +--- a/ucm2/sof-soundwire/sof-soundwire.conf ++++ b/ucm2/sof-soundwire/sof-soundwire.conf +@@ -38,7 +38,7 @@ DefineRegex { + + If.hs_init { + Condition { +- Type Regex ++ Type RegexMatch + Regex "(rt5682|rt700|rt711)" + String "${var:HeadsetCodec1}" + } +@@ -47,7 +47,7 @@ If.hs_init { + + If.mic_init { + Condition { +- Type Regex ++ Type RegexMatch + Regex "(rt715)" + String "${var:MicCodec1}" + } +-- +2.17.1 + diff -Nru alsa-ucm-conf-1.2.2/debian/patches/series alsa-ucm-conf-1.2.2/debian/patches/series --- alsa-ucm-conf-1.2.2/debian/patches/series 2020-05-25 14:36:48.000000000 +0800 +++ alsa-ucm-conf-1.2.2/debian/patches/series 2020-08-08 14:39:28.000000000 +0800 @@ -1,3 +1,17 @@ 0001-sof-hda-dsp-Support-systems-without-integrated-graph.patch 0002-sof-hda-dsp-change-Headphones2-to-Mic2.patch +0003-ucm-fix-wrong-If-in-sequence-in-HiFi-dual.conf.patch +0004-ucm2-add-initial-ucm.conf-for-the-latest-alsa-lib.patch +0005-sof-hda-dsp-don-t-fail-if-Auto-Mute-control-is-not-p.patch +0006-ucm.conf-add-support-for-the-kernel-module-name-tree.patch +0007-sof-hda-dsp-make-Headphone-Playback-Switch-condition.patch +0008-sof-soundwire-initial-UCM2-version.patch +0009-sof-soundwire-cleanups-recommended-by-the-ucm-valida.patch +0010-sof-soundwire-rewrite-for-syntax-3.patch +0011-HDA-Intel-add-support-for-AMD-acp-microphone-devices.patch +0012-hda-hdmi-add-HDMI4-HDMI5-HDMI6-devices.patch +0013-amd-renoir-acp-use-the-machine-driver-s-name-for-top.patch +0014-amd-renoir-acp-add-syntax-in-the-Linked.patch +0015-HDA-Intel-only-bind-the-acp-dmic-to-the-soundcard-wi.patch +0016-Fix-invalid-Regex-Type-in-various-Condition-blocks.patch