Detailed changes v1.2.2 v1.2.3

From AlsaProject
Jump to navigation Jump to search

Detailed changelog between 1.2.2 and 1.2.3 releases

Changelog between 1.2.2 and 1.2.3 releases

alsa-lib

Core

- Release v1.2.3 - snd_dlopen: implement the relocatable version for glibc

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

- github actions: ubuntu - fix the non-interactive build - pcm: dmix: assembly: fix the interface for safety (mmx)

- add mm0 in the clobber list if the compiler
  is aware of the mmx technology;
- otherwise, add the mmx aliased x87 floating point
  registers in the clobbers;
- the configure now checks if the compiler is aware of
  the MMX technology.

  The compiler assumes none of the mmx or x87 registers are used
  by the function. If it chooses to store some data in them, they
  will be overwritten by the chunk.
  Recall that any mmx instruction invalidate the whole set of
  x87 floating point registers.

  Note: currently does not impact the binary output.

- configure: add --embed for python3-config (python 3.8)

Config API

- conf: add snd_config_is_array() function

Control API

- tlv: implement nearest rounding in snd_tlv_convert_from_dB() for xdir == 0

We should round-up values to nearest to get more precise results.

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

- control: use more precise rounding in snd_ctl_ascii_value_parse() - snd_dlopen: do not use absolute plugin path for snd_dlopen() calls

In commit b906db19ef9f4fb7886003072e550391cc1ac651, the snd_dlopen()
implements the automatic lookup to the ALSA_PLUGIN_DIR directory.
It is not necessary to add the absolute paths in callers now.

The plugin names are also searched in ld.so.conf paths as the fallback now,
but it should not be a big problem.

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

- namehint: remember the direction from the upper levels

The current code resets the direction info for each level.
Simply remove this code.

- conf: namehint - add omit_noargs to the hint section

Do not list simple surround devices in the namehint function by default.

Mixer API

- tlv: implement nearest rounding in snd_tlv_convert_from_dB() for xdir == 0

We should round-up values to nearest to get more precise results.

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

- snd_dlopen: do not use absolute plugin path for snd_dlopen() calls

In commit b906db19ef9f4fb7886003072e550391cc1ac651, the snd_dlopen()
implements the automatic lookup to the ALSA_PLUGIN_DIR directory.
It is not necessary to add the absolute paths in callers now.

The plugin names are also searched in ld.so.conf paths as the fallback now,
but it should not be a big problem.

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

PCM API

- pcm: Fix memory leak at snd_pcm_new when THREAD_SAVE_API is defined

The pthread_mutexattr_t object should be destroyed by calling
pthread_mutexattr_destroy(), otherwise it may cause a potential
memory leak due to the different implement of pthread_mutexattr_init()

- pcm: clarify -ENODATA description (recovery, event) - pcm: fix spelling in documentation for -EBADFD - pcm: add documentation for -ENODATA error code

This error code can be used e.g. with echo reference PCM devices
(the SND_USE_CASE_MOD_ECHO_REF UCM token).

- snd_dlopen: do not use absolute plugin path for snd_dlopen() calls

In commit b906db19ef9f4fb7886003072e550391cc1ac651, the snd_dlopen()
implements the automatic lookup to the ALSA_PLUGIN_DIR directory.
It is not necessary to add the absolute paths in callers now.

The plugin names are also searched in ld.so.conf paths as the fallback now,
but it should not be a big problem.

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

- pcm: return immediately when the state is SETUP in snd_pcm_drain()

We are already in the target state. Do not call the plugin callback.

- pcm: fix snd_pcm_drain() excluding SETUP state from valid states

once draining is done, the pcm enters the SETUP state, which ought to
be valid for snd_pcm_drain()

- pcm: rate: Fix uninitialized variable warning

The recent gcc warning indicates the uninitialized variable commit_err:
  pcm_rate.c:1104:6: warning: ‘commit_err’ may be used uninitialized in this function [-Wmaybe-uninitialized]
     if (commit_err < 0)
         ^

Add a proper initialization to commit_err.

- pcm: rate: Fix compile warning wrt bit ops and comparison

We've got a gcc warning:
  pcm_rate.c: In function ‘snd_pcm_rate_drain’:
  pcm_rate.c:1090:19: warning: suggest parentheses around comparison in operand of ‘&’ [-Wparentheses]
     if (pcm->mode & SND_PCM_NONBLOCK != 0) {
                   ^

Drop the zero comparison for fixing the warning and for simplicity.

- pcm: dmix: assembly: give more freedom over the constraints

Minor changes that could help the compiler to produce a
better (smaller/faster) code.

- pcm: dmix: assembly: refactor the PIC mode

Newer versions of GCC (> 5.0) accept that ebx is declared
in the clobber list even in PIC mode. Meanwhile, even
unlikely, the compiler may use ebx as base address of
one of the memory entry, making subsequent access to
them unreliable ('size', 'dst_step', 'src_step', 'sum_step').

Adding ebx in the clobber solves the problem.
By the way, the entry 'old_ebx' is no longer required.

- pcm: dmix: assembly: fix the interface for safety (mmx)

- add mm0 in the clobber list if the compiler
  is aware of the mmx technology;
- otherwise, add the mmx aliased x87 floating point
  registers in the clobbers;
- the configure now checks if the compiler is aware of
  the MMX technology.

  The compiler assumes none of the mmx or x87 registers are used
  by the function. If it chooses to store some data in them, they
  will be overwritten by the chunk.
  Recall that any mmx instruction invalidate the whole set of
  x87 floating point registers.

  Note: currently does not impact the binary output.

- pcm: dmix: assembly: fix the interface for safety

- move 'size' and 'old_ebx' in the output section
  since they are clobbered;
- add the "memory" clobber since input pointers
  are accessed;
- (minor) add the "cc" clobber since flags are
  clobbered.

  The compiler is missing some dataflow information
  about the execution of the assembly chunks.
  For instance, it assumes that 'size' remains unchanged
  and that no input pointer is accessed.
  The compiler optimizer may take advantage of these
  assumption and produce a wrong code.

Note: currently produces the same binary output.

- pcm: dmix: assembly: change the token by symbolic names

It eases the refactoring of assembly chunk since we can now
add/remove/move entries without worrying about maintaining
the token numbering in the template.

Note: does not impact the binary output.

- fix infinite draining of the rate plugin in SND_PCM_NONBLOCK mode

The draining function of the rate plugin does not handle properly the
SND_PCM_NONBLOCK case. It can write data to the slave plugin each time the
function is called, but does not update its internal state in order to
reach a stopping condition. Use a last_commit_ptr workaround to reach such
condition.

- pcm: rate - fix the remaining size calculation in snd_pcm_rate_drain() - pcm: dmix: fix sw_params handling of timestamp types in direct plugins

In pcms using direct plugins (dmix/dsnoop/dshare), the timestamp type could
be different from the terminating hw plugin, then the kernel driver.

Be sure such pcms have plugins using consistently the same timestamp type.

- pcm: add chmap option to route plugin

Add a config definition "chmap" to override the channel maps in the same
way as in the hw and null plugins.

Topology API

- topology: Add missing ATTRIBUTE_UNUSED

... to shut up the compiler warnings.

- topology: use snd_config_is_array() function

... instead the own array test.

- topology: Use bool parser to parse boolean value

It should be safe to change this as correct values with int would be 0
or 1 and bool parser handles them correctly.

- topology: add back asrc to widget_map in dapm.c

BugLink: https://github.com/thesofproject/sof/issues/2543

Use Case Manager API

- ucm: fix the wrong return value in uc_mgr_open_ctl() - ucm: remove strict: in ${OpenName} substitution - ucm: fix the error path in parse_toplevel_path() - ucm: fix the wrong uc_mgr_open_ctl() call in if_eval_control_exists() - use-case.h: define Linked variable

We have a requirement to "hide" some hardware drivers, because
other (main) UCM configuration will refer them.

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

- ucm: implement CardIdByName substitution

The syntax is ${CardIdByName:CARDNAME[#INDEX]}.

The CARDNAME is the ALSA's soundcard name (short form).
The INDEX is the instance (0 = first, 1 = second etc.).

Example: ${CardIdByName:HDA Intel PCH}
(which is identical to ${CardIdByName:HDA Intel PCH#0})

- ucm: shuffle code in compound_merge() - ucm: substitute arguments in sequences only for syntax 3+ - ucm: substitute RenameDevice and DeleteDevice lists - ucm: substitute Comment in Transition and Device - ucm: substitute verb name and file field - ucm: substitute component sequence string - ucm: substitute device strings in the device lists - ucm: substitute device / modifier names, too - ucm: implement the toplevel ucm configuration file parser

There is a big issue to validate all possible configuration paths.
Let create ucm2/ucm.conf file which describe the lookups. It may
be also customized later to follow the kernel-side development.

- ucm: substitute ${CardNumber} - ucm: substitute ${OpenName} - ucm: Define/DefineRegex is supported in Syntax 3 - ucm: String condition - implement Empty - ucm: handle strict: prefix correctly for the UCM card name - ucm: substitute also value strings - ucm: allow to specify the toplevel directory using '/' as first character in File path - ucm: config - change the in-place include evaluation order - ucm: allow syntax version 3 - ucm: substitute arguments in sequences - ucm: configuration - add DefineRegex

Syntax:

  DefineRegex.VariableName {
    String "something to match"
    Regex "(me)thi(ng)"
  }

Result:

- configuration variable "VariableName" is equal to "mething"
- configuration variable "VariableName1" is equal to "me"
- configuration variable "VariableName2" is equal to "ng"

Notes:

The "Flags" string in the DefineRegex compound may specify
the compilation flags (e = extended, i = ignore case,
s = no substitutes, n = newline). See 'man 3 regex' for
more details.

- ucm: configuration - allow to define the configuration variables

It may be useful for the library files to use the runtime configuration
variables.

Example:

 Define.Var1 "hw:${CardId},2"
 Value.PlaybackPCM "${var:Var1}"

- ucm: config - substitute File string to allow variables in include - ucm: configuration - substitute ${ConfDir} and ${ConfTopDir} - ucm: configuration - implement in-place Include

An example:

        Include {
                File "Inc.conf"
                Before.SectionDevice "Mic"
        }

- ucm: rename _once command to _boot command - ucm: rename SectionOnce to BootSequence - ucm: fix compilation error in set_defaults_user() - ucm: fix SectionOnce comment - ucm: initialize mgr->once_list

BugLink: https://github.com/alsa-project/alsa-lib/pull/50

- ucm: handle 'set _defaults' command - ucm: handle 'set _once' command - ucm: execute SectionDefaults lately (when the first verb is set)

We need a way to set the SectionOnce at first before SectionDefaults.
It also does not make sense to run SectionDefaults when the API is
used only to query for values or so.

Execute the SectionDefaults commands only when the first verb
is set (before the verb specific commands).

- ucm: parse SectionOnce section in the master UCM configuration file - ucm: merge the array items from the condition blocks - use-case.h: add USB as allowed device name

Some USB devices are really generic where the
PCM stream can be routed to different paths.

- ucm: fix copy-n-paste typo (RemoveDevice list) - ucm: fix the device remove operation

- allow to remove device only from conflicting lists
- unify the error codes when the device is not found (ENODEV)

- usecase: allow indexes also for modifier names - ucm: fix uc_mgr_scan_master_configs()

Skip the lookup, if the top level filename does not exist.

- ucm: clarify the index syntax for the device names

Configuration

- conf: USB-Audio: Add HP Thunderbolt Dock in the IEC958 blacklist

Both headset and speaker on HP Thunderbolt Dock don't support IEC958
interface.

- conf: remove debug printf() in snd_config_hook_load() - conf: add support for XDG_CONFIG_HOME search path

Include $XDG_CONFIG_HOME/alsa/asoundrc _or_ ~/.config/alsa/asoundrc as
the last user-defined configuration.

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

- conf: load function (hook) - add OR support

While I was trying to work on XDG_CONFIG_HOME support, I though
that it may be nice to support OR for the file specification.

But then I found that we can already do this via the refer hook.

I commit this change anyway, because the snd_config_hook_load()
function is more clean now.

The OR is implemented with three | characters like:

  "~/.asoundrc|||~/.asoundrc2|||/opt/some/other/path"

(first file found wins)

- conf: USB-Audio.conf - add another card name for Asus Xonar 5

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

- conf: add snd_config_is_array() function - conf: use bool type for the join member in the config structure - conf: change namehint for pcm.front

It seems that we have regressions for pcm.front (some
applications are using this device also for the default
raw input). Change the description and allow both
directions.

- conf: USB-Audio: Fix S/PDIF output of ASUS Xonar AE

ASUS Xonar AE is a PCI-Express card containing USB controller:

        USB controller [0c03]: ASMedia Technology Inc. ASM1042A USB 3.0 Host Controller [1b21:1142]

and the actual USB sound card:

        ID 0b05:180f ASUSTek Computer, Inc. XONAR SOUND CARD

As other Xonar USB sound cards, it uses second device for digital
output.

- pcm: dmix: fix sw_params handling of timestamp types in direct plugins

In pcms using direct plugins (dmix/dsnoop/dshare), the timestamp type could
be different from the terminating hw plugin, then the kernel driver.

Be sure such pcms have plugins using consistently the same timestamp type.

- conf: fix namehint for pcm.front and pcm.iec958

As suggested in:

- conf: USB-Audio: Add C-Media USB Headphone Set to the IEC958 blacklist - Change PCM device number of Asus Xonar U5 - conf: namehint - add omit_noargs to the hint section

Do not list simple surround devices in the namehint function by default.

- conf: change the order of PCM devices in alsa.conf

Appearently, some applications use the first device for probe or so.

Dynamic Loader helpers

- dlsym: fix the snd_dlopen(), incorrect variable use - dlsym: fix again snd_dlpath()

There is double lock in 8d866e4cd886991f605399af6bd6cf4ac6eea3e2 .

- dlsym: fix the reference to the origin lib directory

There is reference to the variable on heap in
commit 33089f30a316060094dfa95a2949fd479299c7 .

Cache the origin directory better.

- snd_dlopen: implement the relocatable version for glibc

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

Kernel Headers

- header: Fix build error with old kernel headers

Old development environment doesn't necessarily contain the headers
defining __kernel_long_t that is recently used for y2038 timespec
conditional.  Define it explicitly in such a case.

Simple Abstraction Mixer Modules

- snd_dlopen: implement the relocatable version for glibc

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

- snd_dlopen: do not use absolute plugin path for snd_dlopen() calls

In commit b906db19ef9f4fb7886003072e550391cc1ac651, the snd_dlopen()
implements the automatic lookup to the ALSA_PLUGIN_DIR directory.
It is not necessary to add the absolute paths in callers now.

The plugin names are also searched in ld.so.conf paths as the fallback now,
but it should not be a big problem.

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

Test/Example code

- test: pcm_min - add snd_pcm_drain() call and indentation fixes

alsa-utils

Core

- Release v1.2.3 - github actions: ubuntu - fix the non-interactive build - github workflow: fix tag fetch

ALSA Control (alsactl)

- alsactl: ucm - rename _once command to _boot command - alsactl: allow to compile alsactl without UCM support - alsactl: use the right priority for syslog messages - alsactl: add -D argument to execute also the UCM defaults section - alsactl: redirect alsa-lib errors - alsactl: add initial support for UCM init - alsactl: init - iterate through all cards for the initial settings

The generic initialization code returns error code 99 (-99). Take
all those codes equal or above (bellow) this value as non-fatal.

- alsactl: daemon.c - fix gcc warning in write_pid_file() - alsactl: fix error handling for sched_setscheduler() call

As man page says: "If successful, the sched_setparam() function shall return zero."

Without update I got this output in the syslog (journalctl):
abr 16 09:25:30 mypc alsactl[1652]: alsactl 1.2.2 daemon started
abr 16 09:25:30 mypc alsactl[1652]: /usr/bin/alsactl: do_nice:165sched_setparam failed: No such file or directory

If sched_setscheduler() returns 0, so it means that the call was successful.

- alsactl: avoid needless wakeups in monitor loop.

The timeout wasn't really being used for anything; disabling it should
reduce idle energy consumption slightly.

Tested-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>

- alsactl: don't exit on EINTR from epoll_wait().

Previously, things like attaching strace to a running 'alsactl monitor'
process would cause it to exit.

Tested-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>

alsa-info.sh

- alsa-info.sh: increase version to 0.4.65 - alsa-info: initial rpm/deb package info

This might become a Pandora's box given
the amount of obscure package managers
on the planet but these two account for
most *nix-like systems with ALSA it seems.

Added support for querying ALSA packages
installed through rpm and dpkg; tested
on ALT (rpm) and OS Elbrus (dpkg).

Suggested-by: Anton Farygin <rider@altlinux.org>
See-also: http://bugzilla.altlinux.org/38416

- alsa-info.sh: add ALT to DISTRO list

Suggested-by: Anton Farygin <rider@altlinux.org>
See-also: http://bugzilla.altlinux.org/38416

alsaloop

- alsaloop: reduce cumulative error caused by non-atomic samples calculation

When doing loopback between two audio card with
same sampling frequency, I noticed slow increase
of pitch_diff.

When I changed order of get_queued_playback_samples()
vs get_queued_capture_samples(), I noticed same drift
of pitch_diff but if was decreasing this time.

This seems to be caused by non-atomic consecutive
snd_pcm_delay() invocation for playback then for
capture. snd_pcm_delay() measures delay between
read/write call and actual ADC/DAC operation.

So while we get this value for playback path in
get_queued_playback_samples(), next call to
get_queued_capture_samples() will happen a little
bit later so snd_pcm_delay() may return incorrect
value.

Be interleaving get_queued_{playback,capture}_samples()
order, we divide this small error between playback
and capture paths. I do not see any issues anymore
with one-way drift of pitch_diff.

alsamixer

- alsamixer: suppress _XOPEN_SOURCE compile warning

alsaucm

- alsaucm: remove custom rules, alsactl is UCM aware now - alsactl: ucm - rename _once command to _boot command

amixer

- amixer: retype to double in convert_prange1() like in convert_prange() - amixer: improve the raw percentual volume rounding

In commit "ae9ddeb63443cc2c46e0f0b915466cca0f800372" the rint() was
changed to ceil(). Revert it back. The rint() rounding is more precise
for most cases.

Also, handle the special case where the percentual value is greather
then zero. Set the min + 1 value in this case.

At last, fix the return value in convert_prange() when range is zero.

tinycompress

Core

- Release v1.2.3

Header files

- sound: fix the snd_dec_alac structure

Update of header to latest version bought wrong update for struct
snd_dec_alac so fix it to correct version

- sound: update header to v0.2.0

Kernel has upgraded compress headers with support for WMA, ALAC and APE
and bumped version to 0.2.0, so update this header as well

alsa-ucm-conf

Configuration

- ucm2: fix more indentation issues - ucm2: DB845c: Add ucm for DB845c board

DB845c board by default has two WSA881x speakers and HDMI
audio connections.

- ucm2: codecs: wsa881x: add codec sequences

Add default, enable/disable codec sequence for wsa881x codec

- ucm2: codecs: wcd934x: Add Codec sequences.

Add WCD934x codec sequences to be used by other platforms like DB845c
and Lenovo YOGA C630

- chtmax98090: add generic chtmax98090.conf and move Quawks init to the generic HiFi.conf - ucm2: chtmax98090: add generic HiFi.conf and SOF support

Tested on Cyan Chromebook with both SOF and SST drivers.

- ucm2: enable possible SOF support in profile for Chromebook Asus C300 - ucm2: Add profile for Chromebook Asus C300

ASUS Chromebook C300 alias Google QUAWKS is an Intel Baytrail platform
with max98090 codec.  This patch adds the basic UCM snippet for the
max98090 codec and HiFi.conf for this model.

Note that MIC2 is used for the headset mic.  If another model with
this codec uses a different ADC port, we'd need to create another
profile snippet and rename the device.

BugLink: https://apibugzilla.suse.com/show_bug.cgi?id=1171492

- ucm2: PAZ - move whole initialization to BootSequence

We need to remove the custom UCM rules from udev (alsa-utils).
The 'alsactl init' is UCM aware and sufficient to initialize
the soundcard now.

- SOF: bytcht selections

Use the SOF driver name to load a config, using a File inclusion based
on the legacy card name.

Suggested-by: Jaroslav Kysela <perex@perex.cz>

- sof-bytcht-rt5650: reuse legacy settings

Just test if controls for the legacy driver are available

- sof-bytcht-rt5645: reuse legacy settings

Just test if controls for the legacy driver are available

- sof-bytcht-nau8824: reuse legacy settings

Just test if controls for the legacy driver are available

- sof-bytcht-rt5672: reuse legacy settings

Just test if controls for the legacy driver are available

- sof-bytcht-es8316: reuse legacy settings

Just test if controls for the legacy driver are available

- sof-bytcht-cx2072x: reuse legacy settings

Just test if controls for the legacy driver are available

- sof-bytcht-rt5651: reuse legacy settings

Just test if controls for the legacy driver are available.

- sof-bytcht-rt5640: reuse legacy settings

Just test if controls for the legacy driver are available

- ucm2: update README.md - chtrt5650: add Syntax 2 - ucm2: add initial ucm.conf for the latest alsa-lib - ucm: fix wrong If in sequence in HiFi-dual.conf - bytcr-rt5651: fix the cfg-mic:in1 / cfg-mic:in12 match error - ucm2: fix chtrt5650 configuration (ucm-validator) - Add initial support for Realtek ALC1220 TRX40 motherboards

Tested with TRX40 Designare but should work on most TRX40 motherboards
Tested with pulseaudio 36a4923f9bd05d4c5e2e8b1765f18edf452b9251
 with fix for 8 channel mixer element applied

Tested with kernel 5.7.0-rc3

The following are the notes of the testing and implementation

* Back speaker works in 5.1 mode, becasue side channel
  shares jack with line-in and by default line-in is configured.
  Once jack retasking will work, it will work automatically
  Same for front mic that can be retasked to line-in

* SPDIF is not tested physically yet. The SPDIF mute mixer control is recognised by
  pulseaudio correctly so profile is correct.

* When all capture inputs are disconnected, pulseaudio thinks that the UCM2 profile
  is invalid and doesn't use it by default. It can be forced to use it by selecting
  it in the pavucontrol. Or you can for now comment out one of 'JackControl' statements,
  to make it think that one of the jacks is always plugged in.

- ucm2: fix indentation (use tabs) - ucm2: remove empty enable/disable sequence sections - sof-hda-dsp: change Headphones2 to Mic2 - chtrt5645: Remove bogus JackHWMute settings

There is no reason why the internal microphone or speakers cannot
be used when a headset is plugged in.

The jack does not physically disconnect these, so the JackHWMute settings
are wrong, remove them.

- chtrt5645: Add MEDION-E1239TMD60568-0.1-Wingman.conf symlink to chtrt5645-dmic2.conf

The Medion Akoya E1239T 2-in-1 uses a digital mic connected to the
dmic2 pin, rather then the default analog mic on in2.

Add a long name symlink to chtrt5645-dmic2.conf for this, so that
the right config is used.

- chtrt5645: Add ASUSTeKCOMPUTERINC.-T100HAN-1.0 symlink to chtrt5645-dmic1.conf

We already have a ASUSTeKCOMPUTERINC.-T100HAN-1.0-T100HAN symlink to
chtrt5645-dmic1.conf, but since kernel commit 39870b0dec68 ("ASoC: DMI long
name - avoid to add board name if matches with product name"), the kernel
omits the (second) -T100HAN. So with newer kernels that no longer works.

Arguably this is a kernel regressions, but chances are we already have
some configs depending on the new behavior, so lets fix this on the
UCM2 side by adding a second symlink using the new long name.

- bytcr-rt5651: Fix dmic check in HiFi-Components.conf

The kernel sets cfg-mic:dmic not cfg-mic:dmic1 when a digital mic is
used. The wrong check for cfg-mic:dmic1 causes there to be no "Mic"
device at all, which causes the check for the ConflictingDevices section
of the HeadSet (mic) device to fail like e.g. so:

[hans@localhost ~]$ alsaucm -c bytcr-rt5651 set _verb HiFi set _enadev Speaker
ALSA lib parser.c:1138:(verb_dev_list_add) error: unable to find device 'Mic'
ALSA lib parser.c:1433:(parse_verb_file) error: device management error in verb 'HiFi'
ALSA lib main.c:962:(snd_use_case_mgr_open) error: failed to import bytcr-rt5651 use case configuration -2
alsaucm: error failed to open sound card bytcr-rt5651: No such file or directory

This commit fixes this.

- update README files

- UCM validator
- UCM paths for ucm2/

- hda-dsp: add basic ucm config

Basic UCM configuration for Intel Skylake SST with HDA DSP generic
machine driver enabling codec playback and capture on both HDA codec
and DMIC ports.

- sof-hda-dsp: Support systems without integrated graphics audio

On systems where integrated graphics audio is not present
or is disabled, the HDMI PCM nodes are disabled. Add rules to
detect these systems by checking presence of HDMI jack controls
with UCM2 rules.

- ucm2: treewide - JackHWMute fixes - sof-bdw-rt5677: initial port to UCM2

Tested on Pixel 2015/SAMUS Chromebook.

Known limitations:
Left/Right confusion (probably a firmware issue)
PulseAudio does not switch capture devices on headset plug

Description

- update README files

- UCM validator
- UCM paths for ucm2/

alsa-topology-conf

Configuration files

- topology: Add topology file for generic HDA DSP machine driver

Provide conf file with topology for generic HDA DSP machine
driver configuration. This topology is meant to be used with Intel
Skylake SST driver.