Jaska Uimonen [Tue, 30 May 2023 14:09:13 +0000 (17:09 +0300)]
topology: plugins: nhlt: remove dmic error print
Remove "fs not set" print from dmic processing. The message is printed out
when pdm is enabled but not configured. Many sof topologies enable all
pdms even if not used as it is a requirement for some Intel firmware
versions to work correctly.
Fixes: https://github.com/alsa-project/alsa-utils/pull/218 Signed-off-by: Jaska Uimonen <jaska.uimonen@intel.com> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Seppo Ingalsuo [Fri, 21 Apr 2023 11:07:33 +0000 (14:07 +0300)]
Topology: NHLT: Intel: Update DMIC FIR coefficients
The previous version contained some hand edit mistakes those
impacted the filter frequency response. The used generator script
is found from directory:
Brent Lu [Tue, 25 Jul 2023 14:58:17 +0000 (22:58 +0800)]
topology: nhlt: intel: support more device types and directions
In current NHLT table the device type of all SSP endpoints are set to
BT Sideband(0) instead of SSP Analog Codec(4) and the direction only
supports Render(0) and Capture(1).
Here we introduce two new quirks from topology to set the device type
correctly and support two more directions: Render with loopback(2)
and Feedback for render(3) for speakers with echo reference or IV
sense feedback.
Fixes: https://github.com/alsa-project/alsa-utils/pull/226 Signed-off-by: Brent Lu <brent.lu@intel.com> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
The CombineArrays definition is an array so that multiple combinations can
be specified in order to deal with only valid combinations. For example,
16-bit bit_depth is only valid with 16-bit valid_bit_depth. So if we
also want to add those combinations with the multiple rates, the
definition would look like:
Takashi Iwai [Wed, 22 Mar 2023 07:55:10 +0000 (08:55 +0100)]
aplaymidi: Add UMP support
By switching via the new option -u, aplaymidi can behave as a UMP
client and output UMP packets instead of legacy sequencer events.
As of now, the only supported version is 1.
Takashi Iwai [Wed, 22 Mar 2023 07:45:54 +0000 (08:45 +0100)]
aconnect: Add UMP support
This patch extends the aconnect program for supporting UMP.
Now the verbose output can show the UMP client version.
Also, a new option -a is added to control the behavior whether to show
the all ports including the inactive ports or not. As default, only
the active ports are shown, but UMP clients allow to hide some ports
as inactive.
Takashi Iwai [Thu, 17 Nov 2022 16:48:23 +0000 (17:48 +0100)]
aseqdump: Add UMP support
Add the support for showing the UMP events to aseqdump.
With the new option -u, the program can start as a UMP sequencer
client and receive UMP events instead of the legacy MIDI events.
Also, the automatic event conversion among legacy and UMP clients can
be suppressed by the new -r option, too.
Jaroslav Kysela [Tue, 16 May 2023 13:38:24 +0000 (15:38 +0200)]
nhlt: add nhlt-dmic-info utility
The microphone arrays for Intel platforms are described in the
ACPI NHLT table. This table is available in sysfs. Parse this
information and use a more common format (json) for output. This
information is usable for the further DSP processing.
alsa-info.sh: uname - reduce execs by four, and eliminate a logic bug
Per `info uname`, `uname` always prints its data in the same order.
Also, "note that A && B || C is not if-then-else. C may run when A is true."
https://www.shellcheck.net/wiki/SC2015
alsa-info.sh: Update `test` '-a' and '-o' to '&&' and '||'
lines 50, 103: in two compound ['s, replace '-a' with '] && ['
SC2166 – Prefer `[ p ] && [ q ]` as `[ p -a q ]` is not well defined.
SC2107 – Instead of `[ a && b ]`, use `[ a ] && [ b ]`.
line 45: in a compound test command, change '-o' to '|| test'
SC1139 – Use `||` instead of `-o` between test commands.
SC2109 – Instead of `[ a || b ]`, use `[ a ] || [ b ]`.
... https://github.com/koalaman/shellcheck
Fixes: https://github.com/alsa-project/alsa-utils/pull/206
From: wileyhy @ github Signed-off-by: Jaroslav Kysela <perex@perex.cz>
When a duration is specified but the the capture device cannot use the
requested sample rate and an alternative rate is used the duration
sample count must be (re)calculated.
Fixes: https://github.com/alsa-project/alsa-utils/pull/200 Signed-off-by: Tj <hacker@iam.tj> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
The REG_ICASE flag is a compile-time flag (cflags), it
should be used with regcomp() instead of regexec(). Also
add the REG_EXTENDED flag in this patch to make patterns
like 'tgl|adl' work.
Fixes: https://github.com/alsa-project/alsa-utils/pull/195 Signed-off-by: Chao Song <chao.song@linux.intel.com> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
In the example the $[$PCM_NUMBER - 1] would be replaced with the
result of arithmetic expression '1 - 1' in other words '0' , and
$index in all occurrences with index attribute found from pipeline
object. Any non alpha numeric or '_' character are treated as
delimiters for variable names if $[]-notation is not used.
Fixes: https://github.com/alsa-project/alsa-utils/pull/189 Signed-off-by: Jyri Sarha <jyri.sarha@intel.com> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
SASANO Takayoshi [Sat, 31 Dec 2022 07:03:34 +0000 (16:03 +0900)]
Add OpenBSD support
- ERESTART not supported platform: use EINTR instead
- add include/os_compat.h, well-used OS specific definition
- copied include/bswap.h from alsa-lib
- EPIPE and ESTRPIPE are different usage, but currently
EPIPE is used when ESTRPIPE is not defined.
To fix this problem, assign ESPIPE instead.
Fixes: https://github.com/alsa-project/alsa-utils/pull/186 Signed-off-by: SASANO Takayoshi <uaa@uaa.org.uk> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Chao Song [Tue, 17 Jan 2023 12:52:18 +0000 (20:52 +0800)]
topology: pre-processor: support to include conf block with IncludeByKey
Currently, The IncludeByKey mechanism only supports conditionally
including a topology conf file. Even if we only
want to conditionally include a small conf block, we have
to use a conf file and in the end we will have a lot of
trivial conf files that only contain a single conf blocks.
This patch extends the use of IncludeByKey ito support including conf
blocks conditionally. For example, the block below will include the route
conditionally based on the variable definition COPIER_ROUTE.
Jaska Uimonen [Fri, 16 Dec 2022 16:25:35 +0000 (18:25 +0200)]
topology: nhlt: intel: add support for ssp blob ver 1.5
Ssp plugin had already a definition for newer nhlt blob version 1.5.
Add support to generate that instead of legacy blob. Never blob can be
generated by adding "version" field in SSP dai topology2 definition and
setting it to lower 16 bits of SSP_BLOB_VER_1_5 (0xee000105) -> 0x105
i.e 8 bits for major and 8 bits for minor version.
SSP."0" {
id 0
dai_index 0
direction "duplex"
name NoCodec-0
version 0x105
}
Fixes: https://github.com/alsa-project/alsa-utils/pull/184 Signed-off-by: Jaska Uimonen <jaska.uimonen@linux.intel.com> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaska Uimonen [Wed, 12 Oct 2022 10:44:55 +0000 (13:44 +0300)]
topology: plugins: nhlt: add ssp aux controls
Intel ssp blob can have auxiliary controls catenated as tlv array at the
end of its "normal" data blob. These are needed in some platforms for
example to enable hardware clocks earlier than streaming starts.
In topology the auxiliary data classes are embedded into hw_config and
can be instantiated like:
Object.Base.hw_config."SSP0_0" {
id 0
mclk_freq 38400000
bclk_freq 256000
tdm_slot_width 16
format "DSP_A"
bclk "codec_provider"
fsync "codec_provider"
fsync_freq 16000
Khem Raj [Thu, 15 Dec 2022 22:04:10 +0000 (14:04 -0800)]
aplay,axfer: Replace off64_t with off_t
Also replace lseek64 with lseek.
_FILE_OFFSET_BITS=64 is passed to needed platforms since configure uses
AC_SYS_LARGEFILE macro. Therefore off_t is already 64-bit and lseek is
same as lseek64.
Additionally this fixes buils with latest musl where these lfs64
functions are moved out from _GNU_SOURCE and under _LARGEFILE64_SOURCE
macro alone. This makes the builds fail on 32-bit platforms even though
default off_t on musl is 64-bit always.
Chao Song [Thu, 8 Dec 2022 06:40:04 +0000 (14:40 +0800)]
topology: propagate nhlt plugin error to main program
Let's propagate nhlt plugin error to main program,
so that we don't generate a wrong nhlt blob silently.
Fixes: https://github.com/alsa-project/alsa-utils/pull/181 Signed-off-by: Chao Song <chao.song@linux.intel.com> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
aplay: Fix parsing of format with WAV_FMT_EXTENSIBLE header
WAV_FMT_EXTENSIBLE header contains valid bits per sample, which can be
different than bits per sample. Make sure it is taken into account when
parsing headers and choosing playback format.
Tim Bird [Tue, 17 May 2022 15:50:49 +0000 (09:50 -0600)]
bat: Add 'readcapture' option to support analyzing external audio
If audio data is captured on another device (ie we are NOT using
loopback mode), then allow alsabat to analyze that data, by passing
a filename reference on the command line.
Add the '--readcapture' option to the argument parser. When
this option is specified, avoid doing a local capture, and instead
just read the audio data from the indicated file, and analyze that.
Fixes: https://github.com/alsa-project/alsa-utils/pull/166 Signed-off-by: Tim Bird <tim.bird@sony.com> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Fabrice Fontaine [Sun, 14 Aug 2022 18:31:30 +0000 (20:31 +0200)]
configure.ac: fix build without dlfcn.h
Fix the following static build failure (i.e. without dlfcn.h) raised
since version 1.2.7 and
https://github.com/alsa-project/alsa-utils/commit/44d3e8aa44fc12f95bfeef0e3a1051e8f77047b5:
pre-processor.c:28:10: fatal error: dlfcn.h: No such file or directory
28 | #include <dlfcn.h>
| ^~~~~~~~~
John Keeping [Wed, 13 Jul 2022 15:04:09 +0000 (16:04 +0100)]
amidi: restore space between bytes
Commit 9a8fcec ("amidi: add timestamp option for dump") removed the
space between bytes when dumping MIDI, changing the output from:
90 45 40
80 45 00
to:
904540
804500
It seems that this was an unintentional side effect of refactoring the
code to add the new timestamp output but the result is less readable
than it was before.
Restore the space between bytes in the same message.
Fixes: 9a8fcec ("amidi: add timestamp option for dump") Fixes: https://github.com/alsa-project/alsa-utils/pull/158/ Signed-off-by: John Keeping <john@metanate.com> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Wed, 3 Aug 2022 20:09:45 +0000 (22:09 +0200)]
aplay: fix the capture file length regression
The commit 4b959a4 ("aplay: Fix for arecord recording ghost data")
intruduced a regression (file may contain more samples than
expected). Correct this.
Fixes: https://github.com/alsa-project/alsa-utils/issues/163 Fixes: 4b959a4 ("aplay: Fix for arecord recording ghost data") Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Dmic find_modes function was used with same sampling rate for both fifo
a and b parameter calculations. This bug was found in testing two
simultaneous dmic dais in topology. Fix this by introducing a sampling
rate argument for find_modes.
Fixes: https://github.com/alsa-project/alsa-utils/pull/148 Signed-off-by: Jaska Uimonen <jaska.uimonen@linux.intel.com> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
When recording we should only write the amount of data read to output
file instead of copying whole buffer. This fixes glitches appearing at
the end of recorded file, when stopping recording.
Fixes: https://github.com/alsa-project/alsa-utils/pull/150 Signed-off-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaska Uimonen [Tue, 14 Dec 2021 15:20:50 +0000 (17:20 +0200)]
topology: plugins - add Intel nhlt encoder plugin
Add Intel nhlt acpi table encoder plugin into topology2.0 processing.
Nhlt internal structure is defined in:
https://01.org/sites/default/files/595976_intel_sst_nhlt.pdf
Nhlt acpi table contain vendor specific binary data blobs that are used
in some Intel dsp platforms for configuring the dmic and ssp hardware.
The function of this code is mainly to generate the vendor specific
binary blobs, but as there is existing nhlt parser code and header in
kernel there's no point of re-inventing the container: just use the
existing nhlt acpi table format. Basically this code is creating similar
nhlt acpi table that you would get from: cat
/sys/firmware/acpi/tables/NHLT
This code will have implementation for dmic and ssp endpoints. Thus the
code will translate the topology dai tokens into vendor specific binary
blobs and pack them into nhlt acpi table. Ssp and dmic code is lifted
from Sound Open Firmware (sof) code base, thus it will have BSD-3
license.
This plugin can be enabled from command line with:
Jaska Uimonen [Tue, 14 Dec 2021 15:11:51 +0000 (17:11 +0200)]
topology: add simple topology plugin mechanism
Add a simple plugin interface for processing the topology tree. There
can be cases where parts of the topology need to be translated from the
original format into something else. For example one could calculate
some kind of filter coefficients from filter parameters or some other
binary interface parameters from plain text topology tokens.
Mechanism is similar as in alsa-plugins and in the plugin there should
be only 1 function exported of the form:
int _snd_topology_##pluginname##_process (snd_config_t *input, snd_config_t *output)
Input and output parameters are snd_config tree before and after topology2
pre-processing. So the plugin can modify both if needed. There are cases
where the plugin may need to get information from input tree, but make
modifications to the output.
The plugins to be used can be defined in command line with:
Jaroslav Kysela [Wed, 2 Feb 2022 14:31:33 +0000 (15:31 +0100)]
alsactl: add locking for per-card initialization
Introduce the -K,--lock-dir parameter to specify the locking
directory. If the locking is active, files card<NUM>.lock
are used to serialize the multiple initialization requests
(udev, service).
Allow the relative -O,--lock-file argument (it's default now).
Jaroslav Kysela [Fri, 28 Jan 2022 08:34:06 +0000 (09:34 +0100)]
topology: fix the define section merge from the included files
The bellow commit assumed that the merge of the included file
is to the main configuration tree, but it's for the subtree.
The Define compound from the included file must be handled
separately.
topology: pre-process-object: expand variables before validating attributes
With the introduction of variables in the topology files, validation of
attributes values must be done after they are expanded to their defined
values. Also, since valid values for attributes in the class definition
can also be variables, they need to be expanded as well. So, first expand
the attribute values and then check them against expanded valid values.
Fixes: https://github.com/alsa-project/alsa-utils/pull/138 Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Thu, 27 Jan 2022 12:15:46 +0000 (13:15 +0100)]
speaker-test: remove sample_map.csv
The CSV file is not used. The .wav file names are fixed
in the source code, but the directory may be specified
using --wavdir. Remove this file until there's a demand
for the more precise .wav file mapping.
Fixes: https://github.com/alsa-project/alsa-utils/issues/133 Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Takashi Iwai [Thu, 20 Jan 2022 07:49:17 +0000 (08:49 +0100)]
alsamixer: Fix regression in color setup
The recent change to add the background config broke the color setup
via the config file due. Fix the regression by restoring the
initialization order back again, and changing the logic for the
default background color to be re-initializing color pairs instead.
topology: pre-processor: Move the call to expand variables
Remove the call to snd_config_expand_custom() to expand the top-level
input config. And replace it with calls to snd_config_evaluate_string()
for each non-compound config while processing individual objects. This
will allow retreving variable definitions from object attribute values
and global definitions.
Add a new field "current_obj_cfg" to hold the current object config
being pre-processed.
This will facilitate adding simple math expressions for computing
attribute values for objects based on other attributes. For ex: we can
set the expression for buffer size as follows:
buffer_size "$[($in_channels * 48) * 4]"
The buffer_size attribute value will be computed with the attribute
value "in_channels" based on the expression above. So if $in_channels =
2, buffer_size will be evaluated to 384.
Additionally this change also permits computing attribute values based
on previously computed values. For example:
dma_buffer_size will be computed as 768. Note that the order of
definitions for buffer_size and dma_buffer_size matters because the
evaluation for dma_buffer_size depends on the evaluation of buffer_size.
In order to conform to this, the tplg_object_copy_and_add_param() is
modified to add attribute configs from class config to an object using
snd_config_before() instead of snd_config_add().
With this change, we no longer need to set the auto_attr_updater for
buffer type widget objects. So remove it.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com> Signed-off-by: Jaroslav Kysela <perex@perex.cz>