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