OSDN Git Service
Chih-Wei Huang [Mon, 25 Nov 2019 09:04:05 +0000 (17:04 +0800)]
Android: add makefile and config.h
This is the porting of alsa-lib 1.2.1.1 to Android.
Signed-off-by: Chih-Wei Huang <cwhuang@linux.org.tw>
Jaroslav Kysela [Mon, 25 Nov 2019 09:36:32 +0000 (10:36 +0100)]
local.h: remove sound/asoundef.h dependency
Jaroslav Kysela [Mon, 25 Nov 2019 09:36:05 +0000 (10:36 +0100)]
asoundef.h: add CEA861_AUDIO_INFOFRAME defines
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Mon, 25 Nov 2019 09:14:43 +0000 (10:14 +0100)]
include/sound: sync with the kernel v5.4
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Sat, 23 Nov 2019 14:38:35 +0000 (15:38 +0100)]
ucm: use-case.h - add <alsa/asoundlib.h> include
It is required for snd_ctl_elem_id_t and snd_mixer_selem_id_t.
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Thu, 21 Nov 2019 23:57:19 +0000 (00:57 +0100)]
pcm_file: fix pipe stall when pclose() is called too early
BugLink: https://github.com/alsa-project/alsa-lib/issues/14
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Thu, 21 Nov 2019 07:15:23 +0000 (08:15 +0100)]
ucm: add ${CardDriver} substitution
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Wed, 20 Nov 2019 12:43:39 +0000 (13:43 +0100)]
ucm: implement ${sys:sysfs/path} substitution
Example:
Condition {
Type String
String1 "${sys:class/dmi/id/board_vendor}"
String2 "LENOVO"
}
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Tue, 19 Nov 2019 13:16:27 +0000 (14:16 +0100)]
Release v1.2.1.1
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Tue, 19 Nov 2019 13:15:00 +0000 (14:15 +0100)]
ucm: quick fix for the previous commit when ALSA_CONFIG_UCM_VAR is set
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Tue, 19 Nov 2019 12:10:19 +0000 (13:10 +0100)]
ucm: fix again the long name configuration filename lookup
The fix in commit
77119d83a1f4 assumes that both ucm1 / ucm2 directories
have the configurations for the long name in the same directory. For v2
we changed the location to card_name/card_long_name aka
driver_name/driver_long_name to make the directory layout more structured.
Fixes:
77119d83a1f4 ("ucm: Fix opening of master-configs by the card's longname")
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Hans de Goede [Tue, 19 Nov 2019 10:48:22 +0000 (11:48 +0100)]
ucm: parser: Fix snprintf usage
There is no need to manually 0 terminate the buffer with snprintf,
only strncpy has the very unfortunate behavior of not guaranteeing 0
termination.
Likewise there is no need to substract one from the buffer size of
the buffer passed to snprintf.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Hans de Goede [Tue, 19 Nov 2019 10:48:21 +0000 (11:48 +0100)]
ucm: Only look in ucm[1] or ucm2 dir once we've found a config file in one
Unless environment variables are set, then configuration_filename()
when initially called by load_master_config() will first try to find
the requested master-config under <prefix>/alsa/ucm2 and then under
<prefix>/alsa/ucm.
Once a master-config is found this way, we should set conf_format to
match, so that subsequent lookups only look under the same directory
as where the master-config was found.
This fixes 2 problems:
1. uc_mgr_config_load() looking under <prefix>/alsa/ucm for includes for
UCM2 profiles because it is called with uc_mgr->conf_format as format
and before this commit that would stay 0 when autodetecion is used.
2. parse_verb_file() possibly loading an UCM2 verb-file for an UCM1 profile,
the chance of this happening is small as this means that even though
there is no UCM2 master-config there is an UCM2 profile dir matching
uc_mgr->conf_file_name, which would be weird.
Fixes:
aba2260ae7b5 ("ucm: switch to ucm2 directory and v2 format, keep backward compatibility")
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Hans de Goede [Tue, 19 Nov 2019 10:48:20 +0000 (11:48 +0100)]
ucm: Fix fallback to card_name (shortname) config for ucm1 profiles
uc_mgr_import_master_config() first calls load_master_config()
with the card's longname and if that fails then calls it again with the
card_name.
Before this commit configuration_filename() would force conf_format to 2
when it the access(fn, R_OK) test failed for the ucm1 longname
master-config filename.
This would cause configuration_filename() to blindly return a filename
under <prefix>/ucm2 without seeing if that is actually there and without
trying to fallback to the old profiles under <prefix>/ucm, breaking the
loading of UCM1 profiles by card_name.
This commit fixes this by modifying configuration_filename() to not set
conf_format when checking for the UCM1 config filename fails.
Instead, to make sure that any errors about opening the file still report
the new path, configuration_filename() now resets the filename to the UCM2
path if the access() check has failed for both the UCM2 and UCM1 paths,
without touching conf_format.
Fixes:
aba2260ae7b5 ("ucm: switch to ucm2 directory and v2 format, keep backward compatibility")
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Hans de Goede [Tue, 19 Nov 2019 10:48:19 +0000 (11:48 +0100)]
ucm: Fix opening of master-configs by the card's longname
Prior to commit
aba2260ae7b5 ("ucm: switch to ucm2 directory and v2 format,
keep backward compatibility").
The filename build in parse_verb_file() was build like this:
<prefix>/<uc_mgr->conf_file_name>/<file>
Where uc_mgr->conf_file_name would contain either the card_name or the
card's longname depending on the detection of a longname based config in
uc_mgr_import_master_config().
While the filename used in load_master_config() was build like this:
<prefix>/<card_name>/<card_name>.conf
And uc_mgr_import_master_config() first calls load_master_config()
with the card's longname and if that succeeds it overwrites
uc_mgr->conf_file_name with the longname so that the subsequent uses
of uc_mgr->conf_file_name in parse_verb_file() correctly use the longname.
But the new configuration_filename() helper added in commit
aba2260ae7b5
_always_ builds the filename like this:
<prefix>/<uc_mgr->conf_file_name>/<file><suffix>
This breaks the loading of the master-config by its longname, as when
the longname is tried uc_mgr->conf_file_name still contains the card_name.
This commit fixes this by adding a dir parameter to configuration_filename()
and restoring the old behavior by passing card_name as dir in
load_master_config().
Fixes:
aba2260ae7b5 ("ucm: switch to ucm2 directory and v2 format, keep backward compatibility")
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Tue, 19 Nov 2019 09:55:29 +0000 (10:55 +0100)]
conf: check for include path duplicates
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Mon, 18 Nov 2019 18:01:45 +0000 (19:01 +0100)]
conf: fix the include paths support
I omitted to use parent paths and the proper error code
when no paths are defined.
Fixes:
f600310954e7 ("conf: improve the include paths code")
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Fri, 15 Nov 2019 11:52:36 +0000 (12:52 +0100)]
ucm: fix memory leaks detected by the coverity checker
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Fri, 15 Nov 2019 11:44:28 +0000 (12:44 +0100)]
pcm: add braces to condition (coverity)
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Thu, 14 Nov 2019 17:02:27 +0000 (18:02 +0100)]
Release v1.2.1
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Thu, 14 Nov 2019 15:57:22 +0000 (16:57 +0100)]
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.
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Thu, 14 Nov 2019 15:56:05 +0000 (16:56 +0100)]
conf: implement snd_config_add_before() and snd_config_add_after()
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Thu, 14 Nov 2019 14:13:36 +0000 (15:13 +0100)]
ucm: change the If block parsing
- evaluate always If before the other blocks
Jaroslav Kysela [Wed, 13 Nov 2019 10:28:44 +0000 (11:28 +0100)]
topology: remove configuration files (moved to alsa-topology-conf repository)
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Tue, 12 Nov 2019 18:30:36 +0000 (19:30 +0100)]
create separated libatopology library with the topology routines
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Mon, 11 Nov 2019 16:03:26 +0000 (17:03 +0100)]
ucm: remove configuration files (moved to alsa-ucm-conf repository)
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Curtis Malainey [Thu, 7 Nov 2019 01:58:02 +0000 (17:58 -0800)]
ucm: docs: Add MinBufferLevel value
Allows ucm to override minimum buffer level for platforms that
incorrectly report their buffer level.
Signed-off-by: Curtis Malainey <cujomalainey@chromium.org>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Curtis Malainey [Thu, 7 Nov 2019 01:58:01 +0000 (17:58 -0800)]
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
Signed-off-by: Curtis Malainey <cujomalainey@chromium.org>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Mon, 11 Nov 2019 13:35:02 +0000 (14:35 +0100)]
use-case header file: add more references to correct ASCII ID parsers for CTL/mixer IDs
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Mon, 11 Nov 2019 13:22:36 +0000 (14:22 +0100)]
ucm: add snd_use_case_parse_selem_id()
and add strict ucm_id checks to snd_use_case_parse_ctl_elem_id()
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Mon, 11 Nov 2019 13:22:11 +0000 (14:22 +0100)]
mixer: simple - add snd_mixer_selem_id_parse() from amixer
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Wed, 6 Nov 2019 09:44:29 +0000 (10:44 +0100)]
ucm: add If.Condition.RegexMatch
If.1 {
Condition {
Type RegexMatch
String "something to match"
Regex ".*(thing)"
}
...
}
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Wed, 6 Nov 2019 09:21:40 +0000 (10:21 +0100)]
ucm: add ${CardComponents} substitution to the value string processing
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Wed, 6 Nov 2019 09:19:57 +0000 (10:19 +0100)]
ucm: evaluate nested If blocks also in True/False blocks
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Wed, 6 Nov 2019 08:51:47 +0000 (09:51 +0100)]
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 {
...
}
}
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Tue, 5 Nov 2019 19:04:54 +0000 (20:04 +0100)]
ucm: add snd_use_case_parse_ctl_elem_id()
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Tue, 5 Nov 2019 13:21:07 +0000 (14:21 +0100)]
ucm: add PlaybackCTL and CaptureCTL default values when they are not set
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Tue, 5 Nov 2019 13:07:26 +0000 (14:07 +0100)]
ucm: small cosmetic uc_error change in execute_sequence()
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Tue, 5 Nov 2019 12:02:41 +0000 (13:02 +0100)]
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'"
}
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Tue, 5 Nov 2019 09:21:36 +0000 (10:21 +0100)]
ucm: do not cache all control devices in get_card_long_name()
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Tue, 5 Nov 2019 09:14:44 +0000 (10:14 +0100)]
ucm: parser - use less memory for integer/real values in parse_value()
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Tue, 5 Nov 2019 09:06:37 +0000 (10:06 +0100)]
ucm: save the whole ctl info to the ctl_list structure
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Mon, 4 Nov 2019 15:18:07 +0000 (16:18 +0100)]
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
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Mon, 4 Nov 2019 17:44:00 +0000 (18:44 +0100)]
ucm: fix memory leaks for cdev, bin-file and tlv elements
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Mon, 4 Nov 2019 16:14:40 +0000 (17:14 +0100)]
ucm: do not report failure when long name configuration does not exist
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Mon, 4 Nov 2019 13:42:45 +0000 (14:42 +0100)]
ucm: add support for multiple control devices, more aggresive caching
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Sun, 3 Nov 2019 18:05:54 +0000 (19:05 +0100)]
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.
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Sat, 9 Nov 2019 10:53:32 +0000 (11:53 +0100)]
ucm: switch to ucm2 directory and v2 format, keep backward compatibility
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Sun, 10 Nov 2019 12:00:59 +0000 (13:00 +0100)]
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)
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Sat, 2 Nov 2019 07:57:51 +0000 (08:57 +0100)]
ucm: parse_verb_file() - remove folder_name variable and extra logic
The member uc_mgr->conf_file_name already contains the used directory
name.
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Sat, 2 Nov 2019 07:36:46 +0000 (08:36 +0100)]
ucm: fix uc_mgr_scan_master_configs() - skip correctly component directories
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Fri, 25 Oct 2019 11:43:31 +0000 (13:43 +0200)]
pcm: the maximal rate is 768000Hz, fix the remain code
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Fri, 25 Oct 2019 11:42:41 +0000 (13:42 +0200)]
ucm: cosmetic fix in get_card_long_name()
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Mon, 14 Oct 2019 07:34:35 +0000 (09:34 +0200)]
pcm: fix the period_size for direct plugins (dmix, dsnoop, dshare)
BugLink: https://github.com/alsa-project/alsa-lib/issues/8
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Takashi Iwai [Tue, 24 Sep 2019 10:10:41 +0000 (12:10 +0200)]
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>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai [Tue, 24 Sep 2019 11:48:37 +0000 (13:48 +0200)]
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")
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Marcin Pietraszko [Mon, 26 Aug 2019 11:51:41 +0000 (13:51 +0200)]
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.
Signed-off-by: Marcin Pietraszko <marcin.pietraszko@linux.intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Keyon Jie [Thu, 1 Aug 2019 09:15:06 +0000 (17:15 +0800)]
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.
Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Adam Miartus [Wed, 24 Jul 2019 10:13:00 +0000 (12:13 +0200)]
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
Signed-off-by: Andreas Pape <apape@de.adit-jv.com>
Signed-off-by: Adam Miartus <amiartus@de.adit-jv.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Adam Miartus [Wed, 24 Jul 2019 10:12:59 +0000 (12:12 +0200)]
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
Signed-off-by: Adam Miartus <amiartus@de.adit-jv.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Adam Miartus [Fri, 5 Jul 2019 14:40:48 +0000 (16:40 +0200)]
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
Signed-off-by: Adam Miartus <amiartus@de.adit-jv.com>
Reviewed-by: Timo Wischer <twischer@de.adit-jv.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Adam Miartus [Mon, 1 Jul 2019 13:25:18 +0000 (15:25 +0200)]
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
Signed-off-by: Adam Miartus <amiartus@de.adit-jv.com>
Reviewed-by: Timo Wischer <twischer@de.adit-jv.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Adam Miartus [Mon, 1 Jul 2019 13:25:16 +0000 (15:25 +0200)]
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
Signed-off-by: Adam Miartus <amiartus@de.adit-jv.com>
Reviewed-by: Timo Wischer <twischer@de.adit-jv.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Adam Miartus [Mon, 24 Jun 2019 12:21:36 +0000 (14:21 +0200)]
pcm_file: return errno in case of a failed write operation
allows correct error code propagation for snd_pcm_file_write_bytes caller
Signed-off-by: Adam Miartus <amiartus@de.adit-jv.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Adam Miartus [Mon, 24 Jun 2019 11:23:23 +0000 (13:23 +0200)]
pcm_file: remove double line
snd_pcm_file_add_frames called two times by mistake, introduced in
2a800c0c4f259043c9217a4aa6a57afaf9f77477
Signed-off-by: Adam Miartus <amiartus@de.adit-jv.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Adam Miartus [Wed, 12 Jun 2019 06:48:28 +0000 (08:48 +0200)]
pcm_file: report write output file error to api user
when writing to output file fails, api user is notified and can handle
recovery
Signed-off-by: Adam Miartus <amiartus@de.adit-jv.com>
Reviewed-by: Timo Wischer <twischer@de.adit-jv.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Adam Miartus [Wed, 12 Jun 2019 06:48:27 +0000 (08:48 +0200)]
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
Signed-off-by: Adam Miartus <amiartus@de.adit-jv.com>
Reviewed-by: Timo Wischer <twischer@de.adit-jv.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Michael Forney [Wed, 12 Jun 2019 06:08:14 +0000 (23:08 -0700)]
pcm: rate: Avoid pointer arithmetic on `void *`
The pointer operand to the binary `+` operator must be to a complete
object type.
Signed-off-by: Michael Forney <mforney@mforney.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Michael Forney [Wed, 12 Jun 2019 06:08:13 +0000 (23:08 -0700)]
pcm: direct: Remove unused empty struct
Signed-off-by: Michael Forney <mforney@mforney.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Michael Forney [Wed, 12 Jun 2019 06:08:12 +0000 (23:08 -0700)]
pcm: Make sure parameter qualifiers match between declaration and definition
Signed-off-by: Michael Forney <mforney@mforney.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Michael Forney [Wed, 12 Jun 2019 06:08:11 +0000 (23:08 -0700)]
pcm: hw: Don't return in a void function
A return statement with an expression in a function returning void is
a constraint violation.
Signed-off-by: Michael Forney <mforney@mforney.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Michael Forney [Wed, 12 Jun 2019 06:08:10 +0000 (23:08 -0700)]
conf: List cases in range explicitly
Case ranges are a GNU extension, and provide only a slight readability
improvement.
Signed-off-by: Michael Forney <mforney@mforney.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Michael Forney [Wed, 12 Jun 2019 06:08:09 +0000 (23:08 -0700)]
Use __func__ instead of __FUNCTION__
They are equivalent, but __func__ is in C99. __FUNCTION__ exists only
for backwards compatibility with old gcc versions.
Signed-off-by: Michael Forney <mforney@mforney.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Jaroslav Kysela [Mon, 27 May 2019 18:10:52 +0000 (20:10 +0200)]
ucm: another coverity fix in uc_mgr_config_load()
Jaroslav Kysela [Mon, 27 May 2019 18:10:32 +0000 (20:10 +0200)]
pcm_file: another locking fix (coverity)
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Mon, 27 May 2019 12:05:12 +0000 (14:05 +0200)]
topology: next round of coverity fixes
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Mon, 27 May 2019 11:57:12 +0000 (13:57 +0200)]
pcm_file: coverity fixes (including double locking)
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Fri, 24 May 2019 19:11:00 +0000 (21:11 +0200)]
ucm: coverity fixes
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Fri, 24 May 2019 18:52:00 +0000 (20:52 +0200)]
topology: various coverity fixes
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Fri, 24 May 2019 18:45:26 +0000 (20:45 +0200)]
rawmidi_hw: add sanity check for the invalid stream arguments (coverity)
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Fri, 24 May 2019 18:31:24 +0000 (20:31 +0200)]
rawmidi: use snd_dlobj_cache_get2() in rawmidi open (coverity)
Use proper reference counting for the dynamic symbol.
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Fri, 24 May 2019 09:11:46 +0000 (11:11 +0200)]
pcm_hw: close file descriptor in the error path in snd_pcm_hw_open() (coverity)
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Fri, 24 May 2019 09:09:43 +0000 (11:09 +0200)]
pcm_file: call pclose() correctly for popen() (coverity)
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Fri, 24 May 2019 08:57:20 +0000 (10:57 +0200)]
pcm: fix memory leak in _snd_pcm_parse_config_chmaps() (coverity)
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Fri, 24 May 2019 08:53:09 +0000 (10:53 +0200)]
control_shm: add missing socket close to the error path (coverity)
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Fri, 24 May 2019 08:51:47 +0000 (10:51 +0200)]
control_shm: remove duplicate code (coverity)
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Fri, 24 May 2019 08:44:49 +0000 (10:44 +0200)]
config: parse_string() fix the dynamic buffer allocation failure code (coverity)
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Fri, 24 May 2019 08:39:05 +0000 (10:39 +0200)]
src/conf.c: add missing va_end() call (coverity)
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Fri, 24 May 2019 08:27:25 +0000 (10:27 +0200)]
aserver: fix resource leak coverity
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Adam Miartus [Thu, 23 May 2019 13:00:40 +0000 (15:00 +0200)]
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
Signed-off-by: Adam Miartus <amiartus@de.adit-jv.com>
Reviewed-by: Timo Wischer <twischer@de.adit-jv.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Adam Miartus [Thu, 23 May 2019 13:00:39 +0000 (15:00 +0200)]
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
Signed-off-by: Adam Miartus <amiartus@de.adit-jv.com>
Reviewed-by: Timo Wischer <twischer@de.adit-jv.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai [Thu, 18 Apr 2019 18:40:18 +0000 (20:40 +0200)]
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.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Adam Miartus [Thu, 23 May 2019 09:44:30 +0000 (11:44 +0200)]
pcm: file: add missing unlock on early return
Signed-off-by: Adam Miartus <amiartus@de.adit-jv.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Adam Miartus [Tue, 21 May 2019 13:33:08 +0000 (15:33 +0200)]
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
Signed-off-by: Adam Miartus <amiartus@de.adit-jv.com>
Reviewed-by: Timo Wischer <twischer@de.adit-jv.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Adam Miartus [Tue, 21 May 2019 13:32:47 +0000 (15:32 +0200)]
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
Signed-off-by: Adam Miartus <amiartus@de.adit-jv.com>
Reviewed-by: Timo Wischer <twischer@de.adit-jv.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Vanitha Channaiah [Wed, 15 May 2019 06:26:34 +0000 (11:56 +0530)]
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
Signed-off-by: Vanitha Channaiah <vanitha.channaiah@in.bosch.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Vanitha Channaiah [Wed, 15 May 2019 06:26:33 +0000 (11:56 +0530)]
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
Signed-off-by: Vanitha Channaiah <vanitha.channaiah@in.bosch.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Vanitha Channaiah [Wed, 15 May 2019 06:26:32 +0000 (11:56 +0530)]
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.
Signed-off-by: Vanitha Channaiah <vanitha.channaiah@in.bosch.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Jaroslav Kysela [Fri, 10 May 2019 06:57:21 +0000 (08:57 +0200)]
Release v1.1.9
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Tue, 9 Apr 2019 10:44:14 +0000 (12:44 +0200)]
add support for GCC's LTO