Lines Matching refs:scomp

46  * @scomp: pointer to SOC component
56 int sof_update_ipc_object(struct snd_soc_component *scomp, void *object, enum sof_tokens token_id,
60 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp);
72 dev_err(scomp->dev, "Invalid token count for token ID: %d\n", token_id);
82 dev_err(scomp->dev, "Invalid tokens for token id: %d\n", token_id);
113 dev_err(scomp->dev,
273 struct snd_soc_component *scomp = scontrol->scomp;
274 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp);
280 dev_err(scomp->dev, "Mandatory op %s not set\n", __func__);
447 * @scomp: pointer to soc component
456 static int sof_parse_uuid_tokens(struct snd_soc_component *scomp,
618 * @scomp: pointer to soc component
627 static int sof_parse_string_tokens(struct snd_soc_component *scomp,
664 * @scomp: pointer to soc component
673 static int sof_parse_word_tokens(struct snd_soc_component *scomp,
711 * @scomp: pointer to soc component
724 static int sof_parse_token_sets(struct snd_soc_component *scomp,
740 dev_err(scomp->dev, "error: invalid array size 0x%x\n",
748 dev_err(scomp->dev, "error: invalid array size 0x%x\n",
756 found += sof_parse_uuid_tokens(scomp, object, offset, tokens, count,
761 ret = sof_parse_string_tokens(scomp, object, offset, tokens, count,
764 dev_err(scomp->dev, "error: no memory to copy string token\n");
774 found += sof_parse_word_tokens(scomp, object, offset, tokens, count,
778 dev_err(scomp->dev, "error: unknown token type %u\n",
800 * @scomp: pointer to soc component
810 static int sof_parse_tokens(struct snd_soc_component *scomp, void *object,
822 return sof_parse_token_sets(scomp, object, tokens, num_tokens, array,
830 static int sof_control_load_volume(struct snd_soc_component *scomp,
835 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp);
866 dev_err(scomp->dev, "error: invalid TLV data\n");
873 dev_err(scomp->dev, "error: setting up volume table\n");
879 ret = sof_parse_tokens(scomp, &scontrol->led_ctl, led_tokens,
883 dev_err(scomp->dev, "error: parse led tokens failed %u\n",
898 dev_dbg(scomp->dev, "tplg: load kcontrol index %d chans %d\n",
910 static int sof_control_load_enum(struct snd_soc_component *scomp,
915 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp);
926 dev_dbg(scomp->dev, "tplg: load kcontrol index %d chans %d comp_id %d\n",
932 static int sof_control_load_bytes(struct snd_soc_component *scomp,
937 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp);
946 dev_dbg(scomp->dev, "tplg: load kcontrol index %d\n", scontrol->comp_id);
961 static int sof_control_load(struct snd_soc_component *scomp, int index,
968 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp);
973 dev_dbg(scomp->dev, "tplg: load control type %u name : %s\n",
986 scontrol->scomp = scomp;
997 ret = sof_control_load_volume(scomp, scontrol, kc, hdr);
1002 ret = sof_control_load_bytes(scomp, scontrol, kc, hdr);
1008 ret = sof_control_load_enum(scomp, scontrol, kc, hdr);
1018 dev_warn(scomp->dev, "control type not supported %u:%u:%u\n",
1040 static int sof_control_unload(struct snd_soc_component *scomp,
1043 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp);
1048 dev_dbg(scomp->dev, "tplg: unload control name : %s\n", scontrol->name);
1053 dev_err(scomp->dev, "failed to free control: %s\n", scontrol->name);
1070 static int sof_connect_dai_widget(struct snd_soc_component *scomp,
1075 struct snd_soc_card *card = scomp->card;
1082 dev_err(scomp->dev, "Widget %s does not have stream\n", w->name);
1121 dev_err(scomp->dev, "error: can't find BE for DAI %s\n", w->name);
1127 dev_dbg(scomp->dev, "tplg: connected widget %s -> DAI link %s\n",
1133 dev_err(scomp->dev, "error: can't connect DAI %s stream %s\n",
1141 static void sof_disconnect_dai_widget(struct snd_soc_component *scomp,
1144 struct snd_soc_card *card = scomp->card;
1175 static int spcm_bind(struct snd_soc_component *scomp, struct snd_sof_pcm *spcm,
1178 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp);
1184 host_widget = snd_sof_find_swidget_sname(scomp,
1188 dev_err(scomp->dev, "can't find host comp to bind pcm\n");
1212 static int sof_widget_parse_tokens(struct snd_soc_component *scomp, struct snd_sof_widget *swidget,
1216 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp);
1229 dev_err(scomp->dev, "No token list for widget %s\n", swidget->widget->name);
1247 dev_err(scomp->dev, "Invalid token id %d for widget %s\n",
1256 ret = sof_parse_tokens(scomp, swidget,
1261 dev_err(scomp->dev, "Failed parsing %s for widget %s\n",
1311 dev_err(scomp->dev, "Failed parsing %s for widget %s err: %d\n",
1368 ret = sof_parse_token_sets(swidget->scomp, pin_binding, pin_binding_token,
1411 static int sof_widget_ready(struct snd_soc_component *scomp, int index,
1415 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp);
1429 swidget->scomp = scomp;
1440 ret = sof_parse_tokens(scomp, w, dapm_widget_tokens, ARRAY_SIZE(dapm_widget_tokens),
1443 dev_err(scomp->dev, "failed to parse dapm widget tokens for %s\n",
1448 ret = sof_parse_tokens(scomp, swidget, comp_pin_tokens,
1452 dev_err(scomp->dev, "failed to parse component pin tokens for %s\n",
1459 dev_err(scomp->dev, "invalid pins for %s: [input: %d, output: %d]\n",
1469 dev_err(scomp->dev, "failed to parse input pin binding for %s\n",
1479 dev_err(scomp->dev, "failed to parse output pin binding for %s\n",
1485 dev_dbg(scomp->dev,
1507 ret = sof_widget_parse_tokens(scomp, swidget, tw, token_list, token_list_size);
1509 ret = sof_connect_dai_widget(scomp, w, tw, dai);
1520 dev_err(scomp->dev, "error: process tokens not found\n");
1524 ret = sof_widget_parse_tokens(scomp, swidget, tw, token_list, token_list_size);
1528 dev_err(scomp->dev, "invalid kcontrol count %u for volume\n",
1545 ret = sof_widget_parse_tokens(scomp, swidget, tw, token_list, token_list_size);
1551 dev_dbg(scomp->dev, "widget type %d name %s not handled\n", swidget->id, tw->name);
1557 dev_err(scomp->dev,
1577 ret = widget_ops[w->id].bind_event(scomp, swidget,
1580 dev_err(scomp->dev, "widget event binding failed for %s\n",
1613 static int sof_route_unload(struct snd_soc_component *scomp,
1630 static int sof_widget_unload(struct snd_soc_component *scomp,
1633 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp);
1660 sof_disconnect_dai_widget(scomp, widget);
1693 dev_warn(scomp->dev, "unsupported kcontrol_type\n");
1728 static int sof_dai_load(struct snd_soc_component *scomp, int index,
1732 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp);
1748 spcm->scomp = scomp;
1759 dev_dbg(scomp->dev, "tplg: load pcm %s\n", pcm->dai_name);
1773 ret = sof_parse_tokens(scomp, spcm, stream_tokens,
1777 dev_err(scomp->dev, "error: parse stream tokens failed %u\n",
1794 dev_err(scomp->dev, "error: can't alloc page table for %s %d\n",
1801 ret = spcm_bind(scomp, spcm, stream);
1803 dev_err(scomp->dev,
1821 dev_err(scomp->dev, "error: can't alloc page table for %s %d\n",
1827 ret = spcm_bind(scomp, spcm, stream);
1829 dev_err(scomp->dev,
1844 static int sof_dai_unload(struct snd_soc_component *scomp,
1847 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp);
1875 static int sof_link_load(struct snd_soc_component *scomp, int index, struct snd_soc_dai_link *link,
1878 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp);
1888 dev_err(scomp->dev, "error: no platforms\n");
1891 link->platforms->name = dev_name(scomp->dev);
1907 dev_err(scomp->dev, "error: expected tokens for DAI, none found\n");
1921 dev_dbg(scomp->dev, "tplg: %d hw_configs found, default id: %d for dai link %s!\n",
1924 ret = sof_parse_tokens(scomp, slink, common_dai_link_tokens,
1928 dev_err(scomp->dev, "Failed tp parse common DAI link tokens\n");
2009 dev_err(scomp->dev, "failed to parse %s for dai link %s\n",
2023 dev_err(scomp->dev, "failed to parse %s for dai link %s\n",
2043 dev_err(scomp->dev, "failed to parse %s for dai link %s\n",
2061 static int sof_link_unload(struct snd_soc_component *scomp, struct snd_soc_dobj *dobj)
2079 static int sof_route_load(struct snd_soc_component *scomp, int index,
2082 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp);
2093 sroute->scomp = scomp;
2094 dev_dbg(scomp->dev, "sink %s control %s source %s\n",
2099 source_swidget = snd_sof_find_swidget(scomp, (char *)route->source);
2101 dev_err(scomp->dev, "source %s for sink %s is not found\n",
2118 sink_swidget = snd_sof_find_swidget(scomp, (char *)route->sink);
2120 dev_err(scomp->dev, "sink %s for source %s is not found\n",
2184 static int sof_complete(struct snd_soc_component *scomp)
2186 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp);
2271 static int sof_manifest(struct snd_soc_component *scomp, int index,
2274 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp);
2278 return tplg_ops->parse_manifest(scomp, index, man);
2369 static int sof_dspless_widget_ready(struct snd_soc_component *scomp, int index,
2377 ret = sof_parse_tokens(scomp, w, dapm_widget_tokens,
2381 dev_err(scomp->dev, "failed to parse dapm widget tokens for %s\n",
2389 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp);
2403 ret = sof_parse_tokens(scomp, &sdai->type, dai_tokens, ARRAY_SIZE(dai_tokens),
2406 dev_err(scomp->dev, "Failed to parse DAI tokens for %s\n", tw->name);
2412 ret = sof_connect_dai_widget(scomp, w, tw, sdai);
2419 swidget->scomp = scomp;
2430 static int sof_dspless_widget_unload(struct snd_soc_component *scomp,
2438 sof_disconnect_dai_widget(scomp, w);
2452 static int sof_dspless_link_load(struct snd_soc_component *scomp, int index,
2456 link->platforms->name = dev_name(scomp->dev);
2486 int snd_sof_load_topology(struct snd_soc_component *scomp, const char *file)
2488 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp);
2497 tplg_files = kcalloc(scomp->card->num_links, sizeof(char *), GFP_KERNEL);
2518 tplg_cnt = sof_pdata->machine->get_function_tplg_files(scomp->card,
2535 dev_err(scomp->dev,
2541 dev_info(scomp->dev, "loading topology: %s\n", file);
2543 dev_info(scomp->dev, "Using function topologies instead %s\n", file);
2549 dev_info(scomp->dev, "loading topology %d: %s\n", i, tplg_files[i]);
2551 ret = request_firmware(&fw, tplg_files[i], scomp->dev);
2554 * snd_soc_tplg_component_remove(scomp) will be called
2555 * if snd_soc_tplg_component_load(scomp) failed and all
2556 * objects in the scomp will be removed. No need to call
2557 * snd_soc_tplg_component_remove(scomp) here.
2559 dev_err(scomp->dev, "tplg request firmware %s failed err: %d\n",
2565 ret = snd_soc_tplg_component_load(scomp, &sof_dspless_tplg_ops, fw);
2567 ret = snd_soc_tplg_component_load(scomp, &sof_tplg_ops, fw);
2572 dev_err(scomp->dev, "tplg %s component load failed %d\n",
2579 ret = sof_complete(scomp);