Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package alsa for openSUSE:Factory checked in 
at 2025-12-10 15:50:32
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/alsa (Old)
 and      /work/SRC/openSUSE:Factory/.alsa.new.1939 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "alsa"

Wed Dec 10 15:50:32 2025 rev:232 rq:1321945 version:1.2.15

Changes:
--------
--- /work/SRC/openSUSE:Factory/alsa/alsa.changes        2025-12-09 
12:47:47.217434061 +0100
+++ /work/SRC/openSUSE:Factory/.alsa.new.1939/alsa.changes      2025-12-10 
15:50:34.713113316 +0100
@@ -1,0 +2,12 @@
+Wed Dec 10 11:20:56 UTC 2025 - Takashi Iwai <[email protected]>
+
+- Backport upstream fixes, mainly for regressions (bsc#1254652):
+  0001-ucm-use-closefrom-instead-of-close_range.patch
+  0002-ucm-exec-fix-maxfd-used-warning.patch
+  0003-conf-merge-card-specific-contents-per-file-whole-aft.patch
+  0004-conf-fix-possible-memory-leak-in-config_file_open-er.patch
+  0005-Revert-conf-fix-load_for_all_cards-do-not-merge-the-.patch
+  0006-conf-USB-Audio-define-pcm-configuration-block-only-o.patch
+  0007-conf-HDA-Intel-define-pcm-configuration-block-only-o.patch
+
+-------------------------------------------------------------------

New:
----
  0001-ucm-use-closefrom-instead-of-close_range.patch
  0002-ucm-exec-fix-maxfd-used-warning.patch
  0003-conf-merge-card-specific-contents-per-file-whole-aft.patch
  0004-conf-fix-possible-memory-leak-in-config_file_open-er.patch
  0005-Revert-conf-fix-load_for_all_cards-do-not-merge-the-.patch
  0006-conf-USB-Audio-define-pcm-configuration-block-only-o.patch
  0007-conf-HDA-Intel-define-pcm-configuration-block-only-o.patch

----------(New B)----------
  New:- Backport upstream fixes, mainly for regressions (bsc#1254652):
  0001-ucm-use-closefrom-instead-of-close_range.patch
  0002-ucm-exec-fix-maxfd-used-warning.patch
  New:  0001-ucm-use-closefrom-instead-of-close_range.patch
  0002-ucm-exec-fix-maxfd-used-warning.patch
  0003-conf-merge-card-specific-contents-per-file-whole-aft.patch
  New:  0002-ucm-exec-fix-maxfd-used-warning.patch
  0003-conf-merge-card-specific-contents-per-file-whole-aft.patch
  0004-conf-fix-possible-memory-leak-in-config_file_open-er.patch
  New:  0003-conf-merge-card-specific-contents-per-file-whole-aft.patch
  0004-conf-fix-possible-memory-leak-in-config_file_open-er.patch
  0005-Revert-conf-fix-load_for_all_cards-do-not-merge-the-.patch
  New:  0004-conf-fix-possible-memory-leak-in-config_file_open-er.patch
  0005-Revert-conf-fix-load_for_all_cards-do-not-merge-the-.patch
  0006-conf-USB-Audio-define-pcm-configuration-block-only-o.patch
  New:  0005-Revert-conf-fix-load_for_all_cards-do-not-merge-the-.patch
  0006-conf-USB-Audio-define-pcm-configuration-block-only-o.patch
  0007-conf-HDA-Intel-define-pcm-configuration-block-only-o.patch
  New:  0006-conf-USB-Audio-define-pcm-configuration-block-only-o.patch
  0007-conf-HDA-Intel-define-pcm-configuration-block-only-o.patch
----------(New E)----------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ alsa.spec ++++++
--- /var/tmp/diff_new_pack.DyfXDF/_old  2025-12-10 15:50:39.397311469 +0100
+++ /var/tmp/diff_new_pack.DyfXDF/_new  2025-12-10 15:50:39.413312146 +0100
@@ -63,6 +63,13 @@
 # from https://www.alsa-project.org/files/pub/gpg-release-key-v1.txt
 Source35:       alsa.keyring
 # upstream fixes
+Patch1:         0001-ucm-use-closefrom-instead-of-close_range.patch
+Patch2:         0002-ucm-exec-fix-maxfd-used-warning.patch
+Patch3:         0003-conf-merge-card-specific-contents-per-file-whole-aft.patch
+Patch4:         0004-conf-fix-possible-memory-leak-in-config_file_open-er.patch
+Patch5:         0005-Revert-conf-fix-load_for_all_cards-do-not-merge-the-.patch
+Patch6:         0006-conf-USB-Audio-define-pcm-configuration-block-only-o.patch
+Patch7:         0007-conf-HDA-Intel-define-pcm-configuration-block-only-o.patch
 # rest suse fixes
 Patch101:       alsa-lib-ignore-non-accessible-ALSA_CONFIG_PATH.patch
 BuildRequires:  doxygen

++++++ 0001-ucm-use-closefrom-instead-of-close_range.patch ++++++
>From a068cf08ad67447893b707cddfce31c9cafee643 Mon Sep 17 00:00:00 2001
From: Mike Gilbert <[email protected]>
Date: Mon, 8 Dec 2025 23:46:17 -0500
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.

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 <[email protected]>
Signed-off-by: Jaroslav Kysela <[email protected]>
---
 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 8f4bd0de1400..f4862f64cd4c 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 b5a22023b680..713039b4920f 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.52.0


++++++ 0002-ucm-exec-fix-maxfd-used-warning.patch ++++++
>From 813ffe34ff6c720dcc56e4549338bf9e9184af1f Mon Sep 17 00:00:00 2001
From: Jaroslav Kysela <[email protected]>
Date: Tue, 9 Dec 2025 17:48:34 +0100
Subject: [PATCH 2/7] ucm: exec - fix maxfd used warning

Fixes: a068cf08 ("ucm: use closefrom instead of close_range")
Signed-off-by: Jaroslav Kysela <[email protected]>
---
 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 713039b4920f..c16a4cfdaec0 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.52.0


++++++ 0003-conf-merge-card-specific-contents-per-file-whole-aft.patch ++++++
>From a6238053c4fa518b214f99d91a01b96c5ef6e3ca Mon Sep 17 00:00:00 2001
From: Jaroslav Kysela <[email protected]>
Date: Tue, 9 Dec 2025 18:04:07 +0100
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.
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 <[email protected]>
---
 src/conf.c | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/src/conf.c b/src/conf.c
index 49499ecdfc3c..b1ec9b382d66 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.52.0


++++++ 0004-conf-fix-possible-memory-leak-in-config_file_open-er.patch ++++++
>From 2f59398c83b8065fb9ff58939df3a9187746068e Mon Sep 17 00:00:00 2001
From: Jaroslav Kysela <[email protected]>
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 <[email protected]>
---
 src/conf.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/conf.c b/src/conf.c
index b1ec9b382d66..d90f6dc35d3b 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.52.0


++++++ 0005-Revert-conf-fix-load_for_all_cards-do-not-merge-the-.patch ++++++
>From 2ef8952b46a46b97a6df2f29bcd182f895ebf9e4 Mon Sep 17 00:00:00 2001
From: Jaroslav Kysela <[email protected]>
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 <[email protected]>
---
 src/conf.c | 42 ++++++++++++------------------------------
 1 file changed, 12 insertions(+), 30 deletions(-)

diff --git a/src/conf.c b/src/conf.c
index d90f6dc35d3b..fb9f0658a816 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.52.0


++++++ 0006-conf-USB-Audio-define-pcm-configuration-block-only-o.patch ++++++
>From 16ab43db6ed6f71424d5ad78e62f85baaeae5051 Mon Sep 17 00:00:00 2001
From: Jaroslav Kysela <[email protected]>
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 <[email protected]>
---
 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 2f6d2ee0af3d..1fc540e2eb4d 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 {
 
 <confdir:pcm/front.conf>
 
-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 {
 
 <confdir:pcm/surround40.conf>
 
-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 {
 <confdir:pcm/surround50.conf>
 <confdir:pcm/surround51.conf>
 
-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 {
 
 <confdir:pcm/surround71.conf>
 
-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 {
 
 <confdir:pcm/iec958.conf>
 
-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.52.0


++++++ 0007-conf-HDA-Intel-define-pcm-configuration-block-only-o.patch ++++++
>From 010b699c92a9a6ffdca1874cd2e3c6c054d212e0 Mon Sep 17 00:00:00 2001
From: Jaroslav Kysela <[email protected]>
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 <[email protected]>
---
 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 5451606f4d31..76775b9753df 100644
--- a/src/conf/cards/HDA-Intel.conf
+++ b/src/conf/cards/HDA-Intel.conf
@@ -4,7 +4,7 @@
 
 <confdir:pcm/front.conf>
 
-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
 
 <confdir:pcm/iec958.conf>
 
-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 {
 
 <confdir:pcm/modem.conf>
 
-HDA-Intel.pcm.modem.0 {
+HDA-Intel.pcm.modem.!0 {
        @args [ CARD ]
        @args.CARD {
                type string
-- 
2.52.0

Reply via email to