Detailed changes v1.2.8 v1.2.9

From AlsaProject
Revision as of 12:26, 4 May 2023 by Prefix>Perex
Jump to navigation Jump to search

Detailed changelog between 1.2.8 and 1.2.9 releases

Changelog between 1.2.8 and 1.2.9 releases

alsa-lib

Core

- Release v1.2.9 - pcm: add new symbols to Versions.in - configure: avoid libdl detecion on *BSD

NetBSD and OpenBSD has no libdl
FreeBSD and DragonFlyBSD has libdl but dummy

These OSes are no need to use -ldl to use dlopen()

- include: alsa-symbols.h - use newer gcc symver function attribute

Use the symver function attribute for newer gccs (version 11+).
The symver function attribute was introduced probably earlier
(gcc-10). We can fix that on demand later.

Control API

- pcm: add SND_CTL_EINTR open mode

Add possibility to return -EINTR instead waiting for the event. The
applications may want to handle -EINTR condition themselves.

BugLink: https://github.com/alsa-project/alsa-lib/issues/228

PCM API

- pcm: hw: fix the silence size setup in drain

The silence size cannot exceed the silence threshold. Move the check
from the manual condition to the common code. This may happen for
small ring buffers (where the 1/10th second is too large).

Suggested-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>

- pcm: remove duplicate SND_PCM_HW_PARAM_{FIRST,LAST}_* #defines - pcm: add SND_PCM_EINTR open mode

Add possibility to return -EINTR instead waiting for the event. The
applications may want to handle -EINTR condition themselves.

BugLink: https://github.com/alsa-project/alsa-lib/issues/228

- pcm: improve handling for snd_pcm_wait()

The snd_pcm_wait() function is called also internally from
the various plugins to wait for the drain with -1 and from i/o
routines in pcm.c.

Define two special negative timeout values to distinguish the
drain and i/o wait and calculate the maximal timeout according
the wait place.

- pcm: hw: introduce SNDRV_PCM_HW_PARAMS_DRAIN_SILENCE

The application may not require to touch the playback
sample stream for the drain operation at all. In this case,
the application is responsible to setup a silencing mechanism
for the playback or another graceful stop (like using the
rewind operation).

- pcm: hw: introduce SNDRV_PCM_INFO_PERFECT_DRAIN

Handle the driver informing us that it is not necessary to set up
silencing upon playback draining. This will be the case for drivers
which are guaranteed to not read any samples beyond the application
pointer.

- pcm: hw: add drain_silence configuration keyword

  # Add silence in drain (-1 = auto /default/, 0 = off, > 0 milliseconds)
  [drain_silence INT]

- pcm: hw: setup explicit silencing for snd_pcm_drain by default

Some applications may not alignt transfers to the period size
and also the driver developers may not follow the consequeces of the
access beyond valid samples in the playback DMA buffer.

To avoid clicks, fill a little silence at the end of the playback
ring buffer when snd_pcm_drain() is called.

Related: https://lore.kernel.org/alsa-devel/20230420113324.877164-2-oswald.buddenhagen@gmx.de/
Related: https://lore.kernel.org/alsa-devel/20230405201219.2197789-2-oswald.buddenhagen@gmx.de/

- compilation: fix ANDROID -> __ANDROID__ define detection - pcm: avoid endless loop in snd_pcm_sw_params_default()

BugLink: https://lore.kernel.org/alsa-devel/167734349294.22.1388671545195719262@mailman-web.alsa-project.org/

- pcm: hw - fix return code checking in snd_pcm_hw_hw_refine

The isse was introduced in commit 7f2d6c3

- pcm: rate: fix last_commit_ptr boundary wrapping

Wrap last_commit_ptr using boundary. Was just wrapped to 0, which is
correct only if the buffer size, and hence the boundary, is an integer
multiple of the period size.

Link: https://lore.kernel.org/alsa-devel/20221230164814.901457-1-consult.awy@gmail.com/

- pcm: route/softvol use snd_config_get_ireal vs get_real to handle also integers

Link: https://lore.kernel.org/alsa-devel/f9a7ad6a256d4ad7a31642dcf875d436@axis.com/

- pcm: fix the fast_ops pcm argument for fast_ops

The fast_ops callback invocation must always pass the fast_op_arg
as the pcm argument. Plugins expect that.

- include: pcm_old.h - use a macro for the symbol versioning

Make the header file more readable and error prone.

- pcm: rate - correct the previous fix for snd_pcm_rate_may_wait_for_avail_min()

The previous fix in aa4f56c3 was not correct. The root of the cause is
implementation in snd_pcm_may_wait_for_avail_min() inline function
where the improper pcm argument is passed to the fast_ops function.

- pcm: rate - fix the crash in snd_pcm_rate_may_wait_for_avail_min()

The pcm argument passed to the conversion function in
snd_pcm_plugin_may_wait_for_avail_min_conv() should be
pcm->fast_op_arg.

Test command: arecord -Dplughw:x -r12000 -c2 -fS16_LE -M temp.wav


BugLink: https://lore.kernel.org/alsa-devel/1667793912-18957-1-git-send-email-shengjiu.wang@nxp.com/

Topology API

- topology: Parse ignore_suspend property for dapm widget

snd_soc_tplg_dapm_widget has ignore_suspend field, but there is no way
to set value for it, because we don't parse topology field for it.
Fix this by adding parsing code.

- topology: Add decompilation support for ignore_suspend

Previous patch added build support for ignore_suspend, however it should
be also possible to decompile binary back to human readable form and not
lose data.

- topology: Parse ignore_suspend flag

XXX_VOICE_WAKEUP also known as 'ignore_suspend' is already processed by
kernel in soc-topology, but there is no way of setting it via topology
file like it's the case for other flags. Fix this by adding it to pcm,
dai and link parsing mechanism.

- topology: ctl - remove the wrong (debug) code

This code was commited by mistake. It was used for testing
of ALSA_PCM_OLD_HW/SW_PARAMS_API.

BugLink: https://github.com/thesofproject/sof/issues/6667
Related-to: 78b20e3c ("test: latency - use snd_pcm_format_physical_width()")

- test: latency - use snd_pcm_format_physical_width()

We need to allocate frames using the physical size not
the sample bit size.

Use Case Manager API

- compilation: fix ANDROID -> __ANDROID__ define detection - ucm: fix geti() macro - return zero on success - ucm: simplify and fix the previous patch (geti)

Use macro to maintain only one code. The status may be 0 or 1 - handle
both values correctly.

Also, fix the possible memory leak in snd_use_case_geti() - string
str should be freed even when the error is returned.

- ucm: add existence checks to geti calls

Right now in snd_use_case_geti you cannot tell if the item being queried
exists or not when being checked. This also means the only way to check
for the existence of something in the client of the library is to
iterate over the list of mods/devs even if we know exactly the name we
are looking for. We have functions that do exactly this internally so
lets return this information in a logical fashion through geti.

Also clean up some trailing white space nearby.

- ucm: fix possible memory leak in execute_sysw() - ucm: execute_sysw - fix possible use-after-free - ucm: handle empty string also for ${env:} substitution - ucm: clarify set_defaults calls

- do full reset in snd_use_case_mgr_reload

- ucm: fix enhanced ID parsing in snd_use_case_parse_ctl_elem_id()

Compatibility routines

- type_compat.h: use ESPIPE instead of EPIPE when ESTRPIPE not defined

Configuration

- conf/emu10k1: remove compat with two decades old drivers

There really isn't much of a point to clutter the files with this.

- compilation: fix ANDROID -> __ANDROID__ define detection - alsa-lib: conf - fix possible use-after-free in get_char_skip_comments

Kernel Headers

- pcm: hw: introduce SNDRV_PCM_HW_PARAMS_DRAIN_SILENCE

The application may not require to touch the playback
sample stream for the drain operation at all. In this case,
the application is responsible to setup a silencing mechanism
for the playback or another graceful stop (like using the
rewind operation).

- pcm: hw: introduce SNDRV_PCM_INFO_PERFECT_DRAIN

Handle the driver informing us that it is not necessary to set up
silencing upon playback draining. This will be the case for drivers
which are guaranteed to not read any samples beyond the application
pointer.

Test/Example code

- test: BSD-like fixes

- rename devname -> pcmdev, it conflicts *BSD <stdlib.h> function
- replace <values.h> -> <limits.h> and fix K&R style related warning
- use config.h to determine include <malloc.h>
- add OpenBSD support and fix printf() warning
- fix warning

- type_compat.h: use ESPIPE instead of EPIPE when ESTRPIPE not defined - test: latency - --policy option - allow using SCHED_OTHER - test: latency - add --policy option to allow using SCHED_FIFO - test: latency - usleep should not be used in the block mode - test: latency - add -y option (I/O usleep) - latency: add timestamps to the POS lines

- remove first capture pos line
- measure the snd_pcm_start() call, too

- test: latency - add more realtime tests

Add '-x' and '-X' tests and '-U' - I/O update mode based
on the system timing.

It may be required to check the position updates for the specific hardware.
Print the real time / stream time differences.

Also include code to make valgrind happy (including the wrong memory
llocation for the stream buffer).

- test: latency - use snd_pcm_format_physical_width()

We need to allocate frames using the physical size not
the sample bit size.

Utils

- utils/alsa.m4: include <stdlib.h> for exit()

Clang 16 makes -Wimplicit-function-declaration an error by default
and it's easier to just explicitly include <stdlib.h> rather
than hope the ALSA headers always have it.

alsa-utils

Core

- Release v1.2.9 - 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>
      |          ^~~~~~~~~

Fixes:
 - http://autobuild.buildroot.org/results/1173a1ee28a58ce565a3274f35e868c35bb2e04e

- chore: Add link to master branch on GitHub Actions

Singed-off-by: Tomohiro IKEDA <tomohiro.ikeda@justincase-tech.com>

- chore: Delete .travis.yml because of using not Travis CI but GitHub Actions

/include/Makefile.am

- include: fix package - add bswap.h and os_compat.h to noinst_HEADERS

ALSA Control (alsactl)

- alsactl: fix OpenBSD compilation (add include of os_compat.h) - 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.

ALSA RawMidi Utility (amidi)

- 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.

- 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.

Audio Transfer utility

- 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.

- axfer: fix typo in manual

The spelling of 'aborted' was 'aboeted' in the manual. This commit fixes
it.

alsa-info.sh

- alsa-info.sh: increase version to 0.5.3 - 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

set -x; read -r KERNEL_VERSION < <(uname -v); smp=x; \
  "$KERNEL_VERSION" = *SMP*  && \
  { smp=y; readonly smp; false;} || smp=n; set -

  ... https://github.com/koalaman/shellcheck

- 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

- alsa-info.sh: print ctl-led list from sysfs

alsaconf

- Add Georgian translation

alsaloop

- alsaloop: fix loopcount condition

BugLink: https://github.com/alsa-project/alsa-utils/issues/185

- 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.

alsamixer

- alsamixer: add -B,--black-background option

alsatplg (topology)

- topology: pre-processor: fix regular expression flags

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.

- topology: pre-process-object: Expand definitions within strings

Expand the pre-processor to allow for expanding the definitions,
object attribute references and arithmetic expressions within strings.

With this extension its possible to embedded definitions or attribute
references into topology string objects. For example:

Define {
       PCM_NUMBER       1
}

Object.Pipeline {
        pcm-playback.0 {

        Object.Widget {
                copier.1 {
                        copier_type     "host"
                }
                gain.1 {
                        Object.Control.mixer.1 {
                                name 'hw:$[$PCM_NUMBER - 1] Playback Volume'
                }
        }

        Object.Base {
                route.1 {
                        source  copier.host.$index.1
                        sink    gain.$index.1
                }
        }
}

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.

- topology: pre-process-object: Remove all trailing white space - 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.

Define {
        COPIER_ROUTE    1
}

IncludeByKey.COPIER_ROUTE {
        "1" {
                Object.Base.route.11 {
                        source  copier.module.8.2
                        sink    copier.module.17.2
                }
            }
}

Co-authored-by: Jaroslav Kysela <perex@perex.cz>

- 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
}

- 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

        Object.Base.mn_config."MN_0" {
                m_div   100
                n_div   200
        }

        Object.Base.clk_config."CLK_0" {
                clock_warm_up          1
                mclk                   2
                warm_up_ovr            3
                clock_stop_delay       4
                keep_running           5
                clock_stop_ovr         6
        }
}

- 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.

- topology: plugins: nhlt: fix ssp debug

Nhlt ssp plugin debug feature was broken due to recent change in ssp
indexing, thus fix it.

- topology: nhlt: intel: ssp: fix obvious typo for 'codec_provider'

Looks like a bad search and replace?

- topology: plugins: nhlt: fix ssp dai index

There was a conceptual error in handling the separate ssp dais, so fix
it.

- topology: plugins: nhlt: add dmic dai index

Dmic might have multiple configurations for the same hw, so add them to
nhlt blob. The configurations are separated by dai_index.

- topology: plugins: fix off by 1 mem allocation error

Fix valgrind memcheck error:

==1337389== Invalid write of size 1
==1337389==    at 0x4A4AFAB: __vsnprintf_internal (vsnprintf.c:117)
==1337389==    by 0x4AECF40: __snprintf_chk (snprintf_chk.c:38)
==1337389==    by 0x484B870: snprintf (stdio2.h:67)
==1337389==    by 0x484B870: print_as_hex_bytes (nhlt-processor.c:112)
==1337389==    by 0x484B870: merge_manifest_data (nhlt-processor.c:154)
==1337389==    by 0x484B870: do_nhlt (nhlt-processor.c:420)
==1337389==    by 0x484B870: _snd_topology_nhlt_process (nhlt-processor.c:484)

The consecutive snprintf overwrites always the previous terminator until
it hits the very last call of:

snprintf(dst, ALSA_BYTE_CHARS + 1, "0x%02x,", *nhlt_buffer);

when the size n given to snprintf is 1 more than allocated.

alsaucm

- alsaucm: fix typo in docs (can can) - alsaucm: add also card index for '-c' argument

Make semantics for this argument in sync with other ALSA utilities.

aplay/arecord

- arecord: use correct duration

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.

- 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.

- 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.

BugLink: https://github.com/alsa-project/alsa-utils/pull/178

bat (basic audio tester)

- alsabat: improve error handling in bat_init()

Fix 'LC_ALL=C.UTF-8 ./alsabat' command.

- 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.

alsa-ucm-conf

Configuration

- Gigabyte Z690I AORUS ULTRA DDR4, Realtek alc4080

add another board using realtek alc4080

- USB-Audio: fix bad Conditio in If.minifuse4

There should be 'Needle' keyword instead 'Regex' for the
string condition.

- USB-Audio: Add Minifuse 4

I created a separate file because of the additional input-Pairs and
output-Pairs result in different loopback channels.

Without the usecase outputs threated as surround channels.

- USB-Audio: Add Sony inzone H7/H9 headset default/HiFi usecase

The Sony inzone H7/H9 headset has two usb audio outputs and one usb
audio input.

One pair of audio output and input is the 'chat' interface which is
normally connected to a chat client.

The remaining audio ouput is the 'game' interface, which is normally
connected to the actual game you're playing.

The 'game' interface lists as a separate USB subdevice in alsa.

This commit adds the HiFi usecase for the Sony headset which is as
follows:
- One chat device
  - One audio output
  - One audio input
- One game device
  - One audio output

Tested with pipewire and pulseaudio, verified with pavucontrol, both
devices are listed and audio can be played on both.
The audio is mixed in the headset itself.

Control wise there isn't much, the only thing that is reported in
alsamixer is a volume control for the CAPTURE channel.
However, changing the volume of this does not seem to affect the
actual audio that is recorded, so I don't see a need to change this
when enabling the device.

- ucm2: codecs: va-macro: fix dmic1 mux setting

Looks like there was a typo in setting up dmic1 mux. Without this dmic01
selection would only do single channel record instead of 2 channel recording.

- USB: Adding UCM2 configuration for Roland/BridgeCast - sof-hda-dsp: Add speaker led support - USB-Audio: ALC4080 on Gigabyte Z690 AORUS ULTRA - USB-Audio: ALC4080 on MSI PRO X670-P WIFI - USB-Audio: ALC4080 on MSI MPG Z590 Gaming Force - USB-Audio: ALC4080 - Add MSI MAG B650M MORTAR WIFI (USB ID: 0db0:7696)

Adds support for the MSI MAG B650M MORTAR WIFI motherboard front & back 3.5mm jacks.

- wcd938x codec: remove empty DefaultDisableSeq.conf - ucm2: Qualcomm: sc8280xp: add LENOVO Thinkpad X13s support

Add support to LENOVO Thinkpad x13s which has 2xwsa883x smart speakers and a headset connector.

- ucm2: codecs: lpass: tx: add dmics via tx macro - ucm2: codecs: lpass: make sure va dec mux is set correctly

Make sure VA decimator mux is correctly set while using DMICs by adding
explicit mixer control to set it in enable sequence.

- ucm2: codecs: lpass: add codec sequences for va dmic1

Add codec sequences for VA DMIC1 settings.

- ucm2: codecs: lpass-tx-macro: add codec sequences

Add default, enable/disable codec sequence for Qualcomm LPASS TX Macro
digital codec

- ucm2: codecs: lpass-rx-macro: add codec sequences

Add default, enable/disable codec sequence for Qualcomm LPASS TX Macro
digital codec

- ucm2: codecs: wcd938x: add codec sequences

Add default, enable/disable codec sequence for Headphone and Mic on
WCD938x codec

- ucm2: codecs: wsa883x: add codec sequences

Add default, enable/disable codec sequence for wsa883x codec

- ucm2: Rockchip: rk817: Add ALSA UCM support

Add ALSA-UCM support for the Rockchip RK817 audio codec. This codec
is typically configured either with an internal or external amplifier
as reflected by the longname. This configuration has been tested on
the Anbernic RG353P (rk817_ext) and the Odroid Go Advance (rk817_int).

Changes from V1:
 - Use a constant to control if the output mux is set to HP or SPK.

Link: https://lore.kernel.org/alsa-devel/20230224193320.1503-1-macroalpha82@gmail.com/

- USB-Audio: ALC4080 - add wrx80e sage se wifi (ID: 0b05:1984)

This motherboard is recognized by system76 as the mega-r2

- sof-soundwire: Initialize PGA switch controls in the BootSequence

A bug in the driver / firmware may cause that the paths are
active for the first boot, but if the sound card state is saved
and restored later (e.g. next boot), the paths may be deactivated.

BugLink: https://github.com/thesofproject/linux/issues/4196

- USB-Audio: ALC4080 - adds support for USB ID 0414:a010 (Gigabyte Z590 Vision G)

The GIGABYTE Z590 Vision G Intel motherboard contains a Realtek ALC4080 souncard
that was missing from the available UCMs.

The change works on my machine and the HiFi profile seems to be fully functional

- USB-Audio: ALC4080 - Add support for MSI MAG Z590 Tomahawk WiFi motherboard

USB ID: 0db0:4240

Adds support for Z590 Tomahawk WiFi, microphone jack is now working

- max98090: drop Record Path DC Blocking to fix int mic - USB-Audio: ALC4080 - Support for MSI B650 Tomahawk Wifi - USB ID 0db0:422d

This would enable sound connected to the MSI B650 Tomahawk Wifi motherboard

- DEBUG.md: add systemctl restart command for pipewire - ucm: USB-Audio - Add support for Focusrite Scarlett 2i2 gen3 - USB-Audio: ALC4080 - add Z690 AERO G DDR4 (USB ID 0414:a012) - ucm2: MediaTek: mt8365-evk: Add alsa-ucm support

Add alsa-ucm support for the Mediatek mt8365-evk platform.

- Add UCM for PinePhone

The DTS configuration has had a unique audio card name since 5.14:

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dtsi?h=v5.14#n436d

This UCM config is derived from https://gitlab.com/pine64-org/pine64-alsa-ucm/, which is BSD-3-Clause licensed.

Co-authored-by: Arnaud Ferraris <arnaud.ferraris@collabora.com>
Co-authored-by: Samuel Holland <samuel@sholland.org>

- USB-Audio: ALC4080 - add MSI MPG Z790I Edge WiFi (ID: 0db0:62a4)

This motherboard is recognized as the thelio-b5 by System76

- USB-Audio: ALC4082 - add MSI MEG X670E ACE (0db0:961e) - USB-Audio: ALC4080: detect MSI MPG Z790 Carbon Wifi - USB-Audio: ALC4080: Add Support for MSI MPG Z790 Edge Wifi - ucm2: sof-soundwire: Update Mic LED settings

It would be better to make this settings as default in
the driver. See PR.

- USB-Audio: Update quirk for Aorus Pro WiFi Rev 1.2

The line in was using the wrong device.
This model is a thelio-major-r2.1 for system76.

- ucm2: Add initial support for AMD Vangogh (acp5x) on Steam Deck

This has been tested on a Valve Steam Deck EV2 unit, using kernel
v6.1-rc1.

- Add: 0b05:1999 ASUS ROG Strix Z590-A Gaming WiFi

This model is recognized as a thelio-mira-b1 by system76

- ucm2: alc4080 - add support for MSI PRO Z790-A WIFI (ID 0db0:d1d7) - USB-Audio: ALC4080 - Add support for ASUS ROG Crosshair X670 Extreme (ID 0b05:1a53)

- Confirmed working.

- USB-Audio: alc4080 - add MSI MAG B650I Edge WiFi (ID 0db0:36e7)

This motherboard is recognized as the thelio-r3 by System76

- sof-hda-dsp: Set Dmic0 Capture Switch on

Internal micrphone default is off after fresh installation.
Add operation to set the control on to align with other architecture.

- sof-soundwire: set PGA capture switch for rt715 mic in BootSequence - ucm2: sof-hda-dsp - If.devdmic cleanup

Simplify the If.devdmic block.

- ucm2: HDA: Update Mic LED settings for ACP DMIC

Users expect to turn the LED on when only internal mic is off, but
it makes sense to turn this LED when all internal inputs are off.

This configuration may be changed when the affected applications
are updated.

BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=2134824

- ucm2: sof-hda-dsp: Update Mic LED settings

Users expect to turn the LED on when only internal mic is off, but
it makes sense to turn this LED when all internal inputs are off.

This configuration may be changed when the affected applications
are updated.

BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=2134824

- HDA: DualCodecs - handle S/PDIF without analog connections

When no analog wires are connected, the S/PDIF output cannot be
selected in pipewire. Handle this for motherboards without Speaker
UCM device.

- USB-Audio: the environment variable UCM_USB_PERIOD_TIME may be undefined

BugLink: https://github.com/alsa-project/alsa-ucm-conf/pull/240

- mt8195-demo: fix soundcard initialization

The previous initialization in Bootsequence set all Switch
to off after boot.

So remove the setting off of the Switch in the BootSequence
and define Enable/DisableSequence in verb section for
a proper setting.

Note that the controls enable access to the PCM devices
(controls routes between Front End and Back End in ASoC).

- USB-Audio: allow to configure period size for PCM split

The environment variable UCM_USB_PERIOD_TIME (microseconds / μs)
can define the period size for the PCM channel split over
the default value 10000μs.

BugLink: https://github.com/alsa-project/alsa-ucm-conf/pull/240

- ucm2: add profile for the Librem 5

Tested-by: Guido Günther <agx@sigxcpu.org>

- ucm2: sof-soundwire: add basic settings for RT1318 SDCA device

Add support for rt1318 amplifier

- USB-Audio: ALC4080 - add 0db0:6cc9 MSI MPG Z590 Gaming Plus device

BugLink: https://github.com/alsa-project/alsa-ucm-conf/issues/241

- ucm2: Alc4080 - add support for ASUS ROG Strix Z790-E Gaming Wifi - ucm2: USB-Audio - Added Digidesign Mbox 3 support - ucm: USB-Audio - Add support for Focusrite Scarlett 2i2 gen2

BugLink: https://github.com/alsa-project/alsa-ucm-conf/pull/234

- ucm2: Add support for MT8192 Asurada Spherion Chromebook

Add support for the Acer Chromebook 514 CP514-2H, powered by MediaTek
Kompanio 820 (MT8192). This machine uses a MT6359 PMIC, with RT1015P as
speaker codec and RT5682 as headphone codec.

Description

- Release v1.2.9 - README.md: add --wildcards also for the second tar command - add --wildcards to tar options in README

Without it, at least on some recent tar version, it won't work: --wildcards is the
default only for exclusions, not for member selection. This tends to
confuse users, even though it's just an example.