• Home
  • Raw
  • Download

Lines Matching +full:3 +full:- +full:tuples

1 // SPDX-License-Identifier: GPL-2.0-only
12 #include <sound/soc-acpi.h>
13 #include <sound/soc-topology.h>
25 (avs_tplg_vendor_array_at(array, le32_to_cpu((array)->size)))
28 * Scan provided block of tuples for the specified token. If found,
32 * Returns 0 on success, -ENOENT if not found and error code otherwise.
35 avs_tplg_vendor_array_lookup(struct snd_soc_tplg_vendor_array *tuples, in avs_tplg_vendor_array_lookup() argument
42 u32 tuples_size = le32_to_cpu(tuples->size); in avs_tplg_vendor_array_lookup()
45 return -EINVAL; in avs_tplg_vendor_array_lookup()
47 tuple = tuples->value; in avs_tplg_vendor_array_lookup()
48 if (le32_to_cpu(tuple->token) == token) { in avs_tplg_vendor_array_lookup()
53 block_size -= tuples_size; in avs_tplg_vendor_array_lookup()
55 tuples = avs_tplg_vendor_array_next(tuples); in avs_tplg_vendor_array_lookup()
58 return -ENOENT; in avs_tplg_vendor_array_lookup()
67 * several vendor tuples and a specific token marks the beginning of
71 avs_tplg_vendor_array_lookup_next(struct snd_soc_tplg_vendor_array *tuples, in avs_tplg_vendor_array_lookup_next() argument
74 u32 tuples_size = le32_to_cpu(tuples->size); in avs_tplg_vendor_array_lookup_next()
78 return -EINVAL; in avs_tplg_vendor_array_lookup_next()
80 tuples = avs_tplg_vendor_array_next(tuples); in avs_tplg_vendor_array_lookup_next()
81 block_size -= tuples_size; in avs_tplg_vendor_array_lookup_next()
83 ret = avs_tplg_vendor_array_lookup(tuples, block_size, token, offset); in avs_tplg_vendor_array_lookup_next()
90 * Scan provided block of tuples for the specified token which marks
100 avs_tplg_vendor_entry_size(struct snd_soc_tplg_vendor_array *tuples, in avs_tplg_vendor_entry_size() argument
105 ret = avs_tplg_vendor_array_lookup_next(tuples, block_size, entry_id_token, size); in avs_tplg_vendor_entry_size()
106 if (ret == -ENOENT) { in avs_tplg_vendor_entry_size()
135 guid_copy((guid_t *)val, (const guid_t *)&tuple->uuid); in avs_parse_uuid_token()
146 *val = le32_to_cpu(tuple->value); in avs_parse_bool_token()
157 *val = le32_to_cpu(tuple->value); in avs_parse_byte_token()
168 *val = le32_to_cpu(tuple->value); in avs_parse_short_token()
179 *val = le32_to_cpu(tuple->value); in avs_parse_word_token()
190 snprintf(val, SNDRV_CTL_ELEM_ID_NAME_MAXLEN, "%s", tuple->string); in avs_parse_string_token()
197 struct snd_soc_tplg_vendor_array *tuples) in avs_parse_uuid_tokens() argument
203 for (i = 0; i < le32_to_cpu(tuples->num_elems); i++) { in avs_parse_uuid_tokens()
204 tuple = &tuples->uuid[i]; in avs_parse_uuid_tokens()
207 /* Ignore non-UUID tokens. */ in avs_parse_uuid_tokens()
209 parsers[j].token != le32_to_cpu(tuple->token)) in avs_parse_uuid_tokens()
223 struct snd_soc_tplg_vendor_array *tuples) in avs_parse_string_tokens() argument
229 for (i = 0; i < le32_to_cpu(tuples->num_elems); i++) { in avs_parse_string_tokens()
230 tuple = &tuples->string[i]; in avs_parse_string_tokens()
233 /* Ignore non-string tokens. */ in avs_parse_string_tokens()
235 parsers[j].token != le32_to_cpu(tuple->token)) in avs_parse_string_tokens()
249 struct snd_soc_tplg_vendor_array *tuples) in avs_parse_word_tokens() argument
255 for (i = 0; i < le32_to_cpu(tuples->num_elems); i++) { in avs_parse_word_tokens()
256 tuple = &tuples->value[i]; in avs_parse_word_tokens()
259 /* Ignore non-integer tokens. */ in avs_parse_word_tokens()
266 if (parsers[j].token != le32_to_cpu(tuple->token)) in avs_parse_word_tokens()
280 struct snd_soc_tplg_vendor_array *tuples, int priv_size) in avs_parse_tokens() argument
285 array_size = le32_to_cpu(tuples->size); in avs_parse_tokens()
288 dev_err(comp->dev, "invalid array size 0x%x\n", array_size); in avs_parse_tokens()
289 return -EINVAL; in avs_parse_tokens()
293 priv_size -= array_size; in avs_parse_tokens()
295 dev_err(comp->dev, "invalid array size 0x%x\n", array_size); in avs_parse_tokens()
296 return -EINVAL; in avs_parse_tokens()
299 switch (le32_to_cpu(tuples->type)) { in avs_parse_tokens()
301 ret = avs_parse_uuid_tokens(comp, object, parsers, count, tuples); in avs_parse_tokens()
304 ret = avs_parse_string_tokens(comp, object, parsers, count, tuples); in avs_parse_tokens()
310 ret = avs_parse_word_tokens(comp, object, parsers, count, tuples); in avs_parse_tokens()
313 dev_err(comp->dev, "unknown token type %d\n", tuples->type); in avs_parse_tokens()
314 ret = -EINVAL; in avs_parse_tokens()
318 dev_err(comp->dev, "parsing %zu tokens of %d type failed: %d\n", in avs_parse_tokens()
319 count, tuples->type, ret); in avs_parse_tokens()
323 tuples = avs_tplg_vendor_array_next(tuples); in avs_parse_tokens()
338 idx = le32_to_cpu(tuple->value); \
339 if (idx >= acomp->tplg->num_##member) \
340 return -EINVAL; \
342 *val = &acomp->tplg->member[idx]; \
361 audio_format->num_channels = le32_to_cpu(velem->value); in parse_audio_format_bitfield()
364 audio_format->valid_bit_depth = le32_to_cpu(velem->value); in parse_audio_format_bitfield()
367 audio_format->sample_type = le32_to_cpu(velem->value); in parse_audio_format_bitfield()
378 struct snd_soc_acpi_mach *mach = dev_get_platdata(comp->card->dev); in parse_link_formatted_string()
382 * Dynamic naming - string formats, e.g.: ssp%d - supported only for in parse_link_formatted_string()
385 if (hweight_long(mach->mach_params.i2s_link_mask) != 1) in parse_link_formatted_string()
388 snprintf(val, SNDRV_CTL_ELEM_ID_NAME_MAXLEN, tuple->string, in parse_link_formatted_string()
389 __ffs(mach->mach_params.i2s_link_mask)); in parse_link_formatted_string()
396 struct snd_soc_tplg_vendor_array *tuples, in parse_dictionary_header() argument
402 /* Dictionary header consists of single tuple - entry count. */ in parse_dictionary_header()
403 tuple = tuples->value; in parse_dictionary_header()
404 if (le32_to_cpu(tuple->token) != num_entries_token) { in parse_dictionary_header()
405 dev_err(comp->dev, "invalid dictionary header, expected: %d\n", in parse_dictionary_header()
407 return -EINVAL; in parse_dictionary_header()
410 *num_entries = le32_to_cpu(tuple->value); in parse_dictionary_header()
411 *dict = devm_kcalloc(comp->card->dev, *num_entries, entry_size, GFP_KERNEL); in parse_dictionary_header()
413 return -ENOMEM; in parse_dictionary_header()
420 struct snd_soc_tplg_vendor_array *tuples, u32 block_size, in parse_dictionary_entries() argument
432 ret = avs_tplg_vendor_entry_size(tuples, block_size, in parse_dictionary_entries()
437 ret = avs_parse_tokens(comp, pos, parsers, num_parsers, tuples, esize); in parse_dictionary_entries()
439 dev_err(comp->dev, "parse entry: %d of type: %d failed: %d\n", in parse_dictionary_entries()
445 block_size -= esize; in parse_dictionary_entries()
446 tuples = avs_tplg_vendor_array_at(tuples, esize); in parse_dictionary_entries()
453 struct snd_soc_tplg_vendor_array *tuples, u32 block_size, in parse_dictionary() argument
460 ret = parse_dictionary_header(comp, tuples, dict, num_entries, in parse_dictionary()
465 block_size -= le32_to_cpu(tuples->size); in parse_dictionary()
467 tuples = avs_tplg_vendor_array_next(tuples); in parse_dictionary()
469 return parse_dictionary_entries(comp, tuples, block_size, *dict, in parse_dictionary()
484 struct snd_soc_tplg_vendor_array *tuples, u32 block_size) in avs_tplg_parse_libraries() argument
487 struct avs_tplg *tplg = acomp->tplg; in avs_tplg_parse_libraries()
489 return parse_dictionary(comp, tuples, block_size, (void **)&tplg->libs, in avs_tplg_parse_libraries()
490 &tplg->num_libs, sizeof(*tplg->libs), in avs_tplg_parse_libraries()
548 struct snd_soc_tplg_vendor_array *tuples, in avs_tplg_parse_audio_formats() argument
552 struct avs_tplg *tplg = acomp->tplg; in avs_tplg_parse_audio_formats()
554 return parse_dictionary(comp, tuples, block_size, (void **)&tplg->fmts, in avs_tplg_parse_audio_formats()
555 &tplg->num_fmts, sizeof(*tplg->fmts), in avs_tplg_parse_audio_formats()
589 struct snd_soc_tplg_vendor_array *tuples, in avs_tplg_parse_modcfgs_base() argument
593 struct avs_tplg *tplg = acomp->tplg; in avs_tplg_parse_modcfgs_base()
595 return parse_dictionary(comp, tuples, block_size, (void **)&tplg->modcfgs_base, in avs_tplg_parse_modcfgs_base()
596 &tplg->num_modcfgs_base, sizeof(*tplg->modcfgs_base), in avs_tplg_parse_modcfgs_base()
744 .offset = offsetof(struct avs_tplg_modcfg_ext, updown_mix.coefficients[3]),
817 if (!guid_equal(&cfg->type, &AVS_COPIER_MOD_UUID)) in assign_copier_gtw_instance()
820 /* Only I2S boards assign port instance in ->i2s_link_mask. */ in assign_copier_gtw_instance()
821 switch (cfg->copier.dma_type) { in assign_copier_gtw_instance()
829 mach = dev_get_platdata(comp->card->dev); in assign_copier_gtw_instance()
832 if (hweight_long(mach->mach_params.i2s_link_mask) == 1 && !cfg->copier.vindex.i2s.instance) in assign_copier_gtw_instance()
833 cfg->copier.vindex.i2s.instance = __ffs(mach->mach_params.i2s_link_mask); in assign_copier_gtw_instance()
838 struct snd_soc_tplg_vendor_array *tuples, in avs_tplg_parse_modcfg_ext() argument
845 ret = avs_tplg_vendor_entry_size(tuples, block_size, in avs_tplg_parse_modcfg_ext()
851 ARRAY_SIZE(modcfg_ext_parsers), tuples, esize); in avs_tplg_parse_modcfg_ext()
858 block_size -= esize; in avs_tplg_parse_modcfg_ext()
864 num_pins = cfg->generic.num_input_pins + cfg->generic.num_output_pins; in avs_tplg_parse_modcfg_ext()
866 return -EINVAL; in avs_tplg_parse_modcfg_ext()
868 pins = devm_kcalloc(comp->card->dev, num_pins, sizeof(*pins), GFP_KERNEL); in avs_tplg_parse_modcfg_ext()
870 return -ENOMEM; in avs_tplg_parse_modcfg_ext()
872 tuples = avs_tplg_vendor_array_at(tuples, esize); in avs_tplg_parse_modcfg_ext()
873 ret = parse_dictionary_entries(comp, tuples, block_size, in avs_tplg_parse_modcfg_ext()
880 cfg->generic.pin_fmts = pins; in avs_tplg_parse_modcfg_ext()
887 struct snd_soc_tplg_vendor_array *tuples, in avs_tplg_parse_modcfgs_ext() argument
891 struct avs_tplg *tplg = acomp->tplg; in avs_tplg_parse_modcfgs_ext()
894 ret = parse_dictionary_header(comp, tuples, (void **)&tplg->modcfgs_ext, in avs_tplg_parse_modcfgs_ext()
895 &tplg->num_modcfgs_ext, in avs_tplg_parse_modcfgs_ext()
896 sizeof(*tplg->modcfgs_ext), in avs_tplg_parse_modcfgs_ext()
901 block_size -= le32_to_cpu(tuples->size); in avs_tplg_parse_modcfgs_ext()
903 tuples = avs_tplg_vendor_array_next(tuples); in avs_tplg_parse_modcfgs_ext()
905 for (i = 0; i < tplg->num_modcfgs_ext; i++) { in avs_tplg_parse_modcfgs_ext()
906 struct avs_tplg_modcfg_ext *cfg = &tplg->modcfgs_ext[i]; in avs_tplg_parse_modcfgs_ext()
909 ret = avs_tplg_vendor_entry_size(tuples, block_size, in avs_tplg_parse_modcfgs_ext()
914 ret = avs_tplg_parse_modcfg_ext(comp, cfg, tuples, esize); in avs_tplg_parse_modcfgs_ext()
918 block_size -= esize; in avs_tplg_parse_modcfgs_ext()
919 tuples = avs_tplg_vendor_array_at(tuples, esize); in avs_tplg_parse_modcfgs_ext()
959 struct snd_soc_tplg_vendor_array *tuples, in avs_tplg_parse_pplcfgs() argument
963 struct avs_tplg *tplg = acomp->tplg; in avs_tplg_parse_pplcfgs()
965 return parse_dictionary(comp, tuples, block_size, (void **)&tplg->pplcfgs, in avs_tplg_parse_pplcfgs()
966 &tplg->num_pplcfgs, sizeof(*tplg->pplcfgs), in avs_tplg_parse_pplcfgs()
1024 struct snd_soc_tplg_vendor_array *tuples, in avs_tplg_parse_bindings() argument
1028 struct avs_tplg *tplg = acomp->tplg; in avs_tplg_parse_bindings()
1030 return parse_dictionary(comp, tuples, block_size, (void **)&tplg->bindings, in avs_tplg_parse_bindings()
1031 &tplg->num_bindings, sizeof(*tplg->bindings), in avs_tplg_parse_bindings()
1084 struct snd_soc_tplg_vendor_array *tuples, u32 block_size) in avs_tplg_module_create() argument
1089 module = devm_kzalloc(comp->card->dev, sizeof(*module), GFP_KERNEL); in avs_tplg_module_create()
1091 return ERR_PTR(-ENOMEM); in avs_tplg_module_create()
1094 ARRAY_SIZE(module_parsers), tuples, block_size); in avs_tplg_module_create()
1098 module->owner = owner; in avs_tplg_module_create()
1099 INIT_LIST_HEAD(&module->node); in avs_tplg_module_create()
1129 .offset = 0, /* to treat pipeline->bindings as dictionary */
1136 struct snd_soc_tplg_vendor_array *tuples, u32 block_size) in avs_tplg_pipeline_create() argument
1142 pipeline = devm_kzalloc(comp->card->dev, sizeof(*pipeline), GFP_KERNEL); in avs_tplg_pipeline_create()
1144 return ERR_PTR(-ENOMEM); in avs_tplg_pipeline_create()
1146 pipeline->owner = owner; in avs_tplg_pipeline_create()
1147 INIT_LIST_HEAD(&pipeline->mod_list); in avs_tplg_pipeline_create()
1150 ret = avs_tplg_vendor_array_lookup(tuples, block_size, in avs_tplg_pipeline_create()
1153 ret = -EINVAL; in avs_tplg_pipeline_create()
1159 ARRAY_SIZE(pipeline_parsers), tuples, offset); in avs_tplg_pipeline_create()
1163 block_size -= offset; in avs_tplg_pipeline_create()
1164 tuples = avs_tplg_vendor_array_at(tuples, offset); in avs_tplg_pipeline_create()
1167 ret = avs_tplg_vendor_array_lookup_next(tuples, block_size, in avs_tplg_pipeline_create()
1170 if (ret != -ENOENT) in avs_tplg_pipeline_create()
1174 if (pipeline->num_bindings) in avs_tplg_pipeline_create()
1175 return ERR_PTR(-EINVAL); in avs_tplg_pipeline_create()
1179 pipeline->bindings = devm_kcalloc(comp->card->dev, pipeline->num_bindings, in avs_tplg_pipeline_create()
1180 sizeof(*pipeline->bindings), GFP_KERNEL); in avs_tplg_pipeline_create()
1181 if (!pipeline->bindings) in avs_tplg_pipeline_create()
1182 return ERR_PTR(-ENOMEM); in avs_tplg_pipeline_create()
1187 block_size -= modblk_size; in avs_tplg_pipeline_create()
1192 ret = avs_tplg_vendor_entry_size(tuples, modblk_size, in avs_tplg_pipeline_create()
1197 module = avs_tplg_module_create(comp, pipeline, tuples, esize); in avs_tplg_pipeline_create()
1199 dev_err(comp->dev, "parse module failed: %ld\n", in avs_tplg_pipeline_create()
1204 list_add_tail(&module->node, &pipeline->mod_list); in avs_tplg_pipeline_create()
1205 modblk_size -= esize; in avs_tplg_pipeline_create()
1206 tuples = avs_tplg_vendor_array_at(tuples, esize); in avs_tplg_pipeline_create()
1210 ret = parse_dictionary_entries(comp, tuples, block_size, pipeline->bindings, in avs_tplg_pipeline_create()
1211 pipeline->num_bindings, sizeof(*pipeline->bindings), in avs_tplg_pipeline_create()
1243 struct snd_soc_tplg_vendor_array *tuples, u32 block_size, in avs_tplg_path_create() argument
1251 path = devm_kzalloc(comp->card->dev, sizeof(*path), GFP_KERNEL); in avs_tplg_path_create()
1253 return ERR_PTR(-ENOMEM); in avs_tplg_path_create()
1255 path->owner = owner; in avs_tplg_path_create()
1256 INIT_LIST_HEAD(&path->ppl_list); in avs_tplg_path_create()
1257 INIT_LIST_HEAD(&path->node); in avs_tplg_path_create()
1260 ret = avs_tplg_vendor_array_lookup(tuples, block_size, in avs_tplg_path_create()
1262 if (ret == -ENOENT) in avs_tplg_path_create()
1267 return ERR_PTR(-EINVAL); in avs_tplg_path_create()
1270 ret = avs_parse_tokens(comp, path, parsers, num_parsers, tuples, offset); in avs_tplg_path_create()
1274 block_size -= offset; in avs_tplg_path_create()
1275 tuples = avs_tplg_vendor_array_at(tuples, offset); in avs_tplg_path_create()
1279 ret = avs_tplg_vendor_entry_size(tuples, block_size, in avs_tplg_path_create()
1284 pipeline = avs_tplg_pipeline_create(comp, path, tuples, esize); in avs_tplg_path_create()
1286 dev_err(comp->dev, "parse pipeline failed: %ld\n", in avs_tplg_path_create()
1291 list_add_tail(&pipeline->node, &path->ppl_list); in avs_tplg_path_create()
1292 block_size -= esize; in avs_tplg_path_create()
1293 tuples = avs_tplg_vendor_array_at(tuples, esize); in avs_tplg_path_create()
1309 struct snd_soc_tplg_vendor_array *tuples, u32 block_size, in parse_path_template() argument
1319 ret = avs_tplg_vendor_array_lookup(tuples, block_size, in parse_path_template()
1325 ret = avs_parse_tokens(comp, template, tmpl_tokens, num_tmpl_tokens, tuples, offset); in parse_path_template()
1329 block_size -= offset; in parse_path_template()
1330 tuples = avs_tplg_vendor_array_at(tuples, offset); in parse_path_template()
1334 ret = avs_tplg_vendor_entry_size(tuples, block_size, in parse_path_template()
1339 path = avs_tplg_path_create(comp, template, tuples, esize, path_tokens, in parse_path_template()
1342 dev_err(comp->dev, "parse path failed: %ld\n", PTR_ERR(path)); in parse_path_template()
1346 list_add_tail(&path->node, &template->path_list); in parse_path_template()
1347 block_size -= esize; in parse_path_template()
1348 tuples = avs_tplg_vendor_array_at(tuples, esize); in parse_path_template()
1356 struct snd_soc_tplg_vendor_array *tuples, u32 block_size) in avs_tplg_path_template_create() argument
1361 template = devm_kzalloc(comp->card->dev, sizeof(*template), GFP_KERNEL); in avs_tplg_path_template_create()
1363 return ERR_PTR(-ENOMEM); in avs_tplg_path_template_create()
1365 template->owner = owner; /* Used to access component tplg is assigned to. */ in avs_tplg_path_template_create()
1366 INIT_LIST_HEAD(&template->path_list); in avs_tplg_path_template_create()
1367 INIT_LIST_HEAD(&template->node); in avs_tplg_path_template_create()
1369 ret = parse_path_template(comp, tuples, block_size, template, path_tmpl_parsers, in avs_tplg_path_template_create()
1381 struct snd_soc_acpi_mach *mach = dev_get_platdata(comp->card->dev); in avs_route_load()
1387 if (hweight_long(mach->mach_params.i2s_link_mask) == 1) { in avs_route_load()
1388 port = __ffs(mach->mach_params.i2s_link_mask); in avs_route_load()
1390 snprintf(buf, len, route->source, port); in avs_route_load()
1391 strscpy((char *)route->source, buf, len); in avs_route_load()
1392 snprintf(buf, len, route->sink, port); in avs_route_load()
1393 strscpy((char *)route->sink, buf, len); in avs_route_load()
1394 if (route->control) { in avs_route_load()
1395 snprintf(buf, len, route->control, port); in avs_route_load()
1396 strscpy((char *)route->control, buf, len); in avs_route_load()
1412 if (!le32_to_cpu(dw->priv.size)) in avs_widget_load()
1415 w->no_wname_in_kcontrol_name = true; in avs_widget_load()
1417 if (w->ignore_suspend && !AVS_S0IX_SUPPORTED) { in avs_widget_load()
1418 dev_info_once(comp->dev, "Device does not support S0IX, check BIOS settings\n"); in avs_widget_load()
1419 w->ignore_suspend = false; in avs_widget_load()
1422 tplg = acomp->tplg; in avs_widget_load()
1423 mach = dev_get_platdata(comp->card->dev); in avs_widget_load()
1426 if (hweight_long(mach->mach_params.i2s_link_mask) == 1) { in avs_widget_load()
1427 kfree(w->name); in avs_widget_load()
1428 /* w->name is freed later by soc_tplg_dapm_widget_create() */ in avs_widget_load()
1429 w->name = kasprintf(GFP_KERNEL, dw->name, __ffs(mach->mach_params.i2s_link_mask)); in avs_widget_load()
1430 if (!w->name) in avs_widget_load()
1431 return -ENOMEM; in avs_widget_load()
1434 template = avs_tplg_path_template_create(comp, tplg, dw->priv.array, in avs_widget_load()
1435 le32_to_cpu(dw->priv.size)); in avs_widget_load()
1437 dev_err(comp->dev, "widget %s load failed: %ld\n", dw->name, in avs_widget_load()
1442 w->priv = template; /* link path information to widget */ in avs_widget_load()
1443 list_add_tail(&template->node, &tplg->path_tmpl_list); in avs_widget_load()
1451 struct avs_tplg_path_template *template = w->priv; in avs_widget_ready()
1453 template->w = w; in avs_widget_ready()
1462 dai_drv->ops = &avs_dai_fe_ops; in avs_dai_load()
1469 if (link->ignore_suspend && !AVS_S0IX_SUPPORTED) { in avs_link_load()
1470 dev_info_once(comp->dev, "Device does not support S0IX, check BIOS settings\n"); in avs_link_load()
1471 link->ignore_suspend = false; in avs_link_load()
1474 if (!link->no_pcm) { in avs_link_load()
1476 link->nonatomic = true; in avs_link_load()
1479 link->trigger[0] = SND_SOC_DPCM_TRIGGER_PRE; in avs_link_load()
1480 link->trigger[1] = SND_SOC_DPCM_TRIGGER_PRE; in avs_link_load()
1504 struct snd_soc_tplg_vendor_array *tuples = manifest->priv.array; in avs_manifest() local
1506 size_t remaining = le32_to_cpu(manifest->priv.size); in avs_manifest()
1510 ret = avs_tplg_vendor_array_lookup(tuples, remaining, in avs_manifest()
1514 ret = -EINVAL; in avs_manifest()
1516 dev_err(comp->dev, "incorrect manifest format: %d\n", ret); in avs_manifest()
1521 ret = avs_parse_tokens(comp, acomp->tplg, manifest_parsers, in avs_manifest()
1522 ARRAY_SIZE(manifest_parsers), tuples, offset); in avs_manifest()
1526 remaining -= offset; in avs_manifest()
1527 tuples = avs_tplg_vendor_array_at(tuples, offset); in avs_manifest()
1529 ret = avs_tplg_vendor_array_lookup(tuples, remaining, in avs_manifest()
1532 dev_err(comp->dev, "audio formats lookup failed: %d\n", ret); in avs_manifest()
1537 ret = avs_tplg_parse_libraries(comp, tuples, offset); in avs_manifest()
1541 remaining -= offset; in avs_manifest()
1542 tuples = avs_tplg_vendor_array_at(tuples, offset); in avs_manifest()
1544 ret = avs_tplg_vendor_array_lookup(tuples, remaining, in avs_manifest()
1547 dev_err(comp->dev, "modcfgs_base lookup failed: %d\n", ret); in avs_manifest()
1552 ret = avs_tplg_parse_audio_formats(comp, tuples, offset); in avs_manifest()
1556 remaining -= offset; in avs_manifest()
1557 tuples = avs_tplg_vendor_array_at(tuples, offset); in avs_manifest()
1559 ret = avs_tplg_vendor_array_lookup(tuples, remaining, in avs_manifest()
1562 dev_err(comp->dev, "modcfgs_ext lookup failed: %d\n", ret); in avs_manifest()
1566 /* Module configs-base dictionary. */ in avs_manifest()
1567 ret = avs_tplg_parse_modcfgs_base(comp, tuples, offset); in avs_manifest()
1571 remaining -= offset; in avs_manifest()
1572 tuples = avs_tplg_vendor_array_at(tuples, offset); in avs_manifest()
1574 ret = avs_tplg_vendor_array_lookup(tuples, remaining, in avs_manifest()
1577 dev_err(comp->dev, "pplcfgs lookup failed: %d\n", ret); in avs_manifest()
1581 /* Module configs-ext dictionary. */ in avs_manifest()
1582 ret = avs_tplg_parse_modcfgs_ext(comp, tuples, offset); in avs_manifest()
1586 remaining -= offset; in avs_manifest()
1587 tuples = avs_tplg_vendor_array_at(tuples, offset); in avs_manifest()
1589 ret = avs_tplg_vendor_array_lookup(tuples, remaining, in avs_manifest()
1592 dev_err(comp->dev, "bindings lookup failed: %d\n", ret); in avs_manifest()
1597 ret = avs_tplg_parse_pplcfgs(comp, tuples, offset); in avs_manifest()
1601 remaining -= offset; in avs_manifest()
1602 tuples = avs_tplg_vendor_array_at(tuples, offset); in avs_manifest()
1605 return avs_tplg_parse_bindings(comp, tuples, remaining); in avs_manifest()
1631 struct snd_soc_tplg_vendor_array *tuples; in avs_control_load() local
1638 switch (le32_to_cpu(hdr->type)) { in avs_control_load()
1641 tuples = tmc->priv.array; in avs_control_load()
1642 block_size = le32_to_cpu(tmc->priv.size); in avs_control_load()
1645 return -EINVAL; in avs_control_load()
1648 ctl_data = devm_kzalloc(comp->card->dev, sizeof(*ctl_data), GFP_KERNEL); in avs_control_load()
1650 return -ENOMEM; in avs_control_load()
1652 ret = parse_dictionary_entries(comp, tuples, block_size, ctl_data, 1, sizeof(*ctl_data), in avs_control_load()
1658 mc = (struct soc_mixer_control *)ctmpl->private_value; in avs_control_load()
1659 mc->dobj.private = ctl_data; in avs_control_load()
1679 tplg = devm_kzalloc(comp->card->dev, sizeof(*tplg), GFP_KERNEL); in avs_tplg_new()
1683 tplg->comp = comp; in avs_tplg_new()
1684 INIT_LIST_HEAD(&tplg->path_tmpl_list); in avs_tplg_new()
1694 ret = request_firmware(&fw, filename, comp->dev); in avs_load_topology()
1696 dev_err(comp->dev, "request topology \"%s\" failed: %d\n", filename, ret); in avs_load_topology()
1702 dev_err(comp->dev, "load topology \"%s\" failed: %d\n", filename, ret); in avs_load_topology()