Commit graph

196 commits

Author SHA1 Message Date
Chao Song
aa70b19d4c topology/pcm.c: remove duplicated AC97 hw format
Remove the second occurrence of AC97 hardware format
from audio hardware format array.

Signed-off-by: Chao Song <chao.song@linux.intel.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2021-05-26 10:19:15 +02:00
Jaroslav Kysela
ae7362c996 topology: fix 'parse_tuple_set() - remove dead condition code'
The whole SND_SOC_TPLG_TUPLE_TYPE_WORD condition part must be
commented out, otherwise the condition is always true.

Fixes: 51e1d486ce ("topology: parse_tuple_set() - remove dead condition code")
BugLink: https://github.com/alsa-project/alsa-lib/issues/114
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2021-01-20 17:05:01 +01:00
Jaroslav Kysela
45f503632a topology: sort_config() cleanups - use goto for the error path
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2021-01-07 17:45:27 +01:00
Jaroslav Kysela
51e1d486ce topology: parse_tuple_set() - remove dead condition code
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2021-01-07 17:40:42 +01:00
Jaroslav Kysela
0dbaba95f4 topology: tplg_decode_pcm() - add missing log argument (compress)
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2021-01-07 17:38:50 +01:00
Jaroslav Kysela
b8764a061b topology: tplg_add_widget_object() - do not use invalid elem_ctl
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2021-01-07 17:36:04 +01:00
Jaroslav Kysela
d0bb8f84c9 topology: tplg_pprint_integer() fix coverity uninitalized variable error
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2021-01-07 17:34:00 +01:00
Pierre-Louis Bossart
706192341d topology: use inclusive language for fsync
use fsync_provider for structure fields, 'codec_provider' and
'codec_consumer' for options and modify #defines to use CP and CC
suffixes.

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2020-11-17 14:01:20 +01:00
Pierre-Louis Bossart
39bd0e1a5b topology: use inclusive language for bclk
use bclk_provider for structure fields, 'codec_provider' and
'codec_consumer' for options and modify #defines to use CP and CC
suffixes.

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2020-11-17 13:59:18 +01:00
Jaroslav Kysela
e91b1c0670 topology: straight printf and error path fixes
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2020-10-19 11:17:21 +02:00
Jaroslav Kysela
5c1cb568ec topology: save_config - fix the error path handling
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2020-10-19 11:02:29 +02:00
Jaroslav Kysela
cebe0fe0f9 tplg: fix the unaligned_get32/put32 helpers for big endian
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2020-10-15 19:13:18 +02:00
Jaroslav Kysela
472ab5db67 topology: improve the printf buffer management
The commit d04e72c9a5 introduced
the dynamic printf buffer allocation for each tplg_save_printf()
call.

Introduce 'struct tplg_buf' which carries extra information about
the temporary printf buffer and the destination buffer to save allocation
requests.

The printf buffer is also allocated using 1024 bytes chunks.

A comparison between 'alloc everyting' and 'cache+chunk alloc' for the
random picked topology file:

  1: 18,620 allocs, 18,620 frees, 7,239,688 bytes allocated
  2: 12,490 allocs, 12,490 frees, 962,568 bytes allocated

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2020-08-31 19:51:49 +02:00
Jaroslav Kysela
ab73253924 topology: fix the unaligned access
Introduce unaligned_get32/put32 helpers to deal with the
packed structures.

Use the gcc __BYTE_ORDER__ defines for the endian checks.
It may be improved to support other compilation environment.

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2020-08-31 14:27:30 +02:00
Jaroslav Kysela
84c6aeef5c topology: fix sort_config()
The temporary config array must be initialized for all compound types.

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2020-08-31 14:26:02 +02:00
Jaroslav Kysela
6ca1ddfbcd topology: fix some gcc10 warnings (labs, signess)
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2020-08-31 13:25:07 +02:00
Jaroslav Kysela
dc778bade6 topology: return correct value in tplg_save_printf()
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2020-08-31 13:21:26 +02:00
Piotr Maziarz
d04e72c9a5 topology: Make buffer for saving dynamic size
Some fields can exceed size limit, e.g. private data has no size
restriction. Therefore it needs to be dynamically increased.

Signed-off-by: Piotr Maziarz <piotrx.maziarz@linux.intel.com>
Reviewed-by: Cezary Rojewski <cezary.rojewski@intel.com>
Reviewed-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2020-08-31 13:03:01 +02:00
Piotr Maziarz
6b0fb2bc7e topology: decode: Add DAI name printing
DAI name is a part of topology binary. Not printing makes data loss while
converting from binary to standard ALSA configuration file.

Signed-off-by: Piotr Maziarz <piotrx.maziarz@linux.intel.com>
Reviewed-by: Cezary Rojewski <cezary.rojewski@intel.com>
Reviewed-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2020-08-31 13:03:01 +02:00
Piotr Maziarz
d93b346299 topology: decode: Print sig_bits field in PCM capabilities section
Not printing this field makes data loss while converting from binary
to standard ALSA configuration file.

Signed-off-by: Piotr Maziarz <piotrx.maziarz@linux.intel.com>
Reviewed-by: Cezary Rojewski <cezary.rojewski@intel.com>
Reviewed-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2020-08-31 13:03:01 +02:00
Piotr Maziarz
acbb0e3b17 topology: decode: Fix decoding PCM formats and rates
Not checking _LAST format and rate, which are valid indexes in arrays,
makes data loss while converting binary to standard ALSA configuration
file.

Signed-off-by: Piotr Maziarz <piotrx.maziarz@linux.intel.com>
Reviewed-by: Cezary Rojewski <cezary.rojewski@intel.com>
Reviewed-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2020-08-31 13:03:01 +02:00
Piotr Maziarz
c32498603a topology: decode: Change declaration of enum decoding function
Size constraints are always checked before invoking
tplg_decode_control_enum1. There is no need to validate it twice.
Alos moved debug print about size to invoking function, since now it's it
responsibility to check size.

Signed-off-by: Piotr Maziarz <piotrx.maziarz@linux.intel.com>
Reviewed-by: Cezary Rojewski <cezary.rojewski@intel.com>
Reviewed-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2020-08-31 13:03:01 +02:00
Piotr Maziarz
56a096ca2c topology: decode: Fix printing texts section
Signed-off-by: Piotr Maziarz <piotrx.maziarz@linux.intel.com>
Reviewed-by: Cezary Rojewski <cezary.rojewski@intel.com>
Reviewed-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2020-08-31 13:03:01 +02:00
Piotr Maziarz
f1435207a2 topology: decode: Add enum control texts as separate element
Texts are separate sections that should referenced by enum control.

Signed-off-by: Piotr Maziarz <piotrx.maziarz@linux.intel.com>
Reviewed-by: Cezary Rojewski <cezary.rojewski@intel.com>
Reviewed-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2020-08-31 13:03:01 +02:00
Piotr Maziarz
11d4a5aa72 topology: decode: Remove decoding values for enum control
Values have no representation in standard ALSA configuration files,
therefore there is no need to populate them. Also memory for values
wasn't allocated which was causing undefined behaviour.

Signed-off-by: Piotr Maziarz <piotrx.maziarz@linux.intel.com>
Reviewed-by: Cezary Rojewski <cezary.rojewski@intel.com>
Reviewed-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2020-08-31 13:03:01 +02:00
Piotr Maziarz
346a5efa87 topology: decode: Fix infinite loop in decoding enum control
Accessing memory outside of allocated boundaries caused segmentation fault.

Signed-off-by: Piotr Maziarz <piotrx.maziarz@linux.intel.com>
Reviewed-by: Cezary Rojewski <cezary.rojewski@intel.com>
Reviewed-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2020-08-31 13:03:01 +02:00
Piotr Maziarz
1ac965184e topology: decode: Fix channel map memory allocation
Memory allocated on the stack was referenced outside of the function scope
caused undefined behaviour.

Signed-off-by: Piotr Maziarz <piotrx.maziarz@linux.intel.com>
Reviewed-by: Cezary Rojewski <cezary.rojewski@intel.com>
Reviewed-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2020-08-31 13:03:01 +02:00
Takashi Iwai
750a3d9fd8 topology: Add missing ATTRIBUTE_UNUSED
... to shut up the compiler warnings.

Fixes: b6c9afb4f5 ("topology: implement snd_tplg_decode")
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2020-05-11 16:38:27 +02:00
Jaroslav Kysela
822f0c443b topology: use snd_config_is_array() function
... instead the own array test.

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2020-05-08 12:04:41 +02:00
Amadeusz Sławiński
496e239e65 topology: Use bool parser to parse boolean value
It should be safe to change this as correct values with int would be 0
or 1 and bool parser handles them correctly.

Signed-off-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2020-04-30 14:21:29 +02:00
Jaroslav Kysela
caf77a93ce topology: add back asrc to widget_map in dapm.c
Fixes: aa1bac2d04 ("topology: add snd_tplg_save()")
BugLink: https://github.com/thesofproject/sof/issues/2543

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2020-03-13 17:07:36 +01:00
Takashi Iwai
beb6b178e6 topology: Drop SNDRV_CTL_ELEM_ACCESS_TIMESTAMP access
SNDRV_CTL_ELEM_ACCESS_TIMESTAMP is removed from 5.6 kernel ABI as the
ctl timestamp field has been never used and deprecated.
Drop the corresponding access from the topology code, too.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2020-02-10 12:49:25 +01:00
Jaroslav Kysela
fbe1ac4a09 topology: remove MAX_FILE definition and use correct PATH_MAX
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2020-01-15 10:41:35 +01:00
Jaroslav Kysela
b20b400e2f topology: cosmetic changes (functions)
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2020-01-03 23:38:08 +01:00
Jaroslav Kysela
d768da27e7 topology: tplg_dbg() cleanups
- remove newline at the end

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2020-01-03 23:38:08 +01:00
Jaroslav Kysela
ae6522e106 topology: unify the log mechanism
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2020-01-03 23:38:08 +01:00
Jaroslav Kysela
cb88813ff7 topology: move the elem->list delete to tplg_elem_free()
The tplg_elem_free() is called in the error path from many places
and it is expected that the element object will be unregistered
from the tplg structure, too.

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2020-01-03 23:38:08 +01:00
Jaroslav Kysela
b6c9afb4f5 topology: implement snd_tplg_decode
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2020-01-03 23:38:08 +01:00
Jaroslav Kysela
0ba4d6d9c0 topology: fix the wrong memory access (object realloc)
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2020-01-03 23:38:08 +01:00
Jaroslav Kysela
c765615bce topology: fix the ops parser (accept integer/hexa values)
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2020-01-03 23:38:08 +01:00
Jaroslav Kysela
1482d1f254 topology: fix the TPLG_DEBUG compilation
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2020-01-03 23:38:08 +01:00
Jaroslav Kysela
2947d83c13 topology: implement shorter hexa uuid 00:00 parser
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2020-01-03 23:38:08 +01:00
Jaroslav Kysela
07d779143b topology: fix the unitialized tuples
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2020-01-03 23:38:08 +01:00
Jaroslav Kysela
712fbacf16 topology: dapm - fix the SNDERR() - Undefined
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2020-01-03 23:38:08 +01:00
Jaroslav Kysela
f42b2c088a topology: cleanup the SNDERR() calls
- remove the wrong new lines
- remove error/warning prefixes (error is error)

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2020-01-03 23:38:08 +01:00
Jaroslav Kysela
0793ef064a topology: add snd_tplg_version() function
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2020-01-03 23:38:08 +01:00
Jaroslav Kysela
b336aea507 topology: add snd_tplg_create() with flags
Add SND_TPLG_CREATE_VERBOSE and SND_TPLG_CREATE_DAPM_NOSORT
flags for the special operations.

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2020-01-03 23:38:08 +01:00
Jaroslav Kysela
aa1bac2d04 topology: add snd_tplg_save()
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2020-01-03 23:38:08 +01:00
Jaroslav Kysela
4a0efdc873 topology: add parser to the tplg_table
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2020-01-03 23:38:08 +01:00
Jaroslav Kysela
4f076f5b69 topology: move the topology element table from builder to elem
- use offsetof() for the lists
- add other info to describe the elements
- use the table in the element constructor

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2020-01-03 23:38:08 +01:00