Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package alsa-utils for openSUSE:Factory 
checked in at 2024-06-14 18:57:45
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/alsa-utils (Old)
 and      /work/SRC/openSUSE:Factory/.alsa-utils.new.19518 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "alsa-utils"

Fri Jun 14 18:57:45 2024 rev:146 rq:1180720 version:1.2.12

Changes:
--------
--- /work/SRC/openSUSE:Factory/alsa-utils/alsa-utils.changes    2024-06-04 
12:50:45.967031863 +0200
+++ /work/SRC/openSUSE:Factory/.alsa-utils.new.19518/alsa-utils.changes 
2024-06-14 18:57:55.074509820 +0200
@@ -1,0 +2,14 @@
+Thu Jun 13 14:54:47 UTC 2024 - Takashi Iwai <[email protected]>
+
+- Update to alsa-utils 1.2.12:
+  * alsactl: NULL pointer fix
+  * alsa-info.sh: log SoundWire devices reported in ACPI
+  * alsamixer: fix calculation in set_normalized_volume (overflow)
+  * topology: nhlt fixes
+  * aplay: fix S24_LE wav header
+  * aseqdump: Add dump for UMP Utility and System messages
+  * Addition of aseqsend
+  For details, see:
+    https://www.alsa-project.org/wiki/Changes_v1.2.11_v1.2.12#alsa-utils
+
+-------------------------------------------------------------------

Old:
----
  alsa-utils-1.2.11.tar.bz2
  alsa-utils-1.2.11.tar.bz2.sig

New:
----
  alsa-utils-1.2.12.tar.bz2
  alsa-utils-1.2.12.tar.bz2.sig

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

Other differences:
------------------
++++++ alsa-utils.spec ++++++
--- /var/tmp/diff_new_pack.5ThrPb/_old  2024-06-14 18:57:55.850537809 +0200
+++ /var/tmp/diff_new_pack.5ThrPb/_new  2024-06-14 18:57:55.854537954 +0200
@@ -25,7 +25,7 @@
 %endif
 
 Name:           alsa-utils
-Version:        1.2.11
+Version:        1.2.12
 Release:        0
 Summary:        Advanced Linux Sound Architecture Utilities
 License:        GPL-2.0-or-later

++++++ alsa-utils-1.2.11.tar.bz2 -> alsa-utils-1.2.12.tar.bz2 ++++++
++++ 1988 lines of diff (skipped)
++++    retrying with extended exclude list
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/alsa-utils-1.2.11/alsa-info/alsa-info.sh 
new/alsa-utils-1.2.12/alsa-info/alsa-info.sh
--- old/alsa-utils-1.2.11/alsa-info/alsa-info.sh        2024-01-29 
13:57:30.000000000 +0100
+++ new/alsa-utils-1.2.12/alsa-info/alsa-info.sh        2024-06-10 
11:18:36.000000000 +0200
@@ -461,6 +461,20 @@
     done
 fi
 
+# Check for SoundWire ACPI _adr device status
+if [ -d /sys/bus/acpi/devices ]; then
+       for f in /sys/bus/acpi/devices/*/adr; do
+               ACPI_ADR=$(cat $f 2>/dev/null);
+               if [[ "$ACPI_ADR" -ne 0 ]]; then
+                       case $ACPI_ADR in
+                               0x??????025d*) echo "Realtek $ACPI_ADR" 
>>$TEMPDIR/sdwstatus.tmp;;
+                               0x??????01fa*) echo "Cirrus Logic $ACPI_ADR" 
>>$TEMPDIR/sdwstatus.tmp;;
+                               0x??????0102*) echo "TI $ACPI_ADR" 
>>$TEMPDIR/sdwstatus.tmp;;
+                       esac
+               fi
+       done
+fi
+
 awk '{ print $2 " (card " $1 ")" }' < /proc/asound/modules > 
$TEMPDIR/alsamodules.tmp 2> /dev/null
 cat /proc/asound/cards > $TEMPDIR/alsacards.tmp
 if [[ ! -z "$LSPCI" ]]; then
@@ -528,6 +542,12 @@
 cat $TEMPDIR/acpidevicestatus.tmp >> $FILE
 echo "" >> $FILE
 echo "" >> $FILE
+echo "!!ACPI SoundWire Device Status Information" >> $FILE
+echo "!!---------------" >> $FILE
+echo "" >> $FILE
+cat $TEMPDIR/sdwstatus.tmp >> $FILE
+echo "" >> $FILE
+echo "" >> $FILE
 echo "!!Kernel Information" >> $FILE
 echo "!!------------------" >> $FILE
 echo "" >> $FILE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/alsa-utils-1.2.11/alsactl/daemon.c new/alsa-utils-1.2.12/alsactl/daemon.c
--- old/alsa-utils-1.2.11/alsactl/daemon.c      2024-01-29 13:57:30.000000000 
+0100
+++ new/alsa-utils-1.2.12/alsactl/daemon.c      2024-06-10 11:18:36.000000000 
+0200
@@ -79,6 +79,8 @@
 {
        struct card *c = *card;
 
+       if (c == NULL)
+               return;
        free_list(&c->blacklist);
        free_list(&c->whitelist);
        if (c->handle)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/alsa-utils-1.2.11/alsamixer/volume_mapping.c 
new/alsa-utils-1.2.12/alsamixer/volume_mapping.c
--- old/alsa-utils-1.2.11/alsamixer/volume_mapping.c    2024-01-29 
13:57:30.000000000 +0100
+++ new/alsa-utils-1.2.12/alsamixer/volume_mapping.c    2024-06-10 
11:18:36.000000000 +0200
@@ -146,6 +146,8 @@
                min_norm = pow(10, (min - max) / 6000.0);
                volume = volume * (1 - min_norm) + min_norm;
        }
+       if (volume <= 0)
+               volume = 1e-36;
        value = lrint_dir(6000.0 * log10(volume), dir) + max;
        return set_dB[ctl_dir](elem, channel, value, dir);
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/alsa-utils-1.2.11/amixer/volume_mapping.c 
new/alsa-utils-1.2.12/amixer/volume_mapping.c
--- old/alsa-utils-1.2.11/amixer/volume_mapping.c       2024-01-29 
13:57:30.000000000 +0100
+++ new/alsa-utils-1.2.12/amixer/volume_mapping.c       2024-06-10 
11:18:36.000000000 +0200
@@ -146,6 +146,8 @@
                min_norm = pow(10, (min - max) / 6000.0);
                volume = volume * (1 - min_norm) + min_norm;
        }
+       if (volume <= 0)
+               volume = 1e-36;
        value = lrint_dir(6000.0 * log10(volume), dir) + max;
        return set_dB[ctl_dir](elem, channel, value, dir);
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/alsa-utils-1.2.11/aplay/aplay.c new/alsa-utils-1.2.12/aplay/aplay.c
--- old/alsa-utils-1.2.11/aplay/aplay.c 2024-01-29 13:57:30.000000000 +0100
+++ new/alsa-utils-1.2.12/aplay/aplay.c 2024-06-10 11:18:36.000000000 +0200
@@ -2719,11 +2719,11 @@
        case SND_PCM_FORMAT_S16_LE:
                bits = 16;
                break;
+       case SND_PCM_FORMAT_S24_LE: /* S24_LE is 24 bits stored in 32 bit width 
with 8 bit padding */
        case SND_PCM_FORMAT_S32_LE:
-        case SND_PCM_FORMAT_FLOAT_LE:
+       case SND_PCM_FORMAT_FLOAT_LE:
                bits = 32;
                break;
-       case SND_PCM_FORMAT_S24_LE:
        case SND_PCM_FORMAT_S24_3LE:
                bits = 24;
                break;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/alsa-utils-1.2.11/configure.ac new/alsa-utils-1.2.12/configure.ac
--- old/alsa-utils-1.2.11/configure.ac  2024-01-29 14:06:18.000000000 +0100
+++ new/alsa-utils-1.2.12/configure.ac  2024-06-10 11:22:22.000000000 +0200
@@ -1,6 +1,6 @@
 dnl Process this file with autoconf to produce a configure script.
 AC_PREREQ(2.59)
-AC_INIT(alsa-utils, 1.2.11)
+AC_INIT(alsa-utils, 1.2.12)
 AC_CONFIG_SRCDIR([aplay/aplay.c])
 AC_PREFIX_DEFAULT(/usr)
 AM_INIT_AUTOMAKE([subdir-objects])
@@ -487,7 +487,7 @@
          aplay/Makefile include/Makefile iecset/Makefile utils/Makefile \
          utils/alsa-utils.spec seq/Makefile seq/aconnect/Makefile \
          seq/aplaymidi/Makefile seq/aseqdump/Makefile seq/aseqnet/Makefile \
-         speaker-test/Makefile speaker-test/samples/Makefile \
+         seq/aseqsend/Makefile speaker-test/Makefile 
speaker-test/samples/Makefile \
          alsaloop/Makefile alsa-info/Makefile \
          axfer/Makefile axfer/test/Makefile \
          nhlt/Makefile)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/alsa-utils-1.2.11/include/version.h new/alsa-utils-1.2.12/include/version.h
--- old/alsa-utils-1.2.11/include/version.h     2024-01-29 14:06:33.000000000 
+0100
+++ new/alsa-utils-1.2.12/include/version.h     2024-06-10 11:22:33.000000000 
+0200
@@ -4,9 +4,9 @@
 
 #define SND_UTIL_MAJOR         1
 #define SND_UTIL_MINOR         2
-#define SND_UTIL_SUBMINOR      11
+#define SND_UTIL_SUBMINOR      12
 #define SND_UTIL_VERSION               ((SND_UTIL_MAJOR<<16)|\
                                 (SND_UTIL_MINOR<<8)|\
                                  SND_UTIL_SUBMINOR)
-#define SND_UTIL_VERSION_STR   "1.2.11"
+#define SND_UTIL_VERSION_STR   "1.2.12"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/alsa-utils-1.2.11/po/de.po new/alsa-utils-1.2.12/po/de.po
--- old/alsa-utils-1.2.11/po/de.po      2024-01-29 14:06:43.000000000 +0100
+++ new/alsa-utils-1.2.12/po/de.po      2024-06-10 11:22:39.000000000 +0200
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: alsa-utils 1.0.23\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-01-29 13:06+0000\n"
+"POT-Creation-Date: 2024-06-10 09:22+0000\n"
 "PO-Revision-Date: 2010-11-09 21:12+0100\n"
 "Last-Translator: Clemens Ladisch <[email protected]>\n"
 "Language-Team: German\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/alsa-utils-1.2.11/po/eu.po new/alsa-utils-1.2.12/po/eu.po
--- old/alsa-utils-1.2.11/po/eu.po      2024-01-29 14:06:44.000000000 +0100
+++ new/alsa-utils-1.2.12/po/eu.po      2024-06-10 11:22:39.000000000 +0200
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: alsa-utils 1.0.23\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-01-29 13:06+0000\n"
+"POT-Creation-Date: 2024-06-10 09:22+0000\n"
 "PO-Revision-Date: 2020-07-26 12:01+0200\n"
 "Last-Translator: Porrumentzio <[email protected]>\n"
 "Language-Team: Librezale <[email protected]>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/alsa-utils-1.2.11/po/fr.po new/alsa-utils-1.2.12/po/fr.po
--- old/alsa-utils-1.2.11/po/fr.po      2024-01-29 14:06:44.000000000 +0100
+++ new/alsa-utils-1.2.12/po/fr.po      2024-06-10 11:22:39.000000000 +0200
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: alsa-utils 1.0.23\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-01-29 13:06+0000\n"
+"POT-Creation-Date: 2024-06-10 09:22+0000\n"
 "PO-Revision-Date: 2020-07-08 16:05+0100\n"
 "Last-Translator: Olivier Humbert <[email protected]>\n"
 "Language-Team: French <[email protected]>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/alsa-utils-1.2.11/po/ja.po new/alsa-utils-1.2.12/po/ja.po
--- old/alsa-utils-1.2.11/po/ja.po      2024-01-29 14:06:44.000000000 +0100
+++ new/alsa-utils-1.2.12/po/ja.po      2024-06-10 11:22:39.000000000 +0200
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: alsa-utils 1.0.9a\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-01-29 13:06+0000\n"
+"POT-Creation-Date: 2024-06-10 09:22+0000\n"
 "PO-Revision-Date: 2009-05-27 15:08+0200\n"
 "Last-Translator: Takashi Iwai <[email protected]>\n"
 "Language-Team: Japanese\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/alsa-utils-1.2.11/po/ka.po new/alsa-utils-1.2.12/po/ka.po
--- old/alsa-utils-1.2.11/po/ka.po      2024-01-29 14:06:44.000000000 +0100
+++ new/alsa-utils-1.2.12/po/ka.po      2024-06-10 11:22:39.000000000 +0200
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: alsa-utils 1.2.7\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-01-29 13:06+0000\n"
+"POT-Creation-Date: 2024-06-10 09:22+0000\n"
 "PO-Revision-Date: 2022-09-09 10:28+0200\n"
 "Last-Translator: Temuri Doghonadze <[email protected]>\n"
 "Language-Team: Georgian <(nothing)>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/alsa-utils-1.2.11/po/ko.po new/alsa-utils-1.2.12/po/ko.po
--- old/alsa-utils-1.2.11/po/ko.po      2024-01-29 14:06:44.000000000 +0100
+++ new/alsa-utils-1.2.12/po/ko.po      2024-06-10 11:22:39.000000000 +0200
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: alsa-utils 1.0.23\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-01-29 13:06+0000\n"
+"POT-Creation-Date: 2024-06-10 09:22+0000\n"
 "PO-Revision-Date: 2023-05-25 17:58+0900\n"
 "Last-Translator: Yi Yunseok <[email protected]>\n"
 "Language-Team: Librezale <[email protected]>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/alsa-utils-1.2.11/po/sk.po new/alsa-utils-1.2.12/po/sk.po
--- old/alsa-utils-1.2.11/po/sk.po      2024-01-29 14:06:44.000000000 +0100
+++ new/alsa-utils-1.2.12/po/sk.po      2024-06-10 11:22:39.000000000 +0200
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: alsa-utils 1.0.23\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-01-29 13:06+0000\n"
+"POT-Creation-Date: 2024-06-10 09:22+0000\n"
 "PO-Revision-Date: 2020-10-18 15:13+0200\n"
 "Last-Translator: Jose Riha <[email protected]>\n"
 "Language-Team: Slovak\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/alsa-utils-1.2.11/seq/Makefile.am new/alsa-utils-1.2.12/seq/Makefile.am
--- old/alsa-utils-1.2.11/seq/Makefile.am       2024-01-29 13:57:30.000000000 
+0100
+++ new/alsa-utils-1.2.12/seq/Makefile.am       2024-06-10 11:18:36.000000000 
+0200
@@ -1 +1 @@
-SUBDIRS=aconnect aplaymidi aseqdump aseqnet
+SUBDIRS=aconnect aplaymidi aseqdump aseqnet aseqsend
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/alsa-utils-1.2.11/seq/aseqdump/aseqdump.c 
new/alsa-utils-1.2.12/seq/aseqdump/aseqdump.c
--- old/alsa-utils-1.2.11/seq/aseqdump/aseqdump.c       2024-01-29 
13:57:30.000000000 +0100
+++ new/alsa-utils-1.2.12/seq/aseqdump/aseqdump.c       2024-06-10 
11:18:36.000000000 +0200
@@ -595,6 +595,79 @@
        printf("\n");
 }
 
+static void dump_ump_utility_event(const unsigned int *ump)
+{
+       unsigned char status = snd_ump_msg_status(ump);
+       unsigned int val = *ump & 0xfffff;
+
+       printf("          ");
+       switch (status) {
+       case SND_UMP_UTILITY_MSG_STATUS_NOOP:
+               printf("Noop\n");
+               break;
+       case SND_UMP_UTILITY_MSG_STATUS_JR_CLOCK:
+               printf("JR Clock               value %d\n", val);
+               break;
+       case SND_UMP_UTILITY_MSG_STATUS_JR_TSTAMP:
+               printf("JR Timestamp           value %d\n", val);
+               break;
+       case SND_UMP_UTILITY_MSG_STATUS_DCTPQ:
+               printf("DCTPQ                  value %d\n", val);
+               break;
+       case SND_UMP_UTILITY_MSG_STATUS_DC:
+               printf("DC Ticks               value %d\n", val);
+               break;
+       default:
+               printf("UMP Utility event: status = %d, 0x%08x\n",
+                      status, *ump);
+               break;
+       }
+}
+
+static void dump_ump_system_event(const unsigned int *ump)
+{
+       const snd_ump_msg_system_t *m = (const snd_ump_msg_system_t *)ump;
+
+       printf("Group %2d, ", group_number(m->group));
+       switch (m->status) {
+       case SND_UMP_MSG_MIDI_TIME_CODE:
+               printf("MIDI Time Code         value %d\n", m->parm1);
+               break;
+       case SND_UMP_MSG_SONG_POSITION:
+               printf("Song position pointer  value %d\n",
+                      ((unsigned int)m->parm2 << 7) | m->parm1);
+               break;
+       case SND_UMP_MSG_SONG_SELECT:
+               printf("Song select            value %d\n", m->parm1);
+               break;
+       case SND_UMP_MSG_TUNE_REQUEST:
+               printf("Tune request\n");
+               break;
+       case SND_UMP_MSG_TIMING_CLOCK:
+               printf("Timing clock\n");
+               break;
+       case SND_UMP_MSG_START:
+               printf("Start\n");
+               break;
+       case SND_UMP_MSG_CONTINUE:
+               printf("Continue\n");
+               break;
+       case SND_UMP_MSG_STOP:
+               printf("Stop\n");
+               break;
+       case SND_UMP_MSG_ACTIVE_SENSING:
+               printf("Active sensing\n");
+               break;
+       case SND_UMP_MSG_RESET:
+               printf("Reset\n");
+               break;
+       default:
+               printf("UMP System event: status = %d, 0x%08x\n",
+                      m->status, *ump);
+               break;
+       }
+}
+
 static void dump_ump_event(const snd_seq_ump_event_t *ev)
 {
        if (!snd_seq_ev_is_ump(ev)) {
@@ -605,6 +678,12 @@
        printf("%3d:%-3d ", ev->source.client, ev->source.port);
 
        switch (snd_ump_msg_type(ev->ump)) {
+       case SND_UMP_MSG_TYPE_UTILITY:
+               dump_ump_utility_event(ev->ump);
+               break;
+       case SND_UMP_MSG_TYPE_SYSTEM:
+               dump_ump_system_event(ev->ump);
+               break;
        case SND_UMP_MSG_TYPE_MIDI1_CHANNEL_VOICE:
                dump_ump_midi1_event(ev->ump);
                break;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/alsa-utils-1.2.11/seq/aseqsend/Makefile.am 
new/alsa-utils-1.2.12/seq/aseqsend/Makefile.am
--- old/alsa-utils-1.2.11/seq/aseqsend/Makefile.am      1970-01-01 
01:00:00.000000000 +0100
+++ new/alsa-utils-1.2.12/seq/aseqsend/Makefile.am      2024-06-10 
11:18:36.000000000 +0200
@@ -0,0 +1,5 @@
+AM_CPPFLAGS = -I$(top_srcdir)/include
+EXTRA_DIST = aseqsend.1
+
+bin_PROGRAMS = aseqsend
+man_MANS = aseqsend.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/alsa-utils-1.2.11/seq/aseqsend/aseqsend.1 
new/alsa-utils-1.2.12/seq/aseqsend/aseqsend.1
--- old/alsa-utils-1.2.11/seq/aseqsend/aseqsend.1       1970-01-01 
01:00:00.000000000 +0100
+++ new/alsa-utils-1.2.12/seq/aseqsend/aseqsend.1       2024-06-10 
11:18:36.000000000 +0200
@@ -0,0 +1,59 @@
+.TH ASEQSEND 1 "11 Mar 2024"
+
+.SH NAME
+.B aseqsend
+\- send arbitrary messages to selected ALSA MIDI seqencer port
+
+.SH SYNOPSIS
+aseqsend \-p client:port -s file-name|"hex encoded byte-string"
+
+.SH DESCRIPTION
+.B aseqsend
+is a command-line utility which allows one to send SysEx (system exclusive) 
data to ALSA MIDI seqencer port.
+It can also send any other MIDI commands.
+Messages to be send can be given in the last argument as hex encoded byte 
string or can be read from raw binary file.
+When sending several SysEx messages at once there is a delay of 1ms after each 
message as deafult and can be set to different value with option \-i.
+
+.SH OPTIONS
+
+.TP
+\-h
+Prints a list of options.
+
+.TP
+\-V
+Prints the current version.
+
+.TP
+\-l
+Prints a list of possible output ports.
+
+.TP
+\-v
+Prints number of bytes actually sent
+
+.TP
+\-p
+Target port by number or name
+
+.TP
+\-s
+Send raw binary data from given file name
+
+.TP
+\-i
+Interval between SysEx messages in miliseconds
+
+
+A client can be specified by its number, its name, or a prefix of its
+name.  A port is specified by its number; for port 0 of a client, the
+":0" part of the port specification can be omitted.
+
+.SH EXAMPLES
+
+aseqsend -p 128:0 "F0 41 10 00 00 64 12 18 00 21 06 59 41 59 4E F7"
+
+aseqsend -p 128:0 -s I7BulkDump.syx
+
+.SH AUTHOR
+Miroslav Kovac <[email protected]>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/alsa-utils-1.2.11/seq/aseqsend/aseqsend.c 
new/alsa-utils-1.2.12/seq/aseqsend/aseqsend.c
--- old/alsa-utils-1.2.11/seq/aseqsend/aseqsend.c       1970-01-01 
01:00:00.000000000 +0100
+++ new/alsa-utils-1.2.12/seq/aseqsend/aseqsend.c       2024-06-10 
11:18:36.000000000 +0200
@@ -0,0 +1,478 @@
+/*
+ *  aseqsend.c - send arbitrary MIDI messages to selected ALSA MIDI seqencer 
port
+ *
+ *  Copyright (c) 2005 Clemens Ladisch <[email protected]>
+ *  Copyright (c) 2024 Miroslav Kovac <[email protected]>
+ *
+ *
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 
 USA
+ */
+
+#define _GNU_SOURCE
+#include "aconfig.h"
+#include "version.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <ctype.h>
+#include <getopt.h>
+#include <errno.h>
+#include <signal.h>
+#include <unistd.h>
+#include <alsa/asoundlib.h>
+
+typedef unsigned char mbyte_t;
+
+static snd_seq_t *seq;
+static char *port_name = NULL;
+static char *send_file_name = NULL;
+static char *send_hex;
+static mbyte_t *send_data;
+static snd_seq_addr_t addr;
+static int send_data_length;
+
+static void error(const char *format, ...)
+{
+       va_list ap;
+
+       va_start(ap, format);
+       vfprintf(stderr, format, ap);
+       va_end(ap);
+       putc('\n', stderr);
+}
+
+/* prints an error message to stderr, and dies */
+static void fatal(const char *msg, ...)
+{
+       va_list ap;
+
+       va_start(ap, msg);
+       vfprintf(stderr, msg, ap);
+       va_end(ap);
+       fputc('\n', stderr);
+       exit(EXIT_FAILURE);
+}
+
+static void usage(void)
+{
+       printf(
+               "\nUsage: aseqsend -p target-port -s file-name|\"hex encoded 
bytes\"\n\n"
+               "         -h  this help\n"
+               "         -V  print current version\n"
+               "         -v  verbose\n"
+               "         -l  list all sequencer ports\n"
+               "         -p  target port by number or name\n"
+               "         -s  send binary data from given file name\n"
+               "         -i  interval between SysEx messages in 
miliseconds\n\n");
+}
+
+static void version(void)
+{
+       puts("aseqsend version " SND_UTIL_VERSION_STR);
+}
+
+static void *my_malloc(size_t size)
+{
+       void *p = malloc(size);
+       if (!p) {
+               fatal("out of memory");
+               exit(EXIT_FAILURE);
+       }
+       return p;
+}
+
+static int hex_value(char c)
+{
+       if ('0' <= c && c <= '9')
+               return c - '0';
+       if ('A' <= c && c <= 'F')
+               return c - 'A' + 10;
+       if ('a' <= c && c <= 'f')
+               return c - 'a' + 10;
+       error("invalid character %c", c);
+       return -1;
+}
+
+static void parse_data(void)
+{
+       const char *p;
+       int i, value;
+
+       send_data = my_malloc(strlen(send_hex));
+       i = 0;
+       value = -1; /* value is >= 0 when the first hex digit of a byte has 
been read */
+       for (p = send_hex; *p; ++p) {
+               int digit;
+               if (isspace((unsigned char)*p)) {
+                       if (value >= 0) {
+                               send_data[i++] = value;
+                               value = -1;
+                       }
+                       continue;
+               }
+               digit = hex_value(*p);
+               if (digit < 0) {
+                       exit(EXIT_FAILURE);
+               }
+               if (value < 0) {
+                       value = digit;
+               } else {
+                       send_data[i++] = (value << 4) | digit;
+                       value = -1;
+               }
+       }
+       if (value >= 0)
+               send_data[i++] = value;
+       send_data_length = i;
+}
+
+static void add_send_hex_data(const char *str)
+{
+       int length;
+       char *s;
+
+       length = (send_hex ? strlen(send_hex) + 1 : 0) + strlen(str) + 1;
+       s = my_malloc(length);
+       if (send_hex) {
+               strcpy(s, send_hex);
+               strcat(s, " ");
+       } else {
+               s[0] = '\0';
+       }
+       strcat(s, str);
+       free(send_hex);
+       send_hex = s;
+}
+
+static void load_file(void)
+{
+       int fd;
+       off_t length;
+
+       fd = open(send_file_name, O_RDONLY);
+       if (fd == -1) {
+               error("cannot open %s - %s", send_file_name, strerror(errno));
+               return;
+       }
+       length = lseek(fd, 0, SEEK_END);
+       if (length == (off_t)-1) {
+               error("cannot determine length of %s: %s", send_file_name, 
strerror(errno));
+               goto _error;
+       }
+       send_data = my_malloc(length);
+       lseek(fd, 0, SEEK_SET);
+       if (read(fd, send_data, length) != length) {
+               error("cannot read from %s: %s", send_file_name, 
strerror(errno));
+               goto _error;
+       }
+       if (length >= 4 && !memcmp(send_data, "MThd", 4)) {
+               error("%s is a Standard MIDI File; use aplaymidi to send it", 
send_file_name);
+               goto _error;
+       }
+       send_data_length = length;
+       goto _exit;
+_error:
+       free(send_data);
+       send_data = NULL;
+_exit:
+       close(fd);
+}
+
+/* error handling for ALSA functions */
+static void check_snd(const char *operation, int err)
+{
+       if (err < 0)
+               fatal("Cannot %s - %s", operation, snd_strerror(err));
+}
+
+static void init_seq(void)
+{
+       int err;
+
+       /* open sequencer */
+       err = snd_seq_open(&seq, "default", SND_SEQ_OPEN_OUTPUT, 0);
+       check_snd("open sequencer", err);
+
+       /* set our client's name */
+       err = snd_seq_set_client_name(seq, "aseqsend");
+       check_snd("set client name", err);
+}
+
+static void create_port(void)
+{
+       int err;
+
+       err = snd_seq_create_simple_port(seq, "aseqsend",
+                                       SND_SEQ_PORT_CAP_READ,
+                                       SND_SEQ_PORT_TYPE_MIDI_GENERIC |
+                                       SND_SEQ_PORT_TYPE_APPLICATION);
+       check_snd("create port", err);
+}
+
+
+static void list_ports(void)
+{
+       snd_seq_client_info_t *cinfo;
+       snd_seq_port_info_t *pinfo;
+
+       snd_seq_client_info_alloca(&cinfo);
+       snd_seq_port_info_alloca(&pinfo);
+
+       puts(" Port    Client name                      Port name");
+
+       snd_seq_client_info_set_client(cinfo, -1);
+       while (snd_seq_query_next_client(seq, cinfo) >= 0) {
+               int client = snd_seq_client_info_get_client(cinfo);
+
+               snd_seq_port_info_set_client(pinfo, client);
+               snd_seq_port_info_set_port(pinfo, -1);
+               while (snd_seq_query_next_port(seq, pinfo) >= 0) {
+
+                       if ((snd_seq_port_info_get_capability(pinfo)
+                            & SND_SEQ_PORT_CAP_WRITE)
+                           != SND_SEQ_PORT_CAP_WRITE)
+                               continue;
+                       printf("%3d:%-3d  %-32.32s %s\n",
+                              snd_seq_port_info_get_client(pinfo),
+                              snd_seq_port_info_get_port(pinfo),
+                              snd_seq_client_info_get_name(cinfo),
+                              snd_seq_port_info_get_name(pinfo));
+               }
+       }
+}
+
+void send_midi_msg(snd_seq_event_type_t type, mbyte_t *data, int len)
+{
+               snd_seq_event_t ev;
+
+               snd_seq_ev_clear(&ev);
+               snd_seq_ev_set_source(&ev, 0);
+               snd_seq_ev_set_dest(&ev,addr.client,addr.port);
+               snd_seq_ev_set_direct(&ev);
+
+               if (type == SND_SEQ_EVENT_SYSEX) {
+
+                       snd_seq_ev_set_sysex(&ev,len,data);
+
+               } else {
+
+                       mbyte_t ch = data[0] & 0xF;
+
+                       switch (type) {
+                               case SND_SEQ_EVENT_NOTEON:
+                                       
snd_seq_ev_set_noteon(&ev,ch,data[1],data[2]);
+                                       break;
+                               case SND_SEQ_EVENT_NOTEOFF:
+                                       
snd_seq_ev_set_noteoff(&ev,ch,data[1],data[2]);
+                                       break;
+                               case SND_SEQ_EVENT_KEYPRESS:
+                                       
snd_seq_ev_set_keypress(&ev,ch,data[1],data[2]);
+                                       break;
+                               case SND_SEQ_EVENT_CONTROLLER:
+                                       
snd_seq_ev_set_controller(&ev,ch,data[1],data[2]);
+                                       break;
+                               case SND_SEQ_EVENT_PITCHBEND:
+                                       
snd_seq_ev_set_pitchbend(&ev,ch,(data[1]<<7|data[2])-8192);
+                                       break;
+                               case SND_SEQ_EVENT_PGMCHANGE:
+                                       
snd_seq_ev_set_pgmchange(&ev,ch,data[1]);
+                                       break;
+                               case SND_SEQ_EVENT_CHANPRESS:
+                                       
snd_seq_ev_set_chanpress(&ev,ch,data[1]);
+                                       break;
+                               default:
+                                       ev.type = SND_SEQ_EVENT_NONE;
+                       }
+               }
+
+               snd_seq_event_output(seq, &ev);
+               snd_seq_drain_output(seq);
+
+}
+
+static int msg_byte_in_range(mbyte_t *data, mbyte_t len)
+{
+       for (int i=0;i<len;i++) {
+               if (data[i] > 0x7F) {
+                       error("msg byte value out of range 0-127");
+                       return 0;
+               }
+       }
+       return 1;
+}
+
+
+int main(int argc, char *argv[])
+{
+       char c = 0;
+       char do_send_file = 0;
+       char do_port_list = 0;
+       char verbose = 0;
+       int sysex_interval = 1000; //us
+
+       while ((c = getopt(argc, argv, "hi:Vvlp:s:")) != -1) {
+               switch (c) {
+               case 'h':
+                       usage();
+                       return 0;
+               case 'V':
+                       version();
+                       return 0;
+               case 'v':
+                       verbose = 1;
+                       break;
+               case 'l':
+                       do_port_list = 1;
+                       break;
+               case 'p':
+                       port_name = optarg;
+                       break;
+               case 's':
+                       send_file_name = optarg;
+                       do_send_file = 1;
+                       break;
+               case 'i':
+                       sysex_interval = atoi(optarg) * 1000; //ms--->us
+                       break;
+               default:
+                       error("Try 'aseqsend -h' for more information.");
+                       exit(EXIT_FAILURE);
+               }
+       }
+
+       if (argc < 2) {
+               usage();
+               exit(EXIT_FAILURE);
+       }
+
+       if (do_port_list){
+               init_seq();
+               list_ports();
+               exit(EXIT_SUCCESS);
+       }
+
+       if (port_name == NULL)
+               fatal("Output port must be specified!");
+
+       if (do_send_file) {
+               load_file();
+       } else {
+               /* no file specified ---> send hex bytes from cmd arguments*/
+               /* data for send can be specified as multiple arguments */
+               for (; argv[optind]; ++optind) {
+                       add_send_hex_data(argv[optind]);
+               }
+               if (send_hex) parse_data();
+       }
+
+       if (send_data) {
+
+               init_seq();
+               create_port();
+
+               if (snd_seq_parse_address(seq,&addr,port_name) == 0) {
+
+                       int sent_data_c = 0;//counter of actually sent bytes
+
+                       int k = 0;
+
+                       while (k < send_data_length) {
+
+                               if (send_data[k] == 0xF0) {
+
+                                       int c1 = k;
+                                       while (c1 < send_data_length)
+                                       {
+                                               if (send_data[c1] == 0xF7) 
break;
+                                               c1++;
+                                       }
+
+                                       if (c1 == send_data_length)
+                                               fatal("SysEx is missing 
terminating byte (0xF7)");
+
+                                       int sl = c1-k+1;
+                                       sent_data_c += sl;
+
+                                       send_midi_msg(SND_SEQ_EVENT_SYSEX, 
send_data+k,sl);
+
+                                       usleep(sysex_interval);
+
+                                       k = c1+1;
+
+                               } else {
+
+                                       mbyte_t tp = send_data[k] >> 4;
+
+                                       if (tp == 0x8) {
+                                               if (msg_byte_in_range(send_data 
+ k + 1, 2)) {
+                                                       
send_midi_msg(SND_SEQ_EVENT_NOTEOFF, send_data+k,3);
+                                                       sent_data_c += 3;
+                                               }
+                                               k = k+3;
+                                       } else if (tp == 0x9) {
+                                               if (msg_byte_in_range(send_data 
+ k + 1, 2)) {
+                                                       
send_midi_msg(SND_SEQ_EVENT_NOTEON, send_data+k,3);
+                                                       sent_data_c += 3;
+                                               }
+                                               k = k+3;
+                                       } else if (tp == 0xA) {
+                                               if (msg_byte_in_range(send_data 
+ k + 1, 2)) {
+                                                       
send_midi_msg(SND_SEQ_EVENT_KEYPRESS, send_data+k,3);
+                                                       sent_data_c += 3;
+                                               }
+                                               k = k+3;
+                                       } else if (tp == 0xB) {
+                                               if (msg_byte_in_range(send_data 
+ k + 1, 2)) {
+                                                       
send_midi_msg(SND_SEQ_EVENT_CONTROLLER, send_data+k,3);
+                                                       sent_data_c += 3;
+                                               }
+                                               k = k+3;
+                                       } else if (tp == 0xC) {
+                                               if (msg_byte_in_range(send_data 
+ k + 1, 1)) {
+                                                       
send_midi_msg(SND_SEQ_EVENT_PGMCHANGE, send_data+k,2);
+                                                       sent_data_c += 2;
+                                               }
+                                               k = k+2;
+                                       } else if (tp == 0xD) {
+                                               if (msg_byte_in_range(send_data 
+ k + 1, 1)) {
+                                                       
send_midi_msg(SND_SEQ_EVENT_CHANPRESS, send_data+k,2);
+                                                       sent_data_c += 2;
+                                               }
+                                               k = k+2;
+                                       } else if (tp == 0xE) {
+                                               if (msg_byte_in_range(send_data 
+ k + 1, 2)) {
+                                                       
send_midi_msg(SND_SEQ_EVENT_PITCHBEND, send_data+k,3);
+                                                       sent_data_c += 3;
+                                               }
+                                               k = k+3;
+                                       } else k++;
+                               }
+                       }
+
+                       if (verbose)
+                               printf("Sent : %u bytes\n",sent_data_c);
+
+               } else {
+
+                       error("Unable to parse port name!");
+                       exit(EXIT_FAILURE);
+
+               }
+               snd_seq_close(seq);
+       }
+
+       exit(EXIT_SUCCESS);
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/alsa-utils-1.2.11/topology/nhlt/intel/dmic/dmic-process.c 
new/alsa-utils-1.2.12/topology/nhlt/intel/dmic/dmic-process.c
--- old/alsa-utils-1.2.11/topology/nhlt/intel/dmic/dmic-process.c       
2024-01-29 13:57:30.000000000 +0100
+++ new/alsa-utils-1.2.12/topology/nhlt/intel/dmic/dmic-process.c       
2024-06-10 11:18:36.000000000 +0200
@@ -159,28 +159,33 @@
        /* Check for sane pdm clock, min 100 kHz, max ioclk/2 */
        if (dmic->dmic_prm[di].pdmclk_max < DMIC_HW_PDM_CLK_MIN ||
            dmic->dmic_prm[di].pdmclk_max > dmic->dmic_prm[di].io_clk / 2) {
-               fprintf(stderr, "find_modes():  pdm clock max not in range\n");
+               fprintf(stderr, "%s: pdm clock max %d not in range\n", __func__,
+                       dmic->dmic_prm[di].pdmclk_max);
                return;
        }
        if (dmic->dmic_prm[di].pdmclk_min < DMIC_HW_PDM_CLK_MIN ||
            dmic->dmic_prm[di].pdmclk_min > dmic->dmic_prm[di].pdmclk_max) {
-               fprintf(stderr, "find_modes():  pdm clock min not in range\n");
+               fprintf(stderr, "%s: pdm clock min %d not in range\n", __func__,
+                       dmic->dmic_prm[di].pdmclk_min);
                return;
        }
 
        /* Check for sane duty cycle */
        if (dmic->dmic_prm[di].duty_min > dmic->dmic_prm[di].duty_max) {
-               fprintf(stderr, "find_modes(): duty cycle min > max\n");
+               fprintf(stderr, "%s: duty cycle min > max: %d > %d\n", __func__,
+                       dmic->dmic_prm[di].duty_min, 
dmic->dmic_prm[di].duty_max);
                return;
        }
        if (dmic->dmic_prm[di].duty_min < DMIC_HW_DUTY_MIN ||
            dmic->dmic_prm[di].duty_min > DMIC_HW_DUTY_MAX) {
-               fprintf(stderr, "find_modes():  pdm clock min not in range\n");
+               fprintf(stderr, "%s: pdm clock min %d not in range\n", __func__,
+                       dmic->dmic_prm[di].duty_min);
                return;
        }
        if (dmic->dmic_prm[di].duty_max < DMIC_HW_DUTY_MIN ||
            dmic->dmic_prm[di].duty_max > DMIC_HW_DUTY_MAX) {
-               fprintf(stderr, "find_modes(): pdm clock max not in range\n");
+               fprintf(stderr, "%s: pdm clock max %d not in range\n", __func__,
+                       dmic->dmic_prm[di].duty_max);
                return;
        }
 
@@ -428,7 +433,7 @@
         * candidates should be sufficient.
         */
        if (modes->num_of_modes == 0) {
-               fprintf(stderr, "select_mode(): no modes available\n");
+               fprintf(stderr, "%s: no modes available\n", __func__);
                return -EINVAL;
        }
 
@@ -451,7 +456,7 @@
        }
 
        if (!found) {
-               fprintf(stderr, "select_mode(): No filter for decimation 
found\n");
+               fprintf(stderr, "%s: No filter for decimation found\n", 
__func__);
                return -EINVAL;
        }
        n = idx[found - 1]; /* Option with highest clock divisor and lowest mic 
clock rate */
@@ -468,8 +473,8 @@
        if (cfg->mfir_a > 0) {
                cfg->fir_a = get_fir(dmic, cfg, cfg->mfir_a);
                if (!cfg->fir_a) {
-                       fprintf(stderr, "select_mode(): can't find FIR 
coefficients, mfir_a = %d\n",
-                               cfg->mfir_a);
+                       fprintf(stderr, "%s: can't find FIR coefficients, 
mfir_a = %d\n",
+                               __func__, cfg->mfir_a);
                        return -EINVAL;
                }
        }
@@ -477,8 +482,8 @@
        if (cfg->mfir_b > 0) {
                cfg->fir_b = get_fir(dmic, cfg, cfg->mfir_b);
                if (!cfg->fir_b) {
-                       fprintf(stderr, "select_mode(): can't find FIR 
coefficients, mfir_b = %d\n",
-                               cfg->mfir_b);
+                       fprintf(stderr, "%s: can't find FIR coefficients, 
mfir_b = %d\n",
+                               __func__, cfg->mfir_b);
                        return -EINVAL;
                }
        }
@@ -490,7 +495,7 @@
        g_cic = mcic * mcic * mcic * mcic * mcic;
        if (g_cic < 0) {
                /* Erroneous decimation factor and CIC gain */
-               fprintf(stderr, "select_mode(): erroneous decimation factor and 
CIC gain\n");
+               fprintf(stderr, "%s: erroneous decimation factor and CIC 
gain\n");
                return -EINVAL;
        }
 
@@ -515,7 +520,7 @@
                                     cfg->fir_a->length, gain_to_fir);
                if (ret < 0) {
                        /* Invalid coefficient set found, should not happen. */
-                       fprintf(stderr, "select_mode(): invalid coefficient set 
found\n");
+                       fprintf(stderr, "%s: invalid coefficient set found\n");
                        return -EINVAL;
                }
        } else {
@@ -531,7 +536,7 @@
                                     cfg->fir_b->length, gain_to_fir);
                if (ret < 0) {
                        /* Invalid coefficient set found, should not happen. */
-                       fprintf(stderr, "select_mode(): invalid coefficient set 
found\n");
+                       fprintf(stderr, "%s: invalid coefficient set found\n", 
__func__);
                        return -EINVAL;
                }
        } else {
@@ -781,7 +786,10 @@
                }
        }
 
-       if (dmic->dmic_prm[di].driver_version == 2 || 
dmic->dmic_prm[di].driver_version == 3) {
+       if (dmic->dmic_prm[di].driver_version >= 2) {
+               if (dmic->dmic_prm[di].driver_version >= 4)
+                       bfth = 0;
+
                if (di == 0) {
                        ipm_helper2(dmic, source, &ipm);
                        val = OUTCONTROL0_TIE(0) |
@@ -819,7 +827,7 @@
 
        ret = stereo_helper(dmic, stereo, swap);
        if (ret < 0) {
-               fprintf(stderr, "configure_registers(): enable conflict\n");
+               fprintf(stderr, "%s: enable conflict\n", __func__);
                return ret;
        }
 
@@ -975,13 +983,14 @@
        di = dmic->dmic_dai_index;
 
        if (di >= DMIC_HW_FIFOS) {
-               fprintf(stderr, "dmic_set_config(): dai->index exceeds number 
of FIFOs\n");
+               fprintf(stderr, "%s: dai->index %d exceeds number of FIFOs\n", 
__func__, di);
                ret = -EINVAL;
                goto out;
        }
 
        if (dmic->dmic_prm[di].num_pdm_active > DMIC_HW_CONTROLLERS) {
-               fprintf(stderr, "dmic_set_config():controller count exceeds 
platform capability\n");
+               fprintf(stderr, "%s: controller count %d exceeds platform 
capability\n",
+                       __func__, dmic->dmic_prm[di].num_pdm_active);
                ret = -EINVAL;
                goto out;
        }
@@ -993,7 +1002,8 @@
        case 32:
                break;
        default:
-               fprintf(stderr, "dmic_set_config(): fifo_bits EINVAL\n");
+               fprintf(stderr, "%s: Bad fifo_bits %d\n", __func__,
+                       dmic->dmic_prm[di].fifo_bits);
                ret = -EINVAL;
                goto out;
        }
@@ -1005,14 +1015,14 @@
         */
        find_modes(dmic, &modes_a, dmic->dmic_prm[0].fifo_fs);
        if (modes_a.num_of_modes == 0 && dmic->dmic_prm[0].fifo_fs > 0) {
-               fprintf(stderr, "dmic_set_config(): No modes found for FIFO 
A\n");
+               fprintf(stderr, "%s: No modes found for FIFO A\n", __func__);
                ret = -EINVAL;
                goto out;
        }
 
        find_modes(dmic, &modes_b, dmic->dmic_prm[1].fifo_fs);
        if (modes_b.num_of_modes == 0 && dmic->dmic_prm[1].fifo_fs > 0) {
-               fprintf(stderr, "dmic_set_config(): No modes found for FIFO 
B\n");
+               fprintf(stderr, "%s: No modes found for FIFO B\n", __func__);
                ret = -EINVAL;
                goto out;
        }
@@ -1020,7 +1030,7 @@
        match_modes(&modes_ab, &modes_a, &modes_b);
        ret = select_mode(dmic, &cfg, &modes_ab);
        if (ret < 0) {
-               fprintf(stderr, "dmic_set_config(): select_mode() failed\n");
+               fprintf(stderr, "%s: select_mode() failed %d\n", __func__, ret);
                ret = -EINVAL;
                goto out;
        }
@@ -1030,7 +1040,7 @@
         */
        ret = configure_registers(dmic, &cfg);
        if (ret < 0) {
-               fprintf(stderr, "dmic_set_config(): cannot configure 
registers\n");
+               fprintf(stderr, "%s: cannot configure registers %d\n", 
__func__, ret);
                ret = -EINVAL;
                goto out;
        }
@@ -1232,7 +1242,12 @@
                return -EINVAL;
 
        if (dai_index >= DMIC_HW_FIFOS) {
-               fprintf(stderr, "set_dmic_data illegal dai index\n");
+               fprintf(stderr, "%s: illegal dai index %d \n", __func__, 
dai_index);
+               return -EINVAL;
+       }
+
+       if (driver_version < 1 || driver_version > 5) {
+               fprintf(stderr, "%s: illegal driver version %d\n", __func__, 
driver_version);
                return -EINVAL;
        }
 
@@ -1261,7 +1276,7 @@
                return -EINVAL;
 
        if (pdm_index >= DMIC_HW_CONTROLLERS) {
-               fprintf(stderr, "set_pdm_data illegal pdm_index\n");
+               fprintf(stderr, "%s: illegal pdm_index %d\n", __func__, 
pdm_index);
                return -EINVAL;
        }
 

Reply via email to