Detailed changes v1.1.9 v1.2.1: Difference between revisions

From AlsaProject
Jump to navigation Jump to search
m (1 revision)
No edit summary
Line 1: Line 1:


{| align="right"
| __TOC__
|}
=Detailed changelog between 1.1.9 and 1.2.1 releases=
=Changelog between 1.0.29 and 1.2.1 releases=
==alsa-lib==
===Core===
: - Release v1.2.1
: - conf: implement snd_config_add_before() and snd_config_add_after()
: - topology: remove configuration files (moved to alsa-topology-conf repository)
: - create separated libatopology library with the topology routines
: - ucm: remove configuration files (moved to alsa-ucm-conf repository)
: - conf: improve the include paths code
:  - various cleanups (more straight code and allocations)
:  - do not add the base config path /usr/share/alsa to the
:  explicit include list of directories
:  (it's not wanted for ucm configs)
: - Use __func__ instead of __FUNCTION__
:  They are equivalent, but __func__ is in C99. __FUNCTION__ exists only
:  for backwards compatibility with old gcc versions.
: - rawmidi: use snd_dlobj_cache_get2() in rawmidi open (coverity)
:  Use proper reference counting for the dynamic symbol.
: - ucm: Add UCM profile for CX2072X codec on Baytrail/Cherrytrail profiles
:  Adding a new Conexant CX2072X codec profile and reusing the existing
:  BYT/CHT platform snippets.
:  Currently tested only on ASUS E200HA laptop.
===Config API===
: - conf: implement snd_config_add_before() and snd_config_add_after()
: - ucm: change the If block parsing
:  - evaluate always If before the other blocks
: - ucm: add If condition block
:  The syntax is simple:
:  If./any-if-identificator/ {
:  Condition {
:  Type /type_here/
:  /optional defines/
:  }
:  True {
:  /block used when condition is evaluated as true/
:  }
:  False {
:  /block used when condition is evaluated as false/
:  }
:  }
:  The Type "ControlExists" is implemented:
:  Condition {
:  Type ControlExists
:  Device "hw:${CardId}"
:  Control "iface=CARD,name='Headphone Jack'"
:  }
===Control API===
: - control_shm: add missing socket close to the error path (coverity)
: - control_shm: remove duplicate code (coverity)
===Mixer API===
: - mixer: simple - add snd_mixer_selem_id_parse() from amixer
===PCM API===
: - pcm: the maximal rate is 768000Hz, fix the remain code
: - pcm: fix the period_size for direct plugins (dmix, dsnoop, dshare)
:  BugLink: https://github.com/alsa-project/alsa-lib/issues/8
: - pcm: Fix the wrong PCM object passed for locking/unlocking
:  Most of PCM API functions have snd_pcm_lock()/unlock() wraps for the
:  actual calls of ops, and some plugins try to unlock/relock internally
:  for the given PCM object.  This, unfortunately, causes a problem in
:  some configurations and leads to the unexpected behavior or deadlock.
:  The main problem is that we call snd_pcm_lock() with the given PCM
:  object, while calling the ops with pcm->op_arg or pcm->fast_op_arg as
:  the slave PCM object.  Meanwhile the plugin code assumes that the
:  passed PCM object is already locked, and calls snd_pcm_unlock().
:  This bug doesn't hit always because in most cases pcm->op_arg and
:  fast_op_arg are identical with pcm itself.  But in some configurations
:  they have different values, so the problem surfaces.
:  This patch is an attempt to resolve these inconsistencies.  It
:  replaces most of snd_pcm_lock()/unlock() calls with either pcm->op_arg
:  or pcm->fast_op_arg, depending on the call pattern, so that the plugin
:  code can safely run snd_pcm_unlock() to the given PCM object.
:  Fixes: 54931e5a5455 ("pcm: Add thread-safety to PCM API")
:  Reported-by: Ben Russell <thematrixeatsyou@gmail.com>
: - pcm: chmap: Fix memory leak at snd_pcm_set_chmap()
:  snd_pcm_set_chmap() leaks the memory returned from snd_pcm_get_chmap()
:  without releasing.  Add the missing free() call as well as a slight
:  code refactoring.
:  Reported-by: Conrad Jones
:  BugLink: https://github.com/alsa-project/alsa-lib/pull/11
:  Fixes: d20e24e5d161 ("chmap: Always succeed setting the map to what it already is")
: - pcm: dshare: allow missing bindings
:  allow opening the device and start the audio clock without blocking
:  any channel
:  this is required if the audio clock has to be available all the time,
:  even when application is not streaming audio data
: - pcm: return -ENOSYS when ops or fast_ops callback is NULL
:  function is allowed to continue until it checks for error variable, as to
:  not conflict with original implementation flow
:  for simple functions involving only one line, return error immediately in
:  case callback is NULL
: - pcm_file: improve error checking in write_wav_header function
:  previously errno would be returned even for cases where it may have
:  not been populated, for example one of the write functions failing,
:  or writing only partial buffer,
:  now progress through write operations separately and report errno when
:  appropriate
:  Reviewed-by: Timo Wischer <twischer@de.adit-jv.com>
: - pcm_file: in case of failed write clear file buffer variables
:  previously, in case of failed write to output file, error is returned
:  from snd_pcm_writei/read APIs, user could run pcm_drain as fallback and
:  encounter an assert, since drain would try to write remaining file
:  buffer to a file
:  if failed to write to output file in first place, it makes sense to clear
:  current internal pmc_file file buffer variables
:  Reviewed-by: Timo Wischer <twischer@de.adit-jv.com>
: - pcm_file: use EIO instead of EPIPE when failing to write output file
:  EPIPE is defined as XRUN which is not entirely correct in this condition
:  failing to write to a file in pcm_file plugin can not be simply recovered
:  by a retry as user of the api might be led to believe when receiving EPIPE
:  use EIO instead to indicate a different kid of error that may not be
:  recoverable by retry
:  Reviewed-by: Timo Wischer <twischer@de.adit-jv.com>
: - pcm_file: return errno in case of a failed write operation
:  allows correct error code propagation for snd_pcm_file_write_bytes caller
: - pcm_file: remove double line
:  snd_pcm_file_add_frames called two times by mistake, introduced in
:  2a800c0c4f259043c9217a4aa6a57afaf9f77477
: - pcm_file: report write output file error to api user
:  when writing to output file fails, api user is notified and can handle
:  recovery
:  Reviewed-by: Timo Wischer <twischer@de.adit-jv.com>
: - pcm_file: do not disrupt playback on output file write fail
:  previously playback could be interrupted by snd_pcm_file_add_frames:
:  assert(file->wbuf_used_bytes < file->wbuf_size_bytes)
:  in case snd_pcm_file_write_bytes fails to write full amount of bytes
:  to file, variable wbuf_used_bytes would not be fully decremented by
:  requested amount of bytes function was called with
:  for the assert to trigger, multiple write fails need to happen, so
:  that wbuf_used_bytes overflows wbuf_size_bytes,
:  this patch will allow application to report error code to api user
:  who might have an idea how to recover, before assert is triggered,
:  also reporting error along with the print out message might give user
:  a better idea of what is going on, where previously reason for
:  mentioned assert was not immediately clear
:  Reviewed-by: Timo Wischer <twischer@de.adit-jv.com>
: - pcm: rate: Avoid pointer arithmetic on `void *`
:  The pointer operand to the binary `+` operator must be to a complete
:  object type.
: - pcm: direct: Remove unused empty struct
: - pcm: Make sure parameter qualifiers match between declaration and definition
: - pcm: hw: Don't return in a void function
:  A return statement with an expression in a function returning void is
:  a constraint violation.
: - Use __func__ instead of __FUNCTION__
:  They are equivalent, but __func__ is in C99. __FUNCTION__ exists only
:  for backwards compatibility with old gcc versions.
: - pcm_file: another locking fix (coverity)
: - pcm_file: coverity fixes (including double locking)
: - pcm_hw: close file descriptor in the error path in snd_pcm_hw_open() (coverity)
: - pcm_file: call pclose() correctly for popen() (coverity)
: - pcm: fix memory leak in _snd_pcm_parse_config_chmaps() (coverity)
: - pcm: file: add infile read support for mmap mode
:  mmap_begin callback is used to copy data from input file to mmaped
:  buffer
:  guard for corner use of api (multiple mmap_begin calls by user) is
:  introduced to check if next continuous buffer was already overwritten
:  buffer is overwritten with input file data only in case of stream capture
:  Reviewed-by: Timo Wischer <twischer@de.adit-jv.com>
: - pcm: add mmap_begin callback to snd_pcm_fast_ops_t api
:  main motivation for adding the callback is to use it to enable operation
:  on mmaped buffer before user access for pcm_file plugin
:  support for MMAP read access with masking by data from input file is not
:  implemented for pcm_file plugin, by adding this callback implementing
:  such feature can be done by rewriting next continuous portion of buffer
:  on each mmap_begin call
:  plugins like softvol use pcm_plugin interface and overwrite the buffer by
:  looping around it in avail_update callback, this patch hopes to simplify
:  the task by adding new api callback, removing the need for rewriting
:  pcm_file (to use pcm_plugin callbacks) and careful checking when looping
:  around whole mmaped buffer
:  Reviewed-by: Timo Wischer <twischer@de.adit-jv.com>
: - pcm: file: add missing unlock on early return
: - pcm: file: use snd_pcm_file_areas_read_infile for readi
:  use previously introduced helper function, this commit unifies behavior
:  of readi and readn
:  corner case behavior of readi is changed by this commit, previously,
:  in case 0 bytes were red from file (EOF), frames = 0 was returned,
:  signaling api user as if no data was red from slave, after the patch,
:  amount of frames red from slave with data red from slave stored in buffer
:  is returned when EOF is reached
:  Reviewed-by: Timo Wischer <twischer@de.adit-jv.com>
: - pcm: file: add support for infile reading in non interleaved mode
:  add helper function to copy input file data to buffer mapped by areas,
:  in case of an error, do not fill the areas, allowing device read buffer
:  to be provided to api caller
:  previously unused rbuf variable is reused for this purpose
:  Reviewed-by: Timo Wischer <twischer@de.adit-jv.com>
: - pcm: dsnoop: Added "hw_ptr_alignment" option in configuration for slave pointer alignment
:  This change adapt the fix commit 6b058fda9dce
:  ("pcm: dmix: Add option to allow alignment of slave pointers")
:  for dsnoop plugin
:  Issue is that snd_pcm_wait() goes back to waiting because the hw_ptr
:  is not period aligned. Therefore snd_pcm_wait() will block for a longer
:  time as required.
:  With these rcar driver changes the exact position of the dma is returned.
:  During snd_pcm_start they read hw_ptr as reference, and this hw_ptr
:  is now not period aligned, and is a little ahead over the period while it
:  is read. Therefore when the avail is calculated during snd_pcm_wait(),
:  it is missing the avail_min by a few frames.
:  An additional option hw_ptr_alignment is provided to dsnoop configuration,
:  to allow the user to configure the slave application and hw pointer
:  alignment at startup
: - pcm: dshare: Added "hw_ptr_alignment" option in configuration for alignment of slave pointers
:  This change adapt the fix commit 6b058fda9dce
:  ("pcm: dmix: Add option to allow alignment of slave pointers")
:  for dshare plugin
:  Issue is that snd_pcm_wait() goes back to waiting because the hw_ptr
:  is not period aligned. Therefore snd_pcm_wait() will block for a longer
:  time as required.
:  With these rcar driver changes the exact position of the dma is returned.
:  During snd_pcm_start they read hw_ptr as reference, and this hw_ptr
:  is now not period aligned, and is a little ahead over the period while it
:  is read. Therefore when the avail is calculated during snd_pcm_wait(),
:  it is missing the avail_min by a few frames.
:  An additional option hw_ptr_alignment is provided to dshare configuration,
:  to allow the user to configure the slave application and hw pointer
:  alignment at startup
: - pcm: direct: Add generic hw_ptr_alignment function for dmix, dshare and dsnoop
:  Move the code snd_pcm_direct_reset_slave_ptr() from pcm_dmix.c
:  to pcm_direct.c and its header so that the helper function can be
:  re-used by other direct-pcm plugins.
:  There is no change in the behavior or the functionality.
===PCM Plugin API===
: - pcm: the maximal rate is 768000Hz, fix the remain code
===RawMidi API===
: - rawmidi_hw: add sanity check for the invalid stream arguments (coverity)
: - rawmidi: use snd_dlobj_cache_get2() in rawmidi open (coverity)
:  Use proper reference counting for the dynamic symbol.
===Topology API===
: - create separated libatopology library with the topology routines
: - topology: Fix variable overflow in split_format
:  The 1 which was 32-bit long, when left-shifted by more than 31 caused
:  an overflow, which resulted in some of the formats being not supported.
: - topology: add support to parse private data for pcm
:  We have private data section in struct snd_soc_tplg_pcm, but alsatplg
:  doesn't support handling it yet, here add handling in tplg_parse_pcm()
:  to enable it.
: - topology: next round of coverity fixes
: - topology: various coverity fixes
===Use Case Manager API===
: - ucm: add possibility to keep order of childs for If blocks
:  Because of the nature of the structured parser, it is not guaranteed
:  that the order of the parsed tree is equal to the lines in the source.
:  Add possibility to insert the If results before or after the selected
:  identifier like:
:  SectionDevice."Speaker" {
:  ...
:  }
:  If.1 {
:  Condition { ... }
:  Before.SectionDevice "Speaker"
:  True { ... }
:  }
:  If.2 {
:  Condition { ... }
:  After.SectionDevice "Speaker"
:  True { ... }
:  }
:  If the "After" or "Before" identifiers are not found, the result is added
:  after the last entry in the block.
: - ucm: change the If block parsing
:  - evaluate always If before the other blocks
: - ucm: docs: Add MinBufferLevel value
:  Allows ucm to override minimum buffer level for platforms that
:  incorrectly report their buffer level.
: - ucm: docs: Add EDID File value
:  Add a sys path to the EDID file for the corresponding HDMI device so
:  userspace can use if needed
: - use-case header file: add more references to correct ASCII ID parsers for CTL/mixer IDs
: - ucm: add snd_use_case_parse_selem_id()
:  and add strict ucm_id checks to snd_use_case_parse_ctl_elem_id()
: - ucm: add If.Condition.RegexMatch
:  If.1 {
:  Condition {
:  Type RegexMatch
:  String "something to match"
:  Regex ".*(thing)"
:  }
:  ...
:  }
: - ucm: add ${CardComponents} substitution to the value string processing
: - ucm: evaluate nested If blocks also in True/False blocks
: - ucm: add If.Condition.String to match strings and substrings
:  Case insensitive string match:
:  If.1 {
:  Condition {
:  Type String
:  String1 "aa"
:  String2 "bb"
:  }
:  True {
:  ...
:  }
:  }
:  Substring is present (case sensitive):
:  If.1 {
:  Condition {
:  Type String
:  Haystack "White Horse"
:  Needle "Horse"
:  }
:  True {
:  ...
:  }
:  }
: - ucm: add snd_use_case_parse_ctl_elem_id()
: - ucm: add PlaybackCTL and CaptureCTL default values when they are not set
: - ucm: small cosmetic uc_error change in execute_sequence()
: - ucm: add If condition block
:  The syntax is simple:
:  If./any-if-identificator/ {
:  Condition {
:  Type /type_here/
:  /optional defines/
:  }
:  True {
:  /block used when condition is evaluated as true/
:  }
:  False {
:  /block used when condition is evaluated as false/
:  }
:  }
:  The Type "ControlExists" is implemented:
:  Condition {
:  Type ControlExists
:  Device "hw:${CardId}"
:  Control "iface=CARD,name='Headphone Jack'"
:  }
: - ucm: do not cache all control devices in get_card_long_name()
: - ucm: parser - use less memory for integer/real values in parse_value()
: - ucm: save the whole ctl info to the ctl_list structure
: - ucm: add the run-time variable substitution
:  Those two variables are supported:
:  ${ConfName}      - configuration file name
:  ${CardId}        - card identification string (like PCH)
:  ${CardName}      - card name (driver)
:  ${CardLongName}  - card long name (driver)
:  ${env:ENV_NAME}  - returns the environment variable ENV_NAME
: - ucm: fix memory leaks for cdev, bin-file and tlv elements
: - ucm: do not report failure when long name configuration does not exist
: - ucm: add support for multiple control devices, more aggresive caching
: - ucm: extend snd_use_case_mgr_open() to address the sound card directly
:  Some clients like pulseaudio wants to access the multiple instances
:  of sound cards. This patch adds prefixes like "hw:" to the card_name
:  argument to handle this. The card index (value) or card identification
:  (string) can be used for this prefix.
:  Also the prefix "strict:" was added to avoid the driver name and
:  driver long name matching. It might be useable for use case
:  configurations which are not bound to the one sound card.
: - ucm: switch to ucm2 directory and v2 format, keep backward compatibility
: - conf: improve the include paths code
:  - various cleanups (more straight code and allocations)
:  - do not add the base config path /usr/share/alsa to the
:  explicit include list of directories
:  (it's not wanted for ucm configs)
: - ucm: parse_verb_file() - remove folder_name variable and extra logic
:  The member uc_mgr->conf_file_name already contains the used directory
:  name.
: - ucm: fix uc_mgr_scan_master_configs() - skip correctly component directories
: - ucm: cosmetic fix in get_card_long_name()
: - ucm: another coverity fix in uc_mgr_config_load()
: - ucm: coverity fixes
===/Makefile.am===
: - create separated libatopology library with the topology routines
===/src/Makefile.am===
: - create separated libatopology library with the topology routines
===ALSA Server===
: - Use __func__ instead of __FUNCTION__
:  They are equivalent, but __func__ is in C99. __FUNCTION__ exists only
:  for backwards compatibility with old gcc versions.
: - aserver: fix resource leak coverity
===Configuration===
: - conf: implement snd_config_add_before() and snd_config_add_after()
: - topology: remove configuration files (moved to alsa-topology-conf repository)
: - ucm: remove configuration files (moved to alsa-ucm-conf repository)
: - conf: improve the include paths code
:  - various cleanups (more straight code and allocations)
:  - do not add the base config path /usr/share/alsa to the
:  explicit include list of directories
:  (it's not wanted for ucm configs)
: - conf: List cases in range explicitly
:  Case ranges are a GNU extension, and provide only a slight readability
:  improvement.
: - config: parse_string() fix the dynamic buffer allocation failure code (coverity)
: - src/conf.c: add missing va_end() call (coverity)
: - ucm: Add UCM profile for CX2072X codec on Baytrail/Cherrytrail profiles
:  Adding a new Conexant CX2072X codec profile and reusing the existing
:  BYT/CHT platform snippets.
:  Currently tested only on ASUS E200HA laptop.
===Dynamic Loader helpers===
: - rawmidi: use snd_dlobj_cache_get2() in rawmidi open (coverity)
:  Use proper reference counting for the dynamic symbol.
===Utils===
: - create separated libatopology library with the topology routines
==alsa-utils==
===Core===
: - Release v1.2.1
===Audio Transfer utility===
: - axfer: handle -ETIMEDOUT before non-block I/O operation
:  When running for IRQ-based scheduling model, transmission backend is
:  expected to queue PCM event in different context from the main thread.
:  When queueing no events during time equivalent to one period of PCM
:  buffer, the backend has problems.
:  This commit outputs report it for non-blocking operation for IRQ-based
:  scheduling model. The timeout is equivalent to all frames in buffer,
:  instead of period for safe.
: - axfer: code refactoring for a helper function to wait for avail buffer space
:  This commit applies code refactoring for waiting PCM event queued
:  per period of PCM buffer in copying operation for IRQ-based scheduling
:  model.
: - axfer: handle -ETIMEDOUT before handle mmap I/O operation
:  When running for IRQ-based scheduling model, transmission backend is
:  expected to queue PCM event in different context from the main thread.
:  When queueing no events during time equivalent to one period of PCM
:  buffer, the backend has problems.
:  This commit outputs report it for mmap operation for IRQ-based
:  scheduling model. The timeout is equivalent to all frames in buffer,
:  instead of period for safe.
: - axfer: return ETIMEDOUT when no event occurs after waiter expiration
:  Although the waiter abstraction handles timeout as success, it should
:  report for callers to know timeout.
:  This commit takes the waiter to return -ETIMEDOUT when timeout expires.
: - axfer: fix to return error code when a call of select(2) fails
:  A call of select(2) returns negative code and report errors via errno
:  local variable, howver current waiter implementation for select(2)
:  returns the negative code instead of errno.
:  This commit fixes it.
: - axfer: return the number of file descriptors for I/O events from select(2) waiter
:  A call of select(2) returns error code at failure, the number of file
:  descriptors available I/O at success. Current implementation of
:  waiter abstraction for select(2) returns 0 at success and callers
:  can't get the number.
:  This commit fixes it.
: - axfer: test: fix invalid comparison of 64 bit storage in ILP32 data type
:  In system V ABIs with ILP32 data model, bit shift for '1ul' can brings
:  undefined behaviour when the calculation result is over 32 bit width.
:  This commit fixes the bug.
:  Reported-by: Rolf Eike Beer <eike@sf-mail.de>
:  Reference: https://bugs.gentoo.org/681652
:  Reference: https://github.com/alsa-project/alsa-utils/issues/23
: - axfer: mapper: fix parameter check for demuxer
:  Each container should be configured to store one saple per frame in
:  demuxer case. This commit fixes the bug.
:  Fixes: 25c8e3bebb53 ('axfer: add support for a mapper for multiple target')
: - axfer: remove unused variable warnings
===alsamixer===
: - alsamixer: Remove exp10 usage
:  exp10 is a GNU extension and not available everywhere (eg. uClibc-ng).
===alsatplg (topology)===
: - alsaucm, topology: LDADD cleanups and add support for libatopology
===alsaucm===
: - alsaucm: fix the implicit card open
: - alsaucm, topology: LDADD cleanups and add support for libatopology
: - alsaucm: do the implicit ucm open only when the command requires it
: - alsaucm: call snd_config_update_free_global() to make valgrind more happy
===amixer===
: - amixer: do not double LF for container type
===aplay/arecord===
: - aplay: fix memory leak when setup_chmap() fail
:  setup_chmap() will return with error number if hw_map calloc fail or
:  channels doesn't match with hw_params, but memory free was ignored when
:  error occurs.
:  Reviewed-by: Takashi Sakamoto o-takashi@sakamocchi.jp
==alsa-plugins==
===Core===
: - Release v1.2.1
===PulseAudio -> ALSA plugin===
: - pulse: Add DEVICE parameter
:  Basically this patch adds the DEVICE parameter to pulse PCM and
:  control plugins, so that users may pass the specific pulse device
:  for multiple opens.  Along with the addition of the DEVICE parameter
:  in the config definition, the plugin code is slightly modified for
:  allowing to receive the empty strings that are treated as the
:  "default" mode (= NULL).
=Detailed changelog between 0.0.0 and 1.2.1 releases=
=Changelog between 1.0.29 and 1.2.1 releases=
==alsa-ucm-conf==
===Old configuration===
: - sof-hda-dsp: add MixerId values, change order for BassSpeaker
:  - do not set the speaker volume for the BassSpeaker
:  - do not set ConflictingDevice for HeadphoneMic
:  (one way should be enough in DigitalMic)
: - add ucm/README.md and ucm2/README.md
: - VEYRON-I2S: adapt to ucm2
: - skylake-rt286: adapt to ucm2
: - SDP4430: adapt to ucm2
: - PAZ00: adapt to ucm2
: - PandaBoardES: adapt to ucm2
: - PandaBoard: adapt to ucm2
: - HDAudio-Lenovo-DualCodecs: adapt to ucm2
: - HDAudio-Gigabyte-ALC1220DualCodecs: adapt to ucm2
: - GoogleNyan: adapt to ucm2
: - Dell-WD15-Dock: adapt to ucm2
: - DB820c: adapt to ucm2
: - DB410c: adapt to ucm2
: - DAISY-I2S: adapt to ucm2
: - broxton-rt298: adapt to ucm2
: - broadwell-rt286: adapt to ucm2
: - sof-hda-dsp: adapt to latest alsa-lib
:  - move to ucm2
:  - add 'Syntax 2' to the main configuration files
:  - use condition for 'Headphone Jack' / 'Headphone Mic Jack' selection
:  - remove cdev (not required)
:  - use ${CardId} where appropriate
:  - merge config for Lenovo Carbon X1 7th gen to main HiFi.conf
: - sof-hda-dsp: the JackHWMute definition should be in the Headphone device
: - sof-hda-dsp: fix the volume/switch values in HiFi
: - sof-hda-dsp: add ValueDefaults sections with correct CTL devices
: - sof-hda-dsp: do not touch the analog part for HDMI/DP
: - sof-hda-dsp: use more user friendly names for Dmic
:  Also correct the names in ConflictingDevice sections
:  (must be device name - not comment text).
: - sof-hda-dsp: Fix the Hdmi config for the Lenovo Carbon X1 (7th gen)
: - sof-hda-dsp: improve the Hdmi use case comment
: - sof-hda-dsp: fix the capture device names (use sofhdadsp)
: - SOF/HDA/SKL UCM: rename from sof-skl_hda_card to sof-hda-dsp
:  Follow the kernel change and rename everything to more clear
:  sof-hda-dsp.
: - sof-skl_hda: change to use common HDMI codec driver
:  Modify UCM sequences to use user-space interface of the common
:  HDMI codec driver. Use of hdac-hdmi driver is no longer supported
:  by this UCM file.
:  To use this UCM file, kernel must be compiled with
:  SND_SOC_SOF_HDA_COMMON_HDMI_CODEC
: - sof-skl_hda: move hdmi as separate use case
:  Move hdmi definitions as separate use case and conf file. This will
:  enable Pulseaudio to create separate profile for hdmi and make routing
:  much more fluent than with single profile.
: - sof-skl_hda: add PlaybackVolume and CaptureVolume definitions
:  PlaybackVolume and CaptureVolume are not defined currently and these are
:  needed in the future for example with Pulseaudio to enable hardware
:  volume control.
: - sof-skl_hda: add device definition to speaker disable sequence
:  For example Pulseaudio is not able to run the disable sequence
:  if the device is not defined. So add the definition.
: - sof-skl_hda: remove volume setting in enable/disable sequences
:  If the volume setting is defined in enable sequence you will
:  always get that exact volume when switching outputs in some
:  user space software like Pulseaudio. Pulseaudio will itself
:  keep track of the volume previously set.
: - skylake-rt298: cleanups, add .conf suffixes
: - broxton-rt298: cleanups, add .conf suffixes
: - kblrt5660: cleanups, add .conf suffixes
: - broadwell-rt286: cleanups, add .conf suffixes
: - DB410c: cleanups, add .conf suffixes
: - DB820c: cleanups, add .conf suffixes
: - SDP4430: cleanups, add .conf suffixes, upper/lower case
: - PandaBoardES: cleanups, add .conf suffixes, upper/lower case
: - PandaBoard: cleanups, add .conf suffixes, upper/lower case
: - add configuration for Lenovo ThinkPad Carbon X1 7th gen (Bass Speaker)
: - remove 'Bass Speaker' from the generic sof_skl_hda-card config
: - Add initial support for generic SOF Skylake driver (DMIC)
:  Based on: https://github.com/RanderWang/intel-UCM/tree/hdmi/sof-skl_hda_card
:  Cleanups, remove commented or empty configuration.
: - conf/ucm: cht-bsw-rt5672: Add board specific profile for Lenovo Thinkpad 8 tablet
:  The Lenovo Thinkpad 8 tablet has stereo speakers and its internal DMIC
:  on DMIC1, at a device specific profile for this.
: - conf/ucm: Add UCM profile for cht-bsw-rt5672 boards
:  Add an UCM profile for Intel boards with a RT5672 codec.
:  Re-use the existing platform enable and disable sequences for BYT/CHT SST
:  support and add a codecs/rt5672 dir with codec specific enable / disable
:  sequences for the various inputs and outputs.
:  This is partly based on earlier work done here:
:  https://github.com/plbossart/UCM/tree/master/cht-bsw-rt5672
: - ucm: Add UCM profile for CX2072X codec on Baytrail/Cherrytrail profiles
:  Adding a new Conexant CX2072X codec profile and reusing the existing
:  BYT/CHT platform snippets.
:  Currently tested only on ASUS E200HA laptop.
: - ucm: bytcr/PlatformEnableSeq.conf update some comments
:  Commit f91cc3c7d6b7 ("Update chtrt5645 ucm variants to use
:  bytcr/PlatformEnableSeq.conf component") updated the
:  following 2 comments:
:  # codec0_out settings (used if SSP2 is connected to aif1)
:  # modem_out settings (used if SSP0 is connected to aif2)
:  Specifically it added the " to aif1" resp. " to aif2" part of the comments.
:  This is not correct, AIF1 / AIF2 are something which is present on
:  Realtek codecs only, and either one can be used indepedent of
:  SSP0 or SSP2 being used (the comments in the chtrt5645 UCM profile
:  before this change were wrong / outdated).
:  Besides there not being any relationship between SSP0 or SSP2 being
:  used, bytcr/PlatformEnableSeq.conf is also used with other codecs,
:  e.g. the ESS8316 codec where this is not applicable at all.
:  Therefor this commit removes the " to aif?" part of the comments again
:  to avoid confusing people reading this in the future.
: - ucm: Add ucm files for DB820c board
:  DB820c board is based of MSM8996 Qualcomm SoC, which has support for both
:  Digital and Analog audio. Digital audio is over HDMI and analog is over
:  WCD9335 codec via SLIMbus.
:  Board itself has HDMI port, a 3.5mm audio Jack and an Audio expansion
:  connector.
:  This patch adds support for HDMI port and 3.5mm jack.
: - Revert "conf/ucm: Add a UCM profile for Dell WD19 Dock USB-audio"
:  This reverts commit 914327e00b7626b1acd176d498f35f7b4e213dd3 .
:  The USB driver defines identical profile as for WD15.
: - conf/ucm: Add a UCM profile for Dell WD19 Dock USB-audio
:  USB-audio device on Dell WD19 docking station provides two individual
:  output PCM streams, one for headphone Jack and another for speaker out
:  Jack. A UCM profile gives the proper roles for these.
: - conf/ucm: bytcht-es8316: Add long-name UCM profiles
:  After recent kernel work, the kernel now sets a long-name for bytcht-es8316
:  boards which indicates if a single (mono) speaker or stereo speakers are
:  used and if in1 or in2 is used for the internal mic (the headset mic will
:  be on the other input).
:  This commit adds UCM profiles for bytcht-es8316 boards using these new
:  long-names, based on the generic bytcht-es8316 profile.
: - conf/ucm: Add UCM profile for bytcht-es8316 boards
:  Add an UCM profile for Bay Trail and Cherry Trail boards with an
:  ES8316 codec.
:  Re-use the existing platform enable and disable sequences for BYT/CHT SST
:  support and add a codecs/es8316 dir with codec specific enable / disable
:  sequences for the various inputs and outputs.
: - Create device component for rt5645 Internal Analog Mic UCM
:  Since the Internal Analog Microphone device configuration is
:  identical for the rt5645 and rt5645 mono speaker UCMs, move
:  the entire definition to a component.
: - Factor out rt5645 variants Headset+Digital Mic UCM shared {en,dis}able sequences
: - Factor out rt5645 variants Speaker+Headphones shared UCM enable sequences
:  Move common enable sequences for rt5645 variants and rt5650
:  UCM configurations into a shared component. The corresponding
:  disable sequences are only two lines each and do not seem worth
:  creating components for.
: - Create shared {En,Dis}ableSeq.conf components for rt5645 variants
:  Factor out the common enable and disable sequences used
:  in rt5645 variants, including the rt5650. Move the sequences
:  into a new component directory codecs/rt5645/ along with
:  a Makefile.
:  Some lines like
:  cset "name='Stereo1 ADC1 Mux' 1"
:  and
:  cset "name='I2S2 Func Switch' on"
:  are not set set in the chtrt5650 UCM sequences and thus are not present
:  in the new component, in order to maximize reuse.
: - Update chtrt5645 ucm variants to use bytcr/PlatformEnableSeq.conf component
:  The Lenovo Ideapad Miix 320, Asus T100HA, and chtrt5645 mono variant
:  UCM configurations have not been updated to make use of the shared
:  bytcr/PlatfromEnableSeq.conf sequence. This commit deletes those
:  command sequences and loads the shared component directly.
: - conf/ucm: bytcr-rt5651: Document mono speaker wiring
:  During my recent work on the bytcht-es8316 UCM profile I realized that the
:  bytcr-rt5651 devices with a single speaker use a differential setup just
:  like the es8316 does. The tell-tale here is the speaker going quiet when
:  playing the exact same sound on both channels when things are configured
:  for stereo speakers.
:  I've run some tests and the rt5651 does have a special mono balanced out
:  mode for its line-out but using this results in the same sound (and the
:  same loudness / volume of the sound) as our current solution, so adding
:  support for this to the kernel buys us nothing.
:  This commit makes no changes, it just documents my findings in a big
:  comment for future reference.
: - conf/ucm: bytcr-rt5651: Add bytcr-rt5651-stereo-spk-dmic-mic config
:  Add a config for boards which use a digital mic as internal mic,
:  combined with having the headset mic on in2.
:  An example of such a board is the Point of View TAB-P1006W-232 (v1.0) tablet.
: - conf/ucm: bytcr-rt5651: Add digital mic support
:  Add a new ucm/codecs/rt5651/DigitalMic.conf snippet for digital mic support
:  and include this in the default non board-specific bytcr-rt5651.conf.
: - conf/ucm: bytcr-rt5651: Add support for a headset-mic on IN2
:  The first design with the headset-mic on IN2 rather then the
:  default / reference-design IN3 has shown up.
:  Add a new ucm/codecs/rt5651/IN2-HeadsetMic.conf snippet to deal with this
:  and include this in the default non board-specific bytcr-rt5651.conf.
: - conf/ucm: bytcr-rt5651: Enable Stereo? ADC MIXL ADC? switches when enabling inputs
:  Explicitly enable the right 'Stereo? ADC MIXL ADC?' when selecting an input,
:  rather then just enabling them all in ucm/codecs/rt5651/EnableSeq.conf .
:  This is a preparation patch for adding digital mic support.
: - conf/ucm: kblrt5660: Add ucm setting for Dell Edge IoT platform
:  The new generation of Dell Edge IoT platform is based on Intel
:  Kabylake platform, and the audio codec is ALC3277 which is 100%
:  compatible with RT5660 in I2S mode.
:  The audio design on this IoT platform is as below:
:  - Intel kabylake platform
:  - connect the codec ALC3277 via SSP0
:  - line-out and line-in with Micbias jacks
:  - line-out mute control and jack detection of line-out and line-in
:  - two HDMI ports with audio capability
: - conf/ucm: chtrt5650: Add UCM config for chtrt5650
:  Add a UCM configuration for the rt5650 codec. Tested on
:  a Samsung Chromebook 3. Adapted with minor modifications
:  from GitHub user evan-a-a's gist:
:  https://gist.github.com/evan-a-a/86b2a698708074530e2d0ee7c6498767
: - ucm: Set default include path
:  Many UCM profiles include the UCM profile components under ucm/*
:  subdirectories and thusly put <searchdir:ucm> at each place.  This is
:  rather cumbersome.
:  This patch makes the UCM parser to set the default include path, so
:  that each profile no longer needs to set searchdir.  All the
:  <searchdir:ucm> lines currently found in the profiles are removed
:  gracefully, too.
:  For the needed implementation, a new helper,
:  _snd_config_load_with_include() is introduced.  It's not exported,
:  only for the use inside alsa-lib.
: - conf: Move UCM profile snippets into components subdirectory
:  We have placed UCM profile snippets to be included by the main config
:  files also in the same directory, src/conf/ucm, it confuses alsaucm
:  program that scans over all subdirectories.  It thinks such a file is
:  also the main config file, and spews errors like:
:  % alsaucm
:  ALSA lib utils.c:67:(uc_mgr_config_load) could not open configuration file /usr/share/alsa/ucm/bytcr/bytcr.conf
:  ALSA lib parser.c:1427:(load_master_config) error: could not parse configuration for card bytcr
:  alsaucm: unable to obtain card list: No such file or directory
:  Actually we already defined the subdirectory for such components, and
:  they are skipped at parsing the main configs.  So we just need to move
:  the files there -- this is what's done here.
:  One more thing done here is to add a new component subdirectory,
:  platforms, for definitions bytcr/* that don't match with neither the
:  existing ones (codecs nor dsps).
:  Suggested-by: Hans de Goede <hdegoede@redhat.com>
:  Reviewed-by: Hans de Goede <hdegoede@redhat.com>
:  Tested-by: Hans de Goede <hdegoede@redhat.com>
: - conf/ucm/Dell-WD15-Dock: Fix incorrect device names
:  The device name string for Dell WD15 (and its variants) dock is set as
:  "WD15Dock", while the actual device name to be used is "Dock".
:  Bugzilla: https://bugzilla.suse.com/show_bug.cgi?id=1112292
:  Fixes: 8ebb40c96970 ("conf/ucm: Add a UCM profile for Dell WD15 Dock USB-audio")
: - conf/ucm: bytcr-rt5640: Improve human readable input/output names
:  The Comment field is displayed tot the end user in various UIs as such
:  names like MonoSpeaker and DigitalMics without any spaces are no good.
:  Also the names themselves as well as how they get displayed in the
:  typical UI (in separate input / output tabs) makes the adding of
:  playback and capture to the comment superfluous and this looks weird
:  in the UI, so drop it.
:  Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
: - conf/ucm: bytcr-rt5651: Add bytcr-rt5651-mono-spk-in2-mic-hp-swapped config
:  Add a longname profile for devices with a mono speaker, the Internal Mic
:  hooked up to IN2 and the left and right channels of their headphones
:  output swapped.
:  Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
: - conf/ucm: bytcr-rt5651: Add long-name UCM profiles
:  After recent kernel work, the kernel now sets a long-name for bytcr-rt5651
:  boards which indicates if a single (mono) speaker or stereo speakers are
:  used and if in1, in2, or in1 and 2 are used for the internal mic(s) (the
:  headset mic sofar is always on in3).
:  This commit adds UCM profiles for bytcr-rt5651 boards using these new
:  long-names, based on the generic bytcr-rt5651 profile.
:  Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
: - conf/ucm: bytcr-rt5651: Add mono speaker output profile
:  Many rt5651 devices only have a single speaker and even though there is
:  some external mixing done on the PCB, the quality of that mixing is quite
:  poor and various sounds come out garbled when relying on the on PCB mixing.
:  Using the codecs builtin mixer to mix left + right to the left output works
:  much better. This commits adds a new MonoSpeaker.conf output profile which
:  allows this.
:  Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
: - conf/ucm: bytcr-rt5651: Split into 1 .conf file per input / output
:  Split the bytcr-rt5651 config into 1 .conf file per input / output as
:  has already been done for the bytcr-rt5640 and the chtnau8824 profiles.
:  This allows easy creation of long-name profiles with the specific input /
:  output combinations found on a board without needing to copy and paste
:  things.
:  Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
: - conf/ucm: bytcr-rt5651: Add support for mic input on various pins
:  Note this commit replaces the pre-existing "Handset Microphone" and
:  "Main Microphone" options, these come from the first commit of the
:  bytcr-rt5651 UCM profile and were based on wrong assumptions about the
:  input mappings. None of the existing devices has the Hand/Headset mic
:  on IN1 as these options assumed.
:  The rt5651 is used in various configurations with the Internal Mic(s)
:  hooked up to IN1, IN2, or to IN1 and IN2 and the Headset Mic hooked up
:  to IN3.
:  Add support for all these to the generic bytcr-rt5651 profile and name
:  them accotding to their input + functions.
:  A follow up commit will add specialized longname configs which
:  will only expose the inputs actually used on the board with that
:  longname.
:  Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
: - conf/ucm: bytcr-rt5651: Fix ADC and Mic capture volumes
:  Fix ADC and Mic capture volumes, so that the microphone inputs actually
:  work.
:  Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
: - conf/ucm: bytcr-rt5651: Use generic SSP enable + disable sequence, support SSP0
:  Use the generic SSP enable sequence from bytcr/PlatformEnableSeq.conf,
:  for boards using SSP2 this is identical the code it replaces and this
:  adds support for boards using SSP0.
:  This fixes sound not working on Bay Trail CR tablets with a rt5651 codec.
:  This commit also calls the generic disable sequence on shutdown
:  (this is new).
:  Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
: - conf/ucm: bytcr-rt5651: Change Speaker/Headphone en/disable sequences to fix switching
:  pulseaudio will run the DisableSequence of the current playback device
:  before running the EnableSequence of the new playback device.
:  This causes the Platform Clock and BIAS to temporarily get turned off which
:  on the rt5651 breaks audio-streams which are playing when switching.
:  This commit moves the disabling to the EnableSequence of the other device
:  fixing this.
:  Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
: - conf/ucm: bytcr-rt5651: Start with all outputs and inputs disabled
:  Start with all switches disabled, so that e.g. the
:  LOUT L/R Playback Switches are not left enabled when starting with
:  headphones plugged in.
:  This fixes the platform clock being kept on by these in some cases.
:  While at also move the IN? Boost and IF1 ASRC Switch lines around
:  a bit to match the order from https://github.com/plbossart/UCM so
:  the profiles can be more easily compared.
:  Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
: - conf/ucm: bytcr-rt5651: Configure all volumes at 0dB
:  The volumes are taken from this commit:
:  https://github.com/plbossart/UCM/commit/753e2430cd0e6cafbf10c6b29b689dbd32ac5250
:  That commit also adds line-in support, so it has not been
:  taken in its entirety.
:  Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
: - conf/ucm: bytcr-rt5651: Do not use both DAC1 and HPVOL inputs for HP
:  The headphones can either be driven directly from DAC1, or through
:  the HP volume mixer chain to allow volume control, both can be enabled
:  at the same time, but this should not be done.
:  Mix only DAC1 to the headphones and not the HP volume path, there
:  are 2 reasons to choice the DAC1 path;
:  1) It is the power-on-reset default
:  2) We don't expose the volume control to e.g. pulseaudio anyways so it
:  is not useful
:  While at it also move the "HPO MIX DAC1" and "HPO MIX HPVOL" entries up a
:  bit so that they are no longer inbetween the "HPO L Playback Switch" and
:  "HPO R Playback Switch" entries.
:  Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
: - conf/ucm: bytcr-rt5645: Use the generic bytcr/PlatformEnableSeq.conf
:  Use the generic Intel SSP bytcr/PlatformEnableSeq.conf file, it is
:  identical to all the cset statements this commit removes.
:  Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
: - conf/ucm: VEYRON-I2S: Add internal speakers and mic, other fixes
:  Other fixes include output/input names (comments) for UIs (pavucontrol)
:  to display, and Playback/CapturePCM entries so pulseaudio initializes
:  correctly on this hardware.
: - conf/ucm: chtnau8824: Add Cube iWork8 Air and Pipo W2S specific profiles
:  The Cube iWork8 Air and Pipo W2S tablets both only have a single speaker.
:  Add long-name profiles for them which are identical to the default
:  chtnau8824 profile, except that they include the nau8824/MonoSpeaker.conf
:  snippet instead of the nau8824/Speaker.conf one.
: - conf/ucm: chtnau8824: Add UCM profile for chtnau8824 boards
:  Add UCM profile for chtnau8824 boards based on:
:  https://github.com/plbossart/UCM/blob/master/chtnau8824
:  Split into multiple files in the same way as this was done for the
:  bytcr-rt5640 support, re-using the existing ucm/PlatformEnableSeq.conf
:  and ucm/PlatformDisableSeq.conf files for the SST mixer settings.
: - conf/ucm: bytcr-rt5640: Add default DisableSequence
:  Add a disable sequence powering off the SST mixer elements, loosely
:  based on the default DisableSequence from:
:  https://github.com/plbossart/UCM/blob/master/chtnau8824/HiFi.conf
: - conf/ucm: bytcr-rt5640: Add long-name UCM profiles
:  With a recently merged kernel commit, the kernel now sets a long-name for
:  bytcr-rt5640 boards which indicates if a single (mono) speaker or stereo
:  speakers are used and wether dmic1, in1 or in3 is used for the internal
:  mic (the headset mic sofar is always in2).
:  This commit adds UCM profiles for bytcr-rt5640 boards using these new
:  long-names, based on the generic bytcr-rt5640 profile.
:  The added profiles have the unnecessary input / output options from the
:  generic profile removed leaving only 2 input and 2 output options, which
:  are automatically switched between by e.g. pulse based on jack-detect.
: - conf/ucm: bytcr-rt5640: Add generic bytcr-rt5640 UCM profile
:  This commit adds the generic UCM profile for bytcr-rt5640 boards from:
:  https://github.com/plbossart/UCM, plus the fixes from this pull-req:
:  https://github.com/plbossart/UCM/pull/31
:  The profile has been split up into separate per input / output files to
:  allow for creation of long-name profiles with the specific input / output
:  combinations found on a board without needing to copy and paste things.
:  Note this profile exports all inputs and both stereo/mono speaker setups
:  even though a typical device will not use all. Ideally a long-name based
:  device specific profile made up of the various parts should be used
:  instead.
: - conf/ucm: Add a UCM profile for Dell WD15 Dock USB-audio
:  USB-audio device on Dell WD15 docking station provides two individual
:  PCM streams, one for headphone and another for line out.  A UCM
:  profile gives the proper roles for these.
: - conf/ucm: chtrt5645: At config for the Lenovo Ideapad Miix 320
:  The Lenovo Ideapad Miix 320 uses a digital mic connected to the DMIC2 input
:  (unlike the Asus T100HA which has it connected to the DMIC1 input), add a
:  long-name config specific for the Miix 320, which is a copy of the standard
:  chtrt5645 config with the internal analog mic section replaced with one
:  for a digital mic connected to the DMIC2 input.
: - conf/ucm: chtrt5645: At config for the Asus T100HA
:  The Asus T100HA uses a digital mic rather then an analog one, add
:  long-name config specific for the T100HA, which is a copy of the standard
:  chtrt5645 config with the internal analog mic section replaced with one
:  for the digital mic found on the Asus T100HA.
: - conf/ucm: chtrt5645: Fix recording from internal analog microphone
:  The internal analog mic switch is called 'Int Analog Mic Switch'
:  (not 'Int Mic Switch') and is connected to BST2 not BST1.
:  Also change the analog mic volume levels so that we get better
:  audio / less noise.
: - conf/ucm: chtrt5645: Microphone recording fixes
:  Apply microphone recording changes from:
:  https://github.com/plbossart/UCM.git
:  [hdegoede@redhat.com: Drop non generic DMIC changes]
: - conf/ucm: chtrt5645: Cleanup and playback fixes
:  Apply cleanup and playback fixes changes from:
:  https://github.com/plbossart/UCM.git
:  [hdegoede@redhat.com: Modify commit msg and paths for merging into alsa-lib]
: - conf/ucm: increase the input volume for LineIn
:  Otherwise, the boost value is 0, and the sound captured from that
:  LineIn jack is too weak for users.
: - conf/ucm: Add chtrt5645-mono-speaker-analog-mic configuration
:  Add a configuration for Cherry Trail boards which use a rt5645 codec
:  connected to a mono speaker and with an analog mic on IN2N + IN2P.
:  The chtrt5645-mono-speaker-analog-mic/HiFi.conf for this is based on the
:  latest version from https://github.com/plbossart/UCM/tree/master/chtrt5645
:  with all the unused input options removed and some changes made to make
:  the analog mic work.
:  This commit also adds 2 ucm dirs with the longname of 2 boards known to use
:  this setup, which simply contain a symlink to the generic
:  chtrt5645-mono-speaker-analog-mic entry.
: - conf/ucm: Add Gigabyte mobo UCM profile with dual HD-audio codecs
:  Like the previous Lenovo laptops, some Gigabyte mobos have dual
:  HD-audio codecs and need to switch dynamically via UCM profile.
:  Reuse the same profile as Lenovo dual codecs, so far.
: - conf/ucm: Add dual HD-audio codecs config for Lenovo
:  Some recent Lenovo laptops have dual codecs and we need to switch them
:  accordingly.  The kernel side already contains a fix and gives the
:  unique longname string for identifying the board, and here we hook up
:  the corresponding UCM profile.
:  The profile was corrected and tested by Hui Wang on Lenovo p520.
:  Tested-by: Kailang <kailang@realtek.com>
:  Tested-by: Hui Wang <hui.wang@canonical.com>
: - conf/ucm: rt5651: Mute speakers on boot
:  The UCM configuration is enabling the speakers in the SectionDefaults.
:  This is a problem when booting with an headset already connected since
:  the audio output is routed at the same time both on speakers and
:  heaphones until the jack is disconnected and reconnected again.
:  Fix this disabling all the outputs in the default mixer configuration.
: - conf/ucm: rt5651: Add missing cdev
: - conf/ucm: rt5651: Fix HiFi file name
:  The conf HiFi file name is HiFi.conf, fix the name in the main
:  configuration file.
: - conf/ucm: rt5651: Add UCM config for bytcr-rt5651
:  Add a UCM configuration for the rt5651 codec on Intel's Cherry-Trail
:  platform. Adapted from [0].
:  [0] https://github.com/plbossart/UCM/tree/master/bytcr-rt5651
: - conf/ucm: DB410c-HiFi: add CIC selection
:  This patch adds CIC selection controls which have been added recently to
:  the kernel to select mic source.
:  Without this patch user has to manually select the control to record
:  from DMIC or AMIC.
: - conf/ucm: broxton: add broxton-rt298 conf files
:  This adds the UCM conf files for broxton enabling with rt298 codec on
:  I2S audio, HDMI and DMIC ports.
: - conf/ucm: skylake: add skylake-rt286 conf files
:  This add the UCM conf files for skylake enabling I2S audio, HDMI and DMIC
:  ports.
: - ucm: Add ucm files for DB410c board.
:  DB410c board has support for both Digital and Analog audio. Digital
:  audio is over HDMI and analog is over codec chip integrated inside the
:  APQ8016 SOC.
:  It can support:
:  -  3 Microphones: Primary Mic(Handset mic), Headset Mic and Secondary
:  - 2 Digital Microphones.
:  - Earpiece.
:  - Headset.
:  - Loud Speaker.
:  - HDMI.
:  [Riku: squashed Srinivas's patches together and converted spaces to tabs]
: - conf/ucm: chtrt5645: Add UCM config for chtrt5645
:  Add a UCM configuration for the rt5645 codec on Intel's Cherry-Trail
:  platform. Tested on the Microsoft Surface 3.
: - conf/ucm: ROCKCHIP-I2S: rename to VEYRON-I2S
:  Commit a192f52fc63a introduced an ucm profile for Rockchip Veyron-
:  Chromebooks by taking the ucm profile from the ChromeOS userspace.
:  But similarly to DAISY-I2S, PAZ00 and most other profiles, the audio
:  setup is pretty specific to a board type, so hogging the Rockchip name
:  will make it harder for future Rockchip based boards to fit in nicely.
:  And while Veyron also is a family of boards, all of them share the
:  same audio setup. The ucm profile was not released with any official
:  alsa release and the audio setup also isn't in the mainline kernel yet,
:  so such a rename should be easily possible.
:  Fixes: a192f52fc63a ("conf/ucm: ROCKCHIP-I2S: add Rockchip I2S UCM config.")
: - conf/ucm: ROCKCHIP-I2S: add Rockchip I2S UCM config.
:  Taken from the ChromeOS sources, this configuration was tested on Veyron
:  Jerry based Chromebook from Google.
:  [Added missing Makefile changes by tiwai]
: - conf/ucm: broadwell-rt286: change to set capture volume and capture device
:  Set 'Mic Capture Volume' in capture device EnableSequence, to fix
:  capture no volume by default issue.
:  Also add JackHWMute Value item to mute onboard dmic while headset
:  mic is plugged in.
:  Tested-by: Mark Brown <broonie@kernel.org>
: - conf/ucm: broadwell-rt286: change to use the correct jack kcontrol name
:  The headset jack has two kctls: "Headphone Jack" and "Mic Jack",
:  we need switch speaker output according to the former JackControl.
:  Here correct it.
: - conf/ucm: broadwell-rt286: add ucm config
:  The configure should apply to all Broadwell-rt286 boards from Intel,
:  like Wilson Beach SDS Ultrabook.
: - conf/ucm: GoogleNyan: Add configuration
:  Taken from the ChromeOS sources, this configuration should apply to all
:  Nyan boards from Google, so far HP Chromebook 14 (nyan-blaze) and Acer
:  Chromebook 13 (nyan-big).
: - conf/ucm: PAZ00: add Toshiba AC100/Dynabook AZ new config
:  Recent mainline kernels threat Toshiba AC100 audio hardware as hw:PAZ00
:  vs old hw:tegraalc5632.
:  This patch adds config files for new hw name and include them to
:  makefiles.
: - conf/ucm: DAISY-I2S: Set default filter mode for HiFi.
:  Default to music mode filter for the HiFi use case on the Samsung ARM
:  Chromebook.  This mode is better at 44.1k and 48k audio than the
:  "Voice" setting.
: - conf/ucm: tegraalc5632: add UCM config from Ubuntu
: - conf/ucm: SDP4430: add UCM config from Ubuntu
: - conf/ucm: PandaBoardES: add UCM config from Ubuntu
: - conf/ucm: PandaBoard: add UCM config from Ubuntu
: - conf/ucm: DAISY-I2S: add Samsung ARM Chromebook UCM config from ChromeOS
==alsa-topology-conf==
===Configuration files===
: - ASoC: topology: Fix bclk and fsync inversion in set_link_hw_format()
:  The values of bclk and fsync are inverted WRT the codec. But the existing
:  solution already works for Broadwell, see the alsa-lib config:
:  `alsa-lib/src/conf/topology/broadwell/broadwell.conf`
:  This commit provides the backwards-compatible solution to fix this misuse.
:  This commit goes in pair with the corresponding patch for linux.
:  Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
:  Tested-by: Pan Xiuli <xiuli.pan@linux.intel.com>
:  Tested-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
: - conf: topology: Fix index mismatch for skl and bxt
:  The topology index in the conf is set to 1, where the driver expects index
:  set to 0. Fix the inconsistency.
: - topology: Update physical link configurations in Broadwell text conf file
:  To make this conf file a better example, add configurations for the
:  physical link "Codec", same as that defined by Intel Broadwell upstream
:  machine driver.
: - conf: bxtrt298: Add topology conf file for bxt
:  Add the conf file for bxt platform as well to define module
:  private data.
: - conf: sklrt286: define module private data through tuples in skylake
:  In the conf file, module private data can be described through
:  tuples instead of blobs defined by vendor defined structures.
:  This patch defines the tuple section and the token list. The
:  tokens are then used to build the tuple array.
:  The module data may have both driver data and firmware data. The
:  driver data is passed using the tuple array and the firmware data
:  using byte data. A descriptor tuple array is defined to describe
:  the succeeding data block.
: - topology: Update PCM configurations in Broadwell text conf file
:  To make this conf file a better example, update the name & ID of PCMs
:  (front-end DAI link) and their cpu DAI (front-end DAI), same as those
:  defined by Broadwell upstream driver.
: - conf: topology: Add Skylake i2s conf
:  The Skylake topology configuration for simple topology graph is
:  provided. This exposes the PCM capabilities of the DSP.
: - conf: topology: Add topology file for broadwell audio DSP
=Detailed changelog between 1.0.29 and 1.2.1 releases=
=Changelog between 1.0.29 and 1.2.1 releases=
==alsa-firmware==
===Core===
: - Release v1.2.1
: - Change FSF address (Franklin Street)
===AICA (Dreamcast) Firmware===
: - Fix up aica firmware licensing
:  The 3-clause BSD that this firmware uses requires more than just
:  keeping the copyright notice, like license.txt currently says.
:  Rather, it has has that "redistributions in binary form (which is
:  what the ALSA Project is doing, since only the firmware binary is
:  provided) must reproduce the above copyright notice, this list of
:  conditions and the following disclaimer in the documentation and/or
:  other materials provided with the distribution." This means that more
:  than just the copyright notice needs to be included. This change is
:  intended to address this by adding the parts that were omitted
:  originally.
===Cirrus Logic CS46xx Firmware===
: - Change FSF address (Franklin Street)
===Digigram Echo Audio Firmware===
: - Change FSF address (Franklin Street)
===Sound Blaster HDA CA0132 Firmware===
: - Add new firmware for Creative CA0132 HD-Audio Codec
:  Support has been added for new cards through the ca0132 driver. These
:  new firmware files are for these cards.
:  [ NOTE: the files taken from the original PR to linux-firmware tree.
:  These new files basically only addition to the already existing
:  CA0132 firmware files, and follow the same license.
:  The PR to linux-firmware tree was pending just because it was
:  submitted by a third person, which is a quite unusual case.
:  -- tiwai ]
:

Revision as of 12:51, 15 November 2019