summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
* ctl: optimize a test for user-defined element set to changes of APIsTakashi Sakamoto2016-06-301-17/+37
| | | | | | | | | | In former commits, APIs to add an element set are changed, while a test program for user-defined element set doesn't follow them. This commit add support the change. Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ctl: optimize a test for user-defined element set to older kernelsTakashi Sakamoto2016-06-301-11/+20
| | | | | | | | | | | | | In Linux 4.0 or former, call of ioctl(2) with SNDRV_CTL_IOCTL_ELEM_ADD doesn't fill all of identical information in an argument; i.e. numid. With the kernel, a test of user-defined element set fails. This commit fixes the bug. The 'numid' field in identical information is always zero when adding an element set, therefore zero check has an effect. Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ctl: add an API to set dimension levels to element informationTakashi Sakamoto2016-06-302-0/+32
| | | | | | | | | | | | | | | | In a former commit, 'struct snd_ctl_elem_info' is used as a 'container' to transfer extra fields of element information for APIs to add an element set. The extra fields should be filled in advance of call of the APIs. Currently, dimension level is in the extra fields and no APIs to set it. This commit adds an API to set dimension level to the information structure. This API is expected to be used in advance of usage of APIs to add an element set, for nothing others. When the information structure is extended in future, then the similar APIs shall be added for the new feature. Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ctl: support extra information to user-defined element setTakashi Sakamoto2016-06-303-115/+94
| | | | | | | | | | | | | | In ALSA control feature, information of an element includes extra fields to type-specific parameters; i.e. dimension. The fields can be extended in future. Meanwhile, current APIs to add user-defined element set can not support such an extended fields. This may cause inconveniences in future. This commit supports the fields, by changing APIs for element set. Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ctl: use consistent name for second argument of snd_ctl_elem_read/writeTakashi Sakamoto2016-06-292-10/+10
| | | | | | | | | | | | Second argument of these functions has three different names in documentation/header/code (obj/control/value). This easily causes users' confusion. This commit applies consistent names for the arguments. Fixes: 90020c05f886 ('ctl: improve comments for handling element data') Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ctl: use automatic variable instead of call of alloca(3)Takashi Sakamoto2016-06-275-143/+125
| | | | | | | | | | | | | | | | Inner this library, layouts of all structures are public. At a compilation time, each size of the structures can be calculated. It means that we can use automatic variable instead of calling alloca(3) to program this library because in both ways storages are kept on stack frame of process VMA. Besides, the usage of automatic variables requires less instructions than calls of alloca(3). Furthermore, alloca(3) is not described in any C language standards. This commit replaces calls of alloca(3) just for structures with automatic variables, for control features. Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ctl: fix returning zero for dimension level 4Takashi Sakamoto2016-06-271-1/+1
| | | | | | | | | | | | | | In ALSA kernel/userspace interfaces, 'struct snd_ctl_elem_info' has a 'dimension' parameter. This parameter consists of an array with four elements. Each element represents the number of members in corresponding dimension level to construct matrix. In current implementation, a get function, 'snd_ctl_elem_info_get_dimension()' is hardcoded to return zero to level 4, against actual value. This commit fixes the bug. Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* doxygen: Suppress timestampTakashi Iwai2016-06-231-0/+2
| | | | | | | The build timestamp in the doc is bad for packaging in general, so let's disable it as default. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* INSTALL: update text and drop reference to HgHenrik Austad2016-06-211-5/+10
| | | | | | | | | | | This is really just nitpick, but it annoyed me for a few seconds, so I thought I'd just fix it. In d7534b2ceec7 (hgcompile -> gitcompile) the filename was updated but INSTALL was not, leaving outdated docs. Signed-off-by: Henrik Austad <henrik@austad.us> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ctl: add test program for control element setTakashi Sakamoto2016-06-172-1/+577
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The feature of control element set has been abandoned for a long time since firstly introduced in 2003. Furthermore, there's few applications to utilize this feature. These situations bring a hard work to persons who need the feature. Especially, a lack of test program make it harder to fix much bugs in this feature. This commit adds a test program as a sample of the feature. This program adds element sets of each element type to 'hw:0' in this order; boolean, integer, enumerated, bytes, IEC958 and integer64. Each iteration includes below scheme: 1. add an element set with 900 elements. Each of them has maximum number of members allowed by ALSA ctl core. 2. check all of events generated by above operation. 3. retrieve information of each element, then validate it. 4. unlock each member of all elements because they're initially locked. 5. write to all of members in all elements and read. 6. check all of events generated by above operation. 7. write information for threshold level to the element set and read it. 8. check all of events generated by above operation. 9. remove the element set. 10.check all of events generated by above operation. When any of these operations fail, it means regression occurs. Then, added elements still remain in a certain sound card. In this case, unloading drivers corresponding to the card is an easy way to recover. Besides, this program doesn't perform below element operations of ALSA ctl feature: - list - lock - replace Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ctl: improve API documentation for threshold level operationsTakashi Sakamoto2016-06-161-15/+15
| | | | | | | | | | | | In alsa-lib, threshold level operations require an array of unsigned-int members, while there's little explanation about how to fill it. To usual developers such as me, they're quite hard to understand. This commit adds a few comment for easy understanding about how to use the APIs. Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ctl: add explanation about threshold level featureTakashi Sakamoto2016-06-161-0/+22
| | | | | | | | | | ALSA ctl feature includes threshold level feature. This is introduced in 2006, and there's little resources about it. This commit adds a simple explanation about the feature. Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* pcm: use new APIs to add a control element set for softvol pluginTakashi Sakamoto2016-06-161-3/+4
| | | | | | | | | | In previous commit, some APIs to add a single element are discouraged to continue using. This commit replaces usage of the old APIs with new APIs. Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ctl: change former APIs as wrapper functions of element set APIsTakashi Sakamoto2016-06-161-138/+49
| | | | | | | | | | | | | | | | | | | | | | | In former commit, userspace library gets some APIs for element set. Some existed functions can be simple wrappers of them. This commit changes these APIs as wrapper functions. Additionally, this commit also adds local variables for identical information of elements. This modification is important to keep API consistency. Some old APIs to add an element have id variables with const type qualifier, while some new APIs to add element set changes the content of given parameters. This comes from a change in Linux kernel 4.1. In this commit [1], in-kernel implementation fills all fields of identical data in userspace. As a result, when adding a new element set, userspace applications can get an identical data for the first element in the set. This lost the semantics of const type qualifier in userspace. [1] http://git.kernel.org/cgit/linux/kernel/git/tiwai/sound.git/commit/sound/core?id=cab2ed7474bffafd2a68a885e03b85526194abcd Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ctl: improve comments for API to add an element of IEC958 typeTakashi Sakamoto2016-06-161-4/+28
| | | | | | | | | | | | In ALSA control core, it's not allowed to an element set of IEC 958 type to have several elements. Therefore, consecutive patchset doesn't touch an API to add an element of IEC958 type. However, it's better to supplement comments for the API. This commit do it. Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ctl: add functions to add an element setTakashi Sakamoto2016-06-162-0/+413
| | | | | | | | | | | | ALSA control core allows userspace applications to add an element set. However, in ALSA userspace library, there's no APIs enough to utilize the feature. The library has APIs just to add an element set with a single element. This commit adds functions to add an element set with several elements. Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ctl: improve comments for handling element dataTakashi Sakamoto2016-06-161-115/+131
| | | | | | | | | | | | Some parts of control API documentation are described with core-developer friendly explanations. To usual developer such as me, they're quite hard to understand. This commit improves such comments for a part of APIs to handle data of each element. Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ctl: add an overview for design of ALSA control interfaceTakashi Sakamoto2016-06-161-3/+23
| | | | | | | | This commit adds a description about the design of ALSA control interface for developers to understand a few components of low level. Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* conf/ucm: ROCKCHIP-I2S: rename to VEYRON-I2SHeiko Stübner2016-06-096-14/+14
| | | | | | | | | | | | | | | | | | 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.") Signed-off-by: Heiko Stuebner <heiko@sntech.de> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* async: Handle previously installed signal handlerEliot Miranda2016-06-011-7/+13
| | | | | | | | | | | | | | | | | The issue is with the signal handler installed and deinstalled in alsa-lib async handler. This code makes no attempt to remember any previously installed signal handlers for SIGIO, if SIGIO is used. Consequently it does not call any previous handlers from its own handler once installed, and does not reinstall any previous handler when deinstalling its handler. Consequently, use of also-lib within applications that depend on SIGIO will break those applications, rendering them inoperative once alsa-lib is running because their signal handlers are no longer called. This patch does remember and restore any previous handler, and chains calls to the handler if it exists. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* pcm: dmix: Return error when slave is in OPEN or DISCONNECTEDTakashi Iwai2016-06-011-1/+3
| | | | | | | A slave PCM in OPEN or DISCONNECTED state can't be used properly at all, so the best option is to return -EBADFD error. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* pcm: dmix: Prepare slave when it's in SETUP, tooTakashi Iwai2016-06-011-0/+1
| | | | | | SETUP is an unusual state, but it's still possible. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* pcm: dmix: resume workaround for buggy driverTakashi Iwai2016-05-311-1/+24
| | | | | | | | | | | | | The previous commit removed the whole handling of resume in dmix, but this seems causing another regression; some buggy drivers assume that the device-resume needs to be triggered before transitioning to PREPARED state. As an ugly workaround, in this patch, when the slave PCM supports resume, snd_pcm_direct_resume() does resume of the slave PCM but immediately drop the stream after that. In that way, the device is brought to the sane active state, then the apps can prepare and restart the stream properly. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* pcm: Fix secondary retry in dsnoop and dshareTakashi Iwai2016-05-282-2/+2
| | | | | | | | | | | | | | | | | The commit [fdba9e1bad8f: pcm: Fallback open as the first instance for dmix & co] introduced a mechanism to retry the open of slave PCM for the secondary streams, but this also introduced a regression in dsnoop and dshare plugins: since the retry goto-tag was placed at a wrong position, it retries to re-fetch the shm unnecessarily and eventually leads to the fatal error. The bug can be easily reproduced by starting arecord and killing it via SIGKILL, then starting arecord again. The second arecord fails. The fix is obviously to move the wrong retry goto-tags to the right positions. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* pcm: Remove resume support from dmix & coTakashi Iwai2016-05-181-22/+2
| | | | | | | | | | | | | | | | | | | PCM dmix and other plugins inherit the resume behavior from the slave PCM. However, the resume on dmix can't work reliably even if the slave PCM may do resume. The running state of each dmix stream is individual and may be PREPARED or RUN_PENDING while the slave PCM is already in RUNNING. And, when the slave PCM is resumed, the whole samples that have been already mapped are also played back, even if the corresponding dmix stream is still in SUSPENDED. Such inconsistencies can't be avoided as long as we manage each stream individually. That said, dmix & co can't provide the proper resume support "by design". For aligning with it, we should drop the whole resume code and clear the PCM SND_PCM_INFO_RESUME flag. Reported-by: Shengjiu Wang <shengjiu.wang@nxp.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* conf: Add thread-safe global tree referenceTakashi Iwai2016-05-179-14/+125
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Most of open functions in alsa-lib have the call pattern: snd_config_update(); return snd_xxx_open(x, snd_config, ...); This means that the toplevel config gets updated, and passed to a local open function. Although snd_config_update() itself has a pthread mutex to be thread safe, the whole procedure above isn't thread safe. Namely, the global snd_config tree may be deleted and recreated at any time while the open function is being processed. This may lead to a data corruption and crash of the program. For avoiding the corruption, this patch introduces a refcount to config tree object. A few new helper functions are introduced as well: - snd_config_update_ref() does update and take the refcount of the toplevel tree. The obtained config tree has to be freed via snd_config_unref() below. - snd_config_ref() and snd_config_unref() manage the refcount of the config object. The latter eventually deletes the object when all references are gone. Along with these additions, the caller of snd_config_update() and snd_config global tree in alsa-lib are replaced with the new helpers. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* pcm: Define namehint for single directional PCM typesTakashi Iwai2016-05-128-8/+8
| | | | | | | | The PCM namehint for some PCM types like dmix, dsnoop and surround51 should be defined as single directional. Reported-by: Trent Reed <treed0803@gmail.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* namehint: Don't enumerate as duplex if only a single direction is definedTakashi Iwai2016-05-121-2/+8
| | | | | | | | | | When a hint description has only either device_input or device_output, we shouldn't handle it as a full duplex but rather a single direction. In that way, we can avoid to list up a playback stream like dmix or surround51 as a capture stream in the namehint. Reported-by: Trent Reed <treed0803@gmail.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* pcm: dmix: Fix doubly resume of slave PCMTakashi Iwai2016-05-111-0/+7
| | | | | | | | | | | | | | The dmix plugin and co may trigger the resume for each instance in snd_pcm_direct_resume(). It means that the slave PCM gets resumed or re-prepared/started by each opened dmix stream, and this may end up with the doubly triggers even though the slave PCM has been already resumed by another dmix stream. For avoiding this conflicts, check the slave PCM state and resume only when it's still in the suspended state. Meanwhile we keep the shadow state updated no matter whether the slave was triggered or not. Signed-off-by: Takashi Iwai <tiwai@suse.de>
* pcm: Fix suspend/resume regression with dmix & coTakashi Iwai2016-05-111-0/+1
| | | | | | | | | | | | | | | | | | | The recent fix commit [8985742d91db: pcm: dmix: Handle slave PCM xrun and unexpected states properly] caused a regression in dmix and other plugins regarding suspend/resume. For example, aplay endlessly prints "Suspended. Trying resume. Done." message if suspend and resume are performed in the middle of playback. The reason is that the commit above changed the shadow PCM state (dmix->state) to SUSPENDED when the slave PCM is in suspend, while it doesn't restore the shadow state upon resume. Thus it appears as if it's always suspended even after the resume is invoked. The fix is just to add the proper update of the shadow state in snd_pcm_direct_resume(). Reported-by: Shengjiu Wang <shengjiu.wang@freescale.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* conf/ucm: ROCKCHIP-I2S: add Rockchip I2S UCM config.Enric Balletbo i Serra2016-05-095-1/+106
| | | | | | | | | | Taken from the ChromeOS sources, this configuration was tested on Veyron Jerry based Chromebook from Google. [Added missing Makefile changes by tiwai] Signed-off-by: Enric Balletbo i Serra <enric.balletbo@collabora.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* pcm: softvol: fix conversion of TLVs min_db and max_dB valueJörg Krause2016-05-091-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Both, min_dB and max_dB, are floating type whereas the TLV is (always) unsigned. The problem with the conversion of a negative floating-point number into an unsigned integer is, that the behavior is undefined. This may, depending on the platform, result in a wrong TLV, i.e. for the default values of min_dB (-51dB) and max_dB (0dB), alsactl generates the following state on an ARM cpu build with GCC: control.1 { iface MIXER name Master value.0 255 value.1 255 comment { access 'read write user' type INTEGER count 2 range '0 - 255' tlv '00000001000000080000000000000014' dbmin 0 dbmax 5100 dbvalue.0 5100 dbvalue.1 5100 } } With the fix applied, alsactl stores the correct TLV: control.1 { iface MIXER name Master value.0 255 value.1 255 comment { access 'read write user' type INTEGER count 2 range '0 - 255' tlv '0000000100000008ffffec1400000014' dbmin -5100 dbmax 0 dbvalue.0 0 dbvalue.1 0 } } Also tested for different combinations of min_dB and max_dB other than the default values. Replaces: http://mailman.alsa-project.org/pipermail/alsa-devel/2016-May/107733.html Fixes: http://mailman.alsa-project.org/pipermail/alsa-devel/2016-May/107628.html Cc: Clemens Ladisch <clemens@ladisch.de> Signed-off-by: Jörg Krause <joerg.krause@embedded.rocks> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* topology: Update PCM configurations in Broadwell text conf fileMengdong Lin2016-05-091-9/+25
| | | | | | | | | 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. Signed-off-by: Mengdong Lin <mengdong.lin@linux.intel.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* topology: Parse front-end DAI name and ID for the PCMMengdong Lin2016-05-092-0/+57
| | | | | | | | These two fields are necessary to create the front-end DAIs in kernel but the support is missing in text conf previously. Signed-off-by: Mengdong Lin <mengdong.lin@linux.intel.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* topology: Fix pcm ID & name parsingMengdong Lin2016-05-092-4/+4
| | | | | | | | | The name and ID of SectionPCM should be set to pcm_name and pcm_id, for a front-end DAI link in the kernel, not for the front-end DAI of the link. Signed-off-by: Mengdong Lin <mengdong.lin@linux.intel.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* topology: Use generic pointer to realloc buffer for private dataMengdong Lin2016-05-091-17/+9
| | | | | | | | | | | Many element types have private data. So use the generic obj pointer instead of the type-specific pointer when reallocating the object to accommodate the private data. Empty private data will be overlooked. Signed-off-by: Mengdong Lin <mengdong.lin@linux.intel.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* topology: Refactor functions to parse and build streamsMengdong Lin2016-05-093-28/+36
| | | | | | | | | Previously these functions are only used by pcm elements (front-end DAI & DAI link) to parse stream capablities. Now refactor them to be reused by back-end DAI elements later. Signed-off-by: Mengdong Lin <mengdong.lin@linux.intel.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* topology: Set manifest size for ABIMengdong Lin2016-05-091-0/+2
| | | | | | | | The topology kernel driver will check the size of manifest struct, and will stop loading topology info if size mismatch is detected. Signed-off-by: Mengdong Lin <mengdong.lin@linux.intel.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* Add src/conf/topology/sklrt286/data/pvt_data to .gitignoreTakashi Iwai2016-04-281-0/+1
| | | | Signed-off-by: Takashi Iwai <tiwai@suse.de>
* conf: topology: Generate Private data binary blobsShreyas NC2016-04-287-0/+2152
| | | | | | | | | | The DSP modules need private data and that is provided as binary blob. These blobs are compiled from C structures which specify module configuration. Signed-off-by: Shreyas NC <shreyas.nc@intel.com> Signed-off-by: Vinod Koul <vinod.koul@intel.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* Add u8 in type_compat.hShreyas NC2016-04-281-0/+2
| | | | | | | | | Skylake headers use u8 data types which were not present in type_compat so add them. Signed-off-by: Shreyas NC <shreyas.nc@intel.com> Signed-off-by: Vinod Koul <vinod.koul@intel.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* conf: topology: Add Skylake i2s confShreyas NC2016-04-2822-1/+348
| | | | | | | | | | The Skylake topology configuration for simple topology graph is provided. This exposes the PCM capabilities of the DSP. Signed-off-by: Shreyas NC <shreyas.nc@intel.com> Signed-off-by: Subhransu S. Prusty <subhransu.s.prusty@intel.com> Signed-off-by: Vinod Koul <vinod.koul@intel.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* pcm: Fallback open as the first instance for dmix & coTakashi Iwai2016-04-143-0/+24
| | | | | | | | | | | | | | | | | dmix and other PCM plugins tries to open a secondary stream with O_APPEND flag when the shmem was already attached by another. However, when another streams have been already closed after the shmem check, this open may return the error EBADFD, since the kernel accepts O_APPEND only for the secondary streams. This patch adds a workaround for such a case. It just retries opening the stream as the first instance (i.e. without O_APPEND flag). This is basically safe behavior (the kernel takes care of races), even we may do this even unconditionally. But it's bad from the performance POV, so we do it only when really needed. Reported-by: Lars Lindqvist <lars.lindqvist@yandex.ru> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* ucm: add cset-tlvHsin-Yu Chao2016-04-133-13/+92
| | | | | | | | | | | | | | | This patch enables UCM to set a file in TLV format to kcontrol by: cset-tlv "name='<kcontrol-name>' <path-to-file>" This new 'cset-tlv' command will be used to write audio DSP to specific alsa control, where the driver expectes a file in TLV format. The TLV file to set to kcontrol will be checked first by file size not larger than 16 MB, and then examine if the length field reports correct number of bytes in the TLV file. Signed-off-by: Hsin-Yu Chao <hychao@chromium.org> Reviewed-by: Vinod Koul <vinod.koul@intel.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* topology: Build data objects with tuplesMengdong Lin2016-04-073-0/+218
| | | | | | | | | | For data objects with tuples, the parser will bind the vendor tuples and tokens, copy the tuples to the private buffer of its parent data object. Then later the builder will export the vendor tuples as private binary data for the control or widgets objects. Signed-off-by: Mengdong Lin <mengdong.lin@linux.intel.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* topology: Add support for parsing vendor tuplesMengdong Lin2016-04-075-1/+283
| | | | | | | | | | | Vendor can define several tuple arrays in 'SectionVendorTuples', as well as the reference to a vendor token list object. A later patche will copy vendor tuples in ABI format to the private buffer of its parent data object in the building phase. Signed-off-by: Mengdong Lin <mengdong.lin@linux.intel.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* topology: Add support for vendor tokensMengdong Lin2016-04-075-0/+79
| | | | | | | | | Vendor can define a token list in SectionVendorTokens. Each token element is a pair of string ID and integer value. And both the ID and value are vendor-specific. Signed-off-by: Mengdong Lin <mengdong.lin@linux.intel.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* topology: ABI - Define types for vendor tuplesMengdong Lin2016-04-071-1/+41
| | | | | | | | | | | | | | | | | | | Tuples, a pair of token and value, can be used to define vendor specific data, for controls and widgets. This can avoid importing binary data blob from other files. Vendor specific tuple arrays will be embeded in the private data buffer of a control or widget object. To be backward compatible, union is used to define the tuple arrays in the existing private data ABI object 'struct snd_soc_tplg_private'. Vendors need to make sure the token values defined by the topology conf file match those defined by their driver. Now supported tuple types are uuid, string, bool, byte, short and word. Signed-off-by: Mengdong Lin <mengdong.lin@linux.intel.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* topology: Add doc for vendor tuplesMengdong Lin2016-04-071-4/+73
| | | | | | | Describe how to define vendor tokens and tuples in the text conf file. Signed-off-by: Mengdong Lin <mengdong.lin@linux.intel.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
* topology: Define a free handler for the elementMengdong Lin2016-04-072-1/+7
| | | | | | | This handler is defined for type-specific destruction of an element. Signed-off-by: Mengdong Lin <mengdong.lin@linux.intel.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>