Commit graph

3505 commits

Author SHA1 Message Date
Jaroslav Kysela
66dfd40e8f ucm: add ValueGlobals section to the top configuration file
BootCardGroup and BootCardSyncTime variables should not be listed
by default in _identifiers. Handle them differently using
ValueGlobals section.

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2025-12-04 12:11:41 +01:00
Jaroslav Kysela
5ed27d8e89 ucm: fix the DefineRegex issue where multiple variables were set to empty string
It is not required to set variables in undefined groups to empty string.

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2025-12-04 12:11:41 +01:00
Jaroslav Kysela
ae921dc1c9 ucm: Include directive - add optional behaviour
It may be useful to skip the include when the file does not exist
(make it optional).

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2025-12-04 12:11:41 +01:00
Jaroslav Kysela
22f8716af9 ucm: complete dependency graphs for conflicting/supported device lists
Modify verb_dev_list_check() to ensure all devices in a conflicting or
supported group reference each other. Previously, the function only
ensured bidirectional relationships. Now it ensures all devices in
the same group have complete dependency lists.

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2025-12-04 12:11:41 +01:00
Jaroslav Kysela
3149ca0f1c ucm: implement DeviceVariant configuration extension
It may be useful for the channel count specification for example.

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2025-12-04 12:11:41 +01:00
Jaroslav Kysela
554efca497 ucm: implement ValueDefaults.BootCardGroup and define use
We need a boot synchronization for multiple UCM cards where linking
is expected like AMD ACP or Intel AVS drivers. This method is
using a timestamp file which can be created and modified during
the boot process (e.g. from the alsactl tool).

The goal is to return a valid UCM configuration for standard
applications combining multiple ALSA cards into one UCM configuration
and cover the time window when all cards have not been probed yet.

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2025-12-04 12:11:26 +01:00
Jaroslav Kysela
5c4a683bd0 ucm: keep original device name for logs
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2025-12-01 14:28:52 +01:00
Jaroslav Kysela
b3e4b15583 ucm: sort devices by priority
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2025-12-01 14:28:43 +01:00
Jaroslav Kysela
fd719bb122 ucm: doc - add examples for device name with descriptors (colon)
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2025-11-18 14:01:29 +01:00
Jaroslav Kysela
2da7e29c0c ucm: be more restrictive for device name with descriptor
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2025-11-18 14:00:48 +01:00
Jaroslav Kysela
e83fd7806f ucm: strip device index when the device type is present only one time
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2025-11-18 13:37:26 +01:00
Jaroslav Kysela
48c477569d ucm: add support for device names with colon (':')
The colon identifier means to automatically assign
a device index for this device.

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2025-11-18 13:37:09 +01:00
Jaroslav Kysela
07532ae8a8 ucm: normalize device names
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2025-11-18 13:37:08 +01:00
Jaroslav Kysela
9e933a08ed ucm: add possibility to inline Verb configurations to the main configuration file
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2025-11-17 18:36:32 +01:00
Jaroslav Kysela
a8620e814b ucm: add Prepend and Append block handling for If conditions (syntax 8+)
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2025-11-17 18:01:14 +01:00
Jaroslav Kysela
47f4f9b73b coverity.com fixes - initial round
This commit tries to fix a bunch of issues found
by coverity.com.

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2025-11-12 15:36:29 +01:00
Jaroslav Kysela
f0679e5de2 mixer: abst - reshuffle snd_mixer_simple_basic_register code to be more logical
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2025-11-12 15:36:29 +01:00
Jaroslav Kysela
b97a11ecf0 seq: fix snd_seq_drain_output return value for partial drain
The processed value was not properly updated thus the partial
flush was not notified properly.

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2025-11-12 15:36:29 +01:00
Jaroslav Kysela
3ce629a4c2 seq: hw - notify if running mode / pversion ioctl fails
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2025-11-12 15:36:29 +01:00
Jaroslav Kysela
122d362265 pcm: plugin - avoid 32-bit to 64-bit return value conversions
Several functions were affected. Simplify code without
any functionality change.

Signed-off-by: Jaroslav Kysela <jkysela@redhat.com>
2025-11-12 15:36:29 +01:00
Jaroslav Kysela
a9465869a7 add missing return value changes for snd_config_get_string() calls
Signed-off-by: Jaroslav Kysela <jkysela@redhat.com>
2025-11-12 15:36:29 +01:00
Jaroslav Kysela
796b48c0d2 add missing return value changes for snd_config_get_id() calls
Signed-off-by: Jaroslav Kysela <jkysela@redhat.com>
2025-11-12 15:36:29 +01:00
qaqland
41039b49ad snd_tlv_convert_to_dB: Fix mute handling for MINMAX_MUTE type
Some checks failed
Build alsa-lib / fedora_latest_build (push) Has been cancelled
Build alsa-lib / ubuntu_last_build (push) Has been cancelled
Ensure the SND_CTL_TLV_DB_GAIN_MUTE value is returned when the calculated
gain equals the minimum dB value for the SNDRV_CTL_TLVT_DB_MINMAX_MUTE type.
The previous check based solely on the volume value could miss cases where
the linear calculation resulted in the minimum gain.

Closes: https://github.com/alsa-project/alsa-lib/pull/478
Signed-off-by: qaqland <anguoli@uniontech.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2025-11-07 21:56:41 +01:00
Jaroslav Kysela
ea0a075c40 ucm: add missing stdbool.h include to ucm_local.h
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2025-11-07 21:51:43 +01:00
Jaroslav Kysela
2b6dedeb74 doxygen: fix warnings and add missing ALSA_LIBRARY_BUILD define
BugLink: https://github.com/alsa-project/alsa-lib/pull/480
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2025-11-07 21:44:52 +01:00
Olivier Blin
b33d0e4ced conf/pistachio: fix syntax
It was missing closing brackets since its introduction.

Closes: https://github.com/alsa-project/alsa-lib/pull/470
Fixes: 4dfa8f08fb ("conf/cards: add support for pistachio-card.")
Signed-off-by: Olivier Blin <olivier.blin@softathome.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2025-11-07 20:58:27 +01:00
Jaroslav Kysela
509e77c869 pcm route: suppress false positive warning for gcc 8+
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2025-11-07 20:07:17 +01:00
Jaroslav Kysela
bd0ce670c2 ucm: fix variant issue where variables or macros are overwritten
It is necessary to reset the state logic before each verb variant
is parsed. So save the original variable list and macros and
restore them before each parser iteration.

BugLink: https://github.com/alsa-project/alsa-ucm-conf/pull/633
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2025-11-07 18:09:26 +01:00
Jaroslav Kysela
f6dce4f9d0 ucm: remove 'error: ' prefix from error messages (duplication)
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2025-11-07 18:09:26 +01:00
Jaroslav Kysela
953ce1fd94 error: make prio/interface output a bit shorter in default log handler
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2025-11-07 18:09:26 +01:00
Jaroslav Kysela
0432be98f9 ucm: remove uc_dbg macro and callers
Those debug prints are not much useful now.

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2025-11-07 18:09:26 +01:00
Jaroslav Kysela
9ab488b86c ucm: replace uc_error with snd_error calls
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2025-11-07 18:09:26 +01:00
Jaroslav Kysela
11235095bf ucm: add a basic set of trace/debug log calls
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2025-11-07 18:09:26 +01:00
Jaroslav Kysela
66a3d542ac huge correction of tabulators and whitespaces
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2025-11-07 18:09:26 +01:00
Jaroslav Kysela
b37ac0982b log: implement filter based on string configuration (env LIBASOUND_DEBUG).
Examples:

 "debug"                 - Set global level to debug
 "3"                     - Set global level to 3 (info)
 "info,pcm:debug"        - Set global to info, pcm to debug
 "error,mixer:5,pcm:4"   - Set global to error, mixer to 5 (trace), pcm to 4 (debug)

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2025-11-07 18:09:26 +01:00
Jaroslav Kysela
524081b4d6 config: do not print errno in snd_config_check_hop()
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2025-11-07 18:09:26 +01:00
Jaroslav Kysela
62c8e635dc replace SNDMSG,SYSMSG,SNDERR,SYSERR with new log macros
... with interface identifiers

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2025-11-07 18:09:26 +01:00
Jaroslav Kysela
492df4bb94 error: add priority and interface strings to the log messages
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2025-11-07 18:09:26 +01:00
Jaroslav Kysela
7248b0c660 redesign the message log functions
Add priority level and interface classifiers. Define macros
for all priority level types to keep the callers more readable.
Ensure the compatibility with previous logging mechanism.

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2025-11-07 18:09:26 +01:00
Jaroslav Kysela
0a4e8854d5 error: do not export internal snd_err_msg variable
This variable was never intended to modify from outside (not in public
headers).

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2025-11-07 18:09:26 +01:00
Jaroslav Kysela
fa6e83d780 topology: fix nibble warning in tplg_save_quoted()
Some checks failed
Build alsa-lib / fedora_latest_build (push) Has been cancelled
Build alsa-lib / ubuntu_last_build (push) Has been cancelled
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2025-11-03 16:12:09 +01:00
Jaroslav Kysela
eda76146c5 conf: fix load_for_all_cards() - do not merge the card specific contents
Some checks failed
Build alsa-lib / fedora_latest_build (push) Has been cancelled
Build alsa-lib / ubuntu_last_build (push) Has been cancelled
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2025-11-03 10:54:54 +01:00
Jaroslav Kysela
eeca04741d conf: fix parse_array_def - merge arrays
A tiny overlook caused wrong array merge. New compound member must be
always created.

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2025-11-03 10:54:54 +01:00
Jaroslav Kysela
e5cb0b3346 conf: Revert "conf: fix load_for_all_cards()"
This reverts commit ddfc32abf5.

It was not a correct fix. The private values may differ (multiple
instances for e.g. USB sound cards). This fix prevents to load
private configurations for other instances.

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2025-11-03 10:54:54 +01:00
Jaroslav Kysela
d62b1d5407 conf: fix parse_array_def override code path
Some checks failed
Build alsa-lib / fedora_latest_build (push) Has been cancelled
Build alsa-lib / ubuntu_last_build (push) Has been cancelled
The error may cause segmentation fault and incorrect behaviour.

Closes: https://github.com/alsa-project/alsa-lib/issues/477
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2025-09-18 11:00:47 +02:00
Jochen Sprickerhof
782b0597c2 ucm: use close_range on _GNU_SOURCE
Closes: https://github.com/alsa-project/alsa-lib/pull/459
Signed-off-by: Jochen Sprickerhof <git@jochen.sprickerhof.de>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2025-07-31 15:30:51 +02:00
wyjstrong
4ad4d9590a Force to use alphasort64() sorting function for Harmony OS
Closes: https://github.com/alsa-project/alsa-lib/pull/467
Signed-off-by: wyjstrong <wyjstrong@163.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2025-07-31 15:29:21 +02:00
Kai Vehmanen
5f524e3004 pcm: add a loop to snd_pcm_avail_delay() to avoid bogus delay values
snd_pcm_avail_delay() is expected to report avail and delay values
in atomic fashion. However the function does two separate syscalls
and it cannot guarantee the avail value is the same as was used
to calculate the delay. This is a problem as the reported delay is
always relative to avail frames value.

If application (like e.g. alsa_conformance_test) uses snd_pcm_avail_delay()
to estimate the effective play position, it can observe bogus delay
values (and effective play position going backwards) if
snd_pcm_avail_delay() is called during a DMA burst where hw_ptr
moves quickly.

This commit adds a loop similar to that used in snd_pcm_hw_htimestamp()
to wait until we get a stable avail reading, and only then extract
the delay. This will avoid bogus values if function is called during
DMA bursts.

Closes: https://github.com/alsa-project/alsa-lib/pull/469
Closes: https://github.com/alsa-project/alsa-lib/issues/468
Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2025-07-31 15:25:18 +02:00
Jaroslav Kysela
ee5a58f48e ucm: regex: fix the error message (missing argument)
Link: https://github.com/alsa-project/alsa-ucm-conf/pull/580
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2025-06-26 11:33:15 +02:00
Daniel Dadap
07ec2ad34c conf: aliases: add hda-acpi -> HDA-Intel alias
The new snd_hda_acpi driver in Linux exposes the existing Azalia
interface to non-PCI devices advertised over ACPI. Add an alias
to the existing HDA-Intel configuration file so that devices using
this driver can be discovered properly.

Signed-off-by: Daniel Dadap <ddadap@nvidia.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2025-05-22 09:04:55 +02:00