diff -pruN 1.2.2-1/debian/changelog 1.2.2-1ubuntu6/debian/changelog
--- 1.2.2-1/debian/changelog	2020-02-29 15:36:53.000000000 +0000
+++ 1.2.2-1ubuntu6/debian/changelog	2020-11-09 03:59:02.000000000 +0000
@@ -1,3 +1,69 @@
+alsa-ucm-conf (1.2.2-1ubuntu6) hirsute; urgency=medium
+
+  * d/p/0001-sof-hda-dsp-add-initial-kcontrol-values.patch
+  * d/p/0002-sof-hda-dsp-make-the-boot-init-optional-for-all-cont.patch
+  * d/p/0003-sof-hda-dsp-Set-Master-Playback-Switch-on-in-the-Boo.patch
+  * d/p/0004-sof-hda-dsp-Increase-the-speaker-output-volume-in-th.patch
+    Unmute the master playback switch and increase the init output volume,
+    otherwise the playback will be muted after freshly install the OS if
+    the machine uses ucm to configure the audio mixers, and the init playback
+    output volume is too low after freshly install the OS.
+    (LP: #1901922)
+
+ -- Hui Wang <hui.wang@canonical.com>  Mon, 09 Nov 2020 03:59:02 +0000
+
+alsa-ucm-conf (1.2.2-1ubuntu5) groovy; urgency=medium
+
+  * d/p/0001-ucm2-USB-Audio-Add-more-support-to-Lenovo-ThinkStati.patch
+    Add MixerElem and proper PCM assignment to Lenovo P620 Main and Rear
+    audio, respectively (LP: #1895669)
+
+ -- Kai-Heng Feng <kai.heng.feng@canonical.com>  Tue, 15 Sep 2020 21:19:16 +0800
+
+alsa-ucm-conf (1.2.2-1ubuntu4) groovy; urgency=medium
+
+  * d/p/0017-USB-Audio-Dell-WD15-Dock-make-input-and-output-volum.patch
+    Make the volume adjustable for USB audio on the Dell WD15/WD19 dock,
+    otherwise even we set the input volume to max, we can't record the sound
+    with some specific headset-mic (LP: #1893004)
+
+ -- Hui Wang <hui.wang@canonical.com>  Wed, 02 Sep 2020 01:00:39 +0000
+
+alsa-ucm-conf (1.2.2-1ubuntu3) groovy; urgency=medium
+
+  * d/p/0001-Add-support-for-Lenovo-ThinkStation-P620-Main-Audio.patch
+    Add proper stream and jack assignment to Lenovo ThinkStation P620
+    (LP: #1891461)
+
+ -- Kai-Heng Feng <kai.heng.feng@canonical.com>  Tue, 18 Aug 2020 17:39:15 +0800
+
+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
+    Make digital mic on the AMD Renoir machines work under gnome desktop
+    (LP: #1889217)
+
+ -- Hui Wang <hui.wang@canonical.com>  Thu, 13 Aug 2020 16:18:58 +0200
+
+alsa-ucm-conf (1.2.2-1ubuntu1) groovy; urgency=medium
+
+  * Fix the audio crash on the machine without Intel HDMI audio (lp: #1874698)
+
+ -- Hui Wang <hui.wang@canonical.com>  Mon, 25 May 2020 14:36:48 +0800
+
 alsa-ucm-conf (1.2.2-1) unstable; urgency=medium
 
   * New upstream release.
diff -pruN 1.2.2-1/debian/control 1.2.2-1ubuntu6/debian/control
--- 1.2.2-1/debian/control	2020-02-29 15:36:35.000000000 +0000
+++ 1.2.2-1ubuntu6/debian/control	2020-08-13 14:20:30.000000000 +0000
@@ -1,7 +1,8 @@
 Source: alsa-ucm-conf
 Section: libs
 Priority: optional
-Maintainer: Debian ALSA Maintainers <pkg-alsa-devel@lists.alioth.debian.org>
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+XSBC-Original-Maintainer: Debian ALSA Maintainers <pkg-alsa-devel@lists.alioth.debian.org>
 Uploaders: Jordi Mallach <jordi@debian.org>,
            Elimar Riesebieter <riesebie@lxtec.de>,
            Luke Yelavich <themuso@ubuntu.com>
diff -pruN 1.2.2-1/debian/patches/0001-Add-support-for-Lenovo-ThinkStation-P620-Main-Audio.patch 1.2.2-1ubuntu6/debian/patches/0001-Add-support-for-Lenovo-ThinkStation-P620-Main-Audio.patch
--- 1.2.2-1/debian/patches/0001-Add-support-for-Lenovo-ThinkStation-P620-Main-Audio.patch	1970-01-01 00:00:00.000000000 +0000
+++ 1.2.2-1ubuntu6/debian/patches/0001-Add-support-for-Lenovo-ThinkStation-P620-Main-Audio.patch	2020-08-18 09:39:15.000000000 +0000
@@ -0,0 +1,79 @@
+From fc489d2a140000eb2b04181dc6c97201376accfc Mon Sep 17 00:00:00 2001
+From: Kai-Heng Feng <kai.heng.feng@canonical.com>
+Date: Thu, 6 Aug 2020 16:54:11 +0800
+Subject: [PATCH] Add support for Lenovo ThinkStation P620 Main Audio
+
+This add support for internal speaker and front headset.
+
+We need two separate configs to let PulseAudio understands they are two
+different profiles, so the headset's port availability won't affect
+speaker's profile availability.
+---
+ ...Lenovo-ThinkStation-P620-Main-Headset.conf | 19 +++++++++++++++++++
+ ...Lenovo-ThinkStation-P620-Main-Speaker.conf |  9 +++++++++
+ .../Lenovo-ThinkStation-P620-Main.conf        | 11 +++++++++++
+ 3 files changed, 39 insertions(+)
+ create mode 100644 ucm2/USB-Audio/Lenovo-ThinkStation-P620-Main-Headset.conf
+ create mode 100644 ucm2/USB-Audio/Lenovo-ThinkStation-P620-Main-Speaker.conf
+ create mode 100644 ucm2/USB-Audio/Lenovo-ThinkStation-P620-Main.conf
+
+diff --git a/ucm2/USB-Audio/Lenovo-ThinkStation-P620-Main-Headset.conf b/ucm2/USB-Audio/Lenovo-ThinkStation-P620-Main-Headset.conf
+new file mode 100644
+index 0000000..5362c5e
+--- /dev/null
++++ b/ucm2/USB-Audio/Lenovo-ThinkStation-P620-Main-Headset.conf
+@@ -0,0 +1,19 @@
++SectionDevice."Headphones" {
++	Comment "Headphones"
++
++	Value {
++		PlaybackPriority 200
++		PlaybackPCM "hw:${CardId},1"
++		JackControl "Headphone - Output Jack"
++	}
++}
++
++SectionDevice."Microphone" {
++	Comment "Microphone"
++
++	Value {
++		CapturePriority 200
++		CapturePCM "hw:${CardId}"
++		JackControl "Mic - Input Jack"
++	}
++}
+diff --git a/ucm2/USB-Audio/Lenovo-ThinkStation-P620-Main-Speaker.conf b/ucm2/USB-Audio/Lenovo-ThinkStation-P620-Main-Speaker.conf
+new file mode 100644
+index 0000000..a83a947
+--- /dev/null
++++ b/ucm2/USB-Audio/Lenovo-ThinkStation-P620-Main-Speaker.conf
+@@ -0,0 +1,9 @@
++SectionDevice."Speaker" {
++	Comment "Speaker"
++
++	Value {
++		PlaybackPriority 100
++		PlaybackPCM "hw:${CardId}"
++		JackControl "Speaker - Output Jack"
++	}
++}
+diff --git a/ucm2/USB-Audio/Lenovo-ThinkStation-P620-Main.conf b/ucm2/USB-Audio/Lenovo-ThinkStation-P620-Main.conf
+new file mode 100644
+index 0000000..ad1bd91
+--- /dev/null
++++ b/ucm2/USB-Audio/Lenovo-ThinkStation-P620-Main.conf
+@@ -0,0 +1,11 @@
++Syntax 2
++Comment "USB-audio on Lenovo ThinkStation P620 Main Audio"
++SectionUseCase."Speaker" {
++	Comment "Internal Speaker"
++	File "Lenovo-ThinkStation-P620-Main-Speaker.conf"
++}
++
++SectionUseCase."Headset" {
++	Comment "Front Headset"
++	File "Lenovo-ThinkStation-P620-Main-Headset.conf"
++}
+-- 
+2.17.1
+
diff -pruN 1.2.2-1/debian/patches/0001-sof-hda-dsp-add-initial-kcontrol-values.patch 1.2.2-1ubuntu6/debian/patches/0001-sof-hda-dsp-add-initial-kcontrol-values.patch
--- 1.2.2-1/debian/patches/0001-sof-hda-dsp-add-initial-kcontrol-values.patch	1970-01-01 00:00:00.000000000 +0000
+++ 1.2.2-1ubuntu6/debian/patches/0001-sof-hda-dsp-add-initial-kcontrol-values.patch	2020-11-09 03:59:02.000000000 +0000
@@ -0,0 +1,47 @@
+From 40967300232adc19779f641e2963cca686de0e87 Mon Sep 17 00:00:00 2001
+From: Libin Yang <libin.yang@intel.com>
+Date: Thu, 21 May 2020 03:45:16 -0400
+Subject: [PATCH 1/2] sof-hda-dsp: add initial kcontrol values
+
+This patch adds the initial values of sof-hda-dsp card.
+
+Signed-off-by: Libin Yang <libin.yang@intel.com>
+Signed-off-by: Jaroslav Kysela <perex@perex.cz>
+(cherry picked from commit 450bebd628975ffab153978b80f1493100910e53)
+Signed-off-by: Hui Wang <hui.wang@canonical.com>
+---
+ ucm2/sof-hda-dsp/sof-hda-dsp.conf | 21 +++++++++++++++++++++
+ 1 file changed, 21 insertions(+)
+
+diff --git a/ucm2/sof-hda-dsp/sof-hda-dsp.conf b/ucm2/sof-hda-dsp/sof-hda-dsp.conf
+index d7a0518..f3a79e9 100644
+--- a/ucm2/sof-hda-dsp/sof-hda-dsp.conf
++++ b/ucm2/sof-hda-dsp/sof-hda-dsp.conf
+@@ -4,3 +4,24 @@ SectionUseCase."HiFi" {
+ 	File "HiFi.conf"
+ 	Comment "Play HiFi quality Music"
+ }
++
++# the kcontrols initial values, which will be set by `alsactl init`
++
++BootSequence [
++	cset "name='Master Playback Volume' 80"
++	cset "name='Headphone Playback Volume' 80"
++	cset "name='Speaker Playback Volume' 80"
++	cset "name='Auto-Mute Mode' off"
++]
++
++If.Dmic0 {
++	Condition {
++		Type ControlExists
++		Control "name='Dmic0 Capture Volume'"
++	}
++	True {
++		BootSequence [
++			cset "name='Dmic0 Capture Volume' 70"
++		]
++	}
++}
+-- 
+2.25.1
+
diff -pruN 1.2.2-1/debian/patches/0001-sof-hda-dsp-Support-systems-without-integrated-graph.patch 1.2.2-1ubuntu6/debian/patches/0001-sof-hda-dsp-Support-systems-without-integrated-graph.patch
--- 1.2.2-1/debian/patches/0001-sof-hda-dsp-Support-systems-without-integrated-graph.patch	1970-01-01 00:00:00.000000000 +0000
+++ 1.2.2-1ubuntu6/debian/patches/0001-sof-hda-dsp-Support-systems-without-integrated-graph.patch	2020-05-25 06:36:48.000000000 +0000
@@ -0,0 +1,140 @@
+From 4722f5b3859903521ba0f92a64d86af31083ca50 Mon Sep 17 00:00:00 2001
+From: Kai Vehmanen <kai.vehmanen@linux.intel.com>
+Date: Thu, 5 Mar 2020 14:59:56 +0200
+Subject: [PATCH] sof-hda-dsp: Support systems without integrated graphics
+ audio
+
+On systems where integrated graphics audio is not present
+or is disabled, the HDMI PCM nodes are disabled. Add rules to
+detect these systems by checking presence of HDMI jack controls
+with UCM2 rules.
+
+Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
+Signed-off-by: Jaroslav Kysela <perex@perex.cz>
+---
+ ucm2/sof-hda-dsp/Hdmi.conf | 96 ++++++++++++++++++++++++--------------
+ 1 file changed, 60 insertions(+), 36 deletions(-)
+
+diff --git a/ucm2/sof-hda-dsp/Hdmi.conf b/ucm2/sof-hda-dsp/Hdmi.conf
+index be6cb39..6f2c4aa 100644
+--- a/ucm2/sof-hda-dsp/Hdmi.conf
++++ b/ucm2/sof-hda-dsp/Hdmi.conf
+@@ -1,55 +1,79 @@
+ # Use case Configuration for sof-hda-dsp
+ 
+-SectionDevice."HDMI1" {
+-	Comment "HDMI1/DP1 Output"
++If.hdmi1 {
++	Condition {
++		Type ControlExists
++		Control "iface=CARD,name='HDMI/DP,pcm=3 Jack'"
++	}
++	True {
++		SectionDevice."HDMI1" {
++			Comment "HDMI1/DP1 Output"
+ 
+-	EnableSequence [
+-		cset "name='IEC958 Playback Switch' on"
+-	]
++			EnableSequence [
++				cset "name='IEC958 Playback Switch' on"
++			]
+ 
+-	DisableSequence [
+-		cset "name='IEC958 Playback Switch' off"
+-	]
++			DisableSequence [
++				cset "name='IEC958 Playback Switch' off"
++			]
+ 
+-	Value {
+-		PlaybackPriority 500
+-		PlaybackPCM "hw:${CardId},3"
+-		JackControl "HDMI/DP,pcm=3 Jack"
++			Value {
++				PlaybackPriority 500
++				PlaybackPCM "hw:${CardId},3"
++				JackControl "HDMI/DP,pcm=3 Jack"
++			}
++		}
+ 	}
+ }
+ 
+-SectionDevice."HDMI2" {
+-	Comment "HDMI2/DP2 Output"
++If.hdmi2 {
++	Condition {
++		Type ControlExists
++		Control "iface=CARD,name='HDMI/DP,pcm=4 Jack'"
++	}
++	True {
++		SectionDevice."HDMI2" {
++			Comment "HDMI2/DP2 Output"
+ 
+-	EnableSequence [
+-		cset "name='IEC958 Playback Switch',index=1 on"
+-	]
++			EnableSequence [
++				cset "name='IEC958 Playback Switch',index=1 on"
++			]
+ 
+-	DisableSequence [
+-		cset "name='IEC958 Playback Switch',index=1 off"
+-	]
++			DisableSequence [
++				cset "name='IEC958 Playback Switch',index=1 off"
++			]
+ 
+-	Value {
+-		PlaybackPriority 600
+-		PlaybackPCM "hw:${CardId},4"
+-		JackControl "HDMI/DP,pcm=4 Jack"
++			Value {
++				PlaybackPriority 600
++				PlaybackPCM "hw:${CardId},4"
++				JackControl "HDMI/DP,pcm=4 Jack"
++			}
++		}
+ 	}
+ }
+ 
+-SectionDevice."HDMI3" {
+-	Comment "HDMI3/DP3 Output"
++If.hdmi3 {
++	Condition {
++		Type ControlExists
++		Control "iface=CARD,name='HDMI/DP,pcm=5 Jack'"
++	}
++	True {
++		SectionDevice."HDMI3" {
++			Comment "HDMI3/DP3 Output"
+ 
+-	EnableSequence [
+-		cset "name='IEC958 Playback Switch',index=2 on"
+-	]
++			EnableSequence [
++				cset "name='IEC958 Playback Switch',index=2 on"
++			]
+ 
+-	DisableSequence [
+-		cset "name='IEC958 Playback Switch',index=2 off"
+-	]
++			DisableSequence [
++				cset "name='IEC958 Playback Switch',index=2 off"
++			]
+ 
+-	Value {
+-		PlaybackPriority 700
+-		PlaybackPCM "hw:${CardId},5"
+-		JackControl "HDMI/DP,pcm=5 Jack"
++			Value {
++				PlaybackPriority 700
++				PlaybackPCM "hw:${CardId},5"
++				JackControl "HDMI/DP,pcm=5 Jack"
++			}
++		}
+ 	}
+ }
+-- 
+2.25.1
+
diff -pruN 1.2.2-1/debian/patches/0001-ucm2-USB-Audio-Add-more-support-to-Lenovo-ThinkStati.patch 1.2.2-1ubuntu6/debian/patches/0001-ucm2-USB-Audio-Add-more-support-to-Lenovo-ThinkStati.patch
--- 1.2.2-1/debian/patches/0001-ucm2-USB-Audio-Add-more-support-to-Lenovo-ThinkStati.patch	1970-01-01 00:00:00.000000000 +0000
+++ 1.2.2-1ubuntu6/debian/patches/0001-ucm2-USB-Audio-Add-more-support-to-Lenovo-ThinkStati.patch	2020-09-15 13:19:16.000000000 +0000
@@ -0,0 +1,103 @@
+From 526f549eb9ba24dd74bdf65d701f4c5f63eb4494 Mon Sep 17 00:00:00 2001
+From: Kai-Heng Feng <kai.heng.feng@canonical.com>
+Date: Tue, 15 Sep 2020 20:22:22 +0800
+Subject: [PATCH] ucm2: USB-Audio: Add more support to Lenovo ThinkStation P620
+
+Add MixerElem and proper PCM assignment to Lenovo P620 Main and Rear
+audio, respectively.
+
+Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
+---
+ .../Lenovo-ThinkStation-P620-Main-Headset.conf   |  1 +
+ .../Lenovo-ThinkStation-P620-Rear-Line.conf      | 10 ++++++++++
+ .../Lenovo-ThinkStation-P620-Rear-Mic.conf       | 10 ++++++++++
+ .../Lenovo-ThinkStation-P620-Rear-Speaker.conf   |  8 ++++++++
+ .../USB-Audio/Lenovo-ThinkStation-P620-Rear.conf | 16 ++++++++++++++++
+ 5 files changed, 45 insertions(+)
+ create mode 100644 ucm2/USB-Audio/Lenovo-ThinkStation-P620-Rear-Line.conf
+ create mode 100644 ucm2/USB-Audio/Lenovo-ThinkStation-P620-Rear-Mic.conf
+ create mode 100644 ucm2/USB-Audio/Lenovo-ThinkStation-P620-Rear-Speaker.conf
+ create mode 100644 ucm2/USB-Audio/Lenovo-ThinkStation-P620-Rear.conf
+
+diff --git a/ucm2/USB-Audio/Lenovo-ThinkStation-P620-Main-Headset.conf b/ucm2/USB-Audio/Lenovo-ThinkStation-P620-Main-Headset.conf
+index 5362c5e..f0f01ad 100644
+--- a/ucm2/USB-Audio/Lenovo-ThinkStation-P620-Main-Headset.conf
++++ b/ucm2/USB-Audio/Lenovo-ThinkStation-P620-Main-Headset.conf
+@@ -15,5 +15,6 @@ SectionDevice."Microphone" {
+ 		CapturePriority 200
+ 		CapturePCM "hw:${CardId}"
+ 		JackControl "Mic - Input Jack"
++		CaptureMixerElem "Mic"
+ 	}
+ }
+diff --git a/ucm2/USB-Audio/Lenovo-ThinkStation-P620-Rear-Line.conf b/ucm2/USB-Audio/Lenovo-ThinkStation-P620-Rear-Line.conf
+new file mode 100644
+index 0000000..f372989
+--- /dev/null
++++ b/ucm2/USB-Audio/Lenovo-ThinkStation-P620-Rear-Line.conf
+@@ -0,0 +1,10 @@
++SectionDevice."Line" {
++	Comment "Line In"
++
++	Value {
++		CapturePriority 100
++		CapturePCM "hw:${CardId}"
++		JackControl "Line - Input Jack"
++		CaptureMixerElem "Line"
++	}
++}
+diff --git a/ucm2/USB-Audio/Lenovo-ThinkStation-P620-Rear-Mic.conf b/ucm2/USB-Audio/Lenovo-ThinkStation-P620-Rear-Mic.conf
+new file mode 100644
+index 0000000..44a79d0
+--- /dev/null
++++ b/ucm2/USB-Audio/Lenovo-ThinkStation-P620-Rear-Mic.conf
+@@ -0,0 +1,10 @@
++SectionDevice."Mic" {
++	Comment "Microphone"
++
++	Value {
++		CapturePriority 200
++		CapturePCM "hw:${CardId},1"
++		JackControl "Mic - Input Jack"
++		CaptureMixerElem "Mic"
++	}
++}
+diff --git a/ucm2/USB-Audio/Lenovo-ThinkStation-P620-Rear-Speaker.conf b/ucm2/USB-Audio/Lenovo-ThinkStation-P620-Rear-Speaker.conf
+new file mode 100644
+index 0000000..edebbd3
+--- /dev/null
++++ b/ucm2/USB-Audio/Lenovo-ThinkStation-P620-Rear-Speaker.conf
+@@ -0,0 +1,8 @@
++SectionDevice."Speaker" {
++	Comment "Speaker"
++
++	Value {
++		PlaybackPCM "hw:${CardId}"
++		JackControl "Speaker - Output Jack"
++	}
++}
+diff --git a/ucm2/USB-Audio/Lenovo-ThinkStation-P620-Rear.conf b/ucm2/USB-Audio/Lenovo-ThinkStation-P620-Rear.conf
+new file mode 100644
+index 0000000..42e436b
+--- /dev/null
++++ b/ucm2/USB-Audio/Lenovo-ThinkStation-P620-Rear.conf
+@@ -0,0 +1,16 @@
++Syntax 2
++Comment "USB-audio on Lenovo ThinkStation P620 Rear Audio"
++SectionUseCase."Line" {
++	Comment "Line In"
++	File "Lenovo-ThinkStation-P620-Rear-Line.conf"
++}
++
++SectionUseCase."Speaker" {
++	Comment "Speaker"
++	File "Lenovo-ThinkStation-P620-Rear-Speaker.conf"
++}
++
++SectionUseCase."Mic" {
++	Comment "Microphone"
++	File "Lenovo-ThinkStation-P620-Rear-Mic.conf"
++}
+-- 
+2.17.1
+
diff -pruN 1.2.2-1/debian/patches/0002-sof-hda-dsp-change-Headphones2-to-Mic2.patch 1.2.2-1ubuntu6/debian/patches/0002-sof-hda-dsp-change-Headphones2-to-Mic2.patch
--- 1.2.2-1/debian/patches/0002-sof-hda-dsp-change-Headphones2-to-Mic2.patch	1970-01-01 00:00:00.000000000 +0000
+++ 1.2.2-1ubuntu6/debian/patches/0002-sof-hda-dsp-change-Headphones2-to-Mic2.patch	2020-05-25 06:36:48.000000000 +0000
@@ -0,0 +1,58 @@
+From 907c8309b2ee671e1b36630b0d29db1bc3124990 Mon Sep 17 00:00:00 2001
+From: Jaroslav Kysela <perex@perex.cz>
+Date: Mon, 6 Apr 2020 17:37:20 +0200
+Subject: [PATCH] sof-hda-dsp: change Headphones2 to Mic2
+
+Fixes: https://github.com/alsa-project/alsa-ucm-conf/issues/19
+
+Signed-off-by: Jaroslav Kysela <perex@perex.cz>
+---
+ ucm2/sof-hda-dsp/HiFi.conf | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/ucm2/sof-hda-dsp/HiFi.conf b/ucm2/sof-hda-dsp/HiFi.conf
+index 60a8693..9a82930 100644
+--- a/ucm2/sof-hda-dsp/HiFi.conf
++++ b/ucm2/sof-hda-dsp/HiFi.conf
+@@ -6,7 +6,7 @@ SectionVerb {
+ 	]
+ }
+ 
+-SectionDevice."Headphones1" {
++SectionDevice."Headphones" {
+ 	Comment "Headphones"
+ 
+ 	EnableSequence [
+@@ -85,9 +85,9 @@ If.monomic {
+ 		Control "name='Input Source'"
+ 		ControlEnum "Headphone Mic"
+ 	}
+-	After.SectionDevice "Mic"
++	After.SectionDevice "Mic1"
+ 	True {
+-		SectionDevice."Headphones2" {
++		SectionDevice."Mic2" {
+ 			Comment "Headphones Stereo Microphone"
+ 
+ 			ConflictingDevice [
+@@ -120,7 +120,7 @@ If.monomic {
+ 		}
+ 	}
+ 	False {
+-		SectionDevice."Headphones2" {
++		SectionDevice."Mic2" {
+ 			Comment "Headphones Stereo Microphone"
+ 
+ 			Value {
+@@ -132,7 +132,7 @@ If.monomic {
+ 	}
+ }
+ 
+-SectionDevice."Mic" {
++SectionDevice."Mic1" {
+ 	Comment "Digital Microphone"
+ 
+ 	Value {
+-- 
+2.25.1
+
diff -pruN 1.2.2-1/debian/patches/0002-sof-hda-dsp-make-the-boot-init-optional-for-all-cont.patch 1.2.2-1ubuntu6/debian/patches/0002-sof-hda-dsp-make-the-boot-init-optional-for-all-cont.patch
--- 1.2.2-1/debian/patches/0002-sof-hda-dsp-make-the-boot-init-optional-for-all-cont.patch	1970-01-01 00:00:00.000000000 +0000
+++ 1.2.2-1ubuntu6/debian/patches/0002-sof-hda-dsp-make-the-boot-init-optional-for-all-cont.patch	2020-11-09 03:59:02.000000000 +0000
@@ -0,0 +1,85 @@
+From ccad1a73cb7544c310a2eee733520d611471a984 Mon Sep 17 00:00:00 2001
+From: Jaroslav Kysela <perex@perex.cz>
+Date: Wed, 24 Jun 2020 10:39:42 +0200
+Subject: [PATCH 2/2] sof-hda-dsp: make the boot init optional for all controls
+
+Also don't initialize "Auto-Mute Mode" in the HiFi verb.
+
+Signed-off-by: Jaroslav Kysela <perex@perex.cz>
+(backported from commit 6ed067e0d448b34eaa8217f9785830aa1a3f716f)
+Signed-off-by: Hui Wang <hui.wang@canonical.com>
+---
+ ucm2/sof-hda-dsp/sof-hda-dsp.conf | 53 ++++++++++++++++++++++++-------
+ 1 file changed, 42 insertions(+), 11 deletions(-)
+
+diff --git a/ucm2/sof-hda-dsp/sof-hda-dsp.conf b/ucm2/sof-hda-dsp/sof-hda-dsp.conf
+index f3a79e9..a26d1d0 100644
+--- a/ucm2/sof-hda-dsp/sof-hda-dsp.conf
++++ b/ucm2/sof-hda-dsp/sof-hda-dsp.conf
+@@ -7,21 +7,52 @@ SectionUseCase."HiFi" {
+ 
+ # the kcontrols initial values, which will be set by `alsactl init`
+ 
+-BootSequence [
+-	cset "name='Master Playback Volume' 80"
+-	cset "name='Headphone Playback Volume' 80"
+-	cset "name='Speaker Playback Volume' 80"
+-	cset "name='Auto-Mute Mode' off"
+-]
++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%"
++	]
++}
+ 
+ If.Dmic0 {
+ 	Condition {
+ 		Type ControlExists
+ 		Control "name='Dmic0 Capture Volume'"
+ 	}
+-	True {
+-		BootSequence [
+-			cset "name='Dmic0 Capture Volume' 70"
+-		]
+-	}
++	True.BootSequence [
++		cset "name='Dmic0 Capture Volume' 70%"
++	]
+ }
+-- 
+2.25.1
+
diff -pruN 1.2.2-1/debian/patches/0003-sof-hda-dsp-Set-Master-Playback-Switch-on-in-the-Boo.patch 1.2.2-1ubuntu6/debian/patches/0003-sof-hda-dsp-Set-Master-Playback-Switch-on-in-the-Boo.patch
--- 1.2.2-1/debian/patches/0003-sof-hda-dsp-Set-Master-Playback-Switch-on-in-the-Boo.patch	1970-01-01 00:00:00.000000000 +0000
+++ 1.2.2-1ubuntu6/debian/patches/0003-sof-hda-dsp-Set-Master-Playback-Switch-on-in-the-Boo.patch	2020-11-09 03:59:02.000000000 +0000
@@ -0,0 +1,45 @@
+From e0fda9bced590330e153dbd3e2b1d7aefa07b4db Mon Sep 17 00:00:00 2001
+From: Hui Wang <hui.wang@canonical.com>
+Date: Thu, 29 Oct 2020 13:34:02 +0800
+Subject: [PATCH 1/2] 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.
+
+Backported from: https://github.com/alsa-project/alsa-ucm-conf/pull/57
+
+Signed-off-by: Hui Wang <hui.wang@canonical.com>
+---
+ 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.25.1
+
diff -pruN 1.2.2-1/debian/patches/0003-ucm-fix-wrong-If-in-sequence-in-HiFi-dual.conf.patch 1.2.2-1ubuntu6/debian/patches/0003-ucm-fix-wrong-If-in-sequence-in-HiFi-dual.conf.patch
--- 1.2.2-1/debian/patches/0003-ucm-fix-wrong-If-in-sequence-in-HiFi-dual.conf.patch	1970-01-01 00:00:00.000000000 +0000
+++ 1.2.2-1ubuntu6/debian/patches/0003-ucm-fix-wrong-If-in-sequence-in-HiFi-dual.conf.patch	2020-08-13 14:18:27.000000000 +0000
@@ -0,0 +1,47 @@
+From 9199204e37b32a00cdc314615f23a283828a3a61 Mon Sep 17 00:00:00 2001
+From: Jaroslav Kysela <perex@perex.cz>
+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 <perex@perex.cz>
+(cherry picked from commit 63ae90d6366b9a787baf9af3ebed4207679b0789)
+Signed-off-by: Hui Wang <hui.wang@canonical.com>
+---
+ 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 -pruN 1.2.2-1/debian/patches/0004-sof-hda-dsp-Increase-the-speaker-output-volume-in-th.patch 1.2.2-1ubuntu6/debian/patches/0004-sof-hda-dsp-Increase-the-speaker-output-volume-in-th.patch
--- 1.2.2-1/debian/patches/0004-sof-hda-dsp-Increase-the-speaker-output-volume-in-th.patch	1970-01-01 00:00:00.000000000 +0000
+++ 1.2.2-1ubuntu6/debian/patches/0004-sof-hda-dsp-Increase-the-speaker-output-volume-in-th.patch	2020-11-09 03:59:02.000000000 +0000
@@ -0,0 +1,64 @@
+From 618820c2800c4f79507e681b3d5bb3c5b46cfa24 Mon Sep 17 00:00:00 2001
+From: Hui Wang <hui.wang@canonical.com>
+Date: Thu, 29 Oct 2020 13:39:49 +0800
+Subject: [PATCH 2/2] sof-hda-dsp: Increase the speaker output volume in the
+ BootSequence
+
+At least on the Leonvo X13 Yoga, the speaker output is too low with
+60% setting, let us increase it a bit.
+
+Backported from: https://github.com/alsa-project/alsa-ucm-conf/pull/57
+
+Signed-off-by: Hui Wang <hui.wang@canonical.com>
+---
+ ucm2/HDA-Intel/init.conf          | 4 ++--
+ ucm2/sof-hda-dsp/sof-hda-dsp.conf | 4 ++--
+ 2 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/ucm2/HDA-Intel/init.conf b/ucm2/HDA-Intel/init.conf
+index 6310eb3..1e11bae 100644
+--- a/ucm2/HDA-Intel/init.conf
++++ b/ucm2/HDA-Intel/init.conf
+@@ -14,7 +14,7 @@ If.master {
+ 		Control "name='Master Playback Volume'"
+ 	}
+ 	True.BootSequence [
+-		cset "name='Master Playback Volume' 60%"
++		cset "name='Master Playback Volume' 90%"
+ 		cset "name='Master Playback Switch' on"
+ 	]
+ }
+@@ -25,7 +25,7 @@ If.speaker {
+ 		Control "name='Speaker Playback Volume'"
+ 	}
+ 	True.BootSequence [
+-		cset "name='Speaker Playback Volume' 60%"
++		cset "name='Speaker Playback Volume' 90%"
+ 	]
+ }
+ 
+diff --git a/ucm2/sof-hda-dsp/sof-hda-dsp.conf b/ucm2/sof-hda-dsp/sof-hda-dsp.conf
+index 79b54a9..f961756 100644
+--- a/ucm2/sof-hda-dsp/sof-hda-dsp.conf
++++ b/ucm2/sof-hda-dsp/sof-hda-dsp.conf
+@@ -23,7 +23,7 @@ If.master {
+ 		Control "name='Master Playback Volume'"
+ 	}
+ 	True.BootSequence [
+-		cset "name='Master Playback Volume' 60%"
++		cset "name='Master Playback Volume' 90%"
+ 		cset "name='Master Playback Switch' on"
+ 	]
+ }
+@@ -34,7 +34,7 @@ If.speaker {
+ 		Control "name='Speaker Playback Volume'"
+ 	}
+ 	True.BootSequence [
+-		cset "name='Speaker Playback Volume' 60%"
++		cset "name='Speaker Playback Volume' 90%"
+ 	]
+ }
+ 
+-- 
+2.25.1
+
diff -pruN 1.2.2-1/debian/patches/0004-ucm2-add-initial-ucm.conf-for-the-latest-alsa-lib.patch 1.2.2-1ubuntu6/debian/patches/0004-ucm2-add-initial-ucm.conf-for-the-latest-alsa-lib.patch
--- 1.2.2-1/debian/patches/0004-ucm2-add-initial-ucm.conf-for-the-latest-alsa-lib.patch	1970-01-01 00:00:00.000000000 +0000
+++ 1.2.2-1ubuntu6/debian/patches/0004-ucm2-add-initial-ucm.conf-for-the-latest-alsa-lib.patch	2020-08-13 14:18:27.000000000 +0000
@@ -0,0 +1,115 @@
+From e4f3a366fcff6703948017b6e3335a6a23744f46 Mon Sep 17 00:00:00 2001
+From: Jaroslav Kysela <perex@perex.cz>
+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 <perex@perex.cz>
+(cherry picked from commit 24ac1523e51469bdfa2ebb5f5dbec35743935403)
+Signed-off-by: Hui Wang <hui.wang@canonical.com>
+---
+ 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 -pruN 1.2.2-1/debian/patches/0005-sof-hda-dsp-don-t-fail-if-Auto-Mute-control-is-not-p.patch 1.2.2-1ubuntu6/debian/patches/0005-sof-hda-dsp-don-t-fail-if-Auto-Mute-control-is-not-p.patch
--- 1.2.2-1/debian/patches/0005-sof-hda-dsp-don-t-fail-if-Auto-Mute-control-is-not-p.patch	1970-01-01 00:00:00.000000000 +0000
+++ 1.2.2-1ubuntu6/debian/patches/0005-sof-hda-dsp-don-t-fail-if-Auto-Mute-control-is-not-p.patch	2020-08-13 14:18:27.000000000 +0000
@@ -0,0 +1,46 @@
+From ffe77aedcf378b95f45d51ec65d313156c957343 Mon Sep 17 00:00:00 2001
+From: Kai Vehmanen <kai.vehmanen@linux.intel.com>
+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 <kai.vehmanen@linux.intel.com>
+Signed-off-by: Jaroslav Kysela <perex@perex.cz>
+(cherry picked from commit 4c1189fdcb4819df6c36cf490d17f532f82c8bbe)
+Signed-off-by: Hui Wang <hui.wang@canonical.com>
+---
+ 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 -pruN 1.2.2-1/debian/patches/0006-ucm.conf-add-support-for-the-kernel-module-name-tree.patch 1.2.2-1ubuntu6/debian/patches/0006-ucm.conf-add-support-for-the-kernel-module-name-tree.patch
--- 1.2.2-1/debian/patches/0006-ucm.conf-add-support-for-the-kernel-module-name-tree.patch	1970-01-01 00:00:00.000000000 +0000
+++ 1.2.2-1ubuntu6/debian/patches/0006-ucm.conf-add-support-for-the-kernel-module-name-tree.patch	2020-08-13 14:18:27.000000000 +0000
@@ -0,0 +1,181 @@
+From 1fbef6c6c06cfeb41a1dc4f1e9c8c6ae45906d12 Mon Sep 17 00:00:00 2001
+From: Jaroslav Kysela <perex@perex.cz>
+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/<KernelModuleName>.conf .
+
+Also, modularize V1, V2Name, V2Module blocks. The V1 compatibility
+is turned off by default now.
+
+Signed-off-by: Jaroslav Kysela <perex@perex.cz>
+(cherry picked from commit d001c8de287f9fa3ce1814fb1c0804390576a19e)
+Signed-off-by: Hui Wang <hui.wang@canonical.com>
+---
+ 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 -pruN 1.2.2-1/debian/patches/0007-sof-hda-dsp-make-Headphone-Playback-Switch-condition.patch 1.2.2-1ubuntu6/debian/patches/0007-sof-hda-dsp-make-Headphone-Playback-Switch-condition.patch
--- 1.2.2-1/debian/patches/0007-sof-hda-dsp-make-Headphone-Playback-Switch-condition.patch	1970-01-01 00:00:00.000000000 +0000
+++ 1.2.2-1ubuntu6/debian/patches/0007-sof-hda-dsp-make-Headphone-Playback-Switch-condition.patch	2020-08-13 14:18:27.000000000 +0000
@@ -0,0 +1,52 @@
+From d11b97caa9ed357687a26bb55df1ec5ff854d53b Mon Sep 17 00:00:00 2001
+From: Kai Vehmanen <kai.vehmanen@linux.intel.com>
+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 <kai.vehmanen@linux.intel.com>
+Signed-off-by: Jaroslav Kysela <perex@perex.cz>
+(cherry picked from commit 6b0216d7b9ed5094a7bf28e6f643d90dd7e6fa62)
+Signed-off-by: Hui Wang <hui.wang@canonical.com>
+---
+ 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 -pruN 1.2.2-1/debian/patches/0008-sof-soundwire-initial-UCM2-version.patch 1.2.2-1ubuntu6/debian/patches/0008-sof-soundwire-initial-UCM2-version.patch
--- 1.2.2-1/debian/patches/0008-sof-soundwire-initial-UCM2-version.patch	1970-01-01 00:00:00.000000000 +0000
+++ 1.2.2-1ubuntu6/debian/patches/0008-sof-soundwire-initial-UCM2-version.patch	2020-08-13 14:18:27.000000000 +0000
@@ -0,0 +1,608 @@
+From a9ea67df93618e432d395b492dfcf04e2c66be8f Mon Sep 17 00:00:00 2001
+From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
+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 <libin.yang@linux.intel.com>
+Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
+Signed-off-by: Jaroslav Kysela <perex@perex.cz>
+(cherry picked from commit 9f2dae6a560c60593c24aa4b85aed07418f9dd8e)
+Signed-off-by: Hui Wang <hui.wang@canonical.com>
+---
+ 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
++
++<sof-soundwire/RT700.conf>
++<sof-soundwire/RT711.conf>
++<sof-soundwire/RT5682.conf>
++<sof-soundwire/RT1308.conf>
++<sof-soundwire/RT715.conf>
++<sof-soundwire/Hdmi.conf>
+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 {
++
++<sof-soundwire/RT1308-1.conf>
++
++			}
++			False {
++
++<sof-soundwire/RT1308-2.conf>
++
++			}
++		}
++	}
++}
+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"
++}
++
++<codecs/rt5682/init.conf>
++<codecs/rt700/init.conf>
++<codecs/rt711/init.conf>
++<codecs/rt715/init.conf>
+-- 
+2.17.1
+
diff -pruN 1.2.2-1/debian/patches/0009-sof-soundwire-cleanups-recommended-by-the-ucm-valida.patch 1.2.2-1ubuntu6/debian/patches/0009-sof-soundwire-cleanups-recommended-by-the-ucm-valida.patch
--- 1.2.2-1/debian/patches/0009-sof-soundwire-cleanups-recommended-by-the-ucm-valida.patch	1970-01-01 00:00:00.000000000 +0000
+++ 1.2.2-1ubuntu6/debian/patches/0009-sof-soundwire-cleanups-recommended-by-the-ucm-valida.patch	2020-08-13 14:18:27.000000000 +0000
@@ -0,0 +1,131 @@
+From 0a5c528a4b1f10b2264130267eeb2c05ae1202f3 Mon Sep 17 00:00:00 2001
+From: Jaroslav Kysela <perex@perex.cz>
+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 <perex@perex.cz>
+(cherry picked from commit 1072c6d68e69ac432b411557237effa2dcc869cc)
+Signed-off-by: Hui Wang <hui.wang@canonical.com>
+---
+ 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 -pruN 1.2.2-1/debian/patches/0010-sof-soundwire-rewrite-for-syntax-3.patch 1.2.2-1ubuntu6/debian/patches/0010-sof-soundwire-rewrite-for-syntax-3.patch
--- 1.2.2-1/debian/patches/0010-sof-soundwire-rewrite-for-syntax-3.patch	1970-01-01 00:00:00.000000000 +0000
+++ 1.2.2-1ubuntu6/debian/patches/0010-sof-soundwire-rewrite-for-syntax-3.patch	2020-08-13 14:18:27.000000000 +0000
@@ -0,0 +1,760 @@
+From 465691121617531c8b296a01b03e3812bc0ded87 Mon Sep 17 00:00:00 2001
+From: Jaroslav Kysela <perex@perex.cz>
+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 <perex@perex.cz>
+(cherry picked from commit 4734c44b38cd36588c774a4f52aa899ae5ad7fc4)
+Signed-off-by: Hui Wang <hui.wang@canonical.com>
+---
+ 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
+ 
+-<sof-soundwire/RT700.conf>
+-<sof-soundwire/RT711.conf>
+-<sof-soundwire/RT5682.conf>
+-<sof-soundwire/RT1308.conf>
+-<sof-soundwire/RT715.conf>
++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"
++}
++
+ <sof-soundwire/Hdmi.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 {
+-
+-<sof-soundwire/RT1308-1.conf>
+-
+-			}
+-			False {
+-
+-<sof-soundwire/RT1308-2.conf>
+-
+-			}
+-		}
+-	}
+-}
+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"
+ }
+ 
+-<codecs/rt5682/init.conf>
+-<codecs/rt700/init.conf>
+-<codecs/rt711/init.conf>
+-<codecs/rt715/init.conf>
++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 -pruN 1.2.2-1/debian/patches/0011-HDA-Intel-add-support-for-AMD-acp-microphone-devices.patch 1.2.2-1ubuntu6/debian/patches/0011-HDA-Intel-add-support-for-AMD-acp-microphone-devices.patch
--- 1.2.2-1/debian/patches/0011-HDA-Intel-add-support-for-AMD-acp-microphone-devices.patch	1970-01-01 00:00:00.000000000 +0000
+++ 1.2.2-1ubuntu6/debian/patches/0011-HDA-Intel-add-support-for-AMD-acp-microphone-devices.patch	2020-08-13 14:18:27.000000000 +0000
@@ -0,0 +1,408 @@
+From 0574339829f36e302f4bc05d49830fa73ae2c4f5 Mon Sep 17 00:00:00 2001
+From: Jaroslav Kysela <perex@perex.cz>
+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 <perex@perex.cz>
+(backported from commit dcef48f13d4f5db79b006755074940b94730a883)
+Signed-off-by: Hui Wang <hui.wang@canonical.com>
+---
+ 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 -pruN 1.2.2-1/debian/patches/0012-hda-hdmi-add-HDMI4-HDMI5-HDMI6-devices.patch 1.2.2-1ubuntu6/debian/patches/0012-hda-hdmi-add-HDMI4-HDMI5-HDMI6-devices.patch
--- 1.2.2-1/debian/patches/0012-hda-hdmi-add-HDMI4-HDMI5-HDMI6-devices.patch	1970-01-01 00:00:00.000000000 +0000
+++ 1.2.2-1ubuntu6/debian/patches/0012-hda-hdmi-add-HDMI4-HDMI5-HDMI6-devices.patch	2020-08-13 14:18:27.000000000 +0000
@@ -0,0 +1,100 @@
+From 1478d4c3e7e689c9d1daddbb1422f645b2fd619f Mon Sep 17 00:00:00 2001
+From: Jaroslav Kysela <perex@perex.cz>
+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 <perex@perex.cz>
+(cherry picked from commit 3e8973062fa2b2c7df6d07ac98bfd4aef6bff5e3)
+Signed-off-by: Hui Wang <hui.wang@canonical.com>
+---
+ 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 -pruN 1.2.2-1/debian/patches/0013-amd-renoir-acp-use-the-machine-driver-s-name-for-top.patch 1.2.2-1ubuntu6/debian/patches/0013-amd-renoir-acp-use-the-machine-driver-s-name-for-top.patch
--- 1.2.2-1/debian/patches/0013-amd-renoir-acp-use-the-machine-driver-s-name-for-top.patch	1970-01-01 00:00:00.000000000 +0000
+++ 1.2.2-1ubuntu6/debian/patches/0013-amd-renoir-acp-use-the-machine-driver-s-name-for-top.patch	2020-08-13 14:18:27.000000000 +0000
@@ -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 -pruN 1.2.2-1/debian/patches/0014-amd-renoir-acp-add-syntax-in-the-Linked.patch 1.2.2-1ubuntu6/debian/patches/0014-amd-renoir-acp-add-syntax-in-the-Linked.patch
--- 1.2.2-1/debian/patches/0014-amd-renoir-acp-add-syntax-in-the-Linked.patch	1970-01-01 00:00:00.000000000 +0000
+++ 1.2.2-1ubuntu6/debian/patches/0014-amd-renoir-acp-add-syntax-in-the-Linked.patch	2020-08-13 14:18:27.000000000 +0000
@@ -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 -pruN 1.2.2-1/debian/patches/0015-HDA-Intel-only-bind-the-acp-dmic-to-the-soundcard-wi.patch 1.2.2-1ubuntu6/debian/patches/0015-HDA-Intel-only-bind-the-acp-dmic-to-the-soundcard-wi.patch
--- 1.2.2-1/debian/patches/0015-HDA-Intel-only-bind-the-acp-dmic-to-the-soundcard-wi.patch	1970-01-01 00:00:00.000000000 +0000
+++ 1.2.2-1ubuntu6/debian/patches/0015-HDA-Intel-only-bind-the-acp-dmic-to-the-soundcard-wi.patch	2020-08-13 14:18:27.000000000 +0000
@@ -0,0 +1,58 @@
+From b21b89fb37c6bb64a392d86d4f1ff28277077087 Mon Sep 17 00:00:00 2001
+From: Hui Wang <hui.wang@canonical.com>
+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 <hui.wang@canonical.com>
+---
+ 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 -pruN 1.2.2-1/debian/patches/0016-Fix-invalid-Regex-Type-in-various-Condition-blocks.patch 1.2.2-1ubuntu6/debian/patches/0016-Fix-invalid-Regex-Type-in-various-Condition-blocks.patch
--- 1.2.2-1/debian/patches/0016-Fix-invalid-Regex-Type-in-various-Condition-blocks.patch	1970-01-01 00:00:00.000000000 +0000
+++ 1.2.2-1ubuntu6/debian/patches/0016-Fix-invalid-Regex-Type-in-various-Condition-blocks.patch	2020-08-13 14:18:27.000000000 +0000
@@ -0,0 +1,46 @@
+From 36a4725d4ed7210259bbe7ab47f4175ac8ad10db Mon Sep 17 00:00:00 2001
+From: Hans de Goede <hdegoede@redhat.com>
+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 <hdegoede@redhat.com>
+Signed-off-by: Jaroslav Kysela <perex@perex.cz>
+(backported from commit a396908d25976c030e7a6a56bd5be0738c11d2ee)
+Signed-off-by: Hui Wang <hui.wang@canonical.com>
+---
+ 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 -pruN 1.2.2-1/debian/patches/0017-USB-Audio-Dell-WD15-Dock-make-input-and-output-volum.patch 1.2.2-1ubuntu6/debian/patches/0017-USB-Audio-Dell-WD15-Dock-make-input-and-output-volum.patch
--- 1.2.2-1/debian/patches/0017-USB-Audio-Dell-WD15-Dock-make-input-and-output-volum.patch	1970-01-01 00:00:00.000000000 +0000
+++ 1.2.2-1ubuntu6/debian/patches/0017-USB-Audio-Dell-WD15-Dock-make-input-and-output-volum.patch	2020-09-02 01:00:39.000000000 +0000
@@ -0,0 +1,87 @@
+From 15a3ab694c703530e0d9317116be5d28129986e0 Mon Sep 17 00:00:00 2001
+From: Hui Wang <hui.wang@canonical.com>
+Date: Mon, 17 Aug 2020 12:37:44 +0800
+Subject: [PATCH] USB-Audio: Dell-WD15-Dock: make input and output volume
+ adjustable
+
+Recently we found the input volume is too low for some specific
+headset-mic, even we adjust the input volume to max from PA, we still
+can't record the sound from that headset-mic. That is because we
+change the input or output volume from PA, but the mixer's volume
+is not changed, only PA's soft-volume is changed.
+
+Checking the amixer controls for the sound card in the WD19, it
+supports MixerElem, Volume and Switch, and checking the sound card in
+the WD15, it doesn't have Volume and Switch for Headphone and Line,
+So adding the volume and switch control in the ucm conditionally.
+
+Signed-off-by: Hui Wang <hui.wang@canonical.com>
+BugLink: https://github.com/alsa-project/alsa-ucm-conf/pull/47
+Signed-off-by: Jaroslav Kysela <perex@perex.cz>
+---
+ ucm2/USB-Audio/Dell-WD15-Dock-HiFi.conf | 36 +++++++++++++++++++++++++
+ 1 file changed, 36 insertions(+)
+
+diff --git a/ucm2/USB-Audio/Dell-WD15-Dock-HiFi.conf b/ucm2/USB-Audio/Dell-WD15-Dock-HiFi.conf
+index 2f625e4..04355a7 100644
+--- a/ucm2/USB-Audio/Dell-WD15-Dock-HiFi.conf
++++ b/ucm2/USB-Audio/Dell-WD15-Dock-HiFi.conf
+@@ -4,6 +4,18 @@ SectionDevice."Headphones" {
+ 	Value {
+ 		PlaybackPriority 100
+ 		PlaybackPCM "hw:${CardId}"
++
++		If.Headphone_ctl {
++			Condition {
++				Type ControlExists
++				Control "name='Headphone Playback Switch'"
++			}
++			True {
++				PlaybackMixerElem "Headphone"
++				PlaybackVolume "Headphone Playback Volume"
++				PlaybackSwitch "Headphone Playback Switch"
++			}
++		}
+ 	}
+ }
+ 
+@@ -13,6 +25,18 @@ SectionDevice."Line" {
+ 	Value {
+ 		PlaybackPriority 200
+ 		PlaybackPCM "hw:${CardId},1"
++
++		If.Line_ctl {
++			Condition {
++				Type ControlExists
++				Control "name='Line Playback Switch'"
++			}
++			True {
++				PlaybackMixerElem "Line"
++				PlaybackVolume "Line Playback Volume"
++				PlaybackSwitch "Line Playback Switch"
++			}
++		}
+ 	}
+ }
+ 
+@@ -22,5 +46,17 @@ SectionDevice."Mic" {
+ 	Value {
+ 		CapturePriority 100
+ 		CapturePCM "hw:${CardId}"
++
++		If.Mic_ctl {
++			Condition {
++				Type ControlExists
++				Control "name='Mic Capture Switch'"
++			}
++			True {
++				CaptureMixerElem "Mic"
++				CaptureVolume "Mic Capture Volume"
++				CaptureSwitch "Mic Capture Switch"
++			}
++		}
+ 	}
+ }
+-- 
+2.25.1
+
diff -pruN 1.2.2-1/debian/patches/series 1.2.2-1ubuntu6/debian/patches/series
--- 1.2.2-1/debian/patches/series	1970-01-01 00:00:00.000000000 +0000
+++ 1.2.2-1ubuntu6/debian/patches/series	2020-11-09 03:59:02.000000000 +0000
@@ -0,0 +1,27 @@
+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
+
+0001-Add-support-for-Lenovo-ThinkStation-P620-Main-Audio.patch
+
+0017-USB-Audio-Dell-WD15-Dock-make-input-and-output-volum.patch
+
+0001-ucm2-USB-Audio-Add-more-support-to-Lenovo-ThinkStati.patch
+
+0001-sof-hda-dsp-add-initial-kcontrol-values.patch
+0002-sof-hda-dsp-make-the-boot-init-optional-for-all-cont.patch
+0003-sof-hda-dsp-Set-Master-Playback-Switch-on-in-the-Boo.patch
+0004-sof-hda-dsp-Increase-the-speaker-output-volume-in-th.patch
