From 0d731622177e1031766b78a5d675747df9106977 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Tue, 12 Nov 2024 13:11:57 +0100 Subject: [PATCH 01/24] update to 1.2.13 Signed-off-by: Jaroslav Kysela --- alsa-lib.spec | 9 ++++++--- sources | 4 ++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/alsa-lib.spec b/alsa-lib.spec index 23e2730..1566e84 100644 --- a/alsa-lib.spec +++ b/alsa-lib.spec @@ -2,14 +2,14 @@ #define prever_dot .rc3 #define postver a -%define version_alsa_lib 1.2.12 -%define version_alsa_ucm 1.2.12 +%define version_alsa_lib 1.2.13 +%define version_alsa_ucm 1.2.13 %define version_alsa_tplg 1.2.5 Summary: The Advanced Linux Sound Architecture (ALSA) library Name: alsa-lib Version: %{version_alsa_lib} -Release: 2%{?prever_dot}%{?dist} +Release: 1%{?prever_dot}%{?dist} License: LGPL-2.1-or-later URL: http://www.alsa-project.org/ @@ -167,6 +167,9 @@ rm %{buildroot}/%{_includedir}/asoundlib.h %{_datadir}/alsa/topology %changelog +* Tue Nov 12 2024 Jaroslav Kysela - 1.2.13-1 +- update to 1.2.13 + * Wed Jul 17 2024 Fedora Release Engineering - 1.2.12-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild diff --git a/sources b/sources index a2a4b9b..e7b27b3 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ -SHA512 (alsa-lib-1.2.12.tar.bz2) = 053e36e51c0ff28f07028b89c8845b50682a5c14035ab85c2fc8cae2f2f0d05e4cd45ed879602c15c1596fb7fe84bfd50ec0d119dfb55c66589a2d458a9b317d -SHA512 (alsa-ucm-conf-1.2.12.tar.bz2) = 391dde123271172d899c04865d1d6e21b4ad0060ee9b2256dfbc6fc89ad48edcaa43c861893ab0e5c70d972e20d15c528defc19c00308e7465f13f954cce25d7 +SHA512 (alsa-lib-1.2.13.tar.bz2) = b0c0666e38e881dca985b61386523c045c71072a88be4952c986ffbe2107ec736da528858ebeffdf439de5c290914bf3facc654100a228c6d26fff9429142ef0 +SHA512 (alsa-ucm-conf-1.2.13.tar.bz2) = cad867268851ac178f3a5378a00e292184b0e0ec7955f297ae7ed56073d3dddb06c08666b23b1bf6b0065068a9370ee34608bd687763658c79d34b64059b1c85 SHA512 (alsa-topology-conf-1.2.5.tar.bz2) = 2eb4d8baf2dcbf0b631dd11dbf15bffc51694d9cc6931619e51787f3ba58d1a091d266e6721a3b737c040ec74a28270b93f39fb97f30a3227cf340dd646e5d51 From 9bb0ba5cd73e69bfd6b4831baa10e48d0ef03eb7 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Tue, 12 Nov 2024 13:11:57 +0100 Subject: [PATCH 02/24] update to 1.2.13 Signed-off-by: Jaroslav Kysela --- alsa-lib.spec | 9 ++++++--- sources | 4 ++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/alsa-lib.spec b/alsa-lib.spec index 23e2730..1566e84 100644 --- a/alsa-lib.spec +++ b/alsa-lib.spec @@ -2,14 +2,14 @@ #define prever_dot .rc3 #define postver a -%define version_alsa_lib 1.2.12 -%define version_alsa_ucm 1.2.12 +%define version_alsa_lib 1.2.13 +%define version_alsa_ucm 1.2.13 %define version_alsa_tplg 1.2.5 Summary: The Advanced Linux Sound Architecture (ALSA) library Name: alsa-lib Version: %{version_alsa_lib} -Release: 2%{?prever_dot}%{?dist} +Release: 1%{?prever_dot}%{?dist} License: LGPL-2.1-or-later URL: http://www.alsa-project.org/ @@ -167,6 +167,9 @@ rm %{buildroot}/%{_includedir}/asoundlib.h %{_datadir}/alsa/topology %changelog +* Tue Nov 12 2024 Jaroslav Kysela - 1.2.13-1 +- update to 1.2.13 + * Wed Jul 17 2024 Fedora Release Engineering - 1.2.12-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild diff --git a/sources b/sources index a2a4b9b..e7b27b3 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ -SHA512 (alsa-lib-1.2.12.tar.bz2) = 053e36e51c0ff28f07028b89c8845b50682a5c14035ab85c2fc8cae2f2f0d05e4cd45ed879602c15c1596fb7fe84bfd50ec0d119dfb55c66589a2d458a9b317d -SHA512 (alsa-ucm-conf-1.2.12.tar.bz2) = 391dde123271172d899c04865d1d6e21b4ad0060ee9b2256dfbc6fc89ad48edcaa43c861893ab0e5c70d972e20d15c528defc19c00308e7465f13f954cce25d7 +SHA512 (alsa-lib-1.2.13.tar.bz2) = b0c0666e38e881dca985b61386523c045c71072a88be4952c986ffbe2107ec736da528858ebeffdf439de5c290914bf3facc654100a228c6d26fff9429142ef0 +SHA512 (alsa-ucm-conf-1.2.13.tar.bz2) = cad867268851ac178f3a5378a00e292184b0e0ec7955f297ae7ed56073d3dddb06c08666b23b1bf6b0065068a9370ee34608bd687763658c79d34b64059b1c85 SHA512 (alsa-topology-conf-1.2.5.tar.bz2) = 2eb4d8baf2dcbf0b631dd11dbf15bffc51694d9cc6931619e51787f3ba58d1a091d266e6721a3b737c040ec74a28270b93f39fb97f30a3227cf340dd646e5d51 From e561588491e96907c4d5523ae0a13d724bf0462f Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Wed, 13 Nov 2024 16:26:28 +0100 Subject: [PATCH 03/24] fix SOF HDA UCM configuration Signed-off-by: Jaroslav Kysela --- alsa-lib.spec | 4 +- alsa-ucm-conf.patch | 101 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 103 insertions(+), 2 deletions(-) diff --git a/alsa-lib.spec b/alsa-lib.spec index 1566e84..adf2731 100644 --- a/alsa-lib.spec +++ b/alsa-lib.spec @@ -9,7 +9,7 @@ Summary: The Advanced Linux Sound Architecture (ALSA) library Name: alsa-lib Version: %{version_alsa_lib} -Release: 1%{?prever_dot}%{?dist} +Release: 2%{?prever_dot}%{?dist} License: LGPL-2.1-or-later URL: http://www.alsa-project.org/ @@ -167,7 +167,7 @@ rm %{buildroot}/%{_includedir}/asoundlib.h %{_datadir}/alsa/topology %changelog -* Tue Nov 12 2024 Jaroslav Kysela - 1.2.13-1 +* Wed Nov 13 2024 Jaroslav Kysela - 1.2.13-2 - update to 1.2.13 * Wed Jul 17 2024 Fedora Release Engineering - 1.2.12-2 diff --git a/alsa-ucm-conf.patch b/alsa-ucm-conf.patch index e69de29..ff46a0c 100644 --- a/alsa-ucm-conf.patch +++ b/alsa-ucm-conf.patch @@ -0,0 +1,101 @@ +From 11b028a9a01e47fc9b48e4a566803752011902e2 Mon Sep 17 00:00:00 2001 +From: Seppo Ingalsuo +Date: Wed, 13 Nov 2024 14:48:38 +0200 +Subject: [PATCH 1/2] UCM2: Intel: sof-hda-dsp: Fix handling of empty + sys_vendor + +The mistake in UCM syntax caused in alsaucm start error: + +ALSA lib ucm_cond.c:367:(if_eval) unknown If.Condition.Type + +Fixes: 13022a97711d ("sof-hda-dsp: Fix the case where sysfs dmi + sys_vendor attribute is not set") + +Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/463 +Signed-off-by: Seppo Ingalsuo +Signed-off-by: Jaroslav Kysela +--- + ucm2/Intel/sof-hda-dsp/HiFi-sof.conf | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/ucm2/Intel/sof-hda-dsp/HiFi-sof.conf b/ucm2/Intel/sof-hda-dsp/HiFi-sof.conf +index fea8159..c755ba2 100644 +--- a/ucm2/Intel/sof-hda-dsp/HiFi-sof.conf ++++ b/ucm2/Intel/sof-hda-dsp/HiFi-sof.conf +@@ -6,8 +6,8 @@ Define.SOFVendor "$${sys:devices/virtual/dmi/id/sys_vendor}" + + If.SOFVendor { + Condition { +- Type Empty +- String "${var:SOFVendor}" ++ Type String ++ Empty "${var:SOFVendor}" + } + True.Define.SOFVendor "${sys:devices/virtual/dmi/id/board_vendor}" + } +-- +2.47.0 + + +From 6397c663d7086b87ca5cbba323ea3dcd0ecd3200 Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Wed, 13 Nov 2024 16:19:15 +0100 +Subject: [PATCH 2/2] sof-hda-dsp: Fix the case where sysfs dmi product_name + attribute is not set + + !!DMI Information + !!--------------- + + Manufacturer: + Product Name: + Product Version: + Firmware Version: R6G07 + System SKU: Default string + Board Vendor: Default string + Board Name: Default string + +BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=2292583 +Signed-off-by: Jaroslav Kysela +--- + ucm2/Intel/sof-hda-dsp/HiFi-sof.conf | 11 ++++++++++- + 1 file changed, 10 insertions(+), 1 deletion(-) + +diff --git a/ucm2/Intel/sof-hda-dsp/HiFi-sof.conf b/ucm2/Intel/sof-hda-dsp/HiFi-sof.conf +index c755ba2..5fd1843 100644 +--- a/ucm2/Intel/sof-hda-dsp/HiFi-sof.conf ++++ b/ucm2/Intel/sof-hda-dsp/HiFi-sof.conf +@@ -3,6 +3,7 @@ + # File paths for controlling SOF processing + + Define.SOFVendor "$${sys:devices/virtual/dmi/id/sys_vendor}" ++Define.SOFProduct "$${sys:devices/virtual/dmi/id/product_name}" + + If.SOFVendor { + Condition { +@@ -12,6 +13,14 @@ If.SOFVendor { + True.Define.SOFVendor "${sys:devices/virtual/dmi/id/board_vendor}" + } + ++If.SOFProduct { ++ Condition { ++ Type String ++ Empty "${var:SOFProduct}" ++ } ++ True.Define.SOFProduct "${sys:devices/virtual/dmi/id/board_name}" ++} ++ + If.SOFIPCVer { + Condition { + Type ControlExists +@@ -43,7 +52,7 @@ If.SOFPath { + HeadphoneIirBlob "${var:BlobPath}/eq_iir/pass.blob" + HeadphoneFirBlob "${var:BlobPath}/eq_fir/pass.blob" + HeadphoneDrcBlob "${var:BlobPath}/drc/passthrough.blob" +- ConfPathFromDMI "${var:SOFVendor}/${sys:devices/virtual/dmi/id/product_name}.conf" ++ ConfPathFromDMI "${var:SOFVendor}/${var:SOFProduct}" + SOFProductConfig "/blobs/sof/product_configs/${var:ConfPathFromDMI}" + SOFConfFullPath "${ConfTopDir}${var:SOFProductConfig}" + SOFUserConfig "/blobs/sof/user_configs/${var:ConfPathFromDMI}" +-- +2.47.0 + From 7614ceee61a3407e38d9b0ce0c016aa3af2eb7a3 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Wed, 13 Nov 2024 16:26:28 +0100 Subject: [PATCH 04/24] fix SOF HDA UCM configuration Signed-off-by: Jaroslav Kysela --- alsa-lib.spec | 4 +- alsa-ucm-conf.patch | 101 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 103 insertions(+), 2 deletions(-) diff --git a/alsa-lib.spec b/alsa-lib.spec index 1566e84..adf2731 100644 --- a/alsa-lib.spec +++ b/alsa-lib.spec @@ -9,7 +9,7 @@ Summary: The Advanced Linux Sound Architecture (ALSA) library Name: alsa-lib Version: %{version_alsa_lib} -Release: 1%{?prever_dot}%{?dist} +Release: 2%{?prever_dot}%{?dist} License: LGPL-2.1-or-later URL: http://www.alsa-project.org/ @@ -167,7 +167,7 @@ rm %{buildroot}/%{_includedir}/asoundlib.h %{_datadir}/alsa/topology %changelog -* Tue Nov 12 2024 Jaroslav Kysela - 1.2.13-1 +* Wed Nov 13 2024 Jaroslav Kysela - 1.2.13-2 - update to 1.2.13 * Wed Jul 17 2024 Fedora Release Engineering - 1.2.12-2 diff --git a/alsa-ucm-conf.patch b/alsa-ucm-conf.patch index e69de29..ff46a0c 100644 --- a/alsa-ucm-conf.patch +++ b/alsa-ucm-conf.patch @@ -0,0 +1,101 @@ +From 11b028a9a01e47fc9b48e4a566803752011902e2 Mon Sep 17 00:00:00 2001 +From: Seppo Ingalsuo +Date: Wed, 13 Nov 2024 14:48:38 +0200 +Subject: [PATCH 1/2] UCM2: Intel: sof-hda-dsp: Fix handling of empty + sys_vendor + +The mistake in UCM syntax caused in alsaucm start error: + +ALSA lib ucm_cond.c:367:(if_eval) unknown If.Condition.Type + +Fixes: 13022a97711d ("sof-hda-dsp: Fix the case where sysfs dmi + sys_vendor attribute is not set") + +Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/463 +Signed-off-by: Seppo Ingalsuo +Signed-off-by: Jaroslav Kysela +--- + ucm2/Intel/sof-hda-dsp/HiFi-sof.conf | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/ucm2/Intel/sof-hda-dsp/HiFi-sof.conf b/ucm2/Intel/sof-hda-dsp/HiFi-sof.conf +index fea8159..c755ba2 100644 +--- a/ucm2/Intel/sof-hda-dsp/HiFi-sof.conf ++++ b/ucm2/Intel/sof-hda-dsp/HiFi-sof.conf +@@ -6,8 +6,8 @@ Define.SOFVendor "$${sys:devices/virtual/dmi/id/sys_vendor}" + + If.SOFVendor { + Condition { +- Type Empty +- String "${var:SOFVendor}" ++ Type String ++ Empty "${var:SOFVendor}" + } + True.Define.SOFVendor "${sys:devices/virtual/dmi/id/board_vendor}" + } +-- +2.47.0 + + +From 6397c663d7086b87ca5cbba323ea3dcd0ecd3200 Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Wed, 13 Nov 2024 16:19:15 +0100 +Subject: [PATCH 2/2] sof-hda-dsp: Fix the case where sysfs dmi product_name + attribute is not set + + !!DMI Information + !!--------------- + + Manufacturer: + Product Name: + Product Version: + Firmware Version: R6G07 + System SKU: Default string + Board Vendor: Default string + Board Name: Default string + +BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=2292583 +Signed-off-by: Jaroslav Kysela +--- + ucm2/Intel/sof-hda-dsp/HiFi-sof.conf | 11 ++++++++++- + 1 file changed, 10 insertions(+), 1 deletion(-) + +diff --git a/ucm2/Intel/sof-hda-dsp/HiFi-sof.conf b/ucm2/Intel/sof-hda-dsp/HiFi-sof.conf +index c755ba2..5fd1843 100644 +--- a/ucm2/Intel/sof-hda-dsp/HiFi-sof.conf ++++ b/ucm2/Intel/sof-hda-dsp/HiFi-sof.conf +@@ -3,6 +3,7 @@ + # File paths for controlling SOF processing + + Define.SOFVendor "$${sys:devices/virtual/dmi/id/sys_vendor}" ++Define.SOFProduct "$${sys:devices/virtual/dmi/id/product_name}" + + If.SOFVendor { + Condition { +@@ -12,6 +13,14 @@ If.SOFVendor { + True.Define.SOFVendor "${sys:devices/virtual/dmi/id/board_vendor}" + } + ++If.SOFProduct { ++ Condition { ++ Type String ++ Empty "${var:SOFProduct}" ++ } ++ True.Define.SOFProduct "${sys:devices/virtual/dmi/id/board_name}" ++} ++ + If.SOFIPCVer { + Condition { + Type ControlExists +@@ -43,7 +52,7 @@ If.SOFPath { + HeadphoneIirBlob "${var:BlobPath}/eq_iir/pass.blob" + HeadphoneFirBlob "${var:BlobPath}/eq_fir/pass.blob" + HeadphoneDrcBlob "${var:BlobPath}/drc/passthrough.blob" +- ConfPathFromDMI "${var:SOFVendor}/${sys:devices/virtual/dmi/id/product_name}.conf" ++ ConfPathFromDMI "${var:SOFVendor}/${var:SOFProduct}" + SOFProductConfig "/blobs/sof/product_configs/${var:ConfPathFromDMI}" + SOFConfFullPath "${ConfTopDir}${var:SOFProductConfig}" + SOFUserConfig "/blobs/sof/user_configs/${var:ConfPathFromDMI}" +-- +2.47.0 + From 67fd486ada26ad3b84298565ea8c5e4562fefa90 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Fri, 15 Nov 2024 09:34:14 +0100 Subject: [PATCH 05/24] fix snd_seq_has_queue_tempo_base symbol version Signed-off-by: Jaroslav Kysela --- alsa-git.patch | 42 ++++++++++++++++++++++++++++++++++++++++++ alsa-lib.spec | 4 ++-- 2 files changed, 44 insertions(+), 2 deletions(-) diff --git a/alsa-git.patch b/alsa-git.patch index e69de29..1f6cb46 100644 --- a/alsa-git.patch +++ b/alsa-git.patch @@ -0,0 +1,42 @@ +From 76edab4e595bd5f3f4c636cccc8d7976d3c519d6 Mon Sep 17 00:00:00 2001 +From: Nicholas Vinson +Date: Thu, 14 Nov 2024 07:49:53 -0500 +Subject: [PATCH] src/Versions.in.in: Update *_tempo_base name + +Change @SYMBOL_PREFIX@snd_has_tempo_base to +@SYMBOL_PREFIX@snd_has_queue_tempo_base. + +Starting with version 1.2.13, alsa-lib fails to link with ld.lld-19 due +to "version script assignment of 'ALSA_1.2.13' to symbol +'snd_seq_has_tempo_base' failed: symbol not defined". + +Per commit 769d1db1b0a213a39c7e59c0d1d724e7f45b1ac3 the correct name for +the symbol is @SYMBOL_PREFIX@snd_has_queue_tempo_base; therefore, update +src/Vesions.in.in to match. + +Fixes bug #420 +Fixes Gentoo bug 943399 (https://bugs.gentoo.org/943399) + +Closes: https://github.com/alsa-project/alsa-lib/pull/421 +Signed-off-by: Nicholas Vinson +Signed-off-by: Jaroslav Kysela +--- + src/Versions.in.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/Versions.in.in b/src/Versions.in.in +index 350ec3d8..7ad6a633 100644 +--- a/src/Versions.in.in ++++ b/src/Versions.in.in +@@ -212,7 +212,7 @@ ALSA_1.2.13 { + @SYMBOL_PREFIX@snd_seq_create_ump_block; + @SYMBOL_PREFIX@snd_seq_queue_tempo_get_tempo_base; + @SYMBOL_PREFIX@snd_seq_queue_tempo_set_tempo_base; +- @SYMBOL_PREFIX@snd_seq_has_tempo_base; ++ @SYMBOL_PREFIX@snd_seq_has_queue_tempo_base; + @SYMBOL_PREFIX@snd_seq_port_info_get_ump_is_midi1; + @SYMBOL_PREFIX@snd_seq_port_info_set_ump_is_midi1; + #endif +-- +2.47.0 + diff --git a/alsa-lib.spec b/alsa-lib.spec index adf2731..ff2f85c 100644 --- a/alsa-lib.spec +++ b/alsa-lib.spec @@ -20,7 +20,7 @@ Source10: asound.conf Source11: modprobe-dist-alsa.conf Source12: modprobe-dist-oss.conf Source40: alsa-ucm-conf.patch -#Patch0: alsa-git.patch +Patch0: alsa-git.patch Patch1: alsa-lib-1.2.3.1-config.patch Patch2: alsa-lib-1.2.10-glibc-open.patch @@ -70,7 +70,7 @@ contains alsa-lib configuration of SoC topology %prep %setup -q -n %{name}-%{version}%{?prever}%{?postver} -#patch -P0 -p1 -b .alsa-git +%patch -P0 -p1 -b .alsa-git %patch -P1 -p1 -b .config %patch -P2 -p1 -b .glibc-open From 220911de7a16ed3d8db3b967552c0aabe6edc96b Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Fri, 15 Nov 2024 09:40:05 +0100 Subject: [PATCH 06/24] fix snd_seq_has_queue_tempo_base symbol version #2 Signed-off-by: Jaroslav Kysela --- alsa-lib.spec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/alsa-lib.spec b/alsa-lib.spec index ff2f85c..b1c8552 100644 --- a/alsa-lib.spec +++ b/alsa-lib.spec @@ -9,7 +9,7 @@ Summary: The Advanced Linux Sound Architecture (ALSA) library Name: alsa-lib Version: %{version_alsa_lib} -Release: 2%{?prever_dot}%{?dist} +Release: 3%{?prever_dot}%{?dist} License: LGPL-2.1-or-later URL: http://www.alsa-project.org/ @@ -167,7 +167,7 @@ rm %{buildroot}/%{_includedir}/asoundlib.h %{_datadir}/alsa/topology %changelog -* Wed Nov 13 2024 Jaroslav Kysela - 1.2.13-2 +* Fri Nov 15 2024 Jaroslav Kysela - 1.2.13-3 - update to 1.2.13 * Wed Jul 17 2024 Fedora Release Engineering - 1.2.12-2 From 79cc9f52ede20e8621c3ab8b04a0eb9100650997 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Fri, 15 Nov 2024 09:40:05 +0100 Subject: [PATCH 07/24] fix snd_seq_has_queue_tempo_base symbol version Signed-off-by: Jaroslav Kysela --- alsa-git.patch | 42 ++++++++++++++++++++++++++++++++++++++++++ alsa-lib.spec | 8 ++++---- 2 files changed, 46 insertions(+), 4 deletions(-) diff --git a/alsa-git.patch b/alsa-git.patch index e69de29..1f6cb46 100644 --- a/alsa-git.patch +++ b/alsa-git.patch @@ -0,0 +1,42 @@ +From 76edab4e595bd5f3f4c636cccc8d7976d3c519d6 Mon Sep 17 00:00:00 2001 +From: Nicholas Vinson +Date: Thu, 14 Nov 2024 07:49:53 -0500 +Subject: [PATCH] src/Versions.in.in: Update *_tempo_base name + +Change @SYMBOL_PREFIX@snd_has_tempo_base to +@SYMBOL_PREFIX@snd_has_queue_tempo_base. + +Starting with version 1.2.13, alsa-lib fails to link with ld.lld-19 due +to "version script assignment of 'ALSA_1.2.13' to symbol +'snd_seq_has_tempo_base' failed: symbol not defined". + +Per commit 769d1db1b0a213a39c7e59c0d1d724e7f45b1ac3 the correct name for +the symbol is @SYMBOL_PREFIX@snd_has_queue_tempo_base; therefore, update +src/Vesions.in.in to match. + +Fixes bug #420 +Fixes Gentoo bug 943399 (https://bugs.gentoo.org/943399) + +Closes: https://github.com/alsa-project/alsa-lib/pull/421 +Signed-off-by: Nicholas Vinson +Signed-off-by: Jaroslav Kysela +--- + src/Versions.in.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/Versions.in.in b/src/Versions.in.in +index 350ec3d8..7ad6a633 100644 +--- a/src/Versions.in.in ++++ b/src/Versions.in.in +@@ -212,7 +212,7 @@ ALSA_1.2.13 { + @SYMBOL_PREFIX@snd_seq_create_ump_block; + @SYMBOL_PREFIX@snd_seq_queue_tempo_get_tempo_base; + @SYMBOL_PREFIX@snd_seq_queue_tempo_set_tempo_base; +- @SYMBOL_PREFIX@snd_seq_has_tempo_base; ++ @SYMBOL_PREFIX@snd_seq_has_queue_tempo_base; + @SYMBOL_PREFIX@snd_seq_port_info_get_ump_is_midi1; + @SYMBOL_PREFIX@snd_seq_port_info_set_ump_is_midi1; + #endif +-- +2.47.0 + diff --git a/alsa-lib.spec b/alsa-lib.spec index adf2731..b1c8552 100644 --- a/alsa-lib.spec +++ b/alsa-lib.spec @@ -9,7 +9,7 @@ Summary: The Advanced Linux Sound Architecture (ALSA) library Name: alsa-lib Version: %{version_alsa_lib} -Release: 2%{?prever_dot}%{?dist} +Release: 3%{?prever_dot}%{?dist} License: LGPL-2.1-or-later URL: http://www.alsa-project.org/ @@ -20,7 +20,7 @@ Source10: asound.conf Source11: modprobe-dist-alsa.conf Source12: modprobe-dist-oss.conf Source40: alsa-ucm-conf.patch -#Patch0: alsa-git.patch +Patch0: alsa-git.patch Patch1: alsa-lib-1.2.3.1-config.patch Patch2: alsa-lib-1.2.10-glibc-open.patch @@ -70,7 +70,7 @@ contains alsa-lib configuration of SoC topology %prep %setup -q -n %{name}-%{version}%{?prever}%{?postver} -#patch -P0 -p1 -b .alsa-git +%patch -P0 -p1 -b .alsa-git %patch -P1 -p1 -b .config %patch -P2 -p1 -b .glibc-open @@ -167,7 +167,7 @@ rm %{buildroot}/%{_includedir}/asoundlib.h %{_datadir}/alsa/topology %changelog -* Wed Nov 13 2024 Jaroslav Kysela - 1.2.13-2 +* Fri Nov 15 2024 Jaroslav Kysela - 1.2.13-3 - update to 1.2.13 * Wed Jul 17 2024 Fedora Release Engineering - 1.2.12-2 From ce98cbeca1abddcb2bdf9fd33728bc2cf0ea22f9 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 16 Jan 2025 10:54:10 +0000 Subject: [PATCH 08/24] Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild --- alsa-lib.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/alsa-lib.spec b/alsa-lib.spec index b1c8552..963b312 100644 --- a/alsa-lib.spec +++ b/alsa-lib.spec @@ -9,7 +9,7 @@ Summary: The Advanced Linux Sound Architecture (ALSA) library Name: alsa-lib Version: %{version_alsa_lib} -Release: 3%{?prever_dot}%{?dist} +Release: 4%{?prever_dot}%{?dist} License: LGPL-2.1-or-later URL: http://www.alsa-project.org/ @@ -167,6 +167,9 @@ rm %{buildroot}/%{_includedir}/asoundlib.h %{_datadir}/alsa/topology %changelog +* Thu Jan 16 2025 Fedora Release Engineering - 1.2.13-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + * Fri Nov 15 2024 Jaroslav Kysela - 1.2.13-3 - update to 1.2.13 From ecc98ea4c403640f7f250ea6366346f8d2beaf2f Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Mon, 14 Apr 2025 11:11:13 +0200 Subject: [PATCH 09/24] update to 1.2.14 Signed-off-by: Jaroslav Kysela --- alsa-git.patch | 42 ------------------ alsa-lib.spec | 17 +++++--- alsa-ucm-conf.patch | 101 -------------------------------------------- sources | 4 +- 4 files changed, 12 insertions(+), 152 deletions(-) delete mode 100644 alsa-git.patch delete mode 100644 alsa-ucm-conf.patch diff --git a/alsa-git.patch b/alsa-git.patch deleted file mode 100644 index 1f6cb46..0000000 --- a/alsa-git.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 76edab4e595bd5f3f4c636cccc8d7976d3c519d6 Mon Sep 17 00:00:00 2001 -From: Nicholas Vinson -Date: Thu, 14 Nov 2024 07:49:53 -0500 -Subject: [PATCH] src/Versions.in.in: Update *_tempo_base name - -Change @SYMBOL_PREFIX@snd_has_tempo_base to -@SYMBOL_PREFIX@snd_has_queue_tempo_base. - -Starting with version 1.2.13, alsa-lib fails to link with ld.lld-19 due -to "version script assignment of 'ALSA_1.2.13' to symbol -'snd_seq_has_tempo_base' failed: symbol not defined". - -Per commit 769d1db1b0a213a39c7e59c0d1d724e7f45b1ac3 the correct name for -the symbol is @SYMBOL_PREFIX@snd_has_queue_tempo_base; therefore, update -src/Vesions.in.in to match. - -Fixes bug #420 -Fixes Gentoo bug 943399 (https://bugs.gentoo.org/943399) - -Closes: https://github.com/alsa-project/alsa-lib/pull/421 -Signed-off-by: Nicholas Vinson -Signed-off-by: Jaroslav Kysela ---- - src/Versions.in.in | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/Versions.in.in b/src/Versions.in.in -index 350ec3d8..7ad6a633 100644 ---- a/src/Versions.in.in -+++ b/src/Versions.in.in -@@ -212,7 +212,7 @@ ALSA_1.2.13 { - @SYMBOL_PREFIX@snd_seq_create_ump_block; - @SYMBOL_PREFIX@snd_seq_queue_tempo_get_tempo_base; - @SYMBOL_PREFIX@snd_seq_queue_tempo_set_tempo_base; -- @SYMBOL_PREFIX@snd_seq_has_tempo_base; -+ @SYMBOL_PREFIX@snd_seq_has_queue_tempo_base; - @SYMBOL_PREFIX@snd_seq_port_info_get_ump_is_midi1; - @SYMBOL_PREFIX@snd_seq_port_info_set_ump_is_midi1; - #endif --- -2.47.0 - diff --git a/alsa-lib.spec b/alsa-lib.spec index 963b312..0fd0ae6 100644 --- a/alsa-lib.spec +++ b/alsa-lib.spec @@ -2,14 +2,14 @@ #define prever_dot .rc3 #define postver a -%define version_alsa_lib 1.2.13 -%define version_alsa_ucm 1.2.13 +%define version_alsa_lib 1.2.14 +%define version_alsa_ucm 1.2.14 %define version_alsa_tplg 1.2.5 Summary: The Advanced Linux Sound Architecture (ALSA) library Name: alsa-lib Version: %{version_alsa_lib} -Release: 4%{?prever_dot}%{?dist} +Release: 1%{?prever_dot}%{?dist} License: LGPL-2.1-or-later URL: http://www.alsa-project.org/ @@ -19,8 +19,8 @@ Source2: ftp://ftp.alsa-project.org/pub/lib/alsa-topology-conf-%{version_alsa_t Source10: asound.conf Source11: modprobe-dist-alsa.conf Source12: modprobe-dist-oss.conf -Source40: alsa-ucm-conf.patch -Patch0: alsa-git.patch +#Source40: alsa-ucm-conf.patch +#Patch0: alsa-git.patch Patch1: alsa-lib-1.2.3.1-config.patch Patch2: alsa-lib-1.2.10-glibc-open.patch @@ -70,7 +70,7 @@ contains alsa-lib configuration of SoC topology %prep %setup -q -n %{name}-%{version}%{?prever}%{?postver} -%patch -P0 -p1 -b .alsa-git +#patch -P0 -p1 -b .alsa-git %patch -P1 -p1 -b .config %patch -P2 -p1 -b .glibc-open @@ -116,7 +116,7 @@ mkdir -p %{buildroot}/%{_datadir}/alsa/ucm2 # Unpack UCMs tar xvjf %{SOURCE1} -C %{buildroot}/%{_datadir}/alsa --strip-components=1 "*/ucm" "*/ucm2" -patch -d %{buildroot}/%{_datadir}/alsa -p1 < %{SOURCE40} +#patch -d %{buildroot}/%{_datadir}/alsa -p1 < %{SOURCE40} # Create topology directory mkdir -p %{buildroot}/%{_datadir}/alsa/topology @@ -167,6 +167,9 @@ rm %{buildroot}/%{_includedir}/asoundlib.h %{_datadir}/alsa/topology %changelog +* Mon Apr 14 2025 Jaroslav Kysela - 1.2.14-1 +- update to 1.2.14 + * Thu Jan 16 2025 Fedora Release Engineering - 1.2.13-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild diff --git a/alsa-ucm-conf.patch b/alsa-ucm-conf.patch deleted file mode 100644 index ff46a0c..0000000 --- a/alsa-ucm-conf.patch +++ /dev/null @@ -1,101 +0,0 @@ -From 11b028a9a01e47fc9b48e4a566803752011902e2 Mon Sep 17 00:00:00 2001 -From: Seppo Ingalsuo -Date: Wed, 13 Nov 2024 14:48:38 +0200 -Subject: [PATCH 1/2] UCM2: Intel: sof-hda-dsp: Fix handling of empty - sys_vendor - -The mistake in UCM syntax caused in alsaucm start error: - -ALSA lib ucm_cond.c:367:(if_eval) unknown If.Condition.Type - -Fixes: 13022a97711d ("sof-hda-dsp: Fix the case where sysfs dmi - sys_vendor attribute is not set") - -Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/463 -Signed-off-by: Seppo Ingalsuo -Signed-off-by: Jaroslav Kysela ---- - ucm2/Intel/sof-hda-dsp/HiFi-sof.conf | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/ucm2/Intel/sof-hda-dsp/HiFi-sof.conf b/ucm2/Intel/sof-hda-dsp/HiFi-sof.conf -index fea8159..c755ba2 100644 ---- a/ucm2/Intel/sof-hda-dsp/HiFi-sof.conf -+++ b/ucm2/Intel/sof-hda-dsp/HiFi-sof.conf -@@ -6,8 +6,8 @@ Define.SOFVendor "$${sys:devices/virtual/dmi/id/sys_vendor}" - - If.SOFVendor { - Condition { -- Type Empty -- String "${var:SOFVendor}" -+ Type String -+ Empty "${var:SOFVendor}" - } - True.Define.SOFVendor "${sys:devices/virtual/dmi/id/board_vendor}" - } --- -2.47.0 - - -From 6397c663d7086b87ca5cbba323ea3dcd0ecd3200 Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Wed, 13 Nov 2024 16:19:15 +0100 -Subject: [PATCH 2/2] sof-hda-dsp: Fix the case where sysfs dmi product_name - attribute is not set - - !!DMI Information - !!--------------- - - Manufacturer: - Product Name: - Product Version: - Firmware Version: R6G07 - System SKU: Default string - Board Vendor: Default string - Board Name: Default string - -BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=2292583 -Signed-off-by: Jaroslav Kysela ---- - ucm2/Intel/sof-hda-dsp/HiFi-sof.conf | 11 ++++++++++- - 1 file changed, 10 insertions(+), 1 deletion(-) - -diff --git a/ucm2/Intel/sof-hda-dsp/HiFi-sof.conf b/ucm2/Intel/sof-hda-dsp/HiFi-sof.conf -index c755ba2..5fd1843 100644 ---- a/ucm2/Intel/sof-hda-dsp/HiFi-sof.conf -+++ b/ucm2/Intel/sof-hda-dsp/HiFi-sof.conf -@@ -3,6 +3,7 @@ - # File paths for controlling SOF processing - - Define.SOFVendor "$${sys:devices/virtual/dmi/id/sys_vendor}" -+Define.SOFProduct "$${sys:devices/virtual/dmi/id/product_name}" - - If.SOFVendor { - Condition { -@@ -12,6 +13,14 @@ If.SOFVendor { - True.Define.SOFVendor "${sys:devices/virtual/dmi/id/board_vendor}" - } - -+If.SOFProduct { -+ Condition { -+ Type String -+ Empty "${var:SOFProduct}" -+ } -+ True.Define.SOFProduct "${sys:devices/virtual/dmi/id/board_name}" -+} -+ - If.SOFIPCVer { - Condition { - Type ControlExists -@@ -43,7 +52,7 @@ If.SOFPath { - HeadphoneIirBlob "${var:BlobPath}/eq_iir/pass.blob" - HeadphoneFirBlob "${var:BlobPath}/eq_fir/pass.blob" - HeadphoneDrcBlob "${var:BlobPath}/drc/passthrough.blob" -- ConfPathFromDMI "${var:SOFVendor}/${sys:devices/virtual/dmi/id/product_name}.conf" -+ ConfPathFromDMI "${var:SOFVendor}/${var:SOFProduct}" - SOFProductConfig "/blobs/sof/product_configs/${var:ConfPathFromDMI}" - SOFConfFullPath "${ConfTopDir}${var:SOFProductConfig}" - SOFUserConfig "/blobs/sof/user_configs/${var:ConfPathFromDMI}" --- -2.47.0 - diff --git a/sources b/sources index e7b27b3..9e16b4d 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ -SHA512 (alsa-lib-1.2.13.tar.bz2) = b0c0666e38e881dca985b61386523c045c71072a88be4952c986ffbe2107ec736da528858ebeffdf439de5c290914bf3facc654100a228c6d26fff9429142ef0 -SHA512 (alsa-ucm-conf-1.2.13.tar.bz2) = cad867268851ac178f3a5378a00e292184b0e0ec7955f297ae7ed56073d3dddb06c08666b23b1bf6b0065068a9370ee34608bd687763658c79d34b64059b1c85 +SHA512 (alsa-lib-1.2.14.tar.bz2) = af7c405f8e0dbe3b4420c3e414c6ab1b0abf7802d0b8b986ae2762ed11e1c8259eb7aa9101fadc4258da5997d94da2f6f7baeb254435c554c2e33fc1c9bb0eb7 +SHA512 (alsa-ucm-conf-1.2.14.tar.bz2) = a224e890919306bdcd606dfb873b089950c9fa89f24c02947692ee8ab1a05c419f2a8dc174440d17c8a9575cab293806630f2cb43d74677f7ef0d956b7883dc5 SHA512 (alsa-topology-conf-1.2.5.tar.bz2) = 2eb4d8baf2dcbf0b631dd11dbf15bffc51694d9cc6931619e51787f3ba58d1a091d266e6721a3b737c040ec74a28270b93f39fb97f30a3227cf340dd646e5d51 From c2ba4f892fc34038d9a689661b6bf4b140ab7f32 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Mon, 14 Apr 2025 11:11:13 +0200 Subject: [PATCH 10/24] update to 1.2.14 Signed-off-by: Jaroslav Kysela --- alsa-git.patch | 42 ------------------ alsa-lib.spec | 17 +++++--- alsa-ucm-conf.patch | 101 -------------------------------------------- sources | 4 +- 4 files changed, 12 insertions(+), 152 deletions(-) delete mode 100644 alsa-git.patch delete mode 100644 alsa-ucm-conf.patch diff --git a/alsa-git.patch b/alsa-git.patch deleted file mode 100644 index 1f6cb46..0000000 --- a/alsa-git.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 76edab4e595bd5f3f4c636cccc8d7976d3c519d6 Mon Sep 17 00:00:00 2001 -From: Nicholas Vinson -Date: Thu, 14 Nov 2024 07:49:53 -0500 -Subject: [PATCH] src/Versions.in.in: Update *_tempo_base name - -Change @SYMBOL_PREFIX@snd_has_tempo_base to -@SYMBOL_PREFIX@snd_has_queue_tempo_base. - -Starting with version 1.2.13, alsa-lib fails to link with ld.lld-19 due -to "version script assignment of 'ALSA_1.2.13' to symbol -'snd_seq_has_tempo_base' failed: symbol not defined". - -Per commit 769d1db1b0a213a39c7e59c0d1d724e7f45b1ac3 the correct name for -the symbol is @SYMBOL_PREFIX@snd_has_queue_tempo_base; therefore, update -src/Vesions.in.in to match. - -Fixes bug #420 -Fixes Gentoo bug 943399 (https://bugs.gentoo.org/943399) - -Closes: https://github.com/alsa-project/alsa-lib/pull/421 -Signed-off-by: Nicholas Vinson -Signed-off-by: Jaroslav Kysela ---- - src/Versions.in.in | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/Versions.in.in b/src/Versions.in.in -index 350ec3d8..7ad6a633 100644 ---- a/src/Versions.in.in -+++ b/src/Versions.in.in -@@ -212,7 +212,7 @@ ALSA_1.2.13 { - @SYMBOL_PREFIX@snd_seq_create_ump_block; - @SYMBOL_PREFIX@snd_seq_queue_tempo_get_tempo_base; - @SYMBOL_PREFIX@snd_seq_queue_tempo_set_tempo_base; -- @SYMBOL_PREFIX@snd_seq_has_tempo_base; -+ @SYMBOL_PREFIX@snd_seq_has_queue_tempo_base; - @SYMBOL_PREFIX@snd_seq_port_info_get_ump_is_midi1; - @SYMBOL_PREFIX@snd_seq_port_info_set_ump_is_midi1; - #endif --- -2.47.0 - diff --git a/alsa-lib.spec b/alsa-lib.spec index b1c8552..0dbfb4e 100644 --- a/alsa-lib.spec +++ b/alsa-lib.spec @@ -2,14 +2,14 @@ #define prever_dot .rc3 #define postver a -%define version_alsa_lib 1.2.13 -%define version_alsa_ucm 1.2.13 +%define version_alsa_lib 1.2.14 +%define version_alsa_ucm 1.2.14 %define version_alsa_tplg 1.2.5 Summary: The Advanced Linux Sound Architecture (ALSA) library Name: alsa-lib Version: %{version_alsa_lib} -Release: 3%{?prever_dot}%{?dist} +Release: 1%{?prever_dot}%{?dist} License: LGPL-2.1-or-later URL: http://www.alsa-project.org/ @@ -19,8 +19,8 @@ Source2: ftp://ftp.alsa-project.org/pub/lib/alsa-topology-conf-%{version_alsa_t Source10: asound.conf Source11: modprobe-dist-alsa.conf Source12: modprobe-dist-oss.conf -Source40: alsa-ucm-conf.patch -Patch0: alsa-git.patch +#Source40: alsa-ucm-conf.patch +#Patch0: alsa-git.patch Patch1: alsa-lib-1.2.3.1-config.patch Patch2: alsa-lib-1.2.10-glibc-open.patch @@ -70,7 +70,7 @@ contains alsa-lib configuration of SoC topology %prep %setup -q -n %{name}-%{version}%{?prever}%{?postver} -%patch -P0 -p1 -b .alsa-git +#patch -P0 -p1 -b .alsa-git %patch -P1 -p1 -b .config %patch -P2 -p1 -b .glibc-open @@ -116,7 +116,7 @@ mkdir -p %{buildroot}/%{_datadir}/alsa/ucm2 # Unpack UCMs tar xvjf %{SOURCE1} -C %{buildroot}/%{_datadir}/alsa --strip-components=1 "*/ucm" "*/ucm2" -patch -d %{buildroot}/%{_datadir}/alsa -p1 < %{SOURCE40} +#patch -d %{buildroot}/%{_datadir}/alsa -p1 < %{SOURCE40} # Create topology directory mkdir -p %{buildroot}/%{_datadir}/alsa/topology @@ -167,6 +167,9 @@ rm %{buildroot}/%{_includedir}/asoundlib.h %{_datadir}/alsa/topology %changelog +* Mon Apr 14 2025 Jaroslav Kysela - 1.2.14-1 +- update to 1.2.14 + * Fri Nov 15 2024 Jaroslav Kysela - 1.2.13-3 - update to 1.2.13 diff --git a/alsa-ucm-conf.patch b/alsa-ucm-conf.patch deleted file mode 100644 index ff46a0c..0000000 --- a/alsa-ucm-conf.patch +++ /dev/null @@ -1,101 +0,0 @@ -From 11b028a9a01e47fc9b48e4a566803752011902e2 Mon Sep 17 00:00:00 2001 -From: Seppo Ingalsuo -Date: Wed, 13 Nov 2024 14:48:38 +0200 -Subject: [PATCH 1/2] UCM2: Intel: sof-hda-dsp: Fix handling of empty - sys_vendor - -The mistake in UCM syntax caused in alsaucm start error: - -ALSA lib ucm_cond.c:367:(if_eval) unknown If.Condition.Type - -Fixes: 13022a97711d ("sof-hda-dsp: Fix the case where sysfs dmi - sys_vendor attribute is not set") - -Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/463 -Signed-off-by: Seppo Ingalsuo -Signed-off-by: Jaroslav Kysela ---- - ucm2/Intel/sof-hda-dsp/HiFi-sof.conf | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/ucm2/Intel/sof-hda-dsp/HiFi-sof.conf b/ucm2/Intel/sof-hda-dsp/HiFi-sof.conf -index fea8159..c755ba2 100644 ---- a/ucm2/Intel/sof-hda-dsp/HiFi-sof.conf -+++ b/ucm2/Intel/sof-hda-dsp/HiFi-sof.conf -@@ -6,8 +6,8 @@ Define.SOFVendor "$${sys:devices/virtual/dmi/id/sys_vendor}" - - If.SOFVendor { - Condition { -- Type Empty -- String "${var:SOFVendor}" -+ Type String -+ Empty "${var:SOFVendor}" - } - True.Define.SOFVendor "${sys:devices/virtual/dmi/id/board_vendor}" - } --- -2.47.0 - - -From 6397c663d7086b87ca5cbba323ea3dcd0ecd3200 Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Wed, 13 Nov 2024 16:19:15 +0100 -Subject: [PATCH 2/2] sof-hda-dsp: Fix the case where sysfs dmi product_name - attribute is not set - - !!DMI Information - !!--------------- - - Manufacturer: - Product Name: - Product Version: - Firmware Version: R6G07 - System SKU: Default string - Board Vendor: Default string - Board Name: Default string - -BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=2292583 -Signed-off-by: Jaroslav Kysela ---- - ucm2/Intel/sof-hda-dsp/HiFi-sof.conf | 11 ++++++++++- - 1 file changed, 10 insertions(+), 1 deletion(-) - -diff --git a/ucm2/Intel/sof-hda-dsp/HiFi-sof.conf b/ucm2/Intel/sof-hda-dsp/HiFi-sof.conf -index c755ba2..5fd1843 100644 ---- a/ucm2/Intel/sof-hda-dsp/HiFi-sof.conf -+++ b/ucm2/Intel/sof-hda-dsp/HiFi-sof.conf -@@ -3,6 +3,7 @@ - # File paths for controlling SOF processing - - Define.SOFVendor "$${sys:devices/virtual/dmi/id/sys_vendor}" -+Define.SOFProduct "$${sys:devices/virtual/dmi/id/product_name}" - - If.SOFVendor { - Condition { -@@ -12,6 +13,14 @@ If.SOFVendor { - True.Define.SOFVendor "${sys:devices/virtual/dmi/id/board_vendor}" - } - -+If.SOFProduct { -+ Condition { -+ Type String -+ Empty "${var:SOFProduct}" -+ } -+ True.Define.SOFProduct "${sys:devices/virtual/dmi/id/board_name}" -+} -+ - If.SOFIPCVer { - Condition { - Type ControlExists -@@ -43,7 +52,7 @@ If.SOFPath { - HeadphoneIirBlob "${var:BlobPath}/eq_iir/pass.blob" - HeadphoneFirBlob "${var:BlobPath}/eq_fir/pass.blob" - HeadphoneDrcBlob "${var:BlobPath}/drc/passthrough.blob" -- ConfPathFromDMI "${var:SOFVendor}/${sys:devices/virtual/dmi/id/product_name}.conf" -+ ConfPathFromDMI "${var:SOFVendor}/${var:SOFProduct}" - SOFProductConfig "/blobs/sof/product_configs/${var:ConfPathFromDMI}" - SOFConfFullPath "${ConfTopDir}${var:SOFProductConfig}" - SOFUserConfig "/blobs/sof/user_configs/${var:ConfPathFromDMI}" --- -2.47.0 - diff --git a/sources b/sources index e7b27b3..9e16b4d 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ -SHA512 (alsa-lib-1.2.13.tar.bz2) = b0c0666e38e881dca985b61386523c045c71072a88be4952c986ffbe2107ec736da528858ebeffdf439de5c290914bf3facc654100a228c6d26fff9429142ef0 -SHA512 (alsa-ucm-conf-1.2.13.tar.bz2) = cad867268851ac178f3a5378a00e292184b0e0ec7955f297ae7ed56073d3dddb06c08666b23b1bf6b0065068a9370ee34608bd687763658c79d34b64059b1c85 +SHA512 (alsa-lib-1.2.14.tar.bz2) = af7c405f8e0dbe3b4420c3e414c6ab1b0abf7802d0b8b986ae2762ed11e1c8259eb7aa9101fadc4258da5997d94da2f6f7baeb254435c554c2e33fc1c9bb0eb7 +SHA512 (alsa-ucm-conf-1.2.14.tar.bz2) = a224e890919306bdcd606dfb873b089950c9fa89f24c02947692ee8ab1a05c419f2a8dc174440d17c8a9575cab293806630f2cb43d74677f7ef0d956b7883dc5 SHA512 (alsa-topology-conf-1.2.5.tar.bz2) = 2eb4d8baf2dcbf0b631dd11dbf15bffc51694d9cc6931619e51787f3ba58d1a091d266e6721a3b737c040ec74a28270b93f39fb97f30a3227cf340dd646e5d51 From ab1b5f63036d1bf38932aa87757c680e50855686 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Mon, 14 Apr 2025 18:52:51 +0200 Subject: [PATCH 11/24] use updated tar ball Signed-off-by: Jaroslav Kysela --- alsa-lib.spec | 4 ++-- sources | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/alsa-lib.spec b/alsa-lib.spec index 0fd0ae6..6b8b1a4 100644 --- a/alsa-lib.spec +++ b/alsa-lib.spec @@ -9,7 +9,7 @@ Summary: The Advanced Linux Sound Architecture (ALSA) library Name: alsa-lib Version: %{version_alsa_lib} -Release: 1%{?prever_dot}%{?dist} +Release: 2%{?prever_dot}%{?dist} License: LGPL-2.1-or-later URL: http://www.alsa-project.org/ @@ -167,7 +167,7 @@ rm %{buildroot}/%{_includedir}/asoundlib.h %{_datadir}/alsa/topology %changelog -* Mon Apr 14 2025 Jaroslav Kysela - 1.2.14-1 +* Mon Apr 14 2025 Jaroslav Kysela - 1.2.14-2 - update to 1.2.14 * Thu Jan 16 2025 Fedora Release Engineering - 1.2.13-4 diff --git a/sources b/sources index 9e16b4d..99910eb 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ -SHA512 (alsa-lib-1.2.14.tar.bz2) = af7c405f8e0dbe3b4420c3e414c6ab1b0abf7802d0b8b986ae2762ed11e1c8259eb7aa9101fadc4258da5997d94da2f6f7baeb254435c554c2e33fc1c9bb0eb7 +SHA512 (alsa-lib-1.2.14.tar.bz2) = 2716cc3a2299da4a1a170d734af082d78dc452b253179d0f1a9ec190140734aecf002b6924eec4ff2699ce88ce1ae5c56821c267f36384910984db726d1f9626 SHA512 (alsa-ucm-conf-1.2.14.tar.bz2) = a224e890919306bdcd606dfb873b089950c9fa89f24c02947692ee8ab1a05c419f2a8dc174440d17c8a9575cab293806630f2cb43d74677f7ef0d956b7883dc5 SHA512 (alsa-topology-conf-1.2.5.tar.bz2) = 2eb4d8baf2dcbf0b631dd11dbf15bffc51694d9cc6931619e51787f3ba58d1a091d266e6721a3b737c040ec74a28270b93f39fb97f30a3227cf340dd646e5d51 From c2fd2621c41aa63eed6e645b64018e111c936a20 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Mon, 14 Apr 2025 18:52:51 +0200 Subject: [PATCH 12/24] use updated tar ball Signed-off-by: Jaroslav Kysela --- alsa-lib.spec | 4 ++-- sources | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/alsa-lib.spec b/alsa-lib.spec index 0dbfb4e..d54e2c4 100644 --- a/alsa-lib.spec +++ b/alsa-lib.spec @@ -9,7 +9,7 @@ Summary: The Advanced Linux Sound Architecture (ALSA) library Name: alsa-lib Version: %{version_alsa_lib} -Release: 1%{?prever_dot}%{?dist} +Release: 2%{?prever_dot}%{?dist} License: LGPL-2.1-or-later URL: http://www.alsa-project.org/ @@ -167,7 +167,7 @@ rm %{buildroot}/%{_includedir}/asoundlib.h %{_datadir}/alsa/topology %changelog -* Mon Apr 14 2025 Jaroslav Kysela - 1.2.14-1 +* Mon Apr 14 2025 Jaroslav Kysela - 1.2.14-2 - update to 1.2.14 * Fri Nov 15 2024 Jaroslav Kysela - 1.2.13-3 diff --git a/sources b/sources index 9e16b4d..99910eb 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ -SHA512 (alsa-lib-1.2.14.tar.bz2) = af7c405f8e0dbe3b4420c3e414c6ab1b0abf7802d0b8b986ae2762ed11e1c8259eb7aa9101fadc4258da5997d94da2f6f7baeb254435c554c2e33fc1c9bb0eb7 +SHA512 (alsa-lib-1.2.14.tar.bz2) = 2716cc3a2299da4a1a170d734af082d78dc452b253179d0f1a9ec190140734aecf002b6924eec4ff2699ce88ce1ae5c56821c267f36384910984db726d1f9626 SHA512 (alsa-ucm-conf-1.2.14.tar.bz2) = a224e890919306bdcd606dfb873b089950c9fa89f24c02947692ee8ab1a05c419f2a8dc174440d17c8a9575cab293806630f2cb43d74677f7ef0d956b7883dc5 SHA512 (alsa-topology-conf-1.2.5.tar.bz2) = 2eb4d8baf2dcbf0b631dd11dbf15bffc51694d9cc6931619e51787f3ba58d1a091d266e6721a3b737c040ec74a28270b93f39fb97f30a3227cf340dd646e5d51 From 9535a12c2cc5597418baa3baa4b3f8ca888734a5 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Tue, 24 Jun 2025 15:24:30 +0200 Subject: [PATCH 13/24] update alsa-ucm-conf files to latest Signed-off-by: Jaroslav Kysela --- alsa-git.patch | 31 + alsa-lib.spec | 13 +- alsa-ucm-conf.patch | 2374 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 2413 insertions(+), 5 deletions(-) create mode 100644 alsa-git.patch create mode 100644 alsa-ucm-conf.patch diff --git a/alsa-git.patch b/alsa-git.patch new file mode 100644 index 0000000..ded7dfb --- /dev/null +++ b/alsa-git.patch @@ -0,0 +1,31 @@ +From 07ec2ad34c42dba8656d3f543164f360f481c52e Mon Sep 17 00:00:00 2001 +From: Daniel Dadap +Date: Thu, 15 May 2025 08:32:35 -0500 +Subject: [PATCH] conf: aliases: add hda-acpi -> HDA-Intel alias + +The new snd_hda_acpi driver in Linux exposes the existing Azalia +interface to non-PCI devices advertised over ACPI. Add an alias +to the existing HDA-Intel configuration file so that devices using +this driver can be discovered properly. + +Signed-off-by: Daniel Dadap +Signed-off-by: Takashi Iwai +--- + src/conf/cards/aliases.conf | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/conf/cards/aliases.conf b/src/conf/cards/aliases.conf +index a54824ae..e2d59aa7 100644 +--- a/src/conf/cards/aliases.conf ++++ b/src/conf/cards/aliases.conf +@@ -57,6 +57,7 @@ CMI8786 cards.CMI8788 + CMI8787 cards.CMI8788 + pistachio cards.pistachio-card + VC4-HDMI cards.vc4-hdmi ++hda-acpi cards.HDA-Intel + + + +-- +2.49.0 + diff --git a/alsa-lib.spec b/alsa-lib.spec index 6b8b1a4..2e492b4 100644 --- a/alsa-lib.spec +++ b/alsa-lib.spec @@ -9,7 +9,7 @@ Summary: The Advanced Linux Sound Architecture (ALSA) library Name: alsa-lib Version: %{version_alsa_lib} -Release: 2%{?prever_dot}%{?dist} +Release: 3%{?prever_dot}%{?dist} License: LGPL-2.1-or-later URL: http://www.alsa-project.org/ @@ -19,8 +19,8 @@ Source2: ftp://ftp.alsa-project.org/pub/lib/alsa-topology-conf-%{version_alsa_t Source10: asound.conf Source11: modprobe-dist-alsa.conf Source12: modprobe-dist-oss.conf -#Source40: alsa-ucm-conf.patch -#Patch0: alsa-git.patch +Source40: alsa-ucm-conf.patch +Patch0: alsa-git.patch Patch1: alsa-lib-1.2.3.1-config.patch Patch2: alsa-lib-1.2.10-glibc-open.patch @@ -70,7 +70,7 @@ contains alsa-lib configuration of SoC topology %prep %setup -q -n %{name}-%{version}%{?prever}%{?postver} -#patch -P0 -p1 -b .alsa-git +%patch -P0 -p1 -b .alsa-git %patch -P1 -p1 -b .config %patch -P2 -p1 -b .glibc-open @@ -116,7 +116,7 @@ mkdir -p %{buildroot}/%{_datadir}/alsa/ucm2 # Unpack UCMs tar xvjf %{SOURCE1} -C %{buildroot}/%{_datadir}/alsa --strip-components=1 "*/ucm" "*/ucm2" -#patch -d %{buildroot}/%{_datadir}/alsa -p1 < %{SOURCE40} +patch -d %{buildroot}/%{_datadir}/alsa -p1 < %{SOURCE40} # Create topology directory mkdir -p %{buildroot}/%{_datadir}/alsa/topology @@ -167,6 +167,9 @@ rm %{buildroot}/%{_includedir}/asoundlib.h %{_datadir}/alsa/topology %changelog +* Tue Jan 24 2025 Jaroslav Kysela - 1.2.14-3 +- update to latest alsa-ucm-conf files + * Mon Apr 14 2025 Jaroslav Kysela - 1.2.14-2 - update to 1.2.14 diff --git a/alsa-ucm-conf.patch b/alsa-ucm-conf.patch new file mode 100644 index 0000000..917177c --- /dev/null +++ b/alsa-ucm-conf.patch @@ -0,0 +1,2374 @@ +From 25f519f66c3e496b21ca1ad83ebc6114dfaa9fc3 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Maja=20K=C4=85dzio=C5=82ka?= +Date: Tue, 22 Apr 2025 07:46:21 +0200 +Subject: [PATCH 01/24] acp3x-alc5682-max98357: Fix path of HiFi.conf +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/551 +Closes: https://github.com/alsa-project/alsa-ucm-conf/issues/550 +Fixes: 1048796e7fa9 ("Rename ucm2/AMD/acp3xalc5682m98 to ucm2/AMD/acp3x-alc5682-max98357") +Signed-off-by: Maja Kądziołka +Signed-off-by: Jaroslav Kysela +--- + ucm2/AMD/acp3x-alc5682-max98357/acp3x-alc5682-max98357.conf | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/ucm2/AMD/acp3x-alc5682-max98357/acp3x-alc5682-max98357.conf b/ucm2/AMD/acp3x-alc5682-max98357/acp3x-alc5682-max98357.conf +index e1f1c9e..5b3f24a 100644 +--- a/ucm2/AMD/acp3x-alc5682-max98357/acp3x-alc5682-max98357.conf ++++ b/ucm2/AMD/acp3x-alc5682-max98357/acp3x-alc5682-max98357.conf +@@ -66,7 +66,7 @@ If.found { + Empty "${var:Found}" + } + False.SectionUseCase."HiFi" { +- File "/AMD/acp3xalc5682m98/HiFi.conf" ++ File "HiFi.conf" + Comment "Default" + } + } +-- +2.49.0 + + +From ac64586ab4ad3a0f162af3ec8a196bfd3799c5c0 Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Fri, 25 Apr 2025 11:47:20 +0200 +Subject: [PATCH 02/24] USB-Audio: Remove useless sections for Solid State Labs + SSL 2+ + +Signed-off-by: Jaroslav Kysela +--- + ucm2/USB-Audio/SolidStateLabs/SSL2Plus-HiFi.conf | 8 -------- + 1 file changed, 8 deletions(-) + +diff --git a/ucm2/USB-Audio/SolidStateLabs/SSL2Plus-HiFi.conf b/ucm2/USB-Audio/SolidStateLabs/SSL2Plus-HiFi.conf +index d07e499..94e040f 100644 +--- a/ucm2/USB-Audio/SolidStateLabs/SSL2Plus-HiFi.conf ++++ b/ucm2/USB-Audio/SolidStateLabs/SSL2Plus-HiFi.conf +@@ -28,14 +28,6 @@ Macro [ + SectionDevice."Line1" { + Comment "Line Outputs 1/L + 2/R" + +- EnableSequence [ +- cdev "hw:${CardId}" +- ] +- +- DisableSequence [ +- cdev "hw:${CardId}" +- ] +- + Value { + PlaybackPriority 200 + } +-- +2.49.0 + + +From fc17ed4f991836bb92f288b8714ad7efe6c05926 Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Fri, 25 Apr 2025 11:53:11 +0200 +Subject: [PATCH 03/24] USB-Audio: Solid State Labs SSL 2+ - fix capture + channels + +It seems that there are 4 capture channels per report in issue #552: + + Capture: + Status: Stop + Interface 2 + Altset 1 + Format: S32_LE + Channels: 4 + Endpoint: 0x81 (1 IN) (ASYNC) + Rates: 44100, 48000, 88200, 96000, 176400, 192000 + Data packet interval: 125 us + Bits: 24 + Channel map: FL FR FC LFE + +Closes: https://github.com/alsa-project/alsa-ucm-conf/issues/552 +Signed-off-by: Jaroslav Kysela +--- + ucm2/USB-Audio/SolidStateLabs/SSL2Plus-HiFi.conf | 6 +++--- + ucm2/USB-Audio/SolidStateLabs/SSL2Plus.conf | 2 +- + 2 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/ucm2/USB-Audio/SolidStateLabs/SSL2Plus-HiFi.conf b/ucm2/USB-Audio/SolidStateLabs/SSL2Plus-HiFi.conf +index 94e040f..30160d3 100644 +--- a/ucm2/USB-Audio/SolidStateLabs/SSL2Plus-HiFi.conf ++++ b/ucm2/USB-Audio/SolidStateLabs/SSL2Plus-HiFi.conf +@@ -18,7 +18,7 @@ Macro [ + Name "ssl2plus_mono_in" + Direction Capture + Channels 1 +- HWChannels 2 ++ HWChannels 4 + HWChannelPos0 MONO + HWChannelPos1 MONO + } +@@ -70,7 +70,7 @@ SectionDevice."Mic1" { + Macro.pcm_split.SplitPCMDevice { + Name "ssl2plus_mono_in" + Direction Capture +- HWChannels 2 ++ HWChannels 4 + Channels 1 + Channel0 0 + ChannelPos0 MONO +@@ -86,7 +86,7 @@ SectionDevice."Mic2" { + Macro.pcm_split.SplitPCMDevice { + Name "ssl2plus_mono_in" + Direction Capture +- HWChannels 2 ++ HWChannels 4 + Channels 1 + Channel0 1 + ChannelPos0 MONO +diff --git a/ucm2/USB-Audio/SolidStateLabs/SSL2Plus.conf b/ucm2/USB-Audio/SolidStateLabs/SSL2Plus.conf +index 2ffe4c4..c886593 100644 +--- a/ucm2/USB-Audio/SolidStateLabs/SSL2Plus.conf ++++ b/ucm2/USB-Audio/SolidStateLabs/SSL2Plus.conf +@@ -6,6 +6,6 @@ SectionUseCase."HiFi" { + } + + Define.DirectPlaybackChannels 4 +-Define.DirectCaptureChannels 2 ++Define.DirectCaptureChannels 4 + + Include.dhw.File "/common/direct.conf" +-- +2.49.0 + + +From 6c2177e856ffa884929ba84de2ba379b80e054a3 Mon Sep 17 00:00:00 2001 +From: Konrad Dybcio +Date: Mon, 14 Apr 2025 20:47:38 +0200 +Subject: [PATCH 04/24] ucm2: Qualcomm: x1e80100: Also match DMI board name + +The Surface Laptop 7 only says "Microsoft Corporation" and "Surface" +in the board_vendor and product_family fields respectively. Add another +field to match on. + +Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/546 +Signed-off-by: Konrad Dybcio +Signed-off-by: Jaroslav Kysela +--- + ucm2/Qualcomm/x1e80100/x1e80100.conf | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/ucm2/Qualcomm/x1e80100/x1e80100.conf b/ucm2/Qualcomm/x1e80100/x1e80100.conf +index 3f89986..3eef4d4 100644 +--- a/ucm2/Qualcomm/x1e80100/x1e80100.conf ++++ b/ucm2/Qualcomm/x1e80100/x1e80100.conf +@@ -1,6 +1,6 @@ + Syntax 4 + +-Define.DMI_info "${sys:devices/virtual/dmi/id/board_vendor}-${sys:devices/virtual/dmi/id/product_family}" ++Define.DMI_info "${sys:devices/virtual/dmi/id/board_vendor}-${sys:devices/virtual/dmi/id/product_family}-${sys:devices/virtual/dmi/id/board_name}" + + If.LENOVOT14s { + Condition { +-- +2.49.0 + + +From c93b7c8cc3137180cf1e91af2dd212bbf604b66f Mon Sep 17 00:00:00 2001 +From: Konrad Dybcio +Date: Mon, 14 Apr 2025 20:47:38 +0200 +Subject: [PATCH 05/24] ucm2: Qualcomm: Add Surface Laptop 7 + +2 speakers, 2 dmics, combo jack, just like the T14s - reuse its +configuration + +Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/546 +Signed-off-by: Konrad Dybcio +Signed-off-by: Jaroslav Kysela +--- + ucm2/Qualcomm/x1e80100/x1e80100.conf | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/ucm2/Qualcomm/x1e80100/x1e80100.conf b/ucm2/Qualcomm/x1e80100/x1e80100.conf +index 3eef4d4..10faf5f 100644 +--- a/ucm2/Qualcomm/x1e80100/x1e80100.conf ++++ b/ucm2/Qualcomm/x1e80100/x1e80100.conf +@@ -6,7 +6,7 @@ If.LENOVOT14s { + Condition { + Type RegexMatch + String "${var:DMI_info}" +- Regex "LENOVO.*Think((Pad T14s Gen 6.*)|(Book 16 G7 QOY))|(HP.*Omnibook X.*)|(ASUSTeK COMPUTER.*ASUS Zenbook A14)" ++ Regex "LENOVO.*Think((Pad T14s Gen 6.*)|(Book 16 G7 QOY))|(HP.*Omnibook X.*)|(ASUSTeK COMPUTER.*ASUS Zenbook A14)|(Microsoft Corporation.*Surface.*Microsoft Surface Laptop, 7th Edition)" + } + True.Include.t14s.File "/Qualcomm/x1e80100/LENOVO-T14s.conf" + } +-- +2.49.0 + + +From 9105573b6cb71c4821d88e6eef0c4b2cfbb4ea61 Mon Sep 17 00:00:00 2001 +From: Svyatoslav Ryhel +Date: Sun, 27 Apr 2025 13:02:19 +0300 +Subject: [PATCH 06/24] tegra: max98089: fix cset names + +Adjust configs to match Linux kernel MAX98089 codec driver change. + +Fixes: 725570f9 ("ASoC: max98088: Remove duplicate DACs") + +Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/556 +Signed-off-by: Svyatoslav Ryhel +Signed-off-by: Jaroslav Kysela +--- + ucm2/Tegra/max98089/lge-x3-HiFi.conf | 24 +++++---------- + ucm2/Tegra/max98089/lge-x3-VoiceCall.conf | 36 ++++++++--------------- + ucm2/Tegra/max98089/lge-x3.conf | 6 ++-- + 3 files changed, 22 insertions(+), 44 deletions(-) + +diff --git a/ucm2/Tegra/max98089/lge-x3-HiFi.conf b/ucm2/Tegra/max98089/lge-x3-HiFi.conf +index 3738d72..d074b9f 100644 +--- a/ucm2/Tegra/max98089/lge-x3-HiFi.conf ++++ b/ucm2/Tegra/max98089/lge-x3-HiFi.conf +@@ -11,20 +11,16 @@ SectionDevice."Speaker" { + cset "name='Speaker Switch' on" + cset "name='Int Spk Switch' on" + +- cset "name='Left SPK Mixer Left DAC1 Switch' on" +- cset "name='Left SPK Mixer Left DAC2 Switch' on" +- cset "name='Left SPK Mixer Right DAC1 Switch' on" +- cset "name='Left SPK Mixer Right DAC2 Switch' on" ++ cset "name='Left SPK Mixer Left DAC Switch' on" ++ cset "name='Left SPK Mixer Right DAC Switch' on" + ] + + DisableSequence [ + cset "name='Speaker Switch' off" + cset "name='Int Spk Switch' off" + +- cset "name='Left SPK Mixer Left DAC1 Switch' off" +- cset "name='Left SPK Mixer Left DAC2 Switch' off" +- cset "name='Left SPK Mixer Right DAC1 Switch' off" +- cset "name='Left SPK Mixer Right DAC2 Switch' off" ++ cset "name='Left SPK Mixer Left DAC Switch' off" ++ cset "name='Left SPK Mixer Right DAC Switch' off" + ] + + Value { +@@ -46,19 +42,15 @@ SectionDevice."Headphones" { + EnableSequence [ + cset "name='Headphone Switch' on" + +- cset "name='Left HP Mixer Left DAC1 Switch' on" +- cset "name='Left HP Mixer Left DAC2 Switch' on" +- cset "name='Right HP Mixer Right DAC1 Switch' on" +- cset "name='Right HP Mixer Right DAC2 Switch' on" ++ cset "name='Left HP Mixer Left DAC Switch' on" ++ cset "name='Right HP Mixer Right DAC Switch' on" + ] + + DisableSequence [ + cset "name='Headphone Switch' off" + +- cset "name='Left HP Mixer Left DAC1 Switch' off" +- cset "name='Left HP Mixer Left DAC2 Switch' off" +- cset "name='Right HP Mixer Right DAC1 Switch' off" +- cset "name='Right HP Mixer Right DAC2 Switch' off" ++ cset "name='Left HP Mixer Left DAC Switch' off" ++ cset "name='Right HP Mixer Right DAC Switch' off" + ] + + Value { +diff --git a/ucm2/Tegra/max98089/lge-x3-VoiceCall.conf b/ucm2/Tegra/max98089/lge-x3-VoiceCall.conf +index 1634c7b..8e3a389 100644 +--- a/ucm2/Tegra/max98089/lge-x3-VoiceCall.conf ++++ b/ucm2/Tegra/max98089/lge-x3-VoiceCall.conf +@@ -11,20 +11,16 @@ SectionDevice."Speaker" { + cset "name='Speaker Switch' on" + cset "name='Int Spk Switch' on" + +- cset "name='Left SPK Mixer Left DAC1 Switch' on" +- cset "name='Left SPK Mixer Left DAC2 Switch' on" +- cset "name='Left SPK Mixer Right DAC1 Switch' on" +- cset "name='Left SPK Mixer Right DAC2 Switch' on" ++ cset "name='Left SPK Mixer Left DAC Switch' on" ++ cset "name='Left SPK Mixer Right DAC Switch' on" + ] + + DisableSequence [ + cset "name='Speaker Switch' off" + cset "name='Int Spk Switch' off" + +- cset "name='Left SPK Mixer Left DAC1 Switch' off" +- cset "name='Left SPK Mixer Left DAC2 Switch' off" +- cset "name='Left SPK Mixer Right DAC1 Switch' off" +- cset "name='Left SPK Mixer Right DAC2 Switch' off" ++ cset "name='Left SPK Mixer Left DAC Switch' off" ++ cset "name='Left SPK Mixer Right DAC Switch' off" + ] + + Value { +@@ -47,30 +43,22 @@ SectionDevice."Earpiece" { + cset "name='Receiver Switch' on" + cset "name='Earpiece Switch' on" + +- cset "name='Left REC Mixer Left DAC1 Switch' on" +- cset "name='Left REC Mixer Left DAC2 Switch' on" +- cset "name='Left REC Mixer Right DAC1 Switch' on" +- cset "name='Left REC Mixer Right DAC2 Switch' on" ++ cset "name='Left REC Mixer Left DAC Switch' on" ++ cset "name='Left REC Mixer Right DAC Switch' on" + +- cset "name='Right REC Mixer Left DAC1 Switch' on" +- cset "name='Right REC Mixer Left DAC2 Switch' on" +- cset "name='Right REC Mixer Right DAC1 Switch' on" +- cset "name='Right REC Mixer Right DAC2 Switch' on" ++ cset "name='Right REC Mixer Left DAC Switch' on" ++ cset "name='Right REC Mixer Right DAC Switch' on" + ] + + DisableSequence [ + cset "name='Receiver Switch' off" + cset "name='Earpiece Switch' off" + +- cset "name='Left REC Mixer Left DAC1 Switch' off" +- cset "name='Left REC Mixer Left DAC2 Switch' off" +- cset "name='Left REC Mixer Right DAC1 Switch' off" +- cset "name='Left REC Mixer Right DAC2 Switch' off" ++ cset "name='Left REC Mixer Left DAC Switch' off" ++ cset "name='Left REC Mixer Right DAC Switch' off" + +- cset "name='Right REC Mixer Left DAC1 Switch' off" +- cset "name='Right REC Mixer Left DAC2 Switch' off" +- cset "name='Right REC Mixer Right DAC1 Switch' off" +- cset "name='Right REC Mixer Right DAC2 Switch' off" ++ cset "name='Right REC Mixer Left DAC Switch' off" ++ cset "name='Right REC Mixer Right DAC Switch' off" + ] + + Value { +diff --git a/ucm2/Tegra/max98089/lge-x3.conf b/ucm2/Tegra/max98089/lge-x3.conf +index 9bea0cc..c90c4a1 100644 +--- a/ucm2/Tegra/max98089/lge-x3.conf ++++ b/ucm2/Tegra/max98089/lge-x3.conf +@@ -30,10 +30,8 @@ BootSequence [ + cset "name='Internal Mic 2 Switch' off" + cset "name='Mic Jack Switch' off" + +- cset "name='Right SPK Mixer Left DAC1 Switch' on" +- cset "name='Right SPK Mixer Left DAC2 Switch' on" +- cset "name='Right SPK Mixer Right DAC1 Switch' on" +- cset "name='Right SPK Mixer Right DAC2 Switch' on" ++ cset "name='Right SPK Mixer Left DAC Switch' on" ++ cset "name='Right SPK Mixer Right DAC Switch' on" + ] + + SectionUseCase."HiFi" { +-- +2.49.0 + + +From a1edaee761d301f7d010124599fd9f82c34fc7db Mon Sep 17 00:00:00 2001 +From: Markus Parviainen +Date: Sun, 27 Apr 2025 20:20:42 +0300 +Subject: [PATCH 07/24] Fix Presonus Revelator IO44 HWChannels count + +Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/557 +Signed-off-by: Markus Parviainen +Signed-off-by: Jaroslav Kysela +--- + ucm2/USB-Audio/Presonus/Revelator-IO-44-HiFi.conf | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/ucm2/USB-Audio/Presonus/Revelator-IO-44-HiFi.conf b/ucm2/USB-Audio/Presonus/Revelator-IO-44-HiFi.conf +index f223e08..6439613 100644 +--- a/ucm2/USB-Audio/Presonus/Revelator-IO-44-HiFi.conf ++++ b/ucm2/USB-Audio/Presonus/Revelator-IO-44-HiFi.conf +@@ -59,7 +59,7 @@ SectionDevice."Line1" { + Macro.pcm_split.SplitPCMDevice { + Name "revelator_stereo_out" + Direction Playback +- HWChannels 2 ++ HWChannels 6 + Channels 2 + Channel0 0 + Channel1 1 +@@ -78,7 +78,7 @@ SectionDevice."Line2" { + Macro.pcm_split.SplitPCMDevice { + Name "revelator_stereo_out" + Direction Playback +- HWChannels 2 ++ HWChannels 6 + Channels 2 + Channel0 2 + Channel1 3 +@@ -97,7 +97,7 @@ SectionDevice."Line3" { + Macro.pcm_split.SplitPCMDevice { + Name "revelator_stereo_out" + Direction Playback +- HWChannels 2 ++ HWChannels 6 + Channels 2 + Channel0 4 + Channel1 5 +-- +2.49.0 + + +From aa25928dd03299afc9bff994f06c37fc700bb8c0 Mon Sep 17 00:00:00 2001 +From: Johan Hovold +Date: Thu, 15 May 2025 15:06:56 +0200 +Subject: [PATCH 08/24] ucm2: Qualcomm: sc8280xp: fix internal microphones + device + +A recent change renamed the internal microphones device from "DMic01" to +"Mic", but the latter name is already used by the headset microphone so +this breaks the internal microphones on the Lenovo ThinkPad X13s. + +Rename the headset microphone device so that the names are unique and +fix up the jack hw mute property which is still using the old name. + +Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/563 +Fixes: ea7a065a7b50 ("ucm: fix SectionDevice identifiers") +Signed-off-by: Johan Hovold +Signed-off-by: Jaroslav Kysela +--- + ucm2/Qualcomm/sc8280xp/HiFi.conf | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/ucm2/Qualcomm/sc8280xp/HiFi.conf b/ucm2/Qualcomm/sc8280xp/HiFi.conf +index e20aa9c..916f1ee 100644 +--- a/ucm2/Qualcomm/sc8280xp/HiFi.conf ++++ b/ucm2/Qualcomm/sc8280xp/HiFi.conf +@@ -50,8 +50,8 @@ SectionDevice."Headphones" { + } + } + +-SectionDevice."Mic" { +- Comment "Mic" ++SectionDevice."Headset" { ++ Comment "Headset microphone" + + Include.wcdmice.File "/codecs/wcd938x/HeadphoneMicEnableSeq.conf" + Include.wcdmicd.File "/codecs/wcd938x/HeadphoneMicDisableSeq.conf" +@@ -63,12 +63,12 @@ SectionDevice."Mic" { + CapturePCM "hw:${CardId},2" + CaptureMixerElem "ADC2" + JackControl "Mic Jack" +- JackHWMute "DMic01" ++ JackHWMute "Mic" + } + } + + SectionDevice."Mic" { +- Comment "Microphone" ++ Comment "Internal microphones" + + Include.vadm0e.File "/codecs/qcom-lpass/va-macro/DMIC0EnableSeq.conf" + Include.vadm0d.File "/codecs/qcom-lpass/va-macro/DMIC0DisableSeq.conf" +-- +2.49.0 + + +From 88e1cd78633ea0ad46115ffe8779140fa91fd2f5 Mon Sep 17 00:00:00 2001 +From: Johan Hovold +Date: Thu, 15 May 2025 15:14:53 +0200 +Subject: [PATCH 09/24] ucm2: Qualcomm: sm8650: QRD: fix headset jack hw mute + +A recent change renamed the internal microphone devices but failed to +update the headset jack hw mute properties that are still using the old +names. + +Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/563 +Fixes: ea7a065a7b50 ("ucm: fix SectionDevice identifiers") +Signed-off-by: Johan Hovold +Signed-off-by: Jaroslav Kysela +--- + ucm2/Qualcomm/sm8650/QRD/HiFi.conf | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/ucm2/Qualcomm/sm8650/QRD/HiFi.conf b/ucm2/Qualcomm/sm8650/QRD/HiFi.conf +index 4336525..ca40c29 100644 +--- a/ucm2/Qualcomm/sm8650/QRD/HiFi.conf ++++ b/ucm2/Qualcomm/sm8650/QRD/HiFi.conf +@@ -77,8 +77,8 @@ SectionDevice."Headset" { + CapturePCM "hw:${CardId},2" + CaptureMixerElem "ADC2" + JackControl "Mic Jack" +- JackHWMute "Bottom" +- JackHWMute "Back" ++ JackHWMute "Mic1" ++ JackHWMute "Mic2" + } + } + +-- +2.49.0 + + +From bab88e0c31cee1c2603428c2ce6444aea343b646 Mon Sep 17 00:00:00 2001 +From: Johan Hovold +Date: Thu, 15 May 2025 15:17:02 +0200 +Subject: [PATCH 10/24] ucm2: tegra: max98090: fix headphones conflicting + device + +A recent change renames the speaker device but failed to update the +headphones conflicting device list. + +Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/563 +Fixes: ea7a065a7b50 ("ucm: fix SectionDevice identifiers") +Signed-off-by: Johan Hovold +Signed-off-by: Jaroslav Kysela +--- + ucm2/Tegra/max98090/HiFi.conf | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/ucm2/Tegra/max98090/HiFi.conf b/ucm2/Tegra/max98090/HiFi.conf +index d6e4e9d..5d4ef71 100644 +--- a/ucm2/Tegra/max98090/HiFi.conf ++++ b/ucm2/Tegra/max98090/HiFi.conf +@@ -33,7 +33,7 @@ SectionDevice."Headphones" { + Comment = "Headphones" + + ConflictingDevice [ +- "Speakers" ++ "Speaker" + ] + + EnableSequence [ +-- +2.49.0 + + +From 24d62b54d5ad6c7e6f9cff4cedcc334b1c98602f Mon Sep 17 00:00:00 2001 +From: Johan Hovold +Date: Thu, 15 May 2025 15:19:01 +0200 +Subject: [PATCH 11/24] ucm2: USB-Audio: Behringer: Flow8: fix conflicting + devices + +A recent change renamed the Line-56 and Line-78 devices but failed to +update the conflicting device lists. + +Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/563 +Fixes: ea7a065a7b50 ("ucm: fix SectionDevice identifiers") +Signed-off-by: Johan Hovold +Signed-off-by: Jaroslav Kysela +--- + ucm2/USB-Audio/Behringer/Flow8-Recording-Hifi.conf | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/ucm2/USB-Audio/Behringer/Flow8-Recording-Hifi.conf b/ucm2/USB-Audio/Behringer/Flow8-Recording-Hifi.conf +index 5dce19c..8ce7590 100644 +--- a/ucm2/USB-Audio/Behringer/Flow8-Recording-Hifi.conf ++++ b/ucm2/USB-Audio/Behringer/Flow8-Recording-Hifi.conf +@@ -157,7 +157,7 @@ SectionDevice."Line5" { + Comment "Line/Inst 5 (L)" + + ConflictingDevice [ +- "Line56" ++ "Line9" + ] + + Value { +@@ -177,7 +177,7 @@ SectionDevice."Line6" { + Comment "Line/Inst(HiZ) 6 (R)" + + ConflictingDevice [ +- "Line56" ++ "Line9" + ] + + Value { +@@ -197,7 +197,7 @@ SectionDevice."Line7" { + Comment "Line/Inst 7 (L)" + + ConflictingDevice [ +- "Line78" ++ "Line10" + ] + + Value { +@@ -217,7 +217,7 @@ SectionDevice."Line8" { + Comment "Line/Inst(HiZ) 8 (R)" + + ConflictingDevice [ +- "Line78" ++ "Line10" + ] + + Value { +-- +2.49.0 + + +From 1f816194a9feb2ce0c973ccc2a93551a6f641d77 Mon Sep 17 00:00:00 2001 +From: Hiago De Franco +Date: Mon, 12 May 2025 13:57:32 -0300 +Subject: [PATCH 12/24] ucm2: IO-Boards: Toradex: smarc: add support + +Add support for Toradex SMARC Development board, using the WM8904 audio +codec. + +This is a carrier board for the Toradex SMARC family, where any SMARC +SoM can be connected to it, therefore this is being added to the +IO-Boards instead of a specific hardware vendor. + +Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/562 +Signed-off-by: Hiago De Franco +Signed-off-by: Jaroslav Kysela +--- + ucm2/IO-Boards/Toradex/smarc/dev-HiFi.conf | 39 +++++++++++++++++++ + ucm2/IO-Boards/Toradex/smarc/dev.conf | 17 ++++++++ + ucm2/conf.d/simple-card/tdx-smarc-wm8904.conf | 1 + + 3 files changed, 57 insertions(+) + create mode 100644 ucm2/IO-Boards/Toradex/smarc/dev-HiFi.conf + create mode 100644 ucm2/IO-Boards/Toradex/smarc/dev.conf + create mode 120000 ucm2/conf.d/simple-card/tdx-smarc-wm8904.conf + +diff --git a/ucm2/IO-Boards/Toradex/smarc/dev-HiFi.conf b/ucm2/IO-Boards/Toradex/smarc/dev-HiFi.conf +new file mode 100644 +index 0000000..7d2dffc +--- /dev/null ++++ b/ucm2/IO-Boards/Toradex/smarc/dev-HiFi.conf +@@ -0,0 +1,39 @@ ++# Use case configuration for Toradex SMARC Development Carrier Board ++# This is a carrier board for the Toradex SMARC family, where any Toradex SMARC ++# SoM (with different SoCs as iMX8MP, iMX95...) can be connected to it. ++ ++SectionDevice."Headphones" { ++ Comment "Headphones" ++ ++ EnableSequence [ ++ cset "name='Headphone Switch' on" ++ ] ++ ++ DisableSequence [ ++ cset "name='Headphone Switch' off" ++ ] ++ ++ Value { ++ PlaybackPCM "hw:${CardId}" ++ PlaybackVolume "Headphone Volume" ++ PlaybackSwitch "Headphone Switch" ++ } ++} ++ ++SectionDevice."Mic" { ++ Comment "Microphone" ++ ++ EnableSequence [ ++ cset "name='Capture Switch' on" ++ ] ++ ++ DisableSequence [ ++ cset "name='Capture Switch' off" ++ ] ++ ++ Value { ++ CapturePCM "hw:${CardId}" ++ CaptureVolume "Capture Volume" ++ CaptureSwitch "Capture Switch" ++ } ++} +diff --git a/ucm2/IO-Boards/Toradex/smarc/dev.conf b/ucm2/IO-Boards/Toradex/smarc/dev.conf +new file mode 100644 +index 0000000..e795068 +--- /dev/null ++++ b/ucm2/IO-Boards/Toradex/smarc/dev.conf +@@ -0,0 +1,17 @@ ++# Use case configuration for Toradex SMARC Development Carrier Board ++# This is a carrier board for the Toradex SMARC family, where any Toradex SMARC ++# SoM (with different SoCs as iMX8MP, iMX95...) can be connected to it. ++ ++Syntax 4 ++ ++SectionUseCase."HiFi" { ++ File "/IO-Boards/Toradex/smarc/dev-HiFi.conf" ++ Comment "Default" ++} ++ ++BootSequence [ ++ cset "name='Headphone Volume' 50%" ++ cset "name='Left Capture Inverting Mux' 'IN1L'" ++ cset "name='Right Capture Inverting Mux' 'IN1R'" ++ cset "name='Capture Volume' 31" ++] +diff --git a/ucm2/conf.d/simple-card/tdx-smarc-wm8904.conf b/ucm2/conf.d/simple-card/tdx-smarc-wm8904.conf +new file mode 120000 +index 0000000..096f833 +--- /dev/null ++++ b/ucm2/conf.d/simple-card/tdx-smarc-wm8904.conf +@@ -0,0 +1 @@ ++../../IO-Boards/Toradex/smarc/dev.conf +\ No newline at end of file +-- +2.49.0 + + +From ac918f9b606f6bfe102c449997a1bcab01934db0 Mon Sep 17 00:00:00 2001 +From: Flo +Date: Sat, 24 May 2025 11:52:12 +0200 +Subject: [PATCH 13/24] USB-Audio: Solid State Labs SSL 2 - fix capture + channels + +Same fix as for SSL+, commit fc17ed4. +Capture configuration is the same, with 4 channels. + + Capture: + Status: Stop + Interface 2 + Altset 1 + Format: S32_LE + Channels: 4 + Endpoint: 0x81 (1 IN) (ASYNC) + Rates: 44100, 48000, 88200, 96000, 176400, 192000 + Data packet interval: 125 us + Bits: 24 + Channel map: FL FR FC LFE + +Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/566 +Signed-off-by: Flo +Signed-off-by: Jaroslav Kysela +--- + ucm2/USB-Audio/SolidStateLabs/SSL2-HiFi.conf | 6 +++--- + ucm2/USB-Audio/SolidStateLabs/SSL2.conf | 2 +- + 2 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/ucm2/USB-Audio/SolidStateLabs/SSL2-HiFi.conf b/ucm2/USB-Audio/SolidStateLabs/SSL2-HiFi.conf +index 46b2e26..8663384 100644 +--- a/ucm2/USB-Audio/SolidStateLabs/SSL2-HiFi.conf ++++ b/ucm2/USB-Audio/SolidStateLabs/SSL2-HiFi.conf +@@ -6,7 +6,7 @@ Macro [ + Name "ssl2_mono_in" + Direction Capture + Channels 1 +- HWChannels 2 ++ HWChannels 4 + HWChannelPos0 MONO + HWChannelPos1 MONO + } +@@ -31,7 +31,7 @@ SectionDevice."Mic1" { + Macro.pcm_split.SplitPCMDevice { + Name "ssl2_mono_in" + Direction Capture +- HWChannels 2 ++ HWChannels 4 + Channels 1 + Channel0 0 + ChannelPos0 MONO +@@ -47,7 +47,7 @@ SectionDevice."Mic2" { + Macro.pcm_split.SplitPCMDevice { + Name "ssl2_mono_in" + Direction Capture +- HWChannels 2 ++ HWChannels 4 + Channels 1 + Channel0 1 + ChannelPos0 MONO +diff --git a/ucm2/USB-Audio/SolidStateLabs/SSL2.conf b/ucm2/USB-Audio/SolidStateLabs/SSL2.conf +index 5531834..3cdb60b 100644 +--- a/ucm2/USB-Audio/SolidStateLabs/SSL2.conf ++++ b/ucm2/USB-Audio/SolidStateLabs/SSL2.conf +@@ -6,6 +6,6 @@ SectionUseCase."HiFi" { + } + + Define.DirectPlaybackChannels 2 +-Define.DirectCaptureChannels 2 ++Define.DirectCaptureChannels 4 + + Include.dhw.File "/common/direct.conf" +-- +2.49.0 + + +From 421e37bae75efc1fc134fbc84bc301f041aaff3b Mon Sep 17 00:00:00 2001 +From: Craig McLure +Date: Tue, 6 May 2025 18:40:47 +0100 +Subject: [PATCH 14/24] USB-Audio: Added Beacn Mic and Studio Support + +Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/558 +Signed-off-by: Craig McLure +Signed-off-by: Jaroslav Kysela +--- + ucm2/USB-Audio/Beacn/Beacn-Mic-HiFi.conf | 63 ++++++ + ucm2/USB-Audio/Beacn/Beacn-Mic.conf | 11 ++ + .../Beacn/Beacn-Studio-USB1-Channels.conf | 41 ++++ + .../Beacn/Beacn-Studio-USB1-HiFi.conf | 35 ++++ + .../Beacn/Beacn-Studio-USB1-Link-HiFi.conf | 179 ++++++++++++++++++ + .../Beacn/Beacn-Studio-USB2-HiFi.conf | 175 +++++++++++++++++ + ucm2/USB-Audio/Beacn/Beacn-Studio.conf | 42 ++++ + ucm2/USB-Audio/USB-Audio.conf | 16 ++ + 8 files changed, 562 insertions(+) + create mode 100644 ucm2/USB-Audio/Beacn/Beacn-Mic-HiFi.conf + create mode 100644 ucm2/USB-Audio/Beacn/Beacn-Mic.conf + create mode 100644 ucm2/USB-Audio/Beacn/Beacn-Studio-USB1-Channels.conf + create mode 100644 ucm2/USB-Audio/Beacn/Beacn-Studio-USB1-HiFi.conf + create mode 100644 ucm2/USB-Audio/Beacn/Beacn-Studio-USB1-Link-HiFi.conf + create mode 100644 ucm2/USB-Audio/Beacn/Beacn-Studio-USB2-HiFi.conf + create mode 100644 ucm2/USB-Audio/Beacn/Beacn-Studio.conf + +diff --git a/ucm2/USB-Audio/Beacn/Beacn-Mic-HiFi.conf b/ucm2/USB-Audio/Beacn/Beacn-Mic-HiFi.conf +new file mode 100644 +index 0000000..2445531 +--- /dev/null ++++ b/ucm2/USB-Audio/Beacn/Beacn-Mic-HiFi.conf +@@ -0,0 +1,63 @@ ++Include.pcm_split.File "/common/pcm/split.conf" ++ ++Macro [ ++ { ++ SplitPCM { ++ Name "beacn_mic_stereo_out" ++ Direction Playback ++ Channels 2 ++ HWChannels 3 ++ HWChannelPos0 FL ++ HWChannelPos1 FR ++ HWChannelPos2 MONO ++ } ++ } ++ { ++ SplitPCM { ++ Name "beacn_mic_stereo_in" ++ Direction Capture ++ Channels 2 ++ HWChannels 4 ++ HWChannelPos0 FL ++ HWChannelPos1 FR ++ HWChannelPos2 MONO # Dry Mic ++ HWChannelPos3 MONO # Dry + Expander ++ } ++ } ++] ++ ++SectionDevice."Headphones" { ++ Comment "Headphones" ++ ++ Value { ++ PlaybackPriority 200 ++ } ++ Macro.pcm_split.SplitPCMDevice { ++ Name "beacn_mic_stereo_out" ++ Direction Playback ++ HWChannels 3 ++ Channels 2 ++ Channel0 0 ++ Channel1 1 ++ ChannelPos0 FL ++ ChannelPos1 FR ++ } ++} ++ ++SectionDevice."Mic" { ++ Comment "Microphone" ++ ++ Value { ++ CapturePriority 200 ++ } ++ Macro.pcm_split.SplitPCMDevice { ++ Name "beacn_mic_stereo_in" ++ Direction Capture ++ HWChannels 4 ++ Channels 2 ++ Channel0 0 ++ Channel1 1 ++ ChannelPos0 FL ++ ChannelPos1 FR ++ } ++} +diff --git a/ucm2/USB-Audio/Beacn/Beacn-Mic.conf b/ucm2/USB-Audio/Beacn/Beacn-Mic.conf +new file mode 100644 +index 0000000..95c6f81 +--- /dev/null ++++ b/ucm2/USB-Audio/Beacn/Beacn-Mic.conf +@@ -0,0 +1,11 @@ ++Comment "Beacn Mic USB" ++ ++SectionUseCase."HiFi" { ++ Comment "Default Alsa Profile" ++ File "/USB-Audio/Beacn/Beacn-Mic-HiFi.conf" ++} ++ ++Define.DirectPlaybackChannels 3 ++Define.DirectCaptureChannels 4 ++ ++Include.dhw.File "/common/direct.conf" +diff --git a/ucm2/USB-Audio/Beacn/Beacn-Studio-USB1-Channels.conf b/ucm2/USB-Audio/Beacn/Beacn-Studio-USB1-Channels.conf +new file mode 100644 +index 0000000..b9886f4 +--- /dev/null ++++ b/ucm2/USB-Audio/Beacn/Beacn-Studio-USB1-Channels.conf +@@ -0,0 +1,41 @@ ++Include.pcm_split.File "/common/pcm/split.conf" ++ ++Macro.playback.SplitPCM { ++ Name "beacn_studio_stereo_out" ++ Direction Playback ++ Channels 2 ++ HWChannels 11 ++ HWChannelPos0 FL # Headphone Left ++ HWChannelPos1 FR # Headphone Right ++ HWChannelPos2 MONO # Unused Channel ++ HWChannelPos3 FL # Link 1 Out Left ++ HWChannelPos4 FR # Link 1 Out Right ++ HWChannelPos5 FL # Link 2 Out Left ++ HWChannelPos6 FR # Link 2 Out Right ++ HWChannelPos7 FL # Link 3 Out Left ++ HWChannelPos8 FR # Link 3 Out Right ++ HWChannelPos9 FL # Link 4 Out Left ++ HWChannelPos10 FR # Link 4 Out Right ++} ++ ++Macro.capture.SplitPCM { ++ Name "beacn_studio_stereo_in" ++ Direction Capture ++ Channels 2 ++ HWChannels 12 ++ ++ HWChannelPos0 FL # Microphone Left ++ HWChannelPos1 FR # Microphone Right ++ ++ HWChannelPos2 MONO # UNKNOWN (Possible Dry Mic) ++ HWChannelPos3 MONO # UNKNOWN (Possible Dry + Expander) ++ ++ HWChannelPos4 FL # Link 1 In Left ++ HWChannelPos5 FR # Link 1 In Right ++ HWChannelPos6 FL # Link 2 In Left ++ HWChannelPos7 FR # Link 2 In Right ++ HWChannelPos8 FL # Link 3 In Left ++ HWChannelPos9 FR # Link 3 In Right ++ HWChannelPos10 FL # Link 4 In Left ++ HWChannelPos11 FR # Link 4 In Right ++} +diff --git a/ucm2/USB-Audio/Beacn/Beacn-Studio-USB1-HiFi.conf b/ucm2/USB-Audio/Beacn/Beacn-Studio-USB1-HiFi.conf +new file mode 100644 +index 0000000..8c90d5b +--- /dev/null ++++ b/ucm2/USB-Audio/Beacn/Beacn-Studio-USB1-HiFi.conf +@@ -0,0 +1,35 @@ ++SectionDevice."Headphones" { ++ Comment "Headphones" ++ ++ Value { ++ PlaybackPriority 100 ++ } ++ Macro.pcm_split.SplitPCMDevice { ++ Name "beacn_studio_stereo_out" ++ Direction Playback ++ HWChannels 11 ++ Channels 2 ++ Channel0 0 ++ Channel1 1 ++ ChannelPos0 FL ++ ChannelPos1 FR ++ } ++} ++ ++SectionDevice."Mic" { ++ Comment "Microphone" ++ ++ Value { ++ CapturePriority 100 ++ } ++ Macro.pcm_split.SplitPCMDevice { ++ Name "beacn_studio_stereo_in" ++ Direction Capture ++ HWChannels 12 ++ Channels 2 ++ Channel0 0 ++ Channel1 1 ++ ChannelPos0 FL ++ ChannelPos1 FR ++ } ++} +diff --git a/ucm2/USB-Audio/Beacn/Beacn-Studio-USB1-Link-HiFi.conf b/ucm2/USB-Audio/Beacn/Beacn-Studio-USB1-Link-HiFi.conf +new file mode 100644 +index 0000000..74ff142 +--- /dev/null ++++ b/ucm2/USB-Audio/Beacn/Beacn-Studio-USB1-Link-HiFi.conf +@@ -0,0 +1,179 @@ ++SectionDevice."Line1" { ++ Comment "Link 4" ++ ++ Value { ++ PlaybackPriority 400 ++ } ++ Macro.pcm_split.SplitPCMDevice { ++ Name "beacn_studio_stereo_out" ++ Direction Playback ++ HWChannels 11 ++ Channels 2 ++ Channel0 9 ++ Channel1 10 ++ ChannelPos0 FL ++ ChannelPos1 FR ++ } ++} ++ ++SectionDevice."Line2" { ++ Comment "Link 3" ++ ++ Value { ++ PlaybackPriority 400 ++ } ++ Macro.pcm_split.SplitPCMDevice { ++ Name "beacn_studio_stereo_out" ++ Direction Playback ++ HWChannels 11 ++ Channels 2 ++ Channel0 7 ++ Channel1 8 ++ ChannelPos0 FL ++ ChannelPos1 FR ++ } ++} ++ ++SectionDevice."Line3" { ++ Comment "Link 2" ++ ++ Value { ++ PlaybackPriority 400 ++ } ++ Macro.pcm_split.SplitPCMDevice { ++ Name "beacn_studio_stereo_out" ++ Direction Playback ++ HWChannels 11 ++ Channels 2 ++ Channel0 5 ++ Channel1 6 ++ ChannelPos0 FL ++ ChannelPos1 FR ++ } ++} ++ ++SectionDevice."Line4" { ++ Comment "Link 1" ++ ++ Value { ++ PlaybackPriority 400 ++ } ++ Macro.pcm_split.SplitPCMDevice { ++ Name "beacn_studio_stereo_out" ++ Direction Playback ++ HWChannels 11 ++ Channels 2 ++ Channel0 3 ++ Channel1 4 ++ ChannelPos0 FL ++ ChannelPos1 FR ++ } ++} ++ ++SectionDevice."Headphones" { ++ Comment "Headphones" ++ ++ Value { ++ PlaybackPriority 100 ++ } ++ Macro.pcm_split.SplitPCMDevice { ++ Name "beacn_studio_stereo_out" ++ Direction Playback ++ HWChannels 11 ++ Channels 2 ++ Channel0 0 ++ Channel1 1 ++ ChannelPos0 FL ++ ChannelPos1 FR ++ } ++} ++ ++SectionDevice."Line5" { ++ Comment "Link 4" ++ ++ Value { ++ PlaybackPriority 400 ++ } ++ Macro.pcm_split.SplitPCMDevice { ++ Name "beacn_studio_stereo_in" ++ Direction Capture ++ HWChannels 12 ++ Channels 2 ++ Channel0 10 ++ Channel1 11 ++ ChannelPos0 FL ++ ChannelPos1 FR ++ } ++} ++ ++SectionDevice."Line6" { ++ Comment "Link 3" ++ ++ Value { ++ PlaybackPriority 400 ++ } ++ Macro.pcm_split.SplitPCMDevice { ++ Name "beacn_studio_stereo_in" ++ Direction Capture ++ HWChannels 12 ++ Channels 2 ++ Channel0 8 ++ Channel1 9 ++ ChannelPos0 FL ++ ChannelPos1 FR ++ } ++} ++ ++SectionDevice."Line7" { ++ Comment "Link 2" ++ ++ Value { ++ PlaybackPriority 400 ++ } ++ Macro.pcm_split.SplitPCMDevice { ++ Name "beacn_studio_stereo_in" ++ Direction Capture ++ HWChannels 12 ++ Channels 2 ++ Channel0 6 ++ Channel1 7 ++ ChannelPos0 FL ++ ChannelPos1 FR ++ } ++} ++ ++SectionDevice."Line8" { ++ Comment "Link 1" ++ ++ Value { ++ PlaybackPriority 400 ++ } ++ Macro.pcm_split.SplitPCMDevice { ++ Name "beacn_studio_stereo_in" ++ Direction Capture ++ HWChannels 12 ++ Channels 2 ++ Channel0 4 ++ Channel1 5 ++ ChannelPos0 FL ++ ChannelPos1 FR ++ } ++} ++ ++SectionDevice."Mic" { ++ Comment "Microphone" ++ ++ Value { ++ CapturePriority 100 ++ } ++ Macro.pcm_split.SplitPCMDevice { ++ Name "beacn_studio_stereo_in" ++ Direction Capture ++ HWChannels 12 ++ Channels 2 ++ Channel0 0 ++ Channel1 1 ++ ChannelPos0 FL ++ ChannelPos1 FR ++ } ++} +diff --git a/ucm2/USB-Audio/Beacn/Beacn-Studio-USB2-HiFi.conf b/ucm2/USB-Audio/Beacn/Beacn-Studio-USB2-HiFi.conf +new file mode 100644 +index 0000000..5988d41 +--- /dev/null ++++ b/ucm2/USB-Audio/Beacn/Beacn-Studio-USB2-HiFi.conf +@@ -0,0 +1,175 @@ ++Include.pcm_split.File "/common/pcm/split.conf" ++ ++Macro.playback.SplitPCM { ++ Name "beacn_studio_stereo_out" ++ Direction Playback ++ Channels 2 ++ HWChannels 8 ++ HWChannelPos0 FL ++ HWChannelPos1 FR ++ HWChannelPos2 FL ++ HWChannelPos3 FR ++ HWChannelPos4 FL ++ HWChannelPos5 FR ++ HWChannelPos6 FL ++ HWChannelPos7 FR ++} ++ ++Macro.capture.SplitPCM { ++ Name "beacn_studio_stereo_in" ++ Direction Capture ++ Channels 2 ++ HWChannels 8 ++ HWChannelPos0 FL ++ HWChannelPos1 FR ++ HWChannelPos2 FL ++ HWChannelPos3 FR ++ HWChannelPos4 FL ++ HWChannelPos5 FR ++ HWChannelPos6 FL ++ HWChannelPos7 FR ++} ++ ++SectionDevice."Line1" { ++ Comment "Link 4" ++ ++ Value { ++ PlaybackPriority 400 ++ } ++ Macro.pcm_split.SplitPCMDevice { ++ Name "beacn_studio_stereo_out" ++ Direction Playback ++ HWChannels 8 ++ Channels 2 ++ Channel0 6 ++ Channel1 7 ++ ChannelPos0 FL ++ ChannelPos1 FR ++ } ++} ++ ++SectionDevice."Line2" { ++ Comment "Link 3" ++ ++ Value { ++ PlaybackPriority 400 ++ } ++ Macro.pcm_split.SplitPCMDevice { ++ Name "beacn_studio_stereo_out" ++ Direction Playback ++ HWChannels 8 ++ Channels 2 ++ Channel0 4 ++ Channel1 5 ++ ChannelPos0 FL ++ ChannelPos1 FR ++ } ++} ++ ++SectionDevice."Line3" { ++ Comment "Link 2" ++ ++ Value { ++ PlaybackPriority 400 ++ } ++ Macro.pcm_split.SplitPCMDevice { ++ Name "beacn_studio_stereo_out" ++ Direction Playback ++ HWChannels 8 ++ Channels 2 ++ Channel0 2 ++ Channel1 3 ++ ChannelPos0 FL ++ ChannelPos1 FR ++ } ++} ++ ++SectionDevice."Line4" { ++ Comment "Link 1" ++ ++ Value { ++ PlaybackPriority 400 ++ } ++ Macro.pcm_split.SplitPCMDevice { ++ Name "beacn_studio_stereo_out" ++ Direction Playback ++ HWChannels 8 ++ Channels 2 ++ Channel0 0 ++ Channel1 1 ++ ChannelPos0 FL ++ ChannelPos1 FR ++ } ++} ++ ++SectionDevice."Line5" { ++ Comment "Link 4" ++ ++ Value { ++ PlaybackPriority 400 ++ } ++ Macro.pcm_split.SplitPCMDevice { ++ Name "beacn_studio_stereo_in" ++ Direction Capture ++ HWChannels 8 ++ Channels 2 ++ Channel0 6 ++ Channel1 7 ++ ChannelPos0 FL ++ ChannelPos1 FR ++ } ++} ++ ++SectionDevice."Line6" { ++ Comment "Link 3" ++ ++ Value { ++ PlaybackPriority 400 ++ } ++ Macro.pcm_split.SplitPCMDevice { ++ Name "beacn_studio_stereo_in" ++ Direction Capture ++ HWChannels 8 ++ Channels 2 ++ Channel0 4 ++ Channel1 5 ++ ChannelPos0 FL ++ ChannelPos1 FR ++ } ++} ++ ++SectionDevice."Line7" { ++ Comment "Link 2" ++ ++ Value { ++ PlaybackPriority 400 ++ } ++ Macro.pcm_split.SplitPCMDevice { ++ Name "beacn_studio_stereo_in" ++ Direction Capture ++ HWChannels 8 ++ Channels 2 ++ Channel0 2 ++ Channel1 3 ++ ChannelPos0 FL ++ ChannelPos1 FR ++ } ++} ++ ++SectionDevice."Line8" { ++ Comment "Link 1" ++ ++ Value { ++ PlaybackPriority 400 ++ } ++ Macro.pcm_split.SplitPCMDevice { ++ Name "beacn_studio_stereo_in" ++ Direction Capture ++ HWChannels 8 ++ Channels 2 ++ Channel0 0 ++ Channel1 1 ++ ChannelPos0 FL ++ ChannelPos1 FR ++ } ++} +diff --git a/ucm2/USB-Audio/Beacn/Beacn-Studio.conf b/ucm2/USB-Audio/Beacn/Beacn-Studio.conf +new file mode 100644 +index 0000000..1b3adc0 +--- /dev/null ++++ b/ucm2/USB-Audio/Beacn/Beacn-Studio.conf +@@ -0,0 +1,42 @@ ++# The Beacn Studio has two USB ports which both present different PIDs, so we do ++# individual checks, and load the appropriate configs for the port connected. ++ ++Comment "Beacn Studio USB" ++If.usb1 { ++ Condition { ++ Type String ++ Haystack "${CardComponents}" ++ Needle "USB33ae:0003" ++ } ++ True { ++ # Channel configuration is common between all the profiles, so we'll include it here ++ Include.pcm_split.File "/USB-Audio/Beacn/Beacn-Studio-USB1-Channels.conf" ++ ++ # If the user isn't using the 'Dual PC' feature of the Beacn Studio, there isn't really ++ # much point presenting them with an additional 4 unusable inputs and outputs, so we'll ++ # offer two profile options so those channels can be hidden. ++ SectionUseCase."Basic" { ++ Comment "Beacn Studio" ++ File "/USB-Audio/Beacn/Beacn-Studio-USB1-HiFi.conf" ++ } ++ ++ SectionUseCase."Link" { ++ Comment "Beacn Studio with Link" ++ File "/USB-Audio/Beacn/Beacn-Studio-USB1-Link-HiFi.conf" ++ } ++ } ++} ++ ++If.usb2 { ++ Condition { ++ Type String ++ Haystack "${CardComponents}" ++ Needle "USB33ae:4003" ++ } ++ True { ++ SectionUseCase."Link" { ++ Comment "Beacn Studio Link" ++ File "/USB-Audio/Beacn/Beacn-Studio-USB2-HiFi.conf" ++ } ++ } ++} +diff --git a/ucm2/USB-Audio/USB-Audio.conf b/ucm2/USB-Audio/USB-Audio.conf +index fe2cd46..d90db39 100644 +--- a/ucm2/USB-Audio/USB-Audio.conf ++++ b/ucm2/USB-Audio/USB-Audio.conf +@@ -541,7 +541,23 @@ If.ssl2plus { + ProfileName "SolidStateLabs/SSL2Plus" + } + } ++If.beacn-mic { ++ Condition { ++ Type String ++ Haystack "${CardComponents}" ++ Needle "USB33ae:0001" ++ } ++ True.Define.ProfileName "Beacn/Beacn-Mic" ++} + ++If.beacn-studio { ++ Condition { ++ Type RegexMatch ++ String "${CardComponents}" ++ Regex "USB33ae:[04]003" ++ } ++ True.Define.ProfileName "Beacn/Beacn-Studio" ++} + If.mixremap { + Condition { + Type String +-- +2.49.0 + + +From e055d16bdf971e26c3d92d998bccb2ca4e4f3c1a Mon Sep 17 00:00:00 2001 +From: binarycraft007 +Date: Mon, 2 Jun 2025 13:41:38 +0800 +Subject: [PATCH 15/24] ucm2: Qualcomm: add ASUS Vivobook S 15 support + +S15 supports: + - 2 speakers. + - 2 dmics + - headset with mic. + +This patch adds support to all these, however only speakers, dmic and +headset playback is tested. + +Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/570 +Signed-off-by: binarycraft007 +Signed-off-by: Jaroslav Kysela +--- + ucm2/Qualcomm/x1e80100/x1e80100.conf | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/ucm2/Qualcomm/x1e80100/x1e80100.conf b/ucm2/Qualcomm/x1e80100/x1e80100.conf +index 10faf5f..ecbb13d 100644 +--- a/ucm2/Qualcomm/x1e80100/x1e80100.conf ++++ b/ucm2/Qualcomm/x1e80100/x1e80100.conf +@@ -6,7 +6,7 @@ If.LENOVOT14s { + Condition { + Type RegexMatch + String "${var:DMI_info}" +- Regex "LENOVO.*Think((Pad T14s Gen 6.*)|(Book 16 G7 QOY))|(HP.*Omnibook X.*)|(ASUSTeK COMPUTER.*ASUS Zenbook A14)|(Microsoft Corporation.*Surface.*Microsoft Surface Laptop, 7th Edition)" ++ Regex "LENOVO.*Think((Pad T14s Gen 6.*)|(Book 16 G7 QOY))|(HP.*Omnibook X.*)|ASUSTeK COMPUTER.*ASUS (Zenbook A14|Vivobook S 15)|(Microsoft Corporation.*Surface.*Microsoft Surface Laptop, 7th Edition)" + } + True.Include.t14s.File "/Qualcomm/x1e80100/LENOVO-T14s.conf" + } +-- +2.49.0 + + +From 59d53fd9cac27e9a05623251aefa6d06da94260c Mon Sep 17 00:00:00 2001 +From: Craig McLure +Date: Wed, 4 Jun 2025 23:25:51 +0100 +Subject: [PATCH 16/24] Changed 'Stream Mix' channel names to match the latest + Window release + +Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/572 +Signed-off-by: Craig McLure +Signed-off-by: Jaroslav Kysela +--- + ucm2/USB-Audio/GoXLR/GoXLR-HiFi.conf | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/ucm2/USB-Audio/GoXLR/GoXLR-HiFi.conf b/ucm2/USB-Audio/GoXLR/GoXLR-HiFi.conf +index 6614b00..17c6580 100644 +--- a/ucm2/USB-Audio/GoXLR/GoXLR-HiFi.conf ++++ b/ucm2/USB-Audio/GoXLR/GoXLR-HiFi.conf +@@ -140,7 +140,7 @@ SectionDevice."Line3" { + } + + SectionDevice."Line4" { +- Comment "Broadcast Stream Mix" ++ Comment "Stream Mix 1" + + Value { + CapturePriority 200 +@@ -200,7 +200,7 @@ If.mix2 { + String2 "25" + } + True.SectionDevice."Line6" { +- Comment "Broadcast Stream Mix 2" ++ Comment "Stream Mix 2" + + Value { + CapturePriority 200 +-- +2.49.0 + + +From bd5cf3839f902b67a355669fdf1bd3231e0cb4c1 Mon Sep 17 00:00:00 2001 +From: Mohammad Rafi Shaik +Date: Mon, 9 Jun 2025 20:52:42 +0530 +Subject: [PATCH 17/24] Qualcomm: Add QCS9075-IQ-EVK HiFi config + +Add UCM2 configs for the Qualcomm QCS9075-IQ-EVK Board to handle: + - I2S Speaker Amplifier + - I2S Mic + +Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/576 +Signed-off-by: Mohammad Rafi Shaik +Signed-off-by: Jaroslav Kysela +--- + .../qcs9075/qcs9075-iq-evk-snd-card/HiFi.conf | 29 +++++++++++++++++++ + .../qcs9075-iq-evk-snd-card.conf | 6 ++++ + .../qcs9075/qcs9075-iq-evk-snd-card.conf | 6 ++++ + 3 files changed, 41 insertions(+) + create mode 100644 ucm2/Qualcomm/qcs9075/qcs9075-iq-evk-snd-card/HiFi.conf + create mode 100644 ucm2/Qualcomm/qcs9075/qcs9075-iq-evk-snd-card/qcs9075-iq-evk-snd-card.conf + create mode 100644 ucm2/conf.d/qcs9075/qcs9075-iq-evk-snd-card.conf + +diff --git a/ucm2/Qualcomm/qcs9075/qcs9075-iq-evk-snd-card/HiFi.conf b/ucm2/Qualcomm/qcs9075/qcs9075-iq-evk-snd-card/HiFi.conf +new file mode 100644 +index 0000000..6673324 +--- /dev/null ++++ b/ucm2/Qualcomm/qcs9075/qcs9075-iq-evk-snd-card/HiFi.conf +@@ -0,0 +1,29 @@ ++SectionVerb { ++ Value { ++ TQ "HiFi" ++ } ++ EnableSequence [ ++ cset "name='PRIMARY_SDR_MI2S_RX Audio Mixer MULTIMEDIA0' 1" ++ cset "name='MULTIMEDIA1 Audio Mixer TERTIARY_SDR_MI2S_TX' 1" ++ ] ++} ++ ++SectionDevice."Speaker" { ++ Comment "Speaker playback" ++ ++ Value { ++ PlaybackPriority 100 ++ PlaybackPCM "hw:${CardId},0" ++ PlaybackMixer "default:${CardId}" ++ PlaybackMixerElem "Speakers" ++ } ++} ++ ++SectionDevice."Mic" { ++ Comment "Mic" ++ ++ Value { ++ CapturePriority 100 ++ CapturePCM "hw:${CardId},1" ++ } ++} +diff --git a/ucm2/Qualcomm/qcs9075/qcs9075-iq-evk-snd-card/qcs9075-iq-evk-snd-card.conf b/ucm2/Qualcomm/qcs9075/qcs9075-iq-evk-snd-card/qcs9075-iq-evk-snd-card.conf +new file mode 100644 +index 0000000..669ba6b +--- /dev/null ++++ b/ucm2/Qualcomm/qcs9075/qcs9075-iq-evk-snd-card/qcs9075-iq-evk-snd-card.conf +@@ -0,0 +1,6 @@ ++Syntax 4 ++ ++SectionUseCase."HiFi" { ++ File "/Qualcomm/qcs9075/qcs9075-iq-evk-snd-card/HiFi.conf" ++ Comment "HiFi quality Music" ++} +diff --git a/ucm2/conf.d/qcs9075/qcs9075-iq-evk-snd-card.conf b/ucm2/conf.d/qcs9075/qcs9075-iq-evk-snd-card.conf +new file mode 100644 +index 0000000..1e49d38 +--- /dev/null ++++ b/ucm2/conf.d/qcs9075/qcs9075-iq-evk-snd-card.conf +@@ -0,0 +1,6 @@ ++Syntax 4 ++ ++SectionUseCase."HiFi" { ++ File "/Qualcomm/qcs9075/qcs9075-iq-evk-snd-card/HiFi.conf" ++ Comment "HiFi quality Music." ++} +-- +2.49.0 + + +From e7ec0f1ac3eebfa04e18a944d511bbb5fa57239d Mon Sep 17 00:00:00 2001 +From: Mohammad Rafi Shaik +Date: Tue, 10 Jun 2025 16:46:59 +0530 +Subject: [PATCH 18/24] ucm2: Qualcomm: Update the QCM6490 and QCS6490 hifi + conf files + +Rename the HiFi conf files for QCM6490-IDP and QCS6490-RB3Gen2 boards +to match with soundcard name. + +Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/577 +Signed-off-by: Mohammad Rafi Shaik +Signed-off-by: Jaroslav Kysela +--- + .../QCM6490-IDP/{QCM6490-IDP.conf => qcm6490-idp-snd-card.conf} | 0 + .../{QCS6490-RB3Gen2.conf => qcs6490-rb3gen2-snd-card.conf} | 0 + .../qcm6490/{QCM6490-IDP.conf => qcm6490-idp-snd-card.conf} | 0 + .../{QCS6490-RB3Gen2.conf => qcs6490-rb3gen2-snd-card.conf} | 0 + 4 files changed, 0 insertions(+), 0 deletions(-) + rename ucm2/Qualcomm/qcm6490/QCM6490-IDP/{QCM6490-IDP.conf => qcm6490-idp-snd-card.conf} (100%) + rename ucm2/Qualcomm/qcs6490/QCS6490-RB3Gen2/{QCS6490-RB3Gen2.conf => qcs6490-rb3gen2-snd-card.conf} (100%) + rename ucm2/conf.d/qcm6490/{QCM6490-IDP.conf => qcm6490-idp-snd-card.conf} (100%) + rename ucm2/conf.d/qcs6490/{QCS6490-RB3Gen2.conf => qcs6490-rb3gen2-snd-card.conf} (100%) + +diff --git a/ucm2/Qualcomm/qcm6490/QCM6490-IDP/QCM6490-IDP.conf b/ucm2/Qualcomm/qcm6490/QCM6490-IDP/qcm6490-idp-snd-card.conf +similarity index 100% +rename from ucm2/Qualcomm/qcm6490/QCM6490-IDP/QCM6490-IDP.conf +rename to ucm2/Qualcomm/qcm6490/QCM6490-IDP/qcm6490-idp-snd-card.conf +diff --git a/ucm2/Qualcomm/qcs6490/QCS6490-RB3Gen2/QCS6490-RB3Gen2.conf b/ucm2/Qualcomm/qcs6490/QCS6490-RB3Gen2/qcs6490-rb3gen2-snd-card.conf +similarity index 100% +rename from ucm2/Qualcomm/qcs6490/QCS6490-RB3Gen2/QCS6490-RB3Gen2.conf +rename to ucm2/Qualcomm/qcs6490/QCS6490-RB3Gen2/qcs6490-rb3gen2-snd-card.conf +diff --git a/ucm2/conf.d/qcm6490/QCM6490-IDP.conf b/ucm2/conf.d/qcm6490/qcm6490-idp-snd-card.conf +similarity index 100% +rename from ucm2/conf.d/qcm6490/QCM6490-IDP.conf +rename to ucm2/conf.d/qcm6490/qcm6490-idp-snd-card.conf +diff --git a/ucm2/conf.d/qcs6490/QCS6490-RB3Gen2.conf b/ucm2/conf.d/qcs6490/qcs6490-rb3gen2-snd-card.conf +similarity index 100% +rename from ucm2/conf.d/qcs6490/QCS6490-RB3Gen2.conf +rename to ucm2/conf.d/qcs6490/qcs6490-rb3gen2-snd-card.conf +-- +2.49.0 + + +From a98b12220989e2187a47b0e06ac9145c92232a8e Mon Sep 17 00:00:00 2001 +From: Mohammad Rafi Shaik +Date: Wed, 18 Jun 2025 16:46:18 +0530 +Subject: [PATCH 19/24] ucm2: Qualcomm: Update the HIFI enable mixer commands + for qcm6490-idp and qcs6490-rb3gen2 + +Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/577 +Signed-off-by: Mohammad Rafi Shaik +Signed-off-by: Jaroslav Kysela +--- + ucm2/Qualcomm/qcm6490/QCM6490-IDP/HiFi.conf | 8 ++++---- + ucm2/Qualcomm/qcs6490/QCS6490-RB3Gen2/HiFi.conf | 4 ++-- + 2 files changed, 6 insertions(+), 6 deletions(-) + +diff --git a/ucm2/Qualcomm/qcm6490/QCM6490-IDP/HiFi.conf b/ucm2/Qualcomm/qcm6490/QCM6490-IDP/HiFi.conf +index 0d6497e..0a0d331 100644 +--- a/ucm2/Qualcomm/qcm6490/QCM6490-IDP/HiFi.conf ++++ b/ucm2/Qualcomm/qcm6490/QCM6490-IDP/HiFi.conf +@@ -3,10 +3,10 @@ SectionVerb { + TQ "HiFi" + } + EnableSequence [ +- cset "name='WSA_CODEC_DMA_RX_0 Audio Mixer MULTIMEDIA0' 1" +- cset "name='MULTIMEDIA1 Audio Mixer VA_CODEC_DMA_TX_0' 1" +- cset "name='RX_CODEC_DMA_RX_0 Audio Mixer MULTIMEDIA2' 1" +- cset "name='MULTIMEDIA3 Audio Mixer TX_CODEC_DMA_TX_3' 1" ++ cset "name='WSA_CODEC_DMA_RX_0 Audio Mixer MultiMedia1' 1" ++ cset "name='MultiMedia2 Mixer VA_CODEC_DMA_TX_0' 1" ++ cset "name='RX_CODEC_DMA_RX_0 Audio Mixer MultiMedia3' 1" ++ cset "name='MultiMedia4 Mixer TX_CODEC_DMA_TX_3' 1" + ] + + Include.wsae.File "/codecs/wsa883x/DefaultEnableSeq.conf" +diff --git a/ucm2/Qualcomm/qcs6490/QCS6490-RB3Gen2/HiFi.conf b/ucm2/Qualcomm/qcs6490/QCS6490-RB3Gen2/HiFi.conf +index 954dbfa..2488523 100644 +--- a/ucm2/Qualcomm/qcs6490/QCS6490-RB3Gen2/HiFi.conf ++++ b/ucm2/Qualcomm/qcs6490/QCS6490-RB3Gen2/HiFi.conf +@@ -3,8 +3,8 @@ SectionVerb { + TQ "HiFi" + } + EnableSequence [ +- cset "name='WSA_CODEC_DMA_RX_0 Audio Mixer MULTIMEDIA0' 1" +- cset "name='MULTIMEDIA1 Audio Mixer VA_CODEC_DMA_TX_0' 1" ++ cset "name='WSA_CODEC_DMA_RX_0 Audio Mixer MultiMedia1' 1" ++ cset "name='MultiMedia2 Mixer VA_CODEC_DMA_TX_0' 1" + ] + + Include.wsae.File "/codecs/wsa883x/DefaultEnableSeq.conf" +-- +2.49.0 + + +From 56cbdfd04339cf9598cd9d57f5c1a382504ae902 Mon Sep 17 00:00:00 2001 +From: Peter Ujfalusi +Date: Thu, 12 Jun 2025 16:33:01 +0300 +Subject: [PATCH 20/24] UCM2: Intel: sof-hda-dsp: HiFi: Fix handling of mono + DMICs + +When a single DMIC is present in the system we need to set the +CaptureChannels to 1 since the PCM device only supports mono, PA/PW will +reject the profile since it cannot open the DMIC PCM device. + +Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/579 +Signed-off-by: Peter Ujfalusi +Signed-off-by: Jaroslav Kysela +--- + ucm2/Intel/sof-hda-dsp/HiFi.conf | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/ucm2/Intel/sof-hda-dsp/HiFi.conf b/ucm2/Intel/sof-hda-dsp/HiFi.conf +index 9689b56..e452f83 100644 +--- a/ucm2/Intel/sof-hda-dsp/HiFi.conf ++++ b/ucm2/Intel/sof-hda-dsp/HiFi.conf +@@ -34,6 +34,16 @@ If.dmic { + True { + CaptureChannels 4 + } ++ False.If.mono { ++ Condition { ++ Type RegexMatch ++ Regex "cfg-dmics:[1]" ++ String "${CardComponents}" ++ } ++ True { ++ CaptureChannels 1 ++ } ++ } + } + If.vol { + Condition { +-- +2.49.0 + + +From e4791900954c3951d15038822a55a3031aac49d2 Mon Sep 17 00:00:00 2001 +From: Shuming Fan +Date: Fri, 6 Jun 2025 12:47:08 +0800 +Subject: [PATCH 21/24] ucm2: sof-soundwire: add rt712-vb device + +Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/573 +Signed-off-by: Shuming Fan +Signed-off-by: Jaroslav Kysela +--- + ucm2/codecs/rt712/init.conf | 34 ++++++++++++++++++++++++++++------ + ucm2/sof-soundwire/rt712.conf | 29 +++++++++++++++++++++++++++++ + 2 files changed, 57 insertions(+), 6 deletions(-) + +diff --git a/ucm2/codecs/rt712/init.conf b/ucm2/codecs/rt712/init.conf +index e09bf7f..1e45380 100644 +--- a/ucm2/codecs/rt712/init.conf ++++ b/ucm2/codecs/rt712/init.conf +@@ -1,8 +1,30 @@ + # RT712 specific volume control settings + +-BootSequence [ +- cset "name='rt712 FU05 Playback Volume' 87" +- cset "name='rt712 ADC 23 Mux' 'MIC2'" +- cset "name='rt712 FU0F Capture Volume' 57" +- cset "name='rt712 FU0F Capture Switch' 1" +-] ++If.rt712_init { ++ Condition { ++ Type RegexMatch ++ Regex "(rt712(-sdca)?)" ++ String "${var:MultiMicShadow}" ++ } ++ True { ++ # RT712-VB integrated with DMIC ++ BootSequence [ ++ cset "name='rt712 FU05 Playback Volume' 87" ++ cset "name='rt712 ADC 23 Mux' 'MIC2'" ++ cset "name='rt712 FU0F Capture Volume' 57" ++ cset "name='rt712 FU0F Capture Switch' 1" ++ cset "name='rt712 FU1E Capture Switch' 1" ++ cset "name='rt712 FU1E Capture Volume' 47" ++ cset "name='rt712 ADC 0A Mux' 'DMIC1'" ++ cset "name='rt712 ADC 0B Mux' 'DMIC2'" ++ ] ++ } ++ False { ++ BootSequence [ ++ cset "name='rt712 FU05 Playback Volume' 87" ++ cset "name='rt712 ADC 23 Mux' 'MIC2'" ++ cset "name='rt712 FU0F Capture Volume' 57" ++ cset "name='rt712 FU0F Capture Switch' 1" ++ ] ++ } ++} +diff --git a/ucm2/sof-soundwire/rt712.conf b/ucm2/sof-soundwire/rt712.conf +index 409bef9..346cff1 100644 +--- a/ucm2/sof-soundwire/rt712.conf ++++ b/ucm2/sof-soundwire/rt712.conf +@@ -85,3 +85,32 @@ SectionDevice."Headset" { + JackControl "Headset Mic Jack" + } + } ++ ++If.codecmic { ++ Condition { ++ Type RegexMatch ++ Regex "(rt712(-sdca)?)" ++ String "${var:MultiMicShadow}" ++ } ++ True { ++ SectionDevice."Mic" { ++ Comment "SoundWire Microphones" ++ ++ EnableSequence [ ++ cset "name='rt712 FU1E Capture Switch' 1" ++ ] ++ ++ DisableSequence [ ++ cset "name='rt712 FU1E Capture Switch' 0" ++ ] ++ ++ Value { ++ CapturePriority 100 ++ CapturePCM "hw:${CardId},4" ++ CaptureSwitch "rt712 FU1E Capture Switch" ++ CaptureVolume "rt712 FU1E Capture Volume" ++ CaptureMixerElem "rt712 FU1E" ++ } ++ } ++ } ++} +-- +2.49.0 + + +From 436fbad2a02b91435645e039664af469595ab500 Mon Sep 17 00:00:00 2001 +From: DanielDecker <90106468+DanielDecker@users.noreply.github.com> +Date: Mon, 16 Jun 2025 18:27:21 +0200 +Subject: [PATCH 22/24] add MSI MAG B850M Mortar Wifi to USB-Audio.conf + +add MSI MAG B850M Mortar Wifi USB-ID for Realtek/ALC4080 to USB-Audio.conf + +Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/581 +Signed-off-by: DanielDecker <90106468+DanielDecker@users.noreply.github.com> +Signed-off-by: Jaroslav Kysela +--- + ucm2/USB-Audio/USB-Audio.conf | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/ucm2/USB-Audio/USB-Audio.conf b/ucm2/USB-Audio/USB-Audio.conf +index d90db39..ef88ded 100644 +--- a/ucm2/USB-Audio/USB-Audio.conf ++++ b/ucm2/USB-Audio/USB-Audio.conf +@@ -89,6 +89,7 @@ If.realtek-alc4080 { + # 0db0:a47c MSI MEG X570S Ace Max + # 0db0:a74b MSI MPG Z790 Edge Wifi + # 0db0:b202 MSI MAG Z690 Tomahawk Wifi ++ # 0db0:cc78 MSI MAG B850M Mortar Wifi + # 0db0:cd0e MSI X870 Tomahawk + # 0db0:d1d7 MSI PRO Z790-A WIFI + # 0db0:d6e7 MSI MPG X670E Carbon Wifi +@@ -96,7 +97,7 @@ If.realtek-alc4080 { + # 26ce:0a06 ASRock X670E/Z790 Taichi + # 26ce:0a08 ASRock Z790 PG-ITX/TB4, X870 Steel Legend + # 26ce:0a0b ASRock X870E Taichi +- Regex "USB((0414:a0(0e|1[0124]))|(0b05:(19(84|9[69])|1a(16|2[07]|5[23c]|97|f1)|1b(7c|9b|e1)))|(0db0:(005a|0b58|124b|151f|1feb|3130|36e7|4(19c|22d|240|88c)|543d|62a4|6c[0c]9|70d3|7696|82c7|8af7|961e|9e6d|a(073|228|47c|74b)|b202|cd0e|d1d7|d6e7|e1f8))|(26ce:0a0[68b]))" ++ Regex "USB((0414:a0(0e|1[0124]))|(0b05:(19(84|9[69])|1a(16|2[07]|5[23c]|97|f1)|1b(7c|9b|e1)))|(0db0:(005a|0b58|124b|151f|1feb|3130|36e7|4(19c|22d|240|88c)|543d|62a4|6c[0c]9|70d3|7696|82c7|8af7|961e|9e6d|a(073|228|47c|74b)|b202|c(c78|d0e)|d1d7|d6e7|e1f8))|(26ce:0a0[68b]))" + } + True.Define.ProfileName "Realtek/ALC4080" + } +-- +2.49.0 + + +From b4896cf413e618f4b20c570544a4e668aaa72f64 Mon Sep 17 00:00:00 2001 +From: Harald Sitter +Date: Sat, 21 Jun 2025 17:10:20 +0200 +Subject: [PATCH 23/24] ucm2: USB-Audio: Add Teufel CAGE PRO + +two stereo outputs: one for "game" and one for "chat". +one mono input + +Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/582 +Signed-off-by: Harald Sitter +Signed-off-by: Jaroslav Kysela +--- + ucm2/USB-Audio/Teufel/CAGE-PRO-HiFi.conf | 21 +++++++++++++++++++++ + ucm2/USB-Audio/Teufel/CAGE-PRO.conf | 9 +++++++++ + ucm2/USB-Audio/USB-Audio.conf | 10 ++++++++++ + 3 files changed, 40 insertions(+) + create mode 100644 ucm2/USB-Audio/Teufel/CAGE-PRO-HiFi.conf + create mode 100644 ucm2/USB-Audio/Teufel/CAGE-PRO.conf + +diff --git a/ucm2/USB-Audio/Teufel/CAGE-PRO-HiFi.conf b/ucm2/USB-Audio/Teufel/CAGE-PRO-HiFi.conf +new file mode 100644 +index 0000000..c0fbe7b +--- /dev/null ++++ b/ucm2/USB-Audio/Teufel/CAGE-PRO-HiFi.conf +@@ -0,0 +1,21 @@ ++# SPDX-License-Identifier: MIT ++# SPDX-FileCopyrightText: 2025 Harald Sitter ++ ++SectionDevice."Headset" { ++ Comment "Chat" ++ Value { ++ PlaybackPCM "hw:${CardId},0" ++ PlaybackMixerElem "PCM" ++ CapturePCM "hw:${CardId},0" ++ CaptureMixerElem "Mic" ++ CaptureChannels 1 ++ } ++} ++ ++SectionDevice."Headphones" { ++ Comment "Game" ++ Value { ++ PlaybackPCM "hw:${CardId},1" ++ PlaybackMixerElem "PCM,1" ++ } ++} +diff --git a/ucm2/USB-Audio/Teufel/CAGE-PRO.conf b/ucm2/USB-Audio/Teufel/CAGE-PRO.conf +new file mode 100644 +index 0000000..bf75033 +--- /dev/null ++++ b/ucm2/USB-Audio/Teufel/CAGE-PRO.conf +@@ -0,0 +1,9 @@ ++# SPDX-License-Identifier: MIT ++# SPDX-FileCopyrightText: 2025 Harald Sitter ++ ++Comment "Lautsprecher Teufel GmbH CAGE PRO" ++ ++SectionUseCase."HiFi" { ++ Comment "Default" ++ File "/USB-Audio/Teufel/CAGE-PRO-HiFi.conf" ++} +diff --git a/ucm2/USB-Audio/USB-Audio.conf b/ucm2/USB-Audio/USB-Audio.conf +index ef88ded..7a6a0ac 100644 +--- a/ucm2/USB-Audio/USB-Audio.conf ++++ b/ucm2/USB-Audio/USB-Audio.conf +@@ -521,6 +521,15 @@ If.ua-volt2 { + } + } + ++If.teufel-cage-pro { ++ Condition { ++ Type String ++ Haystack "${CardComponents}" ++ Needle "USB2cc2:0033" ++ } ++ True.Define.ProfileName "Teufel/CAGE-PRO" ++} ++ + If.ssl2 { + Condition { + Type String +@@ -559,6 +568,7 @@ If.beacn-studio { + } + True.Define.ProfileName "Beacn/Beacn-Studio" + } ++ + If.mixremap { + Condition { + Type String +-- +2.49.0 + + +From 63f161cb8d65ed828a1ce49b506f4e1b9a7c58e4 Mon Sep 17 00:00:00 2001 +From: Zoran Zhan +Date: Wed, 7 May 2025 14:41:14 +0800 +Subject: [PATCH 24/24] ucm2: MediaTek: mt8365-evk: Add SOF support + +Add support for MT8365 EVK with SOF enabled. When SOF is +disabled, the "HiFi" use case is used; when SOF is enabled, +the "SOF" use case is used. + +The main difference compared to the UCM with SOF disabled is +the device number for playback and capture, which now uses the +PCMs for SOF instead. + +Define these parameters as variables for each case (with and +without SOF), and move the common initialization to init.conf, +so the UCM can be shared by both configurations. + +Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/583 +Signed-off-by: Zoran Zhan +Signed-off-by: Jaroslav Kysela +--- + ucm2/MediaTek/mt8365-evk/HiFi.conf | 126 ++++++------------ + ucm2/MediaTek/mt8365-evk/init.conf | 31 +++++ + ucm2/MediaTek/mt8365-evk/mt8365-evk.conf | 40 +----- + ucm2/MediaTek/mt8365-evk/sof/SOF.conf | 87 ++++++++++++ + .../mt8365-evk/sof/sof-mt8365-evk.conf | 9 ++ + .../conf.d/sof-mt8365-evk/sof-mt8365-evk.conf | 1 + + 6 files changed, 174 insertions(+), 120 deletions(-) + create mode 100644 ucm2/MediaTek/mt8365-evk/init.conf + create mode 100644 ucm2/MediaTek/mt8365-evk/sof/SOF.conf + create mode 100644 ucm2/MediaTek/mt8365-evk/sof/sof-mt8365-evk.conf + create mode 120000 ucm2/conf.d/sof-mt8365-evk/sof-mt8365-evk.conf + +diff --git a/ucm2/MediaTek/mt8365-evk/HiFi.conf b/ucm2/MediaTek/mt8365-evk/HiFi.conf +index 81f563f..83514c7 100644 +--- a/ucm2/MediaTek/mt8365-evk/HiFi.conf ++++ b/ucm2/MediaTek/mt8365-evk/HiFi.conf +@@ -1,141 +1,97 @@ + SectionDevice."HDMI" { +- Comment "Hdmi output" ++ Comment "HDMI output" + + Value { +- PlaybackPriority 250 ++ PlaybackPriority 100 + PlaybackChannels 2 + PlaybackPCM "hw:${CardId},1" + } +- +- EnableSequence [ +- cset "name='O00 I07 Switch' on" +- cset "name='O01 I08 Switch' on" +- ] +- +- DisableSequence [ +- cset "name='O00 I07 Switch' off" +- cset "name='O01 I08 Switch' off" +- ] + } + + SectionDevice."Speaker" { +- Comment "Line-out Jack " ++ Comment "Lineout speaker" + + ConflictingDevice [ + "Headphones" + ] + +- Value { +- PlaybackPriority 300 +- PlaybackChannels 2 +- PlaybackPCM "hw:${CardId},0" +- PlaybackVolume "name='Lineout_PGAL_GAIN'" +- } +- + EnableSequence [ +- cset "name='Audio_Amp_L_Switch' Off" +- cset "name='Audio_Amp_R_Switch' Off" +- cset "name='Lineout_PGAL_GAIN' 0" +- cset "name='Speaker_Amp_Switch' On" ++ cset "name='Headphone Left Source' Open" ++ cset "name='Headphone Right Source' Open" ++ cset "name='Line Out Source' Playback" + ] + +- DisableSequence [ +- cset "name='Audio_Amp_L_Switch' On" +- cset "name='Audio_Amp_R_Switch' On" +- cset "name='Speaker_Amp_Switch' Off" +- ] ++ Value { ++ PlaybackPriority 200 ++ PlaybackChannels 2 ++ PlaybackPCM "hw:${CardId},${var:PlayDevN}" ++ } + } + + SectionDevice."Headphones" { +- Comment "Headset speakers" ++ Comment "Earphone speaker" + + ConflictingDevice [ + "Speaker" + ] + ++ EnableSequence [ ++ cset "name='Headphone Left Source' DAC" ++ cset "name='Headphone Right Source' DAC" ++ cset "name='Line Out Source' Open" ++ ] ++ + Value { + PlaybackPriority 300 + PlaybackChannels 2 +- PlaybackPCM "hw:${CardId},0" +- PlaybackVolume "name='Headset_PGAL_GAIN'" ++ PlaybackPCM "hw:${CardId},${var:PlayDevN}" + } +- +- EnableSequence [ +- cset "name='Audio_Amp_L_Switch' On" +- cset "name='Audio_Amp_R_Switch' On" +- cset "name='Headset_PGAL_GAIN' 1" +- cset "name='Speaker_Amp_Switch' Off" +- ] +- +- DisableSequence [ +- cset "name='Audio_Amp_L_Switch' Off" +- cset "name='Audio_Amp_R_Switch' Off" +- cset "name='Speaker_Amp_Switch' On" +- ] + } + +-SectionDevice."Mic1" { +- Comment "Amic" ++SectionDevice."Headset" { ++ Comment "Earphone microphone" + + ConflictingDevice [ +- "Mic2" ++ "Mic1" + ] + +- Value { +- CapturePriority 300 +- CaptureChannels 1 +- CapturePCM "hw:${CardId},2" +- } +- + EnableSequence [ +- cset "name='Audio_MicSource1_Setting' ADC1" +- cset "name='Audio_MICBIAS0_Switch' Off" ++ cset "name='PGA L Mux' AIN1" ++ cset "name='PGA R Mux' AIN1" + ] + +- DisableSequence [ +- cset "name='Audio_MicSource1_Setting' ADC2" +- cset "name='Audio_MICBIAS0_Switch' On" +- ] ++ Value { ++ CapturePriority 300 ++ CaptureChannels "${var:CapChanN}" ++ CapturePCM "hw:${CardId},${var:CapDevN}" ++ } + } + +-SectionDevice."Mic2" { +- Comment "Headset microphone" ++SectionDevice."Mic1" { ++ Comment "Analog microphone" + + ConflictingDevice [ +- "Mic1" ++ "Headset" + ] + +- Value { +- CapturePriority 350 +- CaptureChannels 1 +- CapturePCM "hw:${CardId},2" +- } +- + EnableSequence [ +- cset "name='Audio_MicSource1_Setting' ADC2" +- cset "name='Audio_MICBIAS0_Switch' On" ++ cset "name='PGA L Mux' AIN0" ++ cset "name='PGA R Mux' AIN0" + ] + +- DisableSequence [ +- cset "name='Audio_MicSource1_Setting' ADC1" +- cset "name='Audio_MICBIAS0_Switch' Off" +- ] ++ Value { ++ CapturePriority 200 ++ CaptureChannels "${var:CapChanN}" ++ CapturePCM "hw:${CardId},${var:CapDevN}" ++ } + } + +-SectionDevice."Mic3" { +- Comment "PDM microphones" ++SectionDevice."Mic2" { ++ Comment "Digital microphone" + + Value { + CapturePriority 100 + CaptureChannels 2 + CapturePCM "hw:${CardId},3" + } +- +- EnableSequence [ +- cset "name='Audio_MICBIAS0_Switch' On" +- ] +- +- DisableSequence [ +- cset "name='Audio_MICBIAS0_Switch' Off" +- ] + } +diff --git a/ucm2/MediaTek/mt8365-evk/init.conf b/ucm2/MediaTek/mt8365-evk/init.conf +new file mode 100644 +index 0000000..269530a +--- /dev/null ++++ b/ucm2/MediaTek/mt8365-evk/init.conf +@@ -0,0 +1,31 @@ ++Syntax 4 ++ ++SectionUseCase."HiFi" { ++ File "/MediaTek/mt8365-evk/HiFi.conf" ++ Comment "Default" ++} ++ ++SectionUseCase."SOF" { ++ File "/MediaTek/mt8365-evk/sof/SOF.conf" ++ Comment "Enable SOF" ++} ++ ++BootSequence [ ++ cset "name='Headphone Left Source' DAC" ++ cset "name='Headphone Right Source' DAC" ++ cset "name='Line Out Source' Open" ++ cset "name='PGA L Mux' AIN1" ++ cset "name='PGA R Mux' AIN1" ++ cset "name='Mic Type Mux' DCC" ++ cset "name='INT ADDA O03_O04 Switch' on" ++ cset "name='Headphone Volume' 10" ++ cset "name='Lineout Volume' 10" ++ cset "name='O00 I07 Switch' on" ++ cset "name='O01 I08 Switch' on" ++ cset "name='O03 I05 Switch' on" ++ cset "name='O04 I06 Switch' on" ++ cset "name='O05 I03 Switch' on" ++ cset "name='O06 I04 Switch' on" ++ cset "name='O09 I14 Switch' on" ++ cset "name='O10 I15 Switch' on" ++] +diff --git a/ucm2/MediaTek/mt8365-evk/mt8365-evk.conf b/ucm2/MediaTek/mt8365-evk/mt8365-evk.conf +index e396f8c..9df5644 100644 +--- a/ucm2/MediaTek/mt8365-evk/mt8365-evk.conf ++++ b/ucm2/MediaTek/mt8365-evk/mt8365-evk.conf +@@ -1,39 +1,9 @@ + Syntax 4 + +-SectionUseCase."HiFi" { +- File "/MediaTek/mt8365-evk/HiFi.conf" +- Comment "Play high quality music" ++Define { ++ PlayDevN "0" ++ CapDevN "2" ++ CapChanN "1" + } + +-BootSequence [ +- #Audio volume +- cset "name='Headset_PGAL_GAIN' 0" +- cset "name='Lineout_PGAL_GAIN' 0" +- +- #Audio amp +- cset "name='Audio_Amp_R_Switch' On" +- cset "name='Audio_Amp_L_Switch' On" +- +- #Headset out +- cset "name='Speaker_Amp_Switch' Off" +- +- #Dmic +- cset "name='Audio_MICBIAS0_Switch' On" +- +- #HDMI audio (I2S3 Out) +- cset "name='O00 I07 Switch' on" +- cset "name='O01 I08 Switch' on" +- +- #jack_mic Headset In +- cset "name='Audio_MicSource1_Setting' ADC2" +- +- cset "name='O03 I05 Switch' on" +- cset "name='O04 I06 Switch' on" +- cset "name='O05 I03 Switch' on" +- cset "name='O06 I04 Switch' on" +- cset "name='O09 I14 Switch' on" +- cset "name='O10 I15 Switch' on" +- cset "name='AUD_CLK_BUF_Switch' On" +- cset "name='Audio_ADC_1_Switch' On" +- cset "name='INT ADDA O03_O04 Switch' on" +-] ++Include.init.File "/MediaTek/mt8365-evk/init.conf" +diff --git a/ucm2/MediaTek/mt8365-evk/sof/SOF.conf b/ucm2/MediaTek/mt8365-evk/sof/SOF.conf +new file mode 100644 +index 0000000..af44feb +--- /dev/null ++++ b/ucm2/MediaTek/mt8365-evk/sof/SOF.conf +@@ -0,0 +1,87 @@ ++SectionDevice."Speaker" { ++ Comment "SOF Lineout speaker" ++ ++ ConflictingDevice [ ++ "Headphones" ++ ] ++ ++ EnableSequence [ ++ cset "name='Headphone Left Source' Open" ++ cset "name='Headphone Right Source' Open" ++ cset "name='Line Out Source' Playback" ++ ] ++ ++ Value { ++ PlaybackPriority 100 ++ PlaybackChannels 2 ++ PlaybackPCM "hw:${CardId},${var:PlayDevN}" ++ } ++} ++ ++SectionDevice."Headphones" { ++ Comment "SOF Earphone speaker" ++ ++ ConflictingDevice [ ++ "Speaker" ++ ] ++ ++ EnableSequence [ ++ cset "name='Headphone Left Source' DAC" ++ cset "name='Headphone Right Source' DAC" ++ cset "name='Line Out Source' Open" ++ ] ++ ++ Value { ++ PlaybackPriority 200 ++ PlaybackChannels 2 ++ PlaybackPCM "hw:${CardId},${var:PlayDevN}" ++ } ++} ++ ++SectionDevice."Headset" { ++ Comment "SOF Earphone microphone" ++ ++ ConflictingDevice [ ++ "Mic1" ++ ] ++ ++ EnableSequence [ ++ cset "name='PGA L Mux' AIN1" ++ cset "name='PGA R Mux' AIN1" ++ ] ++ ++ Value { ++ CapturePriority 300 ++ CaptureChannels "${var:CapChanN}" ++ CapturePCM "hw:${CardId},${var:CapDevN}" ++ } ++} ++ ++SectionDevice."Mic1" { ++ Comment "SOF Analog microphone" ++ ++ ConflictingDevice [ ++ "Headset" ++ ] ++ ++ EnableSequence [ ++ cset "name='PGA L Mux' AIN0" ++ cset "name='PGA R Mux' AIN0" ++ ] ++ ++ Value { ++ CapturePriority 200 ++ CaptureChannels "${var:CapChanN}" ++ CapturePCM "hw:${CardId},${var:CapDevN}" ++ } ++} ++ ++SectionDevice."Mic2" { ++ Comment "SOF Digital microphone" ++ ++ Value { ++ CapturePriority 100 ++ CaptureChannels 2 ++ CapturePCM "hw:${CardId},19" ++ } ++} +diff --git a/ucm2/MediaTek/mt8365-evk/sof/sof-mt8365-evk.conf b/ucm2/MediaTek/mt8365-evk/sof/sof-mt8365-evk.conf +new file mode 100644 +index 0000000..6369aac +--- /dev/null ++++ b/ucm2/MediaTek/mt8365-evk/sof/sof-mt8365-evk.conf +@@ -0,0 +1,9 @@ ++Syntax 4 ++ ++Define { ++ PlayDevN "16" ++ CapDevN "18" ++ CapChanN "2" ++} ++ ++Include.init.File "/MediaTek/mt8365-evk/init.conf" +diff --git a/ucm2/conf.d/sof-mt8365-evk/sof-mt8365-evk.conf b/ucm2/conf.d/sof-mt8365-evk/sof-mt8365-evk.conf +new file mode 120000 +index 0000000..527f25f +--- /dev/null ++++ b/ucm2/conf.d/sof-mt8365-evk/sof-mt8365-evk.conf +@@ -0,0 +1 @@ ++../../MediaTek/mt8365-evk/sof/sof-mt8365-evk.conf +\ No newline at end of file +-- +2.49.0 + From 04834a61f7afe78b95c306529109aa6db715415b Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Tue, 24 Jun 2025 15:24:30 +0200 Subject: [PATCH 14/24] update alsa-ucm-conf files to latest Signed-off-by: Jaroslav Kysela --- alsa-git.patch | 31 + alsa-lib.spec | 13 +- alsa-ucm-conf.patch | 2374 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 2413 insertions(+), 5 deletions(-) create mode 100644 alsa-git.patch create mode 100644 alsa-ucm-conf.patch diff --git a/alsa-git.patch b/alsa-git.patch new file mode 100644 index 0000000..ded7dfb --- /dev/null +++ b/alsa-git.patch @@ -0,0 +1,31 @@ +From 07ec2ad34c42dba8656d3f543164f360f481c52e Mon Sep 17 00:00:00 2001 +From: Daniel Dadap +Date: Thu, 15 May 2025 08:32:35 -0500 +Subject: [PATCH] conf: aliases: add hda-acpi -> HDA-Intel alias + +The new snd_hda_acpi driver in Linux exposes the existing Azalia +interface to non-PCI devices advertised over ACPI. Add an alias +to the existing HDA-Intel configuration file so that devices using +this driver can be discovered properly. + +Signed-off-by: Daniel Dadap +Signed-off-by: Takashi Iwai +--- + src/conf/cards/aliases.conf | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/conf/cards/aliases.conf b/src/conf/cards/aliases.conf +index a54824ae..e2d59aa7 100644 +--- a/src/conf/cards/aliases.conf ++++ b/src/conf/cards/aliases.conf +@@ -57,6 +57,7 @@ CMI8786 cards.CMI8788 + CMI8787 cards.CMI8788 + pistachio cards.pistachio-card + VC4-HDMI cards.vc4-hdmi ++hda-acpi cards.HDA-Intel + + + +-- +2.49.0 + diff --git a/alsa-lib.spec b/alsa-lib.spec index d54e2c4..65d3a89 100644 --- a/alsa-lib.spec +++ b/alsa-lib.spec @@ -9,7 +9,7 @@ Summary: The Advanced Linux Sound Architecture (ALSA) library Name: alsa-lib Version: %{version_alsa_lib} -Release: 2%{?prever_dot}%{?dist} +Release: 3%{?prever_dot}%{?dist} License: LGPL-2.1-or-later URL: http://www.alsa-project.org/ @@ -19,8 +19,8 @@ Source2: ftp://ftp.alsa-project.org/pub/lib/alsa-topology-conf-%{version_alsa_t Source10: asound.conf Source11: modprobe-dist-alsa.conf Source12: modprobe-dist-oss.conf -#Source40: alsa-ucm-conf.patch -#Patch0: alsa-git.patch +Source40: alsa-ucm-conf.patch +Patch0: alsa-git.patch Patch1: alsa-lib-1.2.3.1-config.patch Patch2: alsa-lib-1.2.10-glibc-open.patch @@ -70,7 +70,7 @@ contains alsa-lib configuration of SoC topology %prep %setup -q -n %{name}-%{version}%{?prever}%{?postver} -#patch -P0 -p1 -b .alsa-git +%patch -P0 -p1 -b .alsa-git %patch -P1 -p1 -b .config %patch -P2 -p1 -b .glibc-open @@ -116,7 +116,7 @@ mkdir -p %{buildroot}/%{_datadir}/alsa/ucm2 # Unpack UCMs tar xvjf %{SOURCE1} -C %{buildroot}/%{_datadir}/alsa --strip-components=1 "*/ucm" "*/ucm2" -#patch -d %{buildroot}/%{_datadir}/alsa -p1 < %{SOURCE40} +patch -d %{buildroot}/%{_datadir}/alsa -p1 < %{SOURCE40} # Create topology directory mkdir -p %{buildroot}/%{_datadir}/alsa/topology @@ -167,6 +167,9 @@ rm %{buildroot}/%{_includedir}/asoundlib.h %{_datadir}/alsa/topology %changelog +* Tue Jan 24 2025 Jaroslav Kysela - 1.2.14-3 +- update to latest alsa-ucm-conf files + * Mon Apr 14 2025 Jaroslav Kysela - 1.2.14-2 - update to 1.2.14 diff --git a/alsa-ucm-conf.patch b/alsa-ucm-conf.patch new file mode 100644 index 0000000..917177c --- /dev/null +++ b/alsa-ucm-conf.patch @@ -0,0 +1,2374 @@ +From 25f519f66c3e496b21ca1ad83ebc6114dfaa9fc3 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Maja=20K=C4=85dzio=C5=82ka?= +Date: Tue, 22 Apr 2025 07:46:21 +0200 +Subject: [PATCH 01/24] acp3x-alc5682-max98357: Fix path of HiFi.conf +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/551 +Closes: https://github.com/alsa-project/alsa-ucm-conf/issues/550 +Fixes: 1048796e7fa9 ("Rename ucm2/AMD/acp3xalc5682m98 to ucm2/AMD/acp3x-alc5682-max98357") +Signed-off-by: Maja Kądziołka +Signed-off-by: Jaroslav Kysela +--- + ucm2/AMD/acp3x-alc5682-max98357/acp3x-alc5682-max98357.conf | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/ucm2/AMD/acp3x-alc5682-max98357/acp3x-alc5682-max98357.conf b/ucm2/AMD/acp3x-alc5682-max98357/acp3x-alc5682-max98357.conf +index e1f1c9e..5b3f24a 100644 +--- a/ucm2/AMD/acp3x-alc5682-max98357/acp3x-alc5682-max98357.conf ++++ b/ucm2/AMD/acp3x-alc5682-max98357/acp3x-alc5682-max98357.conf +@@ -66,7 +66,7 @@ If.found { + Empty "${var:Found}" + } + False.SectionUseCase."HiFi" { +- File "/AMD/acp3xalc5682m98/HiFi.conf" ++ File "HiFi.conf" + Comment "Default" + } + } +-- +2.49.0 + + +From ac64586ab4ad3a0f162af3ec8a196bfd3799c5c0 Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Fri, 25 Apr 2025 11:47:20 +0200 +Subject: [PATCH 02/24] USB-Audio: Remove useless sections for Solid State Labs + SSL 2+ + +Signed-off-by: Jaroslav Kysela +--- + ucm2/USB-Audio/SolidStateLabs/SSL2Plus-HiFi.conf | 8 -------- + 1 file changed, 8 deletions(-) + +diff --git a/ucm2/USB-Audio/SolidStateLabs/SSL2Plus-HiFi.conf b/ucm2/USB-Audio/SolidStateLabs/SSL2Plus-HiFi.conf +index d07e499..94e040f 100644 +--- a/ucm2/USB-Audio/SolidStateLabs/SSL2Plus-HiFi.conf ++++ b/ucm2/USB-Audio/SolidStateLabs/SSL2Plus-HiFi.conf +@@ -28,14 +28,6 @@ Macro [ + SectionDevice."Line1" { + Comment "Line Outputs 1/L + 2/R" + +- EnableSequence [ +- cdev "hw:${CardId}" +- ] +- +- DisableSequence [ +- cdev "hw:${CardId}" +- ] +- + Value { + PlaybackPriority 200 + } +-- +2.49.0 + + +From fc17ed4f991836bb92f288b8714ad7efe6c05926 Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Fri, 25 Apr 2025 11:53:11 +0200 +Subject: [PATCH 03/24] USB-Audio: Solid State Labs SSL 2+ - fix capture + channels + +It seems that there are 4 capture channels per report in issue #552: + + Capture: + Status: Stop + Interface 2 + Altset 1 + Format: S32_LE + Channels: 4 + Endpoint: 0x81 (1 IN) (ASYNC) + Rates: 44100, 48000, 88200, 96000, 176400, 192000 + Data packet interval: 125 us + Bits: 24 + Channel map: FL FR FC LFE + +Closes: https://github.com/alsa-project/alsa-ucm-conf/issues/552 +Signed-off-by: Jaroslav Kysela +--- + ucm2/USB-Audio/SolidStateLabs/SSL2Plus-HiFi.conf | 6 +++--- + ucm2/USB-Audio/SolidStateLabs/SSL2Plus.conf | 2 +- + 2 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/ucm2/USB-Audio/SolidStateLabs/SSL2Plus-HiFi.conf b/ucm2/USB-Audio/SolidStateLabs/SSL2Plus-HiFi.conf +index 94e040f..30160d3 100644 +--- a/ucm2/USB-Audio/SolidStateLabs/SSL2Plus-HiFi.conf ++++ b/ucm2/USB-Audio/SolidStateLabs/SSL2Plus-HiFi.conf +@@ -18,7 +18,7 @@ Macro [ + Name "ssl2plus_mono_in" + Direction Capture + Channels 1 +- HWChannels 2 ++ HWChannels 4 + HWChannelPos0 MONO + HWChannelPos1 MONO + } +@@ -70,7 +70,7 @@ SectionDevice."Mic1" { + Macro.pcm_split.SplitPCMDevice { + Name "ssl2plus_mono_in" + Direction Capture +- HWChannels 2 ++ HWChannels 4 + Channels 1 + Channel0 0 + ChannelPos0 MONO +@@ -86,7 +86,7 @@ SectionDevice."Mic2" { + Macro.pcm_split.SplitPCMDevice { + Name "ssl2plus_mono_in" + Direction Capture +- HWChannels 2 ++ HWChannels 4 + Channels 1 + Channel0 1 + ChannelPos0 MONO +diff --git a/ucm2/USB-Audio/SolidStateLabs/SSL2Plus.conf b/ucm2/USB-Audio/SolidStateLabs/SSL2Plus.conf +index 2ffe4c4..c886593 100644 +--- a/ucm2/USB-Audio/SolidStateLabs/SSL2Plus.conf ++++ b/ucm2/USB-Audio/SolidStateLabs/SSL2Plus.conf +@@ -6,6 +6,6 @@ SectionUseCase."HiFi" { + } + + Define.DirectPlaybackChannels 4 +-Define.DirectCaptureChannels 2 ++Define.DirectCaptureChannels 4 + + Include.dhw.File "/common/direct.conf" +-- +2.49.0 + + +From 6c2177e856ffa884929ba84de2ba379b80e054a3 Mon Sep 17 00:00:00 2001 +From: Konrad Dybcio +Date: Mon, 14 Apr 2025 20:47:38 +0200 +Subject: [PATCH 04/24] ucm2: Qualcomm: x1e80100: Also match DMI board name + +The Surface Laptop 7 only says "Microsoft Corporation" and "Surface" +in the board_vendor and product_family fields respectively. Add another +field to match on. + +Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/546 +Signed-off-by: Konrad Dybcio +Signed-off-by: Jaroslav Kysela +--- + ucm2/Qualcomm/x1e80100/x1e80100.conf | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/ucm2/Qualcomm/x1e80100/x1e80100.conf b/ucm2/Qualcomm/x1e80100/x1e80100.conf +index 3f89986..3eef4d4 100644 +--- a/ucm2/Qualcomm/x1e80100/x1e80100.conf ++++ b/ucm2/Qualcomm/x1e80100/x1e80100.conf +@@ -1,6 +1,6 @@ + Syntax 4 + +-Define.DMI_info "${sys:devices/virtual/dmi/id/board_vendor}-${sys:devices/virtual/dmi/id/product_family}" ++Define.DMI_info "${sys:devices/virtual/dmi/id/board_vendor}-${sys:devices/virtual/dmi/id/product_family}-${sys:devices/virtual/dmi/id/board_name}" + + If.LENOVOT14s { + Condition { +-- +2.49.0 + + +From c93b7c8cc3137180cf1e91af2dd212bbf604b66f Mon Sep 17 00:00:00 2001 +From: Konrad Dybcio +Date: Mon, 14 Apr 2025 20:47:38 +0200 +Subject: [PATCH 05/24] ucm2: Qualcomm: Add Surface Laptop 7 + +2 speakers, 2 dmics, combo jack, just like the T14s - reuse its +configuration + +Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/546 +Signed-off-by: Konrad Dybcio +Signed-off-by: Jaroslav Kysela +--- + ucm2/Qualcomm/x1e80100/x1e80100.conf | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/ucm2/Qualcomm/x1e80100/x1e80100.conf b/ucm2/Qualcomm/x1e80100/x1e80100.conf +index 3eef4d4..10faf5f 100644 +--- a/ucm2/Qualcomm/x1e80100/x1e80100.conf ++++ b/ucm2/Qualcomm/x1e80100/x1e80100.conf +@@ -6,7 +6,7 @@ If.LENOVOT14s { + Condition { + Type RegexMatch + String "${var:DMI_info}" +- Regex "LENOVO.*Think((Pad T14s Gen 6.*)|(Book 16 G7 QOY))|(HP.*Omnibook X.*)|(ASUSTeK COMPUTER.*ASUS Zenbook A14)" ++ Regex "LENOVO.*Think((Pad T14s Gen 6.*)|(Book 16 G7 QOY))|(HP.*Omnibook X.*)|(ASUSTeK COMPUTER.*ASUS Zenbook A14)|(Microsoft Corporation.*Surface.*Microsoft Surface Laptop, 7th Edition)" + } + True.Include.t14s.File "/Qualcomm/x1e80100/LENOVO-T14s.conf" + } +-- +2.49.0 + + +From 9105573b6cb71c4821d88e6eef0c4b2cfbb4ea61 Mon Sep 17 00:00:00 2001 +From: Svyatoslav Ryhel +Date: Sun, 27 Apr 2025 13:02:19 +0300 +Subject: [PATCH 06/24] tegra: max98089: fix cset names + +Adjust configs to match Linux kernel MAX98089 codec driver change. + +Fixes: 725570f9 ("ASoC: max98088: Remove duplicate DACs") + +Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/556 +Signed-off-by: Svyatoslav Ryhel +Signed-off-by: Jaroslav Kysela +--- + ucm2/Tegra/max98089/lge-x3-HiFi.conf | 24 +++++---------- + ucm2/Tegra/max98089/lge-x3-VoiceCall.conf | 36 ++++++++--------------- + ucm2/Tegra/max98089/lge-x3.conf | 6 ++-- + 3 files changed, 22 insertions(+), 44 deletions(-) + +diff --git a/ucm2/Tegra/max98089/lge-x3-HiFi.conf b/ucm2/Tegra/max98089/lge-x3-HiFi.conf +index 3738d72..d074b9f 100644 +--- a/ucm2/Tegra/max98089/lge-x3-HiFi.conf ++++ b/ucm2/Tegra/max98089/lge-x3-HiFi.conf +@@ -11,20 +11,16 @@ SectionDevice."Speaker" { + cset "name='Speaker Switch' on" + cset "name='Int Spk Switch' on" + +- cset "name='Left SPK Mixer Left DAC1 Switch' on" +- cset "name='Left SPK Mixer Left DAC2 Switch' on" +- cset "name='Left SPK Mixer Right DAC1 Switch' on" +- cset "name='Left SPK Mixer Right DAC2 Switch' on" ++ cset "name='Left SPK Mixer Left DAC Switch' on" ++ cset "name='Left SPK Mixer Right DAC Switch' on" + ] + + DisableSequence [ + cset "name='Speaker Switch' off" + cset "name='Int Spk Switch' off" + +- cset "name='Left SPK Mixer Left DAC1 Switch' off" +- cset "name='Left SPK Mixer Left DAC2 Switch' off" +- cset "name='Left SPK Mixer Right DAC1 Switch' off" +- cset "name='Left SPK Mixer Right DAC2 Switch' off" ++ cset "name='Left SPK Mixer Left DAC Switch' off" ++ cset "name='Left SPK Mixer Right DAC Switch' off" + ] + + Value { +@@ -46,19 +42,15 @@ SectionDevice."Headphones" { + EnableSequence [ + cset "name='Headphone Switch' on" + +- cset "name='Left HP Mixer Left DAC1 Switch' on" +- cset "name='Left HP Mixer Left DAC2 Switch' on" +- cset "name='Right HP Mixer Right DAC1 Switch' on" +- cset "name='Right HP Mixer Right DAC2 Switch' on" ++ cset "name='Left HP Mixer Left DAC Switch' on" ++ cset "name='Right HP Mixer Right DAC Switch' on" + ] + + DisableSequence [ + cset "name='Headphone Switch' off" + +- cset "name='Left HP Mixer Left DAC1 Switch' off" +- cset "name='Left HP Mixer Left DAC2 Switch' off" +- cset "name='Right HP Mixer Right DAC1 Switch' off" +- cset "name='Right HP Mixer Right DAC2 Switch' off" ++ cset "name='Left HP Mixer Left DAC Switch' off" ++ cset "name='Right HP Mixer Right DAC Switch' off" + ] + + Value { +diff --git a/ucm2/Tegra/max98089/lge-x3-VoiceCall.conf b/ucm2/Tegra/max98089/lge-x3-VoiceCall.conf +index 1634c7b..8e3a389 100644 +--- a/ucm2/Tegra/max98089/lge-x3-VoiceCall.conf ++++ b/ucm2/Tegra/max98089/lge-x3-VoiceCall.conf +@@ -11,20 +11,16 @@ SectionDevice."Speaker" { + cset "name='Speaker Switch' on" + cset "name='Int Spk Switch' on" + +- cset "name='Left SPK Mixer Left DAC1 Switch' on" +- cset "name='Left SPK Mixer Left DAC2 Switch' on" +- cset "name='Left SPK Mixer Right DAC1 Switch' on" +- cset "name='Left SPK Mixer Right DAC2 Switch' on" ++ cset "name='Left SPK Mixer Left DAC Switch' on" ++ cset "name='Left SPK Mixer Right DAC Switch' on" + ] + + DisableSequence [ + cset "name='Speaker Switch' off" + cset "name='Int Spk Switch' off" + +- cset "name='Left SPK Mixer Left DAC1 Switch' off" +- cset "name='Left SPK Mixer Left DAC2 Switch' off" +- cset "name='Left SPK Mixer Right DAC1 Switch' off" +- cset "name='Left SPK Mixer Right DAC2 Switch' off" ++ cset "name='Left SPK Mixer Left DAC Switch' off" ++ cset "name='Left SPK Mixer Right DAC Switch' off" + ] + + Value { +@@ -47,30 +43,22 @@ SectionDevice."Earpiece" { + cset "name='Receiver Switch' on" + cset "name='Earpiece Switch' on" + +- cset "name='Left REC Mixer Left DAC1 Switch' on" +- cset "name='Left REC Mixer Left DAC2 Switch' on" +- cset "name='Left REC Mixer Right DAC1 Switch' on" +- cset "name='Left REC Mixer Right DAC2 Switch' on" ++ cset "name='Left REC Mixer Left DAC Switch' on" ++ cset "name='Left REC Mixer Right DAC Switch' on" + +- cset "name='Right REC Mixer Left DAC1 Switch' on" +- cset "name='Right REC Mixer Left DAC2 Switch' on" +- cset "name='Right REC Mixer Right DAC1 Switch' on" +- cset "name='Right REC Mixer Right DAC2 Switch' on" ++ cset "name='Right REC Mixer Left DAC Switch' on" ++ cset "name='Right REC Mixer Right DAC Switch' on" + ] + + DisableSequence [ + cset "name='Receiver Switch' off" + cset "name='Earpiece Switch' off" + +- cset "name='Left REC Mixer Left DAC1 Switch' off" +- cset "name='Left REC Mixer Left DAC2 Switch' off" +- cset "name='Left REC Mixer Right DAC1 Switch' off" +- cset "name='Left REC Mixer Right DAC2 Switch' off" ++ cset "name='Left REC Mixer Left DAC Switch' off" ++ cset "name='Left REC Mixer Right DAC Switch' off" + +- cset "name='Right REC Mixer Left DAC1 Switch' off" +- cset "name='Right REC Mixer Left DAC2 Switch' off" +- cset "name='Right REC Mixer Right DAC1 Switch' off" +- cset "name='Right REC Mixer Right DAC2 Switch' off" ++ cset "name='Right REC Mixer Left DAC Switch' off" ++ cset "name='Right REC Mixer Right DAC Switch' off" + ] + + Value { +diff --git a/ucm2/Tegra/max98089/lge-x3.conf b/ucm2/Tegra/max98089/lge-x3.conf +index 9bea0cc..c90c4a1 100644 +--- a/ucm2/Tegra/max98089/lge-x3.conf ++++ b/ucm2/Tegra/max98089/lge-x3.conf +@@ -30,10 +30,8 @@ BootSequence [ + cset "name='Internal Mic 2 Switch' off" + cset "name='Mic Jack Switch' off" + +- cset "name='Right SPK Mixer Left DAC1 Switch' on" +- cset "name='Right SPK Mixer Left DAC2 Switch' on" +- cset "name='Right SPK Mixer Right DAC1 Switch' on" +- cset "name='Right SPK Mixer Right DAC2 Switch' on" ++ cset "name='Right SPK Mixer Left DAC Switch' on" ++ cset "name='Right SPK Mixer Right DAC Switch' on" + ] + + SectionUseCase."HiFi" { +-- +2.49.0 + + +From a1edaee761d301f7d010124599fd9f82c34fc7db Mon Sep 17 00:00:00 2001 +From: Markus Parviainen +Date: Sun, 27 Apr 2025 20:20:42 +0300 +Subject: [PATCH 07/24] Fix Presonus Revelator IO44 HWChannels count + +Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/557 +Signed-off-by: Markus Parviainen +Signed-off-by: Jaroslav Kysela +--- + ucm2/USB-Audio/Presonus/Revelator-IO-44-HiFi.conf | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/ucm2/USB-Audio/Presonus/Revelator-IO-44-HiFi.conf b/ucm2/USB-Audio/Presonus/Revelator-IO-44-HiFi.conf +index f223e08..6439613 100644 +--- a/ucm2/USB-Audio/Presonus/Revelator-IO-44-HiFi.conf ++++ b/ucm2/USB-Audio/Presonus/Revelator-IO-44-HiFi.conf +@@ -59,7 +59,7 @@ SectionDevice."Line1" { + Macro.pcm_split.SplitPCMDevice { + Name "revelator_stereo_out" + Direction Playback +- HWChannels 2 ++ HWChannels 6 + Channels 2 + Channel0 0 + Channel1 1 +@@ -78,7 +78,7 @@ SectionDevice."Line2" { + Macro.pcm_split.SplitPCMDevice { + Name "revelator_stereo_out" + Direction Playback +- HWChannels 2 ++ HWChannels 6 + Channels 2 + Channel0 2 + Channel1 3 +@@ -97,7 +97,7 @@ SectionDevice."Line3" { + Macro.pcm_split.SplitPCMDevice { + Name "revelator_stereo_out" + Direction Playback +- HWChannels 2 ++ HWChannels 6 + Channels 2 + Channel0 4 + Channel1 5 +-- +2.49.0 + + +From aa25928dd03299afc9bff994f06c37fc700bb8c0 Mon Sep 17 00:00:00 2001 +From: Johan Hovold +Date: Thu, 15 May 2025 15:06:56 +0200 +Subject: [PATCH 08/24] ucm2: Qualcomm: sc8280xp: fix internal microphones + device + +A recent change renamed the internal microphones device from "DMic01" to +"Mic", but the latter name is already used by the headset microphone so +this breaks the internal microphones on the Lenovo ThinkPad X13s. + +Rename the headset microphone device so that the names are unique and +fix up the jack hw mute property which is still using the old name. + +Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/563 +Fixes: ea7a065a7b50 ("ucm: fix SectionDevice identifiers") +Signed-off-by: Johan Hovold +Signed-off-by: Jaroslav Kysela +--- + ucm2/Qualcomm/sc8280xp/HiFi.conf | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/ucm2/Qualcomm/sc8280xp/HiFi.conf b/ucm2/Qualcomm/sc8280xp/HiFi.conf +index e20aa9c..916f1ee 100644 +--- a/ucm2/Qualcomm/sc8280xp/HiFi.conf ++++ b/ucm2/Qualcomm/sc8280xp/HiFi.conf +@@ -50,8 +50,8 @@ SectionDevice."Headphones" { + } + } + +-SectionDevice."Mic" { +- Comment "Mic" ++SectionDevice."Headset" { ++ Comment "Headset microphone" + + Include.wcdmice.File "/codecs/wcd938x/HeadphoneMicEnableSeq.conf" + Include.wcdmicd.File "/codecs/wcd938x/HeadphoneMicDisableSeq.conf" +@@ -63,12 +63,12 @@ SectionDevice."Mic" { + CapturePCM "hw:${CardId},2" + CaptureMixerElem "ADC2" + JackControl "Mic Jack" +- JackHWMute "DMic01" ++ JackHWMute "Mic" + } + } + + SectionDevice."Mic" { +- Comment "Microphone" ++ Comment "Internal microphones" + + Include.vadm0e.File "/codecs/qcom-lpass/va-macro/DMIC0EnableSeq.conf" + Include.vadm0d.File "/codecs/qcom-lpass/va-macro/DMIC0DisableSeq.conf" +-- +2.49.0 + + +From 88e1cd78633ea0ad46115ffe8779140fa91fd2f5 Mon Sep 17 00:00:00 2001 +From: Johan Hovold +Date: Thu, 15 May 2025 15:14:53 +0200 +Subject: [PATCH 09/24] ucm2: Qualcomm: sm8650: QRD: fix headset jack hw mute + +A recent change renamed the internal microphone devices but failed to +update the headset jack hw mute properties that are still using the old +names. + +Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/563 +Fixes: ea7a065a7b50 ("ucm: fix SectionDevice identifiers") +Signed-off-by: Johan Hovold +Signed-off-by: Jaroslav Kysela +--- + ucm2/Qualcomm/sm8650/QRD/HiFi.conf | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/ucm2/Qualcomm/sm8650/QRD/HiFi.conf b/ucm2/Qualcomm/sm8650/QRD/HiFi.conf +index 4336525..ca40c29 100644 +--- a/ucm2/Qualcomm/sm8650/QRD/HiFi.conf ++++ b/ucm2/Qualcomm/sm8650/QRD/HiFi.conf +@@ -77,8 +77,8 @@ SectionDevice."Headset" { + CapturePCM "hw:${CardId},2" + CaptureMixerElem "ADC2" + JackControl "Mic Jack" +- JackHWMute "Bottom" +- JackHWMute "Back" ++ JackHWMute "Mic1" ++ JackHWMute "Mic2" + } + } + +-- +2.49.0 + + +From bab88e0c31cee1c2603428c2ce6444aea343b646 Mon Sep 17 00:00:00 2001 +From: Johan Hovold +Date: Thu, 15 May 2025 15:17:02 +0200 +Subject: [PATCH 10/24] ucm2: tegra: max98090: fix headphones conflicting + device + +A recent change renames the speaker device but failed to update the +headphones conflicting device list. + +Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/563 +Fixes: ea7a065a7b50 ("ucm: fix SectionDevice identifiers") +Signed-off-by: Johan Hovold +Signed-off-by: Jaroslav Kysela +--- + ucm2/Tegra/max98090/HiFi.conf | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/ucm2/Tegra/max98090/HiFi.conf b/ucm2/Tegra/max98090/HiFi.conf +index d6e4e9d..5d4ef71 100644 +--- a/ucm2/Tegra/max98090/HiFi.conf ++++ b/ucm2/Tegra/max98090/HiFi.conf +@@ -33,7 +33,7 @@ SectionDevice."Headphones" { + Comment = "Headphones" + + ConflictingDevice [ +- "Speakers" ++ "Speaker" + ] + + EnableSequence [ +-- +2.49.0 + + +From 24d62b54d5ad6c7e6f9cff4cedcc334b1c98602f Mon Sep 17 00:00:00 2001 +From: Johan Hovold +Date: Thu, 15 May 2025 15:19:01 +0200 +Subject: [PATCH 11/24] ucm2: USB-Audio: Behringer: Flow8: fix conflicting + devices + +A recent change renamed the Line-56 and Line-78 devices but failed to +update the conflicting device lists. + +Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/563 +Fixes: ea7a065a7b50 ("ucm: fix SectionDevice identifiers") +Signed-off-by: Johan Hovold +Signed-off-by: Jaroslav Kysela +--- + ucm2/USB-Audio/Behringer/Flow8-Recording-Hifi.conf | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/ucm2/USB-Audio/Behringer/Flow8-Recording-Hifi.conf b/ucm2/USB-Audio/Behringer/Flow8-Recording-Hifi.conf +index 5dce19c..8ce7590 100644 +--- a/ucm2/USB-Audio/Behringer/Flow8-Recording-Hifi.conf ++++ b/ucm2/USB-Audio/Behringer/Flow8-Recording-Hifi.conf +@@ -157,7 +157,7 @@ SectionDevice."Line5" { + Comment "Line/Inst 5 (L)" + + ConflictingDevice [ +- "Line56" ++ "Line9" + ] + + Value { +@@ -177,7 +177,7 @@ SectionDevice."Line6" { + Comment "Line/Inst(HiZ) 6 (R)" + + ConflictingDevice [ +- "Line56" ++ "Line9" + ] + + Value { +@@ -197,7 +197,7 @@ SectionDevice."Line7" { + Comment "Line/Inst 7 (L)" + + ConflictingDevice [ +- "Line78" ++ "Line10" + ] + + Value { +@@ -217,7 +217,7 @@ SectionDevice."Line8" { + Comment "Line/Inst(HiZ) 8 (R)" + + ConflictingDevice [ +- "Line78" ++ "Line10" + ] + + Value { +-- +2.49.0 + + +From 1f816194a9feb2ce0c973ccc2a93551a6f641d77 Mon Sep 17 00:00:00 2001 +From: Hiago De Franco +Date: Mon, 12 May 2025 13:57:32 -0300 +Subject: [PATCH 12/24] ucm2: IO-Boards: Toradex: smarc: add support + +Add support for Toradex SMARC Development board, using the WM8904 audio +codec. + +This is a carrier board for the Toradex SMARC family, where any SMARC +SoM can be connected to it, therefore this is being added to the +IO-Boards instead of a specific hardware vendor. + +Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/562 +Signed-off-by: Hiago De Franco +Signed-off-by: Jaroslav Kysela +--- + ucm2/IO-Boards/Toradex/smarc/dev-HiFi.conf | 39 +++++++++++++++++++ + ucm2/IO-Boards/Toradex/smarc/dev.conf | 17 ++++++++ + ucm2/conf.d/simple-card/tdx-smarc-wm8904.conf | 1 + + 3 files changed, 57 insertions(+) + create mode 100644 ucm2/IO-Boards/Toradex/smarc/dev-HiFi.conf + create mode 100644 ucm2/IO-Boards/Toradex/smarc/dev.conf + create mode 120000 ucm2/conf.d/simple-card/tdx-smarc-wm8904.conf + +diff --git a/ucm2/IO-Boards/Toradex/smarc/dev-HiFi.conf b/ucm2/IO-Boards/Toradex/smarc/dev-HiFi.conf +new file mode 100644 +index 0000000..7d2dffc +--- /dev/null ++++ b/ucm2/IO-Boards/Toradex/smarc/dev-HiFi.conf +@@ -0,0 +1,39 @@ ++# Use case configuration for Toradex SMARC Development Carrier Board ++# This is a carrier board for the Toradex SMARC family, where any Toradex SMARC ++# SoM (with different SoCs as iMX8MP, iMX95...) can be connected to it. ++ ++SectionDevice."Headphones" { ++ Comment "Headphones" ++ ++ EnableSequence [ ++ cset "name='Headphone Switch' on" ++ ] ++ ++ DisableSequence [ ++ cset "name='Headphone Switch' off" ++ ] ++ ++ Value { ++ PlaybackPCM "hw:${CardId}" ++ PlaybackVolume "Headphone Volume" ++ PlaybackSwitch "Headphone Switch" ++ } ++} ++ ++SectionDevice."Mic" { ++ Comment "Microphone" ++ ++ EnableSequence [ ++ cset "name='Capture Switch' on" ++ ] ++ ++ DisableSequence [ ++ cset "name='Capture Switch' off" ++ ] ++ ++ Value { ++ CapturePCM "hw:${CardId}" ++ CaptureVolume "Capture Volume" ++ CaptureSwitch "Capture Switch" ++ } ++} +diff --git a/ucm2/IO-Boards/Toradex/smarc/dev.conf b/ucm2/IO-Boards/Toradex/smarc/dev.conf +new file mode 100644 +index 0000000..e795068 +--- /dev/null ++++ b/ucm2/IO-Boards/Toradex/smarc/dev.conf +@@ -0,0 +1,17 @@ ++# Use case configuration for Toradex SMARC Development Carrier Board ++# This is a carrier board for the Toradex SMARC family, where any Toradex SMARC ++# SoM (with different SoCs as iMX8MP, iMX95...) can be connected to it. ++ ++Syntax 4 ++ ++SectionUseCase."HiFi" { ++ File "/IO-Boards/Toradex/smarc/dev-HiFi.conf" ++ Comment "Default" ++} ++ ++BootSequence [ ++ cset "name='Headphone Volume' 50%" ++ cset "name='Left Capture Inverting Mux' 'IN1L'" ++ cset "name='Right Capture Inverting Mux' 'IN1R'" ++ cset "name='Capture Volume' 31" ++] +diff --git a/ucm2/conf.d/simple-card/tdx-smarc-wm8904.conf b/ucm2/conf.d/simple-card/tdx-smarc-wm8904.conf +new file mode 120000 +index 0000000..096f833 +--- /dev/null ++++ b/ucm2/conf.d/simple-card/tdx-smarc-wm8904.conf +@@ -0,0 +1 @@ ++../../IO-Boards/Toradex/smarc/dev.conf +\ No newline at end of file +-- +2.49.0 + + +From ac918f9b606f6bfe102c449997a1bcab01934db0 Mon Sep 17 00:00:00 2001 +From: Flo +Date: Sat, 24 May 2025 11:52:12 +0200 +Subject: [PATCH 13/24] USB-Audio: Solid State Labs SSL 2 - fix capture + channels + +Same fix as for SSL+, commit fc17ed4. +Capture configuration is the same, with 4 channels. + + Capture: + Status: Stop + Interface 2 + Altset 1 + Format: S32_LE + Channels: 4 + Endpoint: 0x81 (1 IN) (ASYNC) + Rates: 44100, 48000, 88200, 96000, 176400, 192000 + Data packet interval: 125 us + Bits: 24 + Channel map: FL FR FC LFE + +Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/566 +Signed-off-by: Flo +Signed-off-by: Jaroslav Kysela +--- + ucm2/USB-Audio/SolidStateLabs/SSL2-HiFi.conf | 6 +++--- + ucm2/USB-Audio/SolidStateLabs/SSL2.conf | 2 +- + 2 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/ucm2/USB-Audio/SolidStateLabs/SSL2-HiFi.conf b/ucm2/USB-Audio/SolidStateLabs/SSL2-HiFi.conf +index 46b2e26..8663384 100644 +--- a/ucm2/USB-Audio/SolidStateLabs/SSL2-HiFi.conf ++++ b/ucm2/USB-Audio/SolidStateLabs/SSL2-HiFi.conf +@@ -6,7 +6,7 @@ Macro [ + Name "ssl2_mono_in" + Direction Capture + Channels 1 +- HWChannels 2 ++ HWChannels 4 + HWChannelPos0 MONO + HWChannelPos1 MONO + } +@@ -31,7 +31,7 @@ SectionDevice."Mic1" { + Macro.pcm_split.SplitPCMDevice { + Name "ssl2_mono_in" + Direction Capture +- HWChannels 2 ++ HWChannels 4 + Channels 1 + Channel0 0 + ChannelPos0 MONO +@@ -47,7 +47,7 @@ SectionDevice."Mic2" { + Macro.pcm_split.SplitPCMDevice { + Name "ssl2_mono_in" + Direction Capture +- HWChannels 2 ++ HWChannels 4 + Channels 1 + Channel0 1 + ChannelPos0 MONO +diff --git a/ucm2/USB-Audio/SolidStateLabs/SSL2.conf b/ucm2/USB-Audio/SolidStateLabs/SSL2.conf +index 5531834..3cdb60b 100644 +--- a/ucm2/USB-Audio/SolidStateLabs/SSL2.conf ++++ b/ucm2/USB-Audio/SolidStateLabs/SSL2.conf +@@ -6,6 +6,6 @@ SectionUseCase."HiFi" { + } + + Define.DirectPlaybackChannels 2 +-Define.DirectCaptureChannels 2 ++Define.DirectCaptureChannels 4 + + Include.dhw.File "/common/direct.conf" +-- +2.49.0 + + +From 421e37bae75efc1fc134fbc84bc301f041aaff3b Mon Sep 17 00:00:00 2001 +From: Craig McLure +Date: Tue, 6 May 2025 18:40:47 +0100 +Subject: [PATCH 14/24] USB-Audio: Added Beacn Mic and Studio Support + +Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/558 +Signed-off-by: Craig McLure +Signed-off-by: Jaroslav Kysela +--- + ucm2/USB-Audio/Beacn/Beacn-Mic-HiFi.conf | 63 ++++++ + ucm2/USB-Audio/Beacn/Beacn-Mic.conf | 11 ++ + .../Beacn/Beacn-Studio-USB1-Channels.conf | 41 ++++ + .../Beacn/Beacn-Studio-USB1-HiFi.conf | 35 ++++ + .../Beacn/Beacn-Studio-USB1-Link-HiFi.conf | 179 ++++++++++++++++++ + .../Beacn/Beacn-Studio-USB2-HiFi.conf | 175 +++++++++++++++++ + ucm2/USB-Audio/Beacn/Beacn-Studio.conf | 42 ++++ + ucm2/USB-Audio/USB-Audio.conf | 16 ++ + 8 files changed, 562 insertions(+) + create mode 100644 ucm2/USB-Audio/Beacn/Beacn-Mic-HiFi.conf + create mode 100644 ucm2/USB-Audio/Beacn/Beacn-Mic.conf + create mode 100644 ucm2/USB-Audio/Beacn/Beacn-Studio-USB1-Channels.conf + create mode 100644 ucm2/USB-Audio/Beacn/Beacn-Studio-USB1-HiFi.conf + create mode 100644 ucm2/USB-Audio/Beacn/Beacn-Studio-USB1-Link-HiFi.conf + create mode 100644 ucm2/USB-Audio/Beacn/Beacn-Studio-USB2-HiFi.conf + create mode 100644 ucm2/USB-Audio/Beacn/Beacn-Studio.conf + +diff --git a/ucm2/USB-Audio/Beacn/Beacn-Mic-HiFi.conf b/ucm2/USB-Audio/Beacn/Beacn-Mic-HiFi.conf +new file mode 100644 +index 0000000..2445531 +--- /dev/null ++++ b/ucm2/USB-Audio/Beacn/Beacn-Mic-HiFi.conf +@@ -0,0 +1,63 @@ ++Include.pcm_split.File "/common/pcm/split.conf" ++ ++Macro [ ++ { ++ SplitPCM { ++ Name "beacn_mic_stereo_out" ++ Direction Playback ++ Channels 2 ++ HWChannels 3 ++ HWChannelPos0 FL ++ HWChannelPos1 FR ++ HWChannelPos2 MONO ++ } ++ } ++ { ++ SplitPCM { ++ Name "beacn_mic_stereo_in" ++ Direction Capture ++ Channels 2 ++ HWChannels 4 ++ HWChannelPos0 FL ++ HWChannelPos1 FR ++ HWChannelPos2 MONO # Dry Mic ++ HWChannelPos3 MONO # Dry + Expander ++ } ++ } ++] ++ ++SectionDevice."Headphones" { ++ Comment "Headphones" ++ ++ Value { ++ PlaybackPriority 200 ++ } ++ Macro.pcm_split.SplitPCMDevice { ++ Name "beacn_mic_stereo_out" ++ Direction Playback ++ HWChannels 3 ++ Channels 2 ++ Channel0 0 ++ Channel1 1 ++ ChannelPos0 FL ++ ChannelPos1 FR ++ } ++} ++ ++SectionDevice."Mic" { ++ Comment "Microphone" ++ ++ Value { ++ CapturePriority 200 ++ } ++ Macro.pcm_split.SplitPCMDevice { ++ Name "beacn_mic_stereo_in" ++ Direction Capture ++ HWChannels 4 ++ Channels 2 ++ Channel0 0 ++ Channel1 1 ++ ChannelPos0 FL ++ ChannelPos1 FR ++ } ++} +diff --git a/ucm2/USB-Audio/Beacn/Beacn-Mic.conf b/ucm2/USB-Audio/Beacn/Beacn-Mic.conf +new file mode 100644 +index 0000000..95c6f81 +--- /dev/null ++++ b/ucm2/USB-Audio/Beacn/Beacn-Mic.conf +@@ -0,0 +1,11 @@ ++Comment "Beacn Mic USB" ++ ++SectionUseCase."HiFi" { ++ Comment "Default Alsa Profile" ++ File "/USB-Audio/Beacn/Beacn-Mic-HiFi.conf" ++} ++ ++Define.DirectPlaybackChannels 3 ++Define.DirectCaptureChannels 4 ++ ++Include.dhw.File "/common/direct.conf" +diff --git a/ucm2/USB-Audio/Beacn/Beacn-Studio-USB1-Channels.conf b/ucm2/USB-Audio/Beacn/Beacn-Studio-USB1-Channels.conf +new file mode 100644 +index 0000000..b9886f4 +--- /dev/null ++++ b/ucm2/USB-Audio/Beacn/Beacn-Studio-USB1-Channels.conf +@@ -0,0 +1,41 @@ ++Include.pcm_split.File "/common/pcm/split.conf" ++ ++Macro.playback.SplitPCM { ++ Name "beacn_studio_stereo_out" ++ Direction Playback ++ Channels 2 ++ HWChannels 11 ++ HWChannelPos0 FL # Headphone Left ++ HWChannelPos1 FR # Headphone Right ++ HWChannelPos2 MONO # Unused Channel ++ HWChannelPos3 FL # Link 1 Out Left ++ HWChannelPos4 FR # Link 1 Out Right ++ HWChannelPos5 FL # Link 2 Out Left ++ HWChannelPos6 FR # Link 2 Out Right ++ HWChannelPos7 FL # Link 3 Out Left ++ HWChannelPos8 FR # Link 3 Out Right ++ HWChannelPos9 FL # Link 4 Out Left ++ HWChannelPos10 FR # Link 4 Out Right ++} ++ ++Macro.capture.SplitPCM { ++ Name "beacn_studio_stereo_in" ++ Direction Capture ++ Channels 2 ++ HWChannels 12 ++ ++ HWChannelPos0 FL # Microphone Left ++ HWChannelPos1 FR # Microphone Right ++ ++ HWChannelPos2 MONO # UNKNOWN (Possible Dry Mic) ++ HWChannelPos3 MONO # UNKNOWN (Possible Dry + Expander) ++ ++ HWChannelPos4 FL # Link 1 In Left ++ HWChannelPos5 FR # Link 1 In Right ++ HWChannelPos6 FL # Link 2 In Left ++ HWChannelPos7 FR # Link 2 In Right ++ HWChannelPos8 FL # Link 3 In Left ++ HWChannelPos9 FR # Link 3 In Right ++ HWChannelPos10 FL # Link 4 In Left ++ HWChannelPos11 FR # Link 4 In Right ++} +diff --git a/ucm2/USB-Audio/Beacn/Beacn-Studio-USB1-HiFi.conf b/ucm2/USB-Audio/Beacn/Beacn-Studio-USB1-HiFi.conf +new file mode 100644 +index 0000000..8c90d5b +--- /dev/null ++++ b/ucm2/USB-Audio/Beacn/Beacn-Studio-USB1-HiFi.conf +@@ -0,0 +1,35 @@ ++SectionDevice."Headphones" { ++ Comment "Headphones" ++ ++ Value { ++ PlaybackPriority 100 ++ } ++ Macro.pcm_split.SplitPCMDevice { ++ Name "beacn_studio_stereo_out" ++ Direction Playback ++ HWChannels 11 ++ Channels 2 ++ Channel0 0 ++ Channel1 1 ++ ChannelPos0 FL ++ ChannelPos1 FR ++ } ++} ++ ++SectionDevice."Mic" { ++ Comment "Microphone" ++ ++ Value { ++ CapturePriority 100 ++ } ++ Macro.pcm_split.SplitPCMDevice { ++ Name "beacn_studio_stereo_in" ++ Direction Capture ++ HWChannels 12 ++ Channels 2 ++ Channel0 0 ++ Channel1 1 ++ ChannelPos0 FL ++ ChannelPos1 FR ++ } ++} +diff --git a/ucm2/USB-Audio/Beacn/Beacn-Studio-USB1-Link-HiFi.conf b/ucm2/USB-Audio/Beacn/Beacn-Studio-USB1-Link-HiFi.conf +new file mode 100644 +index 0000000..74ff142 +--- /dev/null ++++ b/ucm2/USB-Audio/Beacn/Beacn-Studio-USB1-Link-HiFi.conf +@@ -0,0 +1,179 @@ ++SectionDevice."Line1" { ++ Comment "Link 4" ++ ++ Value { ++ PlaybackPriority 400 ++ } ++ Macro.pcm_split.SplitPCMDevice { ++ Name "beacn_studio_stereo_out" ++ Direction Playback ++ HWChannels 11 ++ Channels 2 ++ Channel0 9 ++ Channel1 10 ++ ChannelPos0 FL ++ ChannelPos1 FR ++ } ++} ++ ++SectionDevice."Line2" { ++ Comment "Link 3" ++ ++ Value { ++ PlaybackPriority 400 ++ } ++ Macro.pcm_split.SplitPCMDevice { ++ Name "beacn_studio_stereo_out" ++ Direction Playback ++ HWChannels 11 ++ Channels 2 ++ Channel0 7 ++ Channel1 8 ++ ChannelPos0 FL ++ ChannelPos1 FR ++ } ++} ++ ++SectionDevice."Line3" { ++ Comment "Link 2" ++ ++ Value { ++ PlaybackPriority 400 ++ } ++ Macro.pcm_split.SplitPCMDevice { ++ Name "beacn_studio_stereo_out" ++ Direction Playback ++ HWChannels 11 ++ Channels 2 ++ Channel0 5 ++ Channel1 6 ++ ChannelPos0 FL ++ ChannelPos1 FR ++ } ++} ++ ++SectionDevice."Line4" { ++ Comment "Link 1" ++ ++ Value { ++ PlaybackPriority 400 ++ } ++ Macro.pcm_split.SplitPCMDevice { ++ Name "beacn_studio_stereo_out" ++ Direction Playback ++ HWChannels 11 ++ Channels 2 ++ Channel0 3 ++ Channel1 4 ++ ChannelPos0 FL ++ ChannelPos1 FR ++ } ++} ++ ++SectionDevice."Headphones" { ++ Comment "Headphones" ++ ++ Value { ++ PlaybackPriority 100 ++ } ++ Macro.pcm_split.SplitPCMDevice { ++ Name "beacn_studio_stereo_out" ++ Direction Playback ++ HWChannels 11 ++ Channels 2 ++ Channel0 0 ++ Channel1 1 ++ ChannelPos0 FL ++ ChannelPos1 FR ++ } ++} ++ ++SectionDevice."Line5" { ++ Comment "Link 4" ++ ++ Value { ++ PlaybackPriority 400 ++ } ++ Macro.pcm_split.SplitPCMDevice { ++ Name "beacn_studio_stereo_in" ++ Direction Capture ++ HWChannels 12 ++ Channels 2 ++ Channel0 10 ++ Channel1 11 ++ ChannelPos0 FL ++ ChannelPos1 FR ++ } ++} ++ ++SectionDevice."Line6" { ++ Comment "Link 3" ++ ++ Value { ++ PlaybackPriority 400 ++ } ++ Macro.pcm_split.SplitPCMDevice { ++ Name "beacn_studio_stereo_in" ++ Direction Capture ++ HWChannels 12 ++ Channels 2 ++ Channel0 8 ++ Channel1 9 ++ ChannelPos0 FL ++ ChannelPos1 FR ++ } ++} ++ ++SectionDevice."Line7" { ++ Comment "Link 2" ++ ++ Value { ++ PlaybackPriority 400 ++ } ++ Macro.pcm_split.SplitPCMDevice { ++ Name "beacn_studio_stereo_in" ++ Direction Capture ++ HWChannels 12 ++ Channels 2 ++ Channel0 6 ++ Channel1 7 ++ ChannelPos0 FL ++ ChannelPos1 FR ++ } ++} ++ ++SectionDevice."Line8" { ++ Comment "Link 1" ++ ++ Value { ++ PlaybackPriority 400 ++ } ++ Macro.pcm_split.SplitPCMDevice { ++ Name "beacn_studio_stereo_in" ++ Direction Capture ++ HWChannels 12 ++ Channels 2 ++ Channel0 4 ++ Channel1 5 ++ ChannelPos0 FL ++ ChannelPos1 FR ++ } ++} ++ ++SectionDevice."Mic" { ++ Comment "Microphone" ++ ++ Value { ++ CapturePriority 100 ++ } ++ Macro.pcm_split.SplitPCMDevice { ++ Name "beacn_studio_stereo_in" ++ Direction Capture ++ HWChannels 12 ++ Channels 2 ++ Channel0 0 ++ Channel1 1 ++ ChannelPos0 FL ++ ChannelPos1 FR ++ } ++} +diff --git a/ucm2/USB-Audio/Beacn/Beacn-Studio-USB2-HiFi.conf b/ucm2/USB-Audio/Beacn/Beacn-Studio-USB2-HiFi.conf +new file mode 100644 +index 0000000..5988d41 +--- /dev/null ++++ b/ucm2/USB-Audio/Beacn/Beacn-Studio-USB2-HiFi.conf +@@ -0,0 +1,175 @@ ++Include.pcm_split.File "/common/pcm/split.conf" ++ ++Macro.playback.SplitPCM { ++ Name "beacn_studio_stereo_out" ++ Direction Playback ++ Channels 2 ++ HWChannels 8 ++ HWChannelPos0 FL ++ HWChannelPos1 FR ++ HWChannelPos2 FL ++ HWChannelPos3 FR ++ HWChannelPos4 FL ++ HWChannelPos5 FR ++ HWChannelPos6 FL ++ HWChannelPos7 FR ++} ++ ++Macro.capture.SplitPCM { ++ Name "beacn_studio_stereo_in" ++ Direction Capture ++ Channels 2 ++ HWChannels 8 ++ HWChannelPos0 FL ++ HWChannelPos1 FR ++ HWChannelPos2 FL ++ HWChannelPos3 FR ++ HWChannelPos4 FL ++ HWChannelPos5 FR ++ HWChannelPos6 FL ++ HWChannelPos7 FR ++} ++ ++SectionDevice."Line1" { ++ Comment "Link 4" ++ ++ Value { ++ PlaybackPriority 400 ++ } ++ Macro.pcm_split.SplitPCMDevice { ++ Name "beacn_studio_stereo_out" ++ Direction Playback ++ HWChannels 8 ++ Channels 2 ++ Channel0 6 ++ Channel1 7 ++ ChannelPos0 FL ++ ChannelPos1 FR ++ } ++} ++ ++SectionDevice."Line2" { ++ Comment "Link 3" ++ ++ Value { ++ PlaybackPriority 400 ++ } ++ Macro.pcm_split.SplitPCMDevice { ++ Name "beacn_studio_stereo_out" ++ Direction Playback ++ HWChannels 8 ++ Channels 2 ++ Channel0 4 ++ Channel1 5 ++ ChannelPos0 FL ++ ChannelPos1 FR ++ } ++} ++ ++SectionDevice."Line3" { ++ Comment "Link 2" ++ ++ Value { ++ PlaybackPriority 400 ++ } ++ Macro.pcm_split.SplitPCMDevice { ++ Name "beacn_studio_stereo_out" ++ Direction Playback ++ HWChannels 8 ++ Channels 2 ++ Channel0 2 ++ Channel1 3 ++ ChannelPos0 FL ++ ChannelPos1 FR ++ } ++} ++ ++SectionDevice."Line4" { ++ Comment "Link 1" ++ ++ Value { ++ PlaybackPriority 400 ++ } ++ Macro.pcm_split.SplitPCMDevice { ++ Name "beacn_studio_stereo_out" ++ Direction Playback ++ HWChannels 8 ++ Channels 2 ++ Channel0 0 ++ Channel1 1 ++ ChannelPos0 FL ++ ChannelPos1 FR ++ } ++} ++ ++SectionDevice."Line5" { ++ Comment "Link 4" ++ ++ Value { ++ PlaybackPriority 400 ++ } ++ Macro.pcm_split.SplitPCMDevice { ++ Name "beacn_studio_stereo_in" ++ Direction Capture ++ HWChannels 8 ++ Channels 2 ++ Channel0 6 ++ Channel1 7 ++ ChannelPos0 FL ++ ChannelPos1 FR ++ } ++} ++ ++SectionDevice."Line6" { ++ Comment "Link 3" ++ ++ Value { ++ PlaybackPriority 400 ++ } ++ Macro.pcm_split.SplitPCMDevice { ++ Name "beacn_studio_stereo_in" ++ Direction Capture ++ HWChannels 8 ++ Channels 2 ++ Channel0 4 ++ Channel1 5 ++ ChannelPos0 FL ++ ChannelPos1 FR ++ } ++} ++ ++SectionDevice."Line7" { ++ Comment "Link 2" ++ ++ Value { ++ PlaybackPriority 400 ++ } ++ Macro.pcm_split.SplitPCMDevice { ++ Name "beacn_studio_stereo_in" ++ Direction Capture ++ HWChannels 8 ++ Channels 2 ++ Channel0 2 ++ Channel1 3 ++ ChannelPos0 FL ++ ChannelPos1 FR ++ } ++} ++ ++SectionDevice."Line8" { ++ Comment "Link 1" ++ ++ Value { ++ PlaybackPriority 400 ++ } ++ Macro.pcm_split.SplitPCMDevice { ++ Name "beacn_studio_stereo_in" ++ Direction Capture ++ HWChannels 8 ++ Channels 2 ++ Channel0 0 ++ Channel1 1 ++ ChannelPos0 FL ++ ChannelPos1 FR ++ } ++} +diff --git a/ucm2/USB-Audio/Beacn/Beacn-Studio.conf b/ucm2/USB-Audio/Beacn/Beacn-Studio.conf +new file mode 100644 +index 0000000..1b3adc0 +--- /dev/null ++++ b/ucm2/USB-Audio/Beacn/Beacn-Studio.conf +@@ -0,0 +1,42 @@ ++# The Beacn Studio has two USB ports which both present different PIDs, so we do ++# individual checks, and load the appropriate configs for the port connected. ++ ++Comment "Beacn Studio USB" ++If.usb1 { ++ Condition { ++ Type String ++ Haystack "${CardComponents}" ++ Needle "USB33ae:0003" ++ } ++ True { ++ # Channel configuration is common between all the profiles, so we'll include it here ++ Include.pcm_split.File "/USB-Audio/Beacn/Beacn-Studio-USB1-Channels.conf" ++ ++ # If the user isn't using the 'Dual PC' feature of the Beacn Studio, there isn't really ++ # much point presenting them with an additional 4 unusable inputs and outputs, so we'll ++ # offer two profile options so those channels can be hidden. ++ SectionUseCase."Basic" { ++ Comment "Beacn Studio" ++ File "/USB-Audio/Beacn/Beacn-Studio-USB1-HiFi.conf" ++ } ++ ++ SectionUseCase."Link" { ++ Comment "Beacn Studio with Link" ++ File "/USB-Audio/Beacn/Beacn-Studio-USB1-Link-HiFi.conf" ++ } ++ } ++} ++ ++If.usb2 { ++ Condition { ++ Type String ++ Haystack "${CardComponents}" ++ Needle "USB33ae:4003" ++ } ++ True { ++ SectionUseCase."Link" { ++ Comment "Beacn Studio Link" ++ File "/USB-Audio/Beacn/Beacn-Studio-USB2-HiFi.conf" ++ } ++ } ++} +diff --git a/ucm2/USB-Audio/USB-Audio.conf b/ucm2/USB-Audio/USB-Audio.conf +index fe2cd46..d90db39 100644 +--- a/ucm2/USB-Audio/USB-Audio.conf ++++ b/ucm2/USB-Audio/USB-Audio.conf +@@ -541,7 +541,23 @@ If.ssl2plus { + ProfileName "SolidStateLabs/SSL2Plus" + } + } ++If.beacn-mic { ++ Condition { ++ Type String ++ Haystack "${CardComponents}" ++ Needle "USB33ae:0001" ++ } ++ True.Define.ProfileName "Beacn/Beacn-Mic" ++} + ++If.beacn-studio { ++ Condition { ++ Type RegexMatch ++ String "${CardComponents}" ++ Regex "USB33ae:[04]003" ++ } ++ True.Define.ProfileName "Beacn/Beacn-Studio" ++} + If.mixremap { + Condition { + Type String +-- +2.49.0 + + +From e055d16bdf971e26c3d92d998bccb2ca4e4f3c1a Mon Sep 17 00:00:00 2001 +From: binarycraft007 +Date: Mon, 2 Jun 2025 13:41:38 +0800 +Subject: [PATCH 15/24] ucm2: Qualcomm: add ASUS Vivobook S 15 support + +S15 supports: + - 2 speakers. + - 2 dmics + - headset with mic. + +This patch adds support to all these, however only speakers, dmic and +headset playback is tested. + +Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/570 +Signed-off-by: binarycraft007 +Signed-off-by: Jaroslav Kysela +--- + ucm2/Qualcomm/x1e80100/x1e80100.conf | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/ucm2/Qualcomm/x1e80100/x1e80100.conf b/ucm2/Qualcomm/x1e80100/x1e80100.conf +index 10faf5f..ecbb13d 100644 +--- a/ucm2/Qualcomm/x1e80100/x1e80100.conf ++++ b/ucm2/Qualcomm/x1e80100/x1e80100.conf +@@ -6,7 +6,7 @@ If.LENOVOT14s { + Condition { + Type RegexMatch + String "${var:DMI_info}" +- Regex "LENOVO.*Think((Pad T14s Gen 6.*)|(Book 16 G7 QOY))|(HP.*Omnibook X.*)|(ASUSTeK COMPUTER.*ASUS Zenbook A14)|(Microsoft Corporation.*Surface.*Microsoft Surface Laptop, 7th Edition)" ++ Regex "LENOVO.*Think((Pad T14s Gen 6.*)|(Book 16 G7 QOY))|(HP.*Omnibook X.*)|ASUSTeK COMPUTER.*ASUS (Zenbook A14|Vivobook S 15)|(Microsoft Corporation.*Surface.*Microsoft Surface Laptop, 7th Edition)" + } + True.Include.t14s.File "/Qualcomm/x1e80100/LENOVO-T14s.conf" + } +-- +2.49.0 + + +From 59d53fd9cac27e9a05623251aefa6d06da94260c Mon Sep 17 00:00:00 2001 +From: Craig McLure +Date: Wed, 4 Jun 2025 23:25:51 +0100 +Subject: [PATCH 16/24] Changed 'Stream Mix' channel names to match the latest + Window release + +Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/572 +Signed-off-by: Craig McLure +Signed-off-by: Jaroslav Kysela +--- + ucm2/USB-Audio/GoXLR/GoXLR-HiFi.conf | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/ucm2/USB-Audio/GoXLR/GoXLR-HiFi.conf b/ucm2/USB-Audio/GoXLR/GoXLR-HiFi.conf +index 6614b00..17c6580 100644 +--- a/ucm2/USB-Audio/GoXLR/GoXLR-HiFi.conf ++++ b/ucm2/USB-Audio/GoXLR/GoXLR-HiFi.conf +@@ -140,7 +140,7 @@ SectionDevice."Line3" { + } + + SectionDevice."Line4" { +- Comment "Broadcast Stream Mix" ++ Comment "Stream Mix 1" + + Value { + CapturePriority 200 +@@ -200,7 +200,7 @@ If.mix2 { + String2 "25" + } + True.SectionDevice."Line6" { +- Comment "Broadcast Stream Mix 2" ++ Comment "Stream Mix 2" + + Value { + CapturePriority 200 +-- +2.49.0 + + +From bd5cf3839f902b67a355669fdf1bd3231e0cb4c1 Mon Sep 17 00:00:00 2001 +From: Mohammad Rafi Shaik +Date: Mon, 9 Jun 2025 20:52:42 +0530 +Subject: [PATCH 17/24] Qualcomm: Add QCS9075-IQ-EVK HiFi config + +Add UCM2 configs for the Qualcomm QCS9075-IQ-EVK Board to handle: + - I2S Speaker Amplifier + - I2S Mic + +Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/576 +Signed-off-by: Mohammad Rafi Shaik +Signed-off-by: Jaroslav Kysela +--- + .../qcs9075/qcs9075-iq-evk-snd-card/HiFi.conf | 29 +++++++++++++++++++ + .../qcs9075-iq-evk-snd-card.conf | 6 ++++ + .../qcs9075/qcs9075-iq-evk-snd-card.conf | 6 ++++ + 3 files changed, 41 insertions(+) + create mode 100644 ucm2/Qualcomm/qcs9075/qcs9075-iq-evk-snd-card/HiFi.conf + create mode 100644 ucm2/Qualcomm/qcs9075/qcs9075-iq-evk-snd-card/qcs9075-iq-evk-snd-card.conf + create mode 100644 ucm2/conf.d/qcs9075/qcs9075-iq-evk-snd-card.conf + +diff --git a/ucm2/Qualcomm/qcs9075/qcs9075-iq-evk-snd-card/HiFi.conf b/ucm2/Qualcomm/qcs9075/qcs9075-iq-evk-snd-card/HiFi.conf +new file mode 100644 +index 0000000..6673324 +--- /dev/null ++++ b/ucm2/Qualcomm/qcs9075/qcs9075-iq-evk-snd-card/HiFi.conf +@@ -0,0 +1,29 @@ ++SectionVerb { ++ Value { ++ TQ "HiFi" ++ } ++ EnableSequence [ ++ cset "name='PRIMARY_SDR_MI2S_RX Audio Mixer MULTIMEDIA0' 1" ++ cset "name='MULTIMEDIA1 Audio Mixer TERTIARY_SDR_MI2S_TX' 1" ++ ] ++} ++ ++SectionDevice."Speaker" { ++ Comment "Speaker playback" ++ ++ Value { ++ PlaybackPriority 100 ++ PlaybackPCM "hw:${CardId},0" ++ PlaybackMixer "default:${CardId}" ++ PlaybackMixerElem "Speakers" ++ } ++} ++ ++SectionDevice."Mic" { ++ Comment "Mic" ++ ++ Value { ++ CapturePriority 100 ++ CapturePCM "hw:${CardId},1" ++ } ++} +diff --git a/ucm2/Qualcomm/qcs9075/qcs9075-iq-evk-snd-card/qcs9075-iq-evk-snd-card.conf b/ucm2/Qualcomm/qcs9075/qcs9075-iq-evk-snd-card/qcs9075-iq-evk-snd-card.conf +new file mode 100644 +index 0000000..669ba6b +--- /dev/null ++++ b/ucm2/Qualcomm/qcs9075/qcs9075-iq-evk-snd-card/qcs9075-iq-evk-snd-card.conf +@@ -0,0 +1,6 @@ ++Syntax 4 ++ ++SectionUseCase."HiFi" { ++ File "/Qualcomm/qcs9075/qcs9075-iq-evk-snd-card/HiFi.conf" ++ Comment "HiFi quality Music" ++} +diff --git a/ucm2/conf.d/qcs9075/qcs9075-iq-evk-snd-card.conf b/ucm2/conf.d/qcs9075/qcs9075-iq-evk-snd-card.conf +new file mode 100644 +index 0000000..1e49d38 +--- /dev/null ++++ b/ucm2/conf.d/qcs9075/qcs9075-iq-evk-snd-card.conf +@@ -0,0 +1,6 @@ ++Syntax 4 ++ ++SectionUseCase."HiFi" { ++ File "/Qualcomm/qcs9075/qcs9075-iq-evk-snd-card/HiFi.conf" ++ Comment "HiFi quality Music." ++} +-- +2.49.0 + + +From e7ec0f1ac3eebfa04e18a944d511bbb5fa57239d Mon Sep 17 00:00:00 2001 +From: Mohammad Rafi Shaik +Date: Tue, 10 Jun 2025 16:46:59 +0530 +Subject: [PATCH 18/24] ucm2: Qualcomm: Update the QCM6490 and QCS6490 hifi + conf files + +Rename the HiFi conf files for QCM6490-IDP and QCS6490-RB3Gen2 boards +to match with soundcard name. + +Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/577 +Signed-off-by: Mohammad Rafi Shaik +Signed-off-by: Jaroslav Kysela +--- + .../QCM6490-IDP/{QCM6490-IDP.conf => qcm6490-idp-snd-card.conf} | 0 + .../{QCS6490-RB3Gen2.conf => qcs6490-rb3gen2-snd-card.conf} | 0 + .../qcm6490/{QCM6490-IDP.conf => qcm6490-idp-snd-card.conf} | 0 + .../{QCS6490-RB3Gen2.conf => qcs6490-rb3gen2-snd-card.conf} | 0 + 4 files changed, 0 insertions(+), 0 deletions(-) + rename ucm2/Qualcomm/qcm6490/QCM6490-IDP/{QCM6490-IDP.conf => qcm6490-idp-snd-card.conf} (100%) + rename ucm2/Qualcomm/qcs6490/QCS6490-RB3Gen2/{QCS6490-RB3Gen2.conf => qcs6490-rb3gen2-snd-card.conf} (100%) + rename ucm2/conf.d/qcm6490/{QCM6490-IDP.conf => qcm6490-idp-snd-card.conf} (100%) + rename ucm2/conf.d/qcs6490/{QCS6490-RB3Gen2.conf => qcs6490-rb3gen2-snd-card.conf} (100%) + +diff --git a/ucm2/Qualcomm/qcm6490/QCM6490-IDP/QCM6490-IDP.conf b/ucm2/Qualcomm/qcm6490/QCM6490-IDP/qcm6490-idp-snd-card.conf +similarity index 100% +rename from ucm2/Qualcomm/qcm6490/QCM6490-IDP/QCM6490-IDP.conf +rename to ucm2/Qualcomm/qcm6490/QCM6490-IDP/qcm6490-idp-snd-card.conf +diff --git a/ucm2/Qualcomm/qcs6490/QCS6490-RB3Gen2/QCS6490-RB3Gen2.conf b/ucm2/Qualcomm/qcs6490/QCS6490-RB3Gen2/qcs6490-rb3gen2-snd-card.conf +similarity index 100% +rename from ucm2/Qualcomm/qcs6490/QCS6490-RB3Gen2/QCS6490-RB3Gen2.conf +rename to ucm2/Qualcomm/qcs6490/QCS6490-RB3Gen2/qcs6490-rb3gen2-snd-card.conf +diff --git a/ucm2/conf.d/qcm6490/QCM6490-IDP.conf b/ucm2/conf.d/qcm6490/qcm6490-idp-snd-card.conf +similarity index 100% +rename from ucm2/conf.d/qcm6490/QCM6490-IDP.conf +rename to ucm2/conf.d/qcm6490/qcm6490-idp-snd-card.conf +diff --git a/ucm2/conf.d/qcs6490/QCS6490-RB3Gen2.conf b/ucm2/conf.d/qcs6490/qcs6490-rb3gen2-snd-card.conf +similarity index 100% +rename from ucm2/conf.d/qcs6490/QCS6490-RB3Gen2.conf +rename to ucm2/conf.d/qcs6490/qcs6490-rb3gen2-snd-card.conf +-- +2.49.0 + + +From a98b12220989e2187a47b0e06ac9145c92232a8e Mon Sep 17 00:00:00 2001 +From: Mohammad Rafi Shaik +Date: Wed, 18 Jun 2025 16:46:18 +0530 +Subject: [PATCH 19/24] ucm2: Qualcomm: Update the HIFI enable mixer commands + for qcm6490-idp and qcs6490-rb3gen2 + +Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/577 +Signed-off-by: Mohammad Rafi Shaik +Signed-off-by: Jaroslav Kysela +--- + ucm2/Qualcomm/qcm6490/QCM6490-IDP/HiFi.conf | 8 ++++---- + ucm2/Qualcomm/qcs6490/QCS6490-RB3Gen2/HiFi.conf | 4 ++-- + 2 files changed, 6 insertions(+), 6 deletions(-) + +diff --git a/ucm2/Qualcomm/qcm6490/QCM6490-IDP/HiFi.conf b/ucm2/Qualcomm/qcm6490/QCM6490-IDP/HiFi.conf +index 0d6497e..0a0d331 100644 +--- a/ucm2/Qualcomm/qcm6490/QCM6490-IDP/HiFi.conf ++++ b/ucm2/Qualcomm/qcm6490/QCM6490-IDP/HiFi.conf +@@ -3,10 +3,10 @@ SectionVerb { + TQ "HiFi" + } + EnableSequence [ +- cset "name='WSA_CODEC_DMA_RX_0 Audio Mixer MULTIMEDIA0' 1" +- cset "name='MULTIMEDIA1 Audio Mixer VA_CODEC_DMA_TX_0' 1" +- cset "name='RX_CODEC_DMA_RX_0 Audio Mixer MULTIMEDIA2' 1" +- cset "name='MULTIMEDIA3 Audio Mixer TX_CODEC_DMA_TX_3' 1" ++ cset "name='WSA_CODEC_DMA_RX_0 Audio Mixer MultiMedia1' 1" ++ cset "name='MultiMedia2 Mixer VA_CODEC_DMA_TX_0' 1" ++ cset "name='RX_CODEC_DMA_RX_0 Audio Mixer MultiMedia3' 1" ++ cset "name='MultiMedia4 Mixer TX_CODEC_DMA_TX_3' 1" + ] + + Include.wsae.File "/codecs/wsa883x/DefaultEnableSeq.conf" +diff --git a/ucm2/Qualcomm/qcs6490/QCS6490-RB3Gen2/HiFi.conf b/ucm2/Qualcomm/qcs6490/QCS6490-RB3Gen2/HiFi.conf +index 954dbfa..2488523 100644 +--- a/ucm2/Qualcomm/qcs6490/QCS6490-RB3Gen2/HiFi.conf ++++ b/ucm2/Qualcomm/qcs6490/QCS6490-RB3Gen2/HiFi.conf +@@ -3,8 +3,8 @@ SectionVerb { + TQ "HiFi" + } + EnableSequence [ +- cset "name='WSA_CODEC_DMA_RX_0 Audio Mixer MULTIMEDIA0' 1" +- cset "name='MULTIMEDIA1 Audio Mixer VA_CODEC_DMA_TX_0' 1" ++ cset "name='WSA_CODEC_DMA_RX_0 Audio Mixer MultiMedia1' 1" ++ cset "name='MultiMedia2 Mixer VA_CODEC_DMA_TX_0' 1" + ] + + Include.wsae.File "/codecs/wsa883x/DefaultEnableSeq.conf" +-- +2.49.0 + + +From 56cbdfd04339cf9598cd9d57f5c1a382504ae902 Mon Sep 17 00:00:00 2001 +From: Peter Ujfalusi +Date: Thu, 12 Jun 2025 16:33:01 +0300 +Subject: [PATCH 20/24] UCM2: Intel: sof-hda-dsp: HiFi: Fix handling of mono + DMICs + +When a single DMIC is present in the system we need to set the +CaptureChannels to 1 since the PCM device only supports mono, PA/PW will +reject the profile since it cannot open the DMIC PCM device. + +Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/579 +Signed-off-by: Peter Ujfalusi +Signed-off-by: Jaroslav Kysela +--- + ucm2/Intel/sof-hda-dsp/HiFi.conf | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/ucm2/Intel/sof-hda-dsp/HiFi.conf b/ucm2/Intel/sof-hda-dsp/HiFi.conf +index 9689b56..e452f83 100644 +--- a/ucm2/Intel/sof-hda-dsp/HiFi.conf ++++ b/ucm2/Intel/sof-hda-dsp/HiFi.conf +@@ -34,6 +34,16 @@ If.dmic { + True { + CaptureChannels 4 + } ++ False.If.mono { ++ Condition { ++ Type RegexMatch ++ Regex "cfg-dmics:[1]" ++ String "${CardComponents}" ++ } ++ True { ++ CaptureChannels 1 ++ } ++ } + } + If.vol { + Condition { +-- +2.49.0 + + +From e4791900954c3951d15038822a55a3031aac49d2 Mon Sep 17 00:00:00 2001 +From: Shuming Fan +Date: Fri, 6 Jun 2025 12:47:08 +0800 +Subject: [PATCH 21/24] ucm2: sof-soundwire: add rt712-vb device + +Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/573 +Signed-off-by: Shuming Fan +Signed-off-by: Jaroslav Kysela +--- + ucm2/codecs/rt712/init.conf | 34 ++++++++++++++++++++++++++++------ + ucm2/sof-soundwire/rt712.conf | 29 +++++++++++++++++++++++++++++ + 2 files changed, 57 insertions(+), 6 deletions(-) + +diff --git a/ucm2/codecs/rt712/init.conf b/ucm2/codecs/rt712/init.conf +index e09bf7f..1e45380 100644 +--- a/ucm2/codecs/rt712/init.conf ++++ b/ucm2/codecs/rt712/init.conf +@@ -1,8 +1,30 @@ + # RT712 specific volume control settings + +-BootSequence [ +- cset "name='rt712 FU05 Playback Volume' 87" +- cset "name='rt712 ADC 23 Mux' 'MIC2'" +- cset "name='rt712 FU0F Capture Volume' 57" +- cset "name='rt712 FU0F Capture Switch' 1" +-] ++If.rt712_init { ++ Condition { ++ Type RegexMatch ++ Regex "(rt712(-sdca)?)" ++ String "${var:MultiMicShadow}" ++ } ++ True { ++ # RT712-VB integrated with DMIC ++ BootSequence [ ++ cset "name='rt712 FU05 Playback Volume' 87" ++ cset "name='rt712 ADC 23 Mux' 'MIC2'" ++ cset "name='rt712 FU0F Capture Volume' 57" ++ cset "name='rt712 FU0F Capture Switch' 1" ++ cset "name='rt712 FU1E Capture Switch' 1" ++ cset "name='rt712 FU1E Capture Volume' 47" ++ cset "name='rt712 ADC 0A Mux' 'DMIC1'" ++ cset "name='rt712 ADC 0B Mux' 'DMIC2'" ++ ] ++ } ++ False { ++ BootSequence [ ++ cset "name='rt712 FU05 Playback Volume' 87" ++ cset "name='rt712 ADC 23 Mux' 'MIC2'" ++ cset "name='rt712 FU0F Capture Volume' 57" ++ cset "name='rt712 FU0F Capture Switch' 1" ++ ] ++ } ++} +diff --git a/ucm2/sof-soundwire/rt712.conf b/ucm2/sof-soundwire/rt712.conf +index 409bef9..346cff1 100644 +--- a/ucm2/sof-soundwire/rt712.conf ++++ b/ucm2/sof-soundwire/rt712.conf +@@ -85,3 +85,32 @@ SectionDevice."Headset" { + JackControl "Headset Mic Jack" + } + } ++ ++If.codecmic { ++ Condition { ++ Type RegexMatch ++ Regex "(rt712(-sdca)?)" ++ String "${var:MultiMicShadow}" ++ } ++ True { ++ SectionDevice."Mic" { ++ Comment "SoundWire Microphones" ++ ++ EnableSequence [ ++ cset "name='rt712 FU1E Capture Switch' 1" ++ ] ++ ++ DisableSequence [ ++ cset "name='rt712 FU1E Capture Switch' 0" ++ ] ++ ++ Value { ++ CapturePriority 100 ++ CapturePCM "hw:${CardId},4" ++ CaptureSwitch "rt712 FU1E Capture Switch" ++ CaptureVolume "rt712 FU1E Capture Volume" ++ CaptureMixerElem "rt712 FU1E" ++ } ++ } ++ } ++} +-- +2.49.0 + + +From 436fbad2a02b91435645e039664af469595ab500 Mon Sep 17 00:00:00 2001 +From: DanielDecker <90106468+DanielDecker@users.noreply.github.com> +Date: Mon, 16 Jun 2025 18:27:21 +0200 +Subject: [PATCH 22/24] add MSI MAG B850M Mortar Wifi to USB-Audio.conf + +add MSI MAG B850M Mortar Wifi USB-ID for Realtek/ALC4080 to USB-Audio.conf + +Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/581 +Signed-off-by: DanielDecker <90106468+DanielDecker@users.noreply.github.com> +Signed-off-by: Jaroslav Kysela +--- + ucm2/USB-Audio/USB-Audio.conf | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/ucm2/USB-Audio/USB-Audio.conf b/ucm2/USB-Audio/USB-Audio.conf +index d90db39..ef88ded 100644 +--- a/ucm2/USB-Audio/USB-Audio.conf ++++ b/ucm2/USB-Audio/USB-Audio.conf +@@ -89,6 +89,7 @@ If.realtek-alc4080 { + # 0db0:a47c MSI MEG X570S Ace Max + # 0db0:a74b MSI MPG Z790 Edge Wifi + # 0db0:b202 MSI MAG Z690 Tomahawk Wifi ++ # 0db0:cc78 MSI MAG B850M Mortar Wifi + # 0db0:cd0e MSI X870 Tomahawk + # 0db0:d1d7 MSI PRO Z790-A WIFI + # 0db0:d6e7 MSI MPG X670E Carbon Wifi +@@ -96,7 +97,7 @@ If.realtek-alc4080 { + # 26ce:0a06 ASRock X670E/Z790 Taichi + # 26ce:0a08 ASRock Z790 PG-ITX/TB4, X870 Steel Legend + # 26ce:0a0b ASRock X870E Taichi +- Regex "USB((0414:a0(0e|1[0124]))|(0b05:(19(84|9[69])|1a(16|2[07]|5[23c]|97|f1)|1b(7c|9b|e1)))|(0db0:(005a|0b58|124b|151f|1feb|3130|36e7|4(19c|22d|240|88c)|543d|62a4|6c[0c]9|70d3|7696|82c7|8af7|961e|9e6d|a(073|228|47c|74b)|b202|cd0e|d1d7|d6e7|e1f8))|(26ce:0a0[68b]))" ++ Regex "USB((0414:a0(0e|1[0124]))|(0b05:(19(84|9[69])|1a(16|2[07]|5[23c]|97|f1)|1b(7c|9b|e1)))|(0db0:(005a|0b58|124b|151f|1feb|3130|36e7|4(19c|22d|240|88c)|543d|62a4|6c[0c]9|70d3|7696|82c7|8af7|961e|9e6d|a(073|228|47c|74b)|b202|c(c78|d0e)|d1d7|d6e7|e1f8))|(26ce:0a0[68b]))" + } + True.Define.ProfileName "Realtek/ALC4080" + } +-- +2.49.0 + + +From b4896cf413e618f4b20c570544a4e668aaa72f64 Mon Sep 17 00:00:00 2001 +From: Harald Sitter +Date: Sat, 21 Jun 2025 17:10:20 +0200 +Subject: [PATCH 23/24] ucm2: USB-Audio: Add Teufel CAGE PRO + +two stereo outputs: one for "game" and one for "chat". +one mono input + +Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/582 +Signed-off-by: Harald Sitter +Signed-off-by: Jaroslav Kysela +--- + ucm2/USB-Audio/Teufel/CAGE-PRO-HiFi.conf | 21 +++++++++++++++++++++ + ucm2/USB-Audio/Teufel/CAGE-PRO.conf | 9 +++++++++ + ucm2/USB-Audio/USB-Audio.conf | 10 ++++++++++ + 3 files changed, 40 insertions(+) + create mode 100644 ucm2/USB-Audio/Teufel/CAGE-PRO-HiFi.conf + create mode 100644 ucm2/USB-Audio/Teufel/CAGE-PRO.conf + +diff --git a/ucm2/USB-Audio/Teufel/CAGE-PRO-HiFi.conf b/ucm2/USB-Audio/Teufel/CAGE-PRO-HiFi.conf +new file mode 100644 +index 0000000..c0fbe7b +--- /dev/null ++++ b/ucm2/USB-Audio/Teufel/CAGE-PRO-HiFi.conf +@@ -0,0 +1,21 @@ ++# SPDX-License-Identifier: MIT ++# SPDX-FileCopyrightText: 2025 Harald Sitter ++ ++SectionDevice."Headset" { ++ Comment "Chat" ++ Value { ++ PlaybackPCM "hw:${CardId},0" ++ PlaybackMixerElem "PCM" ++ CapturePCM "hw:${CardId},0" ++ CaptureMixerElem "Mic" ++ CaptureChannels 1 ++ } ++} ++ ++SectionDevice."Headphones" { ++ Comment "Game" ++ Value { ++ PlaybackPCM "hw:${CardId},1" ++ PlaybackMixerElem "PCM,1" ++ } ++} +diff --git a/ucm2/USB-Audio/Teufel/CAGE-PRO.conf b/ucm2/USB-Audio/Teufel/CAGE-PRO.conf +new file mode 100644 +index 0000000..bf75033 +--- /dev/null ++++ b/ucm2/USB-Audio/Teufel/CAGE-PRO.conf +@@ -0,0 +1,9 @@ ++# SPDX-License-Identifier: MIT ++# SPDX-FileCopyrightText: 2025 Harald Sitter ++ ++Comment "Lautsprecher Teufel GmbH CAGE PRO" ++ ++SectionUseCase."HiFi" { ++ Comment "Default" ++ File "/USB-Audio/Teufel/CAGE-PRO-HiFi.conf" ++} +diff --git a/ucm2/USB-Audio/USB-Audio.conf b/ucm2/USB-Audio/USB-Audio.conf +index ef88ded..7a6a0ac 100644 +--- a/ucm2/USB-Audio/USB-Audio.conf ++++ b/ucm2/USB-Audio/USB-Audio.conf +@@ -521,6 +521,15 @@ If.ua-volt2 { + } + } + ++If.teufel-cage-pro { ++ Condition { ++ Type String ++ Haystack "${CardComponents}" ++ Needle "USB2cc2:0033" ++ } ++ True.Define.ProfileName "Teufel/CAGE-PRO" ++} ++ + If.ssl2 { + Condition { + Type String +@@ -559,6 +568,7 @@ If.beacn-studio { + } + True.Define.ProfileName "Beacn/Beacn-Studio" + } ++ + If.mixremap { + Condition { + Type String +-- +2.49.0 + + +From 63f161cb8d65ed828a1ce49b506f4e1b9a7c58e4 Mon Sep 17 00:00:00 2001 +From: Zoran Zhan +Date: Wed, 7 May 2025 14:41:14 +0800 +Subject: [PATCH 24/24] ucm2: MediaTek: mt8365-evk: Add SOF support + +Add support for MT8365 EVK with SOF enabled. When SOF is +disabled, the "HiFi" use case is used; when SOF is enabled, +the "SOF" use case is used. + +The main difference compared to the UCM with SOF disabled is +the device number for playback and capture, which now uses the +PCMs for SOF instead. + +Define these parameters as variables for each case (with and +without SOF), and move the common initialization to init.conf, +so the UCM can be shared by both configurations. + +Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/583 +Signed-off-by: Zoran Zhan +Signed-off-by: Jaroslav Kysela +--- + ucm2/MediaTek/mt8365-evk/HiFi.conf | 126 ++++++------------ + ucm2/MediaTek/mt8365-evk/init.conf | 31 +++++ + ucm2/MediaTek/mt8365-evk/mt8365-evk.conf | 40 +----- + ucm2/MediaTek/mt8365-evk/sof/SOF.conf | 87 ++++++++++++ + .../mt8365-evk/sof/sof-mt8365-evk.conf | 9 ++ + .../conf.d/sof-mt8365-evk/sof-mt8365-evk.conf | 1 + + 6 files changed, 174 insertions(+), 120 deletions(-) + create mode 100644 ucm2/MediaTek/mt8365-evk/init.conf + create mode 100644 ucm2/MediaTek/mt8365-evk/sof/SOF.conf + create mode 100644 ucm2/MediaTek/mt8365-evk/sof/sof-mt8365-evk.conf + create mode 120000 ucm2/conf.d/sof-mt8365-evk/sof-mt8365-evk.conf + +diff --git a/ucm2/MediaTek/mt8365-evk/HiFi.conf b/ucm2/MediaTek/mt8365-evk/HiFi.conf +index 81f563f..83514c7 100644 +--- a/ucm2/MediaTek/mt8365-evk/HiFi.conf ++++ b/ucm2/MediaTek/mt8365-evk/HiFi.conf +@@ -1,141 +1,97 @@ + SectionDevice."HDMI" { +- Comment "Hdmi output" ++ Comment "HDMI output" + + Value { +- PlaybackPriority 250 ++ PlaybackPriority 100 + PlaybackChannels 2 + PlaybackPCM "hw:${CardId},1" + } +- +- EnableSequence [ +- cset "name='O00 I07 Switch' on" +- cset "name='O01 I08 Switch' on" +- ] +- +- DisableSequence [ +- cset "name='O00 I07 Switch' off" +- cset "name='O01 I08 Switch' off" +- ] + } + + SectionDevice."Speaker" { +- Comment "Line-out Jack " ++ Comment "Lineout speaker" + + ConflictingDevice [ + "Headphones" + ] + +- Value { +- PlaybackPriority 300 +- PlaybackChannels 2 +- PlaybackPCM "hw:${CardId},0" +- PlaybackVolume "name='Lineout_PGAL_GAIN'" +- } +- + EnableSequence [ +- cset "name='Audio_Amp_L_Switch' Off" +- cset "name='Audio_Amp_R_Switch' Off" +- cset "name='Lineout_PGAL_GAIN' 0" +- cset "name='Speaker_Amp_Switch' On" ++ cset "name='Headphone Left Source' Open" ++ cset "name='Headphone Right Source' Open" ++ cset "name='Line Out Source' Playback" + ] + +- DisableSequence [ +- cset "name='Audio_Amp_L_Switch' On" +- cset "name='Audio_Amp_R_Switch' On" +- cset "name='Speaker_Amp_Switch' Off" +- ] ++ Value { ++ PlaybackPriority 200 ++ PlaybackChannels 2 ++ PlaybackPCM "hw:${CardId},${var:PlayDevN}" ++ } + } + + SectionDevice."Headphones" { +- Comment "Headset speakers" ++ Comment "Earphone speaker" + + ConflictingDevice [ + "Speaker" + ] + ++ EnableSequence [ ++ cset "name='Headphone Left Source' DAC" ++ cset "name='Headphone Right Source' DAC" ++ cset "name='Line Out Source' Open" ++ ] ++ + Value { + PlaybackPriority 300 + PlaybackChannels 2 +- PlaybackPCM "hw:${CardId},0" +- PlaybackVolume "name='Headset_PGAL_GAIN'" ++ PlaybackPCM "hw:${CardId},${var:PlayDevN}" + } +- +- EnableSequence [ +- cset "name='Audio_Amp_L_Switch' On" +- cset "name='Audio_Amp_R_Switch' On" +- cset "name='Headset_PGAL_GAIN' 1" +- cset "name='Speaker_Amp_Switch' Off" +- ] +- +- DisableSequence [ +- cset "name='Audio_Amp_L_Switch' Off" +- cset "name='Audio_Amp_R_Switch' Off" +- cset "name='Speaker_Amp_Switch' On" +- ] + } + +-SectionDevice."Mic1" { +- Comment "Amic" ++SectionDevice."Headset" { ++ Comment "Earphone microphone" + + ConflictingDevice [ +- "Mic2" ++ "Mic1" + ] + +- Value { +- CapturePriority 300 +- CaptureChannels 1 +- CapturePCM "hw:${CardId},2" +- } +- + EnableSequence [ +- cset "name='Audio_MicSource1_Setting' ADC1" +- cset "name='Audio_MICBIAS0_Switch' Off" ++ cset "name='PGA L Mux' AIN1" ++ cset "name='PGA R Mux' AIN1" + ] + +- DisableSequence [ +- cset "name='Audio_MicSource1_Setting' ADC2" +- cset "name='Audio_MICBIAS0_Switch' On" +- ] ++ Value { ++ CapturePriority 300 ++ CaptureChannels "${var:CapChanN}" ++ CapturePCM "hw:${CardId},${var:CapDevN}" ++ } + } + +-SectionDevice."Mic2" { +- Comment "Headset microphone" ++SectionDevice."Mic1" { ++ Comment "Analog microphone" + + ConflictingDevice [ +- "Mic1" ++ "Headset" + ] + +- Value { +- CapturePriority 350 +- CaptureChannels 1 +- CapturePCM "hw:${CardId},2" +- } +- + EnableSequence [ +- cset "name='Audio_MicSource1_Setting' ADC2" +- cset "name='Audio_MICBIAS0_Switch' On" ++ cset "name='PGA L Mux' AIN0" ++ cset "name='PGA R Mux' AIN0" + ] + +- DisableSequence [ +- cset "name='Audio_MicSource1_Setting' ADC1" +- cset "name='Audio_MICBIAS0_Switch' Off" +- ] ++ Value { ++ CapturePriority 200 ++ CaptureChannels "${var:CapChanN}" ++ CapturePCM "hw:${CardId},${var:CapDevN}" ++ } + } + +-SectionDevice."Mic3" { +- Comment "PDM microphones" ++SectionDevice."Mic2" { ++ Comment "Digital microphone" + + Value { + CapturePriority 100 + CaptureChannels 2 + CapturePCM "hw:${CardId},3" + } +- +- EnableSequence [ +- cset "name='Audio_MICBIAS0_Switch' On" +- ] +- +- DisableSequence [ +- cset "name='Audio_MICBIAS0_Switch' Off" +- ] + } +diff --git a/ucm2/MediaTek/mt8365-evk/init.conf b/ucm2/MediaTek/mt8365-evk/init.conf +new file mode 100644 +index 0000000..269530a +--- /dev/null ++++ b/ucm2/MediaTek/mt8365-evk/init.conf +@@ -0,0 +1,31 @@ ++Syntax 4 ++ ++SectionUseCase."HiFi" { ++ File "/MediaTek/mt8365-evk/HiFi.conf" ++ Comment "Default" ++} ++ ++SectionUseCase."SOF" { ++ File "/MediaTek/mt8365-evk/sof/SOF.conf" ++ Comment "Enable SOF" ++} ++ ++BootSequence [ ++ cset "name='Headphone Left Source' DAC" ++ cset "name='Headphone Right Source' DAC" ++ cset "name='Line Out Source' Open" ++ cset "name='PGA L Mux' AIN1" ++ cset "name='PGA R Mux' AIN1" ++ cset "name='Mic Type Mux' DCC" ++ cset "name='INT ADDA O03_O04 Switch' on" ++ cset "name='Headphone Volume' 10" ++ cset "name='Lineout Volume' 10" ++ cset "name='O00 I07 Switch' on" ++ cset "name='O01 I08 Switch' on" ++ cset "name='O03 I05 Switch' on" ++ cset "name='O04 I06 Switch' on" ++ cset "name='O05 I03 Switch' on" ++ cset "name='O06 I04 Switch' on" ++ cset "name='O09 I14 Switch' on" ++ cset "name='O10 I15 Switch' on" ++] +diff --git a/ucm2/MediaTek/mt8365-evk/mt8365-evk.conf b/ucm2/MediaTek/mt8365-evk/mt8365-evk.conf +index e396f8c..9df5644 100644 +--- a/ucm2/MediaTek/mt8365-evk/mt8365-evk.conf ++++ b/ucm2/MediaTek/mt8365-evk/mt8365-evk.conf +@@ -1,39 +1,9 @@ + Syntax 4 + +-SectionUseCase."HiFi" { +- File "/MediaTek/mt8365-evk/HiFi.conf" +- Comment "Play high quality music" ++Define { ++ PlayDevN "0" ++ CapDevN "2" ++ CapChanN "1" + } + +-BootSequence [ +- #Audio volume +- cset "name='Headset_PGAL_GAIN' 0" +- cset "name='Lineout_PGAL_GAIN' 0" +- +- #Audio amp +- cset "name='Audio_Amp_R_Switch' On" +- cset "name='Audio_Amp_L_Switch' On" +- +- #Headset out +- cset "name='Speaker_Amp_Switch' Off" +- +- #Dmic +- cset "name='Audio_MICBIAS0_Switch' On" +- +- #HDMI audio (I2S3 Out) +- cset "name='O00 I07 Switch' on" +- cset "name='O01 I08 Switch' on" +- +- #jack_mic Headset In +- cset "name='Audio_MicSource1_Setting' ADC2" +- +- cset "name='O03 I05 Switch' on" +- cset "name='O04 I06 Switch' on" +- cset "name='O05 I03 Switch' on" +- cset "name='O06 I04 Switch' on" +- cset "name='O09 I14 Switch' on" +- cset "name='O10 I15 Switch' on" +- cset "name='AUD_CLK_BUF_Switch' On" +- cset "name='Audio_ADC_1_Switch' On" +- cset "name='INT ADDA O03_O04 Switch' on" +-] ++Include.init.File "/MediaTek/mt8365-evk/init.conf" +diff --git a/ucm2/MediaTek/mt8365-evk/sof/SOF.conf b/ucm2/MediaTek/mt8365-evk/sof/SOF.conf +new file mode 100644 +index 0000000..af44feb +--- /dev/null ++++ b/ucm2/MediaTek/mt8365-evk/sof/SOF.conf +@@ -0,0 +1,87 @@ ++SectionDevice."Speaker" { ++ Comment "SOF Lineout speaker" ++ ++ ConflictingDevice [ ++ "Headphones" ++ ] ++ ++ EnableSequence [ ++ cset "name='Headphone Left Source' Open" ++ cset "name='Headphone Right Source' Open" ++ cset "name='Line Out Source' Playback" ++ ] ++ ++ Value { ++ PlaybackPriority 100 ++ PlaybackChannels 2 ++ PlaybackPCM "hw:${CardId},${var:PlayDevN}" ++ } ++} ++ ++SectionDevice."Headphones" { ++ Comment "SOF Earphone speaker" ++ ++ ConflictingDevice [ ++ "Speaker" ++ ] ++ ++ EnableSequence [ ++ cset "name='Headphone Left Source' DAC" ++ cset "name='Headphone Right Source' DAC" ++ cset "name='Line Out Source' Open" ++ ] ++ ++ Value { ++ PlaybackPriority 200 ++ PlaybackChannels 2 ++ PlaybackPCM "hw:${CardId},${var:PlayDevN}" ++ } ++} ++ ++SectionDevice."Headset" { ++ Comment "SOF Earphone microphone" ++ ++ ConflictingDevice [ ++ "Mic1" ++ ] ++ ++ EnableSequence [ ++ cset "name='PGA L Mux' AIN1" ++ cset "name='PGA R Mux' AIN1" ++ ] ++ ++ Value { ++ CapturePriority 300 ++ CaptureChannels "${var:CapChanN}" ++ CapturePCM "hw:${CardId},${var:CapDevN}" ++ } ++} ++ ++SectionDevice."Mic1" { ++ Comment "SOF Analog microphone" ++ ++ ConflictingDevice [ ++ "Headset" ++ ] ++ ++ EnableSequence [ ++ cset "name='PGA L Mux' AIN0" ++ cset "name='PGA R Mux' AIN0" ++ ] ++ ++ Value { ++ CapturePriority 200 ++ CaptureChannels "${var:CapChanN}" ++ CapturePCM "hw:${CardId},${var:CapDevN}" ++ } ++} ++ ++SectionDevice."Mic2" { ++ Comment "SOF Digital microphone" ++ ++ Value { ++ CapturePriority 100 ++ CaptureChannels 2 ++ CapturePCM "hw:${CardId},19" ++ } ++} +diff --git a/ucm2/MediaTek/mt8365-evk/sof/sof-mt8365-evk.conf b/ucm2/MediaTek/mt8365-evk/sof/sof-mt8365-evk.conf +new file mode 100644 +index 0000000..6369aac +--- /dev/null ++++ b/ucm2/MediaTek/mt8365-evk/sof/sof-mt8365-evk.conf +@@ -0,0 +1,9 @@ ++Syntax 4 ++ ++Define { ++ PlayDevN "16" ++ CapDevN "18" ++ CapChanN "2" ++} ++ ++Include.init.File "/MediaTek/mt8365-evk/init.conf" +diff --git a/ucm2/conf.d/sof-mt8365-evk/sof-mt8365-evk.conf b/ucm2/conf.d/sof-mt8365-evk/sof-mt8365-evk.conf +new file mode 120000 +index 0000000..527f25f +--- /dev/null ++++ b/ucm2/conf.d/sof-mt8365-evk/sof-mt8365-evk.conf +@@ -0,0 +1 @@ ++../../MediaTek/mt8365-evk/sof/sof-mt8365-evk.conf +\ No newline at end of file +-- +2.49.0 + From e8691ba09c3da1af3b60d64979f9debfd3ff5e50 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 23 Jul 2025 16:55:03 +0000 Subject: [PATCH 15/24] Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild --- alsa-lib.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/alsa-lib.spec b/alsa-lib.spec index 2e492b4..e6abd87 100644 --- a/alsa-lib.spec +++ b/alsa-lib.spec @@ -9,7 +9,7 @@ Summary: The Advanced Linux Sound Architecture (ALSA) library Name: alsa-lib Version: %{version_alsa_lib} -Release: 3%{?prever_dot}%{?dist} +Release: 4%{?prever_dot}%{?dist} License: LGPL-2.1-or-later URL: http://www.alsa-project.org/ @@ -167,6 +167,9 @@ rm %{buildroot}/%{_includedir}/asoundlib.h %{_datadir}/alsa/topology %changelog +* Wed Jul 23 2025 Fedora Release Engineering - 1.2.14-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + * Tue Jan 24 2025 Jaroslav Kysela - 1.2.14-3 - update to latest alsa-ucm-conf files From e97c40908c67c532094483c8e85b7205cc0c807a Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Sun, 7 Dec 2025 22:28:17 +0100 Subject: [PATCH 16/24] update to 1.2.15 Signed-off-by: Jaroslav Kysela --- alsa-git.patch | 31 - alsa-lib.spec | 19 +- alsa-ucm-conf.patch | 2374 ------------------------------------------- 3 files changed, 11 insertions(+), 2413 deletions(-) delete mode 100644 alsa-git.patch delete mode 100644 alsa-ucm-conf.patch diff --git a/alsa-git.patch b/alsa-git.patch deleted file mode 100644 index ded7dfb..0000000 --- a/alsa-git.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 07ec2ad34c42dba8656d3f543164f360f481c52e Mon Sep 17 00:00:00 2001 -From: Daniel Dadap -Date: Thu, 15 May 2025 08:32:35 -0500 -Subject: [PATCH] conf: aliases: add hda-acpi -> HDA-Intel alias - -The new snd_hda_acpi driver in Linux exposes the existing Azalia -interface to non-PCI devices advertised over ACPI. Add an alias -to the existing HDA-Intel configuration file so that devices using -this driver can be discovered properly. - -Signed-off-by: Daniel Dadap -Signed-off-by: Takashi Iwai ---- - src/conf/cards/aliases.conf | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/src/conf/cards/aliases.conf b/src/conf/cards/aliases.conf -index a54824ae..e2d59aa7 100644 ---- a/src/conf/cards/aliases.conf -+++ b/src/conf/cards/aliases.conf -@@ -57,6 +57,7 @@ CMI8786 cards.CMI8788 - CMI8787 cards.CMI8788 - pistachio cards.pistachio-card - VC4-HDMI cards.vc4-hdmi -+hda-acpi cards.HDA-Intel - - - --- -2.49.0 - diff --git a/alsa-lib.spec b/alsa-lib.spec index e6abd87..7c2e8fa 100644 --- a/alsa-lib.spec +++ b/alsa-lib.spec @@ -2,14 +2,14 @@ #define prever_dot .rc3 #define postver a -%define version_alsa_lib 1.2.14 -%define version_alsa_ucm 1.2.14 +%define version_alsa_lib 1.2.15 +%define version_alsa_ucm 1.2.15 %define version_alsa_tplg 1.2.5 Summary: The Advanced Linux Sound Architecture (ALSA) library Name: alsa-lib Version: %{version_alsa_lib} -Release: 4%{?prever_dot}%{?dist} +Release: 1%{?prever_dot}%{?dist} License: LGPL-2.1-or-later URL: http://www.alsa-project.org/ @@ -19,8 +19,8 @@ Source2: ftp://ftp.alsa-project.org/pub/lib/alsa-topology-conf-%{version_alsa_t Source10: asound.conf Source11: modprobe-dist-alsa.conf Source12: modprobe-dist-oss.conf -Source40: alsa-ucm-conf.patch -Patch0: alsa-git.patch +#Source40: alsa-ucm-conf.patch +#Patch0: alsa-git.patch Patch1: alsa-lib-1.2.3.1-config.patch Patch2: alsa-lib-1.2.10-glibc-open.patch @@ -70,7 +70,7 @@ contains alsa-lib configuration of SoC topology %prep %setup -q -n %{name}-%{version}%{?prever}%{?postver} -%patch -P0 -p1 -b .alsa-git +#patch -P0 -p1 -b .alsa-git %patch -P1 -p1 -b .config %patch -P2 -p1 -b .glibc-open @@ -116,7 +116,7 @@ mkdir -p %{buildroot}/%{_datadir}/alsa/ucm2 # Unpack UCMs tar xvjf %{SOURCE1} -C %{buildroot}/%{_datadir}/alsa --strip-components=1 "*/ucm" "*/ucm2" -patch -d %{buildroot}/%{_datadir}/alsa -p1 < %{SOURCE40} +#patch -d %{buildroot}/%{_datadir}/alsa -p1 < %{SOURCE40} # Create topology directory mkdir -p %{buildroot}/%{_datadir}/alsa/topology @@ -167,10 +167,13 @@ rm %{buildroot}/%{_includedir}/asoundlib.h %{_datadir}/alsa/topology %changelog +* Sun Dec 7 2025 Jaroslav Kysela - 1.2.15-1 +- update to 1.2.15 + * Wed Jul 23 2025 Fedora Release Engineering - 1.2.14-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild -* Tue Jan 24 2025 Jaroslav Kysela - 1.2.14-3 +* Tue Jun 24 2025 Jaroslav Kysela - 1.2.14-3 - update to latest alsa-ucm-conf files * Mon Apr 14 2025 Jaroslav Kysela - 1.2.14-2 diff --git a/alsa-ucm-conf.patch b/alsa-ucm-conf.patch deleted file mode 100644 index 917177c..0000000 --- a/alsa-ucm-conf.patch +++ /dev/null @@ -1,2374 +0,0 @@ -From 25f519f66c3e496b21ca1ad83ebc6114dfaa9fc3 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Maja=20K=C4=85dzio=C5=82ka?= -Date: Tue, 22 Apr 2025 07:46:21 +0200 -Subject: [PATCH 01/24] acp3x-alc5682-max98357: Fix path of HiFi.conf -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/551 -Closes: https://github.com/alsa-project/alsa-ucm-conf/issues/550 -Fixes: 1048796e7fa9 ("Rename ucm2/AMD/acp3xalc5682m98 to ucm2/AMD/acp3x-alc5682-max98357") -Signed-off-by: Maja Kądziołka -Signed-off-by: Jaroslav Kysela ---- - ucm2/AMD/acp3x-alc5682-max98357/acp3x-alc5682-max98357.conf | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/ucm2/AMD/acp3x-alc5682-max98357/acp3x-alc5682-max98357.conf b/ucm2/AMD/acp3x-alc5682-max98357/acp3x-alc5682-max98357.conf -index e1f1c9e..5b3f24a 100644 ---- a/ucm2/AMD/acp3x-alc5682-max98357/acp3x-alc5682-max98357.conf -+++ b/ucm2/AMD/acp3x-alc5682-max98357/acp3x-alc5682-max98357.conf -@@ -66,7 +66,7 @@ If.found { - Empty "${var:Found}" - } - False.SectionUseCase."HiFi" { -- File "/AMD/acp3xalc5682m98/HiFi.conf" -+ File "HiFi.conf" - Comment "Default" - } - } --- -2.49.0 - - -From ac64586ab4ad3a0f162af3ec8a196bfd3799c5c0 Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Fri, 25 Apr 2025 11:47:20 +0200 -Subject: [PATCH 02/24] USB-Audio: Remove useless sections for Solid State Labs - SSL 2+ - -Signed-off-by: Jaroslav Kysela ---- - ucm2/USB-Audio/SolidStateLabs/SSL2Plus-HiFi.conf | 8 -------- - 1 file changed, 8 deletions(-) - -diff --git a/ucm2/USB-Audio/SolidStateLabs/SSL2Plus-HiFi.conf b/ucm2/USB-Audio/SolidStateLabs/SSL2Plus-HiFi.conf -index d07e499..94e040f 100644 ---- a/ucm2/USB-Audio/SolidStateLabs/SSL2Plus-HiFi.conf -+++ b/ucm2/USB-Audio/SolidStateLabs/SSL2Plus-HiFi.conf -@@ -28,14 +28,6 @@ Macro [ - SectionDevice."Line1" { - Comment "Line Outputs 1/L + 2/R" - -- EnableSequence [ -- cdev "hw:${CardId}" -- ] -- -- DisableSequence [ -- cdev "hw:${CardId}" -- ] -- - Value { - PlaybackPriority 200 - } --- -2.49.0 - - -From fc17ed4f991836bb92f288b8714ad7efe6c05926 Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Fri, 25 Apr 2025 11:53:11 +0200 -Subject: [PATCH 03/24] USB-Audio: Solid State Labs SSL 2+ - fix capture - channels - -It seems that there are 4 capture channels per report in issue #552: - - Capture: - Status: Stop - Interface 2 - Altset 1 - Format: S32_LE - Channels: 4 - Endpoint: 0x81 (1 IN) (ASYNC) - Rates: 44100, 48000, 88200, 96000, 176400, 192000 - Data packet interval: 125 us - Bits: 24 - Channel map: FL FR FC LFE - -Closes: https://github.com/alsa-project/alsa-ucm-conf/issues/552 -Signed-off-by: Jaroslav Kysela ---- - ucm2/USB-Audio/SolidStateLabs/SSL2Plus-HiFi.conf | 6 +++--- - ucm2/USB-Audio/SolidStateLabs/SSL2Plus.conf | 2 +- - 2 files changed, 4 insertions(+), 4 deletions(-) - -diff --git a/ucm2/USB-Audio/SolidStateLabs/SSL2Plus-HiFi.conf b/ucm2/USB-Audio/SolidStateLabs/SSL2Plus-HiFi.conf -index 94e040f..30160d3 100644 ---- a/ucm2/USB-Audio/SolidStateLabs/SSL2Plus-HiFi.conf -+++ b/ucm2/USB-Audio/SolidStateLabs/SSL2Plus-HiFi.conf -@@ -18,7 +18,7 @@ Macro [ - Name "ssl2plus_mono_in" - Direction Capture - Channels 1 -- HWChannels 2 -+ HWChannels 4 - HWChannelPos0 MONO - HWChannelPos1 MONO - } -@@ -70,7 +70,7 @@ SectionDevice."Mic1" { - Macro.pcm_split.SplitPCMDevice { - Name "ssl2plus_mono_in" - Direction Capture -- HWChannels 2 -+ HWChannels 4 - Channels 1 - Channel0 0 - ChannelPos0 MONO -@@ -86,7 +86,7 @@ SectionDevice."Mic2" { - Macro.pcm_split.SplitPCMDevice { - Name "ssl2plus_mono_in" - Direction Capture -- HWChannels 2 -+ HWChannels 4 - Channels 1 - Channel0 1 - ChannelPos0 MONO -diff --git a/ucm2/USB-Audio/SolidStateLabs/SSL2Plus.conf b/ucm2/USB-Audio/SolidStateLabs/SSL2Plus.conf -index 2ffe4c4..c886593 100644 ---- a/ucm2/USB-Audio/SolidStateLabs/SSL2Plus.conf -+++ b/ucm2/USB-Audio/SolidStateLabs/SSL2Plus.conf -@@ -6,6 +6,6 @@ SectionUseCase."HiFi" { - } - - Define.DirectPlaybackChannels 4 --Define.DirectCaptureChannels 2 -+Define.DirectCaptureChannels 4 - - Include.dhw.File "/common/direct.conf" --- -2.49.0 - - -From 6c2177e856ffa884929ba84de2ba379b80e054a3 Mon Sep 17 00:00:00 2001 -From: Konrad Dybcio -Date: Mon, 14 Apr 2025 20:47:38 +0200 -Subject: [PATCH 04/24] ucm2: Qualcomm: x1e80100: Also match DMI board name - -The Surface Laptop 7 only says "Microsoft Corporation" and "Surface" -in the board_vendor and product_family fields respectively. Add another -field to match on. - -Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/546 -Signed-off-by: Konrad Dybcio -Signed-off-by: Jaroslav Kysela ---- - ucm2/Qualcomm/x1e80100/x1e80100.conf | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/ucm2/Qualcomm/x1e80100/x1e80100.conf b/ucm2/Qualcomm/x1e80100/x1e80100.conf -index 3f89986..3eef4d4 100644 ---- a/ucm2/Qualcomm/x1e80100/x1e80100.conf -+++ b/ucm2/Qualcomm/x1e80100/x1e80100.conf -@@ -1,6 +1,6 @@ - Syntax 4 - --Define.DMI_info "${sys:devices/virtual/dmi/id/board_vendor}-${sys:devices/virtual/dmi/id/product_family}" -+Define.DMI_info "${sys:devices/virtual/dmi/id/board_vendor}-${sys:devices/virtual/dmi/id/product_family}-${sys:devices/virtual/dmi/id/board_name}" - - If.LENOVOT14s { - Condition { --- -2.49.0 - - -From c93b7c8cc3137180cf1e91af2dd212bbf604b66f Mon Sep 17 00:00:00 2001 -From: Konrad Dybcio -Date: Mon, 14 Apr 2025 20:47:38 +0200 -Subject: [PATCH 05/24] ucm2: Qualcomm: Add Surface Laptop 7 - -2 speakers, 2 dmics, combo jack, just like the T14s - reuse its -configuration - -Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/546 -Signed-off-by: Konrad Dybcio -Signed-off-by: Jaroslav Kysela ---- - ucm2/Qualcomm/x1e80100/x1e80100.conf | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/ucm2/Qualcomm/x1e80100/x1e80100.conf b/ucm2/Qualcomm/x1e80100/x1e80100.conf -index 3eef4d4..10faf5f 100644 ---- a/ucm2/Qualcomm/x1e80100/x1e80100.conf -+++ b/ucm2/Qualcomm/x1e80100/x1e80100.conf -@@ -6,7 +6,7 @@ If.LENOVOT14s { - Condition { - Type RegexMatch - String "${var:DMI_info}" -- Regex "LENOVO.*Think((Pad T14s Gen 6.*)|(Book 16 G7 QOY))|(HP.*Omnibook X.*)|(ASUSTeK COMPUTER.*ASUS Zenbook A14)" -+ Regex "LENOVO.*Think((Pad T14s Gen 6.*)|(Book 16 G7 QOY))|(HP.*Omnibook X.*)|(ASUSTeK COMPUTER.*ASUS Zenbook A14)|(Microsoft Corporation.*Surface.*Microsoft Surface Laptop, 7th Edition)" - } - True.Include.t14s.File "/Qualcomm/x1e80100/LENOVO-T14s.conf" - } --- -2.49.0 - - -From 9105573b6cb71c4821d88e6eef0c4b2cfbb4ea61 Mon Sep 17 00:00:00 2001 -From: Svyatoslav Ryhel -Date: Sun, 27 Apr 2025 13:02:19 +0300 -Subject: [PATCH 06/24] tegra: max98089: fix cset names - -Adjust configs to match Linux kernel MAX98089 codec driver change. - -Fixes: 725570f9 ("ASoC: max98088: Remove duplicate DACs") - -Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/556 -Signed-off-by: Svyatoslav Ryhel -Signed-off-by: Jaroslav Kysela ---- - ucm2/Tegra/max98089/lge-x3-HiFi.conf | 24 +++++---------- - ucm2/Tegra/max98089/lge-x3-VoiceCall.conf | 36 ++++++++--------------- - ucm2/Tegra/max98089/lge-x3.conf | 6 ++-- - 3 files changed, 22 insertions(+), 44 deletions(-) - -diff --git a/ucm2/Tegra/max98089/lge-x3-HiFi.conf b/ucm2/Tegra/max98089/lge-x3-HiFi.conf -index 3738d72..d074b9f 100644 ---- a/ucm2/Tegra/max98089/lge-x3-HiFi.conf -+++ b/ucm2/Tegra/max98089/lge-x3-HiFi.conf -@@ -11,20 +11,16 @@ SectionDevice."Speaker" { - cset "name='Speaker Switch' on" - cset "name='Int Spk Switch' on" - -- cset "name='Left SPK Mixer Left DAC1 Switch' on" -- cset "name='Left SPK Mixer Left DAC2 Switch' on" -- cset "name='Left SPK Mixer Right DAC1 Switch' on" -- cset "name='Left SPK Mixer Right DAC2 Switch' on" -+ cset "name='Left SPK Mixer Left DAC Switch' on" -+ cset "name='Left SPK Mixer Right DAC Switch' on" - ] - - DisableSequence [ - cset "name='Speaker Switch' off" - cset "name='Int Spk Switch' off" - -- cset "name='Left SPK Mixer Left DAC1 Switch' off" -- cset "name='Left SPK Mixer Left DAC2 Switch' off" -- cset "name='Left SPK Mixer Right DAC1 Switch' off" -- cset "name='Left SPK Mixer Right DAC2 Switch' off" -+ cset "name='Left SPK Mixer Left DAC Switch' off" -+ cset "name='Left SPK Mixer Right DAC Switch' off" - ] - - Value { -@@ -46,19 +42,15 @@ SectionDevice."Headphones" { - EnableSequence [ - cset "name='Headphone Switch' on" - -- cset "name='Left HP Mixer Left DAC1 Switch' on" -- cset "name='Left HP Mixer Left DAC2 Switch' on" -- cset "name='Right HP Mixer Right DAC1 Switch' on" -- cset "name='Right HP Mixer Right DAC2 Switch' on" -+ cset "name='Left HP Mixer Left DAC Switch' on" -+ cset "name='Right HP Mixer Right DAC Switch' on" - ] - - DisableSequence [ - cset "name='Headphone Switch' off" - -- cset "name='Left HP Mixer Left DAC1 Switch' off" -- cset "name='Left HP Mixer Left DAC2 Switch' off" -- cset "name='Right HP Mixer Right DAC1 Switch' off" -- cset "name='Right HP Mixer Right DAC2 Switch' off" -+ cset "name='Left HP Mixer Left DAC Switch' off" -+ cset "name='Right HP Mixer Right DAC Switch' off" - ] - - Value { -diff --git a/ucm2/Tegra/max98089/lge-x3-VoiceCall.conf b/ucm2/Tegra/max98089/lge-x3-VoiceCall.conf -index 1634c7b..8e3a389 100644 ---- a/ucm2/Tegra/max98089/lge-x3-VoiceCall.conf -+++ b/ucm2/Tegra/max98089/lge-x3-VoiceCall.conf -@@ -11,20 +11,16 @@ SectionDevice."Speaker" { - cset "name='Speaker Switch' on" - cset "name='Int Spk Switch' on" - -- cset "name='Left SPK Mixer Left DAC1 Switch' on" -- cset "name='Left SPK Mixer Left DAC2 Switch' on" -- cset "name='Left SPK Mixer Right DAC1 Switch' on" -- cset "name='Left SPK Mixer Right DAC2 Switch' on" -+ cset "name='Left SPK Mixer Left DAC Switch' on" -+ cset "name='Left SPK Mixer Right DAC Switch' on" - ] - - DisableSequence [ - cset "name='Speaker Switch' off" - cset "name='Int Spk Switch' off" - -- cset "name='Left SPK Mixer Left DAC1 Switch' off" -- cset "name='Left SPK Mixer Left DAC2 Switch' off" -- cset "name='Left SPK Mixer Right DAC1 Switch' off" -- cset "name='Left SPK Mixer Right DAC2 Switch' off" -+ cset "name='Left SPK Mixer Left DAC Switch' off" -+ cset "name='Left SPK Mixer Right DAC Switch' off" - ] - - Value { -@@ -47,30 +43,22 @@ SectionDevice."Earpiece" { - cset "name='Receiver Switch' on" - cset "name='Earpiece Switch' on" - -- cset "name='Left REC Mixer Left DAC1 Switch' on" -- cset "name='Left REC Mixer Left DAC2 Switch' on" -- cset "name='Left REC Mixer Right DAC1 Switch' on" -- cset "name='Left REC Mixer Right DAC2 Switch' on" -+ cset "name='Left REC Mixer Left DAC Switch' on" -+ cset "name='Left REC Mixer Right DAC Switch' on" - -- cset "name='Right REC Mixer Left DAC1 Switch' on" -- cset "name='Right REC Mixer Left DAC2 Switch' on" -- cset "name='Right REC Mixer Right DAC1 Switch' on" -- cset "name='Right REC Mixer Right DAC2 Switch' on" -+ cset "name='Right REC Mixer Left DAC Switch' on" -+ cset "name='Right REC Mixer Right DAC Switch' on" - ] - - DisableSequence [ - cset "name='Receiver Switch' off" - cset "name='Earpiece Switch' off" - -- cset "name='Left REC Mixer Left DAC1 Switch' off" -- cset "name='Left REC Mixer Left DAC2 Switch' off" -- cset "name='Left REC Mixer Right DAC1 Switch' off" -- cset "name='Left REC Mixer Right DAC2 Switch' off" -+ cset "name='Left REC Mixer Left DAC Switch' off" -+ cset "name='Left REC Mixer Right DAC Switch' off" - -- cset "name='Right REC Mixer Left DAC1 Switch' off" -- cset "name='Right REC Mixer Left DAC2 Switch' off" -- cset "name='Right REC Mixer Right DAC1 Switch' off" -- cset "name='Right REC Mixer Right DAC2 Switch' off" -+ cset "name='Right REC Mixer Left DAC Switch' off" -+ cset "name='Right REC Mixer Right DAC Switch' off" - ] - - Value { -diff --git a/ucm2/Tegra/max98089/lge-x3.conf b/ucm2/Tegra/max98089/lge-x3.conf -index 9bea0cc..c90c4a1 100644 ---- a/ucm2/Tegra/max98089/lge-x3.conf -+++ b/ucm2/Tegra/max98089/lge-x3.conf -@@ -30,10 +30,8 @@ BootSequence [ - cset "name='Internal Mic 2 Switch' off" - cset "name='Mic Jack Switch' off" - -- cset "name='Right SPK Mixer Left DAC1 Switch' on" -- cset "name='Right SPK Mixer Left DAC2 Switch' on" -- cset "name='Right SPK Mixer Right DAC1 Switch' on" -- cset "name='Right SPK Mixer Right DAC2 Switch' on" -+ cset "name='Right SPK Mixer Left DAC Switch' on" -+ cset "name='Right SPK Mixer Right DAC Switch' on" - ] - - SectionUseCase."HiFi" { --- -2.49.0 - - -From a1edaee761d301f7d010124599fd9f82c34fc7db Mon Sep 17 00:00:00 2001 -From: Markus Parviainen -Date: Sun, 27 Apr 2025 20:20:42 +0300 -Subject: [PATCH 07/24] Fix Presonus Revelator IO44 HWChannels count - -Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/557 -Signed-off-by: Markus Parviainen -Signed-off-by: Jaroslav Kysela ---- - ucm2/USB-Audio/Presonus/Revelator-IO-44-HiFi.conf | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/ucm2/USB-Audio/Presonus/Revelator-IO-44-HiFi.conf b/ucm2/USB-Audio/Presonus/Revelator-IO-44-HiFi.conf -index f223e08..6439613 100644 ---- a/ucm2/USB-Audio/Presonus/Revelator-IO-44-HiFi.conf -+++ b/ucm2/USB-Audio/Presonus/Revelator-IO-44-HiFi.conf -@@ -59,7 +59,7 @@ SectionDevice."Line1" { - Macro.pcm_split.SplitPCMDevice { - Name "revelator_stereo_out" - Direction Playback -- HWChannels 2 -+ HWChannels 6 - Channels 2 - Channel0 0 - Channel1 1 -@@ -78,7 +78,7 @@ SectionDevice."Line2" { - Macro.pcm_split.SplitPCMDevice { - Name "revelator_stereo_out" - Direction Playback -- HWChannels 2 -+ HWChannels 6 - Channels 2 - Channel0 2 - Channel1 3 -@@ -97,7 +97,7 @@ SectionDevice."Line3" { - Macro.pcm_split.SplitPCMDevice { - Name "revelator_stereo_out" - Direction Playback -- HWChannels 2 -+ HWChannels 6 - Channels 2 - Channel0 4 - Channel1 5 --- -2.49.0 - - -From aa25928dd03299afc9bff994f06c37fc700bb8c0 Mon Sep 17 00:00:00 2001 -From: Johan Hovold -Date: Thu, 15 May 2025 15:06:56 +0200 -Subject: [PATCH 08/24] ucm2: Qualcomm: sc8280xp: fix internal microphones - device - -A recent change renamed the internal microphones device from "DMic01" to -"Mic", but the latter name is already used by the headset microphone so -this breaks the internal microphones on the Lenovo ThinkPad X13s. - -Rename the headset microphone device so that the names are unique and -fix up the jack hw mute property which is still using the old name. - -Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/563 -Fixes: ea7a065a7b50 ("ucm: fix SectionDevice identifiers") -Signed-off-by: Johan Hovold -Signed-off-by: Jaroslav Kysela ---- - ucm2/Qualcomm/sc8280xp/HiFi.conf | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -diff --git a/ucm2/Qualcomm/sc8280xp/HiFi.conf b/ucm2/Qualcomm/sc8280xp/HiFi.conf -index e20aa9c..916f1ee 100644 ---- a/ucm2/Qualcomm/sc8280xp/HiFi.conf -+++ b/ucm2/Qualcomm/sc8280xp/HiFi.conf -@@ -50,8 +50,8 @@ SectionDevice."Headphones" { - } - } - --SectionDevice."Mic" { -- Comment "Mic" -+SectionDevice."Headset" { -+ Comment "Headset microphone" - - Include.wcdmice.File "/codecs/wcd938x/HeadphoneMicEnableSeq.conf" - Include.wcdmicd.File "/codecs/wcd938x/HeadphoneMicDisableSeq.conf" -@@ -63,12 +63,12 @@ SectionDevice."Mic" { - CapturePCM "hw:${CardId},2" - CaptureMixerElem "ADC2" - JackControl "Mic Jack" -- JackHWMute "DMic01" -+ JackHWMute "Mic" - } - } - - SectionDevice."Mic" { -- Comment "Microphone" -+ Comment "Internal microphones" - - Include.vadm0e.File "/codecs/qcom-lpass/va-macro/DMIC0EnableSeq.conf" - Include.vadm0d.File "/codecs/qcom-lpass/va-macro/DMIC0DisableSeq.conf" --- -2.49.0 - - -From 88e1cd78633ea0ad46115ffe8779140fa91fd2f5 Mon Sep 17 00:00:00 2001 -From: Johan Hovold -Date: Thu, 15 May 2025 15:14:53 +0200 -Subject: [PATCH 09/24] ucm2: Qualcomm: sm8650: QRD: fix headset jack hw mute - -A recent change renamed the internal microphone devices but failed to -update the headset jack hw mute properties that are still using the old -names. - -Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/563 -Fixes: ea7a065a7b50 ("ucm: fix SectionDevice identifiers") -Signed-off-by: Johan Hovold -Signed-off-by: Jaroslav Kysela ---- - ucm2/Qualcomm/sm8650/QRD/HiFi.conf | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/ucm2/Qualcomm/sm8650/QRD/HiFi.conf b/ucm2/Qualcomm/sm8650/QRD/HiFi.conf -index 4336525..ca40c29 100644 ---- a/ucm2/Qualcomm/sm8650/QRD/HiFi.conf -+++ b/ucm2/Qualcomm/sm8650/QRD/HiFi.conf -@@ -77,8 +77,8 @@ SectionDevice."Headset" { - CapturePCM "hw:${CardId},2" - CaptureMixerElem "ADC2" - JackControl "Mic Jack" -- JackHWMute "Bottom" -- JackHWMute "Back" -+ JackHWMute "Mic1" -+ JackHWMute "Mic2" - } - } - --- -2.49.0 - - -From bab88e0c31cee1c2603428c2ce6444aea343b646 Mon Sep 17 00:00:00 2001 -From: Johan Hovold -Date: Thu, 15 May 2025 15:17:02 +0200 -Subject: [PATCH 10/24] ucm2: tegra: max98090: fix headphones conflicting - device - -A recent change renames the speaker device but failed to update the -headphones conflicting device list. - -Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/563 -Fixes: ea7a065a7b50 ("ucm: fix SectionDevice identifiers") -Signed-off-by: Johan Hovold -Signed-off-by: Jaroslav Kysela ---- - ucm2/Tegra/max98090/HiFi.conf | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/ucm2/Tegra/max98090/HiFi.conf b/ucm2/Tegra/max98090/HiFi.conf -index d6e4e9d..5d4ef71 100644 ---- a/ucm2/Tegra/max98090/HiFi.conf -+++ b/ucm2/Tegra/max98090/HiFi.conf -@@ -33,7 +33,7 @@ SectionDevice."Headphones" { - Comment = "Headphones" - - ConflictingDevice [ -- "Speakers" -+ "Speaker" - ] - - EnableSequence [ --- -2.49.0 - - -From 24d62b54d5ad6c7e6f9cff4cedcc334b1c98602f Mon Sep 17 00:00:00 2001 -From: Johan Hovold -Date: Thu, 15 May 2025 15:19:01 +0200 -Subject: [PATCH 11/24] ucm2: USB-Audio: Behringer: Flow8: fix conflicting - devices - -A recent change renamed the Line-56 and Line-78 devices but failed to -update the conflicting device lists. - -Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/563 -Fixes: ea7a065a7b50 ("ucm: fix SectionDevice identifiers") -Signed-off-by: Johan Hovold -Signed-off-by: Jaroslav Kysela ---- - ucm2/USB-Audio/Behringer/Flow8-Recording-Hifi.conf | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -diff --git a/ucm2/USB-Audio/Behringer/Flow8-Recording-Hifi.conf b/ucm2/USB-Audio/Behringer/Flow8-Recording-Hifi.conf -index 5dce19c..8ce7590 100644 ---- a/ucm2/USB-Audio/Behringer/Flow8-Recording-Hifi.conf -+++ b/ucm2/USB-Audio/Behringer/Flow8-Recording-Hifi.conf -@@ -157,7 +157,7 @@ SectionDevice."Line5" { - Comment "Line/Inst 5 (L)" - - ConflictingDevice [ -- "Line56" -+ "Line9" - ] - - Value { -@@ -177,7 +177,7 @@ SectionDevice."Line6" { - Comment "Line/Inst(HiZ) 6 (R)" - - ConflictingDevice [ -- "Line56" -+ "Line9" - ] - - Value { -@@ -197,7 +197,7 @@ SectionDevice."Line7" { - Comment "Line/Inst 7 (L)" - - ConflictingDevice [ -- "Line78" -+ "Line10" - ] - - Value { -@@ -217,7 +217,7 @@ SectionDevice."Line8" { - Comment "Line/Inst(HiZ) 8 (R)" - - ConflictingDevice [ -- "Line78" -+ "Line10" - ] - - Value { --- -2.49.0 - - -From 1f816194a9feb2ce0c973ccc2a93551a6f641d77 Mon Sep 17 00:00:00 2001 -From: Hiago De Franco -Date: Mon, 12 May 2025 13:57:32 -0300 -Subject: [PATCH 12/24] ucm2: IO-Boards: Toradex: smarc: add support - -Add support for Toradex SMARC Development board, using the WM8904 audio -codec. - -This is a carrier board for the Toradex SMARC family, where any SMARC -SoM can be connected to it, therefore this is being added to the -IO-Boards instead of a specific hardware vendor. - -Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/562 -Signed-off-by: Hiago De Franco -Signed-off-by: Jaroslav Kysela ---- - ucm2/IO-Boards/Toradex/smarc/dev-HiFi.conf | 39 +++++++++++++++++++ - ucm2/IO-Boards/Toradex/smarc/dev.conf | 17 ++++++++ - ucm2/conf.d/simple-card/tdx-smarc-wm8904.conf | 1 + - 3 files changed, 57 insertions(+) - create mode 100644 ucm2/IO-Boards/Toradex/smarc/dev-HiFi.conf - create mode 100644 ucm2/IO-Boards/Toradex/smarc/dev.conf - create mode 120000 ucm2/conf.d/simple-card/tdx-smarc-wm8904.conf - -diff --git a/ucm2/IO-Boards/Toradex/smarc/dev-HiFi.conf b/ucm2/IO-Boards/Toradex/smarc/dev-HiFi.conf -new file mode 100644 -index 0000000..7d2dffc ---- /dev/null -+++ b/ucm2/IO-Boards/Toradex/smarc/dev-HiFi.conf -@@ -0,0 +1,39 @@ -+# Use case configuration for Toradex SMARC Development Carrier Board -+# This is a carrier board for the Toradex SMARC family, where any Toradex SMARC -+# SoM (with different SoCs as iMX8MP, iMX95...) can be connected to it. -+ -+SectionDevice."Headphones" { -+ Comment "Headphones" -+ -+ EnableSequence [ -+ cset "name='Headphone Switch' on" -+ ] -+ -+ DisableSequence [ -+ cset "name='Headphone Switch' off" -+ ] -+ -+ Value { -+ PlaybackPCM "hw:${CardId}" -+ PlaybackVolume "Headphone Volume" -+ PlaybackSwitch "Headphone Switch" -+ } -+} -+ -+SectionDevice."Mic" { -+ Comment "Microphone" -+ -+ EnableSequence [ -+ cset "name='Capture Switch' on" -+ ] -+ -+ DisableSequence [ -+ cset "name='Capture Switch' off" -+ ] -+ -+ Value { -+ CapturePCM "hw:${CardId}" -+ CaptureVolume "Capture Volume" -+ CaptureSwitch "Capture Switch" -+ } -+} -diff --git a/ucm2/IO-Boards/Toradex/smarc/dev.conf b/ucm2/IO-Boards/Toradex/smarc/dev.conf -new file mode 100644 -index 0000000..e795068 ---- /dev/null -+++ b/ucm2/IO-Boards/Toradex/smarc/dev.conf -@@ -0,0 +1,17 @@ -+# Use case configuration for Toradex SMARC Development Carrier Board -+# This is a carrier board for the Toradex SMARC family, where any Toradex SMARC -+# SoM (with different SoCs as iMX8MP, iMX95...) can be connected to it. -+ -+Syntax 4 -+ -+SectionUseCase."HiFi" { -+ File "/IO-Boards/Toradex/smarc/dev-HiFi.conf" -+ Comment "Default" -+} -+ -+BootSequence [ -+ cset "name='Headphone Volume' 50%" -+ cset "name='Left Capture Inverting Mux' 'IN1L'" -+ cset "name='Right Capture Inverting Mux' 'IN1R'" -+ cset "name='Capture Volume' 31" -+] -diff --git a/ucm2/conf.d/simple-card/tdx-smarc-wm8904.conf b/ucm2/conf.d/simple-card/tdx-smarc-wm8904.conf -new file mode 120000 -index 0000000..096f833 ---- /dev/null -+++ b/ucm2/conf.d/simple-card/tdx-smarc-wm8904.conf -@@ -0,0 +1 @@ -+../../IO-Boards/Toradex/smarc/dev.conf -\ No newline at end of file --- -2.49.0 - - -From ac918f9b606f6bfe102c449997a1bcab01934db0 Mon Sep 17 00:00:00 2001 -From: Flo -Date: Sat, 24 May 2025 11:52:12 +0200 -Subject: [PATCH 13/24] USB-Audio: Solid State Labs SSL 2 - fix capture - channels - -Same fix as for SSL+, commit fc17ed4. -Capture configuration is the same, with 4 channels. - - Capture: - Status: Stop - Interface 2 - Altset 1 - Format: S32_LE - Channels: 4 - Endpoint: 0x81 (1 IN) (ASYNC) - Rates: 44100, 48000, 88200, 96000, 176400, 192000 - Data packet interval: 125 us - Bits: 24 - Channel map: FL FR FC LFE - -Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/566 -Signed-off-by: Flo -Signed-off-by: Jaroslav Kysela ---- - ucm2/USB-Audio/SolidStateLabs/SSL2-HiFi.conf | 6 +++--- - ucm2/USB-Audio/SolidStateLabs/SSL2.conf | 2 +- - 2 files changed, 4 insertions(+), 4 deletions(-) - -diff --git a/ucm2/USB-Audio/SolidStateLabs/SSL2-HiFi.conf b/ucm2/USB-Audio/SolidStateLabs/SSL2-HiFi.conf -index 46b2e26..8663384 100644 ---- a/ucm2/USB-Audio/SolidStateLabs/SSL2-HiFi.conf -+++ b/ucm2/USB-Audio/SolidStateLabs/SSL2-HiFi.conf -@@ -6,7 +6,7 @@ Macro [ - Name "ssl2_mono_in" - Direction Capture - Channels 1 -- HWChannels 2 -+ HWChannels 4 - HWChannelPos0 MONO - HWChannelPos1 MONO - } -@@ -31,7 +31,7 @@ SectionDevice."Mic1" { - Macro.pcm_split.SplitPCMDevice { - Name "ssl2_mono_in" - Direction Capture -- HWChannels 2 -+ HWChannels 4 - Channels 1 - Channel0 0 - ChannelPos0 MONO -@@ -47,7 +47,7 @@ SectionDevice."Mic2" { - Macro.pcm_split.SplitPCMDevice { - Name "ssl2_mono_in" - Direction Capture -- HWChannels 2 -+ HWChannels 4 - Channels 1 - Channel0 1 - ChannelPos0 MONO -diff --git a/ucm2/USB-Audio/SolidStateLabs/SSL2.conf b/ucm2/USB-Audio/SolidStateLabs/SSL2.conf -index 5531834..3cdb60b 100644 ---- a/ucm2/USB-Audio/SolidStateLabs/SSL2.conf -+++ b/ucm2/USB-Audio/SolidStateLabs/SSL2.conf -@@ -6,6 +6,6 @@ SectionUseCase."HiFi" { - } - - Define.DirectPlaybackChannels 2 --Define.DirectCaptureChannels 2 -+Define.DirectCaptureChannels 4 - - Include.dhw.File "/common/direct.conf" --- -2.49.0 - - -From 421e37bae75efc1fc134fbc84bc301f041aaff3b Mon Sep 17 00:00:00 2001 -From: Craig McLure -Date: Tue, 6 May 2025 18:40:47 +0100 -Subject: [PATCH 14/24] USB-Audio: Added Beacn Mic and Studio Support - -Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/558 -Signed-off-by: Craig McLure -Signed-off-by: Jaroslav Kysela ---- - ucm2/USB-Audio/Beacn/Beacn-Mic-HiFi.conf | 63 ++++++ - ucm2/USB-Audio/Beacn/Beacn-Mic.conf | 11 ++ - .../Beacn/Beacn-Studio-USB1-Channels.conf | 41 ++++ - .../Beacn/Beacn-Studio-USB1-HiFi.conf | 35 ++++ - .../Beacn/Beacn-Studio-USB1-Link-HiFi.conf | 179 ++++++++++++++++++ - .../Beacn/Beacn-Studio-USB2-HiFi.conf | 175 +++++++++++++++++ - ucm2/USB-Audio/Beacn/Beacn-Studio.conf | 42 ++++ - ucm2/USB-Audio/USB-Audio.conf | 16 ++ - 8 files changed, 562 insertions(+) - create mode 100644 ucm2/USB-Audio/Beacn/Beacn-Mic-HiFi.conf - create mode 100644 ucm2/USB-Audio/Beacn/Beacn-Mic.conf - create mode 100644 ucm2/USB-Audio/Beacn/Beacn-Studio-USB1-Channels.conf - create mode 100644 ucm2/USB-Audio/Beacn/Beacn-Studio-USB1-HiFi.conf - create mode 100644 ucm2/USB-Audio/Beacn/Beacn-Studio-USB1-Link-HiFi.conf - create mode 100644 ucm2/USB-Audio/Beacn/Beacn-Studio-USB2-HiFi.conf - create mode 100644 ucm2/USB-Audio/Beacn/Beacn-Studio.conf - -diff --git a/ucm2/USB-Audio/Beacn/Beacn-Mic-HiFi.conf b/ucm2/USB-Audio/Beacn/Beacn-Mic-HiFi.conf -new file mode 100644 -index 0000000..2445531 ---- /dev/null -+++ b/ucm2/USB-Audio/Beacn/Beacn-Mic-HiFi.conf -@@ -0,0 +1,63 @@ -+Include.pcm_split.File "/common/pcm/split.conf" -+ -+Macro [ -+ { -+ SplitPCM { -+ Name "beacn_mic_stereo_out" -+ Direction Playback -+ Channels 2 -+ HWChannels 3 -+ HWChannelPos0 FL -+ HWChannelPos1 FR -+ HWChannelPos2 MONO -+ } -+ } -+ { -+ SplitPCM { -+ Name "beacn_mic_stereo_in" -+ Direction Capture -+ Channels 2 -+ HWChannels 4 -+ HWChannelPos0 FL -+ HWChannelPos1 FR -+ HWChannelPos2 MONO # Dry Mic -+ HWChannelPos3 MONO # Dry + Expander -+ } -+ } -+] -+ -+SectionDevice."Headphones" { -+ Comment "Headphones" -+ -+ Value { -+ PlaybackPriority 200 -+ } -+ Macro.pcm_split.SplitPCMDevice { -+ Name "beacn_mic_stereo_out" -+ Direction Playback -+ HWChannels 3 -+ Channels 2 -+ Channel0 0 -+ Channel1 1 -+ ChannelPos0 FL -+ ChannelPos1 FR -+ } -+} -+ -+SectionDevice."Mic" { -+ Comment "Microphone" -+ -+ Value { -+ CapturePriority 200 -+ } -+ Macro.pcm_split.SplitPCMDevice { -+ Name "beacn_mic_stereo_in" -+ Direction Capture -+ HWChannels 4 -+ Channels 2 -+ Channel0 0 -+ Channel1 1 -+ ChannelPos0 FL -+ ChannelPos1 FR -+ } -+} -diff --git a/ucm2/USB-Audio/Beacn/Beacn-Mic.conf b/ucm2/USB-Audio/Beacn/Beacn-Mic.conf -new file mode 100644 -index 0000000..95c6f81 ---- /dev/null -+++ b/ucm2/USB-Audio/Beacn/Beacn-Mic.conf -@@ -0,0 +1,11 @@ -+Comment "Beacn Mic USB" -+ -+SectionUseCase."HiFi" { -+ Comment "Default Alsa Profile" -+ File "/USB-Audio/Beacn/Beacn-Mic-HiFi.conf" -+} -+ -+Define.DirectPlaybackChannels 3 -+Define.DirectCaptureChannels 4 -+ -+Include.dhw.File "/common/direct.conf" -diff --git a/ucm2/USB-Audio/Beacn/Beacn-Studio-USB1-Channels.conf b/ucm2/USB-Audio/Beacn/Beacn-Studio-USB1-Channels.conf -new file mode 100644 -index 0000000..b9886f4 ---- /dev/null -+++ b/ucm2/USB-Audio/Beacn/Beacn-Studio-USB1-Channels.conf -@@ -0,0 +1,41 @@ -+Include.pcm_split.File "/common/pcm/split.conf" -+ -+Macro.playback.SplitPCM { -+ Name "beacn_studio_stereo_out" -+ Direction Playback -+ Channels 2 -+ HWChannels 11 -+ HWChannelPos0 FL # Headphone Left -+ HWChannelPos1 FR # Headphone Right -+ HWChannelPos2 MONO # Unused Channel -+ HWChannelPos3 FL # Link 1 Out Left -+ HWChannelPos4 FR # Link 1 Out Right -+ HWChannelPos5 FL # Link 2 Out Left -+ HWChannelPos6 FR # Link 2 Out Right -+ HWChannelPos7 FL # Link 3 Out Left -+ HWChannelPos8 FR # Link 3 Out Right -+ HWChannelPos9 FL # Link 4 Out Left -+ HWChannelPos10 FR # Link 4 Out Right -+} -+ -+Macro.capture.SplitPCM { -+ Name "beacn_studio_stereo_in" -+ Direction Capture -+ Channels 2 -+ HWChannels 12 -+ -+ HWChannelPos0 FL # Microphone Left -+ HWChannelPos1 FR # Microphone Right -+ -+ HWChannelPos2 MONO # UNKNOWN (Possible Dry Mic) -+ HWChannelPos3 MONO # UNKNOWN (Possible Dry + Expander) -+ -+ HWChannelPos4 FL # Link 1 In Left -+ HWChannelPos5 FR # Link 1 In Right -+ HWChannelPos6 FL # Link 2 In Left -+ HWChannelPos7 FR # Link 2 In Right -+ HWChannelPos8 FL # Link 3 In Left -+ HWChannelPos9 FR # Link 3 In Right -+ HWChannelPos10 FL # Link 4 In Left -+ HWChannelPos11 FR # Link 4 In Right -+} -diff --git a/ucm2/USB-Audio/Beacn/Beacn-Studio-USB1-HiFi.conf b/ucm2/USB-Audio/Beacn/Beacn-Studio-USB1-HiFi.conf -new file mode 100644 -index 0000000..8c90d5b ---- /dev/null -+++ b/ucm2/USB-Audio/Beacn/Beacn-Studio-USB1-HiFi.conf -@@ -0,0 +1,35 @@ -+SectionDevice."Headphones" { -+ Comment "Headphones" -+ -+ Value { -+ PlaybackPriority 100 -+ } -+ Macro.pcm_split.SplitPCMDevice { -+ Name "beacn_studio_stereo_out" -+ Direction Playback -+ HWChannels 11 -+ Channels 2 -+ Channel0 0 -+ Channel1 1 -+ ChannelPos0 FL -+ ChannelPos1 FR -+ } -+} -+ -+SectionDevice."Mic" { -+ Comment "Microphone" -+ -+ Value { -+ CapturePriority 100 -+ } -+ Macro.pcm_split.SplitPCMDevice { -+ Name "beacn_studio_stereo_in" -+ Direction Capture -+ HWChannels 12 -+ Channels 2 -+ Channel0 0 -+ Channel1 1 -+ ChannelPos0 FL -+ ChannelPos1 FR -+ } -+} -diff --git a/ucm2/USB-Audio/Beacn/Beacn-Studio-USB1-Link-HiFi.conf b/ucm2/USB-Audio/Beacn/Beacn-Studio-USB1-Link-HiFi.conf -new file mode 100644 -index 0000000..74ff142 ---- /dev/null -+++ b/ucm2/USB-Audio/Beacn/Beacn-Studio-USB1-Link-HiFi.conf -@@ -0,0 +1,179 @@ -+SectionDevice."Line1" { -+ Comment "Link 4" -+ -+ Value { -+ PlaybackPriority 400 -+ } -+ Macro.pcm_split.SplitPCMDevice { -+ Name "beacn_studio_stereo_out" -+ Direction Playback -+ HWChannels 11 -+ Channels 2 -+ Channel0 9 -+ Channel1 10 -+ ChannelPos0 FL -+ ChannelPos1 FR -+ } -+} -+ -+SectionDevice."Line2" { -+ Comment "Link 3" -+ -+ Value { -+ PlaybackPriority 400 -+ } -+ Macro.pcm_split.SplitPCMDevice { -+ Name "beacn_studio_stereo_out" -+ Direction Playback -+ HWChannels 11 -+ Channels 2 -+ Channel0 7 -+ Channel1 8 -+ ChannelPos0 FL -+ ChannelPos1 FR -+ } -+} -+ -+SectionDevice."Line3" { -+ Comment "Link 2" -+ -+ Value { -+ PlaybackPriority 400 -+ } -+ Macro.pcm_split.SplitPCMDevice { -+ Name "beacn_studio_stereo_out" -+ Direction Playback -+ HWChannels 11 -+ Channels 2 -+ Channel0 5 -+ Channel1 6 -+ ChannelPos0 FL -+ ChannelPos1 FR -+ } -+} -+ -+SectionDevice."Line4" { -+ Comment "Link 1" -+ -+ Value { -+ PlaybackPriority 400 -+ } -+ Macro.pcm_split.SplitPCMDevice { -+ Name "beacn_studio_stereo_out" -+ Direction Playback -+ HWChannels 11 -+ Channels 2 -+ Channel0 3 -+ Channel1 4 -+ ChannelPos0 FL -+ ChannelPos1 FR -+ } -+} -+ -+SectionDevice."Headphones" { -+ Comment "Headphones" -+ -+ Value { -+ PlaybackPriority 100 -+ } -+ Macro.pcm_split.SplitPCMDevice { -+ Name "beacn_studio_stereo_out" -+ Direction Playback -+ HWChannels 11 -+ Channels 2 -+ Channel0 0 -+ Channel1 1 -+ ChannelPos0 FL -+ ChannelPos1 FR -+ } -+} -+ -+SectionDevice."Line5" { -+ Comment "Link 4" -+ -+ Value { -+ PlaybackPriority 400 -+ } -+ Macro.pcm_split.SplitPCMDevice { -+ Name "beacn_studio_stereo_in" -+ Direction Capture -+ HWChannels 12 -+ Channels 2 -+ Channel0 10 -+ Channel1 11 -+ ChannelPos0 FL -+ ChannelPos1 FR -+ } -+} -+ -+SectionDevice."Line6" { -+ Comment "Link 3" -+ -+ Value { -+ PlaybackPriority 400 -+ } -+ Macro.pcm_split.SplitPCMDevice { -+ Name "beacn_studio_stereo_in" -+ Direction Capture -+ HWChannels 12 -+ Channels 2 -+ Channel0 8 -+ Channel1 9 -+ ChannelPos0 FL -+ ChannelPos1 FR -+ } -+} -+ -+SectionDevice."Line7" { -+ Comment "Link 2" -+ -+ Value { -+ PlaybackPriority 400 -+ } -+ Macro.pcm_split.SplitPCMDevice { -+ Name "beacn_studio_stereo_in" -+ Direction Capture -+ HWChannels 12 -+ Channels 2 -+ Channel0 6 -+ Channel1 7 -+ ChannelPos0 FL -+ ChannelPos1 FR -+ } -+} -+ -+SectionDevice."Line8" { -+ Comment "Link 1" -+ -+ Value { -+ PlaybackPriority 400 -+ } -+ Macro.pcm_split.SplitPCMDevice { -+ Name "beacn_studio_stereo_in" -+ Direction Capture -+ HWChannels 12 -+ Channels 2 -+ Channel0 4 -+ Channel1 5 -+ ChannelPos0 FL -+ ChannelPos1 FR -+ } -+} -+ -+SectionDevice."Mic" { -+ Comment "Microphone" -+ -+ Value { -+ CapturePriority 100 -+ } -+ Macro.pcm_split.SplitPCMDevice { -+ Name "beacn_studio_stereo_in" -+ Direction Capture -+ HWChannels 12 -+ Channels 2 -+ Channel0 0 -+ Channel1 1 -+ ChannelPos0 FL -+ ChannelPos1 FR -+ } -+} -diff --git a/ucm2/USB-Audio/Beacn/Beacn-Studio-USB2-HiFi.conf b/ucm2/USB-Audio/Beacn/Beacn-Studio-USB2-HiFi.conf -new file mode 100644 -index 0000000..5988d41 ---- /dev/null -+++ b/ucm2/USB-Audio/Beacn/Beacn-Studio-USB2-HiFi.conf -@@ -0,0 +1,175 @@ -+Include.pcm_split.File "/common/pcm/split.conf" -+ -+Macro.playback.SplitPCM { -+ Name "beacn_studio_stereo_out" -+ Direction Playback -+ Channels 2 -+ HWChannels 8 -+ HWChannelPos0 FL -+ HWChannelPos1 FR -+ HWChannelPos2 FL -+ HWChannelPos3 FR -+ HWChannelPos4 FL -+ HWChannelPos5 FR -+ HWChannelPos6 FL -+ HWChannelPos7 FR -+} -+ -+Macro.capture.SplitPCM { -+ Name "beacn_studio_stereo_in" -+ Direction Capture -+ Channels 2 -+ HWChannels 8 -+ HWChannelPos0 FL -+ HWChannelPos1 FR -+ HWChannelPos2 FL -+ HWChannelPos3 FR -+ HWChannelPos4 FL -+ HWChannelPos5 FR -+ HWChannelPos6 FL -+ HWChannelPos7 FR -+} -+ -+SectionDevice."Line1" { -+ Comment "Link 4" -+ -+ Value { -+ PlaybackPriority 400 -+ } -+ Macro.pcm_split.SplitPCMDevice { -+ Name "beacn_studio_stereo_out" -+ Direction Playback -+ HWChannels 8 -+ Channels 2 -+ Channel0 6 -+ Channel1 7 -+ ChannelPos0 FL -+ ChannelPos1 FR -+ } -+} -+ -+SectionDevice."Line2" { -+ Comment "Link 3" -+ -+ Value { -+ PlaybackPriority 400 -+ } -+ Macro.pcm_split.SplitPCMDevice { -+ Name "beacn_studio_stereo_out" -+ Direction Playback -+ HWChannels 8 -+ Channels 2 -+ Channel0 4 -+ Channel1 5 -+ ChannelPos0 FL -+ ChannelPos1 FR -+ } -+} -+ -+SectionDevice."Line3" { -+ Comment "Link 2" -+ -+ Value { -+ PlaybackPriority 400 -+ } -+ Macro.pcm_split.SplitPCMDevice { -+ Name "beacn_studio_stereo_out" -+ Direction Playback -+ HWChannels 8 -+ Channels 2 -+ Channel0 2 -+ Channel1 3 -+ ChannelPos0 FL -+ ChannelPos1 FR -+ } -+} -+ -+SectionDevice."Line4" { -+ Comment "Link 1" -+ -+ Value { -+ PlaybackPriority 400 -+ } -+ Macro.pcm_split.SplitPCMDevice { -+ Name "beacn_studio_stereo_out" -+ Direction Playback -+ HWChannels 8 -+ Channels 2 -+ Channel0 0 -+ Channel1 1 -+ ChannelPos0 FL -+ ChannelPos1 FR -+ } -+} -+ -+SectionDevice."Line5" { -+ Comment "Link 4" -+ -+ Value { -+ PlaybackPriority 400 -+ } -+ Macro.pcm_split.SplitPCMDevice { -+ Name "beacn_studio_stereo_in" -+ Direction Capture -+ HWChannels 8 -+ Channels 2 -+ Channel0 6 -+ Channel1 7 -+ ChannelPos0 FL -+ ChannelPos1 FR -+ } -+} -+ -+SectionDevice."Line6" { -+ Comment "Link 3" -+ -+ Value { -+ PlaybackPriority 400 -+ } -+ Macro.pcm_split.SplitPCMDevice { -+ Name "beacn_studio_stereo_in" -+ Direction Capture -+ HWChannels 8 -+ Channels 2 -+ Channel0 4 -+ Channel1 5 -+ ChannelPos0 FL -+ ChannelPos1 FR -+ } -+} -+ -+SectionDevice."Line7" { -+ Comment "Link 2" -+ -+ Value { -+ PlaybackPriority 400 -+ } -+ Macro.pcm_split.SplitPCMDevice { -+ Name "beacn_studio_stereo_in" -+ Direction Capture -+ HWChannels 8 -+ Channels 2 -+ Channel0 2 -+ Channel1 3 -+ ChannelPos0 FL -+ ChannelPos1 FR -+ } -+} -+ -+SectionDevice."Line8" { -+ Comment "Link 1" -+ -+ Value { -+ PlaybackPriority 400 -+ } -+ Macro.pcm_split.SplitPCMDevice { -+ Name "beacn_studio_stereo_in" -+ Direction Capture -+ HWChannels 8 -+ Channels 2 -+ Channel0 0 -+ Channel1 1 -+ ChannelPos0 FL -+ ChannelPos1 FR -+ } -+} -diff --git a/ucm2/USB-Audio/Beacn/Beacn-Studio.conf b/ucm2/USB-Audio/Beacn/Beacn-Studio.conf -new file mode 100644 -index 0000000..1b3adc0 ---- /dev/null -+++ b/ucm2/USB-Audio/Beacn/Beacn-Studio.conf -@@ -0,0 +1,42 @@ -+# The Beacn Studio has two USB ports which both present different PIDs, so we do -+# individual checks, and load the appropriate configs for the port connected. -+ -+Comment "Beacn Studio USB" -+If.usb1 { -+ Condition { -+ Type String -+ Haystack "${CardComponents}" -+ Needle "USB33ae:0003" -+ } -+ True { -+ # Channel configuration is common between all the profiles, so we'll include it here -+ Include.pcm_split.File "/USB-Audio/Beacn/Beacn-Studio-USB1-Channels.conf" -+ -+ # If the user isn't using the 'Dual PC' feature of the Beacn Studio, there isn't really -+ # much point presenting them with an additional 4 unusable inputs and outputs, so we'll -+ # offer two profile options so those channels can be hidden. -+ SectionUseCase."Basic" { -+ Comment "Beacn Studio" -+ File "/USB-Audio/Beacn/Beacn-Studio-USB1-HiFi.conf" -+ } -+ -+ SectionUseCase."Link" { -+ Comment "Beacn Studio with Link" -+ File "/USB-Audio/Beacn/Beacn-Studio-USB1-Link-HiFi.conf" -+ } -+ } -+} -+ -+If.usb2 { -+ Condition { -+ Type String -+ Haystack "${CardComponents}" -+ Needle "USB33ae:4003" -+ } -+ True { -+ SectionUseCase."Link" { -+ Comment "Beacn Studio Link" -+ File "/USB-Audio/Beacn/Beacn-Studio-USB2-HiFi.conf" -+ } -+ } -+} -diff --git a/ucm2/USB-Audio/USB-Audio.conf b/ucm2/USB-Audio/USB-Audio.conf -index fe2cd46..d90db39 100644 ---- a/ucm2/USB-Audio/USB-Audio.conf -+++ b/ucm2/USB-Audio/USB-Audio.conf -@@ -541,7 +541,23 @@ If.ssl2plus { - ProfileName "SolidStateLabs/SSL2Plus" - } - } -+If.beacn-mic { -+ Condition { -+ Type String -+ Haystack "${CardComponents}" -+ Needle "USB33ae:0001" -+ } -+ True.Define.ProfileName "Beacn/Beacn-Mic" -+} - -+If.beacn-studio { -+ Condition { -+ Type RegexMatch -+ String "${CardComponents}" -+ Regex "USB33ae:[04]003" -+ } -+ True.Define.ProfileName "Beacn/Beacn-Studio" -+} - If.mixremap { - Condition { - Type String --- -2.49.0 - - -From e055d16bdf971e26c3d92d998bccb2ca4e4f3c1a Mon Sep 17 00:00:00 2001 -From: binarycraft007 -Date: Mon, 2 Jun 2025 13:41:38 +0800 -Subject: [PATCH 15/24] ucm2: Qualcomm: add ASUS Vivobook S 15 support - -S15 supports: - - 2 speakers. - - 2 dmics - - headset with mic. - -This patch adds support to all these, however only speakers, dmic and -headset playback is tested. - -Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/570 -Signed-off-by: binarycraft007 -Signed-off-by: Jaroslav Kysela ---- - ucm2/Qualcomm/x1e80100/x1e80100.conf | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/ucm2/Qualcomm/x1e80100/x1e80100.conf b/ucm2/Qualcomm/x1e80100/x1e80100.conf -index 10faf5f..ecbb13d 100644 ---- a/ucm2/Qualcomm/x1e80100/x1e80100.conf -+++ b/ucm2/Qualcomm/x1e80100/x1e80100.conf -@@ -6,7 +6,7 @@ If.LENOVOT14s { - Condition { - Type RegexMatch - String "${var:DMI_info}" -- Regex "LENOVO.*Think((Pad T14s Gen 6.*)|(Book 16 G7 QOY))|(HP.*Omnibook X.*)|(ASUSTeK COMPUTER.*ASUS Zenbook A14)|(Microsoft Corporation.*Surface.*Microsoft Surface Laptop, 7th Edition)" -+ Regex "LENOVO.*Think((Pad T14s Gen 6.*)|(Book 16 G7 QOY))|(HP.*Omnibook X.*)|ASUSTeK COMPUTER.*ASUS (Zenbook A14|Vivobook S 15)|(Microsoft Corporation.*Surface.*Microsoft Surface Laptop, 7th Edition)" - } - True.Include.t14s.File "/Qualcomm/x1e80100/LENOVO-T14s.conf" - } --- -2.49.0 - - -From 59d53fd9cac27e9a05623251aefa6d06da94260c Mon Sep 17 00:00:00 2001 -From: Craig McLure -Date: Wed, 4 Jun 2025 23:25:51 +0100 -Subject: [PATCH 16/24] Changed 'Stream Mix' channel names to match the latest - Window release - -Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/572 -Signed-off-by: Craig McLure -Signed-off-by: Jaroslav Kysela ---- - ucm2/USB-Audio/GoXLR/GoXLR-HiFi.conf | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/ucm2/USB-Audio/GoXLR/GoXLR-HiFi.conf b/ucm2/USB-Audio/GoXLR/GoXLR-HiFi.conf -index 6614b00..17c6580 100644 ---- a/ucm2/USB-Audio/GoXLR/GoXLR-HiFi.conf -+++ b/ucm2/USB-Audio/GoXLR/GoXLR-HiFi.conf -@@ -140,7 +140,7 @@ SectionDevice."Line3" { - } - - SectionDevice."Line4" { -- Comment "Broadcast Stream Mix" -+ Comment "Stream Mix 1" - - Value { - CapturePriority 200 -@@ -200,7 +200,7 @@ If.mix2 { - String2 "25" - } - True.SectionDevice."Line6" { -- Comment "Broadcast Stream Mix 2" -+ Comment "Stream Mix 2" - - Value { - CapturePriority 200 --- -2.49.0 - - -From bd5cf3839f902b67a355669fdf1bd3231e0cb4c1 Mon Sep 17 00:00:00 2001 -From: Mohammad Rafi Shaik -Date: Mon, 9 Jun 2025 20:52:42 +0530 -Subject: [PATCH 17/24] Qualcomm: Add QCS9075-IQ-EVK HiFi config - -Add UCM2 configs for the Qualcomm QCS9075-IQ-EVK Board to handle: - - I2S Speaker Amplifier - - I2S Mic - -Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/576 -Signed-off-by: Mohammad Rafi Shaik -Signed-off-by: Jaroslav Kysela ---- - .../qcs9075/qcs9075-iq-evk-snd-card/HiFi.conf | 29 +++++++++++++++++++ - .../qcs9075-iq-evk-snd-card.conf | 6 ++++ - .../qcs9075/qcs9075-iq-evk-snd-card.conf | 6 ++++ - 3 files changed, 41 insertions(+) - create mode 100644 ucm2/Qualcomm/qcs9075/qcs9075-iq-evk-snd-card/HiFi.conf - create mode 100644 ucm2/Qualcomm/qcs9075/qcs9075-iq-evk-snd-card/qcs9075-iq-evk-snd-card.conf - create mode 100644 ucm2/conf.d/qcs9075/qcs9075-iq-evk-snd-card.conf - -diff --git a/ucm2/Qualcomm/qcs9075/qcs9075-iq-evk-snd-card/HiFi.conf b/ucm2/Qualcomm/qcs9075/qcs9075-iq-evk-snd-card/HiFi.conf -new file mode 100644 -index 0000000..6673324 ---- /dev/null -+++ b/ucm2/Qualcomm/qcs9075/qcs9075-iq-evk-snd-card/HiFi.conf -@@ -0,0 +1,29 @@ -+SectionVerb { -+ Value { -+ TQ "HiFi" -+ } -+ EnableSequence [ -+ cset "name='PRIMARY_SDR_MI2S_RX Audio Mixer MULTIMEDIA0' 1" -+ cset "name='MULTIMEDIA1 Audio Mixer TERTIARY_SDR_MI2S_TX' 1" -+ ] -+} -+ -+SectionDevice."Speaker" { -+ Comment "Speaker playback" -+ -+ Value { -+ PlaybackPriority 100 -+ PlaybackPCM "hw:${CardId},0" -+ PlaybackMixer "default:${CardId}" -+ PlaybackMixerElem "Speakers" -+ } -+} -+ -+SectionDevice."Mic" { -+ Comment "Mic" -+ -+ Value { -+ CapturePriority 100 -+ CapturePCM "hw:${CardId},1" -+ } -+} -diff --git a/ucm2/Qualcomm/qcs9075/qcs9075-iq-evk-snd-card/qcs9075-iq-evk-snd-card.conf b/ucm2/Qualcomm/qcs9075/qcs9075-iq-evk-snd-card/qcs9075-iq-evk-snd-card.conf -new file mode 100644 -index 0000000..669ba6b ---- /dev/null -+++ b/ucm2/Qualcomm/qcs9075/qcs9075-iq-evk-snd-card/qcs9075-iq-evk-snd-card.conf -@@ -0,0 +1,6 @@ -+Syntax 4 -+ -+SectionUseCase."HiFi" { -+ File "/Qualcomm/qcs9075/qcs9075-iq-evk-snd-card/HiFi.conf" -+ Comment "HiFi quality Music" -+} -diff --git a/ucm2/conf.d/qcs9075/qcs9075-iq-evk-snd-card.conf b/ucm2/conf.d/qcs9075/qcs9075-iq-evk-snd-card.conf -new file mode 100644 -index 0000000..1e49d38 ---- /dev/null -+++ b/ucm2/conf.d/qcs9075/qcs9075-iq-evk-snd-card.conf -@@ -0,0 +1,6 @@ -+Syntax 4 -+ -+SectionUseCase."HiFi" { -+ File "/Qualcomm/qcs9075/qcs9075-iq-evk-snd-card/HiFi.conf" -+ Comment "HiFi quality Music." -+} --- -2.49.0 - - -From e7ec0f1ac3eebfa04e18a944d511bbb5fa57239d Mon Sep 17 00:00:00 2001 -From: Mohammad Rafi Shaik -Date: Tue, 10 Jun 2025 16:46:59 +0530 -Subject: [PATCH 18/24] ucm2: Qualcomm: Update the QCM6490 and QCS6490 hifi - conf files - -Rename the HiFi conf files for QCM6490-IDP and QCS6490-RB3Gen2 boards -to match with soundcard name. - -Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/577 -Signed-off-by: Mohammad Rafi Shaik -Signed-off-by: Jaroslav Kysela ---- - .../QCM6490-IDP/{QCM6490-IDP.conf => qcm6490-idp-snd-card.conf} | 0 - .../{QCS6490-RB3Gen2.conf => qcs6490-rb3gen2-snd-card.conf} | 0 - .../qcm6490/{QCM6490-IDP.conf => qcm6490-idp-snd-card.conf} | 0 - .../{QCS6490-RB3Gen2.conf => qcs6490-rb3gen2-snd-card.conf} | 0 - 4 files changed, 0 insertions(+), 0 deletions(-) - rename ucm2/Qualcomm/qcm6490/QCM6490-IDP/{QCM6490-IDP.conf => qcm6490-idp-snd-card.conf} (100%) - rename ucm2/Qualcomm/qcs6490/QCS6490-RB3Gen2/{QCS6490-RB3Gen2.conf => qcs6490-rb3gen2-snd-card.conf} (100%) - rename ucm2/conf.d/qcm6490/{QCM6490-IDP.conf => qcm6490-idp-snd-card.conf} (100%) - rename ucm2/conf.d/qcs6490/{QCS6490-RB3Gen2.conf => qcs6490-rb3gen2-snd-card.conf} (100%) - -diff --git a/ucm2/Qualcomm/qcm6490/QCM6490-IDP/QCM6490-IDP.conf b/ucm2/Qualcomm/qcm6490/QCM6490-IDP/qcm6490-idp-snd-card.conf -similarity index 100% -rename from ucm2/Qualcomm/qcm6490/QCM6490-IDP/QCM6490-IDP.conf -rename to ucm2/Qualcomm/qcm6490/QCM6490-IDP/qcm6490-idp-snd-card.conf -diff --git a/ucm2/Qualcomm/qcs6490/QCS6490-RB3Gen2/QCS6490-RB3Gen2.conf b/ucm2/Qualcomm/qcs6490/QCS6490-RB3Gen2/qcs6490-rb3gen2-snd-card.conf -similarity index 100% -rename from ucm2/Qualcomm/qcs6490/QCS6490-RB3Gen2/QCS6490-RB3Gen2.conf -rename to ucm2/Qualcomm/qcs6490/QCS6490-RB3Gen2/qcs6490-rb3gen2-snd-card.conf -diff --git a/ucm2/conf.d/qcm6490/QCM6490-IDP.conf b/ucm2/conf.d/qcm6490/qcm6490-idp-snd-card.conf -similarity index 100% -rename from ucm2/conf.d/qcm6490/QCM6490-IDP.conf -rename to ucm2/conf.d/qcm6490/qcm6490-idp-snd-card.conf -diff --git a/ucm2/conf.d/qcs6490/QCS6490-RB3Gen2.conf b/ucm2/conf.d/qcs6490/qcs6490-rb3gen2-snd-card.conf -similarity index 100% -rename from ucm2/conf.d/qcs6490/QCS6490-RB3Gen2.conf -rename to ucm2/conf.d/qcs6490/qcs6490-rb3gen2-snd-card.conf --- -2.49.0 - - -From a98b12220989e2187a47b0e06ac9145c92232a8e Mon Sep 17 00:00:00 2001 -From: Mohammad Rafi Shaik -Date: Wed, 18 Jun 2025 16:46:18 +0530 -Subject: [PATCH 19/24] ucm2: Qualcomm: Update the HIFI enable mixer commands - for qcm6490-idp and qcs6490-rb3gen2 - -Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/577 -Signed-off-by: Mohammad Rafi Shaik -Signed-off-by: Jaroslav Kysela ---- - ucm2/Qualcomm/qcm6490/QCM6490-IDP/HiFi.conf | 8 ++++---- - ucm2/Qualcomm/qcs6490/QCS6490-RB3Gen2/HiFi.conf | 4 ++-- - 2 files changed, 6 insertions(+), 6 deletions(-) - -diff --git a/ucm2/Qualcomm/qcm6490/QCM6490-IDP/HiFi.conf b/ucm2/Qualcomm/qcm6490/QCM6490-IDP/HiFi.conf -index 0d6497e..0a0d331 100644 ---- a/ucm2/Qualcomm/qcm6490/QCM6490-IDP/HiFi.conf -+++ b/ucm2/Qualcomm/qcm6490/QCM6490-IDP/HiFi.conf -@@ -3,10 +3,10 @@ SectionVerb { - TQ "HiFi" - } - EnableSequence [ -- cset "name='WSA_CODEC_DMA_RX_0 Audio Mixer MULTIMEDIA0' 1" -- cset "name='MULTIMEDIA1 Audio Mixer VA_CODEC_DMA_TX_0' 1" -- cset "name='RX_CODEC_DMA_RX_0 Audio Mixer MULTIMEDIA2' 1" -- cset "name='MULTIMEDIA3 Audio Mixer TX_CODEC_DMA_TX_3' 1" -+ cset "name='WSA_CODEC_DMA_RX_0 Audio Mixer MultiMedia1' 1" -+ cset "name='MultiMedia2 Mixer VA_CODEC_DMA_TX_0' 1" -+ cset "name='RX_CODEC_DMA_RX_0 Audio Mixer MultiMedia3' 1" -+ cset "name='MultiMedia4 Mixer TX_CODEC_DMA_TX_3' 1" - ] - - Include.wsae.File "/codecs/wsa883x/DefaultEnableSeq.conf" -diff --git a/ucm2/Qualcomm/qcs6490/QCS6490-RB3Gen2/HiFi.conf b/ucm2/Qualcomm/qcs6490/QCS6490-RB3Gen2/HiFi.conf -index 954dbfa..2488523 100644 ---- a/ucm2/Qualcomm/qcs6490/QCS6490-RB3Gen2/HiFi.conf -+++ b/ucm2/Qualcomm/qcs6490/QCS6490-RB3Gen2/HiFi.conf -@@ -3,8 +3,8 @@ SectionVerb { - TQ "HiFi" - } - EnableSequence [ -- cset "name='WSA_CODEC_DMA_RX_0 Audio Mixer MULTIMEDIA0' 1" -- cset "name='MULTIMEDIA1 Audio Mixer VA_CODEC_DMA_TX_0' 1" -+ cset "name='WSA_CODEC_DMA_RX_0 Audio Mixer MultiMedia1' 1" -+ cset "name='MultiMedia2 Mixer VA_CODEC_DMA_TX_0' 1" - ] - - Include.wsae.File "/codecs/wsa883x/DefaultEnableSeq.conf" --- -2.49.0 - - -From 56cbdfd04339cf9598cd9d57f5c1a382504ae902 Mon Sep 17 00:00:00 2001 -From: Peter Ujfalusi -Date: Thu, 12 Jun 2025 16:33:01 +0300 -Subject: [PATCH 20/24] UCM2: Intel: sof-hda-dsp: HiFi: Fix handling of mono - DMICs - -When a single DMIC is present in the system we need to set the -CaptureChannels to 1 since the PCM device only supports mono, PA/PW will -reject the profile since it cannot open the DMIC PCM device. - -Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/579 -Signed-off-by: Peter Ujfalusi -Signed-off-by: Jaroslav Kysela ---- - ucm2/Intel/sof-hda-dsp/HiFi.conf | 10 ++++++++++ - 1 file changed, 10 insertions(+) - -diff --git a/ucm2/Intel/sof-hda-dsp/HiFi.conf b/ucm2/Intel/sof-hda-dsp/HiFi.conf -index 9689b56..e452f83 100644 ---- a/ucm2/Intel/sof-hda-dsp/HiFi.conf -+++ b/ucm2/Intel/sof-hda-dsp/HiFi.conf -@@ -34,6 +34,16 @@ If.dmic { - True { - CaptureChannels 4 - } -+ False.If.mono { -+ Condition { -+ Type RegexMatch -+ Regex "cfg-dmics:[1]" -+ String "${CardComponents}" -+ } -+ True { -+ CaptureChannels 1 -+ } -+ } - } - If.vol { - Condition { --- -2.49.0 - - -From e4791900954c3951d15038822a55a3031aac49d2 Mon Sep 17 00:00:00 2001 -From: Shuming Fan -Date: Fri, 6 Jun 2025 12:47:08 +0800 -Subject: [PATCH 21/24] ucm2: sof-soundwire: add rt712-vb device - -Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/573 -Signed-off-by: Shuming Fan -Signed-off-by: Jaroslav Kysela ---- - ucm2/codecs/rt712/init.conf | 34 ++++++++++++++++++++++++++++------ - ucm2/sof-soundwire/rt712.conf | 29 +++++++++++++++++++++++++++++ - 2 files changed, 57 insertions(+), 6 deletions(-) - -diff --git a/ucm2/codecs/rt712/init.conf b/ucm2/codecs/rt712/init.conf -index e09bf7f..1e45380 100644 ---- a/ucm2/codecs/rt712/init.conf -+++ b/ucm2/codecs/rt712/init.conf -@@ -1,8 +1,30 @@ - # RT712 specific volume control settings - --BootSequence [ -- cset "name='rt712 FU05 Playback Volume' 87" -- cset "name='rt712 ADC 23 Mux' 'MIC2'" -- cset "name='rt712 FU0F Capture Volume' 57" -- cset "name='rt712 FU0F Capture Switch' 1" --] -+If.rt712_init { -+ Condition { -+ Type RegexMatch -+ Regex "(rt712(-sdca)?)" -+ String "${var:MultiMicShadow}" -+ } -+ True { -+ # RT712-VB integrated with DMIC -+ BootSequence [ -+ cset "name='rt712 FU05 Playback Volume' 87" -+ cset "name='rt712 ADC 23 Mux' 'MIC2'" -+ cset "name='rt712 FU0F Capture Volume' 57" -+ cset "name='rt712 FU0F Capture Switch' 1" -+ cset "name='rt712 FU1E Capture Switch' 1" -+ cset "name='rt712 FU1E Capture Volume' 47" -+ cset "name='rt712 ADC 0A Mux' 'DMIC1'" -+ cset "name='rt712 ADC 0B Mux' 'DMIC2'" -+ ] -+ } -+ False { -+ BootSequence [ -+ cset "name='rt712 FU05 Playback Volume' 87" -+ cset "name='rt712 ADC 23 Mux' 'MIC2'" -+ cset "name='rt712 FU0F Capture Volume' 57" -+ cset "name='rt712 FU0F Capture Switch' 1" -+ ] -+ } -+} -diff --git a/ucm2/sof-soundwire/rt712.conf b/ucm2/sof-soundwire/rt712.conf -index 409bef9..346cff1 100644 ---- a/ucm2/sof-soundwire/rt712.conf -+++ b/ucm2/sof-soundwire/rt712.conf -@@ -85,3 +85,32 @@ SectionDevice."Headset" { - JackControl "Headset Mic Jack" - } - } -+ -+If.codecmic { -+ Condition { -+ Type RegexMatch -+ Regex "(rt712(-sdca)?)" -+ String "${var:MultiMicShadow}" -+ } -+ True { -+ SectionDevice."Mic" { -+ Comment "SoundWire Microphones" -+ -+ EnableSequence [ -+ cset "name='rt712 FU1E Capture Switch' 1" -+ ] -+ -+ DisableSequence [ -+ cset "name='rt712 FU1E Capture Switch' 0" -+ ] -+ -+ Value { -+ CapturePriority 100 -+ CapturePCM "hw:${CardId},4" -+ CaptureSwitch "rt712 FU1E Capture Switch" -+ CaptureVolume "rt712 FU1E Capture Volume" -+ CaptureMixerElem "rt712 FU1E" -+ } -+ } -+ } -+} --- -2.49.0 - - -From 436fbad2a02b91435645e039664af469595ab500 Mon Sep 17 00:00:00 2001 -From: DanielDecker <90106468+DanielDecker@users.noreply.github.com> -Date: Mon, 16 Jun 2025 18:27:21 +0200 -Subject: [PATCH 22/24] add MSI MAG B850M Mortar Wifi to USB-Audio.conf - -add MSI MAG B850M Mortar Wifi USB-ID for Realtek/ALC4080 to USB-Audio.conf - -Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/581 -Signed-off-by: DanielDecker <90106468+DanielDecker@users.noreply.github.com> -Signed-off-by: Jaroslav Kysela ---- - ucm2/USB-Audio/USB-Audio.conf | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/ucm2/USB-Audio/USB-Audio.conf b/ucm2/USB-Audio/USB-Audio.conf -index d90db39..ef88ded 100644 ---- a/ucm2/USB-Audio/USB-Audio.conf -+++ b/ucm2/USB-Audio/USB-Audio.conf -@@ -89,6 +89,7 @@ If.realtek-alc4080 { - # 0db0:a47c MSI MEG X570S Ace Max - # 0db0:a74b MSI MPG Z790 Edge Wifi - # 0db0:b202 MSI MAG Z690 Tomahawk Wifi -+ # 0db0:cc78 MSI MAG B850M Mortar Wifi - # 0db0:cd0e MSI X870 Tomahawk - # 0db0:d1d7 MSI PRO Z790-A WIFI - # 0db0:d6e7 MSI MPG X670E Carbon Wifi -@@ -96,7 +97,7 @@ If.realtek-alc4080 { - # 26ce:0a06 ASRock X670E/Z790 Taichi - # 26ce:0a08 ASRock Z790 PG-ITX/TB4, X870 Steel Legend - # 26ce:0a0b ASRock X870E Taichi -- Regex "USB((0414:a0(0e|1[0124]))|(0b05:(19(84|9[69])|1a(16|2[07]|5[23c]|97|f1)|1b(7c|9b|e1)))|(0db0:(005a|0b58|124b|151f|1feb|3130|36e7|4(19c|22d|240|88c)|543d|62a4|6c[0c]9|70d3|7696|82c7|8af7|961e|9e6d|a(073|228|47c|74b)|b202|cd0e|d1d7|d6e7|e1f8))|(26ce:0a0[68b]))" -+ Regex "USB((0414:a0(0e|1[0124]))|(0b05:(19(84|9[69])|1a(16|2[07]|5[23c]|97|f1)|1b(7c|9b|e1)))|(0db0:(005a|0b58|124b|151f|1feb|3130|36e7|4(19c|22d|240|88c)|543d|62a4|6c[0c]9|70d3|7696|82c7|8af7|961e|9e6d|a(073|228|47c|74b)|b202|c(c78|d0e)|d1d7|d6e7|e1f8))|(26ce:0a0[68b]))" - } - True.Define.ProfileName "Realtek/ALC4080" - } --- -2.49.0 - - -From b4896cf413e618f4b20c570544a4e668aaa72f64 Mon Sep 17 00:00:00 2001 -From: Harald Sitter -Date: Sat, 21 Jun 2025 17:10:20 +0200 -Subject: [PATCH 23/24] ucm2: USB-Audio: Add Teufel CAGE PRO - -two stereo outputs: one for "game" and one for "chat". -one mono input - -Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/582 -Signed-off-by: Harald Sitter -Signed-off-by: Jaroslav Kysela ---- - ucm2/USB-Audio/Teufel/CAGE-PRO-HiFi.conf | 21 +++++++++++++++++++++ - ucm2/USB-Audio/Teufel/CAGE-PRO.conf | 9 +++++++++ - ucm2/USB-Audio/USB-Audio.conf | 10 ++++++++++ - 3 files changed, 40 insertions(+) - create mode 100644 ucm2/USB-Audio/Teufel/CAGE-PRO-HiFi.conf - create mode 100644 ucm2/USB-Audio/Teufel/CAGE-PRO.conf - -diff --git a/ucm2/USB-Audio/Teufel/CAGE-PRO-HiFi.conf b/ucm2/USB-Audio/Teufel/CAGE-PRO-HiFi.conf -new file mode 100644 -index 0000000..c0fbe7b ---- /dev/null -+++ b/ucm2/USB-Audio/Teufel/CAGE-PRO-HiFi.conf -@@ -0,0 +1,21 @@ -+# SPDX-License-Identifier: MIT -+# SPDX-FileCopyrightText: 2025 Harald Sitter -+ -+SectionDevice."Headset" { -+ Comment "Chat" -+ Value { -+ PlaybackPCM "hw:${CardId},0" -+ PlaybackMixerElem "PCM" -+ CapturePCM "hw:${CardId},0" -+ CaptureMixerElem "Mic" -+ CaptureChannels 1 -+ } -+} -+ -+SectionDevice."Headphones" { -+ Comment "Game" -+ Value { -+ PlaybackPCM "hw:${CardId},1" -+ PlaybackMixerElem "PCM,1" -+ } -+} -diff --git a/ucm2/USB-Audio/Teufel/CAGE-PRO.conf b/ucm2/USB-Audio/Teufel/CAGE-PRO.conf -new file mode 100644 -index 0000000..bf75033 ---- /dev/null -+++ b/ucm2/USB-Audio/Teufel/CAGE-PRO.conf -@@ -0,0 +1,9 @@ -+# SPDX-License-Identifier: MIT -+# SPDX-FileCopyrightText: 2025 Harald Sitter -+ -+Comment "Lautsprecher Teufel GmbH CAGE PRO" -+ -+SectionUseCase."HiFi" { -+ Comment "Default" -+ File "/USB-Audio/Teufel/CAGE-PRO-HiFi.conf" -+} -diff --git a/ucm2/USB-Audio/USB-Audio.conf b/ucm2/USB-Audio/USB-Audio.conf -index ef88ded..7a6a0ac 100644 ---- a/ucm2/USB-Audio/USB-Audio.conf -+++ b/ucm2/USB-Audio/USB-Audio.conf -@@ -521,6 +521,15 @@ If.ua-volt2 { - } - } - -+If.teufel-cage-pro { -+ Condition { -+ Type String -+ Haystack "${CardComponents}" -+ Needle "USB2cc2:0033" -+ } -+ True.Define.ProfileName "Teufel/CAGE-PRO" -+} -+ - If.ssl2 { - Condition { - Type String -@@ -559,6 +568,7 @@ If.beacn-studio { - } - True.Define.ProfileName "Beacn/Beacn-Studio" - } -+ - If.mixremap { - Condition { - Type String --- -2.49.0 - - -From 63f161cb8d65ed828a1ce49b506f4e1b9a7c58e4 Mon Sep 17 00:00:00 2001 -From: Zoran Zhan -Date: Wed, 7 May 2025 14:41:14 +0800 -Subject: [PATCH 24/24] ucm2: MediaTek: mt8365-evk: Add SOF support - -Add support for MT8365 EVK with SOF enabled. When SOF is -disabled, the "HiFi" use case is used; when SOF is enabled, -the "SOF" use case is used. - -The main difference compared to the UCM with SOF disabled is -the device number for playback and capture, which now uses the -PCMs for SOF instead. - -Define these parameters as variables for each case (with and -without SOF), and move the common initialization to init.conf, -so the UCM can be shared by both configurations. - -Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/583 -Signed-off-by: Zoran Zhan -Signed-off-by: Jaroslav Kysela ---- - ucm2/MediaTek/mt8365-evk/HiFi.conf | 126 ++++++------------ - ucm2/MediaTek/mt8365-evk/init.conf | 31 +++++ - ucm2/MediaTek/mt8365-evk/mt8365-evk.conf | 40 +----- - ucm2/MediaTek/mt8365-evk/sof/SOF.conf | 87 ++++++++++++ - .../mt8365-evk/sof/sof-mt8365-evk.conf | 9 ++ - .../conf.d/sof-mt8365-evk/sof-mt8365-evk.conf | 1 + - 6 files changed, 174 insertions(+), 120 deletions(-) - create mode 100644 ucm2/MediaTek/mt8365-evk/init.conf - create mode 100644 ucm2/MediaTek/mt8365-evk/sof/SOF.conf - create mode 100644 ucm2/MediaTek/mt8365-evk/sof/sof-mt8365-evk.conf - create mode 120000 ucm2/conf.d/sof-mt8365-evk/sof-mt8365-evk.conf - -diff --git a/ucm2/MediaTek/mt8365-evk/HiFi.conf b/ucm2/MediaTek/mt8365-evk/HiFi.conf -index 81f563f..83514c7 100644 ---- a/ucm2/MediaTek/mt8365-evk/HiFi.conf -+++ b/ucm2/MediaTek/mt8365-evk/HiFi.conf -@@ -1,141 +1,97 @@ - SectionDevice."HDMI" { -- Comment "Hdmi output" -+ Comment "HDMI output" - - Value { -- PlaybackPriority 250 -+ PlaybackPriority 100 - PlaybackChannels 2 - PlaybackPCM "hw:${CardId},1" - } -- -- EnableSequence [ -- cset "name='O00 I07 Switch' on" -- cset "name='O01 I08 Switch' on" -- ] -- -- DisableSequence [ -- cset "name='O00 I07 Switch' off" -- cset "name='O01 I08 Switch' off" -- ] - } - - SectionDevice."Speaker" { -- Comment "Line-out Jack " -+ Comment "Lineout speaker" - - ConflictingDevice [ - "Headphones" - ] - -- Value { -- PlaybackPriority 300 -- PlaybackChannels 2 -- PlaybackPCM "hw:${CardId},0" -- PlaybackVolume "name='Lineout_PGAL_GAIN'" -- } -- - EnableSequence [ -- cset "name='Audio_Amp_L_Switch' Off" -- cset "name='Audio_Amp_R_Switch' Off" -- cset "name='Lineout_PGAL_GAIN' 0" -- cset "name='Speaker_Amp_Switch' On" -+ cset "name='Headphone Left Source' Open" -+ cset "name='Headphone Right Source' Open" -+ cset "name='Line Out Source' Playback" - ] - -- DisableSequence [ -- cset "name='Audio_Amp_L_Switch' On" -- cset "name='Audio_Amp_R_Switch' On" -- cset "name='Speaker_Amp_Switch' Off" -- ] -+ Value { -+ PlaybackPriority 200 -+ PlaybackChannels 2 -+ PlaybackPCM "hw:${CardId},${var:PlayDevN}" -+ } - } - - SectionDevice."Headphones" { -- Comment "Headset speakers" -+ Comment "Earphone speaker" - - ConflictingDevice [ - "Speaker" - ] - -+ EnableSequence [ -+ cset "name='Headphone Left Source' DAC" -+ cset "name='Headphone Right Source' DAC" -+ cset "name='Line Out Source' Open" -+ ] -+ - Value { - PlaybackPriority 300 - PlaybackChannels 2 -- PlaybackPCM "hw:${CardId},0" -- PlaybackVolume "name='Headset_PGAL_GAIN'" -+ PlaybackPCM "hw:${CardId},${var:PlayDevN}" - } -- -- EnableSequence [ -- cset "name='Audio_Amp_L_Switch' On" -- cset "name='Audio_Amp_R_Switch' On" -- cset "name='Headset_PGAL_GAIN' 1" -- cset "name='Speaker_Amp_Switch' Off" -- ] -- -- DisableSequence [ -- cset "name='Audio_Amp_L_Switch' Off" -- cset "name='Audio_Amp_R_Switch' Off" -- cset "name='Speaker_Amp_Switch' On" -- ] - } - --SectionDevice."Mic1" { -- Comment "Amic" -+SectionDevice."Headset" { -+ Comment "Earphone microphone" - - ConflictingDevice [ -- "Mic2" -+ "Mic1" - ] - -- Value { -- CapturePriority 300 -- CaptureChannels 1 -- CapturePCM "hw:${CardId},2" -- } -- - EnableSequence [ -- cset "name='Audio_MicSource1_Setting' ADC1" -- cset "name='Audio_MICBIAS0_Switch' Off" -+ cset "name='PGA L Mux' AIN1" -+ cset "name='PGA R Mux' AIN1" - ] - -- DisableSequence [ -- cset "name='Audio_MicSource1_Setting' ADC2" -- cset "name='Audio_MICBIAS0_Switch' On" -- ] -+ Value { -+ CapturePriority 300 -+ CaptureChannels "${var:CapChanN}" -+ CapturePCM "hw:${CardId},${var:CapDevN}" -+ } - } - --SectionDevice."Mic2" { -- Comment "Headset microphone" -+SectionDevice."Mic1" { -+ Comment "Analog microphone" - - ConflictingDevice [ -- "Mic1" -+ "Headset" - ] - -- Value { -- CapturePriority 350 -- CaptureChannels 1 -- CapturePCM "hw:${CardId},2" -- } -- - EnableSequence [ -- cset "name='Audio_MicSource1_Setting' ADC2" -- cset "name='Audio_MICBIAS0_Switch' On" -+ cset "name='PGA L Mux' AIN0" -+ cset "name='PGA R Mux' AIN0" - ] - -- DisableSequence [ -- cset "name='Audio_MicSource1_Setting' ADC1" -- cset "name='Audio_MICBIAS0_Switch' Off" -- ] -+ Value { -+ CapturePriority 200 -+ CaptureChannels "${var:CapChanN}" -+ CapturePCM "hw:${CardId},${var:CapDevN}" -+ } - } - --SectionDevice."Mic3" { -- Comment "PDM microphones" -+SectionDevice."Mic2" { -+ Comment "Digital microphone" - - Value { - CapturePriority 100 - CaptureChannels 2 - CapturePCM "hw:${CardId},3" - } -- -- EnableSequence [ -- cset "name='Audio_MICBIAS0_Switch' On" -- ] -- -- DisableSequence [ -- cset "name='Audio_MICBIAS0_Switch' Off" -- ] - } -diff --git a/ucm2/MediaTek/mt8365-evk/init.conf b/ucm2/MediaTek/mt8365-evk/init.conf -new file mode 100644 -index 0000000..269530a ---- /dev/null -+++ b/ucm2/MediaTek/mt8365-evk/init.conf -@@ -0,0 +1,31 @@ -+Syntax 4 -+ -+SectionUseCase."HiFi" { -+ File "/MediaTek/mt8365-evk/HiFi.conf" -+ Comment "Default" -+} -+ -+SectionUseCase."SOF" { -+ File "/MediaTek/mt8365-evk/sof/SOF.conf" -+ Comment "Enable SOF" -+} -+ -+BootSequence [ -+ cset "name='Headphone Left Source' DAC" -+ cset "name='Headphone Right Source' DAC" -+ cset "name='Line Out Source' Open" -+ cset "name='PGA L Mux' AIN1" -+ cset "name='PGA R Mux' AIN1" -+ cset "name='Mic Type Mux' DCC" -+ cset "name='INT ADDA O03_O04 Switch' on" -+ cset "name='Headphone Volume' 10" -+ cset "name='Lineout Volume' 10" -+ cset "name='O00 I07 Switch' on" -+ cset "name='O01 I08 Switch' on" -+ cset "name='O03 I05 Switch' on" -+ cset "name='O04 I06 Switch' on" -+ cset "name='O05 I03 Switch' on" -+ cset "name='O06 I04 Switch' on" -+ cset "name='O09 I14 Switch' on" -+ cset "name='O10 I15 Switch' on" -+] -diff --git a/ucm2/MediaTek/mt8365-evk/mt8365-evk.conf b/ucm2/MediaTek/mt8365-evk/mt8365-evk.conf -index e396f8c..9df5644 100644 ---- a/ucm2/MediaTek/mt8365-evk/mt8365-evk.conf -+++ b/ucm2/MediaTek/mt8365-evk/mt8365-evk.conf -@@ -1,39 +1,9 @@ - Syntax 4 - --SectionUseCase."HiFi" { -- File "/MediaTek/mt8365-evk/HiFi.conf" -- Comment "Play high quality music" -+Define { -+ PlayDevN "0" -+ CapDevN "2" -+ CapChanN "1" - } - --BootSequence [ -- #Audio volume -- cset "name='Headset_PGAL_GAIN' 0" -- cset "name='Lineout_PGAL_GAIN' 0" -- -- #Audio amp -- cset "name='Audio_Amp_R_Switch' On" -- cset "name='Audio_Amp_L_Switch' On" -- -- #Headset out -- cset "name='Speaker_Amp_Switch' Off" -- -- #Dmic -- cset "name='Audio_MICBIAS0_Switch' On" -- -- #HDMI audio (I2S3 Out) -- cset "name='O00 I07 Switch' on" -- cset "name='O01 I08 Switch' on" -- -- #jack_mic Headset In -- cset "name='Audio_MicSource1_Setting' ADC2" -- -- cset "name='O03 I05 Switch' on" -- cset "name='O04 I06 Switch' on" -- cset "name='O05 I03 Switch' on" -- cset "name='O06 I04 Switch' on" -- cset "name='O09 I14 Switch' on" -- cset "name='O10 I15 Switch' on" -- cset "name='AUD_CLK_BUF_Switch' On" -- cset "name='Audio_ADC_1_Switch' On" -- cset "name='INT ADDA O03_O04 Switch' on" --] -+Include.init.File "/MediaTek/mt8365-evk/init.conf" -diff --git a/ucm2/MediaTek/mt8365-evk/sof/SOF.conf b/ucm2/MediaTek/mt8365-evk/sof/SOF.conf -new file mode 100644 -index 0000000..af44feb ---- /dev/null -+++ b/ucm2/MediaTek/mt8365-evk/sof/SOF.conf -@@ -0,0 +1,87 @@ -+SectionDevice."Speaker" { -+ Comment "SOF Lineout speaker" -+ -+ ConflictingDevice [ -+ "Headphones" -+ ] -+ -+ EnableSequence [ -+ cset "name='Headphone Left Source' Open" -+ cset "name='Headphone Right Source' Open" -+ cset "name='Line Out Source' Playback" -+ ] -+ -+ Value { -+ PlaybackPriority 100 -+ PlaybackChannels 2 -+ PlaybackPCM "hw:${CardId},${var:PlayDevN}" -+ } -+} -+ -+SectionDevice."Headphones" { -+ Comment "SOF Earphone speaker" -+ -+ ConflictingDevice [ -+ "Speaker" -+ ] -+ -+ EnableSequence [ -+ cset "name='Headphone Left Source' DAC" -+ cset "name='Headphone Right Source' DAC" -+ cset "name='Line Out Source' Open" -+ ] -+ -+ Value { -+ PlaybackPriority 200 -+ PlaybackChannels 2 -+ PlaybackPCM "hw:${CardId},${var:PlayDevN}" -+ } -+} -+ -+SectionDevice."Headset" { -+ Comment "SOF Earphone microphone" -+ -+ ConflictingDevice [ -+ "Mic1" -+ ] -+ -+ EnableSequence [ -+ cset "name='PGA L Mux' AIN1" -+ cset "name='PGA R Mux' AIN1" -+ ] -+ -+ Value { -+ CapturePriority 300 -+ CaptureChannels "${var:CapChanN}" -+ CapturePCM "hw:${CardId},${var:CapDevN}" -+ } -+} -+ -+SectionDevice."Mic1" { -+ Comment "SOF Analog microphone" -+ -+ ConflictingDevice [ -+ "Headset" -+ ] -+ -+ EnableSequence [ -+ cset "name='PGA L Mux' AIN0" -+ cset "name='PGA R Mux' AIN0" -+ ] -+ -+ Value { -+ CapturePriority 200 -+ CaptureChannels "${var:CapChanN}" -+ CapturePCM "hw:${CardId},${var:CapDevN}" -+ } -+} -+ -+SectionDevice."Mic2" { -+ Comment "SOF Digital microphone" -+ -+ Value { -+ CapturePriority 100 -+ CaptureChannels 2 -+ CapturePCM "hw:${CardId},19" -+ } -+} -diff --git a/ucm2/MediaTek/mt8365-evk/sof/sof-mt8365-evk.conf b/ucm2/MediaTek/mt8365-evk/sof/sof-mt8365-evk.conf -new file mode 100644 -index 0000000..6369aac ---- /dev/null -+++ b/ucm2/MediaTek/mt8365-evk/sof/sof-mt8365-evk.conf -@@ -0,0 +1,9 @@ -+Syntax 4 -+ -+Define { -+ PlayDevN "16" -+ CapDevN "18" -+ CapChanN "2" -+} -+ -+Include.init.File "/MediaTek/mt8365-evk/init.conf" -diff --git a/ucm2/conf.d/sof-mt8365-evk/sof-mt8365-evk.conf b/ucm2/conf.d/sof-mt8365-evk/sof-mt8365-evk.conf -new file mode 120000 -index 0000000..527f25f ---- /dev/null -+++ b/ucm2/conf.d/sof-mt8365-evk/sof-mt8365-evk.conf -@@ -0,0 +1 @@ -+../../MediaTek/mt8365-evk/sof/sof-mt8365-evk.conf -\ No newline at end of file --- -2.49.0 - From 0ed21ea73d17f2faa5dbd870fa5f7ae60abe3fa3 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Sun, 7 Dec 2025 22:38:53 +0100 Subject: [PATCH 17/24] update sources for 1.2.15 Signed-off-by: Jaroslav Kysela --- sources | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sources b/sources index 99910eb..9ce5bdb 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ -SHA512 (alsa-lib-1.2.14.tar.bz2) = 2716cc3a2299da4a1a170d734af082d78dc452b253179d0f1a9ec190140734aecf002b6924eec4ff2699ce88ce1ae5c56821c267f36384910984db726d1f9626 -SHA512 (alsa-ucm-conf-1.2.14.tar.bz2) = a224e890919306bdcd606dfb873b089950c9fa89f24c02947692ee8ab1a05c419f2a8dc174440d17c8a9575cab293806630f2cb43d74677f7ef0d956b7883dc5 +SHA512 (alsa-lib-1.2.15.tar.bz2) = 6cea9059265ef353a07f1b442004506f0f13883692ea35f03090282ca80db88055f470d2dca5bb54394fef0012711f0e9502d2d0f7fb66b27aa334bffb811559 +SHA512 (alsa-ucm-conf-1.2.15.tar.bz2) = 61dcbfe32ad912b793bf70d6f9e0e462353431b9589623ce8a7ec18b5dba48c230f5ba509e47384764625ae82f132babfbf62a8e5f4bb951377476ba147939e2 SHA512 (alsa-topology-conf-1.2.5.tar.bz2) = 2eb4d8baf2dcbf0b631dd11dbf15bffc51694d9cc6931619e51787f3ba58d1a091d266e6721a3b737c040ec74a28270b93f39fb97f30a3227cf340dd646e5d51 From 91324e7b927e4a5d27e8060eb28ff3056b0904a5 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Tue, 9 Dec 2025 18:16:30 +0100 Subject: [PATCH 18/24] apply upstream 1.2.15 fixes #1 Signed-off-by: Jaroslav Kysela --- alsa-git.patch | 150 +++++++++++++++++++++++++ alsa-lib.spec | 10 +- alsa-ucm-conf.patch | 264 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 419 insertions(+), 5 deletions(-) create mode 100644 alsa-git.patch create mode 100644 alsa-ucm-conf.patch diff --git a/alsa-git.patch b/alsa-git.patch new file mode 100644 index 0000000..486803f --- /dev/null +++ b/alsa-git.patch @@ -0,0 +1,150 @@ +From a068cf08ad67447893b707cddfce31c9cafee643 Mon Sep 17 00:00:00 2001 +From: Mike Gilbert +Date: Mon, 8 Dec 2025 23:46:17 -0500 +Subject: [PATCH 1/3] ucm: use closefrom instead of close_range + +closefrom is a library function with a fallback mechanism for when the +kernel does not support the close_range syscall. + +Also check for the function properly instead of assuming it is available +with _GNU_SOURCE defined. + +Closes: https://github.com/alsa-project/alsa-lib/pull/486 +Fixes: https://github.com/alsa-project/alsa-lib/issues/485 +Signed-off-by: Mike Gilbert +Signed-off-by: Jaroslav Kysela +--- + configure.ac | 1 + + src/ucm/ucm_exec.c | 4 ++-- + 2 files changed, 3 insertions(+), 2 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 8f4bd0de..f4862f64 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -52,6 +52,7 @@ dnl Checks for library functions. + AC_PROG_GCC_TRADITIONAL + AC_CHECK_FUNCS([uselocale]) + AC_CHECK_FUNCS([eaccess]) ++AC_CHECK_DECLS([closefrom]) + + dnl Enable largefile support + AC_SYS_LARGEFILE +diff --git a/src/ucm/ucm_exec.c b/src/ucm/ucm_exec.c +index b5a22023..713039b4 100644 +--- a/src/ucm/ucm_exec.c ++++ b/src/ucm/ucm_exec.c +@@ -259,8 +259,8 @@ int uc_mgr_exec(const char *prog) + + close(f); + +-#if defined(_GNU_SOURCE) +- close_range(3, maxfd, 0); ++#if HAVE_DECL_CLOSEFROM ++ closefrom(3); + #else + for (f = 3; f < maxfd; f++) + close(f); +-- +2.51.1 + + +From 813ffe34ff6c720dcc56e4549338bf9e9184af1f Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Tue, 9 Dec 2025 17:48:34 +0100 +Subject: [PATCH 2/3] ucm: exec - fix maxfd used warning + +Fixes: a068cf08 ("ucm: use closefrom instead of close_range") +Signed-off-by: Jaroslav Kysela +--- + src/ucm/ucm_exec.c | 11 ++++++----- + 1 file changed, 6 insertions(+), 5 deletions(-) + +diff --git a/src/ucm/ucm_exec.c b/src/ucm/ucm_exec.c +index 713039b4..c16a4cfd 100644 +--- a/src/ucm/ucm_exec.c ++++ b/src/ucm/ucm_exec.c +@@ -183,7 +183,7 @@ static int parse_args(char ***argv, int argc, const char *cmd) + */ + int uc_mgr_exec(const char *prog) + { +- pid_t p, f, maxfd; ++ pid_t p, f; + int err = 0, status; + char bin[PATH_MAX]; + struct sigaction sa; +@@ -212,8 +212,6 @@ int uc_mgr_exec(const char *prog) + prog = bin; + } + +- maxfd = sysconf(_SC_OPEN_MAX); +- + /* + * block SIGCHLD signal + * ignore SIGINT and SIGQUIT in parent +@@ -262,8 +260,11 @@ int uc_mgr_exec(const char *prog) + #if HAVE_DECL_CLOSEFROM + closefrom(3); + #else +- for (f = 3; f < maxfd; f++) +- close(f); ++ { ++ pid_t maxfd = sysconf(_SC_OPEN_MAX); ++ for (f = 3; f < maxfd; f++) ++ close(f); ++ } + #endif + + /* install default handlers for the forked process */ +-- +2.51.1 + + +From a6238053c4fa518b214f99d91a01b96c5ef6e3ca Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Tue, 9 Dec 2025 18:04:07 +0100 +Subject: [PATCH 3/3] conf: merge card specific contents per file (whole) after + parsing + +Unfortunately, mentioned fix caused a regression for items stored in one file. +Merge the file contents after parsing not inside parsing process. + +BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=2420645 +Fixes: eda76146 ("conf: fix load_for_all_cards() - do not merge the card specific contents") +Signed-off-by: Jaroslav Kysela +--- + src/conf.c | 13 ++++++++++--- + 1 file changed, 10 insertions(+), 3 deletions(-) + +diff --git a/src/conf.c b/src/conf.c +index 49499ecd..b1ec9b38 100644 +--- a/src/conf.c ++++ b/src/conf.c +@@ -4119,14 +4119,21 @@ static int config_filename_filter(const struct dirent64 *dirent) + static int config_file_open(snd_config_t *root, const char *filename, int merge) + { + snd_input_t *in; ++ snd_config_t *top; + int err; + + err = snd_input_stdio_open(&in, filename, "r"); + if (err >= 0) { +- if (merge) ++ if (merge) { + err = snd_config_load(root, in); +- else +- err = snd_config_load_override(root, in); ++ } else { ++ err = snd_config_top(&top); ++ if (err >= 0) { ++ err = snd_config_load(top, in); ++ if (err >= 0) ++ err = snd_config_merge(root, top, 1); ++ } ++ } + snd_input_close(in); + if (err < 0) + snd_error(CORE, "%s may be old or corrupted: consider to remove or fix it", filename); +-- +2.51.1 + diff --git a/alsa-lib.spec b/alsa-lib.spec index 7c2e8fa..d91c95d 100644 --- a/alsa-lib.spec +++ b/alsa-lib.spec @@ -9,7 +9,7 @@ Summary: The Advanced Linux Sound Architecture (ALSA) library Name: alsa-lib Version: %{version_alsa_lib} -Release: 1%{?prever_dot}%{?dist} +Release: 2%{?prever_dot}%{?dist} License: LGPL-2.1-or-later URL: http://www.alsa-project.org/ @@ -19,8 +19,8 @@ Source2: ftp://ftp.alsa-project.org/pub/lib/alsa-topology-conf-%{version_alsa_t Source10: asound.conf Source11: modprobe-dist-alsa.conf Source12: modprobe-dist-oss.conf -#Source40: alsa-ucm-conf.patch -#Patch0: alsa-git.patch +Source40: alsa-ucm-conf.patch +Patch0: alsa-git.patch Patch1: alsa-lib-1.2.3.1-config.patch Patch2: alsa-lib-1.2.10-glibc-open.patch @@ -70,7 +70,7 @@ contains alsa-lib configuration of SoC topology %prep %setup -q -n %{name}-%{version}%{?prever}%{?postver} -#patch -P0 -p1 -b .alsa-git +%patch -P0 -p1 -b .alsa-git %patch -P1 -p1 -b .config %patch -P2 -p1 -b .glibc-open @@ -116,7 +116,7 @@ mkdir -p %{buildroot}/%{_datadir}/alsa/ucm2 # Unpack UCMs tar xvjf %{SOURCE1} -C %{buildroot}/%{_datadir}/alsa --strip-components=1 "*/ucm" "*/ucm2" -#patch -d %{buildroot}/%{_datadir}/alsa -p1 < %{SOURCE40} +patch -d %{buildroot}/%{_datadir}/alsa -p1 < %{SOURCE40} # Create topology directory mkdir -p %{buildroot}/%{_datadir}/alsa/topology diff --git a/alsa-ucm-conf.patch b/alsa-ucm-conf.patch new file mode 100644 index 0000000..0447c61 --- /dev/null +++ b/alsa-ucm-conf.patch @@ -0,0 +1,264 @@ +From d57d800c6a5a77e6c475719b0297bebb098f7533 Mon Sep 17 00:00:00 2001 +From: Maciej Strozek +Date: Tue, 9 Dec 2025 13:00:44 +0000 +Subject: [PATCH 1/3] sof-soundwire: third fix for multi-codec + +Ensure MultiCodec-based actions are only done when MultiCodec1 is not empty + +Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/658 +Signed-off-by: Maciej Strozek +Signed-off-by: Jaroslav Kysela +--- + ucm2/sof-soundwire/sof-soundwire.conf | 15 +++++++++------ + 1 file changed, 9 insertions(+), 6 deletions(-) + +diff --git a/ucm2/sof-soundwire/sof-soundwire.conf b/ucm2/sof-soundwire/sof-soundwire.conf +index 7f9c7dc..895f479 100644 +--- a/ucm2/sof-soundwire/sof-soundwire.conf ++++ b/ucm2/sof-soundwire/sof-soundwire.conf +@@ -72,8 +72,9 @@ If.multi_init { + If.multi_speaker { + Condition { + Type RegexMatch +- Regex "(${var:MultiCodec1}(-sdca)?)" +- String "${var:SpeakerCodec1}" ++ # guard with "=" to avoid empty string matching ++ Regex "=(${var:MultiCodec1}(-sdca)?)=" ++ String "=${var:SpeakerCodec1}=" + } + True { + Define.SpeakerCodec1 "" +@@ -83,8 +84,9 @@ If.multi_speaker { + If.multi_mic { + Condition { + Type RegexMatch +- Regex "(${var:MultiCodec1}(-sdca)?)" +- String "${var:MicCodec1}" ++ # guard with "=" to avoid empty string matching ++ Regex "=(${var:MultiCodec1}(-sdca)?)=" ++ String "=${var:MicCodec1}=" + } + True { + Define.MicCodec1 "" +@@ -94,8 +96,9 @@ If.multi_mic { + If.multi_headset { + Condition { + Type RegexMatch +- Regex "(${var:MultiCodec1}(-sdca)?)" +- String "${var:HeadsetCodec1}" ++ # guard with "=" to avoid empty string matching ++ Regex "=(${var:MultiCodec1}(-sdca)?)=" ++ String "=${var:HeadsetCodec1}=" + } + True { + Define.HeadsetCodec1 "" +-- +2.51.1 + + +From 51bada5f0c1b634b5db92de428f33c0188e68e82 Mon Sep 17 00:00:00 2001 +From: Maciej Strozek +Date: Fri, 28 Nov 2025 16:08:23 +0000 +Subject: [PATCH 2/3] ucm2: sof-soundwire: Simplify cs42l45 configs + +Simplify cs42l45 configs following machine driver changes [1] +which bring normal switches instead of mute switches. + +[1] https://lore.kernel.org/all/20251127163426.2500633-2-ckeepax@opensource.cirrus.com/ + +Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/655 +Signed-off-by: Maciej Strozek +Signed-off-by: Jaroslav Kysela +--- + ucm2/codecs/cs42l45-dmic/init.conf | 17 +++++++++++++++-- + ucm2/codecs/cs42l45/init.conf | 24 ++++++++++++++++++++++++ + ucm2/sof-soundwire/cs42l45-dmic.conf | 8 ++------ + ucm2/sof-soundwire/cs42l45.conf | 18 +++--------------- + ucm2/sof-soundwire/sof-soundwire.conf | 2 +- + 5 files changed, 45 insertions(+), 24 deletions(-) + create mode 100644 ucm2/codecs/cs42l45/init.conf + +diff --git a/ucm2/codecs/cs42l45-dmic/init.conf b/ucm2/codecs/cs42l45-dmic/init.conf +index 6dd19bb..deefb3d 100644 +--- a/ucm2/codecs/cs42l45-dmic/init.conf ++++ b/ucm2/codecs/cs42l45-dmic/init.conf +@@ -1,9 +1,22 @@ + # cs42l45 specific control settings + ++LibraryConfig.remap.Config { ++ ctl.default.map { ++ "name='cs42l45 Microphone Capture Switch'" { ++ "name='cs42l45 FU 113 Channel Switch'".vindex.0 0 ++ "name='cs42l45 FU 113 Channel Switch'".vindex.1 1 ++ } ++ "name='cs42l45 Microphone Capture Volume'" { ++ "name='cs42l45 FU 113 Channel Volume'".vindex.0 0 ++ "name='cs42l45 FU 113 Channel Volume'".vindex.1 1 ++ } ++ } ++} ++ + BootSequence [ +- cset "name='cs42l45 FU 113 Mute Switch' 0" ++ cset "name='cs42l45 FU 113 Channel Switch' 0" + ] + + Macro [ +- { SetLED { LED="mic" Action="attach" CtlId="cs42l45 FU 113 Mute Switch" Mode="follow-route"} } ++ { SetLED { LED="mic" Action="attach" CtlId="cs42l45 FU 113 Channel Switch"} } + ] +diff --git a/ucm2/codecs/cs42l45/init.conf b/ucm2/codecs/cs42l45/init.conf +new file mode 100644 +index 0000000..f4aee4a +--- /dev/null ++++ b/ucm2/codecs/cs42l45/init.conf +@@ -0,0 +1,24 @@ ++# cs42l45 specific control settings ++ ++LibraryConfig.remap.Config { ++ ctl.default.map { ++ "name='cs42l45 Jack Microphone Capture Switch'" { ++ "name='cs42l45 FU 36 Channel Switch'".vindex.0 0 ++ "name='cs42l45 FU 36 Channel Switch'".vindex.1 1 ++ } ++ "name='cs42l45 Jack Microphone Capture Volume'" { ++ "name='cs42l45 FU 36 Channel Volume'".vindex.0 0 ++ "name='cs42l45 FU 36 Channel Volume'".vindex.1 1 ++ } ++ } ++ ctl.default.map { ++ "name='cs42l45 Headphone Playback Switch'" { ++ "name='cs42l45 FU 41 Channel Switch'".vindex.0 0 ++ "name='cs42l45 FU 41 Channel Switch'".vindex.1 1 ++ } ++ "name='cs42l45 Headphone Playback Volume'" { ++ "name='cs42l45 FU 41 Channel Volume'".vindex.0 0 ++ "name='cs42l45 FU 41 Channel Volume'".vindex.1 1 ++ } ++ } ++} +\ No newline at end of file +diff --git a/ucm2/sof-soundwire/cs42l45-dmic.conf b/ucm2/sof-soundwire/cs42l45-dmic.conf +index 9477cba..d46808e 100644 +--- a/ucm2/sof-soundwire/cs42l45-dmic.conf ++++ b/ucm2/sof-soundwire/cs42l45-dmic.conf +@@ -7,18 +7,14 @@ SectionDevice."Mic" { + "Headset" + ] + +- EnableSequence [ +- cset "name='cs42l45 FU 113 Mute Switch' 0" +- ] +- + DisableSequence [ +- cset "name='cs42l45 FU 113 Mute Switch' 1" ++ cset "name='cs42l45 FU 113 Channel Switch' 0" + ] + + Value { + CapturePriority 100 + CapturePCM "hw:${CardId},4" + CaptureMixer "default:${CardId}" +- CaptureVolume "cs42l45 FU 113 Channel Volume" ++ CaptureMixerElem "cs42l45 Microphone" + } + } +diff --git a/ucm2/sof-soundwire/cs42l45.conf b/ucm2/sof-soundwire/cs42l45.conf +index ba61048..c88562a 100644 +--- a/ucm2/sof-soundwire/cs42l45.conf ++++ b/ucm2/sof-soundwire/cs42l45.conf +@@ -3,19 +3,11 @@ + SectionDevice."Headphones" { + Comment "Headphones" + +- EnableSequence [ +- cset "name='cs42l45 FU 41 Mute Switch' 0" +- ] +- +- DisableSequence [ +- cset "name='cs42l45 FU 41 Mute Switch' 1" +- ] +- + Value { + PlaybackPriority 200 + PlaybackPCM "hw:${CardId},0" + PlaybackMixer "default:${CardId}" +- PlaybackVolume "cs42l45 FU 41 Channel Volume" ++ PlaybackMixerElem "cs42l45 Headphone" + JackControl "cs42l45 OT 43 Headphone Jack" + } + } +@@ -23,19 +15,15 @@ SectionDevice."Headphones" { + SectionDevice."Headset" { + Comment "Jack Microphone" + +- EnableSequence [ +- cset "name='cs42l45 FU 36 Mute Switch' 0" +- ] +- + DisableSequence [ +- cset "name='cs42l45 FU 36 Mute Switch' 1" ++ cset "name='cs42l45 FU 36 Channel Switch' 0" + ] + + Value { + CapturePriority 200 + CapturePCM "hw:${CardId},1" + CaptureMixer "default:${CardId}" +- CaptureVolume "cs42l45 FU 36 Channel Volume" ++ CaptureMixerElem "cs42l45 Jack Microphone" + JackControl "cs42l45 IT 31 Microphone Jack" + } + } +diff --git a/ucm2/sof-soundwire/sof-soundwire.conf b/ucm2/sof-soundwire/sof-soundwire.conf +index 895f479..7a00209 100644 +--- a/ucm2/sof-soundwire/sof-soundwire.conf ++++ b/ucm2/sof-soundwire/sof-soundwire.conf +@@ -117,7 +117,7 @@ If.spk_init { + If.hs_init { + Condition { + Type RegexMatch +- Regex "(cs42l43|rt5682|rt700|rt711|rt713(-sdca)?)" ++ Regex "(cs42l43|cs42l45|rt5682|rt700|rt711|rt713(-sdca)?)" + String "${var:HeadsetCodec1}" + } + True.Include.hs_init.File "/codecs/${var:HeadsetCodec1}/init.conf" +-- +2.51.1 + + +From 5d0d2bd660b4378f802c94be3eadd8375c4c7a3a Mon Sep 17 00:00:00 2001 +From: Shuming Fan +Date: Tue, 9 Dec 2025 15:40:49 +0800 +Subject: [PATCH 3/3] ucm2: codecs: rt722: add condition to SetLED for mic + +Some SKUs don't have the internal mic, so the patch adds the condition to check +whether the SKU has the internal mic or not. + +Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/657 +Signed-off-by: Shuming Fan +Signed-off-by: Jaroslav Kysela +--- + ucm2/codecs/rt722/init.conf | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +diff --git a/ucm2/codecs/rt722/init.conf b/ucm2/codecs/rt722/init.conf +index c820e55..40f2458 100644 +--- a/ucm2/codecs/rt722/init.conf ++++ b/ucm2/codecs/rt722/init.conf +@@ -10,4 +10,11 @@ BootSequence [ + cset "name='rt722 FU0F Capture Volume' 63" + ] + +-Macro [{ SetLED { LED="mic" Action="attach" CtlId="rt722 FU1E Capture Switch" } }] ++If.mic_init_rt722 { ++ Condition { ++ Type String ++ Needle "rt722" ++ Haystack "${var:MicCodec1}" ++ } ++ True.Macro [{ SetLED { LED="mic" Action="attach" CtlId="rt722 FU1E Capture Switch" } }] ++} +-- +2.51.1 + From 0c2415ae0bff58ebcd85fac9993c5d7be7f60a30 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Wed, 10 Dec 2025 12:17:42 +0100 Subject: [PATCH 19/24] apply upstream 1.2.15 fixes #2 Signed-off-by: Jaroslav Kysela --- alsa-git.patch | 518 ++++++++++++++++++++++++++++++++++++++++++++++++- alsa-lib.spec | 4 +- 2 files changed, 517 insertions(+), 5 deletions(-) diff --git a/alsa-git.patch b/alsa-git.patch index 486803f..f0124a0 100644 --- a/alsa-git.patch +++ b/alsa-git.patch @@ -1,7 +1,7 @@ From a068cf08ad67447893b707cddfce31c9cafee643 Mon Sep 17 00:00:00 2001 From: Mike Gilbert Date: Mon, 8 Dec 2025 23:46:17 -0500 -Subject: [PATCH 1/3] ucm: use closefrom instead of close_range +Subject: [PATCH 1/7] ucm: use closefrom instead of close_range closefrom is a library function with a fallback mechanism for when the kernel does not support the close_range syscall. @@ -52,7 +52,7 @@ index b5a22023..713039b4 100644 From 813ffe34ff6c720dcc56e4549338bf9e9184af1f Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Tue, 9 Dec 2025 17:48:34 +0100 -Subject: [PATCH 2/3] ucm: exec - fix maxfd used warning +Subject: [PATCH 2/7] ucm: exec - fix maxfd used warning Fixes: a068cf08 ("ucm: use closefrom instead of close_range") Signed-off-by: Jaroslav Kysela @@ -103,7 +103,7 @@ index 713039b4..c16a4cfd 100644 From a6238053c4fa518b214f99d91a01b96c5ef6e3ca Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Tue, 9 Dec 2025 18:04:07 +0100 -Subject: [PATCH 3/3] conf: merge card specific contents per file (whole) after +Subject: [PATCH 3/7] conf: merge card specific contents per file (whole) after parsing Unfortunately, mentioned fix caused a regression for items stored in one file. @@ -148,3 +148,515 @@ index 49499ecd..b1ec9b38 100644 -- 2.51.1 + +From 2f59398c83b8065fb9ff58939df3a9187746068e Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Tue, 9 Dec 2025 18:39:52 +0100 +Subject: [PATCH 4/7] conf: fix possible memory leak in config_file_open() - + error path + +Fixes: a6238053 ("conf: merge card specific contents per file (whole) after parsing") +Signed-off-by: Jaroslav Kysela +--- + src/conf.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/src/conf.c b/src/conf.c +index b1ec9b38..d90f6dc3 100644 +--- a/src/conf.c ++++ b/src/conf.c +@@ -4130,8 +4130,11 @@ static int config_file_open(snd_config_t *root, const char *filename, int merge) + err = snd_config_top(&top); + if (err >= 0) { + err = snd_config_load(top, in); +- if (err >= 0) ++ if (err >= 0) { + err = snd_config_merge(root, top, 1); ++ if (err < 0) ++ snd_config_delete(top); ++ } + } + } + snd_input_close(in); +-- +2.51.1 + + +From 2ef8952b46a46b97a6df2f29bcd182f895ebf9e4 Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Wed, 10 Dec 2025 12:03:29 +0100 +Subject: [PATCH 5/7] Revert "conf: fix load_for_all_cards() - do not merge the + card specific contents" + +This reverts commit eda76146c5653ff1d5bc4b4c53f7a2d5ccc17da2. + +Also, revert additional related commits: + + Revert "conf: fix possible memory leak in config_file_open() - error path" + This reverts commit 2f59398c83b8065fb9ff58939df3a9187746068e. + + Revert "conf: merge card specific contents per file (whole) after parsing" + This reverts commit a6238053c4fa518b214f99d91a01b96c5ef6e3ca. + +Signed-off-by: Jaroslav Kysela +--- + src/conf.c | 42 ++++++++++++------------------------------ + 1 file changed, 12 insertions(+), 30 deletions(-) + +diff --git a/src/conf.c b/src/conf.c +index d90f6dc3..fb9f0658 100644 +--- a/src/conf.c ++++ b/src/conf.c +@@ -4116,27 +4116,14 @@ static int config_filename_filter(const struct dirent64 *dirent) + return 0; + } + +-static int config_file_open(snd_config_t *root, const char *filename, int merge) ++static int config_file_open(snd_config_t *root, const char *filename) + { + snd_input_t *in; +- snd_config_t *top; + int err; + + err = snd_input_stdio_open(&in, filename, "r"); + if (err >= 0) { +- if (merge) { +- err = snd_config_load(root, in); +- } else { +- err = snd_config_top(&top); +- if (err >= 0) { +- err = snd_config_load(top, in); +- if (err >= 0) { +- err = snd_config_merge(root, top, 1); +- if (err < 0) +- snd_config_delete(top); +- } +- } +- } ++ err = snd_config_load(root, in); + snd_input_close(in); + if (err < 0) + snd_error(CORE, "%s may be old or corrupted: consider to remove or fix it", filename); +@@ -4146,7 +4133,7 @@ static int config_file_open(snd_config_t *root, const char *filename, int merge) + return err; + } + +-static int config_file_load(snd_config_t *root, const char *fn, int errors, int merge) ++static int config_file_load(snd_config_t *root, const char *fn, int errors) + { + struct stat64 st; + struct dirent64 **namelist; +@@ -4159,7 +4146,7 @@ static int config_file_load(snd_config_t *root, const char *fn, int errors, int + return 1; + } + if (!S_ISDIR(st.st_mode)) +- return config_file_open(root, fn, merge); ++ return config_file_open(root, fn); + #ifndef DOC_HIDDEN + #if defined(_GNU_SOURCE) && \ + !defined(__NetBSD__) && \ +@@ -4185,7 +4172,7 @@ static int config_file_load(snd_config_t *root, const char *fn, int errors, int + snprintf(filename, sl, "%s/%s", fn, namelist[j]->d_name); + filename[sl-1] = '\0'; + +- err = config_file_open(root, filename, merge); ++ err = config_file_open(root, filename); + free(filename); + } + free(namelist[j]); +@@ -4197,20 +4184,20 @@ static int config_file_load(snd_config_t *root, const char *fn, int errors, int + return 0; + } + +-static int config_file_load_user(snd_config_t *root, const char *fn, int errors, int merge) ++static int config_file_load_user(snd_config_t *root, const char *fn, int errors) + { + char *fn2; + int err; + + err = snd_user_file(fn, &fn2); + if (err < 0) +- return config_file_load(root, fn, errors, merge); +- err = config_file_load(root, fn2, errors, merge); ++ return config_file_load(root, fn, errors); ++ err = config_file_load(root, fn2, errors); + free(fn2); + return err; + } + +-static int config_file_load_user_all(snd_config_t *_root, snd_config_t *_file, int errors, int merge) ++static int config_file_load_user_all(snd_config_t *_root, snd_config_t *_file, int errors) + { + snd_config_t *file = _file, *root = _root, *n; + char *name, *name2, *remain, *rname = NULL; +@@ -4241,7 +4228,7 @@ static int config_file_load_user_all(snd_config_t *_root, snd_config_t *_file, i + *remain = '\0'; + remain += 3; + } +- err = config_file_load_user(root, name2, errors, merge); ++ err = config_file_load_user(root, name2, errors); + if (err < 0) + goto _err; + if (err == 0) /* first hit wins */ +@@ -4290,7 +4277,7 @@ int snd_config_hook_load(snd_config_t *root, snd_config_t *config, snd_config_t + { + snd_config_t *n; + snd_config_iterator_t i, next; +- int err, idx = 0, errors = 1, merge = 1, hit; ++ int err, idx = 0, errors = 1, hit; + + assert(root && dst); + if ((err = snd_config_search(config, "errors", &n)) >= 0) { +@@ -4300,10 +4287,6 @@ int snd_config_hook_load(snd_config_t *root, snd_config_t *config, snd_config_t + return errors; + } + } +- /* special case, we know the card number (may be multiple times) */ +- if (private_data && snd_config_search(private_data, "integer", &n) >= 0) { +- merge = 0; +- } + if ((err = snd_config_search(config, "files", &n)) < 0) { + snd_error(CORE, "Unable to find field files in the pre-load section"); + return -EINVAL; +@@ -4316,7 +4299,6 @@ int snd_config_hook_load(snd_config_t *root, snd_config_t *config, snd_config_t + snd_error(CORE, "Invalid type for field filenames"); + goto _err; + } +- + do { + hit = 0; + snd_config_for_each(i, next, n) { +@@ -4330,7 +4312,7 @@ int snd_config_hook_load(snd_config_t *root, snd_config_t *config, snd_config_t + goto _err; + } + if (i == idx) { +- err = config_file_load_user_all(root, n, errors, merge); ++ err = config_file_load_user_all(root, n, errors); + if (err < 0) + goto _err; + idx++; +-- +2.51.1 + + +From 16ab43db6ed6f71424d5ad78e62f85baaeae5051 Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Wed, 10 Dec 2025 12:12:47 +0100 +Subject: [PATCH 6/7] conf: USB-Audio: define pcm configuration block only one + time + +There may be multiple USB soundcards in the system. Overwrite +the PCM configurations when loaded multiple times. + +Signed-off-by: Jaroslav Kysela +--- + src/conf/cards/USB-Audio.conf | 30 +++++++++++++++--------------- + 1 file changed, 15 insertions(+), 15 deletions(-) + +diff --git a/src/conf/cards/USB-Audio.conf b/src/conf/cards/USB-Audio.conf +index 2f6d2ee0..1fc540e2 100644 +--- a/src/conf/cards/USB-Audio.conf ++++ b/src/conf/cards/USB-Audio.conf +@@ -99,7 +99,7 @@ USB-Audio.pcm.iec958_2_device { + # device 0: analog output, digital input + # device 1: digital output, analog input + USB-Audio."AudioPhile".pcm.default "cards.USB-Audio.Audiophile USB (tm).pcm.default" +-USB-Audio."Audiophile USB (tm)".pcm.default { ++USB-Audio."Audiophile USB (tm)".pcm.!default { + @args [ CARD ] + @args.CARD { type string } + type asym +@@ -120,7 +120,7 @@ USB-Audio."Audiophile USB (tm)".pcm.default { + } + } + USB-Audio."AudioPhile".pcm.iec958 "cards.USB-Audio.Audiophile USB (tm).pcm.iec958" +-USB-Audio."Audiophile USB (tm)".pcm.iec958 { ++USB-Audio."Audiophile USB (tm)".pcm.!iec958 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { type string } + @args.AES0 { type integer } +@@ -142,7 +142,7 @@ USB-Audio."Audiophile USB (tm)".pcm.iec958 { + + # For this card we can (and must to get IEC61937) set AES bits + USB-Audio."MicroII".pcm.iec958 "cards.USB-Audio.Audio Advantage MicroII.pcm.iec958" +-USB-Audio."Audio Advantage MicroII".pcm.iec958 { ++USB-Audio."Audio Advantage MicroII".pcm.!iec958 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { type string } + @args.AES0 { type integer } +@@ -180,7 +180,7 @@ USB-Audio."Audio Advantage MicroII".pcm.iec958 { + + + +-USB-Audio.pcm.front.0 { ++USB-Audio.pcm.front.!0 { + @args [ CARD ] + @args.CARD { type string } + @func refer +@@ -201,7 +201,7 @@ USB-Audio.pcm.front.0 { + } + } + +-USB-Audio.pcm.default { ++USB-Audio.pcm.!default { + @args [ CARD ] + @args.CARD { type string } + @func refer +@@ -249,14 +249,14 @@ USB-Audio.pcm.default { + } + } + +-USB-Audio.pcm.default_playback_dmix_yes { ++USB-Audio.pcm.!default_playback_dmix_yes { + @args [ CARD ] + @args.CARD { type string } + @func concat + strings [ "dmix:" $CARD ] + } + +-USB-Audio.pcm.default_playback_dmix_no { ++USB-Audio.pcm.!default_playback_dmix_no { + @args [ CARD ] + @args.CARD { type string } + type hw +@@ -266,7 +266,7 @@ USB-Audio.pcm.default_playback_dmix_no { + + + +-USB-Audio.pcm.surround40.0 { ++USB-Audio.pcm.surround40.!0 { + @args [ CARD ] + @args.CARD { type string } + @func refer +@@ -301,7 +301,7 @@ USB-Audio.pcm.surround40.0 { + } + } + +-USB-Audio.pcm.surround40_default { ++USB-Audio.pcm.!surround40_default { + @args [ CARD ] + @args.CARD { type string } + type hw +@@ -309,7 +309,7 @@ USB-Audio.pcm.surround40_default { + device 0 + } + +-USB-Audio.pcm.surround40_six_channels { ++USB-Audio.pcm.!surround40_six_channels { + @args [ CARD ] + @args.CARD { type string } + type route +@@ -327,7 +327,7 @@ USB-Audio.pcm.surround40_six_channels { + } + } + +-USB-Audio.pcm.surround40_two_stereo_devices { ++USB-Audio.pcm.!surround40_two_stereo_devices { + @args [ CARD ] + @args.CARD { type string } + type route +@@ -369,7 +369,7 @@ USB-Audio.pcm.surround40_two_stereo_devices { + + + +-USB-Audio.pcm.surround51.0 { ++USB-Audio.pcm.surround51.!0 { + @args [ CARD ] + @args.CARD { type string } + @func refer +@@ -402,7 +402,7 @@ USB-Audio.pcm.surround51.0 { + + + +-USB-Audio.pcm.surround71.0 { ++USB-Audio.pcm.surround71.!0 { + @args [ CARD ] + @args.CARD { type string } + @func refer +@@ -437,7 +437,7 @@ USB-Audio.pcm.surround71.0 { + + + +-USB-Audio.pcm.iec958.0 { ++USB-Audio.pcm.iec958.!0 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { type string } + @args.AES0 { type integer } +@@ -472,7 +472,7 @@ USB-Audio.pcm.iec958.0 { + } + } + +-USB-Audio.pcm.iec958.1 { ++USB-Audio.pcm.iec958.!1 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { type string } + @args.AES0 { type integer } +-- +2.51.1 + + +From 010b699c92a9a6ffdca1874cd2e3c6c054d212e0 Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Wed, 10 Dec 2025 12:12:47 +0100 +Subject: [PATCH 7/7] conf: HDA-Intel: define pcm configuration block only one + time + +There may be multiple HDA-Intel soundcards in the system. Overwrite +the PCM configurations when loaded multiple times. + +Signed-off-by: Jaroslav Kysela +--- + src/conf/cards/HDA-Intel.conf | 32 ++++++++++++++++---------------- + 1 file changed, 16 insertions(+), 16 deletions(-) + +diff --git a/src/conf/cards/HDA-Intel.conf b/src/conf/cards/HDA-Intel.conf +index 5451606f..76775b97 100644 +--- a/src/conf/cards/HDA-Intel.conf ++++ b/src/conf/cards/HDA-Intel.conf +@@ -4,7 +4,7 @@ + + + +-HDA-Intel.pcm.front.0 { ++HDA-Intel.pcm.front.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -29,7 +29,7 @@ HDA-Intel.pcm.front.0 { + } + + # default with dmix+softvol & dsnoop +-HDA-Intel.pcm.default { ++HDA-Intel.pcm.!default { + @args [ CARD ] + @args.CARD { + type string +@@ -84,7 +84,7 @@ HDA-Intel.pcm.surround71.0 cards.HDA-Intel.pcm.front.0 + + + +-HDA-Intel.pcm.iec958.0 { ++HDA-Intel.pcm.iec958.!0 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { + type string +@@ -163,7 +163,7 @@ HDA-Intel.pcm.iec958.0 { + hint.device 1 + } + +-HDA-Intel.pcm.hdmi.common { ++HDA-Intel.pcm.hdmi.!common { + @args [ CARD DEVICE CTLINDEX AES0 AES1 AES2 AES3 ] + @args.CARD { + type string +@@ -212,7 +212,7 @@ HDA-Intel.pcm.hdmi.common { + hint.device $DEVICE + } + +-HDA-Intel.pcm.hdmi.0 { ++HDA-Intel.pcm.hdmi.!0 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { type string } + @args.AES0 { type integer } +@@ -235,7 +235,7 @@ HDA-Intel.pcm.hdmi.0 { + } + } + +-HDA-Intel.pcm.hdmi.1 { ++HDA-Intel.pcm.hdmi.!1 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { type string } + @args.AES0 { type integer } +@@ -258,7 +258,7 @@ HDA-Intel.pcm.hdmi.1 { + } + } + +-HDA-Intel.pcm.hdmi.2 { ++HDA-Intel.pcm.hdmi.!2 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { type string } + @args.AES0 { type integer } +@@ -281,7 +281,7 @@ HDA-Intel.pcm.hdmi.2 { + } + } + +-HDA-Intel.pcm.hdmi.3 { ++HDA-Intel.pcm.hdmi.!3 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { type string } + @args.AES0 { type integer } +@@ -304,7 +304,7 @@ HDA-Intel.pcm.hdmi.3 { + } + } + +-HDA-Intel.pcm.hdmi.4 { ++HDA-Intel.pcm.hdmi.!4 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { type string } + @args.AES0 { type integer } +@@ -327,7 +327,7 @@ HDA-Intel.pcm.hdmi.4 { + } + } + +-HDA-Intel.pcm.hdmi.5 { ++HDA-Intel.pcm.hdmi.!5 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { type string } + @args.AES0 { type integer } +@@ -350,7 +350,7 @@ HDA-Intel.pcm.hdmi.5 { + } + } + +-HDA-Intel.pcm.hdmi.6 { ++HDA-Intel.pcm.hdmi.!6 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { type string } + @args.AES0 { type integer } +@@ -373,7 +373,7 @@ HDA-Intel.pcm.hdmi.6 { + } + } + +-HDA-Intel.pcm.hdmi.7 { ++HDA-Intel.pcm.hdmi.!7 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { type string } + @args.AES0 { type integer } +@@ -396,7 +396,7 @@ HDA-Intel.pcm.hdmi.7 { + } + } + +-HDA-Intel.pcm.hdmi.8 { ++HDA-Intel.pcm.hdmi.!8 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { type string } + @args.AES0 { type integer } +@@ -419,7 +419,7 @@ HDA-Intel.pcm.hdmi.8 { + } + } + +-HDA-Intel.pcm.hdmi.9 { ++HDA-Intel.pcm.hdmi.!9 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { type string } + @args.AES0 { type integer } +@@ -442,7 +442,7 @@ HDA-Intel.pcm.hdmi.9 { + } + } + +-HDA-Intel.pcm.hdmi.10 { ++HDA-Intel.pcm.hdmi.!10 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { type string } + @args.AES0 { type integer } +@@ -467,7 +467,7 @@ HDA-Intel.pcm.hdmi.10 { + + + +-HDA-Intel.pcm.modem.0 { ++HDA-Intel.pcm.modem.!0 { + @args [ CARD ] + @args.CARD { + type string +-- +2.51.1 + diff --git a/alsa-lib.spec b/alsa-lib.spec index d91c95d..e11c07f 100644 --- a/alsa-lib.spec +++ b/alsa-lib.spec @@ -9,7 +9,7 @@ Summary: The Advanced Linux Sound Architecture (ALSA) library Name: alsa-lib Version: %{version_alsa_lib} -Release: 2%{?prever_dot}%{?dist} +Release: 3%{?prever_dot}%{?dist} License: LGPL-2.1-or-later URL: http://www.alsa-project.org/ @@ -167,7 +167,7 @@ rm %{buildroot}/%{_includedir}/asoundlib.h %{_datadir}/alsa/topology %changelog -* Sun Dec 7 2025 Jaroslav Kysela - 1.2.15-1 +* Sun Dec 10 2025 Jaroslav Kysela - 1.2.15-3 - update to 1.2.15 * Wed Jul 23 2025 Fedora Release Engineering - 1.2.14-4 From 3a48b2356c7243239d307f25c91e42d711cff471 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Wed, 10 Dec 2025 16:41:01 +0100 Subject: [PATCH 20/24] apply upstream 1.2.15 fixes #3 Signed-off-by: Jaroslav Kysela --- alsa-git.patch | 4346 +++++++++++++++++++++++++++++++++++++++++++++++- alsa-lib.spec | 4 +- 2 files changed, 4337 insertions(+), 13 deletions(-) diff --git a/alsa-git.patch b/alsa-git.patch index f0124a0..b0fcde8 100644 --- a/alsa-git.patch +++ b/alsa-git.patch @@ -1,7 +1,7 @@ From a068cf08ad67447893b707cddfce31c9cafee643 Mon Sep 17 00:00:00 2001 From: Mike Gilbert Date: Mon, 8 Dec 2025 23:46:17 -0500 -Subject: [PATCH 1/7] ucm: use closefrom instead of close_range +Subject: [PATCH 01/43] ucm: use closefrom instead of close_range closefrom is a library function with a fallback mechanism for when the kernel does not support the close_range syscall. @@ -52,7 +52,7 @@ index b5a22023..713039b4 100644 From 813ffe34ff6c720dcc56e4549338bf9e9184af1f Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Tue, 9 Dec 2025 17:48:34 +0100 -Subject: [PATCH 2/7] ucm: exec - fix maxfd used warning +Subject: [PATCH 02/43] ucm: exec - fix maxfd used warning Fixes: a068cf08 ("ucm: use closefrom instead of close_range") Signed-off-by: Jaroslav Kysela @@ -103,8 +103,8 @@ index 713039b4..c16a4cfd 100644 From a6238053c4fa518b214f99d91a01b96c5ef6e3ca Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Tue, 9 Dec 2025 18:04:07 +0100 -Subject: [PATCH 3/7] conf: merge card specific contents per file (whole) after - parsing +Subject: [PATCH 03/43] conf: merge card specific contents per file (whole) + after parsing Unfortunately, mentioned fix caused a regression for items stored in one file. Merge the file contents after parsing not inside parsing process. @@ -152,7 +152,7 @@ index 49499ecd..b1ec9b38 100644 From 2f59398c83b8065fb9ff58939df3a9187746068e Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Tue, 9 Dec 2025 18:39:52 +0100 -Subject: [PATCH 4/7] conf: fix possible memory leak in config_file_open() - +Subject: [PATCH 04/43] conf: fix possible memory leak in config_file_open() - error path Fixes: a6238053 ("conf: merge card specific contents per file (whole) after parsing") @@ -185,8 +185,8 @@ index b1ec9b38..d90f6dc3 100644 From 2ef8952b46a46b97a6df2f29bcd182f895ebf9e4 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Wed, 10 Dec 2025 12:03:29 +0100 -Subject: [PATCH 5/7] Revert "conf: fix load_for_all_cards() - do not merge the - card specific contents" +Subject: [PATCH 05/43] Revert "conf: fix load_for_all_cards() - do not merge + the card specific contents" This reverts commit eda76146c5653ff1d5bc4b4c53f7a2d5ccc17da2. @@ -342,8 +342,8 @@ index d90f6dc3..fb9f0658 100644 From 16ab43db6ed6f71424d5ad78e62f85baaeae5051 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Wed, 10 Dec 2025 12:12:47 +0100 -Subject: [PATCH 6/7] conf: USB-Audio: define pcm configuration block only one - time +Subject: [PATCH 06/43] conf: USB-Audio: define pcm configuration block only + one time There may be multiple USB soundcards in the system. Overwrite the PCM configurations when loaded multiple times. @@ -498,8 +498,8 @@ index 2f6d2ee0..1fc540e2 100644 From 010b699c92a9a6ffdca1874cd2e3c6c054d212e0 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Wed, 10 Dec 2025 12:12:47 +0100 -Subject: [PATCH 7/7] conf: HDA-Intel: define pcm configuration block only one - time +Subject: [PATCH 07/43] conf: HDA-Intel: define pcm configuration block only + one time There may be multiple HDA-Intel soundcards in the system. Overwrite the PCM configurations when loaded multiple times. @@ -660,3 +660,4327 @@ index 5451606f..76775b97 100644 -- 2.51.1 + +From d83af363f1fc17e2b3e7cf2a0f848722f6643a9a Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Wed, 10 Dec 2025 12:12:47 +0100 +Subject: [PATCH 08/43] conf: vc4-hdmi: define pcm configuration block only one + time + +There may be multiple vc4-hdmi soundcards in the system. Overwrite +the PCM configurations when loaded multiple times. + +BugLink: https://github.com/alsa-project/alsa-lib/issues/488 +Signed-off-by: Jaroslav Kysela +--- + src/conf/cards/vc4-hdmi.conf | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/conf/cards/vc4-hdmi.conf b/src/conf/cards/vc4-hdmi.conf +index 0f313d82..7041d185 100644 +--- a/src/conf/cards/vc4-hdmi.conf ++++ b/src/conf/cards/vc4-hdmi.conf +@@ -3,7 +3,7 @@ + # subframe conversion + # + +-vc4-hdmi.pcm.hdmi.0 { ++vc4-hdmi.pcm.hdmi.!0 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { + type string +@@ -50,7 +50,7 @@ vc4-hdmi.pcm.hdmi.0 { + } + + # default with plug and softvol +-vc4-hdmi.pcm.default { ++vc4-hdmi.pcm.!default { + @args [ CARD ] + @args.CARD { + type string +-- +2.51.1 + + +From 3969e458124f6933e2f440c2b0b39b29de791a78 Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Wed, 10 Dec 2025 12:12:47 +0100 +Subject: [PATCH 09/43] conf: AACI,ATIIXP: define pcm configuration block only + one time + +There may be multiple AACI,ATIIXP soundcards in the system. Overwrite +the PCM configurations when loaded multiple times. + +Signed-off-by: Jaroslav Kysela +--- + src/conf/cards/AACI.conf | 4 ++-- + src/conf/cards/ATIIXP-MODEM.conf | 2 +- + src/conf/cards/ATIIXP-SPDMA.conf | 10 +++++----- + src/conf/cards/ATIIXP.conf | 10 +++++----- + 4 files changed, 13 insertions(+), 13 deletions(-) + +diff --git a/src/conf/cards/AACI.conf b/src/conf/cards/AACI.conf +index 748586a0..ff4778b4 100644 +--- a/src/conf/cards/AACI.conf ++++ b/src/conf/cards/AACI.conf +@@ -4,7 +4,7 @@ + + + +-AACI.pcm.front.0 { ++AACI.pcm.front.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -19,7 +19,7 @@ AACI.pcm.surround40.0 "cards.AACI.pcm.front.0" + + + +-AACI.pcm.surround51.0 { ++AACI.pcm.surround51.!0 { + @args [ CARD ] + @args.CARD { + type string +diff --git a/src/conf/cards/ATIIXP-MODEM.conf b/src/conf/cards/ATIIXP-MODEM.conf +index 6e52af05..1f69b735 100644 +--- a/src/conf/cards/ATIIXP-MODEM.conf ++++ b/src/conf/cards/ATIIXP-MODEM.conf +@@ -4,7 +4,7 @@ + + + +-ATIIXP-MODEM.pcm.modem.0 { ++ATIIXP-MODEM.pcm.modem.!0 { + @args [ CARD ] + @args.CARD { + type string +diff --git a/src/conf/cards/ATIIXP-SPDMA.conf b/src/conf/cards/ATIIXP-SPDMA.conf +index 42540d68..12c40efc 100644 +--- a/src/conf/cards/ATIIXP-SPDMA.conf ++++ b/src/conf/cards/ATIIXP-SPDMA.conf +@@ -4,7 +4,7 @@ + + + +-ATIIXP-SPDMA.pcm.front.0 { ++ATIIXP-SPDMA.pcm.front.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -14,7 +14,7 @@ ATIIXP-SPDMA.pcm.front.0 { + } + + # default with dmix/dsnoop +-ATIIXP.pcm.default { ++ATIIXP.pcm.!default { + @args [ CARD ] + @args.CARD { + type string +@@ -38,7 +38,7 @@ ATIIXP.pcm.default { + + + +-ATIIXP-SPDMA.pcm.surround40.0 { ++ATIIXP-SPDMA.pcm.surround40.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -82,7 +82,7 @@ ATIIXP-SPDMA.pcm.surround40.0 { + + + +-ATIIXP-SPDMA.pcm.surround51.0 { ++ATIIXP-SPDMA.pcm.surround51.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -136,7 +136,7 @@ ATIIXP-SPDMA.pcm.surround51.0 { + + + +-ATIIXP-SPDMA.pcm.iec958.0 { ++ATIIXP-SPDMA.pcm.iec958.!0 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { + type string +diff --git a/src/conf/cards/ATIIXP.conf b/src/conf/cards/ATIIXP.conf +index c4d33ef3..13e01c48 100644 +--- a/src/conf/cards/ATIIXP.conf ++++ b/src/conf/cards/ATIIXP.conf +@@ -4,7 +4,7 @@ + + + +-ATIIXP.pcm.front.0 { ++ATIIXP.pcm.front.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -14,7 +14,7 @@ ATIIXP.pcm.front.0 { + } + + # default with dmix/dsnoop +-ATIIXP.pcm.default { ++ATIIXP.pcm.!default { + @args [ CARD ] + @args.CARD { + type string +@@ -38,7 +38,7 @@ ATIIXP.pcm.default { + + + +-ATIIXP.pcm.surround40.0 { ++ATIIXP.pcm.surround40.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -82,7 +82,7 @@ ATIIXP.pcm.surround40.0 { + + + +-ATIIXP.pcm.surround51.0 { ++ATIIXP.pcm.surround51.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -136,7 +136,7 @@ ATIIXP.pcm.surround51.0 { + + + +-ATIIXP.pcm.iec958.0 { ++ATIIXP.pcm.iec958.!0 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { + type string +-- +2.51.1 + + +From e5dbefdff1254fb66ffa82983c6fed08ba8e37df Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Wed, 10 Dec 2025 12:12:47 +0100 +Subject: [PATCH 10/43] conf: Audigy: define pcm configuration block only one + time + +There may be multiple Audigy soundcards in the system. Overwrite +the PCM configurations when loaded multiple times. + +Signed-off-by: Jaroslav Kysela +--- + src/conf/cards/Audigy.conf | 12 ++++++------ + src/conf/cards/Audigy2.conf | 16 ++++++++-------- + 2 files changed, 14 insertions(+), 14 deletions(-) + +diff --git a/src/conf/cards/Audigy.conf b/src/conf/cards/Audigy.conf +index 42692cfd..a353c624 100644 +--- a/src/conf/cards/Audigy.conf ++++ b/src/conf/cards/Audigy.conf +@@ -4,7 +4,7 @@ + + + +-Audigy.pcm.front.0 { ++Audigy.pcm.front.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -40,7 +40,7 @@ Audigy.pcm.front.0 { + + + +-Audigy.pcm.rear.0 { ++Audigy.pcm.rear.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -68,7 +68,7 @@ Audigy.pcm.rear.0 { + + + +-Audigy.pcm.center_lfe.0 { ++Audigy.pcm.center_lfe.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -107,7 +107,7 @@ Audigy.pcm.center_lfe.0 { + + + +-Audigy.pcm.surround40.0 { ++Audigy.pcm.surround40.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -143,7 +143,7 @@ Audigy.pcm.surround40.0 { + + + +-Audigy.pcm.surround51.0 { ++Audigy.pcm.surround51.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -190,7 +190,7 @@ Audigy.pcm.surround51.0 { + + + +-Audigy.pcm.iec958.0 { ++Audigy.pcm.iec958.!0 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { + type string +diff --git a/src/conf/cards/Audigy2.conf b/src/conf/cards/Audigy2.conf +index 35126d23..3c15fd1d 100644 +--- a/src/conf/cards/Audigy2.conf ++++ b/src/conf/cards/Audigy2.conf +@@ -4,7 +4,7 @@ + + + +-Audigy2.pcm.front.0 { ++Audigy2.pcm.front.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -41,7 +41,7 @@ Audigy2.pcm.front.0 { + + + +-Audigy2.pcm.rear.0 { ++Audigy2.pcm.rear.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -69,7 +69,7 @@ Audigy2.pcm.rear.0 { + + + +-Audigy2.pcm.center_lfe.0 { ++Audigy2.pcm.center_lfe.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -105,7 +105,7 @@ Audigy2.pcm.center_lfe.0 { + + + +-Audigy2.pcm.side.0 { ++Audigy2.pcm.side.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -144,7 +144,7 @@ Audigy2.pcm.side.0 { + + + +-Audigy2.pcm.surround40.0 { ++Audigy2.pcm.surround40.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -180,7 +180,7 @@ Audigy2.pcm.surround40.0 { + + + +-Audigy2.pcm.surround51.0 { ++Audigy2.pcm.surround51.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -227,7 +227,7 @@ Audigy2.pcm.surround51.0 { + + + +-Audigy2.pcm.surround71.0 { ++Audigy2.pcm.surround71.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -285,7 +285,7 @@ Audigy2.pcm.surround71.0 { + + + +-Audigy2.pcm.iec958.0 { ++Audigy2.pcm.iec958.!0 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { + type string +-- +2.51.1 + + +From 7079887cd21077fe9569a0d910b11e40f7e5153d Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Wed, 10 Dec 2025 12:12:47 +0100 +Subject: [PATCH 11/43] conf: Aureon: define pcm configuration block only one + time + +There may be multiple Aureon soundcards in the system. Overwrite +the PCM configurations when loaded multiple times. + +Signed-off-by: Jaroslav Kysela +--- + src/conf/cards/Aureon51.conf | 14 +++++++------- + src/conf/cards/Aureon71.conf | 18 +++++++++--------- + 2 files changed, 16 insertions(+), 16 deletions(-) + +diff --git a/src/conf/cards/Aureon51.conf b/src/conf/cards/Aureon51.conf +index 07be4a77..9bf34661 100644 +--- a/src/conf/cards/Aureon51.conf ++++ b/src/conf/cards/Aureon51.conf +@@ -3,7 +3,7 @@ + # + + # default with dmix & dsnoop +-Aureon51.pcm.default { ++Aureon51.pcm.!default { + @args [ CARD ] + @args.CARD { + type string +@@ -27,7 +27,7 @@ Aureon51.pcm.default { + + + +-Aureon51.pcm.front.0 { ++Aureon51.pcm.front.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -38,7 +38,7 @@ Aureon51.pcm.front.0 { + + + +-Aureon51.pcm.rear.0 { ++Aureon51.pcm.rear.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -51,7 +51,7 @@ Aureon51.pcm.rear.0 { + + + +-Aureon51.pcm.center_lfe.0 { ++Aureon51.pcm.center_lfe.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -63,7 +63,7 @@ Aureon51.pcm.center_lfe.0 { + + + +-Aureon51.pcm.side.0 { ++Aureon51.pcm.side.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -91,7 +91,7 @@ Aureon51.pcm.surround40.0 { + + + +-Aureon51.pcm.surround51.0 { ++Aureon51.pcm.surround51.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -103,7 +103,7 @@ Aureon51.pcm.surround51.0 { + + + +-Aureon51.pcm.iec958.0 { ++Aureon51.pcm.iec958.!0 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { + type string +diff --git a/src/conf/cards/Aureon71.conf b/src/conf/cards/Aureon71.conf +index a43ce2ce..f29bc297 100644 +--- a/src/conf/cards/Aureon71.conf ++++ b/src/conf/cards/Aureon71.conf +@@ -3,7 +3,7 @@ + # + + # default with dmix & dsnoop +-Aureon71.pcm.default { ++Aureon71.pcm.!default { + @args [ CARD ] + @args.CARD { + type string +@@ -27,7 +27,7 @@ Aureon71.pcm.default { + + + +-Aureon71.pcm.front.0 { ++Aureon71.pcm.front.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -38,7 +38,7 @@ Aureon71.pcm.front.0 { + + + +-Aureon71.pcm.rear.0 { ++Aureon71.pcm.rear.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -50,7 +50,7 @@ Aureon71.pcm.rear.0 { + + + +-Aureon71.pcm.center_lfe.0 { ++Aureon71.pcm.center_lfe.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -63,7 +63,7 @@ Aureon71.pcm.center_lfe.0 { + + + +-Aureon71.pcm.side.0 { ++Aureon71.pcm.side.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -76,7 +76,7 @@ Aureon71.pcm.side.0 { + + + +-Aureon71.pcm.surround40.0 { ++Aureon71.pcm.surround40.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -91,7 +91,7 @@ Aureon71.pcm.surround40.0 { + + + +-Aureon71.pcm.surround51.0 { ++Aureon71.pcm.surround51.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -103,7 +103,7 @@ Aureon71.pcm.surround51.0 { + + + +-Aureon71.pcm.surround71.0 { ++Aureon71.pcm.surround71.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -114,7 +114,7 @@ Aureon71.pcm.surround71.0 { + + + +-Aureon71.pcm.iec958.0 { ++Aureon71.pcm.iec958.!0 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { + type string +-- +2.51.1 + + +From ea984c3a7d6fbc3613c72614f5fce18ad2c7f9b1 Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Wed, 10 Dec 2025 12:12:47 +0100 +Subject: [PATCH 12/43] conf: AU88[123]0: define pcm configuration block only + one time + +There may be multiple AU88[123]0 soundcards in the system. Overwrite +the PCM configurations when loaded multiple times. + +Signed-off-by: Jaroslav Kysela +--- + src/conf/cards/AU8810.conf | 4 ++-- + src/conf/cards/AU8820.conf | 2 +- + src/conf/cards/AU8830.conf | 4 ++-- + 3 files changed, 5 insertions(+), 5 deletions(-) + +diff --git a/src/conf/cards/AU8810.conf b/src/conf/cards/AU8810.conf +index 24d46c34..6b596b68 100644 +--- a/src/conf/cards/AU8810.conf ++++ b/src/conf/cards/AU8810.conf +@@ -4,7 +4,7 @@ + + + +-AU8810.pcm.front.0 { ++AU8810.pcm.front.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -15,7 +15,7 @@ AU8810.pcm.front.0 { + + + +-AU8810.pcm.iec958.0 { ++AU8810.pcm.iec958.!0 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { + type string +diff --git a/src/conf/cards/AU8820.conf b/src/conf/cards/AU8820.conf +index 07890254..fe2cbc11 100644 +--- a/src/conf/cards/AU8820.conf ++++ b/src/conf/cards/AU8820.conf +@@ -4,7 +4,7 @@ + + + +-AU8820.pcm.front.0 { ++AU8820.pcm.front.!0 { + @args [ CARD ] + @args.CARD { + type string +diff --git a/src/conf/cards/AU8830.conf b/src/conf/cards/AU8830.conf +index 39e66d50..9cd78b3e 100644 +--- a/src/conf/cards/AU8830.conf ++++ b/src/conf/cards/AU8830.conf +@@ -4,7 +4,7 @@ + + + +-AU8830.pcm.front.0 { ++AU8830.pcm.front.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -19,7 +19,7 @@ AU8830.pcm.surround40.0 "cards.AU8830.pcm.front.0" + + + +-AU8830.pcm.iec958.0 { ++AU8830.pcm.iec958.!0 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { + type string +-- +2.51.1 + + +From 68b8b435416ea734dda55c39f59bea90ea4b0dd6 Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Wed, 10 Dec 2025 12:12:47 +0100 +Subject: [PATCH 13/43] conf: CA0106: define pcm configuration block only one + time + +There may be multiple CA0106 soundcards in the system. Overwrite +the PCM configurations when loaded multiple times. + +Signed-off-by: Jaroslav Kysela +--- + src/conf/cards/CA0106.conf | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) + +diff --git a/src/conf/cards/CA0106.conf b/src/conf/cards/CA0106.conf +index 2f0eaf0a..1fea79f5 100644 +--- a/src/conf/cards/CA0106.conf ++++ b/src/conf/cards/CA0106.conf +@@ -3,7 +3,7 @@ + # + + # default with dmix & dsnoop +-CA0106.pcm.default { ++CA0106.pcm.!default { + @args [ CARD ] + @args.CARD { + type string +@@ -27,7 +27,7 @@ CA0106.pcm.default { + + + +-CA0106.pcm.front.0 { ++CA0106.pcm.front.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -38,7 +38,7 @@ CA0106.pcm.front.0 { + + + +-CA0106.pcm.rear.0 { ++CA0106.pcm.rear.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -50,7 +50,7 @@ CA0106.pcm.rear.0 { + + + +-CA0106.pcm.center_lfe.0 { ++CA0106.pcm.center_lfe.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -62,7 +62,7 @@ CA0106.pcm.center_lfe.0 { + + + +-CA0106.pcm.side.0 { ++CA0106.pcm.side.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -74,7 +74,7 @@ CA0106.pcm.side.0 { + + + +-CA0106.pcm.surround40.0 { ++CA0106.pcm.surround40.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -114,7 +114,7 @@ CA0106.pcm.surround40.0 { + + + +-CA0106.pcm.surround51.0 { ++CA0106.pcm.surround51.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -159,7 +159,7 @@ CA0106.pcm.surround51.0 { + ] + } + +-CA0106.pcm.surround71.0 { ++CA0106.pcm.surround71.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -220,7 +220,7 @@ CA0106.pcm.surround71.0 { + + + +-CA0106.pcm.iec958.0 { ++CA0106.pcm.iec958.!0 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { + type string +-- +2.51.1 + + +From 041299ea39a7a8d2cb55cb8c2cb5a2e985d38fc3 Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Wed, 10 Dec 2025 12:12:47 +0100 +Subject: [PATCH 14/43] conf: CMI8xxx: define pcm configuration block only one + time + +There may be multiple CMI8xxx soundcards in the system. Overwrite +the PCM configurations when loaded multiple times. + +Signed-off-by: Jaroslav Kysela +--- + src/conf/cards/CMI8338-SWIEC.conf | 10 +++++----- + src/conf/cards/CMI8338.conf | 10 +++++----- + src/conf/cards/CMI8738-MC6.conf | 12 ++++++------ + src/conf/cards/CMI8738-MC8.conf | 14 +++++++------- + src/conf/cards/CMI8788.conf | 12 ++++++------ + 5 files changed, 29 insertions(+), 29 deletions(-) + +diff --git a/src/conf/cards/CMI8338-SWIEC.conf b/src/conf/cards/CMI8338-SWIEC.conf +index af3a579f..ca86c466 100644 +--- a/src/conf/cards/CMI8338-SWIEC.conf ++++ b/src/conf/cards/CMI8338-SWIEC.conf +@@ -5,7 +5,7 @@ + + + +-CMI8338-SWIEC.pcm.front.0 { ++CMI8338-SWIEC.pcm.front.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -15,7 +15,7 @@ CMI8338-SWIEC.pcm.front.0 { + } + + # default with dmix/dsnoop +-CMI8338-SWIEC.pcm.default { ++CMI8338-SWIEC.pcm.!default { + @args [ CARD ] + @args.CARD { + type string +@@ -41,7 +41,7 @@ CMI8338-SWIEC.pcm.default { + + # 2nd DAC + # FIXME: we need a volume attenuator for rear channel. +-CMI8338-SWIEC.pcm.rear.0 { ++CMI8338-SWIEC.pcm.rear.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -54,7 +54,7 @@ CMI8338-SWIEC.pcm.rear.0 { + + + # for the old CM8738 with 2nd DAC for rear +-CMI8338-SWIEC.pcm.surround40.0 { ++CMI8338-SWIEC.pcm.surround40.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -91,7 +91,7 @@ CMI8338-SWIEC.pcm.surround40.0 { + + + +-CMI8338-SWIEC.pcm.iec958.0 { ++CMI8338-SWIEC.pcm.iec958.!0 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { + type string +diff --git a/src/conf/cards/CMI8338.conf b/src/conf/cards/CMI8338.conf +index 144fc9b0..0f92ad0b 100644 +--- a/src/conf/cards/CMI8338.conf ++++ b/src/conf/cards/CMI8338.conf +@@ -4,7 +4,7 @@ + + + +-CMI8338.pcm.front.0 { ++CMI8338.pcm.front.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -14,7 +14,7 @@ CMI8338.pcm.front.0 { + } + + # default with dmix/dsnoop +-CMI8338.pcm.default { ++CMI8338.pcm.!default { + @args [ CARD ] + @args.CARD { + type string +@@ -40,7 +40,7 @@ CMI8338.pcm.default { + + # 2nd DAC + # FIXME: we need a volume attenuator for rear channel. +-CMI8338.pcm.rear.0 { ++CMI8338.pcm.rear.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -53,7 +53,7 @@ CMI8338.pcm.rear.0 { + + + # for the old CM8738 with 2nd DAC for rear +-CMI8338.pcm.surround40.0 { ++CMI8338.pcm.surround40.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -90,7 +90,7 @@ CMI8338.pcm.surround40.0 { + + + +-CMI8338.pcm.iec958.0 { ++CMI8338.pcm.iec958.!0 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { + type string +diff --git a/src/conf/cards/CMI8738-MC6.conf b/src/conf/cards/CMI8738-MC6.conf +index edc67d44..2b1c7d05 100644 +--- a/src/conf/cards/CMI8738-MC6.conf ++++ b/src/conf/cards/CMI8738-MC6.conf +@@ -4,7 +4,7 @@ + + + +-CMI8738-MC6.pcm.front.0 { ++CMI8738-MC6.pcm.front.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -14,7 +14,7 @@ CMI8738-MC6.pcm.front.0 { + } + + # default with dmix/dsnoop +-CMI8738-MC6.pcm.default { ++CMI8738-MC6.pcm.!default { + @args [ CARD ] + @args.CARD { + type string +@@ -40,7 +40,7 @@ CMI8738-MC6.pcm.default { + + # 2nd DAC + # FIXME: we need a volume attenuator for rear channel. +-CMI8738-MC6.pcm.rear.0 { ++CMI8738-MC6.pcm.rear.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -52,7 +52,7 @@ CMI8738-MC6.pcm.rear.0 { + + + +-CMI8738-MC6.pcm.surround40.0 { ++CMI8738-MC6.pcm.surround40.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -82,7 +82,7 @@ CMI8738-MC6.pcm.surround40.0 { + + + +-CMI8738-MC6.pcm.surround51.0 { ++CMI8738-MC6.pcm.surround51.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -109,7 +109,7 @@ CMI8738-MC6.pcm.surround51.0 { + + + +-CMI8738-MC6.pcm.iec958.0 { ++CMI8738-MC6.pcm.iec958.!0 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { + type string +diff --git a/src/conf/cards/CMI8738-MC8.conf b/src/conf/cards/CMI8738-MC8.conf +index ddff7530..96cb3f10 100644 +--- a/src/conf/cards/CMI8738-MC8.conf ++++ b/src/conf/cards/CMI8738-MC8.conf +@@ -4,7 +4,7 @@ + + + +-CMI8738-MC8.pcm.front.0 { ++CMI8738-MC8.pcm.front.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -21,7 +21,7 @@ CMI8738-MC8.pcm.front.0 { + } + + # default with dmix+softvol & dsnoop +-CMI8738-MC8.pcm.default { ++CMI8738-MC8.pcm.!default { + @args [ CARD ] + @args.CARD { + type string +@@ -53,7 +53,7 @@ CMI8738-MC8.pcm.default { + + + # 2nd DAC +-CMI8738-MC8.pcm.rear.0 { ++CMI8738-MC8.pcm.rear.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -72,7 +72,7 @@ CMI8738-MC8.pcm.rear.0 { + + + +-CMI8738-MC8.pcm.surround40.0 { ++CMI8738-MC8.pcm.surround40.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -110,7 +110,7 @@ CMI8738-MC8.pcm.surround40.0 { + + + +-CMI8738-MC8.pcm.surround51.0 { ++CMI8738-MC8.pcm.surround51.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -144,7 +144,7 @@ CMI8738-MC8.pcm.surround51.0 { + + + +-CMI8738-MC8.pcm.surround71.0 { ++CMI8738-MC8.pcm.surround71.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -178,7 +178,7 @@ CMI8738-MC8.pcm.surround71.0 { + + + +-CMI8738-MC8.pcm.iec958.0 { ++CMI8738-MC8.pcm.iec958.!0 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { + type string +diff --git a/src/conf/cards/CMI8788.conf b/src/conf/cards/CMI8788.conf +index edcb0c9c..c4ad9f48 100644 +--- a/src/conf/cards/CMI8788.conf ++++ b/src/conf/cards/CMI8788.conf +@@ -4,7 +4,7 @@ + + + +-CMI8788.pcm.front.0 { ++CMI8788.pcm.front.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -14,7 +14,7 @@ CMI8788.pcm.front.0 { + } + + # default with dmix & dsnoop +-CMI8788.pcm.default { ++CMI8788.pcm.!default { + @args [ CARD ] + @args.CARD { + type string +@@ -38,7 +38,7 @@ CMI8788.pcm.default { + + + +-CMI8788.pcm.surround40.0 { ++CMI8788.pcm.surround40.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -53,7 +53,7 @@ CMI8788.pcm.surround40.0 { + + + +-CMI8788.pcm.surround51.0 { ++CMI8788.pcm.surround51.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -65,7 +65,7 @@ CMI8788.pcm.surround51.0 { + + + +-CMI8788.pcm.surround71.0 { ++CMI8788.pcm.surround71.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -77,7 +77,7 @@ CMI8788.pcm.surround71.0 { + + + +-CMI8788.pcm.iec958.0 { ++CMI8788.pcm.iec958.!0 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { + type string +-- +2.51.1 + + +From 1e29ff18400e9b219159f9d0cb9aaf4be3b82efa Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Wed, 10 Dec 2025 12:12:47 +0100 +Subject: [PATCH 15/43] conf: CS46xx: define pcm configuration block only one + time + +There may be multiple CS46xx soundcards in the system. Overwrite +the PCM configurations when loaded multiple times. + +Signed-off-by: Jaroslav Kysela +--- + src/conf/cards/CS46xx.conf | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +diff --git a/src/conf/cards/CS46xx.conf b/src/conf/cards/CS46xx.conf +index b71c30aa..478cbf3e 100644 +--- a/src/conf/cards/CS46xx.conf ++++ b/src/conf/cards/CS46xx.conf +@@ -4,7 +4,7 @@ + + + +-CS46xx.pcm.front.0 { ++CS46xx.pcm.front.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -15,7 +15,7 @@ CS46xx.pcm.front.0 { + + # default with plughw + # CS46xx supports multi-playback +-CS46xx.pcm.default { ++CS46xx.pcm.!default { + @args [ CARD ] + @args.CARD { + type string +@@ -39,7 +39,7 @@ CS46xx.pcm.default { + + + +-CS46xx.pcm.rear.0 { ++CS46xx.pcm.rear.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -66,7 +66,7 @@ CS46xx.pcm.rear.0 { + + + +-CS46xx.pcm.center_lfe.0 { ++CS46xx.pcm.center_lfe.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -78,7 +78,7 @@ CS46xx.pcm.center_lfe.0 { + + + +-CS46xx.pcm.surround40.0 { ++CS46xx.pcm.surround40.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -117,7 +117,7 @@ CS46xx.pcm.surround40.0 { + + + +-CS46xx.pcm.surround51.0 { ++CS46xx.pcm.surround51.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -164,7 +164,7 @@ CS46xx.pcm.surround51.0 { + + + +-CS46xx.pcm.iec958.0 { ++CS46xx.pcm.iec958.!0 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { + type string +-- +2.51.1 + + +From 0ba7c2716567875d207b71b61e1205b855c7fd9c Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Wed, 10 Dec 2025 12:12:47 +0100 +Subject: [PATCH 16/43] conf: Echo3G: define pcm configuration block only one + time + +There may be multiple Echo3G soundcards in the system. Overwrite +the PCM configurations when loaded multiple times. + +Signed-off-by: Jaroslav Kysela +--- + src/conf/cards/Echo_Echo3G.conf | 20 ++++++++++---------- + 1 file changed, 10 insertions(+), 10 deletions(-) + +diff --git a/src/conf/cards/Echo_Echo3G.conf b/src/conf/cards/Echo_Echo3G.conf +index 766f13f7..fb2a7b67 100644 +--- a/src/conf/cards/Echo_Echo3G.conf ++++ b/src/conf/cards/Echo_Echo3G.conf +@@ -3,7 +3,7 @@ + # + + +-Echo_Echo3G.pcm.front.0 { ++Echo_Echo3G.pcm.front.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -15,7 +15,7 @@ Echo_Echo3G.pcm.front.0 { + } + + +-Echo_Echo3G.pcm.rear.0 { ++Echo_Echo3G.pcm.rear.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -27,7 +27,7 @@ Echo_Echo3G.pcm.rear.0 { + } + + +-Echo_Echo3G.pcm.center_lfe.0 { ++Echo_Echo3G.pcm.center_lfe.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -39,7 +39,7 @@ Echo_Echo3G.pcm.center_lfe.0 { + } + + +-Echo_Echo3G.pcm.side.0 { ++Echo_Echo3G.pcm.side.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -51,7 +51,7 @@ Echo_Echo3G.pcm.side.0 { + } + + +-Echo_Echo3G.pcm.surround40.0 { ++Echo_Echo3G.pcm.surround40.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -86,7 +86,7 @@ Echo_Echo3G.pcm.surround40.0 { + } + + +-Echo_Echo3G.pcm.surround41.0 { ++Echo_Echo3G.pcm.surround41.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -131,7 +131,7 @@ Echo_Echo3G.pcm.surround41.0 { + } + + +-Echo_Echo3G.pcm.surround50.0 { ++Echo_Echo3G.pcm.surround50.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -176,7 +176,7 @@ Echo_Echo3G.pcm.surround50.0 { + } + + +-Echo_Echo3G.pcm.surround51.0 { ++Echo_Echo3G.pcm.surround51.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -222,7 +222,7 @@ Echo_Echo3G.pcm.surround51.0 { + } + + +-Echo_Echo3G.pcm.surround71.0 { ++Echo_Echo3G.pcm.surround71.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -279,7 +279,7 @@ Echo_Echo3G.pcm.surround71.0 { + } + + +-Echo_Echo3G.pcm.iec958.0 { ++Echo_Echo3G.pcm.iec958.!0 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { + type string +-- +2.51.1 + + +From 8c1005624495b61919080959088dc744d6d213ea Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Wed, 10 Dec 2025 16:08:42 +0100 +Subject: [PATCH 17/43] conf: Aureon51: define pcm configuration block only one + time + +There may be multiple Aureon51 soundcards in the system. Overwrite +the PCM configurations when loaded multiple times. + +Signed-off-by: Jaroslav Kysela +--- + src/conf/cards/Aureon51.conf | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/conf/cards/Aureon51.conf b/src/conf/cards/Aureon51.conf +index 9bf34661..db907f82 100644 +--- a/src/conf/cards/Aureon51.conf ++++ b/src/conf/cards/Aureon51.conf +@@ -76,7 +76,7 @@ Aureon51.pcm.side.!0 { + + + +-Aureon51.pcm.surround40.0 { ++Aureon51.pcm.surround40.!0 { + @args [ CARD ] + @args.CARD { + type string +-- +2.51.1 + + +From ed4884cbe179f42a10771584ebe9fff844b90d4f Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Wed, 10 Dec 2025 16:08:42 +0100 +Subject: [PATCH 18/43] conf: EMU10K1: define pcm configuration block only one + time + +There may be multiple EMU10K1 soundcards in the system. Overwrite +the PCM configurations when loaded multiple times. + +Signed-off-by: Jaroslav Kysela +--- + src/conf/cards/EMU10K1.conf | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/src/conf/cards/EMU10K1.conf b/src/conf/cards/EMU10K1.conf +index 430926c7..5ef12c03 100644 +--- a/src/conf/cards/EMU10K1.conf ++++ b/src/conf/cards/EMU10K1.conf +@@ -4,7 +4,7 @@ + + + +-EMU10K1.pcm.front.0 { ++EMU10K1.pcm.front.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -47,7 +47,7 @@ EMU10K1.pcm.front.0 { + + + +-EMU10K1.pcm.rear.0 { ++EMU10K1.pcm.rear.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -78,7 +78,7 @@ EMU10K1.pcm.rear.0 { + + + +-EMU10K1.pcm.center_lfe.0 { ++EMU10K1.pcm.center_lfe.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -143,7 +143,7 @@ EMU10K1.pcm.center_lfe.0 { + + + +-EMU10K1.pcm.surround40.0 { ++EMU10K1.pcm.surround40.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -182,7 +182,7 @@ EMU10K1.pcm.surround40.0 { + + + +-EMU10K1.pcm.surround51.0 { ++EMU10K1.pcm.surround51.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -229,7 +229,7 @@ EMU10K1.pcm.surround51.0 { + + + +-EMU10K1.pcm.iec958.0 { ++EMU10K1.pcm.iec958.!0 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { + type string +-- +2.51.1 + + +From dba724706a6eec70e52e31595b3ff1ec055bf50c Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Wed, 10 Dec 2025 16:17:45 +0100 +Subject: [PATCH 19/43] conf: EMU10K1X: define pcm configuration block only one + time + +There may be multiple EMU10K1X soundcards in the system. Overwrite +the PCM configurations when loaded multiple times. + +Signed-off-by: Jaroslav Kysela +--- + src/conf/cards/EMU10K1X.conf | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +diff --git a/src/conf/cards/EMU10K1X.conf b/src/conf/cards/EMU10K1X.conf +index f7428636..334f897d 100644 +--- a/src/conf/cards/EMU10K1X.conf ++++ b/src/conf/cards/EMU10K1X.conf +@@ -3,7 +3,7 @@ + # + + # default with dmix & dsnoop +-EMU10K1X.pcm.default { ++EMU10K1X.pcm.!default { + @args [ CARD ] + @args.CARD { + type string +@@ -27,7 +27,7 @@ EMU10K1X.pcm.default { + + + +-EMU10K1X.pcm.front.0 { ++EMU10K1X.pcm.front.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -38,7 +38,7 @@ EMU10K1X.pcm.front.0 { + + + +-EMU10K1X.pcm.rear.0 { ++EMU10K1X.pcm.rear.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -50,7 +50,7 @@ EMU10K1X.pcm.rear.0 { + + + +-EMU10K1X.pcm.center_lfe.0 { ++EMU10K1X.pcm.center_lfe.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -62,7 +62,7 @@ EMU10K1X.pcm.center_lfe.0 { + + + +-EMU10K1X.pcm.surround40.0 { ++EMU10K1X.pcm.surround40.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -101,7 +101,7 @@ EMU10K1X.pcm.surround40.0 { + + + +-EMU10K1X.pcm.surround51.0 { ++EMU10K1X.pcm.surround51.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -148,7 +148,7 @@ EMU10K1X.pcm.surround51.0 { + + + +-EMU10K1X.pcm.iec958.0 { ++EMU10K1X.pcm.iec958.!0 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { + type string +-- +2.51.1 + + +From 7cf26f603823cccd3e89eb57f459642c890b79af Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Wed, 10 Dec 2025 16:17:45 +0100 +Subject: [PATCH 20/43] conf: ENS137[01]: define pcm configuration block only + one time + +There may be multiple ENS137[01] soundcards in the system. Overwrite +the PCM configurations when loaded multiple times. + +Signed-off-by: Jaroslav Kysela +--- + src/conf/cards/ENS1370.conf | 8 ++++---- + src/conf/cards/ENS1371.conf | 10 +++++----- + 2 files changed, 9 insertions(+), 9 deletions(-) + +diff --git a/src/conf/cards/ENS1370.conf b/src/conf/cards/ENS1370.conf +index 32e4782e..c65e224f 100644 +--- a/src/conf/cards/ENS1370.conf ++++ b/src/conf/cards/ENS1370.conf +@@ -4,7 +4,7 @@ + + + +-ENS1370.pcm.front.0 { ++ENS1370.pcm.front.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -15,7 +15,7 @@ ENS1370.pcm.front.0 { + } + + # default with dmix/dsnoop +-ENS1370.pcm.default { ++ENS1370.pcm.!default { + @args [ CARD ] + @args.CARD { + type string +@@ -39,7 +39,7 @@ ENS1370.pcm.default { + + + +-ENS1370.pcm.rear.0 { ++ENS1370.pcm.rear.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -71,7 +71,7 @@ ENS1370.pcm.rear.0 { + + + +-ENS1370.pcm.surround40.0 { ++ENS1370.pcm.surround40.!0 { + @args [ CARD ] + @args.CARD { + type string +diff --git a/src/conf/cards/ENS1371.conf b/src/conf/cards/ENS1371.conf +index a6df4251..560fda9f 100644 +--- a/src/conf/cards/ENS1371.conf ++++ b/src/conf/cards/ENS1371.conf +@@ -4,7 +4,7 @@ + + + +-ENS1371.pcm.front.0 { ++ENS1371.pcm.front.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -14,7 +14,7 @@ ENS1371.pcm.front.0 { + } + + # default with dmix/dsnoop +-ENS1371.pcm.default { ++ENS1371.pcm.!default { + @args [ CARD ] + @args.CARD { + type string +@@ -38,7 +38,7 @@ ENS1371.pcm.default { + + + +-ENS1371.pcm.rear.0 { ++ENS1371.pcm.rear.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -65,7 +65,7 @@ ENS1371.pcm.rear.0 { + + + +-ENS1371.pcm.surround40.0 { ++ENS1371.pcm.surround40.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -97,7 +97,7 @@ ENS1371.pcm.surround40.0 { + + + +-ENS1371.pcm.iec958.0 { ++ENS1371.pcm.iec958.!0 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { + type string +-- +2.51.1 + + +From 001a2f3809865d071b53e802d4fbc89bb37a2fe1 Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Wed, 10 Dec 2025 16:17:45 +0100 +Subject: [PATCH 21/43] conf: ES1968: define pcm configuration block only one + time + +There may be multiple ES1968 soundcards in the system. Overwrite +the PCM configurations when loaded multiple times. + +Signed-off-by: Jaroslav Kysela +--- + src/conf/cards/ES1968.conf | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/conf/cards/ES1968.conf b/src/conf/cards/ES1968.conf +index a6ee1192..296baa13 100644 +--- a/src/conf/cards/ES1968.conf ++++ b/src/conf/cards/ES1968.conf +@@ -2,7 +2,7 @@ + + + +-ES1968.pcm.front.0 { ++ES1968.pcm.front.!0 { + @args [ CARD ] + @args.CARD { + type string +-- +2.51.1 + + +From 2d5aa02738faf79895fa7457182810bee2ce7b90 Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Wed, 10 Dec 2025 16:17:46 +0100 +Subject: [PATCH 22/43] conf: FireWave: define pcm configuration block only one + time + +There may be multiple FireWave soundcards in the system. Overwrite +the PCM configurations when loaded multiple times. + +Signed-off-by: Jaroslav Kysela +--- + src/conf/cards/FireWave.conf | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/src/conf/cards/FireWave.conf b/src/conf/cards/FireWave.conf +index fcfc83cc..786169f2 100644 +--- a/src/conf/cards/FireWave.conf ++++ b/src/conf/cards/FireWave.conf +@@ -2,7 +2,7 @@ + # Configuration for the Griffin FireWave Surround + # + +-FireWave.pcm.default { ++FireWave.pcm.!default { + @args [ CARD ] + @args.CARD { + type string +@@ -16,7 +16,7 @@ FireWave.pcm.default { + + + +-FireWave.pcm.front.0 { ++FireWave.pcm.front.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -30,7 +30,7 @@ FireWave.pcm.front.0 { + + + +-FireWave.pcm.surround51.0 { ++FireWave.pcm.surround51.!0 { + @args [ CARD ] + @args.CARD { + type string +-- +2.51.1 + + +From 9f46e1a5a48f863e38794aa5b7c350d291078924 Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Wed, 10 Dec 2025 16:17:46 +0100 +Subject: [PATCH 23/43] conf: FM801: define pcm configuration block only one + time + +There may be multiple FM801 soundcards in the system. Overwrite +the PCM configurations when loaded multiple times. + +Signed-off-by: Jaroslav Kysela +--- + src/conf/cards/FM801.conf | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/src/conf/cards/FM801.conf b/src/conf/cards/FM801.conf +index 0ddf799c..14cfdbe8 100644 +--- a/src/conf/cards/FM801.conf ++++ b/src/conf/cards/FM801.conf +@@ -4,7 +4,7 @@ + + + +-FM801.pcm.front.0 { ++FM801.pcm.front.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -14,7 +14,7 @@ FM801.pcm.front.0 { + } + + # default with dmix/dsnoop +-FM801.pcm.default { ++FM801.pcm.!default { + @args [ CARD ] + @args.CARD { + type string +@@ -49,7 +49,7 @@ FM801.pcm.surround51.0 "cards.FM801.pcm.front.0" + + + +-FM801.pcm.iec958.0 { ++FM801.pcm.iec958.!0 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { + type string +-- +2.51.1 + + +From ea939799299ff88c254344c7a89e86ffa159e5a7 Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Wed, 10 Dec 2025 16:17:46 +0100 +Subject: [PATCH 24/43] conf: FWSpeakers: define pcm configuration block only + one time + +There may be multiple FWSpeakers soundcards in the system. Overwrite +the PCM configurations when loaded multiple times. + +Signed-off-by: Jaroslav Kysela +--- + src/conf/cards/FWSpeakers.conf | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/conf/cards/FWSpeakers.conf b/src/conf/cards/FWSpeakers.conf +index cd6fa605..96ab5cb9 100644 +--- a/src/conf/cards/FWSpeakers.conf ++++ b/src/conf/cards/FWSpeakers.conf +@@ -2,7 +2,7 @@ + # Configuration for the LaCie Firewire speakers + # + +-FWSpeakers.pcm.default { ++FWSpeakers.pcm.!default { + @args [ CARD ] + @args.CARD { + type string +@@ -16,7 +16,7 @@ FWSpeakers.pcm.default { + + + +-FWSpeakers.pcm.front.0 { ++FWSpeakers.pcm.front.!0 { + @args [ CARD ] + @args.CARD { + type string +-- +2.51.1 + + +From a87570df7247d979eb5106ca549fa776e4c51ab3 Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Wed, 10 Dec 2025 16:17:47 +0100 +Subject: [PATCH 25/43] conf: GUS: define pcm configuration block only one time + +There may be multiple GUS soundcards in the system. Overwrite +the PCM configurations when loaded multiple times. + +Signed-off-by: Jaroslav Kysela +--- + src/conf/cards/GUS.conf | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/conf/cards/GUS.conf b/src/conf/cards/GUS.conf +index d744c548..a1ccd0e9 100644 +--- a/src/conf/cards/GUS.conf ++++ b/src/conf/cards/GUS.conf +@@ -4,7 +4,7 @@ + + + +-GUS.pcm.front.0 { ++GUS.pcm.front.!0 { + @args [ CARD ] + @args.CARD { + type string +-- +2.51.1 + + +From dded72a687e8e8210b276ab13f4e26b63bfa782b Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Wed, 10 Dec 2025 16:17:47 +0100 +Subject: [PATCH 26/43] conf: HdmiLpeAudio: define pcm configuration block only + one time + +There may be multiple HdmiLpeAudio soundcards in the system. Overwrite +the PCM configurations when loaded multiple times. + +Signed-off-by: Jaroslav Kysela +--- + src/conf/cards/HdmiLpeAudio.conf | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/src/conf/cards/HdmiLpeAudio.conf b/src/conf/cards/HdmiLpeAudio.conf +index a9104f43..799946a2 100644 +--- a/src/conf/cards/HdmiLpeAudio.conf ++++ b/src/conf/cards/HdmiLpeAudio.conf +@@ -2,7 +2,7 @@ + # Configuration for the Intel HDMI/DP LPE audio + # + +-HdmiLpeAudio.pcm.hdmi.0 { ++HdmiLpeAudio.pcm.hdmi.!0 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { + type string +@@ -39,7 +39,7 @@ HdmiLpeAudio.pcm.hdmi.0 { + } + } + +-HdmiLpeAudio.pcm.hdmi.1 { ++HdmiLpeAudio.pcm.hdmi.!1 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { + type string +@@ -77,7 +77,7 @@ HdmiLpeAudio.pcm.hdmi.1 { + } + } + +-HdmiLpeAudio.pcm.hdmi.2 { ++HdmiLpeAudio.pcm.hdmi.!2 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { + type string +-- +2.51.1 + + +From 1f52b57ff8f023b396b459407e60d8498c69f6e7 Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Wed, 10 Dec 2025 16:17:57 +0100 +Subject: [PATCH 27/43] conf: ICE17[12][24]: define pcm configuration block + only one time + +There may be multiple ICE17[12][24] soundcards in the system. Overwrite +the PCM configurations when loaded multiple times. + +Signed-off-by: Jaroslav Kysela +--- + src/conf/cards/ICE1712.conf | 12 ++++++------ + src/conf/cards/ICE1724.conf | 18 +++++++++--------- + 2 files changed, 15 insertions(+), 15 deletions(-) + +diff --git a/src/conf/cards/ICE1712.conf b/src/conf/cards/ICE1712.conf +index db62684e..190d2c59 100644 +--- a/src/conf/cards/ICE1712.conf ++++ b/src/conf/cards/ICE1712.conf +@@ -3,7 +3,7 @@ + # + + # default with dmix & dsnoop +-ICE1712.pcm.default { ++ICE1712.pcm.!default { + @args [ CARD ] + @args.CARD { + type string +@@ -27,7 +27,7 @@ ICE1712.pcm.default { + + + +-ICE1712.pcm.front.0 { ++ICE1712.pcm.front.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -57,7 +57,7 @@ ICE1712.pcm.front.0 { + + + +-ICE1712.pcm.surround40.0 { ++ICE1712.pcm.surround40.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -80,7 +80,7 @@ ICE1712.pcm.surround40.0 { + + + +-ICE1712.pcm.surround51.0 { ++ICE1712.pcm.surround51.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -99,7 +99,7 @@ ICE1712.pcm.surround51.0 { + slave.channels 10 + } + +-ICE1712.pcm.surround71.0 { ++ICE1712.pcm.surround71.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -122,7 +122,7 @@ ICE1712.pcm.surround71.0 { + + + +-ICE1712.pcm.iec958.0 { ++ICE1712.pcm.iec958.!0 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { + type string +diff --git a/src/conf/cards/ICE1724.conf b/src/conf/cards/ICE1724.conf +index 61cac013..16045dc4 100644 +--- a/src/conf/cards/ICE1724.conf ++++ b/src/conf/cards/ICE1724.conf +@@ -3,7 +3,7 @@ + # + + # default with dmix & dsnoop +-ICE1724.pcm.default { ++ICE1724.pcm.!default { + @args [ CARD ] + @args.CARD { + type string +@@ -27,7 +27,7 @@ ICE1724.pcm.default { + + + +-ICE1724.pcm.front.0 { ++ICE1724.pcm.front.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -38,7 +38,7 @@ ICE1724.pcm.front.0 { + + + +-ICE1724.pcm.rear.0 { ++ICE1724.pcm.rear.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -51,7 +51,7 @@ ICE1724.pcm.rear.0 { + + + +-ICE1724.pcm.center_lfe.0 { ++ICE1724.pcm.center_lfe.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -63,7 +63,7 @@ ICE1724.pcm.center_lfe.0 { + + + +-ICE1724.pcm.side.0 { ++ICE1724.pcm.side.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -76,7 +76,7 @@ ICE1724.pcm.side.0 { + + + +-ICE1724.pcm.surround40.0 { ++ICE1724.pcm.surround40.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -100,7 +100,7 @@ ICE1724.pcm.surround40.0 { + + + +-ICE1724.pcm.surround51.0 { ++ICE1724.pcm.surround51.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -123,7 +123,7 @@ ICE1724.pcm.surround51.0 { + + + +-ICE1724.pcm.surround71.0 { ++ICE1724.pcm.surround71.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -148,7 +148,7 @@ ICE1724.pcm.surround71.0 { + + + +-ICE1724.pcm.iec958.0 { ++ICE1724.pcm.iec958.!0 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { + type string +-- +2.51.1 + + +From 99f1987a1e864523a7a423f1840ca6a76045d619 Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Wed, 10 Dec 2025 16:17:57 +0100 +Subject: [PATCH 28/43] conf: ICH,ICH4,ICH-MODEM: define pcm configuration + block only one time + +There may be multiple ICH soundcards in the system. Overwrite +the PCM configurations when loaded multiple times. + +Signed-off-by: Jaroslav Kysela +--- + src/conf/cards/ICH-MODEM.conf | 2 +- + src/conf/cards/ICH.conf | 10 +++++----- + src/conf/cards/ICH4.conf | 10 +++++----- + 3 files changed, 11 insertions(+), 11 deletions(-) + +diff --git a/src/conf/cards/ICH-MODEM.conf b/src/conf/cards/ICH-MODEM.conf +index b96b5aaf..855f3a96 100644 +--- a/src/conf/cards/ICH-MODEM.conf ++++ b/src/conf/cards/ICH-MODEM.conf +@@ -4,7 +4,7 @@ + + + +-ICH-MODEM.pcm.modem.0 { ++ICH-MODEM.pcm.modem.!0 { + @args [ CARD ] + @args.CARD { + type string +diff --git a/src/conf/cards/ICH.conf b/src/conf/cards/ICH.conf +index 6fc9a5a2..c35c8d02 100644 +--- a/src/conf/cards/ICH.conf ++++ b/src/conf/cards/ICH.conf +@@ -4,7 +4,7 @@ + + + +-ICH.pcm.front.0 { ++ICH.pcm.front.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -21,7 +21,7 @@ ICH.pcm.front.0 { + } + + # default with dmix+softvol & dsnoop +-ICH.pcm.default { ++ICH.pcm.!default { + @args [ CARD ] + @args.CARD { + type string +@@ -52,7 +52,7 @@ ICH.pcm.default { + + + +-ICH.pcm.surround40.0 { ++ICH.pcm.surround40.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -103,7 +103,7 @@ ICH.pcm.surround40.0 { + + + +-ICH.pcm.surround51.0 { ++ICH.pcm.surround51.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -174,7 +174,7 @@ ICH.pcm.surround51.0 { + + + +-ICH.pcm.iec958.0 { ++ICH.pcm.iec958.!0 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { + type string +diff --git a/src/conf/cards/ICH4.conf b/src/conf/cards/ICH4.conf +index 64ec883d..11c85a6e 100644 +--- a/src/conf/cards/ICH4.conf ++++ b/src/conf/cards/ICH4.conf +@@ -4,7 +4,7 @@ + + + +-ICH4.pcm.front.0 { ++ICH4.pcm.front.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -21,7 +21,7 @@ ICH4.pcm.front.0 { + } + + # default with dmix+softvol & dsnoop +-ICH4.pcm.default { ++ICH4.pcm.!default { + @args [ CARD ] + @args.CARD { + type string +@@ -52,7 +52,7 @@ ICH4.pcm.default { + + + +-ICH4.pcm.surround40.0 { ++ICH4.pcm.surround40.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -103,7 +103,7 @@ ICH4.pcm.surround40.0 { + + + +-ICH4.pcm.surround51.0 { ++ICH4.pcm.surround51.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -164,7 +164,7 @@ ICH4.pcm.surround51.0 { + + + +-ICH4.pcm.iec958.0 { ++ICH4.pcm.iec958.!0 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { + type string +-- +2.51.1 + + +From ff4fb7f8c98157010c44f7335a32a09e9fc085d6 Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Wed, 10 Dec 2025 16:17:57 +0100 +Subject: [PATCH 29/43] conf: Loopback: define pcm configuration block only one + time + +There may be multiple Loopback soundcards in the system. Overwrite +the PCM configurations when loaded multiple times. + +Signed-off-by: Jaroslav Kysela +--- + src/conf/cards/Loopback.conf | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/conf/cards/Loopback.conf b/src/conf/cards/Loopback.conf +index 1ae6d453..21c8429c 100644 +--- a/src/conf/cards/Loopback.conf ++++ b/src/conf/cards/Loopback.conf +@@ -4,7 +4,7 @@ + + + +-Loopback.pcm.front.0 { ++Loopback.pcm.front.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -21,7 +21,7 @@ Loopback.pcm.front.0 { + } + + # default with dmix+softvol & dsnoop +-Loopback.pcm.default { ++Loopback.pcm.!default { + @args [ CARD ] + @args.CARD { + type string +-- +2.51.1 + + +From de72d657281c043c8d48d23cb8da9b1c4c5f31de Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Wed, 10 Dec 2025 16:17:57 +0100 +Subject: [PATCH 30/43] conf: Maestro3: define pcm configuration block only one + time + +There may be multiple Maestro3 soundcards in the system. Overwrite +the PCM configurations when loaded multiple times. + +Signed-off-by: Jaroslav Kysela +--- + src/conf/cards/Maestro3.conf | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/conf/cards/Maestro3.conf b/src/conf/cards/Maestro3.conf +index 94323227..a8d89a48 100644 +--- a/src/conf/cards/Maestro3.conf ++++ b/src/conf/cards/Maestro3.conf +@@ -2,7 +2,7 @@ + + + +-Maestro3.pcm.front.0 { ++Maestro3.pcm.front.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -12,7 +12,7 @@ Maestro3.pcm.front.0 { + } + + # default with dmix/dsnoop +-Maestro3.pcm.default { ++Maestro3.pcm.!default { + @args [ CARD ] + @args.CARD { + type string +-- +2.51.1 + + +From ebb5ab7d846e2702640a7d754127083412b15816 Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Wed, 10 Dec 2025 16:18:06 +0100 +Subject: [PATCH 31/43] conf: NFORCE: define pcm configuration block only one + time + +There may be multiple NFORCE soundcards in the system. Overwrite +the PCM configurations when loaded multiple times. + +Signed-off-by: Jaroslav Kysela +--- + src/conf/cards/NFORCE.conf | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/src/conf/cards/NFORCE.conf b/src/conf/cards/NFORCE.conf +index 64d15479..088cd8ce 100644 +--- a/src/conf/cards/NFORCE.conf ++++ b/src/conf/cards/NFORCE.conf +@@ -4,7 +4,7 @@ + + + +-NFORCE.pcm.front.0 { ++NFORCE.pcm.front.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -21,7 +21,7 @@ NFORCE.pcm.front.0 { + } + + # default with dmix+softvol & dsnoop +-NFORCE.pcm.default { ++NFORCE.pcm.!default { + @args [ CARD ] + @args.CARD { + type string +@@ -52,7 +52,7 @@ NFORCE.pcm.default { + + + +-NFORCE.pcm.surround40.0 { ++NFORCE.pcm.surround40.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -103,7 +103,7 @@ NFORCE.pcm.surround40.0 { + + + +-NFORCE.pcm.surround51.0 { ++NFORCE.pcm.surround51.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -174,7 +174,7 @@ NFORCE.pcm.surround51.0 { + + + +-NFORCE.pcm.surround71.0 { ++NFORCE.pcm.surround71.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -247,7 +247,7 @@ NFORCE.pcm.surround71.0 { + + + +-NFORCE.pcm.iec958.0 { ++NFORCE.pcm.iec958.!0 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { + type string +-- +2.51.1 + + +From 3d636ff5309e3672c0acc784c9539af4396d2dfb Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Wed, 10 Dec 2025 16:18:06 +0100 +Subject: [PATCH 32/43] conf: PC-Speaker: define pcm configuration block only + one time + +There may be multiple PC-Speaker soundcards in the system. Overwrite +the PCM configurations when loaded multiple times. + +Signed-off-by: Jaroslav Kysela +--- + src/conf/cards/PC-Speaker.conf | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/conf/cards/PC-Speaker.conf b/src/conf/cards/PC-Speaker.conf +index c82654d8..8a40a139 100644 +--- a/src/conf/cards/PC-Speaker.conf ++++ b/src/conf/cards/PC-Speaker.conf +@@ -4,7 +4,7 @@ + + + +-PC-Speaker.pcm.front.0 { ++PC-Speaker.pcm.front.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -23,7 +23,7 @@ PC-Speaker.pcm.front.0 { + } + + # default with dmix & null +-PC-Speaker.pcm.default { ++PC-Speaker.pcm.!default { + @args [ CARD ] + @args.CARD { + type string +-- +2.51.1 + + +From a3028a492a641d5077640294d1fb655c4b4aa84a Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Wed, 10 Dec 2025 16:18:06 +0100 +Subject: [PATCH 33/43] conf: PMac,PMacToonie: define pcm configuration block + only one time + +There may be multiple PMac soundcards in the system. Overwrite +the PCM configurations when loaded multiple times. + +Signed-off-by: Jaroslav Kysela +--- + src/conf/cards/PMac.conf | 4 ++-- + src/conf/cards/PMacToonie.conf | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/src/conf/cards/PMac.conf b/src/conf/cards/PMac.conf +index d1fdb17b..00f3bc89 100644 +--- a/src/conf/cards/PMac.conf ++++ b/src/conf/cards/PMac.conf +@@ -4,7 +4,7 @@ + + + +-PMac.pcm.front.0 { ++PMac.pcm.front.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -14,7 +14,7 @@ PMac.pcm.front.0 { + } + + # default with dmix/dsnoop +-PMac.pcm.default { ++PMac.pcm.!default { + @args [ CARD ] + @args.CARD { + type string +diff --git a/src/conf/cards/PMacToonie.conf b/src/conf/cards/PMacToonie.conf +index 1e0eb59c..aff1ea65 100644 +--- a/src/conf/cards/PMacToonie.conf ++++ b/src/conf/cards/PMacToonie.conf +@@ -4,7 +4,7 @@ + + + +-PMacToonie.pcm.front.0 { ++PMacToonie.pcm.front.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -21,7 +21,7 @@ PMacToonie.pcm.front.0 { + } + + # default with dmix+softvol & dsnoop +-PMacToonie.pcm.default { ++PMacToonie.pcm.!default { + @args [ CARD ] + @args.CARD { + type string +-- +2.51.1 + + +From 8340b3c6b31a4e4c02f69bf36f3958d390c724b9 Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Wed, 10 Dec 2025 16:18:06 +0100 +Subject: [PATCH 34/43] conf: PS3: define pcm configuration block only one time + +There may be multiple PS3 soundcards in the system. Overwrite +the PCM configurations when loaded multiple times. + +Signed-off-by: Jaroslav Kysela +--- + src/conf/cards/PS3.conf | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/src/conf/cards/PS3.conf b/src/conf/cards/PS3.conf +index b642f0dc..486d790c 100644 +--- a/src/conf/cards/PS3.conf ++++ b/src/conf/cards/PS3.conf +@@ -4,7 +4,7 @@ + + + +-PS3.pcm.front.0 { ++PS3.pcm.front.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -22,7 +22,7 @@ PS3.pcm.front.0 { + } + + # default with dmix+softvol +-PS3.pcm.default { ++PS3.pcm.!default { + @args [ CARD ] + @args.CARD { + type string +@@ -47,7 +47,7 @@ PS3.pcm.default { + + + +-PS3.pcm.iec958.0 { ++PS3.pcm.iec958.!0 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { + type string +-- +2.51.1 + + +From f03528daf2ee177d2003b4d40824506f3a3558f4 Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Wed, 10 Dec 2025 16:18:15 +0100 +Subject: [PATCH 35/43] conf: RME96[35][26]: define pcm configuration block + only one time + +There may be multiple RME96[35][26] soundcards in the system. Overwrite +the PCM configurations when loaded multiple times. + +Signed-off-by: Jaroslav Kysela +--- + src/conf/cards/RME9636.conf | 4 ++-- + src/conf/cards/RME9652.conf | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/src/conf/cards/RME9636.conf b/src/conf/cards/RME9636.conf +index e8dc5fad..17b3a1ab 100644 +--- a/src/conf/cards/RME9636.conf ++++ b/src/conf/cards/RME9636.conf +@@ -4,7 +4,7 @@ + + + +-RME9636.pcm.front.0 { ++RME9636.pcm.front.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -17,7 +17,7 @@ RME9636.pcm.front.0 { + + + +-RME9636.pcm.iec958.0 { ++RME9636.pcm.iec958.!0 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { + type string +diff --git a/src/conf/cards/RME9652.conf b/src/conf/cards/RME9652.conf +index 1147d810..a11e42b2 100644 +--- a/src/conf/cards/RME9652.conf ++++ b/src/conf/cards/RME9652.conf +@@ -4,7 +4,7 @@ + + + +-RME9652.pcm.front.0 { ++RME9652.pcm.front.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -17,7 +17,7 @@ RME9652.pcm.front.0 { + + + +-RME9652.pcm.iec958.0 { ++RME9652.pcm.iec958.!0 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { + type string +-- +2.51.1 + + +From 1cd87775c5d9d46e418dc67a4d9c93fe5104ee3f Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Wed, 10 Dec 2025 16:18:15 +0100 +Subject: [PATCH 36/43] conf: SB-XFi: define pcm configuration block only one + time + +There may be multiple SB-XFi soundcards in the system. Overwrite +the PCM configurations when loaded multiple times. + +Signed-off-by: Jaroslav Kysela +--- + src/conf/cards/SB-XFi.conf | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/src/conf/cards/SB-XFi.conf b/src/conf/cards/SB-XFi.conf +index eb2218bf..9ce9c8ac 100644 +--- a/src/conf/cards/SB-XFi.conf ++++ b/src/conf/cards/SB-XFi.conf +@@ -4,7 +4,7 @@ + + + +-SB-XFi.pcm.front.0 { ++SB-XFi.pcm.front.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -16,7 +16,7 @@ SB-XFi.pcm.front.0 { + + + +-SB-XFi.pcm.rear.0 { ++SB-XFi.pcm.rear.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -29,7 +29,7 @@ SB-XFi.pcm.rear.0 { + + + +-SB-XFi.pcm.center_lfe.0 { ++SB-XFi.pcm.center_lfe.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -42,7 +42,7 @@ SB-XFi.pcm.center_lfe.0 { + + + +-SB-XFi.pcm.side.0 { ++SB-XFi.pcm.side.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -66,7 +66,7 @@ SB-XFi.pcm.surround71.0 cards.SB-XFi.pcm.front.0 + + + +-SB-XFi.pcm.iec958.0 { ++SB-XFi.pcm.iec958.!0 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { + type string +-- +2.51.1 + + +From 51d75e5f072698d6ec03957cf87b735117f05ab4 Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Wed, 10 Dec 2025 16:18:15 +0100 +Subject: [PATCH 37/43] conf: SI7018: define pcm configuration block only one + time + +There may be multiple SI7018 soundcards in the system. Overwrite +the PCM configurations when loaded multiple times. + +Signed-off-by: Jaroslav Kysela +--- + src/conf/cards/SI7018.conf | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/src/conf/cards/SI7018.conf b/src/conf/cards/SI7018.conf +index 02b8fc87..33d19085 100644 +--- a/src/conf/cards/SI7018.conf ++++ b/src/conf/cards/SI7018.conf +@@ -6,7 +6,7 @@ + + + +-SI7018.pcm.front.0 { ++SI7018.pcm.front.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -18,7 +18,7 @@ SI7018.pcm.front.0 { + + + +-SI7018.pcm.rear.0 { ++SI7018.pcm.rear.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -44,7 +44,7 @@ SI7018.pcm.rear.0 { + + + +-SI7018.pcm.surround40.0 { ++SI7018.pcm.surround40.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -83,7 +83,7 @@ SI7018.pcm.surround40.0 { + + + +-SI7018.pcm.surround51.0 { ++SI7018.pcm.surround51.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -130,7 +130,7 @@ SI7018.pcm.surround51.0 { + + + +-SI7018.pcm.iec958.0 { ++SI7018.pcm.iec958.!0 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { + type string +-- +2.51.1 + + +From 4c74f3a568583744dddab01e4cce5a2e8f207067 Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Wed, 10 Dec 2025 16:18:15 +0100 +Subject: [PATCH 38/43] conf: TRID4DWAVENX: define pcm configuration block only + one time + +There may be multiple TRID4DWAVENX soundcards in the system. Overwrite +the PCM configurations when loaded multiple times. + +Signed-off-by: Jaroslav Kysela +--- + src/conf/cards/TRID4DWAVENX.conf | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/src/conf/cards/TRID4DWAVENX.conf b/src/conf/cards/TRID4DWAVENX.conf +index 717b1408..5001297e 100644 +--- a/src/conf/cards/TRID4DWAVENX.conf ++++ b/src/conf/cards/TRID4DWAVENX.conf +@@ -4,7 +4,7 @@ + + + +-TRID4DWAVENX.pcm.front.0 { ++TRID4DWAVENX.pcm.front.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -16,7 +16,7 @@ TRID4DWAVENX.pcm.front.0 { + + + +-TRID4DWAVENX.pcm.rear.0 { ++TRID4DWAVENX.pcm.rear.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -56,7 +56,7 @@ TRID4DWAVENX.pcm.rear.0 { + + + +-TRID4DWAVENX.pcm.surround40.0 { ++TRID4DWAVENX.pcm.surround40.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -92,7 +92,7 @@ TRID4DWAVENX.pcm.surround40.0 { + + + +-TRID4DWAVENX.pcm.iec958.0 { ++TRID4DWAVENX.pcm.iec958.!0 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { + type string +-- +2.51.1 + + +From d6b9d7e0bef5ca8a019881b06de7183528ec5bd5 Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Wed, 10 Dec 2025 16:18:22 +0100 +Subject: [PATCH 39/43] conf: VIA686A,VIA82xx: define pcm configuration block + only one time + +There may be multiple VIA soundcards in the system. Overwrite +the PCM configurations when loaded multiple times. + +Signed-off-by: Jaroslav Kysela +--- + src/conf/cards/VIA686A.conf | 6 +++--- + src/conf/cards/VIA8233.conf | 10 +++++----- + src/conf/cards/VIA8233A.conf | 10 +++++----- + src/conf/cards/VIA8237.conf | 10 +++++----- + 4 files changed, 18 insertions(+), 18 deletions(-) + +diff --git a/src/conf/cards/VIA686A.conf b/src/conf/cards/VIA686A.conf +index e4a06f23..c53dd71b 100644 +--- a/src/conf/cards/VIA686A.conf ++++ b/src/conf/cards/VIA686A.conf +@@ -7,7 +7,7 @@ + + + +-VIA686A.pcm.front.0 { ++VIA686A.pcm.front.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -17,7 +17,7 @@ VIA686A.pcm.front.0 { + } + + # default with dmix/dsnoop +-VIA686A.pcm.default { ++VIA686A.pcm.!default { + @args [ CARD ] + @args.CARD { + type string +@@ -41,7 +41,7 @@ VIA686A.pcm.default { + + + +-VIA686A.pcm.iec958.0 { ++VIA686A.pcm.iec958.!0 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { + type string +diff --git a/src/conf/cards/VIA8233.conf b/src/conf/cards/VIA8233.conf +index 9ad321f7..3c25a11b 100644 +--- a/src/conf/cards/VIA8233.conf ++++ b/src/conf/cards/VIA8233.conf +@@ -4,7 +4,7 @@ + + + +-VIA8233.pcm.front.0 { ++VIA8233.pcm.front.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -15,7 +15,7 @@ VIA8233.pcm.front.0 { + + # default with softvol/dsnoop + # VIA8233 supports multi-playback +-VIA8233.pcm.default { ++VIA8233.pcm.!default { + @args [ CARD ] + @args.CARD { + type string +@@ -46,7 +46,7 @@ VIA8233.pcm.default { + + + +-VIA8233.pcm.surround40.0 { ++VIA8233.pcm.surround40.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -91,7 +91,7 @@ VIA8233.pcm.surround40.0 { + + + +-VIA8233.pcm.surround51.0 { ++VIA8233.pcm.surround51.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -146,7 +146,7 @@ VIA8233.pcm.surround51.0 { + + + +-VIA8233.pcm.iec958.0 { ++VIA8233.pcm.iec958.!0 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { + type string +diff --git a/src/conf/cards/VIA8233A.conf b/src/conf/cards/VIA8233A.conf +index 679fccf3..c9e56e20 100644 +--- a/src/conf/cards/VIA8233A.conf ++++ b/src/conf/cards/VIA8233A.conf +@@ -4,7 +4,7 @@ + + + +-VIA8233A.pcm.front.0 { ++VIA8233A.pcm.front.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -14,7 +14,7 @@ VIA8233A.pcm.front.0 { + } + + # default with dmix/dsnoop +-VIA8233A.pcm.default { ++VIA8233A.pcm.!default { + @args [ CARD ] + @args.CARD { + type string +@@ -38,7 +38,7 @@ VIA8233A.pcm.default { + + + +-VIA8233A.pcm.surround40.0 { ++VIA8233A.pcm.surround40.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -89,7 +89,7 @@ VIA8233A.pcm.surround40.0 { + + + +-VIA8233A.pcm.surround51.0 { ++VIA8233A.pcm.surround51.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -150,7 +150,7 @@ VIA8233A.pcm.surround51.0 { + + + +-VIA8233A.pcm.iec958.0 { ++VIA8233A.pcm.iec958.!0 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { + type string +diff --git a/src/conf/cards/VIA8237.conf b/src/conf/cards/VIA8237.conf +index 29d8e00f..49fd6f2c 100644 +--- a/src/conf/cards/VIA8237.conf ++++ b/src/conf/cards/VIA8237.conf +@@ -4,7 +4,7 @@ + + + +-VIA8237.pcm.front.0 { ++VIA8237.pcm.front.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -15,7 +15,7 @@ VIA8237.pcm.front.0 { + + # default with softvol/dsnoop + # VIA8237 supports multi-playback +-VIA8237.pcm.default { ++VIA8237.pcm.!default { + @args [ CARD ] + @args.CARD { + type string +@@ -46,7 +46,7 @@ VIA8237.pcm.default { + + + +-VIA8237.pcm.surround40.0 { ++VIA8237.pcm.surround40.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -84,7 +84,7 @@ VIA8237.pcm.surround40.0 { + + + +-VIA8237.pcm.surround51.0 { ++VIA8237.pcm.surround51.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -136,7 +136,7 @@ VIA8237.pcm.surround51.0 { + + + +-VIA8237.pcm.iec958.0 { ++VIA8237.pcm.iec958.!0 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { + type string +-- +2.51.1 + + +From 4bcd33ef9dc6d8439cc6573575907ecf89271fe2 Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Wed, 10 Dec 2025 16:18:22 +0100 +Subject: [PATCH 40/43] conf: VX222,VXPocket: define pcm configuration block + only one time + +There may be multiple VX soundcards in the system. Overwrite +the PCM configurations when loaded multiple times. + +Signed-off-by: Jaroslav Kysela +--- + src/conf/cards/VX222.conf | 4 ++-- + src/conf/cards/VXPocket.conf | 4 ++-- + src/conf/cards/VXPocket440.conf | 8 ++++---- + 3 files changed, 8 insertions(+), 8 deletions(-) + +diff --git a/src/conf/cards/VX222.conf b/src/conf/cards/VX222.conf +index 3385f25b..2c6e2297 100644 +--- a/src/conf/cards/VX222.conf ++++ b/src/conf/cards/VX222.conf +@@ -4,7 +4,7 @@ + + + +-VX222.pcm.front.0 { ++VX222.pcm.front.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -15,7 +15,7 @@ VX222.pcm.front.0 { + + + +-VX222.pcm.iec958.0 { ++VX222.pcm.iec958.!0 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { + type string +diff --git a/src/conf/cards/VXPocket.conf b/src/conf/cards/VXPocket.conf +index fe44ff53..90b13347 100644 +--- a/src/conf/cards/VXPocket.conf ++++ b/src/conf/cards/VXPocket.conf +@@ -4,7 +4,7 @@ + + + +-VXPocket.pcm.front.0 { ++VXPocket.pcm.front.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -15,7 +15,7 @@ VXPocket.pcm.front.0 { + + + +-VXPocket.pcm.iec958.0 { ++VXPocket.pcm.iec958.!0 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { + type string +diff --git a/src/conf/cards/VXPocket440.conf b/src/conf/cards/VXPocket440.conf +index 197c2d6c..87a0855a 100644 +--- a/src/conf/cards/VXPocket440.conf ++++ b/src/conf/cards/VXPocket440.conf +@@ -4,7 +4,7 @@ + + + +-VXPocket440.pcm.front.0 { ++VXPocket440.pcm.front.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -15,7 +15,7 @@ VXPocket440.pcm.front.0 { + + + +-VXPocket440.pcm.rear.0 { ++VXPocket440.pcm.rear.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -27,7 +27,7 @@ VXPocket440.pcm.rear.0 { + + + +-VXPocket440.pcm.surround40.0 { ++VXPocket440.pcm.surround40.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -64,7 +64,7 @@ VXPocket440.pcm.surround40.0 { + + + +-VXPocket440.pcm.iec958.0 { ++VXPocket440.pcm.iec958.!0 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { + type string +-- +2.51.1 + + +From 29fa26b4b5e0d3b7ab539b38d6604d83430bf70b Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Wed, 10 Dec 2025 16:18:22 +0100 +Subject: [PATCH 41/43] conf: YMF744: define pcm configuration block only one + time + +There may be multiple YMF744 soundcards in the system. Overwrite +the PCM configurations when loaded multiple times. + +Signed-off-by: Jaroslav Kysela +--- + src/conf/cards/YMF744.conf | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/src/conf/cards/YMF744.conf b/src/conf/cards/YMF744.conf +index 84dbcbec..ad1f2132 100644 +--- a/src/conf/cards/YMF744.conf ++++ b/src/conf/cards/YMF744.conf +@@ -4,7 +4,7 @@ + + + +-YMF744.pcm.front.0 { ++YMF744.pcm.front.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -15,7 +15,7 @@ YMF744.pcm.front.0 { + + + +-YMF744.pcm.rear.0 { ++YMF744.pcm.rear.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -27,7 +27,7 @@ YMF744.pcm.rear.0 { + + + +-YMF744.pcm.surround40.0 { ++YMF744.pcm.surround40.!0 { + @args [ CARD ] + @args.CARD { + type string +@@ -63,7 +63,7 @@ YMF744.pcm.surround40.0 { + + + +-YMF744.pcm.iec958.0 { ++YMF744.pcm.iec958.!0 { + @args [ CARD AES0 AES1 AES2 AES3 ] + @args.CARD { + type string +-- +2.51.1 + + +From 17ffe17f0356f333f8bf8734a02ab419bd19cd99 Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Wed, 10 Dec 2025 16:25:34 +0100 +Subject: [PATCH 42/43] conf: pistachio-card: define pcm configuration block + only one time + +There may be multiple pistachio-card soundcards in the system. Overwrite +the PCM configurations when loaded multiple times. + +Signed-off-by: Jaroslav Kysela +--- + src/conf/cards/pistachio-card.conf | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/conf/cards/pistachio-card.conf b/src/conf/cards/pistachio-card.conf +index f68865eb..15cfd60b 100644 +--- a/src/conf/cards/pistachio-card.conf ++++ b/src/conf/cards/pistachio-card.conf +@@ -29,7 +29,7 @@ https://docs.creatordev.io/ci40/guides/hardwaredocs/MIPS_Creator_cXT200_Technica + # Subdevice #0: subdevice #0 + # + +-pistachio-card.pcm.default{ ++pistachio-card.pcm.!default { + @args [ CARD ] + @args.CARD { + type string +-- +2.51.1 + + +From f30c355278cf9c86420b49ab9efc7eee890b658c Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Wed, 10 Dec 2025 16:44:12 +0100 +Subject: [PATCH 43/43] conf: cards: unify whitespace - use tabs and remove + trailing spaces + +Convert leading spaces to tabs for consistent indentation, +remove trailing whitespace from all lines, and normalize +file endings across all card configuration files. + +Signed-off-by: Jaroslav Kysela +--- + src/conf/cards/AACI.conf | 2 +- + src/conf/cards/ATIIXP-SPDMA.conf | 2 +- + src/conf/cards/ATIIXP.conf | 2 +- + src/conf/cards/AU8810.conf | 2 +- + src/conf/cards/AU8820.conf | 2 +- + src/conf/cards/AU8830.conf | 2 +- + src/conf/cards/Audigy.conf | 6 +- + src/conf/cards/Audigy2.conf | 4 +- + src/conf/cards/Aureon51.conf | 8 +- + src/conf/cards/Aureon71.conf | 8 +- + src/conf/cards/CA0106.conf | 8 +- + src/conf/cards/CMI8338-SWIEC.conf | 2 +- + src/conf/cards/CMI8338.conf | 2 +- + src/conf/cards/CMI8738-MC6.conf | 6 +- + src/conf/cards/CMI8738-MC8.conf | 8 +- + src/conf/cards/CMI8788.conf | 8 +- + src/conf/cards/CS46xx.conf | 6 +- + src/conf/cards/EMU10K1.conf | 6 +- + src/conf/cards/EMU10K1X.conf | 6 +- + src/conf/cards/ENS1370.conf | 4 +- + src/conf/cards/ENS1371.conf | 10 +-- + src/conf/cards/ES1968.conf | 2 +- + src/conf/cards/FM801.conf | 2 +- + src/conf/cards/GUS.conf | 2 +- + src/conf/cards/HDA-Intel.conf | 2 +- + src/conf/cards/ICE1712.conf | 4 +- + src/conf/cards/ICE1724.conf | 10 +-- + src/conf/cards/ICH.conf | 2 +- + src/conf/cards/ICH4.conf | 2 +- + src/conf/cards/Loopback.conf | 2 +- + src/conf/cards/Maestro3.conf | 3 +- + src/conf/cards/NFORCE.conf | 138 ++++++++++++++--------------- + src/conf/cards/PC-Speaker.conf | 3 +- + src/conf/cards/PMac.conf | 2 +- + src/conf/cards/PMacToonie.conf | 2 +- + src/conf/cards/PS3.conf | 6 +- + src/conf/cards/RME9636.conf | 2 +- + src/conf/cards/RME9652.conf | 2 +- + src/conf/cards/SB-XFi.conf | 8 +- + src/conf/cards/SI7018.conf | 6 +- + src/conf/cards/TRID4DWAVENX.conf | 4 +- + src/conf/cards/USB-Audio.conf | 2 +- + src/conf/cards/VIA686A.conf | 2 +- + src/conf/cards/VIA8233.conf | 2 +- + src/conf/cards/VIA8233A.conf | 2 +- + src/conf/cards/VIA8237.conf | 2 +- + src/conf/cards/VX222.conf | 2 +- + src/conf/cards/VXPocket.conf | 2 +- + src/conf/cards/VXPocket440.conf | 2 +- + src/conf/cards/YMF744.conf | 4 +- + src/conf/cards/pistachio-card.conf | 54 +++++------ + 51 files changed, 190 insertions(+), 192 deletions(-) + +diff --git a/src/conf/cards/AACI.conf b/src/conf/cards/AACI.conf +index ff4778b4..2f036dd6 100644 +--- a/src/conf/cards/AACI.conf ++++ b/src/conf/cards/AACI.conf +@@ -11,7 +11,7 @@ AACI.pcm.front.!0 { + } + type hw + card $CARD +-} ++} + + + +diff --git a/src/conf/cards/ATIIXP-SPDMA.conf b/src/conf/cards/ATIIXP-SPDMA.conf +index 12c40efc..6d7344e8 100644 +--- a/src/conf/cards/ATIIXP-SPDMA.conf ++++ b/src/conf/cards/ATIIXP-SPDMA.conf +@@ -11,7 +11,7 @@ ATIIXP-SPDMA.pcm.front.!0 { + } + type hw + card $CARD +-} ++} + + # default with dmix/dsnoop + ATIIXP.pcm.!default { +diff --git a/src/conf/cards/ATIIXP.conf b/src/conf/cards/ATIIXP.conf +index 13e01c48..d2736c3c 100644 +--- a/src/conf/cards/ATIIXP.conf ++++ b/src/conf/cards/ATIIXP.conf +@@ -11,7 +11,7 @@ ATIIXP.pcm.front.!0 { + } + type hw + card $CARD +-} ++} + + # default with dmix/dsnoop + ATIIXP.pcm.!default { +diff --git a/src/conf/cards/AU8810.conf b/src/conf/cards/AU8810.conf +index 6b596b68..46de6dbc 100644 +--- a/src/conf/cards/AU8810.conf ++++ b/src/conf/cards/AU8810.conf +@@ -11,7 +11,7 @@ AU8810.pcm.front.!0 { + } + type hw + card $CARD +-} ++} + + + +diff --git a/src/conf/cards/AU8820.conf b/src/conf/cards/AU8820.conf +index fe2cbc11..8e262a6f 100644 +--- a/src/conf/cards/AU8820.conf ++++ b/src/conf/cards/AU8820.conf +@@ -11,4 +11,4 @@ AU8820.pcm.front.!0 { + } + type hw + card $CARD +-} ++} +diff --git a/src/conf/cards/AU8830.conf b/src/conf/cards/AU8830.conf +index 9cd78b3e..a31d8a57 100644 +--- a/src/conf/cards/AU8830.conf ++++ b/src/conf/cards/AU8830.conf +@@ -11,7 +11,7 @@ AU8830.pcm.front.!0 { + } + type hw + card $CARD +-} ++} + + + +diff --git a/src/conf/cards/Audigy.conf b/src/conf/cards/Audigy.conf +index a353c624..d2b54d3b 100644 +--- a/src/conf/cards/Audigy.conf ++++ b/src/conf/cards/Audigy.conf +@@ -36,7 +36,7 @@ Audigy.pcm.front.!0 { + } + ] + } +-} ++} + + + +@@ -64,7 +64,7 @@ Audigy.pcm.rear.!0 { + } + ] + } +-} ++} + + + +@@ -100,7 +100,7 @@ Audigy.pcm.center_lfe.!0 { + } + ] + } +-} ++} + + + +diff --git a/src/conf/cards/Audigy2.conf b/src/conf/cards/Audigy2.conf +index 3c15fd1d..47d75680 100644 +--- a/src/conf/cards/Audigy2.conf ++++ b/src/conf/cards/Audigy2.conf +@@ -37,7 +37,7 @@ Audigy2.pcm.front.!0 { + + ] + } +-} ++} + + + +@@ -65,7 +65,7 @@ Audigy2.pcm.rear.!0 { + } + ] + } +-} ++} + + + +diff --git a/src/conf/cards/Aureon51.conf b/src/conf/cards/Aureon51.conf +index db907f82..da7e26dc 100644 +--- a/src/conf/cards/Aureon51.conf ++++ b/src/conf/cards/Aureon51.conf +@@ -34,7 +34,7 @@ Aureon51.pcm.front.!0 { + } + type hw + card $CARD +-} ++} + + + +@@ -47,7 +47,7 @@ Aureon51.pcm.rear.!0 { + card $CARD + device 2 + subdevice 1 +-} ++} + + + +@@ -59,7 +59,7 @@ Aureon51.pcm.center_lfe.!0 { + type hw + card $CARD + device 2 +-} ++} + + + +@@ -84,7 +84,7 @@ Aureon51.pcm.surround40.!0 { + type hw + card $CARD + channels 4 +-} ++} + + + +diff --git a/src/conf/cards/Aureon71.conf b/src/conf/cards/Aureon71.conf +index f29bc297..98e65ab0 100644 +--- a/src/conf/cards/Aureon71.conf ++++ b/src/conf/cards/Aureon71.conf +@@ -34,7 +34,7 @@ Aureon71.pcm.front.!0 { + } + type hw + card $CARD +-} ++} + + + +@@ -46,7 +46,7 @@ Aureon71.pcm.rear.!0 { + type hw + card $CARD + device 2 +-} ++} + + + +@@ -59,7 +59,7 @@ Aureon71.pcm.center_lfe.!0 { + card $CARD + device 2 + subdevice 1 +-} ++} + + + +@@ -84,7 +84,7 @@ Aureon71.pcm.surround40.!0 { + type hw + card $CARD + channels 4 +-} ++} + + + +diff --git a/src/conf/cards/CA0106.conf b/src/conf/cards/CA0106.conf +index 1fea79f5..bf90c3c6 100644 +--- a/src/conf/cards/CA0106.conf ++++ b/src/conf/cards/CA0106.conf +@@ -34,7 +34,7 @@ CA0106.pcm.front.!0 { + } + type hw + card $CARD +-} ++} + + + +@@ -46,7 +46,7 @@ CA0106.pcm.rear.!0 { + type hw + card $CARD + device 1 +-} ++} + + + +@@ -58,7 +58,7 @@ CA0106.pcm.center_lfe.!0 { + type hw + card $CARD + device 2 +-} ++} + + + +@@ -70,7 +70,7 @@ CA0106.pcm.side.!0 { + type hw + card $CARD + device 3 +-} ++} + + + +diff --git a/src/conf/cards/CMI8338-SWIEC.conf b/src/conf/cards/CMI8338-SWIEC.conf +index ca86c466..2a9b777c 100644 +--- a/src/conf/cards/CMI8338-SWIEC.conf ++++ b/src/conf/cards/CMI8338-SWIEC.conf +@@ -12,7 +12,7 @@ CMI8338-SWIEC.pcm.front.!0 { + } + type hw + card $CARD +-} ++} + + # default with dmix/dsnoop + CMI8338-SWIEC.pcm.!default { +diff --git a/src/conf/cards/CMI8338.conf b/src/conf/cards/CMI8338.conf +index 0f92ad0b..8bd1159d 100644 +--- a/src/conf/cards/CMI8338.conf ++++ b/src/conf/cards/CMI8338.conf +@@ -11,7 +11,7 @@ CMI8338.pcm.front.!0 { + } + type hw + card $CARD +-} ++} + + # default with dmix/dsnoop + CMI8338.pcm.!default { +diff --git a/src/conf/cards/CMI8738-MC6.conf b/src/conf/cards/CMI8738-MC6.conf +index 2b1c7d05..6bb17712 100644 +--- a/src/conf/cards/CMI8738-MC6.conf ++++ b/src/conf/cards/CMI8738-MC6.conf +@@ -11,7 +11,7 @@ CMI8738-MC6.pcm.front.!0 { + } + type hw + card $CARD +-} ++} + + # default with dmix/dsnoop + CMI8738-MC6.pcm.!default { +@@ -75,7 +75,7 @@ CMI8738-MC6.pcm.surround40.!0 { + } + ] + } +-} ++} + + + +@@ -105,7 +105,7 @@ CMI8738-MC6.pcm.surround51.!0 { + } + ] + } +-} ++} + + + +diff --git a/src/conf/cards/CMI8738-MC8.conf b/src/conf/cards/CMI8738-MC8.conf +index 96cb3f10..239014d4 100644 +--- a/src/conf/cards/CMI8738-MC8.conf ++++ b/src/conf/cards/CMI8738-MC8.conf +@@ -18,7 +18,7 @@ CMI8738-MC8.pcm.front.!0 { + name "PCM Playback Volume" + card $CARD + } +-} ++} + + # default with dmix+softvol & dsnoop + CMI8738-MC8.pcm.!default { +@@ -102,7 +102,7 @@ CMI8738-MC8.pcm.surround40.!0 { + name "PCM Playback Volume" + card $CARD + } +-} ++} + + + +@@ -140,7 +140,7 @@ CMI8738-MC8.pcm.surround51.!0 { + name "PCM Playback Volume" + card $CARD + } +-} ++} + + + +@@ -174,7 +174,7 @@ CMI8738-MC8.pcm.surround71.!0 { + name "PCM Playback Volume" + card $CARD + } +-} ++} + + + +diff --git a/src/conf/cards/CMI8788.conf b/src/conf/cards/CMI8788.conf +index c4ad9f48..32ab8fb4 100644 +--- a/src/conf/cards/CMI8788.conf ++++ b/src/conf/cards/CMI8788.conf +@@ -11,7 +11,7 @@ CMI8788.pcm.front.!0 { + } + type hw + card $CARD +-} ++} + + # default with dmix & dsnoop + CMI8788.pcm.!default { +@@ -46,7 +46,7 @@ CMI8788.pcm.surround40.!0 { + type hw + card $CARD + channels 4 +-} ++} + + + +@@ -61,7 +61,7 @@ CMI8788.pcm.surround51.!0 { + type hw + card $CARD + channels 6 +-} ++} + + + +@@ -73,7 +73,7 @@ CMI8788.pcm.surround71.!0 { + type hw + card $CARD + channels 8 +-} ++} + + + +diff --git a/src/conf/cards/CS46xx.conf b/src/conf/cards/CS46xx.conf +index 478cbf3e..ad6a2218 100644 +--- a/src/conf/cards/CS46xx.conf ++++ b/src/conf/cards/CS46xx.conf +@@ -11,7 +11,7 @@ CS46xx.pcm.front.!0 { + } + type hw + card $CARD +-} ++} + + # default with plughw + # CS46xx supports multi-playback +@@ -62,7 +62,7 @@ CS46xx.pcm.rear.!0 { + } + ] + } +-} ++} + + + +@@ -74,7 +74,7 @@ CS46xx.pcm.center_lfe.!0 { + type hw + card $CARD + device 3 +-} ++} + + + +diff --git a/src/conf/cards/EMU10K1.conf b/src/conf/cards/EMU10K1.conf +index 5ef12c03..c2dc7590 100644 +--- a/src/conf/cards/EMU10K1.conf ++++ b/src/conf/cards/EMU10K1.conf +@@ -43,7 +43,7 @@ EMU10K1.pcm.front.!0 { + type hw + card $CARD + } +-} ++} + + + +@@ -74,7 +74,7 @@ EMU10K1.pcm.rear.!0 { + ] + } + } +-} ++} + + + +@@ -139,7 +139,7 @@ EMU10K1.pcm.center_lfe.!0 { + ] + } + } +-} ++} + + + +diff --git a/src/conf/cards/EMU10K1X.conf b/src/conf/cards/EMU10K1X.conf +index 334f897d..7d73ba44 100644 +--- a/src/conf/cards/EMU10K1X.conf ++++ b/src/conf/cards/EMU10K1X.conf +@@ -34,7 +34,7 @@ EMU10K1X.pcm.front.!0 { + } + type hw + card $CARD +-} ++} + + + +@@ -46,7 +46,7 @@ EMU10K1X.pcm.rear.!0 { + type hw + card $CARD + device 1 +-} ++} + + + +@@ -58,7 +58,7 @@ EMU10K1X.pcm.center_lfe.!0 { + type hw + card $CARD + device 2 +-} ++} + + + +diff --git a/src/conf/cards/ENS1370.conf b/src/conf/cards/ENS1370.conf +index c65e224f..446c2f7d 100644 +--- a/src/conf/cards/ENS1370.conf ++++ b/src/conf/cards/ENS1370.conf +@@ -12,7 +12,7 @@ ENS1370.pcm.front.!0 { + type hw + card $CARD + device 1 +-} ++} + + # default with dmix/dsnoop + ENS1370.pcm.!default { +@@ -67,7 +67,7 @@ ENS1370.pcm.rear.!0 { + } + ] + } +-} ++} + + + +diff --git a/src/conf/cards/ENS1371.conf b/src/conf/cards/ENS1371.conf +index 560fda9f..549fd7c9 100644 +--- a/src/conf/cards/ENS1371.conf ++++ b/src/conf/cards/ENS1371.conf +@@ -11,7 +11,7 @@ ENS1371.pcm.front.!0 { + } + type hw + card $CARD +-} ++} + + # default with dmix/dsnoop + ENS1371.pcm.!default { +@@ -61,7 +61,7 @@ ENS1371.pcm.rear.!0 { + } + ] + } +-} ++} + + + +@@ -78,11 +78,11 @@ ENS1371.pcm.surround40.!0 { + strings [ "cards.ENS1371.pcm.front.0:CARD=" $CARD ] + } + channels 2 +- } ++ } + { + pcm { + @func concat +- strings [ "cards.ENS1371.pcm.rear.0:CARD=" $CARD ] ++ strings [ "cards.ENS1371.pcm.rear.0:CARD=" $CARD ] + } + channels 2 + } +@@ -94,7 +94,7 @@ ENS1371.pcm.surround40.!0 { + { slave 1 channel 1 } + ] + } +- ++ + + + ENS1371.pcm.iec958.!0 { +diff --git a/src/conf/cards/ES1968.conf b/src/conf/cards/ES1968.conf +index 296baa13..83dcf93b 100644 +--- a/src/conf/cards/ES1968.conf ++++ b/src/conf/cards/ES1968.conf +@@ -9,4 +9,4 @@ ES1968.pcm.front.!0 { + } + type hw + card $CARD +-} ++} +diff --git a/src/conf/cards/FM801.conf b/src/conf/cards/FM801.conf +index 14cfdbe8..b8bed781 100644 +--- a/src/conf/cards/FM801.conf ++++ b/src/conf/cards/FM801.conf +@@ -11,7 +11,7 @@ FM801.pcm.front.!0 { + } + type hw + card $CARD +-} ++} + + # default with dmix/dsnoop + FM801.pcm.!default { +diff --git a/src/conf/cards/GUS.conf b/src/conf/cards/GUS.conf +index a1ccd0e9..42a612a6 100644 +--- a/src/conf/cards/GUS.conf ++++ b/src/conf/cards/GUS.conf +@@ -16,4 +16,4 @@ GUS.pcm.front.!0 { + type hw + card $CARD + } +-} ++} +diff --git a/src/conf/cards/HDA-Intel.conf b/src/conf/cards/HDA-Intel.conf +index 76775b97..cacd2815 100644 +--- a/src/conf/cards/HDA-Intel.conf ++++ b/src/conf/cards/HDA-Intel.conf +@@ -26,7 +26,7 @@ HDA-Intel.pcm.front.!0 { + type hw + card $CARD + } +-} ++} + + # default with dmix+softvol & dsnoop + HDA-Intel.pcm.!default { +diff --git a/src/conf/cards/ICE1712.conf b/src/conf/cards/ICE1712.conf +index 190d2c59..08b84f30 100644 +--- a/src/conf/cards/ICE1712.conf ++++ b/src/conf/cards/ICE1712.conf +@@ -53,7 +53,7 @@ ICE1712.pcm.front.!0 { + } + slave.channels 12 + } +-} ++} + + + +@@ -72,7 +72,7 @@ ICE1712.pcm.surround40.!0 { + card $CARD + } + slave.channels 10 +-} ++} + + + +diff --git a/src/conf/cards/ICE1724.conf b/src/conf/cards/ICE1724.conf +index 16045dc4..678df41d 100644 +--- a/src/conf/cards/ICE1724.conf ++++ b/src/conf/cards/ICE1724.conf +@@ -34,7 +34,7 @@ ICE1724.pcm.front.!0 { + } + type hw + card $CARD +-} ++} + + + +@@ -47,7 +47,7 @@ ICE1724.pcm.rear.!0 { + card $CARD + device 2 + subdevice 1 +-} ++} + + + +@@ -59,7 +59,7 @@ ICE1724.pcm.center_lfe.!0 { + type hw + card $CARD + device 2 +-} ++} + + + +@@ -93,7 +93,7 @@ ICE1724.pcm.surround40.!0 { + card $CARD + } + } +-} ++} + + + +@@ -114,7 +114,7 @@ ICE1724.pcm.surround51.!0 { + ttable.5.3 1 + slave { + channels 6 +- pcm { ++ pcm { + type hw + card $CARD + } +diff --git a/src/conf/cards/ICH.conf b/src/conf/cards/ICH.conf +index c35c8d02..573b9e26 100644 +--- a/src/conf/cards/ICH.conf ++++ b/src/conf/cards/ICH.conf +@@ -18,7 +18,7 @@ ICH.pcm.front.!0 { + name "PCM Playback Volume" + card $CARD + } +-} ++} + + # default with dmix+softvol & dsnoop + ICH.pcm.!default { +diff --git a/src/conf/cards/ICH4.conf b/src/conf/cards/ICH4.conf +index 11c85a6e..5641c9c4 100644 +--- a/src/conf/cards/ICH4.conf ++++ b/src/conf/cards/ICH4.conf +@@ -18,7 +18,7 @@ ICH4.pcm.front.!0 { + name "PCM Playback Volume" + card $CARD + } +-} ++} + + # default with dmix+softvol & dsnoop + ICH4.pcm.!default { +diff --git a/src/conf/cards/Loopback.conf b/src/conf/cards/Loopback.conf +index 21c8429c..3911aed5 100644 +--- a/src/conf/cards/Loopback.conf ++++ b/src/conf/cards/Loopback.conf +@@ -18,7 +18,7 @@ Loopback.pcm.front.!0 { + name "PCM Playback Volume" + card $CARD + } +-} ++} + + # default with dmix+softvol & dsnoop + Loopback.pcm.!default { +diff --git a/src/conf/cards/Maestro3.conf b/src/conf/cards/Maestro3.conf +index a8d89a48..c0e3da31 100644 +--- a/src/conf/cards/Maestro3.conf ++++ b/src/conf/cards/Maestro3.conf +@@ -9,7 +9,7 @@ Maestro3.pcm.front.!0 { + } + type hw + card $CARD +-} ++} + + # default with dmix/dsnoop + Maestro3.pcm.!default { +@@ -35,4 +35,3 @@ Maestro3.pcm.!default { + } + } + } +- +diff --git a/src/conf/cards/NFORCE.conf b/src/conf/cards/NFORCE.conf +index 088cd8ce..aeef6b40 100644 +--- a/src/conf/cards/NFORCE.conf ++++ b/src/conf/cards/NFORCE.conf +@@ -18,7 +18,7 @@ NFORCE.pcm.front.!0 { + name "PCM Playback Volume" + card $CARD + } +-} ++} + + # default with dmix+softvol & dsnoop + NFORCE.pcm.!default { +@@ -175,74 +175,74 @@ NFORCE.pcm.surround51.!0 { + + + NFORCE.pcm.surround71.!0 { +- @args [ CARD ] +- @args.CARD { +- type string +- } +- type softvol +- slave.pcm { +- type route +- ttable.0.0 1 +- ttable.1.1 1 +- ttable.2.4 1 +- ttable.3.5 1 +- ttable.4.2 1 +- ttable.5.3 1 +- ttable.6.6 1 +- ttable.7.7 1 +- slave.pcm { +- type hooks +- slave.pcm { +- type hw +- card $CARD +- device 0 +- } +- hooks.0 { +- type ctl_elems +- hook_args [ +- { +- name "Channel Mode" +- preserve true +- value "8ch" +- lock true +- optional true +- } +- # for old drivers +- { +- name "Line-In As Surround" +- preserve true +- value true +- optional true +- } +- { +- name "Mic As Center/LFE" +- preserve true +- value true +- optional true +- } +- { +- name "Surround Down Mix" +- preserve true +- value off +- lock true +- optional true +- } +- { +- name "Center/LFE Down Mix" +- preserve true +- value off +- lock true +- optional true +- } +- ] +- } +- } +- slave.channels 8 +- } +- control { +- name "PCM Playback Volume" +- card $CARD +- } ++ @args [ CARD ] ++ @args.CARD { ++ type string ++ } ++ type softvol ++ slave.pcm { ++ type route ++ ttable.0.0 1 ++ ttable.1.1 1 ++ ttable.2.4 1 ++ ttable.3.5 1 ++ ttable.4.2 1 ++ ttable.5.3 1 ++ ttable.6.6 1 ++ ttable.7.7 1 ++ slave.pcm { ++ type hooks ++ slave.pcm { ++ type hw ++ card $CARD ++ device 0 ++ } ++ hooks.0 { ++ type ctl_elems ++ hook_args [ ++ { ++ name "Channel Mode" ++ preserve true ++ value "8ch" ++ lock true ++ optional true ++ } ++ # for old drivers ++ { ++ name "Line-In As Surround" ++ preserve true ++ value true ++ optional true ++ } ++ { ++ name "Mic As Center/LFE" ++ preserve true ++ value true ++ optional true ++ } ++ { ++ name "Surround Down Mix" ++ preserve true ++ value off ++ lock true ++ optional true ++ } ++ { ++ name "Center/LFE Down Mix" ++ preserve true ++ value off ++ lock true ++ optional true ++ } ++ ] ++ } ++ } ++ slave.channels 8 ++ } ++ control { ++ name "PCM Playback Volume" ++ card $CARD ++ } + } + + +diff --git a/src/conf/cards/PC-Speaker.conf b/src/conf/cards/PC-Speaker.conf +index 8a40a139..97cb0d5d 100644 +--- a/src/conf/cards/PC-Speaker.conf ++++ b/src/conf/cards/PC-Speaker.conf +@@ -20,7 +20,7 @@ PC-Speaker.pcm.front.!0 { + } + min_dB -10.0 + max_dB 20.0 +-} ++} + + # default with dmix & null + PC-Speaker.pcm.!default { +@@ -49,4 +49,3 @@ PC-Speaker.pcm.!default { + type null + } + } +- +diff --git a/src/conf/cards/PMac.conf b/src/conf/cards/PMac.conf +index 00f3bc89..67dfabc6 100644 +--- a/src/conf/cards/PMac.conf ++++ b/src/conf/cards/PMac.conf +@@ -11,7 +11,7 @@ PMac.pcm.front.!0 { + } + type hw + card $CARD +-} ++} + + # default with dmix/dsnoop + PMac.pcm.!default { +diff --git a/src/conf/cards/PMacToonie.conf b/src/conf/cards/PMacToonie.conf +index aff1ea65..c45cf12b 100644 +--- a/src/conf/cards/PMacToonie.conf ++++ b/src/conf/cards/PMacToonie.conf +@@ -18,7 +18,7 @@ PMacToonie.pcm.front.!0 { + name "PCM Playback Volume" + card $CARD + } +-} ++} + + # default with dmix+softvol & dsnoop + PMacToonie.pcm.!default { +diff --git a/src/conf/cards/PS3.conf b/src/conf/cards/PS3.conf +index 486d790c..8a165fc3 100644 +--- a/src/conf/cards/PS3.conf ++++ b/src/conf/cards/PS3.conf +@@ -19,7 +19,7 @@ PS3.pcm.front.!0 { + name "PCM Playback Volume" + card $CARD + } +-} ++} + + # default with dmix+softvol + PS3.pcm.!default { +@@ -34,8 +34,8 @@ PS3.pcm.!default { + type softvol + slave.pcm { + @func concat +- #strings [ "dmix:CARD=" $CARD ] +- strings [ "dmix:CARD=" $CARD ",FORMAT=S16" ] ++ #strings [ "dmix:CARD=" $CARD ] ++ strings [ "dmix:CARD=" $CARD ",FORMAT=S16" ] + } + control { + name "PCM Playback Volume" +diff --git a/src/conf/cards/RME9636.conf b/src/conf/cards/RME9636.conf +index 17b3a1ab..c5c74ee9 100644 +--- a/src/conf/cards/RME9636.conf ++++ b/src/conf/cards/RME9636.conf +@@ -11,7 +11,7 @@ RME9636.pcm.front.!0 { + } + type hw + card $CARD +-} ++} + + # FIXME: This configuration is not valid for double-speed rates. + +diff --git a/src/conf/cards/RME9652.conf b/src/conf/cards/RME9652.conf +index a11e42b2..34ef91bb 100644 +--- a/src/conf/cards/RME9652.conf ++++ b/src/conf/cards/RME9652.conf +@@ -11,7 +11,7 @@ RME9652.pcm.front.!0 { + } + type hw + card $CARD +-} ++} + + # FIXME: This configuration is not valid for double-speed rates. + +diff --git a/src/conf/cards/SB-XFi.conf b/src/conf/cards/SB-XFi.conf +index 9ce9c8ac..64e3d082 100644 +--- a/src/conf/cards/SB-XFi.conf ++++ b/src/conf/cards/SB-XFi.conf +@@ -12,7 +12,7 @@ SB-XFi.pcm.front.!0 { + type hw + card $CARD + device 0 +-} ++} + + + +@@ -25,7 +25,7 @@ SB-XFi.pcm.rear.!0 { + card $CARD + device 1 + hint.device 1 +-} ++} + + + +@@ -38,7 +38,7 @@ SB-XFi.pcm.center_lfe.!0 { + card $CARD + device 2 + hint.device 2 +-} ++} + + + +@@ -51,7 +51,7 @@ SB-XFi.pcm.side.!0 { + card $CARD + device 3 + hint.device 3 +-} ++} + + + +diff --git a/src/conf/cards/SI7018.conf b/src/conf/cards/SI7018.conf +index 33d19085..3a22107c 100644 +--- a/src/conf/cards/SI7018.conf ++++ b/src/conf/cards/SI7018.conf +@@ -14,7 +14,7 @@ SI7018.pcm.front.!0 { + type hw + card $CARD + chmap [ "UNKNOWN" "FL,FR" ] +-} ++} + + + +@@ -23,7 +23,7 @@ SI7018.pcm.rear.!0 { + @args.CARD { + type string + } +- type hooks ++ type hooks + slave.pcm { + type hw + card $CARD +@@ -40,7 +40,7 @@ SI7018.pcm.rear.!0 { + } + ] + } +-} ++} + + + +diff --git a/src/conf/cards/TRID4DWAVENX.conf b/src/conf/cards/TRID4DWAVENX.conf +index 5001297e..3c25515e 100644 +--- a/src/conf/cards/TRID4DWAVENX.conf ++++ b/src/conf/cards/TRID4DWAVENX.conf +@@ -12,7 +12,7 @@ TRID4DWAVENX.pcm.front.!0 { + type hw + card $CARD + chmap [ "UNKNOWN" "FL,FR" ] +-} ++} + + + +@@ -52,7 +52,7 @@ TRID4DWAVENX.pcm.rear.!0 { + } + ] + } +-} ++} + + + +diff --git a/src/conf/cards/USB-Audio.conf b/src/conf/cards/USB-Audio.conf +index 1fc540e2..33d856f2 100644 +--- a/src/conf/cards/USB-Audio.conf ++++ b/src/conf/cards/USB-Audio.conf +@@ -47,7 +47,7 @@ USB-Audio.pcm.iec958_device { + "XONAR U5" 1 + "XONAR SOUND CARD" 1 + "Xonar SoundCard" 2 +- ++ + # The below don't have digital in/out, so prevent them from being opened. + "Andrea PureAudio USB-SA Headset" 999 + "Blue Snowball" 999 +diff --git a/src/conf/cards/VIA686A.conf b/src/conf/cards/VIA686A.conf +index c53dd71b..40c2f89e 100644 +--- a/src/conf/cards/VIA686A.conf ++++ b/src/conf/cards/VIA686A.conf +@@ -14,7 +14,7 @@ VIA686A.pcm.front.!0 { + } + type hw + card $CARD +-} ++} + + # default with dmix/dsnoop + VIA686A.pcm.!default { +diff --git a/src/conf/cards/VIA8233.conf b/src/conf/cards/VIA8233.conf +index 3c25a11b..ccc7fe2f 100644 +--- a/src/conf/cards/VIA8233.conf ++++ b/src/conf/cards/VIA8233.conf +@@ -11,7 +11,7 @@ VIA8233.pcm.front.!0 { + } + type hw + card $CARD +-} ++} + + # default with softvol/dsnoop + # VIA8233 supports multi-playback +diff --git a/src/conf/cards/VIA8233A.conf b/src/conf/cards/VIA8233A.conf +index c9e56e20..e566edeb 100644 +--- a/src/conf/cards/VIA8233A.conf ++++ b/src/conf/cards/VIA8233A.conf +@@ -11,7 +11,7 @@ VIA8233A.pcm.front.!0 { + } + type hw + card $CARD +-} ++} + + # default with dmix/dsnoop + VIA8233A.pcm.!default { +diff --git a/src/conf/cards/VIA8237.conf b/src/conf/cards/VIA8237.conf +index 49fd6f2c..074e342c 100644 +--- a/src/conf/cards/VIA8237.conf ++++ b/src/conf/cards/VIA8237.conf +@@ -11,7 +11,7 @@ VIA8237.pcm.front.!0 { + } + type hw + card $CARD +-} ++} + + # default with softvol/dsnoop + # VIA8237 supports multi-playback +diff --git a/src/conf/cards/VX222.conf b/src/conf/cards/VX222.conf +index 2c6e2297..96ea32f6 100644 +--- a/src/conf/cards/VX222.conf ++++ b/src/conf/cards/VX222.conf +@@ -11,7 +11,7 @@ VX222.pcm.front.!0 { + } + type hw + card $CARD +-} ++} + + + +diff --git a/src/conf/cards/VXPocket.conf b/src/conf/cards/VXPocket.conf +index 90b13347..81260a7d 100644 +--- a/src/conf/cards/VXPocket.conf ++++ b/src/conf/cards/VXPocket.conf +@@ -11,7 +11,7 @@ VXPocket.pcm.front.!0 { + } + type hw + card $CARD +-} ++} + + + +diff --git a/src/conf/cards/VXPocket440.conf b/src/conf/cards/VXPocket440.conf +index 87a0855a..6b3aea40 100644 +--- a/src/conf/cards/VXPocket440.conf ++++ b/src/conf/cards/VXPocket440.conf +@@ -11,7 +11,7 @@ VXPocket440.pcm.front.!0 { + } + type hw + card $CARD +-} ++} + + + +diff --git a/src/conf/cards/YMF744.conf b/src/conf/cards/YMF744.conf +index ad1f2132..974bf791 100644 +--- a/src/conf/cards/YMF744.conf ++++ b/src/conf/cards/YMF744.conf +@@ -11,7 +11,7 @@ YMF744.pcm.front.!0 { + } + type hw + card $CARD +-} ++} + + + +@@ -23,7 +23,7 @@ YMF744.pcm.rear.!0 { + type hw + card $CARD + device 2 +-} ++} + + + +diff --git a/src/conf/cards/pistachio-card.conf b/src/conf/cards/pistachio-card.conf +index 15cfd60b..d92c019a 100644 +--- a/src/conf/cards/pistachio-card.conf ++++ b/src/conf/cards/pistachio-card.conf +@@ -1,10 +1,10 @@ + # + # Configuration for the pistachio chip. + # +-# The data sheet of the chip and technical reference manual can be +-found at ++# The data sheet of the chip and technical reference manual can be ++found at + https://docs.creatordev.io/ci40/guides/hardwaredocs/cXT200_datasheet2.p +-df # and ++df # and + https://docs.creatordev.io/ci40/guides/hardwaredocs/MIPS_Creator_cXT200_Technical_Reference_Manual_1.0.112.pdf. + # + # The list of hardware devices is as per below: +@@ -30,30 +30,30 @@ https://docs.creatordev.io/ci40/guides/hardwaredocs/MIPS_Creator_cXT200_Technica + # + + pistachio-card.pcm.!default { +- @args [ CARD ] +- @args.CARD { +- type string +- default "pistachio" +- } +- @args.DEVICE { +- type integer +- default 2 +- } ++ @args [ CARD ] ++ @args.CARD { ++ type string ++ default "pistachio" ++ } ++ @args.DEVICE { ++ type integer ++ default 2 ++ } + +- type asym +- capture.pcm { +- type multi +- slaves.a.pcm "hw:0,4" +- slaves.a.channels 12 +- bindings.0.slave a +- bindings.0.channel 4 +- bindings.1.slave a +- bindings.1.channel 5 +- } ++ type asym ++ capture.pcm { ++ type multi ++ slaves.a.pcm "hw:0,4" ++ slaves.a.channels 12 ++ bindings.0.slave a ++ bindings.0.channel 4 ++ bindings.1.slave a ++ bindings.1.channel 5 ++ } + +- playback.pcm { +- type hw +- card $CARD +- device $DEVICE +- } ++ playback.pcm { ++ type hw ++ card $CARD ++ device $DEVICE ++ } + } +-- +2.51.1 + diff --git a/alsa-lib.spec b/alsa-lib.spec index e11c07f..f64c71c 100644 --- a/alsa-lib.spec +++ b/alsa-lib.spec @@ -9,7 +9,7 @@ Summary: The Advanced Linux Sound Architecture (ALSA) library Name: alsa-lib Version: %{version_alsa_lib} -Release: 3%{?prever_dot}%{?dist} +Release: 4%{?prever_dot}%{?dist} License: LGPL-2.1-or-later URL: http://www.alsa-project.org/ @@ -167,7 +167,7 @@ rm %{buildroot}/%{_includedir}/asoundlib.h %{_datadir}/alsa/topology %changelog -* Sun Dec 10 2025 Jaroslav Kysela - 1.2.15-3 +* Wed Dec 10 2025 Jaroslav Kysela - 1.2.15-4 - update to 1.2.15 * Wed Jul 23 2025 Fedora Release Engineering - 1.2.14-4 From f26eb0d2f984346d2e5ecf1ed5ad2f26ba171308 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Fri, 19 Dec 2025 12:01:03 +0100 Subject: [PATCH 21/24] update to 1.2.15.1 Signed-off-by: Jaroslav Kysela --- alsa-git.patch | 4986 ------------------------------------------- alsa-lib.spec | 20 +- alsa-ucm-conf.patch | 264 --- sources | 4 +- 4 files changed, 19 insertions(+), 5255 deletions(-) delete mode 100644 alsa-git.patch delete mode 100644 alsa-ucm-conf.patch diff --git a/alsa-git.patch b/alsa-git.patch deleted file mode 100644 index b0fcde8..0000000 --- a/alsa-git.patch +++ /dev/null @@ -1,4986 +0,0 @@ -From a068cf08ad67447893b707cddfce31c9cafee643 Mon Sep 17 00:00:00 2001 -From: Mike Gilbert -Date: Mon, 8 Dec 2025 23:46:17 -0500 -Subject: [PATCH 01/43] ucm: use closefrom instead of close_range - -closefrom is a library function with a fallback mechanism for when the -kernel does not support the close_range syscall. - -Also check for the function properly instead of assuming it is available -with _GNU_SOURCE defined. - -Closes: https://github.com/alsa-project/alsa-lib/pull/486 -Fixes: https://github.com/alsa-project/alsa-lib/issues/485 -Signed-off-by: Mike Gilbert -Signed-off-by: Jaroslav Kysela ---- - configure.ac | 1 + - src/ucm/ucm_exec.c | 4 ++-- - 2 files changed, 3 insertions(+), 2 deletions(-) - -diff --git a/configure.ac b/configure.ac -index 8f4bd0de..f4862f64 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -52,6 +52,7 @@ dnl Checks for library functions. - AC_PROG_GCC_TRADITIONAL - AC_CHECK_FUNCS([uselocale]) - AC_CHECK_FUNCS([eaccess]) -+AC_CHECK_DECLS([closefrom]) - - dnl Enable largefile support - AC_SYS_LARGEFILE -diff --git a/src/ucm/ucm_exec.c b/src/ucm/ucm_exec.c -index b5a22023..713039b4 100644 ---- a/src/ucm/ucm_exec.c -+++ b/src/ucm/ucm_exec.c -@@ -259,8 +259,8 @@ int uc_mgr_exec(const char *prog) - - close(f); - --#if defined(_GNU_SOURCE) -- close_range(3, maxfd, 0); -+#if HAVE_DECL_CLOSEFROM -+ closefrom(3); - #else - for (f = 3; f < maxfd; f++) - close(f); --- -2.51.1 - - -From 813ffe34ff6c720dcc56e4549338bf9e9184af1f Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Tue, 9 Dec 2025 17:48:34 +0100 -Subject: [PATCH 02/43] ucm: exec - fix maxfd used warning - -Fixes: a068cf08 ("ucm: use closefrom instead of close_range") -Signed-off-by: Jaroslav Kysela ---- - src/ucm/ucm_exec.c | 11 ++++++----- - 1 file changed, 6 insertions(+), 5 deletions(-) - -diff --git a/src/ucm/ucm_exec.c b/src/ucm/ucm_exec.c -index 713039b4..c16a4cfd 100644 ---- a/src/ucm/ucm_exec.c -+++ b/src/ucm/ucm_exec.c -@@ -183,7 +183,7 @@ static int parse_args(char ***argv, int argc, const char *cmd) - */ - int uc_mgr_exec(const char *prog) - { -- pid_t p, f, maxfd; -+ pid_t p, f; - int err = 0, status; - char bin[PATH_MAX]; - struct sigaction sa; -@@ -212,8 +212,6 @@ int uc_mgr_exec(const char *prog) - prog = bin; - } - -- maxfd = sysconf(_SC_OPEN_MAX); -- - /* - * block SIGCHLD signal - * ignore SIGINT and SIGQUIT in parent -@@ -262,8 +260,11 @@ int uc_mgr_exec(const char *prog) - #if HAVE_DECL_CLOSEFROM - closefrom(3); - #else -- for (f = 3; f < maxfd; f++) -- close(f); -+ { -+ pid_t maxfd = sysconf(_SC_OPEN_MAX); -+ for (f = 3; f < maxfd; f++) -+ close(f); -+ } - #endif - - /* install default handlers for the forked process */ --- -2.51.1 - - -From a6238053c4fa518b214f99d91a01b96c5ef6e3ca Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Tue, 9 Dec 2025 18:04:07 +0100 -Subject: [PATCH 03/43] conf: merge card specific contents per file (whole) - after parsing - -Unfortunately, mentioned fix caused a regression for items stored in one file. -Merge the file contents after parsing not inside parsing process. - -BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=2420645 -Fixes: eda76146 ("conf: fix load_for_all_cards() - do not merge the card specific contents") -Signed-off-by: Jaroslav Kysela ---- - src/conf.c | 13 ++++++++++--- - 1 file changed, 10 insertions(+), 3 deletions(-) - -diff --git a/src/conf.c b/src/conf.c -index 49499ecd..b1ec9b38 100644 ---- a/src/conf.c -+++ b/src/conf.c -@@ -4119,14 +4119,21 @@ static int config_filename_filter(const struct dirent64 *dirent) - static int config_file_open(snd_config_t *root, const char *filename, int merge) - { - snd_input_t *in; -+ snd_config_t *top; - int err; - - err = snd_input_stdio_open(&in, filename, "r"); - if (err >= 0) { -- if (merge) -+ if (merge) { - err = snd_config_load(root, in); -- else -- err = snd_config_load_override(root, in); -+ } else { -+ err = snd_config_top(&top); -+ if (err >= 0) { -+ err = snd_config_load(top, in); -+ if (err >= 0) -+ err = snd_config_merge(root, top, 1); -+ } -+ } - snd_input_close(in); - if (err < 0) - snd_error(CORE, "%s may be old or corrupted: consider to remove or fix it", filename); --- -2.51.1 - - -From 2f59398c83b8065fb9ff58939df3a9187746068e Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Tue, 9 Dec 2025 18:39:52 +0100 -Subject: [PATCH 04/43] conf: fix possible memory leak in config_file_open() - - error path - -Fixes: a6238053 ("conf: merge card specific contents per file (whole) after parsing") -Signed-off-by: Jaroslav Kysela ---- - src/conf.c | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/src/conf.c b/src/conf.c -index b1ec9b38..d90f6dc3 100644 ---- a/src/conf.c -+++ b/src/conf.c -@@ -4130,8 +4130,11 @@ static int config_file_open(snd_config_t *root, const char *filename, int merge) - err = snd_config_top(&top); - if (err >= 0) { - err = snd_config_load(top, in); -- if (err >= 0) -+ if (err >= 0) { - err = snd_config_merge(root, top, 1); -+ if (err < 0) -+ snd_config_delete(top); -+ } - } - } - snd_input_close(in); --- -2.51.1 - - -From 2ef8952b46a46b97a6df2f29bcd182f895ebf9e4 Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Wed, 10 Dec 2025 12:03:29 +0100 -Subject: [PATCH 05/43] Revert "conf: fix load_for_all_cards() - do not merge - the card specific contents" - -This reverts commit eda76146c5653ff1d5bc4b4c53f7a2d5ccc17da2. - -Also, revert additional related commits: - - Revert "conf: fix possible memory leak in config_file_open() - error path" - This reverts commit 2f59398c83b8065fb9ff58939df3a9187746068e. - - Revert "conf: merge card specific contents per file (whole) after parsing" - This reverts commit a6238053c4fa518b214f99d91a01b96c5ef6e3ca. - -Signed-off-by: Jaroslav Kysela ---- - src/conf.c | 42 ++++++++++++------------------------------ - 1 file changed, 12 insertions(+), 30 deletions(-) - -diff --git a/src/conf.c b/src/conf.c -index d90f6dc3..fb9f0658 100644 ---- a/src/conf.c -+++ b/src/conf.c -@@ -4116,27 +4116,14 @@ static int config_filename_filter(const struct dirent64 *dirent) - return 0; - } - --static int config_file_open(snd_config_t *root, const char *filename, int merge) -+static int config_file_open(snd_config_t *root, const char *filename) - { - snd_input_t *in; -- snd_config_t *top; - int err; - - err = snd_input_stdio_open(&in, filename, "r"); - if (err >= 0) { -- if (merge) { -- err = snd_config_load(root, in); -- } else { -- err = snd_config_top(&top); -- if (err >= 0) { -- err = snd_config_load(top, in); -- if (err >= 0) { -- err = snd_config_merge(root, top, 1); -- if (err < 0) -- snd_config_delete(top); -- } -- } -- } -+ err = snd_config_load(root, in); - snd_input_close(in); - if (err < 0) - snd_error(CORE, "%s may be old or corrupted: consider to remove or fix it", filename); -@@ -4146,7 +4133,7 @@ static int config_file_open(snd_config_t *root, const char *filename, int merge) - return err; - } - --static int config_file_load(snd_config_t *root, const char *fn, int errors, int merge) -+static int config_file_load(snd_config_t *root, const char *fn, int errors) - { - struct stat64 st; - struct dirent64 **namelist; -@@ -4159,7 +4146,7 @@ static int config_file_load(snd_config_t *root, const char *fn, int errors, int - return 1; - } - if (!S_ISDIR(st.st_mode)) -- return config_file_open(root, fn, merge); -+ return config_file_open(root, fn); - #ifndef DOC_HIDDEN - #if defined(_GNU_SOURCE) && \ - !defined(__NetBSD__) && \ -@@ -4185,7 +4172,7 @@ static int config_file_load(snd_config_t *root, const char *fn, int errors, int - snprintf(filename, sl, "%s/%s", fn, namelist[j]->d_name); - filename[sl-1] = '\0'; - -- err = config_file_open(root, filename, merge); -+ err = config_file_open(root, filename); - free(filename); - } - free(namelist[j]); -@@ -4197,20 +4184,20 @@ static int config_file_load(snd_config_t *root, const char *fn, int errors, int - return 0; - } - --static int config_file_load_user(snd_config_t *root, const char *fn, int errors, int merge) -+static int config_file_load_user(snd_config_t *root, const char *fn, int errors) - { - char *fn2; - int err; - - err = snd_user_file(fn, &fn2); - if (err < 0) -- return config_file_load(root, fn, errors, merge); -- err = config_file_load(root, fn2, errors, merge); -+ return config_file_load(root, fn, errors); -+ err = config_file_load(root, fn2, errors); - free(fn2); - return err; - } - --static int config_file_load_user_all(snd_config_t *_root, snd_config_t *_file, int errors, int merge) -+static int config_file_load_user_all(snd_config_t *_root, snd_config_t *_file, int errors) - { - snd_config_t *file = _file, *root = _root, *n; - char *name, *name2, *remain, *rname = NULL; -@@ -4241,7 +4228,7 @@ static int config_file_load_user_all(snd_config_t *_root, snd_config_t *_file, i - *remain = '\0'; - remain += 3; - } -- err = config_file_load_user(root, name2, errors, merge); -+ err = config_file_load_user(root, name2, errors); - if (err < 0) - goto _err; - if (err == 0) /* first hit wins */ -@@ -4290,7 +4277,7 @@ int snd_config_hook_load(snd_config_t *root, snd_config_t *config, snd_config_t - { - snd_config_t *n; - snd_config_iterator_t i, next; -- int err, idx = 0, errors = 1, merge = 1, hit; -+ int err, idx = 0, errors = 1, hit; - - assert(root && dst); - if ((err = snd_config_search(config, "errors", &n)) >= 0) { -@@ -4300,10 +4287,6 @@ int snd_config_hook_load(snd_config_t *root, snd_config_t *config, snd_config_t - return errors; - } - } -- /* special case, we know the card number (may be multiple times) */ -- if (private_data && snd_config_search(private_data, "integer", &n) >= 0) { -- merge = 0; -- } - if ((err = snd_config_search(config, "files", &n)) < 0) { - snd_error(CORE, "Unable to find field files in the pre-load section"); - return -EINVAL; -@@ -4316,7 +4299,6 @@ int snd_config_hook_load(snd_config_t *root, snd_config_t *config, snd_config_t - snd_error(CORE, "Invalid type for field filenames"); - goto _err; - } -- - do { - hit = 0; - snd_config_for_each(i, next, n) { -@@ -4330,7 +4312,7 @@ int snd_config_hook_load(snd_config_t *root, snd_config_t *config, snd_config_t - goto _err; - } - if (i == idx) { -- err = config_file_load_user_all(root, n, errors, merge); -+ err = config_file_load_user_all(root, n, errors); - if (err < 0) - goto _err; - idx++; --- -2.51.1 - - -From 16ab43db6ed6f71424d5ad78e62f85baaeae5051 Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Wed, 10 Dec 2025 12:12:47 +0100 -Subject: [PATCH 06/43] conf: USB-Audio: define pcm configuration block only - one time - -There may be multiple USB soundcards in the system. Overwrite -the PCM configurations when loaded multiple times. - -Signed-off-by: Jaroslav Kysela ---- - src/conf/cards/USB-Audio.conf | 30 +++++++++++++++--------------- - 1 file changed, 15 insertions(+), 15 deletions(-) - -diff --git a/src/conf/cards/USB-Audio.conf b/src/conf/cards/USB-Audio.conf -index 2f6d2ee0..1fc540e2 100644 ---- a/src/conf/cards/USB-Audio.conf -+++ b/src/conf/cards/USB-Audio.conf -@@ -99,7 +99,7 @@ USB-Audio.pcm.iec958_2_device { - # device 0: analog output, digital input - # device 1: digital output, analog input - USB-Audio."AudioPhile".pcm.default "cards.USB-Audio.Audiophile USB (tm).pcm.default" --USB-Audio."Audiophile USB (tm)".pcm.default { -+USB-Audio."Audiophile USB (tm)".pcm.!default { - @args [ CARD ] - @args.CARD { type string } - type asym -@@ -120,7 +120,7 @@ USB-Audio."Audiophile USB (tm)".pcm.default { - } - } - USB-Audio."AudioPhile".pcm.iec958 "cards.USB-Audio.Audiophile USB (tm).pcm.iec958" --USB-Audio."Audiophile USB (tm)".pcm.iec958 { -+USB-Audio."Audiophile USB (tm)".pcm.!iec958 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { type string } - @args.AES0 { type integer } -@@ -142,7 +142,7 @@ USB-Audio."Audiophile USB (tm)".pcm.iec958 { - - # For this card we can (and must to get IEC61937) set AES bits - USB-Audio."MicroII".pcm.iec958 "cards.USB-Audio.Audio Advantage MicroII.pcm.iec958" --USB-Audio."Audio Advantage MicroII".pcm.iec958 { -+USB-Audio."Audio Advantage MicroII".pcm.!iec958 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { type string } - @args.AES0 { type integer } -@@ -180,7 +180,7 @@ USB-Audio."Audio Advantage MicroII".pcm.iec958 { - - - --USB-Audio.pcm.front.0 { -+USB-Audio.pcm.front.!0 { - @args [ CARD ] - @args.CARD { type string } - @func refer -@@ -201,7 +201,7 @@ USB-Audio.pcm.front.0 { - } - } - --USB-Audio.pcm.default { -+USB-Audio.pcm.!default { - @args [ CARD ] - @args.CARD { type string } - @func refer -@@ -249,14 +249,14 @@ USB-Audio.pcm.default { - } - } - --USB-Audio.pcm.default_playback_dmix_yes { -+USB-Audio.pcm.!default_playback_dmix_yes { - @args [ CARD ] - @args.CARD { type string } - @func concat - strings [ "dmix:" $CARD ] - } - --USB-Audio.pcm.default_playback_dmix_no { -+USB-Audio.pcm.!default_playback_dmix_no { - @args [ CARD ] - @args.CARD { type string } - type hw -@@ -266,7 +266,7 @@ USB-Audio.pcm.default_playback_dmix_no { - - - --USB-Audio.pcm.surround40.0 { -+USB-Audio.pcm.surround40.!0 { - @args [ CARD ] - @args.CARD { type string } - @func refer -@@ -301,7 +301,7 @@ USB-Audio.pcm.surround40.0 { - } - } - --USB-Audio.pcm.surround40_default { -+USB-Audio.pcm.!surround40_default { - @args [ CARD ] - @args.CARD { type string } - type hw -@@ -309,7 +309,7 @@ USB-Audio.pcm.surround40_default { - device 0 - } - --USB-Audio.pcm.surround40_six_channels { -+USB-Audio.pcm.!surround40_six_channels { - @args [ CARD ] - @args.CARD { type string } - type route -@@ -327,7 +327,7 @@ USB-Audio.pcm.surround40_six_channels { - } - } - --USB-Audio.pcm.surround40_two_stereo_devices { -+USB-Audio.pcm.!surround40_two_stereo_devices { - @args [ CARD ] - @args.CARD { type string } - type route -@@ -369,7 +369,7 @@ USB-Audio.pcm.surround40_two_stereo_devices { - - - --USB-Audio.pcm.surround51.0 { -+USB-Audio.pcm.surround51.!0 { - @args [ CARD ] - @args.CARD { type string } - @func refer -@@ -402,7 +402,7 @@ USB-Audio.pcm.surround51.0 { - - - --USB-Audio.pcm.surround71.0 { -+USB-Audio.pcm.surround71.!0 { - @args [ CARD ] - @args.CARD { type string } - @func refer -@@ -437,7 +437,7 @@ USB-Audio.pcm.surround71.0 { - - - --USB-Audio.pcm.iec958.0 { -+USB-Audio.pcm.iec958.!0 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { type string } - @args.AES0 { type integer } -@@ -472,7 +472,7 @@ USB-Audio.pcm.iec958.0 { - } - } - --USB-Audio.pcm.iec958.1 { -+USB-Audio.pcm.iec958.!1 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { type string } - @args.AES0 { type integer } --- -2.51.1 - - -From 010b699c92a9a6ffdca1874cd2e3c6c054d212e0 Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Wed, 10 Dec 2025 12:12:47 +0100 -Subject: [PATCH 07/43] conf: HDA-Intel: define pcm configuration block only - one time - -There may be multiple HDA-Intel soundcards in the system. Overwrite -the PCM configurations when loaded multiple times. - -Signed-off-by: Jaroslav Kysela ---- - src/conf/cards/HDA-Intel.conf | 32 ++++++++++++++++---------------- - 1 file changed, 16 insertions(+), 16 deletions(-) - -diff --git a/src/conf/cards/HDA-Intel.conf b/src/conf/cards/HDA-Intel.conf -index 5451606f..76775b97 100644 ---- a/src/conf/cards/HDA-Intel.conf -+++ b/src/conf/cards/HDA-Intel.conf -@@ -4,7 +4,7 @@ - - - --HDA-Intel.pcm.front.0 { -+HDA-Intel.pcm.front.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -29,7 +29,7 @@ HDA-Intel.pcm.front.0 { - } - - # default with dmix+softvol & dsnoop --HDA-Intel.pcm.default { -+HDA-Intel.pcm.!default { - @args [ CARD ] - @args.CARD { - type string -@@ -84,7 +84,7 @@ HDA-Intel.pcm.surround71.0 cards.HDA-Intel.pcm.front.0 - - - --HDA-Intel.pcm.iec958.0 { -+HDA-Intel.pcm.iec958.!0 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { - type string -@@ -163,7 +163,7 @@ HDA-Intel.pcm.iec958.0 { - hint.device 1 - } - --HDA-Intel.pcm.hdmi.common { -+HDA-Intel.pcm.hdmi.!common { - @args [ CARD DEVICE CTLINDEX AES0 AES1 AES2 AES3 ] - @args.CARD { - type string -@@ -212,7 +212,7 @@ HDA-Intel.pcm.hdmi.common { - hint.device $DEVICE - } - --HDA-Intel.pcm.hdmi.0 { -+HDA-Intel.pcm.hdmi.!0 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { type string } - @args.AES0 { type integer } -@@ -235,7 +235,7 @@ HDA-Intel.pcm.hdmi.0 { - } - } - --HDA-Intel.pcm.hdmi.1 { -+HDA-Intel.pcm.hdmi.!1 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { type string } - @args.AES0 { type integer } -@@ -258,7 +258,7 @@ HDA-Intel.pcm.hdmi.1 { - } - } - --HDA-Intel.pcm.hdmi.2 { -+HDA-Intel.pcm.hdmi.!2 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { type string } - @args.AES0 { type integer } -@@ -281,7 +281,7 @@ HDA-Intel.pcm.hdmi.2 { - } - } - --HDA-Intel.pcm.hdmi.3 { -+HDA-Intel.pcm.hdmi.!3 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { type string } - @args.AES0 { type integer } -@@ -304,7 +304,7 @@ HDA-Intel.pcm.hdmi.3 { - } - } - --HDA-Intel.pcm.hdmi.4 { -+HDA-Intel.pcm.hdmi.!4 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { type string } - @args.AES0 { type integer } -@@ -327,7 +327,7 @@ HDA-Intel.pcm.hdmi.4 { - } - } - --HDA-Intel.pcm.hdmi.5 { -+HDA-Intel.pcm.hdmi.!5 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { type string } - @args.AES0 { type integer } -@@ -350,7 +350,7 @@ HDA-Intel.pcm.hdmi.5 { - } - } - --HDA-Intel.pcm.hdmi.6 { -+HDA-Intel.pcm.hdmi.!6 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { type string } - @args.AES0 { type integer } -@@ -373,7 +373,7 @@ HDA-Intel.pcm.hdmi.6 { - } - } - --HDA-Intel.pcm.hdmi.7 { -+HDA-Intel.pcm.hdmi.!7 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { type string } - @args.AES0 { type integer } -@@ -396,7 +396,7 @@ HDA-Intel.pcm.hdmi.7 { - } - } - --HDA-Intel.pcm.hdmi.8 { -+HDA-Intel.pcm.hdmi.!8 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { type string } - @args.AES0 { type integer } -@@ -419,7 +419,7 @@ HDA-Intel.pcm.hdmi.8 { - } - } - --HDA-Intel.pcm.hdmi.9 { -+HDA-Intel.pcm.hdmi.!9 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { type string } - @args.AES0 { type integer } -@@ -442,7 +442,7 @@ HDA-Intel.pcm.hdmi.9 { - } - } - --HDA-Intel.pcm.hdmi.10 { -+HDA-Intel.pcm.hdmi.!10 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { type string } - @args.AES0 { type integer } -@@ -467,7 +467,7 @@ HDA-Intel.pcm.hdmi.10 { - - - --HDA-Intel.pcm.modem.0 { -+HDA-Intel.pcm.modem.!0 { - @args [ CARD ] - @args.CARD { - type string --- -2.51.1 - - -From d83af363f1fc17e2b3e7cf2a0f848722f6643a9a Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Wed, 10 Dec 2025 12:12:47 +0100 -Subject: [PATCH 08/43] conf: vc4-hdmi: define pcm configuration block only one - time - -There may be multiple vc4-hdmi soundcards in the system. Overwrite -the PCM configurations when loaded multiple times. - -BugLink: https://github.com/alsa-project/alsa-lib/issues/488 -Signed-off-by: Jaroslav Kysela ---- - src/conf/cards/vc4-hdmi.conf | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/conf/cards/vc4-hdmi.conf b/src/conf/cards/vc4-hdmi.conf -index 0f313d82..7041d185 100644 ---- a/src/conf/cards/vc4-hdmi.conf -+++ b/src/conf/cards/vc4-hdmi.conf -@@ -3,7 +3,7 @@ - # subframe conversion - # - --vc4-hdmi.pcm.hdmi.0 { -+vc4-hdmi.pcm.hdmi.!0 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { - type string -@@ -50,7 +50,7 @@ vc4-hdmi.pcm.hdmi.0 { - } - - # default with plug and softvol --vc4-hdmi.pcm.default { -+vc4-hdmi.pcm.!default { - @args [ CARD ] - @args.CARD { - type string --- -2.51.1 - - -From 3969e458124f6933e2f440c2b0b39b29de791a78 Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Wed, 10 Dec 2025 12:12:47 +0100 -Subject: [PATCH 09/43] conf: AACI,ATIIXP: define pcm configuration block only - one time - -There may be multiple AACI,ATIIXP soundcards in the system. Overwrite -the PCM configurations when loaded multiple times. - -Signed-off-by: Jaroslav Kysela ---- - src/conf/cards/AACI.conf | 4 ++-- - src/conf/cards/ATIIXP-MODEM.conf | 2 +- - src/conf/cards/ATIIXP-SPDMA.conf | 10 +++++----- - src/conf/cards/ATIIXP.conf | 10 +++++----- - 4 files changed, 13 insertions(+), 13 deletions(-) - -diff --git a/src/conf/cards/AACI.conf b/src/conf/cards/AACI.conf -index 748586a0..ff4778b4 100644 ---- a/src/conf/cards/AACI.conf -+++ b/src/conf/cards/AACI.conf -@@ -4,7 +4,7 @@ - - - --AACI.pcm.front.0 { -+AACI.pcm.front.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -19,7 +19,7 @@ AACI.pcm.surround40.0 "cards.AACI.pcm.front.0" - - - --AACI.pcm.surround51.0 { -+AACI.pcm.surround51.!0 { - @args [ CARD ] - @args.CARD { - type string -diff --git a/src/conf/cards/ATIIXP-MODEM.conf b/src/conf/cards/ATIIXP-MODEM.conf -index 6e52af05..1f69b735 100644 ---- a/src/conf/cards/ATIIXP-MODEM.conf -+++ b/src/conf/cards/ATIIXP-MODEM.conf -@@ -4,7 +4,7 @@ - - - --ATIIXP-MODEM.pcm.modem.0 { -+ATIIXP-MODEM.pcm.modem.!0 { - @args [ CARD ] - @args.CARD { - type string -diff --git a/src/conf/cards/ATIIXP-SPDMA.conf b/src/conf/cards/ATIIXP-SPDMA.conf -index 42540d68..12c40efc 100644 ---- a/src/conf/cards/ATIIXP-SPDMA.conf -+++ b/src/conf/cards/ATIIXP-SPDMA.conf -@@ -4,7 +4,7 @@ - - - --ATIIXP-SPDMA.pcm.front.0 { -+ATIIXP-SPDMA.pcm.front.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -14,7 +14,7 @@ ATIIXP-SPDMA.pcm.front.0 { - } - - # default with dmix/dsnoop --ATIIXP.pcm.default { -+ATIIXP.pcm.!default { - @args [ CARD ] - @args.CARD { - type string -@@ -38,7 +38,7 @@ ATIIXP.pcm.default { - - - --ATIIXP-SPDMA.pcm.surround40.0 { -+ATIIXP-SPDMA.pcm.surround40.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -82,7 +82,7 @@ ATIIXP-SPDMA.pcm.surround40.0 { - - - --ATIIXP-SPDMA.pcm.surround51.0 { -+ATIIXP-SPDMA.pcm.surround51.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -136,7 +136,7 @@ ATIIXP-SPDMA.pcm.surround51.0 { - - - --ATIIXP-SPDMA.pcm.iec958.0 { -+ATIIXP-SPDMA.pcm.iec958.!0 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { - type string -diff --git a/src/conf/cards/ATIIXP.conf b/src/conf/cards/ATIIXP.conf -index c4d33ef3..13e01c48 100644 ---- a/src/conf/cards/ATIIXP.conf -+++ b/src/conf/cards/ATIIXP.conf -@@ -4,7 +4,7 @@ - - - --ATIIXP.pcm.front.0 { -+ATIIXP.pcm.front.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -14,7 +14,7 @@ ATIIXP.pcm.front.0 { - } - - # default with dmix/dsnoop --ATIIXP.pcm.default { -+ATIIXP.pcm.!default { - @args [ CARD ] - @args.CARD { - type string -@@ -38,7 +38,7 @@ ATIIXP.pcm.default { - - - --ATIIXP.pcm.surround40.0 { -+ATIIXP.pcm.surround40.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -82,7 +82,7 @@ ATIIXP.pcm.surround40.0 { - - - --ATIIXP.pcm.surround51.0 { -+ATIIXP.pcm.surround51.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -136,7 +136,7 @@ ATIIXP.pcm.surround51.0 { - - - --ATIIXP.pcm.iec958.0 { -+ATIIXP.pcm.iec958.!0 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { - type string --- -2.51.1 - - -From e5dbefdff1254fb66ffa82983c6fed08ba8e37df Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Wed, 10 Dec 2025 12:12:47 +0100 -Subject: [PATCH 10/43] conf: Audigy: define pcm configuration block only one - time - -There may be multiple Audigy soundcards in the system. Overwrite -the PCM configurations when loaded multiple times. - -Signed-off-by: Jaroslav Kysela ---- - src/conf/cards/Audigy.conf | 12 ++++++------ - src/conf/cards/Audigy2.conf | 16 ++++++++-------- - 2 files changed, 14 insertions(+), 14 deletions(-) - -diff --git a/src/conf/cards/Audigy.conf b/src/conf/cards/Audigy.conf -index 42692cfd..a353c624 100644 ---- a/src/conf/cards/Audigy.conf -+++ b/src/conf/cards/Audigy.conf -@@ -4,7 +4,7 @@ - - - --Audigy.pcm.front.0 { -+Audigy.pcm.front.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -40,7 +40,7 @@ Audigy.pcm.front.0 { - - - --Audigy.pcm.rear.0 { -+Audigy.pcm.rear.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -68,7 +68,7 @@ Audigy.pcm.rear.0 { - - - --Audigy.pcm.center_lfe.0 { -+Audigy.pcm.center_lfe.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -107,7 +107,7 @@ Audigy.pcm.center_lfe.0 { - - - --Audigy.pcm.surround40.0 { -+Audigy.pcm.surround40.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -143,7 +143,7 @@ Audigy.pcm.surround40.0 { - - - --Audigy.pcm.surround51.0 { -+Audigy.pcm.surround51.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -190,7 +190,7 @@ Audigy.pcm.surround51.0 { - - - --Audigy.pcm.iec958.0 { -+Audigy.pcm.iec958.!0 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { - type string -diff --git a/src/conf/cards/Audigy2.conf b/src/conf/cards/Audigy2.conf -index 35126d23..3c15fd1d 100644 ---- a/src/conf/cards/Audigy2.conf -+++ b/src/conf/cards/Audigy2.conf -@@ -4,7 +4,7 @@ - - - --Audigy2.pcm.front.0 { -+Audigy2.pcm.front.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -41,7 +41,7 @@ Audigy2.pcm.front.0 { - - - --Audigy2.pcm.rear.0 { -+Audigy2.pcm.rear.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -69,7 +69,7 @@ Audigy2.pcm.rear.0 { - - - --Audigy2.pcm.center_lfe.0 { -+Audigy2.pcm.center_lfe.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -105,7 +105,7 @@ Audigy2.pcm.center_lfe.0 { - - - --Audigy2.pcm.side.0 { -+Audigy2.pcm.side.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -144,7 +144,7 @@ Audigy2.pcm.side.0 { - - - --Audigy2.pcm.surround40.0 { -+Audigy2.pcm.surround40.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -180,7 +180,7 @@ Audigy2.pcm.surround40.0 { - - - --Audigy2.pcm.surround51.0 { -+Audigy2.pcm.surround51.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -227,7 +227,7 @@ Audigy2.pcm.surround51.0 { - - - --Audigy2.pcm.surround71.0 { -+Audigy2.pcm.surround71.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -285,7 +285,7 @@ Audigy2.pcm.surround71.0 { - - - --Audigy2.pcm.iec958.0 { -+Audigy2.pcm.iec958.!0 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { - type string --- -2.51.1 - - -From 7079887cd21077fe9569a0d910b11e40f7e5153d Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Wed, 10 Dec 2025 12:12:47 +0100 -Subject: [PATCH 11/43] conf: Aureon: define pcm configuration block only one - time - -There may be multiple Aureon soundcards in the system. Overwrite -the PCM configurations when loaded multiple times. - -Signed-off-by: Jaroslav Kysela ---- - src/conf/cards/Aureon51.conf | 14 +++++++------- - src/conf/cards/Aureon71.conf | 18 +++++++++--------- - 2 files changed, 16 insertions(+), 16 deletions(-) - -diff --git a/src/conf/cards/Aureon51.conf b/src/conf/cards/Aureon51.conf -index 07be4a77..9bf34661 100644 ---- a/src/conf/cards/Aureon51.conf -+++ b/src/conf/cards/Aureon51.conf -@@ -3,7 +3,7 @@ - # - - # default with dmix & dsnoop --Aureon51.pcm.default { -+Aureon51.pcm.!default { - @args [ CARD ] - @args.CARD { - type string -@@ -27,7 +27,7 @@ Aureon51.pcm.default { - - - --Aureon51.pcm.front.0 { -+Aureon51.pcm.front.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -38,7 +38,7 @@ Aureon51.pcm.front.0 { - - - --Aureon51.pcm.rear.0 { -+Aureon51.pcm.rear.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -51,7 +51,7 @@ Aureon51.pcm.rear.0 { - - - --Aureon51.pcm.center_lfe.0 { -+Aureon51.pcm.center_lfe.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -63,7 +63,7 @@ Aureon51.pcm.center_lfe.0 { - - - --Aureon51.pcm.side.0 { -+Aureon51.pcm.side.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -91,7 +91,7 @@ Aureon51.pcm.surround40.0 { - - - --Aureon51.pcm.surround51.0 { -+Aureon51.pcm.surround51.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -103,7 +103,7 @@ Aureon51.pcm.surround51.0 { - - - --Aureon51.pcm.iec958.0 { -+Aureon51.pcm.iec958.!0 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { - type string -diff --git a/src/conf/cards/Aureon71.conf b/src/conf/cards/Aureon71.conf -index a43ce2ce..f29bc297 100644 ---- a/src/conf/cards/Aureon71.conf -+++ b/src/conf/cards/Aureon71.conf -@@ -3,7 +3,7 @@ - # - - # default with dmix & dsnoop --Aureon71.pcm.default { -+Aureon71.pcm.!default { - @args [ CARD ] - @args.CARD { - type string -@@ -27,7 +27,7 @@ Aureon71.pcm.default { - - - --Aureon71.pcm.front.0 { -+Aureon71.pcm.front.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -38,7 +38,7 @@ Aureon71.pcm.front.0 { - - - --Aureon71.pcm.rear.0 { -+Aureon71.pcm.rear.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -50,7 +50,7 @@ Aureon71.pcm.rear.0 { - - - --Aureon71.pcm.center_lfe.0 { -+Aureon71.pcm.center_lfe.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -63,7 +63,7 @@ Aureon71.pcm.center_lfe.0 { - - - --Aureon71.pcm.side.0 { -+Aureon71.pcm.side.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -76,7 +76,7 @@ Aureon71.pcm.side.0 { - - - --Aureon71.pcm.surround40.0 { -+Aureon71.pcm.surround40.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -91,7 +91,7 @@ Aureon71.pcm.surround40.0 { - - - --Aureon71.pcm.surround51.0 { -+Aureon71.pcm.surround51.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -103,7 +103,7 @@ Aureon71.pcm.surround51.0 { - - - --Aureon71.pcm.surround71.0 { -+Aureon71.pcm.surround71.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -114,7 +114,7 @@ Aureon71.pcm.surround71.0 { - - - --Aureon71.pcm.iec958.0 { -+Aureon71.pcm.iec958.!0 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { - type string --- -2.51.1 - - -From ea984c3a7d6fbc3613c72614f5fce18ad2c7f9b1 Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Wed, 10 Dec 2025 12:12:47 +0100 -Subject: [PATCH 12/43] conf: AU88[123]0: define pcm configuration block only - one time - -There may be multiple AU88[123]0 soundcards in the system. Overwrite -the PCM configurations when loaded multiple times. - -Signed-off-by: Jaroslav Kysela ---- - src/conf/cards/AU8810.conf | 4 ++-- - src/conf/cards/AU8820.conf | 2 +- - src/conf/cards/AU8830.conf | 4 ++-- - 3 files changed, 5 insertions(+), 5 deletions(-) - -diff --git a/src/conf/cards/AU8810.conf b/src/conf/cards/AU8810.conf -index 24d46c34..6b596b68 100644 ---- a/src/conf/cards/AU8810.conf -+++ b/src/conf/cards/AU8810.conf -@@ -4,7 +4,7 @@ - - - --AU8810.pcm.front.0 { -+AU8810.pcm.front.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -15,7 +15,7 @@ AU8810.pcm.front.0 { - - - --AU8810.pcm.iec958.0 { -+AU8810.pcm.iec958.!0 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { - type string -diff --git a/src/conf/cards/AU8820.conf b/src/conf/cards/AU8820.conf -index 07890254..fe2cbc11 100644 ---- a/src/conf/cards/AU8820.conf -+++ b/src/conf/cards/AU8820.conf -@@ -4,7 +4,7 @@ - - - --AU8820.pcm.front.0 { -+AU8820.pcm.front.!0 { - @args [ CARD ] - @args.CARD { - type string -diff --git a/src/conf/cards/AU8830.conf b/src/conf/cards/AU8830.conf -index 39e66d50..9cd78b3e 100644 ---- a/src/conf/cards/AU8830.conf -+++ b/src/conf/cards/AU8830.conf -@@ -4,7 +4,7 @@ - - - --AU8830.pcm.front.0 { -+AU8830.pcm.front.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -19,7 +19,7 @@ AU8830.pcm.surround40.0 "cards.AU8830.pcm.front.0" - - - --AU8830.pcm.iec958.0 { -+AU8830.pcm.iec958.!0 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { - type string --- -2.51.1 - - -From 68b8b435416ea734dda55c39f59bea90ea4b0dd6 Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Wed, 10 Dec 2025 12:12:47 +0100 -Subject: [PATCH 13/43] conf: CA0106: define pcm configuration block only one - time - -There may be multiple CA0106 soundcards in the system. Overwrite -the PCM configurations when loaded multiple times. - -Signed-off-by: Jaroslav Kysela ---- - src/conf/cards/CA0106.conf | 18 +++++++++--------- - 1 file changed, 9 insertions(+), 9 deletions(-) - -diff --git a/src/conf/cards/CA0106.conf b/src/conf/cards/CA0106.conf -index 2f0eaf0a..1fea79f5 100644 ---- a/src/conf/cards/CA0106.conf -+++ b/src/conf/cards/CA0106.conf -@@ -3,7 +3,7 @@ - # - - # default with dmix & dsnoop --CA0106.pcm.default { -+CA0106.pcm.!default { - @args [ CARD ] - @args.CARD { - type string -@@ -27,7 +27,7 @@ CA0106.pcm.default { - - - --CA0106.pcm.front.0 { -+CA0106.pcm.front.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -38,7 +38,7 @@ CA0106.pcm.front.0 { - - - --CA0106.pcm.rear.0 { -+CA0106.pcm.rear.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -50,7 +50,7 @@ CA0106.pcm.rear.0 { - - - --CA0106.pcm.center_lfe.0 { -+CA0106.pcm.center_lfe.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -62,7 +62,7 @@ CA0106.pcm.center_lfe.0 { - - - --CA0106.pcm.side.0 { -+CA0106.pcm.side.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -74,7 +74,7 @@ CA0106.pcm.side.0 { - - - --CA0106.pcm.surround40.0 { -+CA0106.pcm.surround40.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -114,7 +114,7 @@ CA0106.pcm.surround40.0 { - - - --CA0106.pcm.surround51.0 { -+CA0106.pcm.surround51.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -159,7 +159,7 @@ CA0106.pcm.surround51.0 { - ] - } - --CA0106.pcm.surround71.0 { -+CA0106.pcm.surround71.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -220,7 +220,7 @@ CA0106.pcm.surround71.0 { - - - --CA0106.pcm.iec958.0 { -+CA0106.pcm.iec958.!0 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { - type string --- -2.51.1 - - -From 041299ea39a7a8d2cb55cb8c2cb5a2e985d38fc3 Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Wed, 10 Dec 2025 12:12:47 +0100 -Subject: [PATCH 14/43] conf: CMI8xxx: define pcm configuration block only one - time - -There may be multiple CMI8xxx soundcards in the system. Overwrite -the PCM configurations when loaded multiple times. - -Signed-off-by: Jaroslav Kysela ---- - src/conf/cards/CMI8338-SWIEC.conf | 10 +++++----- - src/conf/cards/CMI8338.conf | 10 +++++----- - src/conf/cards/CMI8738-MC6.conf | 12 ++++++------ - src/conf/cards/CMI8738-MC8.conf | 14 +++++++------- - src/conf/cards/CMI8788.conf | 12 ++++++------ - 5 files changed, 29 insertions(+), 29 deletions(-) - -diff --git a/src/conf/cards/CMI8338-SWIEC.conf b/src/conf/cards/CMI8338-SWIEC.conf -index af3a579f..ca86c466 100644 ---- a/src/conf/cards/CMI8338-SWIEC.conf -+++ b/src/conf/cards/CMI8338-SWIEC.conf -@@ -5,7 +5,7 @@ - - - --CMI8338-SWIEC.pcm.front.0 { -+CMI8338-SWIEC.pcm.front.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -15,7 +15,7 @@ CMI8338-SWIEC.pcm.front.0 { - } - - # default with dmix/dsnoop --CMI8338-SWIEC.pcm.default { -+CMI8338-SWIEC.pcm.!default { - @args [ CARD ] - @args.CARD { - type string -@@ -41,7 +41,7 @@ CMI8338-SWIEC.pcm.default { - - # 2nd DAC - # FIXME: we need a volume attenuator for rear channel. --CMI8338-SWIEC.pcm.rear.0 { -+CMI8338-SWIEC.pcm.rear.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -54,7 +54,7 @@ CMI8338-SWIEC.pcm.rear.0 { - - - # for the old CM8738 with 2nd DAC for rear --CMI8338-SWIEC.pcm.surround40.0 { -+CMI8338-SWIEC.pcm.surround40.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -91,7 +91,7 @@ CMI8338-SWIEC.pcm.surround40.0 { - - - --CMI8338-SWIEC.pcm.iec958.0 { -+CMI8338-SWIEC.pcm.iec958.!0 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { - type string -diff --git a/src/conf/cards/CMI8338.conf b/src/conf/cards/CMI8338.conf -index 144fc9b0..0f92ad0b 100644 ---- a/src/conf/cards/CMI8338.conf -+++ b/src/conf/cards/CMI8338.conf -@@ -4,7 +4,7 @@ - - - --CMI8338.pcm.front.0 { -+CMI8338.pcm.front.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -14,7 +14,7 @@ CMI8338.pcm.front.0 { - } - - # default with dmix/dsnoop --CMI8338.pcm.default { -+CMI8338.pcm.!default { - @args [ CARD ] - @args.CARD { - type string -@@ -40,7 +40,7 @@ CMI8338.pcm.default { - - # 2nd DAC - # FIXME: we need a volume attenuator for rear channel. --CMI8338.pcm.rear.0 { -+CMI8338.pcm.rear.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -53,7 +53,7 @@ CMI8338.pcm.rear.0 { - - - # for the old CM8738 with 2nd DAC for rear --CMI8338.pcm.surround40.0 { -+CMI8338.pcm.surround40.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -90,7 +90,7 @@ CMI8338.pcm.surround40.0 { - - - --CMI8338.pcm.iec958.0 { -+CMI8338.pcm.iec958.!0 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { - type string -diff --git a/src/conf/cards/CMI8738-MC6.conf b/src/conf/cards/CMI8738-MC6.conf -index edc67d44..2b1c7d05 100644 ---- a/src/conf/cards/CMI8738-MC6.conf -+++ b/src/conf/cards/CMI8738-MC6.conf -@@ -4,7 +4,7 @@ - - - --CMI8738-MC6.pcm.front.0 { -+CMI8738-MC6.pcm.front.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -14,7 +14,7 @@ CMI8738-MC6.pcm.front.0 { - } - - # default with dmix/dsnoop --CMI8738-MC6.pcm.default { -+CMI8738-MC6.pcm.!default { - @args [ CARD ] - @args.CARD { - type string -@@ -40,7 +40,7 @@ CMI8738-MC6.pcm.default { - - # 2nd DAC - # FIXME: we need a volume attenuator for rear channel. --CMI8738-MC6.pcm.rear.0 { -+CMI8738-MC6.pcm.rear.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -52,7 +52,7 @@ CMI8738-MC6.pcm.rear.0 { - - - --CMI8738-MC6.pcm.surround40.0 { -+CMI8738-MC6.pcm.surround40.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -82,7 +82,7 @@ CMI8738-MC6.pcm.surround40.0 { - - - --CMI8738-MC6.pcm.surround51.0 { -+CMI8738-MC6.pcm.surround51.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -109,7 +109,7 @@ CMI8738-MC6.pcm.surround51.0 { - - - --CMI8738-MC6.pcm.iec958.0 { -+CMI8738-MC6.pcm.iec958.!0 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { - type string -diff --git a/src/conf/cards/CMI8738-MC8.conf b/src/conf/cards/CMI8738-MC8.conf -index ddff7530..96cb3f10 100644 ---- a/src/conf/cards/CMI8738-MC8.conf -+++ b/src/conf/cards/CMI8738-MC8.conf -@@ -4,7 +4,7 @@ - - - --CMI8738-MC8.pcm.front.0 { -+CMI8738-MC8.pcm.front.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -21,7 +21,7 @@ CMI8738-MC8.pcm.front.0 { - } - - # default with dmix+softvol & dsnoop --CMI8738-MC8.pcm.default { -+CMI8738-MC8.pcm.!default { - @args [ CARD ] - @args.CARD { - type string -@@ -53,7 +53,7 @@ CMI8738-MC8.pcm.default { - - - # 2nd DAC --CMI8738-MC8.pcm.rear.0 { -+CMI8738-MC8.pcm.rear.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -72,7 +72,7 @@ CMI8738-MC8.pcm.rear.0 { - - - --CMI8738-MC8.pcm.surround40.0 { -+CMI8738-MC8.pcm.surround40.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -110,7 +110,7 @@ CMI8738-MC8.pcm.surround40.0 { - - - --CMI8738-MC8.pcm.surround51.0 { -+CMI8738-MC8.pcm.surround51.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -144,7 +144,7 @@ CMI8738-MC8.pcm.surround51.0 { - - - --CMI8738-MC8.pcm.surround71.0 { -+CMI8738-MC8.pcm.surround71.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -178,7 +178,7 @@ CMI8738-MC8.pcm.surround71.0 { - - - --CMI8738-MC8.pcm.iec958.0 { -+CMI8738-MC8.pcm.iec958.!0 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { - type string -diff --git a/src/conf/cards/CMI8788.conf b/src/conf/cards/CMI8788.conf -index edcb0c9c..c4ad9f48 100644 ---- a/src/conf/cards/CMI8788.conf -+++ b/src/conf/cards/CMI8788.conf -@@ -4,7 +4,7 @@ - - - --CMI8788.pcm.front.0 { -+CMI8788.pcm.front.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -14,7 +14,7 @@ CMI8788.pcm.front.0 { - } - - # default with dmix & dsnoop --CMI8788.pcm.default { -+CMI8788.pcm.!default { - @args [ CARD ] - @args.CARD { - type string -@@ -38,7 +38,7 @@ CMI8788.pcm.default { - - - --CMI8788.pcm.surround40.0 { -+CMI8788.pcm.surround40.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -53,7 +53,7 @@ CMI8788.pcm.surround40.0 { - - - --CMI8788.pcm.surround51.0 { -+CMI8788.pcm.surround51.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -65,7 +65,7 @@ CMI8788.pcm.surround51.0 { - - - --CMI8788.pcm.surround71.0 { -+CMI8788.pcm.surround71.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -77,7 +77,7 @@ CMI8788.pcm.surround71.0 { - - - --CMI8788.pcm.iec958.0 { -+CMI8788.pcm.iec958.!0 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { - type string --- -2.51.1 - - -From 1e29ff18400e9b219159f9d0cb9aaf4be3b82efa Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Wed, 10 Dec 2025 12:12:47 +0100 -Subject: [PATCH 15/43] conf: CS46xx: define pcm configuration block only one - time - -There may be multiple CS46xx soundcards in the system. Overwrite -the PCM configurations when loaded multiple times. - -Signed-off-by: Jaroslav Kysela ---- - src/conf/cards/CS46xx.conf | 14 +++++++------- - 1 file changed, 7 insertions(+), 7 deletions(-) - -diff --git a/src/conf/cards/CS46xx.conf b/src/conf/cards/CS46xx.conf -index b71c30aa..478cbf3e 100644 ---- a/src/conf/cards/CS46xx.conf -+++ b/src/conf/cards/CS46xx.conf -@@ -4,7 +4,7 @@ - - - --CS46xx.pcm.front.0 { -+CS46xx.pcm.front.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -15,7 +15,7 @@ CS46xx.pcm.front.0 { - - # default with plughw - # CS46xx supports multi-playback --CS46xx.pcm.default { -+CS46xx.pcm.!default { - @args [ CARD ] - @args.CARD { - type string -@@ -39,7 +39,7 @@ CS46xx.pcm.default { - - - --CS46xx.pcm.rear.0 { -+CS46xx.pcm.rear.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -66,7 +66,7 @@ CS46xx.pcm.rear.0 { - - - --CS46xx.pcm.center_lfe.0 { -+CS46xx.pcm.center_lfe.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -78,7 +78,7 @@ CS46xx.pcm.center_lfe.0 { - - - --CS46xx.pcm.surround40.0 { -+CS46xx.pcm.surround40.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -117,7 +117,7 @@ CS46xx.pcm.surround40.0 { - - - --CS46xx.pcm.surround51.0 { -+CS46xx.pcm.surround51.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -164,7 +164,7 @@ CS46xx.pcm.surround51.0 { - - - --CS46xx.pcm.iec958.0 { -+CS46xx.pcm.iec958.!0 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { - type string --- -2.51.1 - - -From 0ba7c2716567875d207b71b61e1205b855c7fd9c Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Wed, 10 Dec 2025 12:12:47 +0100 -Subject: [PATCH 16/43] conf: Echo3G: define pcm configuration block only one - time - -There may be multiple Echo3G soundcards in the system. Overwrite -the PCM configurations when loaded multiple times. - -Signed-off-by: Jaroslav Kysela ---- - src/conf/cards/Echo_Echo3G.conf | 20 ++++++++++---------- - 1 file changed, 10 insertions(+), 10 deletions(-) - -diff --git a/src/conf/cards/Echo_Echo3G.conf b/src/conf/cards/Echo_Echo3G.conf -index 766f13f7..fb2a7b67 100644 ---- a/src/conf/cards/Echo_Echo3G.conf -+++ b/src/conf/cards/Echo_Echo3G.conf -@@ -3,7 +3,7 @@ - # - - --Echo_Echo3G.pcm.front.0 { -+Echo_Echo3G.pcm.front.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -15,7 +15,7 @@ Echo_Echo3G.pcm.front.0 { - } - - --Echo_Echo3G.pcm.rear.0 { -+Echo_Echo3G.pcm.rear.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -27,7 +27,7 @@ Echo_Echo3G.pcm.rear.0 { - } - - --Echo_Echo3G.pcm.center_lfe.0 { -+Echo_Echo3G.pcm.center_lfe.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -39,7 +39,7 @@ Echo_Echo3G.pcm.center_lfe.0 { - } - - --Echo_Echo3G.pcm.side.0 { -+Echo_Echo3G.pcm.side.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -51,7 +51,7 @@ Echo_Echo3G.pcm.side.0 { - } - - --Echo_Echo3G.pcm.surround40.0 { -+Echo_Echo3G.pcm.surround40.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -86,7 +86,7 @@ Echo_Echo3G.pcm.surround40.0 { - } - - --Echo_Echo3G.pcm.surround41.0 { -+Echo_Echo3G.pcm.surround41.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -131,7 +131,7 @@ Echo_Echo3G.pcm.surround41.0 { - } - - --Echo_Echo3G.pcm.surround50.0 { -+Echo_Echo3G.pcm.surround50.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -176,7 +176,7 @@ Echo_Echo3G.pcm.surround50.0 { - } - - --Echo_Echo3G.pcm.surround51.0 { -+Echo_Echo3G.pcm.surround51.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -222,7 +222,7 @@ Echo_Echo3G.pcm.surround51.0 { - } - - --Echo_Echo3G.pcm.surround71.0 { -+Echo_Echo3G.pcm.surround71.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -279,7 +279,7 @@ Echo_Echo3G.pcm.surround71.0 { - } - - --Echo_Echo3G.pcm.iec958.0 { -+Echo_Echo3G.pcm.iec958.!0 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { - type string --- -2.51.1 - - -From 8c1005624495b61919080959088dc744d6d213ea Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Wed, 10 Dec 2025 16:08:42 +0100 -Subject: [PATCH 17/43] conf: Aureon51: define pcm configuration block only one - time - -There may be multiple Aureon51 soundcards in the system. Overwrite -the PCM configurations when loaded multiple times. - -Signed-off-by: Jaroslav Kysela ---- - src/conf/cards/Aureon51.conf | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/conf/cards/Aureon51.conf b/src/conf/cards/Aureon51.conf -index 9bf34661..db907f82 100644 ---- a/src/conf/cards/Aureon51.conf -+++ b/src/conf/cards/Aureon51.conf -@@ -76,7 +76,7 @@ Aureon51.pcm.side.!0 { - - - --Aureon51.pcm.surround40.0 { -+Aureon51.pcm.surround40.!0 { - @args [ CARD ] - @args.CARD { - type string --- -2.51.1 - - -From ed4884cbe179f42a10771584ebe9fff844b90d4f Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Wed, 10 Dec 2025 16:08:42 +0100 -Subject: [PATCH 18/43] conf: EMU10K1: define pcm configuration block only one - time - -There may be multiple EMU10K1 soundcards in the system. Overwrite -the PCM configurations when loaded multiple times. - -Signed-off-by: Jaroslav Kysela ---- - src/conf/cards/EMU10K1.conf | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) - -diff --git a/src/conf/cards/EMU10K1.conf b/src/conf/cards/EMU10K1.conf -index 430926c7..5ef12c03 100644 ---- a/src/conf/cards/EMU10K1.conf -+++ b/src/conf/cards/EMU10K1.conf -@@ -4,7 +4,7 @@ - - - --EMU10K1.pcm.front.0 { -+EMU10K1.pcm.front.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -47,7 +47,7 @@ EMU10K1.pcm.front.0 { - - - --EMU10K1.pcm.rear.0 { -+EMU10K1.pcm.rear.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -78,7 +78,7 @@ EMU10K1.pcm.rear.0 { - - - --EMU10K1.pcm.center_lfe.0 { -+EMU10K1.pcm.center_lfe.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -143,7 +143,7 @@ EMU10K1.pcm.center_lfe.0 { - - - --EMU10K1.pcm.surround40.0 { -+EMU10K1.pcm.surround40.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -182,7 +182,7 @@ EMU10K1.pcm.surround40.0 { - - - --EMU10K1.pcm.surround51.0 { -+EMU10K1.pcm.surround51.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -229,7 +229,7 @@ EMU10K1.pcm.surround51.0 { - - - --EMU10K1.pcm.iec958.0 { -+EMU10K1.pcm.iec958.!0 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { - type string --- -2.51.1 - - -From dba724706a6eec70e52e31595b3ff1ec055bf50c Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Wed, 10 Dec 2025 16:17:45 +0100 -Subject: [PATCH 19/43] conf: EMU10K1X: define pcm configuration block only one - time - -There may be multiple EMU10K1X soundcards in the system. Overwrite -the PCM configurations when loaded multiple times. - -Signed-off-by: Jaroslav Kysela ---- - src/conf/cards/EMU10K1X.conf | 14 +++++++------- - 1 file changed, 7 insertions(+), 7 deletions(-) - -diff --git a/src/conf/cards/EMU10K1X.conf b/src/conf/cards/EMU10K1X.conf -index f7428636..334f897d 100644 ---- a/src/conf/cards/EMU10K1X.conf -+++ b/src/conf/cards/EMU10K1X.conf -@@ -3,7 +3,7 @@ - # - - # default with dmix & dsnoop --EMU10K1X.pcm.default { -+EMU10K1X.pcm.!default { - @args [ CARD ] - @args.CARD { - type string -@@ -27,7 +27,7 @@ EMU10K1X.pcm.default { - - - --EMU10K1X.pcm.front.0 { -+EMU10K1X.pcm.front.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -38,7 +38,7 @@ EMU10K1X.pcm.front.0 { - - - --EMU10K1X.pcm.rear.0 { -+EMU10K1X.pcm.rear.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -50,7 +50,7 @@ EMU10K1X.pcm.rear.0 { - - - --EMU10K1X.pcm.center_lfe.0 { -+EMU10K1X.pcm.center_lfe.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -62,7 +62,7 @@ EMU10K1X.pcm.center_lfe.0 { - - - --EMU10K1X.pcm.surround40.0 { -+EMU10K1X.pcm.surround40.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -101,7 +101,7 @@ EMU10K1X.pcm.surround40.0 { - - - --EMU10K1X.pcm.surround51.0 { -+EMU10K1X.pcm.surround51.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -148,7 +148,7 @@ EMU10K1X.pcm.surround51.0 { - - - --EMU10K1X.pcm.iec958.0 { -+EMU10K1X.pcm.iec958.!0 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { - type string --- -2.51.1 - - -From 7cf26f603823cccd3e89eb57f459642c890b79af Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Wed, 10 Dec 2025 16:17:45 +0100 -Subject: [PATCH 20/43] conf: ENS137[01]: define pcm configuration block only - one time - -There may be multiple ENS137[01] soundcards in the system. Overwrite -the PCM configurations when loaded multiple times. - -Signed-off-by: Jaroslav Kysela ---- - src/conf/cards/ENS1370.conf | 8 ++++---- - src/conf/cards/ENS1371.conf | 10 +++++----- - 2 files changed, 9 insertions(+), 9 deletions(-) - -diff --git a/src/conf/cards/ENS1370.conf b/src/conf/cards/ENS1370.conf -index 32e4782e..c65e224f 100644 ---- a/src/conf/cards/ENS1370.conf -+++ b/src/conf/cards/ENS1370.conf -@@ -4,7 +4,7 @@ - - - --ENS1370.pcm.front.0 { -+ENS1370.pcm.front.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -15,7 +15,7 @@ ENS1370.pcm.front.0 { - } - - # default with dmix/dsnoop --ENS1370.pcm.default { -+ENS1370.pcm.!default { - @args [ CARD ] - @args.CARD { - type string -@@ -39,7 +39,7 @@ ENS1370.pcm.default { - - - --ENS1370.pcm.rear.0 { -+ENS1370.pcm.rear.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -71,7 +71,7 @@ ENS1370.pcm.rear.0 { - - - --ENS1370.pcm.surround40.0 { -+ENS1370.pcm.surround40.!0 { - @args [ CARD ] - @args.CARD { - type string -diff --git a/src/conf/cards/ENS1371.conf b/src/conf/cards/ENS1371.conf -index a6df4251..560fda9f 100644 ---- a/src/conf/cards/ENS1371.conf -+++ b/src/conf/cards/ENS1371.conf -@@ -4,7 +4,7 @@ - - - --ENS1371.pcm.front.0 { -+ENS1371.pcm.front.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -14,7 +14,7 @@ ENS1371.pcm.front.0 { - } - - # default with dmix/dsnoop --ENS1371.pcm.default { -+ENS1371.pcm.!default { - @args [ CARD ] - @args.CARD { - type string -@@ -38,7 +38,7 @@ ENS1371.pcm.default { - - - --ENS1371.pcm.rear.0 { -+ENS1371.pcm.rear.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -65,7 +65,7 @@ ENS1371.pcm.rear.0 { - - - --ENS1371.pcm.surround40.0 { -+ENS1371.pcm.surround40.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -97,7 +97,7 @@ ENS1371.pcm.surround40.0 { - - - --ENS1371.pcm.iec958.0 { -+ENS1371.pcm.iec958.!0 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { - type string --- -2.51.1 - - -From 001a2f3809865d071b53e802d4fbc89bb37a2fe1 Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Wed, 10 Dec 2025 16:17:45 +0100 -Subject: [PATCH 21/43] conf: ES1968: define pcm configuration block only one - time - -There may be multiple ES1968 soundcards in the system. Overwrite -the PCM configurations when loaded multiple times. - -Signed-off-by: Jaroslav Kysela ---- - src/conf/cards/ES1968.conf | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/conf/cards/ES1968.conf b/src/conf/cards/ES1968.conf -index a6ee1192..296baa13 100644 ---- a/src/conf/cards/ES1968.conf -+++ b/src/conf/cards/ES1968.conf -@@ -2,7 +2,7 @@ - - - --ES1968.pcm.front.0 { -+ES1968.pcm.front.!0 { - @args [ CARD ] - @args.CARD { - type string --- -2.51.1 - - -From 2d5aa02738faf79895fa7457182810bee2ce7b90 Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Wed, 10 Dec 2025 16:17:46 +0100 -Subject: [PATCH 22/43] conf: FireWave: define pcm configuration block only one - time - -There may be multiple FireWave soundcards in the system. Overwrite -the PCM configurations when loaded multiple times. - -Signed-off-by: Jaroslav Kysela ---- - src/conf/cards/FireWave.conf | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/src/conf/cards/FireWave.conf b/src/conf/cards/FireWave.conf -index fcfc83cc..786169f2 100644 ---- a/src/conf/cards/FireWave.conf -+++ b/src/conf/cards/FireWave.conf -@@ -2,7 +2,7 @@ - # Configuration for the Griffin FireWave Surround - # - --FireWave.pcm.default { -+FireWave.pcm.!default { - @args [ CARD ] - @args.CARD { - type string -@@ -16,7 +16,7 @@ FireWave.pcm.default { - - - --FireWave.pcm.front.0 { -+FireWave.pcm.front.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -30,7 +30,7 @@ FireWave.pcm.front.0 { - - - --FireWave.pcm.surround51.0 { -+FireWave.pcm.surround51.!0 { - @args [ CARD ] - @args.CARD { - type string --- -2.51.1 - - -From 9f46e1a5a48f863e38794aa5b7c350d291078924 Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Wed, 10 Dec 2025 16:17:46 +0100 -Subject: [PATCH 23/43] conf: FM801: define pcm configuration block only one - time - -There may be multiple FM801 soundcards in the system. Overwrite -the PCM configurations when loaded multiple times. - -Signed-off-by: Jaroslav Kysela ---- - src/conf/cards/FM801.conf | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/src/conf/cards/FM801.conf b/src/conf/cards/FM801.conf -index 0ddf799c..14cfdbe8 100644 ---- a/src/conf/cards/FM801.conf -+++ b/src/conf/cards/FM801.conf -@@ -4,7 +4,7 @@ - - - --FM801.pcm.front.0 { -+FM801.pcm.front.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -14,7 +14,7 @@ FM801.pcm.front.0 { - } - - # default with dmix/dsnoop --FM801.pcm.default { -+FM801.pcm.!default { - @args [ CARD ] - @args.CARD { - type string -@@ -49,7 +49,7 @@ FM801.pcm.surround51.0 "cards.FM801.pcm.front.0" - - - --FM801.pcm.iec958.0 { -+FM801.pcm.iec958.!0 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { - type string --- -2.51.1 - - -From ea939799299ff88c254344c7a89e86ffa159e5a7 Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Wed, 10 Dec 2025 16:17:46 +0100 -Subject: [PATCH 24/43] conf: FWSpeakers: define pcm configuration block only - one time - -There may be multiple FWSpeakers soundcards in the system. Overwrite -the PCM configurations when loaded multiple times. - -Signed-off-by: Jaroslav Kysela ---- - src/conf/cards/FWSpeakers.conf | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/conf/cards/FWSpeakers.conf b/src/conf/cards/FWSpeakers.conf -index cd6fa605..96ab5cb9 100644 ---- a/src/conf/cards/FWSpeakers.conf -+++ b/src/conf/cards/FWSpeakers.conf -@@ -2,7 +2,7 @@ - # Configuration for the LaCie Firewire speakers - # - --FWSpeakers.pcm.default { -+FWSpeakers.pcm.!default { - @args [ CARD ] - @args.CARD { - type string -@@ -16,7 +16,7 @@ FWSpeakers.pcm.default { - - - --FWSpeakers.pcm.front.0 { -+FWSpeakers.pcm.front.!0 { - @args [ CARD ] - @args.CARD { - type string --- -2.51.1 - - -From a87570df7247d979eb5106ca549fa776e4c51ab3 Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Wed, 10 Dec 2025 16:17:47 +0100 -Subject: [PATCH 25/43] conf: GUS: define pcm configuration block only one time - -There may be multiple GUS soundcards in the system. Overwrite -the PCM configurations when loaded multiple times. - -Signed-off-by: Jaroslav Kysela ---- - src/conf/cards/GUS.conf | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/conf/cards/GUS.conf b/src/conf/cards/GUS.conf -index d744c548..a1ccd0e9 100644 ---- a/src/conf/cards/GUS.conf -+++ b/src/conf/cards/GUS.conf -@@ -4,7 +4,7 @@ - - - --GUS.pcm.front.0 { -+GUS.pcm.front.!0 { - @args [ CARD ] - @args.CARD { - type string --- -2.51.1 - - -From dded72a687e8e8210b276ab13f4e26b63bfa782b Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Wed, 10 Dec 2025 16:17:47 +0100 -Subject: [PATCH 26/43] conf: HdmiLpeAudio: define pcm configuration block only - one time - -There may be multiple HdmiLpeAudio soundcards in the system. Overwrite -the PCM configurations when loaded multiple times. - -Signed-off-by: Jaroslav Kysela ---- - src/conf/cards/HdmiLpeAudio.conf | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/src/conf/cards/HdmiLpeAudio.conf b/src/conf/cards/HdmiLpeAudio.conf -index a9104f43..799946a2 100644 ---- a/src/conf/cards/HdmiLpeAudio.conf -+++ b/src/conf/cards/HdmiLpeAudio.conf -@@ -2,7 +2,7 @@ - # Configuration for the Intel HDMI/DP LPE audio - # - --HdmiLpeAudio.pcm.hdmi.0 { -+HdmiLpeAudio.pcm.hdmi.!0 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { - type string -@@ -39,7 +39,7 @@ HdmiLpeAudio.pcm.hdmi.0 { - } - } - --HdmiLpeAudio.pcm.hdmi.1 { -+HdmiLpeAudio.pcm.hdmi.!1 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { - type string -@@ -77,7 +77,7 @@ HdmiLpeAudio.pcm.hdmi.1 { - } - } - --HdmiLpeAudio.pcm.hdmi.2 { -+HdmiLpeAudio.pcm.hdmi.!2 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { - type string --- -2.51.1 - - -From 1f52b57ff8f023b396b459407e60d8498c69f6e7 Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Wed, 10 Dec 2025 16:17:57 +0100 -Subject: [PATCH 27/43] conf: ICE17[12][24]: define pcm configuration block - only one time - -There may be multiple ICE17[12][24] soundcards in the system. Overwrite -the PCM configurations when loaded multiple times. - -Signed-off-by: Jaroslav Kysela ---- - src/conf/cards/ICE1712.conf | 12 ++++++------ - src/conf/cards/ICE1724.conf | 18 +++++++++--------- - 2 files changed, 15 insertions(+), 15 deletions(-) - -diff --git a/src/conf/cards/ICE1712.conf b/src/conf/cards/ICE1712.conf -index db62684e..190d2c59 100644 ---- a/src/conf/cards/ICE1712.conf -+++ b/src/conf/cards/ICE1712.conf -@@ -3,7 +3,7 @@ - # - - # default with dmix & dsnoop --ICE1712.pcm.default { -+ICE1712.pcm.!default { - @args [ CARD ] - @args.CARD { - type string -@@ -27,7 +27,7 @@ ICE1712.pcm.default { - - - --ICE1712.pcm.front.0 { -+ICE1712.pcm.front.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -57,7 +57,7 @@ ICE1712.pcm.front.0 { - - - --ICE1712.pcm.surround40.0 { -+ICE1712.pcm.surround40.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -80,7 +80,7 @@ ICE1712.pcm.surround40.0 { - - - --ICE1712.pcm.surround51.0 { -+ICE1712.pcm.surround51.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -99,7 +99,7 @@ ICE1712.pcm.surround51.0 { - slave.channels 10 - } - --ICE1712.pcm.surround71.0 { -+ICE1712.pcm.surround71.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -122,7 +122,7 @@ ICE1712.pcm.surround71.0 { - - - --ICE1712.pcm.iec958.0 { -+ICE1712.pcm.iec958.!0 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { - type string -diff --git a/src/conf/cards/ICE1724.conf b/src/conf/cards/ICE1724.conf -index 61cac013..16045dc4 100644 ---- a/src/conf/cards/ICE1724.conf -+++ b/src/conf/cards/ICE1724.conf -@@ -3,7 +3,7 @@ - # - - # default with dmix & dsnoop --ICE1724.pcm.default { -+ICE1724.pcm.!default { - @args [ CARD ] - @args.CARD { - type string -@@ -27,7 +27,7 @@ ICE1724.pcm.default { - - - --ICE1724.pcm.front.0 { -+ICE1724.pcm.front.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -38,7 +38,7 @@ ICE1724.pcm.front.0 { - - - --ICE1724.pcm.rear.0 { -+ICE1724.pcm.rear.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -51,7 +51,7 @@ ICE1724.pcm.rear.0 { - - - --ICE1724.pcm.center_lfe.0 { -+ICE1724.pcm.center_lfe.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -63,7 +63,7 @@ ICE1724.pcm.center_lfe.0 { - - - --ICE1724.pcm.side.0 { -+ICE1724.pcm.side.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -76,7 +76,7 @@ ICE1724.pcm.side.0 { - - - --ICE1724.pcm.surround40.0 { -+ICE1724.pcm.surround40.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -100,7 +100,7 @@ ICE1724.pcm.surround40.0 { - - - --ICE1724.pcm.surround51.0 { -+ICE1724.pcm.surround51.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -123,7 +123,7 @@ ICE1724.pcm.surround51.0 { - - - --ICE1724.pcm.surround71.0 { -+ICE1724.pcm.surround71.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -148,7 +148,7 @@ ICE1724.pcm.surround71.0 { - - - --ICE1724.pcm.iec958.0 { -+ICE1724.pcm.iec958.!0 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { - type string --- -2.51.1 - - -From 99f1987a1e864523a7a423f1840ca6a76045d619 Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Wed, 10 Dec 2025 16:17:57 +0100 -Subject: [PATCH 28/43] conf: ICH,ICH4,ICH-MODEM: define pcm configuration - block only one time - -There may be multiple ICH soundcards in the system. Overwrite -the PCM configurations when loaded multiple times. - -Signed-off-by: Jaroslav Kysela ---- - src/conf/cards/ICH-MODEM.conf | 2 +- - src/conf/cards/ICH.conf | 10 +++++----- - src/conf/cards/ICH4.conf | 10 +++++----- - 3 files changed, 11 insertions(+), 11 deletions(-) - -diff --git a/src/conf/cards/ICH-MODEM.conf b/src/conf/cards/ICH-MODEM.conf -index b96b5aaf..855f3a96 100644 ---- a/src/conf/cards/ICH-MODEM.conf -+++ b/src/conf/cards/ICH-MODEM.conf -@@ -4,7 +4,7 @@ - - - --ICH-MODEM.pcm.modem.0 { -+ICH-MODEM.pcm.modem.!0 { - @args [ CARD ] - @args.CARD { - type string -diff --git a/src/conf/cards/ICH.conf b/src/conf/cards/ICH.conf -index 6fc9a5a2..c35c8d02 100644 ---- a/src/conf/cards/ICH.conf -+++ b/src/conf/cards/ICH.conf -@@ -4,7 +4,7 @@ - - - --ICH.pcm.front.0 { -+ICH.pcm.front.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -21,7 +21,7 @@ ICH.pcm.front.0 { - } - - # default with dmix+softvol & dsnoop --ICH.pcm.default { -+ICH.pcm.!default { - @args [ CARD ] - @args.CARD { - type string -@@ -52,7 +52,7 @@ ICH.pcm.default { - - - --ICH.pcm.surround40.0 { -+ICH.pcm.surround40.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -103,7 +103,7 @@ ICH.pcm.surround40.0 { - - - --ICH.pcm.surround51.0 { -+ICH.pcm.surround51.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -174,7 +174,7 @@ ICH.pcm.surround51.0 { - - - --ICH.pcm.iec958.0 { -+ICH.pcm.iec958.!0 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { - type string -diff --git a/src/conf/cards/ICH4.conf b/src/conf/cards/ICH4.conf -index 64ec883d..11c85a6e 100644 ---- a/src/conf/cards/ICH4.conf -+++ b/src/conf/cards/ICH4.conf -@@ -4,7 +4,7 @@ - - - --ICH4.pcm.front.0 { -+ICH4.pcm.front.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -21,7 +21,7 @@ ICH4.pcm.front.0 { - } - - # default with dmix+softvol & dsnoop --ICH4.pcm.default { -+ICH4.pcm.!default { - @args [ CARD ] - @args.CARD { - type string -@@ -52,7 +52,7 @@ ICH4.pcm.default { - - - --ICH4.pcm.surround40.0 { -+ICH4.pcm.surround40.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -103,7 +103,7 @@ ICH4.pcm.surround40.0 { - - - --ICH4.pcm.surround51.0 { -+ICH4.pcm.surround51.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -164,7 +164,7 @@ ICH4.pcm.surround51.0 { - - - --ICH4.pcm.iec958.0 { -+ICH4.pcm.iec958.!0 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { - type string --- -2.51.1 - - -From ff4fb7f8c98157010c44f7335a32a09e9fc085d6 Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Wed, 10 Dec 2025 16:17:57 +0100 -Subject: [PATCH 29/43] conf: Loopback: define pcm configuration block only one - time - -There may be multiple Loopback soundcards in the system. Overwrite -the PCM configurations when loaded multiple times. - -Signed-off-by: Jaroslav Kysela ---- - src/conf/cards/Loopback.conf | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/conf/cards/Loopback.conf b/src/conf/cards/Loopback.conf -index 1ae6d453..21c8429c 100644 ---- a/src/conf/cards/Loopback.conf -+++ b/src/conf/cards/Loopback.conf -@@ -4,7 +4,7 @@ - - - --Loopback.pcm.front.0 { -+Loopback.pcm.front.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -21,7 +21,7 @@ Loopback.pcm.front.0 { - } - - # default with dmix+softvol & dsnoop --Loopback.pcm.default { -+Loopback.pcm.!default { - @args [ CARD ] - @args.CARD { - type string --- -2.51.1 - - -From de72d657281c043c8d48d23cb8da9b1c4c5f31de Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Wed, 10 Dec 2025 16:17:57 +0100 -Subject: [PATCH 30/43] conf: Maestro3: define pcm configuration block only one - time - -There may be multiple Maestro3 soundcards in the system. Overwrite -the PCM configurations when loaded multiple times. - -Signed-off-by: Jaroslav Kysela ---- - src/conf/cards/Maestro3.conf | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/conf/cards/Maestro3.conf b/src/conf/cards/Maestro3.conf -index 94323227..a8d89a48 100644 ---- a/src/conf/cards/Maestro3.conf -+++ b/src/conf/cards/Maestro3.conf -@@ -2,7 +2,7 @@ - - - --Maestro3.pcm.front.0 { -+Maestro3.pcm.front.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -12,7 +12,7 @@ Maestro3.pcm.front.0 { - } - - # default with dmix/dsnoop --Maestro3.pcm.default { -+Maestro3.pcm.!default { - @args [ CARD ] - @args.CARD { - type string --- -2.51.1 - - -From ebb5ab7d846e2702640a7d754127083412b15816 Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Wed, 10 Dec 2025 16:18:06 +0100 -Subject: [PATCH 31/43] conf: NFORCE: define pcm configuration block only one - time - -There may be multiple NFORCE soundcards in the system. Overwrite -the PCM configurations when loaded multiple times. - -Signed-off-by: Jaroslav Kysela ---- - src/conf/cards/NFORCE.conf | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) - -diff --git a/src/conf/cards/NFORCE.conf b/src/conf/cards/NFORCE.conf -index 64d15479..088cd8ce 100644 ---- a/src/conf/cards/NFORCE.conf -+++ b/src/conf/cards/NFORCE.conf -@@ -4,7 +4,7 @@ - - - --NFORCE.pcm.front.0 { -+NFORCE.pcm.front.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -21,7 +21,7 @@ NFORCE.pcm.front.0 { - } - - # default with dmix+softvol & dsnoop --NFORCE.pcm.default { -+NFORCE.pcm.!default { - @args [ CARD ] - @args.CARD { - type string -@@ -52,7 +52,7 @@ NFORCE.pcm.default { - - - --NFORCE.pcm.surround40.0 { -+NFORCE.pcm.surround40.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -103,7 +103,7 @@ NFORCE.pcm.surround40.0 { - - - --NFORCE.pcm.surround51.0 { -+NFORCE.pcm.surround51.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -174,7 +174,7 @@ NFORCE.pcm.surround51.0 { - - - --NFORCE.pcm.surround71.0 { -+NFORCE.pcm.surround71.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -247,7 +247,7 @@ NFORCE.pcm.surround71.0 { - - - --NFORCE.pcm.iec958.0 { -+NFORCE.pcm.iec958.!0 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { - type string --- -2.51.1 - - -From 3d636ff5309e3672c0acc784c9539af4396d2dfb Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Wed, 10 Dec 2025 16:18:06 +0100 -Subject: [PATCH 32/43] conf: PC-Speaker: define pcm configuration block only - one time - -There may be multiple PC-Speaker soundcards in the system. Overwrite -the PCM configurations when loaded multiple times. - -Signed-off-by: Jaroslav Kysela ---- - src/conf/cards/PC-Speaker.conf | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/conf/cards/PC-Speaker.conf b/src/conf/cards/PC-Speaker.conf -index c82654d8..8a40a139 100644 ---- a/src/conf/cards/PC-Speaker.conf -+++ b/src/conf/cards/PC-Speaker.conf -@@ -4,7 +4,7 @@ - - - --PC-Speaker.pcm.front.0 { -+PC-Speaker.pcm.front.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -23,7 +23,7 @@ PC-Speaker.pcm.front.0 { - } - - # default with dmix & null --PC-Speaker.pcm.default { -+PC-Speaker.pcm.!default { - @args [ CARD ] - @args.CARD { - type string --- -2.51.1 - - -From a3028a492a641d5077640294d1fb655c4b4aa84a Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Wed, 10 Dec 2025 16:18:06 +0100 -Subject: [PATCH 33/43] conf: PMac,PMacToonie: define pcm configuration block - only one time - -There may be multiple PMac soundcards in the system. Overwrite -the PCM configurations when loaded multiple times. - -Signed-off-by: Jaroslav Kysela ---- - src/conf/cards/PMac.conf | 4 ++-- - src/conf/cards/PMacToonie.conf | 4 ++-- - 2 files changed, 4 insertions(+), 4 deletions(-) - -diff --git a/src/conf/cards/PMac.conf b/src/conf/cards/PMac.conf -index d1fdb17b..00f3bc89 100644 ---- a/src/conf/cards/PMac.conf -+++ b/src/conf/cards/PMac.conf -@@ -4,7 +4,7 @@ - - - --PMac.pcm.front.0 { -+PMac.pcm.front.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -14,7 +14,7 @@ PMac.pcm.front.0 { - } - - # default with dmix/dsnoop --PMac.pcm.default { -+PMac.pcm.!default { - @args [ CARD ] - @args.CARD { - type string -diff --git a/src/conf/cards/PMacToonie.conf b/src/conf/cards/PMacToonie.conf -index 1e0eb59c..aff1ea65 100644 ---- a/src/conf/cards/PMacToonie.conf -+++ b/src/conf/cards/PMacToonie.conf -@@ -4,7 +4,7 @@ - - - --PMacToonie.pcm.front.0 { -+PMacToonie.pcm.front.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -21,7 +21,7 @@ PMacToonie.pcm.front.0 { - } - - # default with dmix+softvol & dsnoop --PMacToonie.pcm.default { -+PMacToonie.pcm.!default { - @args [ CARD ] - @args.CARD { - type string --- -2.51.1 - - -From 8340b3c6b31a4e4c02f69bf36f3958d390c724b9 Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Wed, 10 Dec 2025 16:18:06 +0100 -Subject: [PATCH 34/43] conf: PS3: define pcm configuration block only one time - -There may be multiple PS3 soundcards in the system. Overwrite -the PCM configurations when loaded multiple times. - -Signed-off-by: Jaroslav Kysela ---- - src/conf/cards/PS3.conf | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/src/conf/cards/PS3.conf b/src/conf/cards/PS3.conf -index b642f0dc..486d790c 100644 ---- a/src/conf/cards/PS3.conf -+++ b/src/conf/cards/PS3.conf -@@ -4,7 +4,7 @@ - - - --PS3.pcm.front.0 { -+PS3.pcm.front.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -22,7 +22,7 @@ PS3.pcm.front.0 { - } - - # default with dmix+softvol --PS3.pcm.default { -+PS3.pcm.!default { - @args [ CARD ] - @args.CARD { - type string -@@ -47,7 +47,7 @@ PS3.pcm.default { - - - --PS3.pcm.iec958.0 { -+PS3.pcm.iec958.!0 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { - type string --- -2.51.1 - - -From f03528daf2ee177d2003b4d40824506f3a3558f4 Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Wed, 10 Dec 2025 16:18:15 +0100 -Subject: [PATCH 35/43] conf: RME96[35][26]: define pcm configuration block - only one time - -There may be multiple RME96[35][26] soundcards in the system. Overwrite -the PCM configurations when loaded multiple times. - -Signed-off-by: Jaroslav Kysela ---- - src/conf/cards/RME9636.conf | 4 ++-- - src/conf/cards/RME9652.conf | 4 ++-- - 2 files changed, 4 insertions(+), 4 deletions(-) - -diff --git a/src/conf/cards/RME9636.conf b/src/conf/cards/RME9636.conf -index e8dc5fad..17b3a1ab 100644 ---- a/src/conf/cards/RME9636.conf -+++ b/src/conf/cards/RME9636.conf -@@ -4,7 +4,7 @@ - - - --RME9636.pcm.front.0 { -+RME9636.pcm.front.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -17,7 +17,7 @@ RME9636.pcm.front.0 { - - - --RME9636.pcm.iec958.0 { -+RME9636.pcm.iec958.!0 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { - type string -diff --git a/src/conf/cards/RME9652.conf b/src/conf/cards/RME9652.conf -index 1147d810..a11e42b2 100644 ---- a/src/conf/cards/RME9652.conf -+++ b/src/conf/cards/RME9652.conf -@@ -4,7 +4,7 @@ - - - --RME9652.pcm.front.0 { -+RME9652.pcm.front.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -17,7 +17,7 @@ RME9652.pcm.front.0 { - - - --RME9652.pcm.iec958.0 { -+RME9652.pcm.iec958.!0 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { - type string --- -2.51.1 - - -From 1cd87775c5d9d46e418dc67a4d9c93fe5104ee3f Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Wed, 10 Dec 2025 16:18:15 +0100 -Subject: [PATCH 36/43] conf: SB-XFi: define pcm configuration block only one - time - -There may be multiple SB-XFi soundcards in the system. Overwrite -the PCM configurations when loaded multiple times. - -Signed-off-by: Jaroslav Kysela ---- - src/conf/cards/SB-XFi.conf | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) - -diff --git a/src/conf/cards/SB-XFi.conf b/src/conf/cards/SB-XFi.conf -index eb2218bf..9ce9c8ac 100644 ---- a/src/conf/cards/SB-XFi.conf -+++ b/src/conf/cards/SB-XFi.conf -@@ -4,7 +4,7 @@ - - - --SB-XFi.pcm.front.0 { -+SB-XFi.pcm.front.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -16,7 +16,7 @@ SB-XFi.pcm.front.0 { - - - --SB-XFi.pcm.rear.0 { -+SB-XFi.pcm.rear.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -29,7 +29,7 @@ SB-XFi.pcm.rear.0 { - - - --SB-XFi.pcm.center_lfe.0 { -+SB-XFi.pcm.center_lfe.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -42,7 +42,7 @@ SB-XFi.pcm.center_lfe.0 { - - - --SB-XFi.pcm.side.0 { -+SB-XFi.pcm.side.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -66,7 +66,7 @@ SB-XFi.pcm.surround71.0 cards.SB-XFi.pcm.front.0 - - - --SB-XFi.pcm.iec958.0 { -+SB-XFi.pcm.iec958.!0 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { - type string --- -2.51.1 - - -From 51d75e5f072698d6ec03957cf87b735117f05ab4 Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Wed, 10 Dec 2025 16:18:15 +0100 -Subject: [PATCH 37/43] conf: SI7018: define pcm configuration block only one - time - -There may be multiple SI7018 soundcards in the system. Overwrite -the PCM configurations when loaded multiple times. - -Signed-off-by: Jaroslav Kysela ---- - src/conf/cards/SI7018.conf | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) - -diff --git a/src/conf/cards/SI7018.conf b/src/conf/cards/SI7018.conf -index 02b8fc87..33d19085 100644 ---- a/src/conf/cards/SI7018.conf -+++ b/src/conf/cards/SI7018.conf -@@ -6,7 +6,7 @@ - - - --SI7018.pcm.front.0 { -+SI7018.pcm.front.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -18,7 +18,7 @@ SI7018.pcm.front.0 { - - - --SI7018.pcm.rear.0 { -+SI7018.pcm.rear.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -44,7 +44,7 @@ SI7018.pcm.rear.0 { - - - --SI7018.pcm.surround40.0 { -+SI7018.pcm.surround40.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -83,7 +83,7 @@ SI7018.pcm.surround40.0 { - - - --SI7018.pcm.surround51.0 { -+SI7018.pcm.surround51.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -130,7 +130,7 @@ SI7018.pcm.surround51.0 { - - - --SI7018.pcm.iec958.0 { -+SI7018.pcm.iec958.!0 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { - type string --- -2.51.1 - - -From 4c74f3a568583744dddab01e4cce5a2e8f207067 Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Wed, 10 Dec 2025 16:18:15 +0100 -Subject: [PATCH 38/43] conf: TRID4DWAVENX: define pcm configuration block only - one time - -There may be multiple TRID4DWAVENX soundcards in the system. Overwrite -the PCM configurations when loaded multiple times. - -Signed-off-by: Jaroslav Kysela ---- - src/conf/cards/TRID4DWAVENX.conf | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -diff --git a/src/conf/cards/TRID4DWAVENX.conf b/src/conf/cards/TRID4DWAVENX.conf -index 717b1408..5001297e 100644 ---- a/src/conf/cards/TRID4DWAVENX.conf -+++ b/src/conf/cards/TRID4DWAVENX.conf -@@ -4,7 +4,7 @@ - - - --TRID4DWAVENX.pcm.front.0 { -+TRID4DWAVENX.pcm.front.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -16,7 +16,7 @@ TRID4DWAVENX.pcm.front.0 { - - - --TRID4DWAVENX.pcm.rear.0 { -+TRID4DWAVENX.pcm.rear.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -56,7 +56,7 @@ TRID4DWAVENX.pcm.rear.0 { - - - --TRID4DWAVENX.pcm.surround40.0 { -+TRID4DWAVENX.pcm.surround40.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -92,7 +92,7 @@ TRID4DWAVENX.pcm.surround40.0 { - - - --TRID4DWAVENX.pcm.iec958.0 { -+TRID4DWAVENX.pcm.iec958.!0 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { - type string --- -2.51.1 - - -From d6b9d7e0bef5ca8a019881b06de7183528ec5bd5 Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Wed, 10 Dec 2025 16:18:22 +0100 -Subject: [PATCH 39/43] conf: VIA686A,VIA82xx: define pcm configuration block - only one time - -There may be multiple VIA soundcards in the system. Overwrite -the PCM configurations when loaded multiple times. - -Signed-off-by: Jaroslav Kysela ---- - src/conf/cards/VIA686A.conf | 6 +++--- - src/conf/cards/VIA8233.conf | 10 +++++----- - src/conf/cards/VIA8233A.conf | 10 +++++----- - src/conf/cards/VIA8237.conf | 10 +++++----- - 4 files changed, 18 insertions(+), 18 deletions(-) - -diff --git a/src/conf/cards/VIA686A.conf b/src/conf/cards/VIA686A.conf -index e4a06f23..c53dd71b 100644 ---- a/src/conf/cards/VIA686A.conf -+++ b/src/conf/cards/VIA686A.conf -@@ -7,7 +7,7 @@ - - - --VIA686A.pcm.front.0 { -+VIA686A.pcm.front.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -17,7 +17,7 @@ VIA686A.pcm.front.0 { - } - - # default with dmix/dsnoop --VIA686A.pcm.default { -+VIA686A.pcm.!default { - @args [ CARD ] - @args.CARD { - type string -@@ -41,7 +41,7 @@ VIA686A.pcm.default { - - - --VIA686A.pcm.iec958.0 { -+VIA686A.pcm.iec958.!0 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { - type string -diff --git a/src/conf/cards/VIA8233.conf b/src/conf/cards/VIA8233.conf -index 9ad321f7..3c25a11b 100644 ---- a/src/conf/cards/VIA8233.conf -+++ b/src/conf/cards/VIA8233.conf -@@ -4,7 +4,7 @@ - - - --VIA8233.pcm.front.0 { -+VIA8233.pcm.front.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -15,7 +15,7 @@ VIA8233.pcm.front.0 { - - # default with softvol/dsnoop - # VIA8233 supports multi-playback --VIA8233.pcm.default { -+VIA8233.pcm.!default { - @args [ CARD ] - @args.CARD { - type string -@@ -46,7 +46,7 @@ VIA8233.pcm.default { - - - --VIA8233.pcm.surround40.0 { -+VIA8233.pcm.surround40.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -91,7 +91,7 @@ VIA8233.pcm.surround40.0 { - - - --VIA8233.pcm.surround51.0 { -+VIA8233.pcm.surround51.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -146,7 +146,7 @@ VIA8233.pcm.surround51.0 { - - - --VIA8233.pcm.iec958.0 { -+VIA8233.pcm.iec958.!0 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { - type string -diff --git a/src/conf/cards/VIA8233A.conf b/src/conf/cards/VIA8233A.conf -index 679fccf3..c9e56e20 100644 ---- a/src/conf/cards/VIA8233A.conf -+++ b/src/conf/cards/VIA8233A.conf -@@ -4,7 +4,7 @@ - - - --VIA8233A.pcm.front.0 { -+VIA8233A.pcm.front.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -14,7 +14,7 @@ VIA8233A.pcm.front.0 { - } - - # default with dmix/dsnoop --VIA8233A.pcm.default { -+VIA8233A.pcm.!default { - @args [ CARD ] - @args.CARD { - type string -@@ -38,7 +38,7 @@ VIA8233A.pcm.default { - - - --VIA8233A.pcm.surround40.0 { -+VIA8233A.pcm.surround40.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -89,7 +89,7 @@ VIA8233A.pcm.surround40.0 { - - - --VIA8233A.pcm.surround51.0 { -+VIA8233A.pcm.surround51.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -150,7 +150,7 @@ VIA8233A.pcm.surround51.0 { - - - --VIA8233A.pcm.iec958.0 { -+VIA8233A.pcm.iec958.!0 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { - type string -diff --git a/src/conf/cards/VIA8237.conf b/src/conf/cards/VIA8237.conf -index 29d8e00f..49fd6f2c 100644 ---- a/src/conf/cards/VIA8237.conf -+++ b/src/conf/cards/VIA8237.conf -@@ -4,7 +4,7 @@ - - - --VIA8237.pcm.front.0 { -+VIA8237.pcm.front.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -15,7 +15,7 @@ VIA8237.pcm.front.0 { - - # default with softvol/dsnoop - # VIA8237 supports multi-playback --VIA8237.pcm.default { -+VIA8237.pcm.!default { - @args [ CARD ] - @args.CARD { - type string -@@ -46,7 +46,7 @@ VIA8237.pcm.default { - - - --VIA8237.pcm.surround40.0 { -+VIA8237.pcm.surround40.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -84,7 +84,7 @@ VIA8237.pcm.surround40.0 { - - - --VIA8237.pcm.surround51.0 { -+VIA8237.pcm.surround51.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -136,7 +136,7 @@ VIA8237.pcm.surround51.0 { - - - --VIA8237.pcm.iec958.0 { -+VIA8237.pcm.iec958.!0 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { - type string --- -2.51.1 - - -From 4bcd33ef9dc6d8439cc6573575907ecf89271fe2 Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Wed, 10 Dec 2025 16:18:22 +0100 -Subject: [PATCH 40/43] conf: VX222,VXPocket: define pcm configuration block - only one time - -There may be multiple VX soundcards in the system. Overwrite -the PCM configurations when loaded multiple times. - -Signed-off-by: Jaroslav Kysela ---- - src/conf/cards/VX222.conf | 4 ++-- - src/conf/cards/VXPocket.conf | 4 ++-- - src/conf/cards/VXPocket440.conf | 8 ++++---- - 3 files changed, 8 insertions(+), 8 deletions(-) - -diff --git a/src/conf/cards/VX222.conf b/src/conf/cards/VX222.conf -index 3385f25b..2c6e2297 100644 ---- a/src/conf/cards/VX222.conf -+++ b/src/conf/cards/VX222.conf -@@ -4,7 +4,7 @@ - - - --VX222.pcm.front.0 { -+VX222.pcm.front.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -15,7 +15,7 @@ VX222.pcm.front.0 { - - - --VX222.pcm.iec958.0 { -+VX222.pcm.iec958.!0 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { - type string -diff --git a/src/conf/cards/VXPocket.conf b/src/conf/cards/VXPocket.conf -index fe44ff53..90b13347 100644 ---- a/src/conf/cards/VXPocket.conf -+++ b/src/conf/cards/VXPocket.conf -@@ -4,7 +4,7 @@ - - - --VXPocket.pcm.front.0 { -+VXPocket.pcm.front.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -15,7 +15,7 @@ VXPocket.pcm.front.0 { - - - --VXPocket.pcm.iec958.0 { -+VXPocket.pcm.iec958.!0 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { - type string -diff --git a/src/conf/cards/VXPocket440.conf b/src/conf/cards/VXPocket440.conf -index 197c2d6c..87a0855a 100644 ---- a/src/conf/cards/VXPocket440.conf -+++ b/src/conf/cards/VXPocket440.conf -@@ -4,7 +4,7 @@ - - - --VXPocket440.pcm.front.0 { -+VXPocket440.pcm.front.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -15,7 +15,7 @@ VXPocket440.pcm.front.0 { - - - --VXPocket440.pcm.rear.0 { -+VXPocket440.pcm.rear.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -27,7 +27,7 @@ VXPocket440.pcm.rear.0 { - - - --VXPocket440.pcm.surround40.0 { -+VXPocket440.pcm.surround40.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -64,7 +64,7 @@ VXPocket440.pcm.surround40.0 { - - - --VXPocket440.pcm.iec958.0 { -+VXPocket440.pcm.iec958.!0 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { - type string --- -2.51.1 - - -From 29fa26b4b5e0d3b7ab539b38d6604d83430bf70b Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Wed, 10 Dec 2025 16:18:22 +0100 -Subject: [PATCH 41/43] conf: YMF744: define pcm configuration block only one - time - -There may be multiple YMF744 soundcards in the system. Overwrite -the PCM configurations when loaded multiple times. - -Signed-off-by: Jaroslav Kysela ---- - src/conf/cards/YMF744.conf | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -diff --git a/src/conf/cards/YMF744.conf b/src/conf/cards/YMF744.conf -index 84dbcbec..ad1f2132 100644 ---- a/src/conf/cards/YMF744.conf -+++ b/src/conf/cards/YMF744.conf -@@ -4,7 +4,7 @@ - - - --YMF744.pcm.front.0 { -+YMF744.pcm.front.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -15,7 +15,7 @@ YMF744.pcm.front.0 { - - - --YMF744.pcm.rear.0 { -+YMF744.pcm.rear.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -27,7 +27,7 @@ YMF744.pcm.rear.0 { - - - --YMF744.pcm.surround40.0 { -+YMF744.pcm.surround40.!0 { - @args [ CARD ] - @args.CARD { - type string -@@ -63,7 +63,7 @@ YMF744.pcm.surround40.0 { - - - --YMF744.pcm.iec958.0 { -+YMF744.pcm.iec958.!0 { - @args [ CARD AES0 AES1 AES2 AES3 ] - @args.CARD { - type string --- -2.51.1 - - -From 17ffe17f0356f333f8bf8734a02ab419bd19cd99 Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Wed, 10 Dec 2025 16:25:34 +0100 -Subject: [PATCH 42/43] conf: pistachio-card: define pcm configuration block - only one time - -There may be multiple pistachio-card soundcards in the system. Overwrite -the PCM configurations when loaded multiple times. - -Signed-off-by: Jaroslav Kysela ---- - src/conf/cards/pistachio-card.conf | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/conf/cards/pistachio-card.conf b/src/conf/cards/pistachio-card.conf -index f68865eb..15cfd60b 100644 ---- a/src/conf/cards/pistachio-card.conf -+++ b/src/conf/cards/pistachio-card.conf -@@ -29,7 +29,7 @@ https://docs.creatordev.io/ci40/guides/hardwaredocs/MIPS_Creator_cXT200_Technica - # Subdevice #0: subdevice #0 - # - --pistachio-card.pcm.default{ -+pistachio-card.pcm.!default { - @args [ CARD ] - @args.CARD { - type string --- -2.51.1 - - -From f30c355278cf9c86420b49ab9efc7eee890b658c Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Wed, 10 Dec 2025 16:44:12 +0100 -Subject: [PATCH 43/43] conf: cards: unify whitespace - use tabs and remove - trailing spaces - -Convert leading spaces to tabs for consistent indentation, -remove trailing whitespace from all lines, and normalize -file endings across all card configuration files. - -Signed-off-by: Jaroslav Kysela ---- - src/conf/cards/AACI.conf | 2 +- - src/conf/cards/ATIIXP-SPDMA.conf | 2 +- - src/conf/cards/ATIIXP.conf | 2 +- - src/conf/cards/AU8810.conf | 2 +- - src/conf/cards/AU8820.conf | 2 +- - src/conf/cards/AU8830.conf | 2 +- - src/conf/cards/Audigy.conf | 6 +- - src/conf/cards/Audigy2.conf | 4 +- - src/conf/cards/Aureon51.conf | 8 +- - src/conf/cards/Aureon71.conf | 8 +- - src/conf/cards/CA0106.conf | 8 +- - src/conf/cards/CMI8338-SWIEC.conf | 2 +- - src/conf/cards/CMI8338.conf | 2 +- - src/conf/cards/CMI8738-MC6.conf | 6 +- - src/conf/cards/CMI8738-MC8.conf | 8 +- - src/conf/cards/CMI8788.conf | 8 +- - src/conf/cards/CS46xx.conf | 6 +- - src/conf/cards/EMU10K1.conf | 6 +- - src/conf/cards/EMU10K1X.conf | 6 +- - src/conf/cards/ENS1370.conf | 4 +- - src/conf/cards/ENS1371.conf | 10 +-- - src/conf/cards/ES1968.conf | 2 +- - src/conf/cards/FM801.conf | 2 +- - src/conf/cards/GUS.conf | 2 +- - src/conf/cards/HDA-Intel.conf | 2 +- - src/conf/cards/ICE1712.conf | 4 +- - src/conf/cards/ICE1724.conf | 10 +-- - src/conf/cards/ICH.conf | 2 +- - src/conf/cards/ICH4.conf | 2 +- - src/conf/cards/Loopback.conf | 2 +- - src/conf/cards/Maestro3.conf | 3 +- - src/conf/cards/NFORCE.conf | 138 ++++++++++++++--------------- - src/conf/cards/PC-Speaker.conf | 3 +- - src/conf/cards/PMac.conf | 2 +- - src/conf/cards/PMacToonie.conf | 2 +- - src/conf/cards/PS3.conf | 6 +- - src/conf/cards/RME9636.conf | 2 +- - src/conf/cards/RME9652.conf | 2 +- - src/conf/cards/SB-XFi.conf | 8 +- - src/conf/cards/SI7018.conf | 6 +- - src/conf/cards/TRID4DWAVENX.conf | 4 +- - src/conf/cards/USB-Audio.conf | 2 +- - src/conf/cards/VIA686A.conf | 2 +- - src/conf/cards/VIA8233.conf | 2 +- - src/conf/cards/VIA8233A.conf | 2 +- - src/conf/cards/VIA8237.conf | 2 +- - src/conf/cards/VX222.conf | 2 +- - src/conf/cards/VXPocket.conf | 2 +- - src/conf/cards/VXPocket440.conf | 2 +- - src/conf/cards/YMF744.conf | 4 +- - src/conf/cards/pistachio-card.conf | 54 +++++------ - 51 files changed, 190 insertions(+), 192 deletions(-) - -diff --git a/src/conf/cards/AACI.conf b/src/conf/cards/AACI.conf -index ff4778b4..2f036dd6 100644 ---- a/src/conf/cards/AACI.conf -+++ b/src/conf/cards/AACI.conf -@@ -11,7 +11,7 @@ AACI.pcm.front.!0 { - } - type hw - card $CARD --} -+} - - - -diff --git a/src/conf/cards/ATIIXP-SPDMA.conf b/src/conf/cards/ATIIXP-SPDMA.conf -index 12c40efc..6d7344e8 100644 ---- a/src/conf/cards/ATIIXP-SPDMA.conf -+++ b/src/conf/cards/ATIIXP-SPDMA.conf -@@ -11,7 +11,7 @@ ATIIXP-SPDMA.pcm.front.!0 { - } - type hw - card $CARD --} -+} - - # default with dmix/dsnoop - ATIIXP.pcm.!default { -diff --git a/src/conf/cards/ATIIXP.conf b/src/conf/cards/ATIIXP.conf -index 13e01c48..d2736c3c 100644 ---- a/src/conf/cards/ATIIXP.conf -+++ b/src/conf/cards/ATIIXP.conf -@@ -11,7 +11,7 @@ ATIIXP.pcm.front.!0 { - } - type hw - card $CARD --} -+} - - # default with dmix/dsnoop - ATIIXP.pcm.!default { -diff --git a/src/conf/cards/AU8810.conf b/src/conf/cards/AU8810.conf -index 6b596b68..46de6dbc 100644 ---- a/src/conf/cards/AU8810.conf -+++ b/src/conf/cards/AU8810.conf -@@ -11,7 +11,7 @@ AU8810.pcm.front.!0 { - } - type hw - card $CARD --} -+} - - - -diff --git a/src/conf/cards/AU8820.conf b/src/conf/cards/AU8820.conf -index fe2cbc11..8e262a6f 100644 ---- a/src/conf/cards/AU8820.conf -+++ b/src/conf/cards/AU8820.conf -@@ -11,4 +11,4 @@ AU8820.pcm.front.!0 { - } - type hw - card $CARD --} -+} -diff --git a/src/conf/cards/AU8830.conf b/src/conf/cards/AU8830.conf -index 9cd78b3e..a31d8a57 100644 ---- a/src/conf/cards/AU8830.conf -+++ b/src/conf/cards/AU8830.conf -@@ -11,7 +11,7 @@ AU8830.pcm.front.!0 { - } - type hw - card $CARD --} -+} - - - -diff --git a/src/conf/cards/Audigy.conf b/src/conf/cards/Audigy.conf -index a353c624..d2b54d3b 100644 ---- a/src/conf/cards/Audigy.conf -+++ b/src/conf/cards/Audigy.conf -@@ -36,7 +36,7 @@ Audigy.pcm.front.!0 { - } - ] - } --} -+} - - - -@@ -64,7 +64,7 @@ Audigy.pcm.rear.!0 { - } - ] - } --} -+} - - - -@@ -100,7 +100,7 @@ Audigy.pcm.center_lfe.!0 { - } - ] - } --} -+} - - - -diff --git a/src/conf/cards/Audigy2.conf b/src/conf/cards/Audigy2.conf -index 3c15fd1d..47d75680 100644 ---- a/src/conf/cards/Audigy2.conf -+++ b/src/conf/cards/Audigy2.conf -@@ -37,7 +37,7 @@ Audigy2.pcm.front.!0 { - - ] - } --} -+} - - - -@@ -65,7 +65,7 @@ Audigy2.pcm.rear.!0 { - } - ] - } --} -+} - - - -diff --git a/src/conf/cards/Aureon51.conf b/src/conf/cards/Aureon51.conf -index db907f82..da7e26dc 100644 ---- a/src/conf/cards/Aureon51.conf -+++ b/src/conf/cards/Aureon51.conf -@@ -34,7 +34,7 @@ Aureon51.pcm.front.!0 { - } - type hw - card $CARD --} -+} - - - -@@ -47,7 +47,7 @@ Aureon51.pcm.rear.!0 { - card $CARD - device 2 - subdevice 1 --} -+} - - - -@@ -59,7 +59,7 @@ Aureon51.pcm.center_lfe.!0 { - type hw - card $CARD - device 2 --} -+} - - - -@@ -84,7 +84,7 @@ Aureon51.pcm.surround40.!0 { - type hw - card $CARD - channels 4 --} -+} - - - -diff --git a/src/conf/cards/Aureon71.conf b/src/conf/cards/Aureon71.conf -index f29bc297..98e65ab0 100644 ---- a/src/conf/cards/Aureon71.conf -+++ b/src/conf/cards/Aureon71.conf -@@ -34,7 +34,7 @@ Aureon71.pcm.front.!0 { - } - type hw - card $CARD --} -+} - - - -@@ -46,7 +46,7 @@ Aureon71.pcm.rear.!0 { - type hw - card $CARD - device 2 --} -+} - - - -@@ -59,7 +59,7 @@ Aureon71.pcm.center_lfe.!0 { - card $CARD - device 2 - subdevice 1 --} -+} - - - -@@ -84,7 +84,7 @@ Aureon71.pcm.surround40.!0 { - type hw - card $CARD - channels 4 --} -+} - - - -diff --git a/src/conf/cards/CA0106.conf b/src/conf/cards/CA0106.conf -index 1fea79f5..bf90c3c6 100644 ---- a/src/conf/cards/CA0106.conf -+++ b/src/conf/cards/CA0106.conf -@@ -34,7 +34,7 @@ CA0106.pcm.front.!0 { - } - type hw - card $CARD --} -+} - - - -@@ -46,7 +46,7 @@ CA0106.pcm.rear.!0 { - type hw - card $CARD - device 1 --} -+} - - - -@@ -58,7 +58,7 @@ CA0106.pcm.center_lfe.!0 { - type hw - card $CARD - device 2 --} -+} - - - -@@ -70,7 +70,7 @@ CA0106.pcm.side.!0 { - type hw - card $CARD - device 3 --} -+} - - - -diff --git a/src/conf/cards/CMI8338-SWIEC.conf b/src/conf/cards/CMI8338-SWIEC.conf -index ca86c466..2a9b777c 100644 ---- a/src/conf/cards/CMI8338-SWIEC.conf -+++ b/src/conf/cards/CMI8338-SWIEC.conf -@@ -12,7 +12,7 @@ CMI8338-SWIEC.pcm.front.!0 { - } - type hw - card $CARD --} -+} - - # default with dmix/dsnoop - CMI8338-SWIEC.pcm.!default { -diff --git a/src/conf/cards/CMI8338.conf b/src/conf/cards/CMI8338.conf -index 0f92ad0b..8bd1159d 100644 ---- a/src/conf/cards/CMI8338.conf -+++ b/src/conf/cards/CMI8338.conf -@@ -11,7 +11,7 @@ CMI8338.pcm.front.!0 { - } - type hw - card $CARD --} -+} - - # default with dmix/dsnoop - CMI8338.pcm.!default { -diff --git a/src/conf/cards/CMI8738-MC6.conf b/src/conf/cards/CMI8738-MC6.conf -index 2b1c7d05..6bb17712 100644 ---- a/src/conf/cards/CMI8738-MC6.conf -+++ b/src/conf/cards/CMI8738-MC6.conf -@@ -11,7 +11,7 @@ CMI8738-MC6.pcm.front.!0 { - } - type hw - card $CARD --} -+} - - # default with dmix/dsnoop - CMI8738-MC6.pcm.!default { -@@ -75,7 +75,7 @@ CMI8738-MC6.pcm.surround40.!0 { - } - ] - } --} -+} - - - -@@ -105,7 +105,7 @@ CMI8738-MC6.pcm.surround51.!0 { - } - ] - } --} -+} - - - -diff --git a/src/conf/cards/CMI8738-MC8.conf b/src/conf/cards/CMI8738-MC8.conf -index 96cb3f10..239014d4 100644 ---- a/src/conf/cards/CMI8738-MC8.conf -+++ b/src/conf/cards/CMI8738-MC8.conf -@@ -18,7 +18,7 @@ CMI8738-MC8.pcm.front.!0 { - name "PCM Playback Volume" - card $CARD - } --} -+} - - # default with dmix+softvol & dsnoop - CMI8738-MC8.pcm.!default { -@@ -102,7 +102,7 @@ CMI8738-MC8.pcm.surround40.!0 { - name "PCM Playback Volume" - card $CARD - } --} -+} - - - -@@ -140,7 +140,7 @@ CMI8738-MC8.pcm.surround51.!0 { - name "PCM Playback Volume" - card $CARD - } --} -+} - - - -@@ -174,7 +174,7 @@ CMI8738-MC8.pcm.surround71.!0 { - name "PCM Playback Volume" - card $CARD - } --} -+} - - - -diff --git a/src/conf/cards/CMI8788.conf b/src/conf/cards/CMI8788.conf -index c4ad9f48..32ab8fb4 100644 ---- a/src/conf/cards/CMI8788.conf -+++ b/src/conf/cards/CMI8788.conf -@@ -11,7 +11,7 @@ CMI8788.pcm.front.!0 { - } - type hw - card $CARD --} -+} - - # default with dmix & dsnoop - CMI8788.pcm.!default { -@@ -46,7 +46,7 @@ CMI8788.pcm.surround40.!0 { - type hw - card $CARD - channels 4 --} -+} - - - -@@ -61,7 +61,7 @@ CMI8788.pcm.surround51.!0 { - type hw - card $CARD - channels 6 --} -+} - - - -@@ -73,7 +73,7 @@ CMI8788.pcm.surround71.!0 { - type hw - card $CARD - channels 8 --} -+} - - - -diff --git a/src/conf/cards/CS46xx.conf b/src/conf/cards/CS46xx.conf -index 478cbf3e..ad6a2218 100644 ---- a/src/conf/cards/CS46xx.conf -+++ b/src/conf/cards/CS46xx.conf -@@ -11,7 +11,7 @@ CS46xx.pcm.front.!0 { - } - type hw - card $CARD --} -+} - - # default with plughw - # CS46xx supports multi-playback -@@ -62,7 +62,7 @@ CS46xx.pcm.rear.!0 { - } - ] - } --} -+} - - - -@@ -74,7 +74,7 @@ CS46xx.pcm.center_lfe.!0 { - type hw - card $CARD - device 3 --} -+} - - - -diff --git a/src/conf/cards/EMU10K1.conf b/src/conf/cards/EMU10K1.conf -index 5ef12c03..c2dc7590 100644 ---- a/src/conf/cards/EMU10K1.conf -+++ b/src/conf/cards/EMU10K1.conf -@@ -43,7 +43,7 @@ EMU10K1.pcm.front.!0 { - type hw - card $CARD - } --} -+} - - - -@@ -74,7 +74,7 @@ EMU10K1.pcm.rear.!0 { - ] - } - } --} -+} - - - -@@ -139,7 +139,7 @@ EMU10K1.pcm.center_lfe.!0 { - ] - } - } --} -+} - - - -diff --git a/src/conf/cards/EMU10K1X.conf b/src/conf/cards/EMU10K1X.conf -index 334f897d..7d73ba44 100644 ---- a/src/conf/cards/EMU10K1X.conf -+++ b/src/conf/cards/EMU10K1X.conf -@@ -34,7 +34,7 @@ EMU10K1X.pcm.front.!0 { - } - type hw - card $CARD --} -+} - - - -@@ -46,7 +46,7 @@ EMU10K1X.pcm.rear.!0 { - type hw - card $CARD - device 1 --} -+} - - - -@@ -58,7 +58,7 @@ EMU10K1X.pcm.center_lfe.!0 { - type hw - card $CARD - device 2 --} -+} - - - -diff --git a/src/conf/cards/ENS1370.conf b/src/conf/cards/ENS1370.conf -index c65e224f..446c2f7d 100644 ---- a/src/conf/cards/ENS1370.conf -+++ b/src/conf/cards/ENS1370.conf -@@ -12,7 +12,7 @@ ENS1370.pcm.front.!0 { - type hw - card $CARD - device 1 --} -+} - - # default with dmix/dsnoop - ENS1370.pcm.!default { -@@ -67,7 +67,7 @@ ENS1370.pcm.rear.!0 { - } - ] - } --} -+} - - - -diff --git a/src/conf/cards/ENS1371.conf b/src/conf/cards/ENS1371.conf -index 560fda9f..549fd7c9 100644 ---- a/src/conf/cards/ENS1371.conf -+++ b/src/conf/cards/ENS1371.conf -@@ -11,7 +11,7 @@ ENS1371.pcm.front.!0 { - } - type hw - card $CARD --} -+} - - # default with dmix/dsnoop - ENS1371.pcm.!default { -@@ -61,7 +61,7 @@ ENS1371.pcm.rear.!0 { - } - ] - } --} -+} - - - -@@ -78,11 +78,11 @@ ENS1371.pcm.surround40.!0 { - strings [ "cards.ENS1371.pcm.front.0:CARD=" $CARD ] - } - channels 2 -- } -+ } - { - pcm { - @func concat -- strings [ "cards.ENS1371.pcm.rear.0:CARD=" $CARD ] -+ strings [ "cards.ENS1371.pcm.rear.0:CARD=" $CARD ] - } - channels 2 - } -@@ -94,7 +94,7 @@ ENS1371.pcm.surround40.!0 { - { slave 1 channel 1 } - ] - } -- -+ - - - ENS1371.pcm.iec958.!0 { -diff --git a/src/conf/cards/ES1968.conf b/src/conf/cards/ES1968.conf -index 296baa13..83dcf93b 100644 ---- a/src/conf/cards/ES1968.conf -+++ b/src/conf/cards/ES1968.conf -@@ -9,4 +9,4 @@ ES1968.pcm.front.!0 { - } - type hw - card $CARD --} -+} -diff --git a/src/conf/cards/FM801.conf b/src/conf/cards/FM801.conf -index 14cfdbe8..b8bed781 100644 ---- a/src/conf/cards/FM801.conf -+++ b/src/conf/cards/FM801.conf -@@ -11,7 +11,7 @@ FM801.pcm.front.!0 { - } - type hw - card $CARD --} -+} - - # default with dmix/dsnoop - FM801.pcm.!default { -diff --git a/src/conf/cards/GUS.conf b/src/conf/cards/GUS.conf -index a1ccd0e9..42a612a6 100644 ---- a/src/conf/cards/GUS.conf -+++ b/src/conf/cards/GUS.conf -@@ -16,4 +16,4 @@ GUS.pcm.front.!0 { - type hw - card $CARD - } --} -+} -diff --git a/src/conf/cards/HDA-Intel.conf b/src/conf/cards/HDA-Intel.conf -index 76775b97..cacd2815 100644 ---- a/src/conf/cards/HDA-Intel.conf -+++ b/src/conf/cards/HDA-Intel.conf -@@ -26,7 +26,7 @@ HDA-Intel.pcm.front.!0 { - type hw - card $CARD - } --} -+} - - # default with dmix+softvol & dsnoop - HDA-Intel.pcm.!default { -diff --git a/src/conf/cards/ICE1712.conf b/src/conf/cards/ICE1712.conf -index 190d2c59..08b84f30 100644 ---- a/src/conf/cards/ICE1712.conf -+++ b/src/conf/cards/ICE1712.conf -@@ -53,7 +53,7 @@ ICE1712.pcm.front.!0 { - } - slave.channels 12 - } --} -+} - - - -@@ -72,7 +72,7 @@ ICE1712.pcm.surround40.!0 { - card $CARD - } - slave.channels 10 --} -+} - - - -diff --git a/src/conf/cards/ICE1724.conf b/src/conf/cards/ICE1724.conf -index 16045dc4..678df41d 100644 ---- a/src/conf/cards/ICE1724.conf -+++ b/src/conf/cards/ICE1724.conf -@@ -34,7 +34,7 @@ ICE1724.pcm.front.!0 { - } - type hw - card $CARD --} -+} - - - -@@ -47,7 +47,7 @@ ICE1724.pcm.rear.!0 { - card $CARD - device 2 - subdevice 1 --} -+} - - - -@@ -59,7 +59,7 @@ ICE1724.pcm.center_lfe.!0 { - type hw - card $CARD - device 2 --} -+} - - - -@@ -93,7 +93,7 @@ ICE1724.pcm.surround40.!0 { - card $CARD - } - } --} -+} - - - -@@ -114,7 +114,7 @@ ICE1724.pcm.surround51.!0 { - ttable.5.3 1 - slave { - channels 6 -- pcm { -+ pcm { - type hw - card $CARD - } -diff --git a/src/conf/cards/ICH.conf b/src/conf/cards/ICH.conf -index c35c8d02..573b9e26 100644 ---- a/src/conf/cards/ICH.conf -+++ b/src/conf/cards/ICH.conf -@@ -18,7 +18,7 @@ ICH.pcm.front.!0 { - name "PCM Playback Volume" - card $CARD - } --} -+} - - # default with dmix+softvol & dsnoop - ICH.pcm.!default { -diff --git a/src/conf/cards/ICH4.conf b/src/conf/cards/ICH4.conf -index 11c85a6e..5641c9c4 100644 ---- a/src/conf/cards/ICH4.conf -+++ b/src/conf/cards/ICH4.conf -@@ -18,7 +18,7 @@ ICH4.pcm.front.!0 { - name "PCM Playback Volume" - card $CARD - } --} -+} - - # default with dmix+softvol & dsnoop - ICH4.pcm.!default { -diff --git a/src/conf/cards/Loopback.conf b/src/conf/cards/Loopback.conf -index 21c8429c..3911aed5 100644 ---- a/src/conf/cards/Loopback.conf -+++ b/src/conf/cards/Loopback.conf -@@ -18,7 +18,7 @@ Loopback.pcm.front.!0 { - name "PCM Playback Volume" - card $CARD - } --} -+} - - # default with dmix+softvol & dsnoop - Loopback.pcm.!default { -diff --git a/src/conf/cards/Maestro3.conf b/src/conf/cards/Maestro3.conf -index a8d89a48..c0e3da31 100644 ---- a/src/conf/cards/Maestro3.conf -+++ b/src/conf/cards/Maestro3.conf -@@ -9,7 +9,7 @@ Maestro3.pcm.front.!0 { - } - type hw - card $CARD --} -+} - - # default with dmix/dsnoop - Maestro3.pcm.!default { -@@ -35,4 +35,3 @@ Maestro3.pcm.!default { - } - } - } -- -diff --git a/src/conf/cards/NFORCE.conf b/src/conf/cards/NFORCE.conf -index 088cd8ce..aeef6b40 100644 ---- a/src/conf/cards/NFORCE.conf -+++ b/src/conf/cards/NFORCE.conf -@@ -18,7 +18,7 @@ NFORCE.pcm.front.!0 { - name "PCM Playback Volume" - card $CARD - } --} -+} - - # default with dmix+softvol & dsnoop - NFORCE.pcm.!default { -@@ -175,74 +175,74 @@ NFORCE.pcm.surround51.!0 { - - - NFORCE.pcm.surround71.!0 { -- @args [ CARD ] -- @args.CARD { -- type string -- } -- type softvol -- slave.pcm { -- type route -- ttable.0.0 1 -- ttable.1.1 1 -- ttable.2.4 1 -- ttable.3.5 1 -- ttable.4.2 1 -- ttable.5.3 1 -- ttable.6.6 1 -- ttable.7.7 1 -- slave.pcm { -- type hooks -- slave.pcm { -- type hw -- card $CARD -- device 0 -- } -- hooks.0 { -- type ctl_elems -- hook_args [ -- { -- name "Channel Mode" -- preserve true -- value "8ch" -- lock true -- optional true -- } -- # for old drivers -- { -- name "Line-In As Surround" -- preserve true -- value true -- optional true -- } -- { -- name "Mic As Center/LFE" -- preserve true -- value true -- optional true -- } -- { -- name "Surround Down Mix" -- preserve true -- value off -- lock true -- optional true -- } -- { -- name "Center/LFE Down Mix" -- preserve true -- value off -- lock true -- optional true -- } -- ] -- } -- } -- slave.channels 8 -- } -- control { -- name "PCM Playback Volume" -- card $CARD -- } -+ @args [ CARD ] -+ @args.CARD { -+ type string -+ } -+ type softvol -+ slave.pcm { -+ type route -+ ttable.0.0 1 -+ ttable.1.1 1 -+ ttable.2.4 1 -+ ttable.3.5 1 -+ ttable.4.2 1 -+ ttable.5.3 1 -+ ttable.6.6 1 -+ ttable.7.7 1 -+ slave.pcm { -+ type hooks -+ slave.pcm { -+ type hw -+ card $CARD -+ device 0 -+ } -+ hooks.0 { -+ type ctl_elems -+ hook_args [ -+ { -+ name "Channel Mode" -+ preserve true -+ value "8ch" -+ lock true -+ optional true -+ } -+ # for old drivers -+ { -+ name "Line-In As Surround" -+ preserve true -+ value true -+ optional true -+ } -+ { -+ name "Mic As Center/LFE" -+ preserve true -+ value true -+ optional true -+ } -+ { -+ name "Surround Down Mix" -+ preserve true -+ value off -+ lock true -+ optional true -+ } -+ { -+ name "Center/LFE Down Mix" -+ preserve true -+ value off -+ lock true -+ optional true -+ } -+ ] -+ } -+ } -+ slave.channels 8 -+ } -+ control { -+ name "PCM Playback Volume" -+ card $CARD -+ } - } - - -diff --git a/src/conf/cards/PC-Speaker.conf b/src/conf/cards/PC-Speaker.conf -index 8a40a139..97cb0d5d 100644 ---- a/src/conf/cards/PC-Speaker.conf -+++ b/src/conf/cards/PC-Speaker.conf -@@ -20,7 +20,7 @@ PC-Speaker.pcm.front.!0 { - } - min_dB -10.0 - max_dB 20.0 --} -+} - - # default with dmix & null - PC-Speaker.pcm.!default { -@@ -49,4 +49,3 @@ PC-Speaker.pcm.!default { - type null - } - } -- -diff --git a/src/conf/cards/PMac.conf b/src/conf/cards/PMac.conf -index 00f3bc89..67dfabc6 100644 ---- a/src/conf/cards/PMac.conf -+++ b/src/conf/cards/PMac.conf -@@ -11,7 +11,7 @@ PMac.pcm.front.!0 { - } - type hw - card $CARD --} -+} - - # default with dmix/dsnoop - PMac.pcm.!default { -diff --git a/src/conf/cards/PMacToonie.conf b/src/conf/cards/PMacToonie.conf -index aff1ea65..c45cf12b 100644 ---- a/src/conf/cards/PMacToonie.conf -+++ b/src/conf/cards/PMacToonie.conf -@@ -18,7 +18,7 @@ PMacToonie.pcm.front.!0 { - name "PCM Playback Volume" - card $CARD - } --} -+} - - # default with dmix+softvol & dsnoop - PMacToonie.pcm.!default { -diff --git a/src/conf/cards/PS3.conf b/src/conf/cards/PS3.conf -index 486d790c..8a165fc3 100644 ---- a/src/conf/cards/PS3.conf -+++ b/src/conf/cards/PS3.conf -@@ -19,7 +19,7 @@ PS3.pcm.front.!0 { - name "PCM Playback Volume" - card $CARD - } --} -+} - - # default with dmix+softvol - PS3.pcm.!default { -@@ -34,8 +34,8 @@ PS3.pcm.!default { - type softvol - slave.pcm { - @func concat -- #strings [ "dmix:CARD=" $CARD ] -- strings [ "dmix:CARD=" $CARD ",FORMAT=S16" ] -+ #strings [ "dmix:CARD=" $CARD ] -+ strings [ "dmix:CARD=" $CARD ",FORMAT=S16" ] - } - control { - name "PCM Playback Volume" -diff --git a/src/conf/cards/RME9636.conf b/src/conf/cards/RME9636.conf -index 17b3a1ab..c5c74ee9 100644 ---- a/src/conf/cards/RME9636.conf -+++ b/src/conf/cards/RME9636.conf -@@ -11,7 +11,7 @@ RME9636.pcm.front.!0 { - } - type hw - card $CARD --} -+} - - # FIXME: This configuration is not valid for double-speed rates. - -diff --git a/src/conf/cards/RME9652.conf b/src/conf/cards/RME9652.conf -index a11e42b2..34ef91bb 100644 ---- a/src/conf/cards/RME9652.conf -+++ b/src/conf/cards/RME9652.conf -@@ -11,7 +11,7 @@ RME9652.pcm.front.!0 { - } - type hw - card $CARD --} -+} - - # FIXME: This configuration is not valid for double-speed rates. - -diff --git a/src/conf/cards/SB-XFi.conf b/src/conf/cards/SB-XFi.conf -index 9ce9c8ac..64e3d082 100644 ---- a/src/conf/cards/SB-XFi.conf -+++ b/src/conf/cards/SB-XFi.conf -@@ -12,7 +12,7 @@ SB-XFi.pcm.front.!0 { - type hw - card $CARD - device 0 --} -+} - - - -@@ -25,7 +25,7 @@ SB-XFi.pcm.rear.!0 { - card $CARD - device 1 - hint.device 1 --} -+} - - - -@@ -38,7 +38,7 @@ SB-XFi.pcm.center_lfe.!0 { - card $CARD - device 2 - hint.device 2 --} -+} - - - -@@ -51,7 +51,7 @@ SB-XFi.pcm.side.!0 { - card $CARD - device 3 - hint.device 3 --} -+} - - - -diff --git a/src/conf/cards/SI7018.conf b/src/conf/cards/SI7018.conf -index 33d19085..3a22107c 100644 ---- a/src/conf/cards/SI7018.conf -+++ b/src/conf/cards/SI7018.conf -@@ -14,7 +14,7 @@ SI7018.pcm.front.!0 { - type hw - card $CARD - chmap [ "UNKNOWN" "FL,FR" ] --} -+} - - - -@@ -23,7 +23,7 @@ SI7018.pcm.rear.!0 { - @args.CARD { - type string - } -- type hooks -+ type hooks - slave.pcm { - type hw - card $CARD -@@ -40,7 +40,7 @@ SI7018.pcm.rear.!0 { - } - ] - } --} -+} - - - -diff --git a/src/conf/cards/TRID4DWAVENX.conf b/src/conf/cards/TRID4DWAVENX.conf -index 5001297e..3c25515e 100644 ---- a/src/conf/cards/TRID4DWAVENX.conf -+++ b/src/conf/cards/TRID4DWAVENX.conf -@@ -12,7 +12,7 @@ TRID4DWAVENX.pcm.front.!0 { - type hw - card $CARD - chmap [ "UNKNOWN" "FL,FR" ] --} -+} - - - -@@ -52,7 +52,7 @@ TRID4DWAVENX.pcm.rear.!0 { - } - ] - } --} -+} - - - -diff --git a/src/conf/cards/USB-Audio.conf b/src/conf/cards/USB-Audio.conf -index 1fc540e2..33d856f2 100644 ---- a/src/conf/cards/USB-Audio.conf -+++ b/src/conf/cards/USB-Audio.conf -@@ -47,7 +47,7 @@ USB-Audio.pcm.iec958_device { - "XONAR U5" 1 - "XONAR SOUND CARD" 1 - "Xonar SoundCard" 2 -- -+ - # The below don't have digital in/out, so prevent them from being opened. - "Andrea PureAudio USB-SA Headset" 999 - "Blue Snowball" 999 -diff --git a/src/conf/cards/VIA686A.conf b/src/conf/cards/VIA686A.conf -index c53dd71b..40c2f89e 100644 ---- a/src/conf/cards/VIA686A.conf -+++ b/src/conf/cards/VIA686A.conf -@@ -14,7 +14,7 @@ VIA686A.pcm.front.!0 { - } - type hw - card $CARD --} -+} - - # default with dmix/dsnoop - VIA686A.pcm.!default { -diff --git a/src/conf/cards/VIA8233.conf b/src/conf/cards/VIA8233.conf -index 3c25a11b..ccc7fe2f 100644 ---- a/src/conf/cards/VIA8233.conf -+++ b/src/conf/cards/VIA8233.conf -@@ -11,7 +11,7 @@ VIA8233.pcm.front.!0 { - } - type hw - card $CARD --} -+} - - # default with softvol/dsnoop - # VIA8233 supports multi-playback -diff --git a/src/conf/cards/VIA8233A.conf b/src/conf/cards/VIA8233A.conf -index c9e56e20..e566edeb 100644 ---- a/src/conf/cards/VIA8233A.conf -+++ b/src/conf/cards/VIA8233A.conf -@@ -11,7 +11,7 @@ VIA8233A.pcm.front.!0 { - } - type hw - card $CARD --} -+} - - # default with dmix/dsnoop - VIA8233A.pcm.!default { -diff --git a/src/conf/cards/VIA8237.conf b/src/conf/cards/VIA8237.conf -index 49fd6f2c..074e342c 100644 ---- a/src/conf/cards/VIA8237.conf -+++ b/src/conf/cards/VIA8237.conf -@@ -11,7 +11,7 @@ VIA8237.pcm.front.!0 { - } - type hw - card $CARD --} -+} - - # default with softvol/dsnoop - # VIA8237 supports multi-playback -diff --git a/src/conf/cards/VX222.conf b/src/conf/cards/VX222.conf -index 2c6e2297..96ea32f6 100644 ---- a/src/conf/cards/VX222.conf -+++ b/src/conf/cards/VX222.conf -@@ -11,7 +11,7 @@ VX222.pcm.front.!0 { - } - type hw - card $CARD --} -+} - - - -diff --git a/src/conf/cards/VXPocket.conf b/src/conf/cards/VXPocket.conf -index 90b13347..81260a7d 100644 ---- a/src/conf/cards/VXPocket.conf -+++ b/src/conf/cards/VXPocket.conf -@@ -11,7 +11,7 @@ VXPocket.pcm.front.!0 { - } - type hw - card $CARD --} -+} - - - -diff --git a/src/conf/cards/VXPocket440.conf b/src/conf/cards/VXPocket440.conf -index 87a0855a..6b3aea40 100644 ---- a/src/conf/cards/VXPocket440.conf -+++ b/src/conf/cards/VXPocket440.conf -@@ -11,7 +11,7 @@ VXPocket440.pcm.front.!0 { - } - type hw - card $CARD --} -+} - - - -diff --git a/src/conf/cards/YMF744.conf b/src/conf/cards/YMF744.conf -index ad1f2132..974bf791 100644 ---- a/src/conf/cards/YMF744.conf -+++ b/src/conf/cards/YMF744.conf -@@ -11,7 +11,7 @@ YMF744.pcm.front.!0 { - } - type hw - card $CARD --} -+} - - - -@@ -23,7 +23,7 @@ YMF744.pcm.rear.!0 { - type hw - card $CARD - device 2 --} -+} - - - -diff --git a/src/conf/cards/pistachio-card.conf b/src/conf/cards/pistachio-card.conf -index 15cfd60b..d92c019a 100644 ---- a/src/conf/cards/pistachio-card.conf -+++ b/src/conf/cards/pistachio-card.conf -@@ -1,10 +1,10 @@ - # - # Configuration for the pistachio chip. - # --# The data sheet of the chip and technical reference manual can be --found at -+# The data sheet of the chip and technical reference manual can be -+found at - https://docs.creatordev.io/ci40/guides/hardwaredocs/cXT200_datasheet2.p --df # and -+df # and - https://docs.creatordev.io/ci40/guides/hardwaredocs/MIPS_Creator_cXT200_Technical_Reference_Manual_1.0.112.pdf. - # - # The list of hardware devices is as per below: -@@ -30,30 +30,30 @@ https://docs.creatordev.io/ci40/guides/hardwaredocs/MIPS_Creator_cXT200_Technica - # - - pistachio-card.pcm.!default { -- @args [ CARD ] -- @args.CARD { -- type string -- default "pistachio" -- } -- @args.DEVICE { -- type integer -- default 2 -- } -+ @args [ CARD ] -+ @args.CARD { -+ type string -+ default "pistachio" -+ } -+ @args.DEVICE { -+ type integer -+ default 2 -+ } - -- type asym -- capture.pcm { -- type multi -- slaves.a.pcm "hw:0,4" -- slaves.a.channels 12 -- bindings.0.slave a -- bindings.0.channel 4 -- bindings.1.slave a -- bindings.1.channel 5 -- } -+ type asym -+ capture.pcm { -+ type multi -+ slaves.a.pcm "hw:0,4" -+ slaves.a.channels 12 -+ bindings.0.slave a -+ bindings.0.channel 4 -+ bindings.1.slave a -+ bindings.1.channel 5 -+ } - -- playback.pcm { -- type hw -- card $CARD -- device $DEVICE -- } -+ playback.pcm { -+ type hw -+ card $CARD -+ device $DEVICE -+ } - } --- -2.51.1 - diff --git a/alsa-lib.spec b/alsa-lib.spec index f64c71c..c7f5e16 100644 --- a/alsa-lib.spec +++ b/alsa-lib.spec @@ -2,14 +2,17 @@ #define prever_dot .rc3 #define postver a -%define version_alsa_lib 1.2.15 -%define version_alsa_ucm 1.2.15 +%define version_alsa_lib 1.2.15.1 +%define version_alsa_ucm 1.2.15.1 %define version_alsa_tplg 1.2.5 +%global lib_patch 0 +%global ucm_patch 0 + Summary: The Advanced Linux Sound Architecture (ALSA) library Name: alsa-lib Version: %{version_alsa_lib} -Release: 4%{?prever_dot}%{?dist} +Release: 1%{?prever_dot}%{?dist} License: LGPL-2.1-or-later URL: http://www.alsa-project.org/ @@ -19,8 +22,12 @@ Source2: ftp://ftp.alsa-project.org/pub/lib/alsa-topology-conf-%{version_alsa_t Source10: asound.conf Source11: modprobe-dist-alsa.conf Source12: modprobe-dist-oss.conf +%if %{ucm_patch} Source40: alsa-ucm-conf.patch +%endif +%if %{lib_patch} Patch0: alsa-git.patch +%endif Patch1: alsa-lib-1.2.3.1-config.patch Patch2: alsa-lib-1.2.10-glibc-open.patch @@ -70,7 +77,9 @@ contains alsa-lib configuration of SoC topology %prep %setup -q -n %{name}-%{version}%{?prever}%{?postver} +%if %{lib_patch} %patch -P0 -p1 -b .alsa-git +%endif %patch -P1 -p1 -b .config %patch -P2 -p1 -b .glibc-open @@ -116,7 +125,9 @@ mkdir -p %{buildroot}/%{_datadir}/alsa/ucm2 # Unpack UCMs tar xvjf %{SOURCE1} -C %{buildroot}/%{_datadir}/alsa --strip-components=1 "*/ucm" "*/ucm2" +%if %{ucm_patch} patch -d %{buildroot}/%{_datadir}/alsa -p1 < %{SOURCE40} +%endif # Create topology directory mkdir -p %{buildroot}/%{_datadir}/alsa/topology @@ -167,6 +178,9 @@ rm %{buildroot}/%{_includedir}/asoundlib.h %{_datadir}/alsa/topology %changelog +* Fri Dec 19 2025 Jaroslav Kysela - 1.2.15.1-1 +- update to 1.2.15.1 + * Wed Dec 10 2025 Jaroslav Kysela - 1.2.15-4 - update to 1.2.15 diff --git a/alsa-ucm-conf.patch b/alsa-ucm-conf.patch deleted file mode 100644 index 0447c61..0000000 --- a/alsa-ucm-conf.patch +++ /dev/null @@ -1,264 +0,0 @@ -From d57d800c6a5a77e6c475719b0297bebb098f7533 Mon Sep 17 00:00:00 2001 -From: Maciej Strozek -Date: Tue, 9 Dec 2025 13:00:44 +0000 -Subject: [PATCH 1/3] sof-soundwire: third fix for multi-codec - -Ensure MultiCodec-based actions are only done when MultiCodec1 is not empty - -Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/658 -Signed-off-by: Maciej Strozek -Signed-off-by: Jaroslav Kysela ---- - ucm2/sof-soundwire/sof-soundwire.conf | 15 +++++++++------ - 1 file changed, 9 insertions(+), 6 deletions(-) - -diff --git a/ucm2/sof-soundwire/sof-soundwire.conf b/ucm2/sof-soundwire/sof-soundwire.conf -index 7f9c7dc..895f479 100644 ---- a/ucm2/sof-soundwire/sof-soundwire.conf -+++ b/ucm2/sof-soundwire/sof-soundwire.conf -@@ -72,8 +72,9 @@ If.multi_init { - If.multi_speaker { - Condition { - Type RegexMatch -- Regex "(${var:MultiCodec1}(-sdca)?)" -- String "${var:SpeakerCodec1}" -+ # guard with "=" to avoid empty string matching -+ Regex "=(${var:MultiCodec1}(-sdca)?)=" -+ String "=${var:SpeakerCodec1}=" - } - True { - Define.SpeakerCodec1 "" -@@ -83,8 +84,9 @@ If.multi_speaker { - If.multi_mic { - Condition { - Type RegexMatch -- Regex "(${var:MultiCodec1}(-sdca)?)" -- String "${var:MicCodec1}" -+ # guard with "=" to avoid empty string matching -+ Regex "=(${var:MultiCodec1}(-sdca)?)=" -+ String "=${var:MicCodec1}=" - } - True { - Define.MicCodec1 "" -@@ -94,8 +96,9 @@ If.multi_mic { - If.multi_headset { - Condition { - Type RegexMatch -- Regex "(${var:MultiCodec1}(-sdca)?)" -- String "${var:HeadsetCodec1}" -+ # guard with "=" to avoid empty string matching -+ Regex "=(${var:MultiCodec1}(-sdca)?)=" -+ String "=${var:HeadsetCodec1}=" - } - True { - Define.HeadsetCodec1 "" --- -2.51.1 - - -From 51bada5f0c1b634b5db92de428f33c0188e68e82 Mon Sep 17 00:00:00 2001 -From: Maciej Strozek -Date: Fri, 28 Nov 2025 16:08:23 +0000 -Subject: [PATCH 2/3] ucm2: sof-soundwire: Simplify cs42l45 configs - -Simplify cs42l45 configs following machine driver changes [1] -which bring normal switches instead of mute switches. - -[1] https://lore.kernel.org/all/20251127163426.2500633-2-ckeepax@opensource.cirrus.com/ - -Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/655 -Signed-off-by: Maciej Strozek -Signed-off-by: Jaroslav Kysela ---- - ucm2/codecs/cs42l45-dmic/init.conf | 17 +++++++++++++++-- - ucm2/codecs/cs42l45/init.conf | 24 ++++++++++++++++++++++++ - ucm2/sof-soundwire/cs42l45-dmic.conf | 8 ++------ - ucm2/sof-soundwire/cs42l45.conf | 18 +++--------------- - ucm2/sof-soundwire/sof-soundwire.conf | 2 +- - 5 files changed, 45 insertions(+), 24 deletions(-) - create mode 100644 ucm2/codecs/cs42l45/init.conf - -diff --git a/ucm2/codecs/cs42l45-dmic/init.conf b/ucm2/codecs/cs42l45-dmic/init.conf -index 6dd19bb..deefb3d 100644 ---- a/ucm2/codecs/cs42l45-dmic/init.conf -+++ b/ucm2/codecs/cs42l45-dmic/init.conf -@@ -1,9 +1,22 @@ - # cs42l45 specific control settings - -+LibraryConfig.remap.Config { -+ ctl.default.map { -+ "name='cs42l45 Microphone Capture Switch'" { -+ "name='cs42l45 FU 113 Channel Switch'".vindex.0 0 -+ "name='cs42l45 FU 113 Channel Switch'".vindex.1 1 -+ } -+ "name='cs42l45 Microphone Capture Volume'" { -+ "name='cs42l45 FU 113 Channel Volume'".vindex.0 0 -+ "name='cs42l45 FU 113 Channel Volume'".vindex.1 1 -+ } -+ } -+} -+ - BootSequence [ -- cset "name='cs42l45 FU 113 Mute Switch' 0" -+ cset "name='cs42l45 FU 113 Channel Switch' 0" - ] - - Macro [ -- { SetLED { LED="mic" Action="attach" CtlId="cs42l45 FU 113 Mute Switch" Mode="follow-route"} } -+ { SetLED { LED="mic" Action="attach" CtlId="cs42l45 FU 113 Channel Switch"} } - ] -diff --git a/ucm2/codecs/cs42l45/init.conf b/ucm2/codecs/cs42l45/init.conf -new file mode 100644 -index 0000000..f4aee4a ---- /dev/null -+++ b/ucm2/codecs/cs42l45/init.conf -@@ -0,0 +1,24 @@ -+# cs42l45 specific control settings -+ -+LibraryConfig.remap.Config { -+ ctl.default.map { -+ "name='cs42l45 Jack Microphone Capture Switch'" { -+ "name='cs42l45 FU 36 Channel Switch'".vindex.0 0 -+ "name='cs42l45 FU 36 Channel Switch'".vindex.1 1 -+ } -+ "name='cs42l45 Jack Microphone Capture Volume'" { -+ "name='cs42l45 FU 36 Channel Volume'".vindex.0 0 -+ "name='cs42l45 FU 36 Channel Volume'".vindex.1 1 -+ } -+ } -+ ctl.default.map { -+ "name='cs42l45 Headphone Playback Switch'" { -+ "name='cs42l45 FU 41 Channel Switch'".vindex.0 0 -+ "name='cs42l45 FU 41 Channel Switch'".vindex.1 1 -+ } -+ "name='cs42l45 Headphone Playback Volume'" { -+ "name='cs42l45 FU 41 Channel Volume'".vindex.0 0 -+ "name='cs42l45 FU 41 Channel Volume'".vindex.1 1 -+ } -+ } -+} -\ No newline at end of file -diff --git a/ucm2/sof-soundwire/cs42l45-dmic.conf b/ucm2/sof-soundwire/cs42l45-dmic.conf -index 9477cba..d46808e 100644 ---- a/ucm2/sof-soundwire/cs42l45-dmic.conf -+++ b/ucm2/sof-soundwire/cs42l45-dmic.conf -@@ -7,18 +7,14 @@ SectionDevice."Mic" { - "Headset" - ] - -- EnableSequence [ -- cset "name='cs42l45 FU 113 Mute Switch' 0" -- ] -- - DisableSequence [ -- cset "name='cs42l45 FU 113 Mute Switch' 1" -+ cset "name='cs42l45 FU 113 Channel Switch' 0" - ] - - Value { - CapturePriority 100 - CapturePCM "hw:${CardId},4" - CaptureMixer "default:${CardId}" -- CaptureVolume "cs42l45 FU 113 Channel Volume" -+ CaptureMixerElem "cs42l45 Microphone" - } - } -diff --git a/ucm2/sof-soundwire/cs42l45.conf b/ucm2/sof-soundwire/cs42l45.conf -index ba61048..c88562a 100644 ---- a/ucm2/sof-soundwire/cs42l45.conf -+++ b/ucm2/sof-soundwire/cs42l45.conf -@@ -3,19 +3,11 @@ - SectionDevice."Headphones" { - Comment "Headphones" - -- EnableSequence [ -- cset "name='cs42l45 FU 41 Mute Switch' 0" -- ] -- -- DisableSequence [ -- cset "name='cs42l45 FU 41 Mute Switch' 1" -- ] -- - Value { - PlaybackPriority 200 - PlaybackPCM "hw:${CardId},0" - PlaybackMixer "default:${CardId}" -- PlaybackVolume "cs42l45 FU 41 Channel Volume" -+ PlaybackMixerElem "cs42l45 Headphone" - JackControl "cs42l45 OT 43 Headphone Jack" - } - } -@@ -23,19 +15,15 @@ SectionDevice."Headphones" { - SectionDevice."Headset" { - Comment "Jack Microphone" - -- EnableSequence [ -- cset "name='cs42l45 FU 36 Mute Switch' 0" -- ] -- - DisableSequence [ -- cset "name='cs42l45 FU 36 Mute Switch' 1" -+ cset "name='cs42l45 FU 36 Channel Switch' 0" - ] - - Value { - CapturePriority 200 - CapturePCM "hw:${CardId},1" - CaptureMixer "default:${CardId}" -- CaptureVolume "cs42l45 FU 36 Channel Volume" -+ CaptureMixerElem "cs42l45 Jack Microphone" - JackControl "cs42l45 IT 31 Microphone Jack" - } - } -diff --git a/ucm2/sof-soundwire/sof-soundwire.conf b/ucm2/sof-soundwire/sof-soundwire.conf -index 895f479..7a00209 100644 ---- a/ucm2/sof-soundwire/sof-soundwire.conf -+++ b/ucm2/sof-soundwire/sof-soundwire.conf -@@ -117,7 +117,7 @@ If.spk_init { - If.hs_init { - Condition { - Type RegexMatch -- Regex "(cs42l43|rt5682|rt700|rt711|rt713(-sdca)?)" -+ Regex "(cs42l43|cs42l45|rt5682|rt700|rt711|rt713(-sdca)?)" - String "${var:HeadsetCodec1}" - } - True.Include.hs_init.File "/codecs/${var:HeadsetCodec1}/init.conf" --- -2.51.1 - - -From 5d0d2bd660b4378f802c94be3eadd8375c4c7a3a Mon Sep 17 00:00:00 2001 -From: Shuming Fan -Date: Tue, 9 Dec 2025 15:40:49 +0800 -Subject: [PATCH 3/3] ucm2: codecs: rt722: add condition to SetLED for mic - -Some SKUs don't have the internal mic, so the patch adds the condition to check -whether the SKU has the internal mic or not. - -Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/657 -Signed-off-by: Shuming Fan -Signed-off-by: Jaroslav Kysela ---- - ucm2/codecs/rt722/init.conf | 9 ++++++++- - 1 file changed, 8 insertions(+), 1 deletion(-) - -diff --git a/ucm2/codecs/rt722/init.conf b/ucm2/codecs/rt722/init.conf -index c820e55..40f2458 100644 ---- a/ucm2/codecs/rt722/init.conf -+++ b/ucm2/codecs/rt722/init.conf -@@ -10,4 +10,11 @@ BootSequence [ - cset "name='rt722 FU0F Capture Volume' 63" - ] - --Macro [{ SetLED { LED="mic" Action="attach" CtlId="rt722 FU1E Capture Switch" } }] -+If.mic_init_rt722 { -+ Condition { -+ Type String -+ Needle "rt722" -+ Haystack "${var:MicCodec1}" -+ } -+ True.Macro [{ SetLED { LED="mic" Action="attach" CtlId="rt722 FU1E Capture Switch" } }] -+} --- -2.51.1 - diff --git a/sources b/sources index 9ce5bdb..db04fd8 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ -SHA512 (alsa-lib-1.2.15.tar.bz2) = 6cea9059265ef353a07f1b442004506f0f13883692ea35f03090282ca80db88055f470d2dca5bb54394fef0012711f0e9502d2d0f7fb66b27aa334bffb811559 -SHA512 (alsa-ucm-conf-1.2.15.tar.bz2) = 61dcbfe32ad912b793bf70d6f9e0e462353431b9589623ce8a7ec18b5dba48c230f5ba509e47384764625ae82f132babfbf62a8e5f4bb951377476ba147939e2 +SHA512 (alsa-lib-1.2.15.1.tar.bz2) = 36d79055537cf516dd435db56559ee59f3efbbea72ae0dbe5244191cfba4e181ed13100d908eb51bfd3a3be70aa87081df9b56921e7d24c3b3728e4374507236 +SHA512 (alsa-ucm-conf-1.2.15.1.tar.bz2) = 1c506cd6ed18ecf3f549dce9d945684594cbc3ca315b2c9d399dc5b8d6617209400053509dfb76ba5dd48a215803e5c0bbc654a40498bb8097ea6fa1baa90f9e SHA512 (alsa-topology-conf-1.2.5.tar.bz2) = 2eb4d8baf2dcbf0b631dd11dbf15bffc51694d9cc6931619e51787f3ba58d1a091d266e6721a3b737c040ec74a28270b93f39fb97f30a3227cf340dd646e5d51 From 2bb0b91c53b6610b3990f51f09ad34152f39e37a Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Thu, 8 Jan 2026 15:48:16 +0100 Subject: [PATCH 22/24] update to 1.2.15.2 Signed-off-by: Jaroslav Kysela --- alsa-lib.spec | 7 +++++-- sources | 4 ++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/alsa-lib.spec b/alsa-lib.spec index c7f5e16..769a956 100644 --- a/alsa-lib.spec +++ b/alsa-lib.spec @@ -2,8 +2,8 @@ #define prever_dot .rc3 #define postver a -%define version_alsa_lib 1.2.15.1 -%define version_alsa_ucm 1.2.15.1 +%define version_alsa_lib 1.2.15.2 +%define version_alsa_ucm 1.2.15.2 %define version_alsa_tplg 1.2.5 %global lib_patch 0 @@ -178,6 +178,9 @@ rm %{buildroot}/%{_includedir}/asoundlib.h %{_datadir}/alsa/topology %changelog +* Thu Jan 8 2026 Jaroslav Kysela - 1.2.15.2-1 +- update to 1.2.15.2 + * Fri Dec 19 2025 Jaroslav Kysela - 1.2.15.1-1 - update to 1.2.15.1 diff --git a/sources b/sources index db04fd8..23cfc23 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ -SHA512 (alsa-lib-1.2.15.1.tar.bz2) = 36d79055537cf516dd435db56559ee59f3efbbea72ae0dbe5244191cfba4e181ed13100d908eb51bfd3a3be70aa87081df9b56921e7d24c3b3728e4374507236 -SHA512 (alsa-ucm-conf-1.2.15.1.tar.bz2) = 1c506cd6ed18ecf3f549dce9d945684594cbc3ca315b2c9d399dc5b8d6617209400053509dfb76ba5dd48a215803e5c0bbc654a40498bb8097ea6fa1baa90f9e +SHA512 (alsa-lib-1.2.15.2.tar.bz2) = e9a13aafa9693be2ce501059db0ff9f83a0044d07019bd6b420617da44cc4e7df6f444da9eccf37577893ed81426dce44ecdb9a652d1db047e24a3b803da4a8a +SHA512 (alsa-ucm-conf-1.2.15.2.tar.bz2) = 32781f28814b360c1ddabafa23ab989be18b284990dbc013cb712a9c6c12d5236e493b1fb33582e5edfd73f282a6f2db82adf0754356a8337e1fa4bd2a656dac SHA512 (alsa-topology-conf-1.2.5.tar.bz2) = 2eb4d8baf2dcbf0b631dd11dbf15bffc51694d9cc6931619e51787f3ba58d1a091d266e6721a3b737c040ec74a28270b93f39fb97f30a3227cf340dd646e5d51 From 454530bd653b061f3f453da187b4a89372b52d27 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Tue, 13 Jan 2026 08:29:06 +0100 Subject: [PATCH 23/24] update to 1.2.15.3 Signed-off-by: Jaroslav Kysela --- alsa-lib.spec | 7 +++++-- sources | 4 ++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/alsa-lib.spec b/alsa-lib.spec index 769a956..ee7b134 100644 --- a/alsa-lib.spec +++ b/alsa-lib.spec @@ -2,8 +2,8 @@ #define prever_dot .rc3 #define postver a -%define version_alsa_lib 1.2.15.2 -%define version_alsa_ucm 1.2.15.2 +%define version_alsa_lib 1.2.15.3 +%define version_alsa_ucm 1.2.15.3 %define version_alsa_tplg 1.2.5 %global lib_patch 0 @@ -178,6 +178,9 @@ rm %{buildroot}/%{_includedir}/asoundlib.h %{_datadir}/alsa/topology %changelog +* Tue Jan 13 2026 Jaroslav Kysela - 1.2.15.3-1 +- update to 1.2.15.3 + * Thu Jan 8 2026 Jaroslav Kysela - 1.2.15.2-1 - update to 1.2.15.2 diff --git a/sources b/sources index 23cfc23..8a1161f 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ -SHA512 (alsa-lib-1.2.15.2.tar.bz2) = e9a13aafa9693be2ce501059db0ff9f83a0044d07019bd6b420617da44cc4e7df6f444da9eccf37577893ed81426dce44ecdb9a652d1db047e24a3b803da4a8a -SHA512 (alsa-ucm-conf-1.2.15.2.tar.bz2) = 32781f28814b360c1ddabafa23ab989be18b284990dbc013cb712a9c6c12d5236e493b1fb33582e5edfd73f282a6f2db82adf0754356a8337e1fa4bd2a656dac +SHA512 (alsa-lib-1.2.15.3.tar.bz2) = 7fc0fa8a5ae02d3404d2c262c6a14fcbb8b08e25993eac86b9e89b8419ed4d293b422da77b3eb7a1930f26c316b638e5aa7bdba78b0ada9908b0362d132a0cc0 +SHA512 (alsa-ucm-conf-1.2.15.3.tar.bz2) = 079aeb45bc3f98448f6e48a1267db5d3f46a51d7060eb8275d0a084574e23eec34f07108610538e898c397fa24941ccf1bb7722c6b4bb0fa9c48904addc03973 SHA512 (alsa-topology-conf-1.2.5.tar.bz2) = 2eb4d8baf2dcbf0b631dd11dbf15bffc51694d9cc6931619e51787f3ba58d1a091d266e6721a3b737c040ec74a28270b93f39fb97f30a3227cf340dd646e5d51 From 44510615c1fb478490de273b6e24336dccbcae1c Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 16 Jan 2026 03:36:37 +0000 Subject: [PATCH 24/24] Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild --- alsa-lib.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/alsa-lib.spec b/alsa-lib.spec index ee7b134..df66e75 100644 --- a/alsa-lib.spec +++ b/alsa-lib.spec @@ -12,7 +12,7 @@ Summary: The Advanced Linux Sound Architecture (ALSA) library Name: alsa-lib Version: %{version_alsa_lib} -Release: 1%{?prever_dot}%{?dist} +Release: 2%{?prever_dot}%{?dist} License: LGPL-2.1-or-later URL: http://www.alsa-project.org/ @@ -178,6 +178,9 @@ rm %{buildroot}/%{_includedir}/asoundlib.h %{_datadir}/alsa/topology %changelog +* Fri Jan 16 2026 Fedora Release Engineering - 1.2.15.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild + * Tue Jan 13 2026 Jaroslav Kysela - 1.2.15.3-1 - update to 1.2.15.3