OSDN Git Service

android-x86/external-alsa-lib.git
8 years agoucm: Add ucm files for DB410c board.
Srinivas Kandagatla [Mon, 8 Aug 2016 13:23:10 +0000 (16:23 +0300)]
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]

Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Signed-off-by: Riku Voipio <riku.voipio@linaro.org>
Cc: nicolas.dechesne@linaro.org
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agoRelease v1.1.2
Jaroslav Kysela [Tue, 2 Aug 2016 17:48:38 +0000 (19:48 +0200)]
Release v1.1.2

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
8 years agoMakefile: fix sklrt286 dist files
Jaroslav Kysela [Tue, 2 Aug 2016 17:47:48 +0000 (19:47 +0200)]
Makefile: fix sklrt286 dist files

8 years agotopology: Fix the missing referenced elem ptr when merging private data
Mengdong Lin [Fri, 22 Jul 2016 05:12:54 +0000 (13:12 +0800)]
topology: Fix the missing referenced elem ptr when merging private data

tplg_copy_data() should set the valid referenced data element pointer
on success. The caller will double check this pointer for all kinds of
references, including controls and data.

Signed-off-by: Mengdong Lin <mengdong.lin@linux.intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agotopology: Fix inaccurate message on failure to find a widgets's reference
Mengdong Lin [Fri, 22 Jul 2016 05:12:45 +0000 (13:12 +0800)]
topology: Fix inaccurate message on failure to find a widgets's reference

A widget may have references to control or data elements. So the message
should not only use "control" here.

Signed-off-by: Mengdong Lin <mengdong.lin@linux.intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agoctl: use condition statements instead of assert() for new APIs to add an element set
Takashi Sakamoto [Wed, 20 Jul 2016 09:58:52 +0000 (18:58 +0900)]
ctl: use condition statements instead of assert() for new APIs to add an element set

Usage of assert() is not better practice of programming as shared library
APIs. They should return appropriate error code to promote applications to
handle error state.

This commit applies condition statements with return value of -EINVAL,
instead of assert(). As a backward compatibility for existent applications,
old APIs still call assert().

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agotopology: Check address and length before string copy
Mengdong Lin [Wed, 20 Jul 2016 01:53:12 +0000 (09:53 +0800)]
topology: Check address and length before string copy

elem_copy_text() is widely used for string copy in topology. Because some
name fields are not mandatory for users, sometimes the source can be
invalid and we should not do the copy. So we add check here.

Signed-off-by: Mengdong Lin <mengdong.lin@linux.intel.com>
Reviewed-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agotopology: Add ATTRIBUTE_UNUSED for unused parameters to fix compiler warning
Mengdong Lin [Wed, 20 Jul 2016 01:53:03 +0000 (09:53 +0800)]
topology: Add ATTRIBUTE_UNUSED for unused parameters to fix compiler warning

This commit adds ATTRIBUTE_UNUSED to the unused parameter 'tplg' for
function tplg_parse_streams() and tplg_parse_fe_dai(). These two functions
need to keep 'tplg' as ops for tplg_parse_compound().

The compiler warnings below are fixed:

pcm.c: In function 'tplg_parse_streams':
pcm.c:262:43: warning: unused parameter 'tplg' [-Wunused-parameter]
 static int tplg_parse_streams(snd_tplg_t *tplg, snd_config_t *cfg,
                                           ^
pcm.c: In function 'tplg_parse_fe_dai':
pcm.c:324:42: warning: unused parameter 'tplg' [-Wunused-parameter]
 static int tplg_parse_fe_dai(snd_tplg_t *tplg, snd_config_t *cfg,

Signed-off-by: Mengdong Lin <mengdong.lin@linux.intel.com>
Reviewed-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agotopology: Remove support for control flag SNDRV_CTL_ELEM_ACCESS_USER
Mengdong Lin [Wed, 20 Jul 2016 01:52:52 +0000 (09:52 +0800)]
topology: Remove support for control flag SNDRV_CTL_ELEM_ACCESS_USER

This access flag is used to add controls from user space by ioctl.
But topology only configures controls in user space and these controls
will eventually be created by ASoC in kernel, so topology should not
support this flag.

Signed-off-by: Mengdong Lin <mengdong.lin@linux.intel.com>
Reviewed-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agoctl: rename APIs to add an element set so that their names are appropriate
Takashi Sakamoto [Sat, 16 Jul 2016 13:20:01 +0000 (22:20 +0900)]
ctl: rename APIs to add an element set so that their names are appropriate

In this development period, some APIs have already been added. Most of
them are to add an element set, while their names are not so appropriate
against their feature. This is due to following to names of old APIs.

This commit renames them.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agotopology: Tuple type can have an extenstion
Mengdong Lin [Fri, 15 Jul 2016 12:19:58 +0000 (20:19 +0800)]
topology: Tuple type can have an extenstion

After the type specific string ("uuid", "string", "byte", "short" and
"word"), users may append a string, like  "uuidxxx". The topology parser
will check the first few characters to get the tuple type.

This can allow users to put multiple tuples of the same type into one
vendor tuple section (SectionVendorTuples), e.g. parameters of multiple
firmware modules.

Signed-off-by: Mengdong Lin <mengdong.lin@linux.intel.com>
Reviewed-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agotopology: Parse vendor private data for manifest
Mengdong Lin [Fri, 15 Jul 2016 12:19:41 +0000 (20:19 +0800)]
topology: Parse vendor private data for manifest

In text conf file, user can define a manifest section and let it refer
to private data sections, in the same syntax as other element types.

The text conf file can have at most 1 manifest section.

Signed-off-by: Mengdong Lin <mengdong.lin@linux.intel.com>
Reviewed-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agotopology: Change uuid value to 16 separate characters in text conf file
Mengdong Lin [Fri, 15 Jul 2016 12:18:59 +0000 (20:18 +0800)]
topology: Change uuid value to 16 separate characters in text conf file

Previously in text conf file, the uuid value of vendor tuples is a
16-characer string. Now change it to 16 characters separated by commas,
easier for users to edit it manually.

Signed-off-by: Mengdong Lin <mengdong.lin@linux.intel.com>
Reviewed-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agotopology: Merge lookup for data reference into tplg_copy_data()
Mengdong Lin [Fri, 15 Jul 2016 12:18:11 +0000 (20:18 +0800)]
topology: Merge lookup for data reference into tplg_copy_data()

Code refactor to reduce function calls. Now tplg_copy_data() can look up
a referenced data element and merge its data.

Signed-off-by: Mengdong Lin <mengdong.lin@linux.intel.com>
Reviewed-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agotopology: An element can refer to multipe data sections in text conf file
Mengdong Lin [Fri, 15 Jul 2016 12:17:43 +0000 (20:17 +0800)]
topology: An element can refer to multipe data sections in text conf file

Previously in text conf file, an element can only refer to one data
section (SectionData). Now it can also refer to a list of data sections.
Thus users can split groups of firmware parameters to multiple data
sections, and put them all in the reference list.

Finally, data of these data sections will be merged, in the same order as
they are in the reference list, as the element's private data for kernel.

We still support the original syntax of reference to a single data
section. The doc is updated for the syntax extension.

Signed-off-by: Mengdong Lin <mengdong.lin@linux.intel.com>
Reviewed-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agomixer: remove alloca() from simple_event_add()
Takashi Sakamoto [Fri, 15 Jul 2016 00:23:33 +0000 (09:23 +0900)]
mixer: remove alloca() from simple_event_add()

Both of alloca() and automatic variables keep storages on stack, while
the former generates more instructions than the latter. It's better to use
the latter if the size of storage is computable at pre-compile or compile
time; i.e. just for structures.

This commit obsolete usages of alloca() with automatic variables.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agomixer: change code formatting for simple_event_add()
Takashi Sakamoto [Fri, 15 Jul 2016 00:23:32 +0000 (09:23 +0900)]
mixer: change code formatting for simple_event_add()

This commit applies code format according to typical and moderate rule.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agomixer: remove alloca() from simple_add1()
Takashi Sakamoto [Fri, 15 Jul 2016 00:23:31 +0000 (09:23 +0900)]
mixer: remove alloca() from simple_add1()

Both of alloca() and automatic variables keep storages on stack, while
the former generates more instructions than the latter. It's better to use
the latter if the size of storage is computable at pre-compile or compile
time; i.e. just for structures.

This commit obsolete usages of alloca() with automatic variables.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agomixer: change code formatting for simple_add1()
Takashi Sakamoto [Fri, 15 Jul 2016 00:23:30 +0000 (09:23 +0900)]
mixer: change code formatting for simple_add1()

This commit applies code format according to typical and moderate rule.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agomixer: remove alloca() from set_enum_item_ops()
Takashi Sakamoto [Fri, 15 Jul 2016 00:23:29 +0000 (09:23 +0900)]
mixer: remove alloca() from set_enum_item_ops()

Both of alloca() and automatic variables keep storages on stack, while
the former generates more instructions than the latter. It's better to use
the latter if the size of storage is computable at pre-compile or compile
time; i.e. just for structures.

This commit obsolete usages of alloca() with automatic variables.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agomixer: remove alloca() from get_enum_item_ops()
Takashi Sakamoto [Fri, 15 Jul 2016 00:23:28 +0000 (09:23 +0900)]
mixer: remove alloca() from get_enum_item_ops()

Both of alloca() and automatic variables keep storages on stack, while
the former generates more instructions than the latter. It's better to use
the latter if the size of storage is computable at pre-compile or compile
time; i.e. just for structures.

This commit obsolete usages of alloca() with automatic variables.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agomixer: remove alloca() from enum_item_name_ops()
Takashi Sakamoto [Fri, 15 Jul 2016 00:23:27 +0000 (09:23 +0900)]
mixer: remove alloca() from enum_item_name_ops()

Both of alloca() and automatic variables keep storages on stack, while
the former generates more instructions than the latter. It's better to use
the latter if the size of storage is computable at pre-compile or compile
time; i.e. just for structures.

This commit obsolete usages of alloca() with automatic variables.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agomixer: remove alloca() from init_db_range()
Takashi Sakamoto [Fri, 15 Jul 2016 00:23:26 +0000 (09:23 +0900)]
mixer: remove alloca() from init_db_range()

Both of alloca() and automatic variables keep storages on stack, while
the former generates more instructions than the latter. It's better to use
the latter if the size of storage is computable at pre-compile or compile
time; i.e. just for structures.

This commit obsolete usages of alloca() with automatic variables.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agomixer: change code formatting for init_db_range()
Takashi Sakamoto [Fri, 15 Jul 2016 00:23:25 +0000 (09:23 +0900)]
mixer: change code formatting for init_db_range()

This commit applies code format according to typical and moderate rule.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agomixer: remove alloca() from selem_write_main()
Takashi Sakamoto [Fri, 15 Jul 2016 00:23:24 +0000 (09:23 +0900)]
mixer: remove alloca() from selem_write_main()

Both of alloca() and automatic variables keep storages on stack, while
the former generates more instructions than the latter. It's better to use
the latter if the size of storage is computable at pre-compile or compile
time; i.e. just for structures.

This commit obsolete usages of alloca() with automatic variables.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agomixer: change code formatting for selem_write_main()
Takashi Sakamoto [Fri, 15 Jul 2016 00:23:23 +0000 (09:23 +0900)]
mixer: change code formatting for selem_write_main()

This commit applies code format according to typical and moderate rule.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agomixer: remove alloca() from elem_write_route()
Takashi Sakamoto [Fri, 15 Jul 2016 00:23:22 +0000 (09:23 +0900)]
mixer: remove alloca() from elem_write_route()

Both of alloca() and automatic variables keep storages on stack, while
the former generates more instructions than the latter. It's better to use
the latter if the size of storage is computable at pre-compile or compile
time; i.e. just for structures.

This commit obsolete usages of alloca() with automatic variables.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agomixer: change code formatting for elem_write_route()
Takashi Sakamoto [Fri, 15 Jul 2016 00:23:21 +0000 (09:23 +0900)]
mixer: change code formatting for elem_write_route()

This commit applies code format according to typical and moderate rule.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agomixer: remove alloca() from elem_write_enum()
Takashi Sakamoto [Fri, 15 Jul 2016 00:23:20 +0000 (09:23 +0900)]
mixer: remove alloca() from elem_write_enum()

Both of alloca() and automatic variables keep storages on stack, while
the former generates more instructions than the latter. It's better to use
the latter if the size of storage is computable at pre-compile or compile
time; i.e. just for structures.

This commit obsolete usages of alloca() with automatic variables.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agomixer: change code formatting for elem_write_enum()
Takashi Sakamoto [Fri, 15 Jul 2016 00:23:19 +0000 (09:23 +0900)]
mixer: change code formatting for elem_write_enum()

This commit applies code format according to typical and moderate rule.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agomixer: remove alloca() from elem_write_switch_constant()
Takashi Sakamoto [Fri, 15 Jul 2016 00:23:18 +0000 (09:23 +0900)]
mixer: remove alloca() from elem_write_switch_constant()

Both of alloca() and automatic variables keep storages on stack, while
the former generates more instructions than the latter. It's better to use
the latter if the size of storage is computable at pre-compile or compile
time; i.e. just for structures.

This commit obsolete usages of alloca() with automatic variables.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agomixer: remove alloca() from elem_write_switch()
Takashi Sakamoto [Fri, 15 Jul 2016 00:23:17 +0000 (09:23 +0900)]
mixer: remove alloca() from elem_write_switch()

Both of alloca() and automatic variables keep storages on stack, while
the former generates more instructions than the latter. It's better to use
the latter if the size of storage is computable at pre-compile or compile
time; i.e. just for structures.

This commit obsolete usages of alloca() with automatic variables.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agomixer: change code formatting for elem_write_switch()
Takashi Sakamoto [Fri, 15 Jul 2016 00:23:16 +0000 (09:23 +0900)]
mixer: change code formatting for elem_write_switch()

This commit applies code format according to typical and moderate rule.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agomixer: remove alloca() from elem_write_volume()
Takashi Sakamoto [Fri, 15 Jul 2016 00:23:15 +0000 (09:23 +0900)]
mixer: remove alloca() from elem_write_volume()

Both of alloca() and automatic variables keep storages on stack, while
the former generates more instructions than the latter. It's better to use
the latter if the size of storage is computable at pre-compile or compile
time; i.e. just for structures.

This commit obsolete usages of alloca() with automatic variables.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agomixer: change code formatting for elem_write_volume()
Takashi Sakamoto [Fri, 15 Jul 2016 00:23:14 +0000 (09:23 +0900)]
mixer: change code formatting for elem_write_volume()

This commit applies code format according to typical and moderate rule.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agomixer: remove alloca() from selem_read()
Takashi Sakamoto [Fri, 15 Jul 2016 00:23:13 +0000 (09:23 +0900)]
mixer: remove alloca() from selem_read()

Both of alloca() and automatic variables keep storages on stack, while
the former generates more instructions than the latter. It's better to use
the latter if the size of storage is computable at pre-compile or compile
time; i.e. just for structures.

This commit obsolete usages of alloca() with automatic variables.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agomixer: change code formatting for selem_read()
Takashi Sakamoto [Fri, 15 Jul 2016 00:23:12 +0000 (09:23 +0900)]
mixer: change code formatting for selem_read()

This commit applies code format according to typical and moderate rule.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agomixer: remove alloca() from elem_read_enum()
Takashi Sakamoto [Fri, 15 Jul 2016 00:23:11 +0000 (09:23 +0900)]
mixer: remove alloca() from elem_read_enum()

Both of alloca() and automatic variables keep storages on stack, while
the former generates more instructions than the latter. It's better to use
the latter if the size of storage is computable at pre-compile or compile
time; i.e. just for structures.

This commit obsolete usages of alloca() with automatic variables.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agomixer: change code formatting for elem_read_enum()
Takashi Sakamoto [Fri, 15 Jul 2016 00:23:10 +0000 (09:23 +0900)]
mixer: change code formatting for elem_read_enum()

This commit applies code format according to typical and moderate rule.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agomixer: remove alloca() from elem_read_route()
Takashi Sakamoto [Fri, 15 Jul 2016 00:23:09 +0000 (09:23 +0900)]
mixer: remove alloca() from elem_read_route()

Both of alloca() and automatic variables keep storages on stack, while
the former generates more instructions than the latter. It's better to use
the latter if the size of storage is computable at pre-compile or compile
time; i.e. just for structures.

This commit obsolete usages of alloca() with automatic variables.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agomixer: change code formatting for elem_read_route()
Takashi Sakamoto [Fri, 15 Jul 2016 00:23:08 +0000 (09:23 +0900)]
mixer: change code formatting for elem_read_route()

This commit applies code format according to typical and moderate rule.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agomixer: remove alloca() from elem_read_volume()
Takashi Sakamoto [Fri, 15 Jul 2016 00:23:07 +0000 (09:23 +0900)]
mixer: remove alloca() from elem_read_volume()

Both of alloca() and automatic variables keep storages on stack, while
the former generates more instructions than the latter. It's better to use
the latter if the size of storage is computable at pre-compile or compile
time; i.e. just for structures.

This commit obsolete usages of alloca() with automatic variables.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agomixer: change code formatting for elem_read_volume()
Takashi Sakamoto [Fri, 15 Jul 2016 00:23:06 +0000 (09:23 +0900)]
mixer: change code formatting for elem_read_volume()

This commit applies code format according to typical and moderate rule.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agomixer: include library local header to find layout of structures
Takashi Sakamoto [Fri, 15 Jul 2016 00:23:05 +0000 (09:23 +0900)]
mixer: include library local header to find layout of structures

Inner this library, implementation of each features can find actual layout
of structures by including local header. Although, mixer feature is written
without the header and as the same way for applications. This brings some
inefficiencies such as usage of alloca() to keep memory objects for the
structures.

This commit includes the header for further improvements in mixer
feature.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agoalisp: remove alloca() from FA_pcm_info()
Takashi Sakamoto [Thu, 14 Jul 2016 14:07:51 +0000 (23:07 +0900)]
alisp: remove alloca() from FA_pcm_info()

Both of alloca() and automatic variables keeps storages on stack, while
the former generates more instructions than the latter. It's better to use
the latter if the size of storage is computable at pre-compile or compile
time; i.e. just for structures.

This commit obsolete usages of alloca() with automatic variables.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agoalisp: remove alloca() from FA_hctl_elem_write()
Takashi Sakamoto [Thu, 14 Jul 2016 14:07:50 +0000 (23:07 +0900)]
alisp: remove alloca() from FA_hctl_elem_write()

Both of alloca() and automatic variables keeps storages on stack, while
the former generates more instructions than the latter. It's better to use
the latter if the size of storage is computable at pre-compile or compile
time; i.e. just for structures.

This commit obsolete usages of alloca() with automatic variables.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agoalisp: remove alloca() from FA_hctl_elem_read()
Takashi Sakamoto [Thu, 14 Jul 2016 14:07:49 +0000 (23:07 +0900)]
alisp: remove alloca() from FA_hctl_elem_read()

Both of alloca() and automatic variables keeps storages on stack, while
the former generates more instructions than the latter. It's better to use
the latter if the size of storage is computable at pre-compile or compile
time; i.e. just for structures.

This commit obsolete usages of alloca() with automatic variables.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agoalisp: remove alloca() from FA_hctl_elem_info()
Takashi Sakamoto [Thu, 14 Jul 2016 14:07:48 +0000 (23:07 +0900)]
alisp: remove alloca() from FA_hctl_elem_info()

Both of alloca() and automatic variables keeps storages on stack, while
the former generates more instructions than the latter. It's better to use
the latter if the size of storage is computable at pre-compile or compile
time; i.e. just for structures.

This commit obsolete usages of alloca() with automatic variables.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agoalisp: remove alloca() from FA_hctl_find_elem()
Takashi Sakamoto [Thu, 14 Jul 2016 14:07:47 +0000 (23:07 +0900)]
alisp: remove alloca() from FA_hctl_find_elem()

Both of alloca() and automatic variables keeps storages on stack, while
the former generates more instructions than the latter. It's better to use
the latter if the size of storage is computable at pre-compile or compile
time; i.e. just for structures.

This commit obsolete usages of alloca() with automatic variables.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agoalisp: remove alloca() from FA_card_info()
Takashi Sakamoto [Thu, 14 Jul 2016 14:07:46 +0000 (23:07 +0900)]
alisp: remove alloca() from FA_card_info()

Both of alloca() and automatic variables keeps storages on stack, while
the former generates more instructions than the latter. It's better to use
the latter if the size of storage is computable at pre-compile or compile
time; i.e. just for structures.

This commit obsolete usages of alloca() with automatic variables.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agoconf: remove alloca() from snd_func_private_pcm_subdevice()
Takashi Sakamoto [Thu, 14 Jul 2016 14:07:45 +0000 (23:07 +0900)]
conf: remove alloca() from snd_func_private_pcm_subdevice()

Both of alloca() and automatic variables keeps storages on stack, while
the former generates more instructions than the latter. It's better to use
the latter if the size of storage is computable at pre-compile or compile
time; i.e. just for structures.

This commit obsolete usages of alloca() with automatic variables.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agoconf: remove alloca() from snd_func_pcm_args_by_class()
Takashi Sakamoto [Thu, 14 Jul 2016 14:07:44 +0000 (23:07 +0900)]
conf: remove alloca() from snd_func_pcm_args_by_class()

Both of alloca() and automatic variables keeps storages on stack, while
the former generates more instructions than the latter. It's better to use
the latter if the size of storage is computable at pre-compile or compile
time; i.e. just for structures.

This commit obsolete usages of alloca() with automatic variables.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agoconf: remove alloca() from snd_func_pcm_id()
Takashi Sakamoto [Thu, 14 Jul 2016 14:07:43 +0000 (23:07 +0900)]
conf: remove alloca() from snd_func_pcm_id()

Both of alloca() and automatic variables keeps storages on stack, while
the former generates more instructions than the latter. It's better to use
the latter if the size of storage is computable at pre-compile or compile
time; i.e. just for structures.

This commit obsolete usages of alloca() with automatic variables.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agoconf: remove alloca() from snd_func_card_name()
Takashi Sakamoto [Thu, 14 Jul 2016 14:07:42 +0000 (23:07 +0900)]
conf: remove alloca() from snd_func_card_name()

Both of alloca() and automatic variables keeps storages on stack, while
the former generates more instructions than the latter. It's better to use
the latter if the size of storage is computable at pre-compile or compile
time; i.e. just for structures.

This commit obsolete usages of alloca() with automatic variables.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agoconf: remove alloca() from snd_func_card_id()
Takashi Sakamoto [Thu, 14 Jul 2016 14:07:41 +0000 (23:07 +0900)]
conf: remove alloca() from snd_func_card_id()

Both of alloca() and automatic variables keeps storages on stack, while
the former generates more instructions than the latter. It's better to use
the latter if the size of storage is computable at pre-compile or compile
time; i.e. just for structures.

This commit obsolete usages of alloca() with automatic variables.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agoconf: remove alloca() from snd_determine_driver()
Takashi Sakamoto [Thu, 14 Jul 2016 14:07:40 +0000 (23:07 +0900)]
conf: remove alloca() from snd_determine_driver()

Both of alloca() and automatic variables keeps storages on stack, while
the former generates more instructions than the latter. It's better to use
the latter if the size of storage is computable at pre-compile or compile
time; i.e. just for structures.

This commit obsolete usages of alloca() with automatic variables.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agopcm: remove alloca() from _snd_pcm_softvol_open()
Takashi Sakamoto [Thu, 14 Jul 2016 14:07:39 +0000 (23:07 +0900)]
pcm: remove alloca() from _snd_pcm_softvol_open()

Both of alloca() and automatic variables keeps storages on stack, while
the former generates more instructions than the latter. It's better to use
the latter if the size of storage is computable at pre-compile or compile
time; i.e. just for structures.

This commit obsolete usages of alloca() with automatic variables.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agopcm: change code formatting for _snd_pcm_softvol_open()
Takashi Sakamoto [Thu, 14 Jul 2016 14:07:38 +0000 (23:07 +0900)]
pcm: change code formatting for _snd_pcm_softvol_open()

This commit applies code format according to typical and moderate rule,
for _snd_pcm_softvol_open().

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agopcm: remove alloca() from softvol_load_control()
Takashi Sakamoto [Thu, 14 Jul 2016 14:07:37 +0000 (23:07 +0900)]
pcm: remove alloca() from softvol_load_control()

Both of alloca() and automatic variables keeps storages on stack, while
the former generates more instructions than the latter. It's better to use
the latter if the size of storage is computable at pre-compile or compile
time; i.e. just for structures.

This commit obsolete usages of alloca() with automatic variables.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agopcm: change code formatting for softvol_load_control()
Takashi Sakamoto [Thu, 14 Jul 2016 14:07:36 +0000 (23:07 +0900)]
pcm: change code formatting for softvol_load_control()

This commit applies code format according to typical and moderate rule,
for softvol_load_control().

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agopcm: remove alloca() from snd_spcm_init_duplex()
Takashi Sakamoto [Thu, 14 Jul 2016 14:07:35 +0000 (23:07 +0900)]
pcm: remove alloca() from snd_spcm_init_duplex()

Both of alloca() and automatic variables keeps storages on stack, while
the former generates more instructions than the latter. It's better to use
the latter if the size of storage is computable at pre-compile or compile
time; i.e. just for structures.

This commit obsolete usages of alloca() with automatic variables.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agopcm: remove alloca() from snd_spcm_init()
Takashi Sakamoto [Thu, 14 Jul 2016 14:07:34 +0000 (23:07 +0900)]
pcm: remove alloca() from snd_spcm_init()

Both of alloca() and automatic variables keeps storages on stack, while
the former generates more instructions than the latter. It's better to use
the latter if the size of storage is computable at pre-compile or compile
time; i.e. just for structures.

This commit obsolete usages of alloca() with automatic variables.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agopcm: remove alloca() from snd_pcm_hw_set_chmap()
Takashi Sakamoto [Thu, 14 Jul 2016 14:07:33 +0000 (23:07 +0900)]
pcm: remove alloca() from snd_pcm_hw_set_chmap()

Both of alloca() and automatic variables keeps storages on stack, while
the former generates more instructions than the latter. It's better to use
the latter if the size of storage is computable at pre-compile or compile
time; i.e. just for structures.

This commit obsolete usages of alloca() with automatic variables.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agopcm: remove alloca() from snd_pcm_hw_get_chmap()
Takashi Sakamoto [Thu, 14 Jul 2016 14:07:32 +0000 (23:07 +0900)]
pcm: remove alloca() from snd_pcm_hw_get_chmap()

Both of alloca() and automatic variables keeps storages on stack, while
the former generates more instructions than the latter. It's better to use
the latter if the size of storage is computable at pre-compile or compile
time; i.e. just for structures.

This commit obsolete usages of alloca() with automatic variables.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agopcm: remove alloca() from snd_pcm_query_chmaps_from_hw()
Takashi Sakamoto [Thu, 14 Jul 2016 14:07:31 +0000 (23:07 +0900)]
pcm: remove alloca() from snd_pcm_query_chmaps_from_hw()

Both of alloca() and automatic variables keeps storages on stack, while
the former generates more instructions than the latter. It's better to use
the latter if the size of storage is computable at pre-compile or compile
time; i.e. just for structures.

This commit obsolete usages of alloca() with automatic variables.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agopcm: remove alloca() from snd_pcm_hw_change_timer()
Takashi Sakamoto [Thu, 14 Jul 2016 14:07:30 +0000 (23:07 +0900)]
pcm: remove alloca() from snd_pcm_hw_change_timer()

Both of alloca() and automatic variables keeps storages on stack, while
the former generates more instructions than the latter. It's better to use
the latter if the size of storage is computable at pre-compile or compile
time; i.e. just for structures.

This commit obsolete usages of alloca() with automatic variables.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agopcm: change code formatting for snd_pcm_hw_change_timer()
Takashi Sakamoto [Thu, 14 Jul 2016 14:07:29 +0000 (23:07 +0900)]
pcm: change code formatting for snd_pcm_hw_change_timer()

This commit applies code format according to typical and moderate rule,
for snd_pcm_hw_change_timer().

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agopcm: remove alloca() from _snd_pcm_hook_ctl_elems_install()
Takashi Sakamoto [Thu, 14 Jul 2016 14:07:28 +0000 (23:07 +0900)]
pcm: remove alloca() from _snd_pcm_hook_ctl_elems_install()

Both of alloca() and automatic variables keeps storages on stack, while
the former generates more instructions than the latter. It's better to use
the latter if the size of storage is computable at pre-compile or compile
time; i.e. just for structures.

This commit obsolete usages of alloca() with automatic variables.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agopcm: remove alloca() from snd_pcm_direct_set_timer_params
Takashi Sakamoto [Thu, 14 Jul 2016 14:07:27 +0000 (23:07 +0900)]
pcm: remove alloca() from snd_pcm_direct_set_timer_params

Both of alloca() and automatic variables keeps storages on stack, while
the former generates more instructions than the latter. It's better to use
the latter if the size of storage is computable at pre-compile or compile
time; i.e. just for structures.

This commit obsolete usages of alloca() with automatic variables.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agopcm: change code formatting for snd_pcm_direct_set_timer_params()
Takashi Sakamoto [Thu, 14 Jul 2016 14:07:26 +0000 (23:07 +0900)]
pcm: change code formatting for snd_pcm_direct_set_timer_params()

This commit applies code format according to typical and moderate rule,
for snd_pcm_direct_set_timer_params().

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agopcm: remove alloca() from snd_pcm_direct_initialize_poll_fd()
Takashi Sakamoto [Thu, 14 Jul 2016 14:07:25 +0000 (23:07 +0900)]
pcm: remove alloca() from snd_pcm_direct_initialize_poll_fd()

Both of alloca() and automatic variables keeps storages on stack, while
the former generates more instructions than the latter. It's better to use
the latter if the size of storage is computable at pre-compile or compile
time; i.e. just for structures.

This commit obsolete usages of alloca() with automatic variables.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agopcm: change code formatting for snd_pcm_direct_initialize_poll_fd()
Takashi Sakamoto [Thu, 14 Jul 2016 14:07:24 +0000 (23:07 +0900)]
pcm: change code formatting for snd_pcm_direct_initialize_poll_fd()

This commit applies code format according to typical and moderate rule,
for snd_pcm_direct_initialize_poll_fd().

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agopcm: remove alloca() from snd_pcm_direct_initialize_slave
Takashi Sakamoto [Thu, 14 Jul 2016 14:07:23 +0000 (23:07 +0900)]
pcm: remove alloca() from snd_pcm_direct_initialize_slave

Both of alloca() and automatic variables keeps storages on stack, while
the former generates more instructions than the latter. It's better to use
the latter if the size of storage is computable at pre-compile or compile
time; i.e. just for structures.

This commit obsolete usages of alloca() with automatic variables.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agopcm: change code formatting for snd_pcm_direct_initialize_slave()
Takashi Sakamoto [Thu, 14 Jul 2016 14:07:22 +0000 (23:07 +0900)]
pcm: change code formatting for snd_pcm_direct_initialize_slave()

This commit applies code format according to typical and moderate rule,
for snd_pcm_direct_initialize_slave().

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agopcm: remove alloca() from snd_pcm_get_params
Takashi Sakamoto [Thu, 14 Jul 2016 14:07:21 +0000 (23:07 +0900)]
pcm: remove alloca() from snd_pcm_get_params

Both of alloca() and automatic variables keeps storages on stack, while
the former generates more instructions than the latter. It's better to use
the latter if the size of storage is computable at pre-compile or compile
time; i.e. just for structures.

This commit obsolete usages of alloca() with automatic variables.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agopcm: change code formatting for snd_pcm_get_params()
Takashi Sakamoto [Thu, 14 Jul 2016 14:07:20 +0000 (23:07 +0900)]
pcm: change code formatting for snd_pcm_get_params()

This commit applies code format according to typical and moderate rule,
for snd_pcm_get_params().

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agopcm: remove alloca() from snd_pcm_set_params()
Takashi Sakamoto [Thu, 14 Jul 2016 14:07:19 +0000 (23:07 +0900)]
pcm: remove alloca() from snd_pcm_set_params()

Both of alloca() and automatic variables keeps storages on stack, while
the former generates more instructions than the latter. It's better to use
the latter if the size of storage is computable at pre-compile or compile
time; i.e. just for structures.

This commit obsolete usages of alloca() with automatic variables.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agopcm: change code formatting for snd_pcm_set_params()
Takashi Sakamoto [Thu, 14 Jul 2016 14:07:18 +0000 (23:07 +0900)]
pcm: change code formatting for snd_pcm_set_params()

This commit applies code format according to typical and moderate rule,
for snd_pcm_set_params().

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agopcm: fix return value of snd_pcm_ioplug_sw_params()
Takashi Sakamoto [Wed, 13 Jul 2016 14:15:23 +0000 (23:15 +0900)]
pcm: fix return value of snd_pcm_ioplug_sw_params()

In former commits for thread-safe PCM APIs, snd_pcm_ioplug_sw_params() got
0 as its return value, against the original implementation.

This commit fixes it.

Fixes: 54931e5a5455('pcm: Add thread-safety to PCM API')
Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agopcm: fix missing return value of snd_pcm_status()
Takashi Sakamoto [Wed, 13 Jul 2016 14:15:12 +0000 (23:15 +0900)]
pcm: fix missing return value of snd_pcm_status()

In former commits for thread-safe PCM APIs, snd_pcm_status() lost its
return value.

This commit regain it.

Fixes: 54931e5a5455('pcm: Add thread-safety to PCM API')
Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agoctl: add compatibility information for snd_ctl_elem_info_set_dimension()
Takashi Sakamoto [Wed, 13 Jul 2016 00:29:19 +0000 (09:29 +0900)]
ctl: add compatibility information for snd_ctl_elem_info_set_dimension()

I forgot it when committing to the API.

Fixes: 16812b70daeb('ctl: add an API to set dimension levels to element information')
Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agopcm: Add LIBASOUND_THREAD_SAFE env variable check
Takashi Iwai [Thu, 7 Jul 2016 13:21:14 +0000 (15:21 +0200)]
pcm: Add LIBASOUND_THREAD_SAFE env variable check

For making the debugging with any deadlocks by the newly introduced
thread-safety feature, add a check with LIBASOUND_THREAD_SAFE
environment variable.  When this variable is set to "0", alsa-lib PCM
forcibly disables the whole thread-safe pthread mutex calls.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agopcm: Remove home brew atomic operations
Takashi Iwai [Thu, 30 Jun 2016 15:24:42 +0000 (17:24 +0200)]
pcm: Remove home brew atomic operations

We've had a few home brew atomic operations in a couple of places in
the PCM code.  This was for supporting the concurrent accesses, but in
practice, it couldn't cover the race properly by itself alone.

Since we have a wider concurrency protection via mutex now, we can get
rid of these atomic codes, which worsens the portability
significantly.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agopcm: Add thread-safety to PCM API
Takashi Iwai [Thu, 30 Jun 2016 13:32:40 +0000 (15:32 +0200)]
pcm: Add thread-safety to PCM API

Traditionally, many of ALSA library functions are supposed to be
thread-unsafe, and applications are required to take care of thread
safety by themselves.  However, people never be careful enough, and
almost all applications fail in this regard.

This patch is an attempt to harden the thread safety in exported PCM
functions in a simplistic way: just wrap some of exported functions
with the pthread mutex of each PCM object.  Not all API functions are
wrapped by the mutex since it doesn't make sense.  Instead, the
patchset covers only the functions that may be likely called
concurrently.  The supposedly thread-safe API functions are marked in
the document.

For achieving the feature, two new fields are added snd_pcm_t when the
option is enabled: thread_safe and lock.  The former indicates that
the plugin is thread-safe that doesn't need this workaround and the
latter is the pthread mutex.  Currently only hw plugin have
thread_safe=1.  So, the most of real-time sensitive apps won't be
influenced by this patchset.

Although the patch covers most of PCM ops, a few snd_pcm_fast_ops are
left without the extra mutex locking: namely, the ones that may have
blocking behavior, i.e. resume, drain, readi, writei, readn and
writen.  These are supposed to handle own locking in the callbacks.

Also, if anyone wants to disable this new thread-safe API feature, it
can be still turned off via --disable-thread-safety configure option.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agopcm: add 'default' case for switch statement
Takashi Sakamoto [Mon, 11 Jul 2016 12:06:03 +0000 (21:06 +0900)]
pcm: add 'default' case for switch statement

This commit fixes below compiler warnings.

pcm_direct.c: In function ‘snd1_pcm_direct_prepare’:
pcm_direct.c:821:2: warning: enumeration value ‘SND_PCM_STATE_PREPARED’ not handled in switch [-Wswitch]
  switch (snd_pcm_state(dmix->spcm)) {
  ^

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agomixer: remove assignment to unused variable
Takashi Sakamoto [Mon, 11 Jul 2016 12:06:02 +0000 (21:06 +0900)]
mixer: remove assignment to unused variable

This commit fixes below compiler warnings.

sbase.c:327:16: warning: variable ‘values’ set but not used [-Wunused-but-set-variable]
  unsigned long values;
                ^

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agopcm: set error code at failure path
Takashi Sakamoto [Mon, 11 Jul 2016 12:06:01 +0000 (21:06 +0900)]
pcm: set error code at failure path

This commit fixes below compiler warnings.

pcm_hw.c: In function ‘_snd_pcm_hw_open’:
pcm_hw.c:1816:16: warning: ‘err’ may be used uninitialized in this function [-Wmaybe-uninitialized]
         return err;
                ^

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agotopology: initialize variable for error output
Takashi Sakamoto [Mon, 11 Jul 2016 12:06:00 +0000 (21:06 +0900)]
topology: initialize variable for error output

This commit fixes below compiler warnings.

In file included from ../../include/local.h:165:0,
                 from tplg_local.h:17,
                 from data.c:20:
data.c: In function ‘tplg_parse_tuples’:
../../include/error.h:64:21: warning: ‘id’ may be used uninitialized in this function [-Wmaybe-uninitialized]
 #define SNDERR(...) snd_lib_error(__FILE__, __LINE__, __FUNCTION__, 0, __VA_ARGS__) /**< Shows a sound error message. */
                     ^
data.c:576:14: note: ‘id’ was declared here
  const char *id;
              ^

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agotopology: apply the same type to compared two variables
Takashi Sakamoto [Mon, 11 Jul 2016 12:05:59 +0000 (21:05 +0900)]
topology: apply the same type to compared two variables

This commit fixes below compiler warnings.

data.c: In function ‘get_token_value’:
data.c:262:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (i = 0; i < tokens->num_tokens; i++) {
                ^
data.c: In function ‘copy_tuples’:
data.c:351:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (i = 0; i < tuples->num_sets ; i++) {
                ^
data.c:378:17: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for (j = 0; j < tuple_set->num_tuples; j++) {
                 ^
data.c: In function ‘tplg_free_tuples’:
data.c:723:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (i = 0; i < tuples->num_sets; i++)
                ^

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agotopology: remove unused variable in get_tokens()
Takashi Sakamoto [Mon, 11 Jul 2016 12:05:58 +0000 (21:05 +0900)]
topology: remove unused variable in get_tokens()

This commit fixes below compiler warnings.

data.c: In function ‘get_tokens’:
data.c:276:6: warning: unused variable ‘err’ [-Wunused-variable]
  int err = 0;
      ^
data.c: In function ‘has_tuples’:
data.c:302:6: warning: unused variable ‘err’ [-Wunused-variable]
  int err = 0;
      ^

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agotopology: remove unused variable in tplg_parse_fe_dai()
Takashi Sakamoto [Mon, 11 Jul 2016 12:05:57 +0000 (21:05 +0900)]
topology: remove unused variable in tplg_parse_fe_dai()

This commit fixes below compiler warnings.

pcm.c: In function ‘tplg_parse_fe_dai’:
pcm.c:333:6: warning: unused variable ‘err’ [-Wunused-variable]
  int err;
      ^

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agohctl: remove assertion from element event handler because removal event overwrites...
Takashi Sakamoto [Sun, 10 Jul 2016 15:12:34 +0000 (00:12 +0900)]
hctl: remove assertion from element event handler because removal event overwrites all of queued events

In ALSA control core, when several events occurs for an element, they're
represented bit mask (struct snd_ctl_event.data.elem.mask). Thus userspace
applications can handles these events separately in one I/O operation.

There's an exception; removal event. This is represented by all of bits in
the mask. Therefore, when a removal event occurs for an element, all of
queued events for the element are overwritten.

This works worse for a combination of applications which add/remove control
elements and applications which keep a cache of elements. For example,
let's assume a case that:

1.some elements are added by ioctl(SNDRV_CTL_IOCTL_ELEM_ADD).
2.ALSA control core handles the request and queues 'add' event.
3.applications don't read the event yet.
4.the elements are removed by ioctl(SNDRV_CTL_IOCTL_ELEM_REMOVE)
5.ALSA control core handles the request and queues 'removal' event by
  overwriting queued events.
6.applications read the event at last.
7.the applications cannot find removed elements in their cache data.

Especially, when applications use hctl interface of ALSA userspace library,
this situation occurs because the interface is designed to keep element
cache implicitly inner the library. PulseAudio is such an application. When
executing a test program of ALSA library (test/user-ctl-element-set.c),
pulseaudio process aborts due to assertion at calls of
snd_hctl_handle_events().

The rule to represent events is in ALSA kernel/userspace interfaces
(UAPI header) and it's difficult to improve the rule. Therefore,
developers should pay enough attention to the fact that userspace
applications can receive removal events for elements which are not
notified with 'add' event.

For this reason, this commit removes assertion from event handler of ALSA
hctl API.

CC: pulseaudio-discuss@lists.freedesktop.org
Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agoctl: improve documentation of APIs to add an element set
Takashi Sakamoto [Sat, 9 Jul 2016 01:44:19 +0000 (10:44 +0900)]
ctl: improve documentation of APIs to add an element set

Currently, documentation of APIs to add an element set describes causes of
errors partly. But it gives an opinion to describe them thoroughly. This
is not good for users.

This commit changes the documentation so that it partly describes the
causes.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agoconf/ucm: chtrt5645: Add UCM config for chtrt5645
Stephen Just [Mon, 4 Jul 2016 16:51:55 +0000 (10:51 -0600)]
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.

Signed-off-by: Stephen Just <stephenjust@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agotest: add linker flag with pthread for pcm-multi-thread stress test
Takashi Sakamoto [Thu, 7 Jul 2016 21:43:51 +0000 (06:43 +0900)]
test: add linker flag with pthread for pcm-multi-thread stress test

This test program is a pthread application, while Makefile has no flags
for linker about pthread library. This can cause below error.

$ make pcm-multi-thread
  CCLD     pcm-multi-thread
/usr/bin/ld: pcm-multi-thread.o: undefined reference to symbol 'pthread_cancel@@GLIBC_2.2.5'
//lib/x86_64-linux-gnu/libpthread.so.0: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
Makefile:523: recipe for target 'pcm-multi-thread' failed
make: *** [pcm-multi-thread] Error 1

This commit fixes the bug by adding a corresponding flag.

Fixes: 147093ac5b8d('test: Add pcm-multi-thread program')
Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agoctl: add dimension validator
Takashi Sakamoto [Thu, 7 Jul 2016 21:33:17 +0000 (06:33 +0900)]
ctl: add dimension validator

Linux 4.7 or former have no validator of dimension information. This can
causes an issue related to user-defined element set. For example, When
calculated total members in multi-dimensional matrix is larger than actual
capacity of snd_ctl_elem_value_t, processes to handle the element can
cause buffer-over-run.

For backward portability of this userspace library, this commit adds a
validator of dimension information. When userspace applications give
invalid dimension information to APIs to add element set, they receive
-EINVAL.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agoAdd pcm-multi-thread to .gitignore
Takashi Iwai [Sat, 2 Jul 2016 08:03:55 +0000 (10:03 +0200)]
Add pcm-multi-thread to .gitignore

Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agotest: Add pcm-multi-thread program
Takashi Iwai [Sat, 2 Jul 2016 08:03:15 +0000 (10:03 +0200)]
test: Add pcm-multi-thread program

A simple multi-thread stress test for PCM is added to test
subdirectory.  It can perform various PCM update function in the
worker threads while reading/writing the data in the main thread.
It can help catching the unexpected error or blockage.  For example,
running the capture test with a softvol plugin will lead to the assert
due to the races.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agopcm: Remove superfluous rmb() from PCM meter plugin
Takashi Iwai [Thu, 30 Jun 2016 19:56:41 +0000 (21:56 +0200)]
pcm: Remove superfluous rmb() from PCM meter plugin

rmb() is still left in the code without any actual meaning there just
before the atomic operation.  Let's clean it up.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
8 years agoctl: fix a test for user-defined element set in a point of dimension
Takashi Sakamoto [Thu, 7 Jul 2016 14:22:21 +0000 (23:22 +0900)]
ctl: fix a test for user-defined element set in a point of dimension

Currently, this test program has a bug related to dimension information.
When testing an element set with byte type, the program adds 512 members
to an element. This is a maximum number permitted for this type.

On the other hand, dimension information of the elements consists of
[8, 4, 8, 4]. Calculated members in the multi-dimensional matrix is 1024.
This should be less than 512.

This commit fixes the bug.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>