Lines Matching refs:scomp

61 	struct snd_soc_component *scomp = swidget->scomp;  in ipc_pcm_params()  local
62 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in ipc_pcm_params()
71 spcm = snd_sof_find_spcm_name(scomp, swidget->widget->sname); in ipc_pcm_params()
73 dev_err(scomp->dev, "error: cannot find PCM for %s\n", in ipc_pcm_params()
111 dev_err(scomp->dev, "error: pcm params failed for %s\n", in ipc_pcm_params()
120 struct snd_soc_component *scomp = swidget->scomp; in ipc_trigger() local
121 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in ipc_trigger()
135 dev_err(scomp->dev, "error: failed to trigger %s\n", in ipc_trigger()
145 struct snd_soc_component *scomp; in sof_keyword_dapm_event() local
153 scomp = swidget->scomp; in sof_keyword_dapm_event()
155 dev_dbg(scomp->dev, "received event %d for widget %s\n", in sof_keyword_dapm_event()
159 spcm = snd_sof_find_spcm_name(scomp, swidget->widget->sname); in sof_keyword_dapm_event()
161 dev_err(scomp->dev, "error: cannot find PCM for %s\n", in sof_keyword_dapm_event()
170 dev_dbg(scomp->dev, "PRE_PMU event ignored, KWD pipeline is already RUNNING\n"); in sof_keyword_dapm_event()
177 dev_err(scomp->dev, in sof_keyword_dapm_event()
186 dev_err(scomp->dev, in sof_keyword_dapm_event()
192 dev_dbg(scomp->dev, "POST_PMD even ignored, KWD pipeline will remain RUNNING\n"); in sof_keyword_dapm_event()
199 dev_err(scomp->dev, in sof_keyword_dapm_event()
206 dev_err(scomp->dev, in sof_keyword_dapm_event()
800 static int sof_parse_uuid_tokens(struct snd_soc_component *scomp, in sof_parse_uuid_tokens() argument
837 static int sof_parse_string_tokens(struct snd_soc_component *scomp, in sof_parse_string_tokens() argument
874 static int sof_parse_word_tokens(struct snd_soc_component *scomp, in sof_parse_word_tokens() argument
928 static int sof_parse_token_sets(struct snd_soc_component *scomp, in sof_parse_token_sets() argument
945 dev_err(scomp->dev, "error: invalid array size 0x%x\n", in sof_parse_token_sets()
953 dev_err(scomp->dev, "error: invalid array size 0x%x\n", in sof_parse_token_sets()
961 found += sof_parse_uuid_tokens(scomp, object, tokens, in sof_parse_token_sets()
965 found += sof_parse_string_tokens(scomp, object, tokens, in sof_parse_token_sets()
972 found += sof_parse_word_tokens(scomp, object, tokens, in sof_parse_token_sets()
976 dev_err(scomp->dev, "error: unknown token type %d\n", in sof_parse_token_sets()
996 static int sof_parse_tokens(struct snd_soc_component *scomp, in sof_parse_tokens() argument
1009 return sof_parse_token_sets(scomp, object, tokens, count, array, in sof_parse_tokens()
1013 static void sof_dbg_comp_config(struct snd_soc_component *scomp, in sof_dbg_comp_config() argument
1016 dev_dbg(scomp->dev, " config: periods snk %d src %d fmt %d\n", in sof_dbg_comp_config()
1025 static int sof_control_load_volume(struct snd_soc_component *scomp, in sof_control_load_volume() argument
1030 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_control_load_volume()
1078 dev_err(scomp->dev, "error: invalid TLV data\n"); in sof_control_load_volume()
1086 dev_err(scomp->dev, "error: setting up volume table\n"); in sof_control_load_volume()
1099 ret = sof_parse_tokens(scomp, &scontrol->led_ctl, led_tokens, in sof_control_load_volume()
1103 dev_err(scomp->dev, "error: parse led tokens failed %d\n", in sof_control_load_volume()
1108 dev_dbg(scomp->dev, "tplg: load kcontrol index %d chans %d\n", in sof_control_load_volume()
1122 static int sof_control_load_enum(struct snd_soc_component *scomp, in sof_control_load_enum() argument
1127 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_control_load_enum()
1147 dev_dbg(scomp->dev, "tplg: load kcontrol index %d chans %d comp_id %d\n", in sof_control_load_enum()
1153 static int sof_control_load_bytes(struct snd_soc_component *scomp, in sof_control_load_bytes() argument
1158 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_control_load_bytes()
1175 dev_err(scomp->dev, "err: bytes data size %zu exceeds max %zu.\n", in sof_control_load_bytes()
1194 dev_dbg(scomp->dev, "tplg: load kcontrol index %d chans %d\n", in sof_control_load_bytes()
1202 dev_err(scomp->dev, "error: Wrong ABI magic 0x%08x.\n", in sof_control_load_bytes()
1209 dev_err(scomp->dev, in sof_control_load_bytes()
1217 dev_err(scomp->dev, in sof_control_load_bytes()
1233 static int sof_control_load(struct snd_soc_component *scomp, int index, in sof_control_load() argument
1240 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_control_load()
1245 dev_dbg(scomp->dev, "tplg: load control type %d name : %s\n", in sof_control_load()
1252 scontrol->scomp = scomp; in sof_control_load()
1260 ret = sof_control_load_volume(scomp, scontrol, kc, hdr); in sof_control_load()
1265 ret = sof_control_load_bytes(scomp, scontrol, kc, hdr); in sof_control_load()
1271 ret = sof_control_load_enum(scomp, scontrol, kc, hdr); in sof_control_load()
1281 dev_warn(scomp->dev, "control type not supported %d:%d:%d\n", in sof_control_load()
1299 static int sof_control_unload(struct snd_soc_component *scomp, in sof_control_unload() argument
1302 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_control_unload()
1306 dev_dbg(scomp->dev, "tplg: unload control name : %s\n", scomp->name); in sof_control_unload()
1388 static int sof_connect_dai_widget(struct snd_soc_component *scomp, in sof_connect_dai_widget() argument
1393 struct snd_soc_card *card = scomp->card; in sof_connect_dai_widget()
1399 dev_vdbg(scomp->dev, "tplg: check widget: %s stream: %s dai stream: %s\n", in sof_connect_dai_widget()
1423 dev_err(scomp->dev, "error: can't find BE for DAI %s\n", in sof_connect_dai_widget()
1429 dev_dbg(scomp->dev, "tplg: connected widget %s -> DAI link %s\n", in sof_connect_dai_widget()
1445 dev_err(scomp->dev, "error: can't find BE for DAI %s\n", in sof_connect_dai_widget()
1451 dev_dbg(scomp->dev, "tplg: connected widget %s -> DAI link %s\n", in sof_connect_dai_widget()
1461 dev_err(scomp->dev, "error: can't connect DAI %s stream %s\n", in sof_connect_dai_widget()
1512 static int sof_widget_load_dai(struct snd_soc_component *scomp, int index, in sof_widget_load_dai() argument
1518 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_widget_load_dai()
1533 ret = sof_parse_tokens(scomp, comp_dai, dai_tokens, in sof_widget_load_dai()
1537 dev_err(scomp->dev, "error: parse dai tokens failed %d\n", in sof_widget_load_dai()
1542 ret = sof_parse_tokens(scomp, &comp_dai->config, comp_tokens, in sof_widget_load_dai()
1546 dev_err(scomp->dev, "error: parse dai.cfg tokens failed %d\n", in sof_widget_load_dai()
1551 dev_dbg(scomp->dev, "dai %s: type %d index %d\n", in sof_widget_load_dai()
1553 sof_dbg_comp_config(scomp, &comp_dai->config); in sof_widget_load_dai()
1559 dai->scomp = scomp; in sof_widget_load_dai()
1578 static int sof_widget_load_buffer(struct snd_soc_component *scomp, int index, in sof_widget_load_buffer() argument
1583 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_widget_load_buffer()
1600 ret = sof_parse_tokens(scomp, buffer, buffer_tokens, in sof_widget_load_buffer()
1604 dev_err(scomp->dev, "error: parse buffer tokens failed %d\n", in sof_widget_load_buffer()
1610 dev_dbg(scomp->dev, "buffer %s: size %d caps 0x%x\n", in sof_widget_load_buffer()
1618 dev_err(scomp->dev, "error: buffer %s load failed\n", in sof_widget_load_buffer()
1627 static int spcm_bind(struct snd_soc_component *scomp, struct snd_sof_pcm *spcm, in spcm_bind() argument
1632 host_widget = snd_sof_find_swidget_sname(scomp, in spcm_bind()
1636 dev_err(scomp->dev, "can't find host comp to bind pcm\n"); in spcm_bind()
1649 static int sof_widget_load_pcm(struct snd_soc_component *scomp, int index, in sof_widget_load_pcm() argument
1655 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_widget_load_pcm()
1671 ret = sof_parse_tokens(scomp, host, pcm_tokens, in sof_widget_load_pcm()
1675 dev_err(scomp->dev, "error: parse host tokens failed %d\n", in sof_widget_load_pcm()
1680 ret = sof_parse_tokens(scomp, &host->config, comp_tokens, in sof_widget_load_pcm()
1684 dev_err(scomp->dev, "error: parse host.cfg tokens failed %d\n", in sof_widget_load_pcm()
1689 dev_dbg(scomp->dev, "loaded host %s\n", swidget->widget->name); in sof_widget_load_pcm()
1690 sof_dbg_comp_config(scomp, &host->config); in sof_widget_load_pcm()
1724 static int sof_widget_load_pipeline(struct snd_soc_component *scomp, int index, in sof_widget_load_pipeline() argument
1745 comp_swidget = snd_sof_find_swidget(scomp, tw->sname); in sof_widget_load_pipeline()
1747 dev_err(scomp->dev, "error: widget %s refers to non existent widget %s\n", in sof_widget_load_pipeline()
1755 dev_dbg(scomp->dev, "tplg: pipeline id %d comp %d scheduling comp id %d\n", in sof_widget_load_pipeline()
1758 ret = sof_parse_tokens(scomp, pipeline, sched_tokens, in sof_widget_load_pipeline()
1762 dev_err(scomp->dev, "error: parse pipeline tokens failed %d\n", in sof_widget_load_pipeline()
1767 dev_dbg(scomp->dev, "pipeline %s: period %d pri %d mips %d core %d frames %d\n", in sof_widget_load_pipeline()
1774 ret = sof_load_pipeline_ipc(scomp->dev, pipeline, r); in sof_widget_load_pipeline()
1786 static int sof_widget_load_mixer(struct snd_soc_component *scomp, int index, in sof_widget_load_mixer() argument
1791 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_widget_load_mixer()
1806 ret = sof_parse_tokens(scomp, &mixer->config, comp_tokens, in sof_widget_load_mixer()
1810 dev_err(scomp->dev, "error: parse mixer.cfg tokens failed %d\n", in sof_widget_load_mixer()
1816 sof_dbg_comp_config(scomp, &mixer->config); in sof_widget_load_mixer()
1831 static int sof_widget_load_mux(struct snd_soc_component *scomp, int index, in sof_widget_load_mux() argument
1836 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_widget_load_mux()
1851 ret = sof_parse_tokens(scomp, &mux->config, comp_tokens, in sof_widget_load_mux()
1855 dev_err(scomp->dev, "error: parse mux.cfg tokens failed %d\n", in sof_widget_load_mux()
1861 sof_dbg_comp_config(scomp, &mux->config); in sof_widget_load_mux()
1877 static int sof_widget_load_pga(struct snd_soc_component *scomp, int index, in sof_widget_load_pga() argument
1882 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_widget_load_pga()
1897 dev_err(scomp->dev, "error: invalid kcontrol count %d for volume\n", in sof_widget_load_pga()
1907 ret = sof_parse_tokens(scomp, volume, volume_tokens, in sof_widget_load_pga()
1911 dev_err(scomp->dev, "error: parse volume tokens failed %d\n", in sof_widget_load_pga()
1915 ret = sof_parse_tokens(scomp, &volume->config, comp_tokens, in sof_widget_load_pga()
1919 dev_err(scomp->dev, "error: parse volume.cfg tokens failed %d\n", in sof_widget_load_pga()
1924 sof_dbg_comp_config(scomp, &volume->config); in sof_widget_load_pga()
1953 static int sof_widget_load_src(struct snd_soc_component *scomp, int index, in sof_widget_load_src() argument
1958 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_widget_load_src()
1973 ret = sof_parse_tokens(scomp, src, src_tokens, in sof_widget_load_src()
1977 dev_err(scomp->dev, "error: parse src tokens failed %d\n", in sof_widget_load_src()
1982 ret = sof_parse_tokens(scomp, &src->config, comp_tokens, in sof_widget_load_src()
1986 dev_err(scomp->dev, "error: parse src.cfg tokens failed %d\n", in sof_widget_load_src()
1991 dev_dbg(scomp->dev, "src %s: source rate %d sink rate %d\n", in sof_widget_load_src()
1993 sof_dbg_comp_config(scomp, &src->config); in sof_widget_load_src()
2010 static int sof_widget_load_asrc(struct snd_soc_component *scomp, int index, in sof_widget_load_asrc() argument
2015 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_widget_load_asrc()
2030 ret = sof_parse_tokens(scomp, asrc, asrc_tokens, in sof_widget_load_asrc()
2034 dev_err(scomp->dev, "error: parse asrc tokens failed %d\n", in sof_widget_load_asrc()
2039 ret = sof_parse_tokens(scomp, &asrc->config, comp_tokens, in sof_widget_load_asrc()
2043 dev_err(scomp->dev, "error: parse asrc.cfg tokens failed %d\n", in sof_widget_load_asrc()
2048 dev_dbg(scomp->dev, "asrc %s: source rate %d sink rate %d " in sof_widget_load_asrc()
2052 sof_dbg_comp_config(scomp, &asrc->config); in sof_widget_load_asrc()
2069 static int sof_widget_load_siggen(struct snd_soc_component *scomp, int index, in sof_widget_load_siggen() argument
2074 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_widget_load_siggen()
2089 ret = sof_parse_tokens(scomp, tone, tone_tokens, in sof_widget_load_siggen()
2093 dev_err(scomp->dev, "error: parse tone tokens failed %d\n", in sof_widget_load_siggen()
2098 ret = sof_parse_tokens(scomp, &tone->config, comp_tokens, in sof_widget_load_siggen()
2102 dev_err(scomp->dev, "error: parse tone.cfg tokens failed %d\n", in sof_widget_load_siggen()
2107 dev_dbg(scomp->dev, "tone %s: frequency %d amplitude %d\n", in sof_widget_load_siggen()
2109 sof_dbg_comp_config(scomp, &tone->config); in sof_widget_load_siggen()
2122 static int sof_get_control_data(struct snd_soc_component *scomp, in sof_get_control_data() argument
2152 dev_err(scomp->dev, "error: unknown kcontrol type %u in widget %s\n", in sof_get_control_data()
2159 dev_err(scomp->dev, "error: no scontrol for widget %s\n", in sof_get_control_data()
2195 static int sof_process_load(struct snd_soc_component *scomp, int index, in sof_process_load() argument
2201 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_process_load()
2222 ret = sof_get_control_data(scomp, widget, wdata, in sof_process_load()
2248 ret = sof_parse_tokens(scomp, &process->config, comp_tokens, in sof_process_load()
2252 dev_err(scomp->dev, "error: parse process.cfg tokens failed %d\n", in sof_process_load()
2257 sof_dbg_comp_config(scomp, &process->config); in sof_process_load()
2280 dev_err(scomp->dev, "error: create process failed\n"); in sof_process_load()
2297 dev_err(scomp->dev, "error: send control failed\n"); in sof_process_load()
2315 static int sof_widget_load_process(struct snd_soc_component *scomp, int index, in sof_widget_load_process() argument
2326 dev_err(scomp->dev, "error: process tokens not found\n"); in sof_widget_load_process()
2334 ret = sof_parse_tokens(scomp, &config, process_tokens, in sof_widget_load_process()
2338 dev_err(scomp->dev, "error: parse process tokens failed %d\n", in sof_widget_load_process()
2344 ret = sof_process_load(scomp, index, swidget, tw, r, in sof_widget_load_process()
2347 dev_err(scomp->dev, "error: process loading failed\n"); in sof_widget_load_process()
2354 static int sof_widget_bind_event(struct snd_soc_component *scomp, in sof_widget_bind_event() argument
2380 dev_err(scomp->dev, in sof_widget_bind_event()
2387 static int sof_widget_ready(struct snd_soc_component *scomp, int index, in sof_widget_ready() argument
2391 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_widget_ready()
2405 swidget->scomp = scomp; in sof_widget_ready()
2414 dev_dbg(scomp->dev, "tplg: ready widget id %d pipe %d type %d name : %s stream %s\n", in sof_widget_ready()
2419 ret = sof_parse_tokens(scomp, &comp, core_tokens, in sof_widget_ready()
2423 dev_err(scomp->dev, "error: parsing core tokens failed %d\n", in sof_widget_ready()
2434 dev_err(scomp->dev, "error: enable core: %d\n", ret); in sof_widget_ready()
2439 ret = sof_parse_tokens(scomp, &swidget->comp_ext, comp_ext_tokens, in sof_widget_ready()
2443 dev_err(scomp->dev, "error: parsing comp_ext_tokens failed %d\n", in sof_widget_ready()
2459 ret = sof_widget_load_dai(scomp, index, swidget, tw, &reply, dai); in sof_widget_ready()
2461 sof_connect_dai_widget(scomp, w, tw, dai); in sof_widget_ready()
2469 ret = sof_widget_load_mixer(scomp, index, swidget, tw, &reply); in sof_widget_ready()
2472 ret = sof_widget_load_pga(scomp, index, swidget, tw, &reply); in sof_widget_ready()
2482 ret = sof_widget_load_buffer(scomp, index, swidget, tw, &reply); in sof_widget_ready()
2485 ret = sof_widget_load_pipeline(scomp, index, swidget, tw, &reply); in sof_widget_ready()
2488 ret = sof_widget_load_pcm(scomp, index, swidget, in sof_widget_ready()
2492 ret = sof_widget_load_pcm(scomp, index, swidget, in sof_widget_ready()
2496 ret = sof_widget_load_src(scomp, index, swidget, tw, &reply); in sof_widget_ready()
2499 ret = sof_widget_load_asrc(scomp, index, swidget, tw, &reply); in sof_widget_ready()
2502 ret = sof_widget_load_siggen(scomp, index, swidget, tw, &reply); in sof_widget_ready()
2505 ret = sof_widget_load_process(scomp, index, swidget, tw, &reply); in sof_widget_ready()
2509 ret = sof_widget_load_mux(scomp, index, swidget, tw, &reply); in sof_widget_ready()
2515 dev_dbg(scomp->dev, "widget type %d name %s not handled\n", swidget->id, tw->name); in sof_widget_ready()
2521 dev_err(scomp->dev, in sof_widget_ready()
2532 ret = sof_widget_bind_event(scomp, swidget, in sof_widget_ready()
2535 dev_err(scomp->dev, "error: widget event binding failed\n"); in sof_widget_ready()
2547 static int sof_route_unload(struct snd_soc_component *scomp, in sof_route_unload() argument
2564 static int sof_widget_unload(struct snd_soc_component *scomp, in sof_widget_unload() argument
2567 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_widget_unload()
2603 dev_err(scomp->dev, "error: powering down pipeline schedule core %d\n", in sof_widget_unload()
2627 dev_warn(scomp->dev, "unsupported kcontrol_type\n"); in sof_widget_unload()
2651 static int sof_dai_load(struct snd_soc_component *scomp, int index, in sof_dai_load() argument
2655 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_dai_load()
2670 spcm->scomp = scomp; in sof_dai_load()
2679 dev_dbg(scomp->dev, "tplg: load pcm %s\n", pcm->dai_name); in sof_dai_load()
2684 ret = sof_parse_tokens(scomp, spcm, stream_tokens, in sof_dai_load()
2688 dev_err(scomp->dev, "error: parse stream tokens failed %d\n", in sof_dai_load()
2699 dev_vdbg(scomp->dev, "tplg: pcm %s stream tokens: playback d0i3:%d\n", in sof_dai_load()
2708 dev_err(scomp->dev, "error: can't alloc page table for %s %d\n", in sof_dai_load()
2715 ret = spcm_bind(scomp, spcm, stream); in sof_dai_load()
2717 dev_err(scomp->dev, in sof_dai_load()
2729 dev_vdbg(scomp->dev, "tplg: pcm %s stream tokens: capture d0i3:%d\n", in sof_dai_load()
2738 dev_err(scomp->dev, "error: can't alloc page table for %s %d\n", in sof_dai_load()
2744 ret = spcm_bind(scomp, spcm, stream); in sof_dai_load()
2746 dev_err(scomp->dev, in sof_dai_load()
2761 static int sof_dai_unload(struct snd_soc_component *scomp, in sof_dai_unload() argument
2891 static int sof_link_ssp_load(struct snd_soc_component *scomp, int index, in sof_link_ssp_load() argument
2897 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_link_ssp_load()
2907 ret = sof_parse_token_sets(scomp, &config->ssp, ssp_tokens, in sof_link_ssp_load()
2913 dev_err(scomp->dev, "error: parse ssp tokens failed %d\n", in sof_link_ssp_load()
2936 …dev_dbg(scomp->dev, "tplg: config SSP%d fmt 0x%x mclk %d bclk %d fclk %d width (%d)%d slots %d mcl… in sof_link_ssp_load()
2945 dev_err(scomp->dev, "error: invalid fsync rate for SSP%d\n", in sof_link_ssp_load()
2951 dev_err(scomp->dev, "error: invalid channel count for SSP%d\n", in sof_link_ssp_load()
2960 dev_err(scomp->dev, "error: failed to save DAI config for SSP%d\n", in sof_link_ssp_load()
2966 static int sof_link_sai_load(struct snd_soc_component *scomp, int index, in sof_link_sai_load() argument
2972 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_link_sai_load()
2984 ret = sof_parse_tokens(scomp, &config->sai, sai_tokens, in sof_link_sai_load()
2988 dev_err(scomp->dev, "error: parse sai tokens failed %d\n", in sof_link_sai_load()
3003 dev_info(scomp->dev, in sof_link_sai_load()
3010 dev_err(scomp->dev, "error: invalid channel count for SAI%d\n", in sof_link_sai_load()
3018 dev_err(scomp->dev, "error: failed to save DAI config for SAI%d\n", in sof_link_sai_load()
3024 static int sof_link_esai_load(struct snd_soc_component *scomp, int index, in sof_link_esai_load() argument
3030 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_link_esai_load()
3042 ret = sof_parse_tokens(scomp, &config->esai, esai_tokens, in sof_link_esai_load()
3046 dev_err(scomp->dev, "error: parse esai tokens failed %d\n", in sof_link_esai_load()
3060 dev_info(scomp->dev, in sof_link_esai_load()
3067 dev_err(scomp->dev, "error: invalid channel count for ESAI%d\n", in sof_link_esai_load()
3075 dev_err(scomp->dev, "error: failed to save DAI config for ESAI%d\n", in sof_link_esai_load()
3081 static int sof_link_dmic_load(struct snd_soc_component *scomp, int index, in sof_link_dmic_load() argument
3087 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_link_dmic_load()
3098 ret = sof_parse_tokens(scomp, &config->dmic, dmic_tokens, in sof_link_dmic_load()
3102 dev_err(scomp->dev, "error: parse dmic tokens failed %d\n", in sof_link_dmic_load()
3108 ret = sof_parse_token_sets(scomp, &config->dmic.pdm[0], dmic_pdm_tokens, in sof_link_dmic_load()
3115 dev_err(scomp->dev, "error: parse dmic pdm tokens failed %d\n", in sof_link_dmic_load()
3124 dev_dbg(scomp->dev, "tplg: config DMIC%d driver version %d\n", in sof_link_dmic_load()
3126 dev_dbg(scomp->dev, "pdmclk_min %d pdm_clkmax %d duty_min %hd\n", in sof_link_dmic_load()
3129 dev_dbg(scomp->dev, "duty_max %hd fifo_fs %d num_pdms active %d\n", in sof_link_dmic_load()
3132 dev_dbg(scomp->dev, "fifo word length %hd\n", config->dmic.fifo_bits); in sof_link_dmic_load()
3135 dev_dbg(scomp->dev, "pdm %hd mic a %hd mic b %hd\n", in sof_link_dmic_load()
3139 dev_dbg(scomp->dev, "pdm %hd polarity a %hd polarity b %hd\n", in sof_link_dmic_load()
3143 dev_dbg(scomp->dev, "pdm %hd clk_edge %hd skew %hd\n", in sof_link_dmic_load()
3159 dev_err(scomp->dev, "error: failed to save DAI config for DMIC%d\n", in sof_link_dmic_load()
3165 static int sof_link_hda_load(struct snd_soc_component *scomp, int index, in sof_link_hda_load() argument
3171 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_link_hda_load()
3182 ret = sof_parse_tokens(scomp, &config->hda, hda_tokens, in sof_link_hda_load()
3186 dev_err(scomp->dev, "error: parse hda tokens failed %d\n", in sof_link_hda_load()
3191 dev_dbg(scomp->dev, "HDA config rate %d channels %d\n", in sof_link_hda_load()
3196 dev_err(scomp->dev, "error: failed to find dai %s in %s", in sof_link_hda_load()
3205 dev_err(scomp->dev, "error: failed to process hda dai link %s", in sof_link_hda_load()
3211 static int sof_link_alh_load(struct snd_soc_component *scomp, int index, in sof_link_alh_load() argument
3217 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_link_alh_load()
3222 ret = sof_parse_tokens(scomp, &config->alh, alh_tokens, in sof_link_alh_load()
3226 dev_err(scomp->dev, "error: parse alh tokens failed %d\n", in sof_link_alh_load()
3237 dev_err(scomp->dev, "error: failed to save DAI config for ALH %d\n", in sof_link_alh_load()
3244 static int sof_link_load(struct snd_soc_component *scomp, int index, in sof_link_load() argument
3258 dev_err(scomp->dev, "error: no platforms\n"); in sof_link_load()
3261 link->platforms->name = dev_name(scomp->dev); in sof_link_load()
3288 dev_err(scomp->dev, "error: expected tokens for DAI, none found\n"); in sof_link_load()
3295 ret = sof_parse_tokens(scomp, &common_config, dai_link_tokens, ARRAY_SIZE(dai_link_tokens), in sof_link_load()
3298 dev_err(scomp->dev, "error: parse link tokens failed %d\n", in sof_link_load()
3311 dev_err(scomp->dev, "error: unexpected DAI config count %d!\n", in sof_link_load()
3318 dev_dbg(scomp->dev, "tplg: %d hw_configs found, default id: %d!\n", in sof_link_load()
3327 dev_err(scomp->dev, "error: default hw_config id: %d not found!\n", in sof_link_load()
3349 ret = sof_link_ssp_load(scomp, index, link, cfg, hw_config, config, curr_conf); in sof_link_load()
3352 ret = sof_link_dmic_load(scomp, index, link, cfg, hw_config + curr_conf, config); in sof_link_load()
3355 ret = sof_link_hda_load(scomp, index, link, cfg, hw_config + curr_conf, config); in sof_link_load()
3358 ret = sof_link_alh_load(scomp, index, link, cfg, hw_config + curr_conf, config); in sof_link_load()
3361 ret = sof_link_sai_load(scomp, index, link, cfg, hw_config + curr_conf, config); in sof_link_load()
3364 ret = sof_link_esai_load(scomp, index, link, cfg, hw_config + curr_conf, config); in sof_link_load()
3367 dev_err(scomp->dev, "error: invalid DAI type %d\n", common_config.type); in sof_link_load()
3378 static int sof_route_load(struct snd_soc_component *scomp, int index, in sof_route_load() argument
3381 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_route_load()
3394 sroute->scomp = scomp; in sof_route_load()
3405 dev_dbg(scomp->dev, "sink %s control %s source %s\n", in sof_route_load()
3410 source_swidget = snd_sof_find_swidget(scomp, (char *)route->source); in sof_route_load()
3412 dev_err(scomp->dev, "error: source %s not found\n", in sof_route_load()
3431 sink_swidget = snd_sof_find_swidget(scomp, (char *)route->sink); in sof_route_load()
3433 dev_err(scomp->dev, "error: sink %s not found\n", in sof_route_load()
3457 …dev_dbg(scomp->dev, "warning: neither Linked source component %s nor sink component %s is of buffe… in sof_route_load()
3468 dev_err(scomp->dev, "error: failed to add route sink %s control %s source %s\n", in sof_route_load()
3477 dev_err(scomp->dev, "error: DSP failed to add route sink %s control %s source %s result %d\n", in sof_route_load()
3504 static int snd_sof_cache_kcontrol_val(struct snd_soc_component *scomp) in snd_sof_cache_kcontrol_val() argument
3506 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in snd_sof_cache_kcontrol_val()
3526 dev_err(scomp->dev, in snd_sof_cache_kcontrol_val()
3536 dev_warn(scomp->dev, in snd_sof_cache_kcontrol_val()
3570 static void sof_complete(struct snd_soc_component *scomp) in sof_complete() argument
3572 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_complete()
3583 snd_sof_complete_pipeline(scomp->dev, swidget); in sof_complete()
3593 snd_sof_cache_kcontrol_val(scomp); in sof_complete()
3597 static int sof_manifest(struct snd_soc_component *scomp, int index, in sof_manifest() argument
3607 dev_dbg(scomp->dev, "No topology ABI info\n"); in sof_manifest()
3612 dev_err(scomp->dev, "error: invalid topology ABI size\n"); in sof_manifest()
3616 dev_info(scomp->dev, in sof_manifest()
3627 dev_err(scomp->dev, "error: incompatible topology ABI version\n"); in sof_manifest()
3633 dev_warn(scomp->dev, "warn: topology ABI is more recent than kernel\n"); in sof_manifest()
3635 dev_err(scomp->dev, "error: topology ABI is more recent than kernel\n"); in sof_manifest()
3693 int snd_sof_load_topology(struct snd_soc_component *scomp, const char *file) in snd_sof_load_topology() argument
3698 dev_dbg(scomp->dev, "loading topology:%s\n", file); in snd_sof_load_topology()
3700 ret = request_firmware(&fw, file, scomp->dev); in snd_sof_load_topology()
3702 dev_err(scomp->dev, "error: tplg request firmware %s failed err: %d\n", in snd_sof_load_topology()
3704 dev_err(scomp->dev, in snd_sof_load_topology()
3709 ret = snd_soc_tplg_component_load(scomp, &sof_tplg_ops, fw); in snd_sof_load_topology()
3711 dev_err(scomp->dev, "error: tplg component load failed %d\n", in snd_sof_load_topology()