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()
1068 dev_err(scomp->dev, "error: invalid TLV data\n"); in sof_control_load_volume()
1076 dev_err(scomp->dev, "error: setting up volume table\n"); in sof_control_load_volume()
1089 ret = sof_parse_tokens(scomp, &scontrol->led_ctl, led_tokens, in sof_control_load_volume()
1093 dev_err(scomp->dev, "error: parse led tokens failed %d\n", in sof_control_load_volume()
1098 dev_dbg(scomp->dev, "tplg: load kcontrol index %d chans %d\n", in sof_control_load_volume()
1112 static int sof_control_load_enum(struct snd_soc_component *scomp, in sof_control_load_enum() argument
1117 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_control_load_enum()
1137 dev_dbg(scomp->dev, "tplg: load kcontrol index %d chans %d comp_id %d\n", in sof_control_load_enum()
1143 static int sof_control_load_bytes(struct snd_soc_component *scomp, in sof_control_load_bytes() argument
1148 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_control_load_bytes()
1165 dev_err(scomp->dev, "err: bytes data size %zu exceeds max %zu.\n", in sof_control_load_bytes()
1183 dev_dbg(scomp->dev, "tplg: load kcontrol index %d chans %d\n", in sof_control_load_bytes()
1191 dev_err(scomp->dev, "error: Wrong ABI magic 0x%08x.\n", in sof_control_load_bytes()
1198 dev_err(scomp->dev, in sof_control_load_bytes()
1206 dev_err(scomp->dev, in sof_control_load_bytes()
1222 static int sof_control_load(struct snd_soc_component *scomp, int index, in sof_control_load() argument
1229 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_control_load()
1234 dev_dbg(scomp->dev, "tplg: load control type %d name : %s\n", in sof_control_load()
1241 scontrol->scomp = scomp; in sof_control_load()
1249 ret = sof_control_load_volume(scomp, scontrol, kc, hdr); in sof_control_load()
1254 ret = sof_control_load_bytes(scomp, scontrol, kc, hdr); in sof_control_load()
1260 ret = sof_control_load_enum(scomp, scontrol, kc, hdr); in sof_control_load()
1270 dev_warn(scomp->dev, "control type not supported %d:%d:%d\n", in sof_control_load()
1288 static int sof_control_unload(struct snd_soc_component *scomp, in sof_control_unload() argument
1291 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_control_unload()
1295 dev_dbg(scomp->dev, "tplg: unload control name : %s\n", scomp->name); in sof_control_unload()
1381 static int sof_connect_dai_widget(struct snd_soc_component *scomp, in sof_connect_dai_widget() argument
1386 struct snd_soc_card *card = scomp->card; in sof_connect_dai_widget()
1392 dev_vdbg(scomp->dev, "tplg: check widget: %s stream: %s dai stream: %s\n", in sof_connect_dai_widget()
1416 dev_err(scomp->dev, "error: can't find BE for DAI %s\n", in sof_connect_dai_widget()
1422 dev_dbg(scomp->dev, "tplg: connected widget %s -> DAI link %s\n", in sof_connect_dai_widget()
1438 dev_err(scomp->dev, "error: can't find BE for DAI %s\n", in sof_connect_dai_widget()
1444 dev_dbg(scomp->dev, "tplg: connected widget %s -> DAI link %s\n", in sof_connect_dai_widget()
1454 dev_err(scomp->dev, "error: can't connect DAI %s stream %s\n", in sof_connect_dai_widget()
1505 static int sof_widget_load_dai(struct snd_soc_component *scomp, int index, in sof_widget_load_dai() argument
1511 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_widget_load_dai()
1526 ret = sof_parse_tokens(scomp, comp_dai, dai_tokens, in sof_widget_load_dai()
1530 dev_err(scomp->dev, "error: parse dai tokens failed %d\n", in sof_widget_load_dai()
1535 ret = sof_parse_tokens(scomp, &comp_dai->config, comp_tokens, in sof_widget_load_dai()
1539 dev_err(scomp->dev, "error: parse dai.cfg tokens failed %d\n", in sof_widget_load_dai()
1544 dev_dbg(scomp->dev, "dai %s: type %d index %d\n", in sof_widget_load_dai()
1546 sof_dbg_comp_config(scomp, &comp_dai->config); in sof_widget_load_dai()
1552 dai->scomp = scomp; in sof_widget_load_dai()
1571 static int sof_widget_load_buffer(struct snd_soc_component *scomp, int index, in sof_widget_load_buffer() argument
1576 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_widget_load_buffer()
1593 ret = sof_parse_tokens(scomp, buffer, buffer_tokens, in sof_widget_load_buffer()
1597 dev_err(scomp->dev, "error: parse buffer tokens failed %d\n", in sof_widget_load_buffer()
1603 dev_dbg(scomp->dev, "buffer %s: size %d caps 0x%x\n", in sof_widget_load_buffer()
1611 dev_err(scomp->dev, "error: buffer %s load failed\n", in sof_widget_load_buffer()
1620 static int spcm_bind(struct snd_soc_component *scomp, struct snd_sof_pcm *spcm, in spcm_bind() argument
1625 host_widget = snd_sof_find_swidget_sname(scomp, in spcm_bind()
1629 dev_err(scomp->dev, "can't find host comp to bind pcm\n"); in spcm_bind()
1642 static int sof_widget_load_pcm(struct snd_soc_component *scomp, int index, in sof_widget_load_pcm() argument
1648 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_widget_load_pcm()
1664 ret = sof_parse_tokens(scomp, host, pcm_tokens, in sof_widget_load_pcm()
1668 dev_err(scomp->dev, "error: parse host tokens failed %d\n", in sof_widget_load_pcm()
1673 ret = sof_parse_tokens(scomp, &host->config, comp_tokens, in sof_widget_load_pcm()
1677 dev_err(scomp->dev, "error: parse host.cfg tokens failed %d\n", in sof_widget_load_pcm()
1682 dev_dbg(scomp->dev, "loaded host %s\n", swidget->widget->name); in sof_widget_load_pcm()
1683 sof_dbg_comp_config(scomp, &host->config); in sof_widget_load_pcm()
1717 static int sof_widget_load_pipeline(struct snd_soc_component *scomp, int index, in sof_widget_load_pipeline() argument
1738 comp_swidget = snd_sof_find_swidget(scomp, tw->sname); in sof_widget_load_pipeline()
1740 dev_err(scomp->dev, "error: widget %s refers to non existent widget %s\n", in sof_widget_load_pipeline()
1748 dev_dbg(scomp->dev, "tplg: pipeline id %d comp %d scheduling comp id %d\n", in sof_widget_load_pipeline()
1751 ret = sof_parse_tokens(scomp, pipeline, sched_tokens, in sof_widget_load_pipeline()
1755 dev_err(scomp->dev, "error: parse pipeline tokens failed %d\n", in sof_widget_load_pipeline()
1760 dev_dbg(scomp->dev, "pipeline %s: period %d pri %d mips %d core %d frames %d\n", in sof_widget_load_pipeline()
1767 ret = sof_load_pipeline_ipc(scomp->dev, pipeline, r); in sof_widget_load_pipeline()
1779 static int sof_widget_load_mixer(struct snd_soc_component *scomp, int index, in sof_widget_load_mixer() argument
1784 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_widget_load_mixer()
1799 ret = sof_parse_tokens(scomp, &mixer->config, comp_tokens, in sof_widget_load_mixer()
1803 dev_err(scomp->dev, "error: parse mixer.cfg tokens failed %d\n", in sof_widget_load_mixer()
1809 sof_dbg_comp_config(scomp, &mixer->config); in sof_widget_load_mixer()
1824 static int sof_widget_load_mux(struct snd_soc_component *scomp, int index, in sof_widget_load_mux() argument
1829 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_widget_load_mux()
1844 ret = sof_parse_tokens(scomp, &mux->config, comp_tokens, in sof_widget_load_mux()
1848 dev_err(scomp->dev, "error: parse mux.cfg tokens failed %d\n", in sof_widget_load_mux()
1854 sof_dbg_comp_config(scomp, &mux->config); in sof_widget_load_mux()
1870 static int sof_widget_load_pga(struct snd_soc_component *scomp, int index, in sof_widget_load_pga() argument
1875 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_widget_load_pga()
1890 dev_err(scomp->dev, "error: invalid kcontrol count %d for volume\n", in sof_widget_load_pga()
1900 ret = sof_parse_tokens(scomp, volume, volume_tokens, in sof_widget_load_pga()
1904 dev_err(scomp->dev, "error: parse volume tokens failed %d\n", in sof_widget_load_pga()
1908 ret = sof_parse_tokens(scomp, &volume->config, comp_tokens, in sof_widget_load_pga()
1912 dev_err(scomp->dev, "error: parse volume.cfg tokens failed %d\n", in sof_widget_load_pga()
1917 sof_dbg_comp_config(scomp, &volume->config); in sof_widget_load_pga()
1946 static int sof_widget_load_src(struct snd_soc_component *scomp, int index, in sof_widget_load_src() argument
1951 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_widget_load_src()
1966 ret = sof_parse_tokens(scomp, src, src_tokens, in sof_widget_load_src()
1970 dev_err(scomp->dev, "error: parse src tokens failed %d\n", in sof_widget_load_src()
1975 ret = sof_parse_tokens(scomp, &src->config, comp_tokens, in sof_widget_load_src()
1979 dev_err(scomp->dev, "error: parse src.cfg tokens failed %d\n", in sof_widget_load_src()
1984 dev_dbg(scomp->dev, "src %s: source rate %d sink rate %d\n", in sof_widget_load_src()
1986 sof_dbg_comp_config(scomp, &src->config); in sof_widget_load_src()
2003 static int sof_widget_load_asrc(struct snd_soc_component *scomp, int index, in sof_widget_load_asrc() argument
2008 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_widget_load_asrc()
2023 ret = sof_parse_tokens(scomp, asrc, asrc_tokens, in sof_widget_load_asrc()
2027 dev_err(scomp->dev, "error: parse asrc tokens failed %d\n", in sof_widget_load_asrc()
2032 ret = sof_parse_tokens(scomp, &asrc->config, comp_tokens, in sof_widget_load_asrc()
2036 dev_err(scomp->dev, "error: parse asrc.cfg tokens failed %d\n", in sof_widget_load_asrc()
2041 dev_dbg(scomp->dev, "asrc %s: source rate %d sink rate %d " in sof_widget_load_asrc()
2045 sof_dbg_comp_config(scomp, &asrc->config); in sof_widget_load_asrc()
2062 static int sof_widget_load_siggen(struct snd_soc_component *scomp, int index, in sof_widget_load_siggen() argument
2067 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_widget_load_siggen()
2082 ret = sof_parse_tokens(scomp, tone, tone_tokens, in sof_widget_load_siggen()
2086 dev_err(scomp->dev, "error: parse tone tokens failed %d\n", in sof_widget_load_siggen()
2091 ret = sof_parse_tokens(scomp, &tone->config, comp_tokens, in sof_widget_load_siggen()
2095 dev_err(scomp->dev, "error: parse tone.cfg tokens failed %d\n", in sof_widget_load_siggen()
2100 dev_dbg(scomp->dev, "tone %s: frequency %d amplitude %d\n", in sof_widget_load_siggen()
2102 sof_dbg_comp_config(scomp, &tone->config); in sof_widget_load_siggen()
2115 static int sof_get_control_data(struct snd_soc_component *scomp, in sof_get_control_data() argument
2145 dev_err(scomp->dev, "error: unknown kcontrol type %d in widget %s\n", in sof_get_control_data()
2152 dev_err(scomp->dev, "error: no scontrol for widget %s\n", in sof_get_control_data()
2187 static int sof_process_load(struct snd_soc_component *scomp, int index, in sof_process_load() argument
2193 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_process_load()
2214 ret = sof_get_control_data(scomp, widget, wdata, in sof_process_load()
2240 ret = sof_parse_tokens(scomp, &process->config, comp_tokens, in sof_process_load()
2244 dev_err(scomp->dev, "error: parse process.cfg tokens failed %d\n", in sof_process_load()
2249 sof_dbg_comp_config(scomp, &process->config); in sof_process_load()
2272 dev_err(scomp->dev, "error: create process failed\n"); in sof_process_load()
2289 dev_err(scomp->dev, "error: send control failed\n"); in sof_process_load()
2307 static int sof_widget_load_process(struct snd_soc_component *scomp, int index, in sof_widget_load_process() argument
2318 dev_err(scomp->dev, "error: process tokens not found\n"); in sof_widget_load_process()
2326 ret = sof_parse_tokens(scomp, &config, process_tokens, in sof_widget_load_process()
2330 dev_err(scomp->dev, "error: parse process tokens failed %d\n", in sof_widget_load_process()
2336 ret = sof_process_load(scomp, index, swidget, tw, r, in sof_widget_load_process()
2339 dev_err(scomp->dev, "error: process loading failed\n"); in sof_widget_load_process()
2346 static int sof_widget_bind_event(struct snd_soc_component *scomp, in sof_widget_bind_event() argument
2372 dev_err(scomp->dev, in sof_widget_bind_event()
2379 static int sof_widget_ready(struct snd_soc_component *scomp, int index, in sof_widget_ready() argument
2383 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_widget_ready()
2397 swidget->scomp = scomp; in sof_widget_ready()
2406 dev_dbg(scomp->dev, "tplg: ready widget id %d pipe %d type %d name : %s stream %s\n", in sof_widget_ready()
2411 ret = sof_parse_tokens(scomp, &comp, core_tokens, in sof_widget_ready()
2415 dev_err(scomp->dev, "error: parsing core tokens failed %d\n", in sof_widget_ready()
2426 dev_err(scomp->dev, "error: enable core: %d\n", ret); in sof_widget_ready()
2431 ret = sof_parse_tokens(scomp, &swidget->comp_ext, comp_ext_tokens, in sof_widget_ready()
2435 dev_err(scomp->dev, "error: parsing comp_ext_tokens failed %d\n", in sof_widget_ready()
2451 ret = sof_widget_load_dai(scomp, index, swidget, tw, &reply, dai); in sof_widget_ready()
2453 sof_connect_dai_widget(scomp, w, tw, dai); in sof_widget_ready()
2461 ret = sof_widget_load_mixer(scomp, index, swidget, tw, &reply); in sof_widget_ready()
2464 ret = sof_widget_load_pga(scomp, index, swidget, tw, &reply); in sof_widget_ready()
2474 ret = sof_widget_load_buffer(scomp, index, swidget, tw, &reply); in sof_widget_ready()
2477 ret = sof_widget_load_pipeline(scomp, index, swidget, tw, &reply); in sof_widget_ready()
2480 ret = sof_widget_load_pcm(scomp, index, swidget, in sof_widget_ready()
2484 ret = sof_widget_load_pcm(scomp, index, swidget, in sof_widget_ready()
2488 ret = sof_widget_load_src(scomp, index, swidget, tw, &reply); in sof_widget_ready()
2491 ret = sof_widget_load_asrc(scomp, index, swidget, tw, &reply); in sof_widget_ready()
2494 ret = sof_widget_load_siggen(scomp, index, swidget, tw, &reply); in sof_widget_ready()
2497 ret = sof_widget_load_process(scomp, index, swidget, tw, &reply); in sof_widget_ready()
2501 ret = sof_widget_load_mux(scomp, index, swidget, tw, &reply); in sof_widget_ready()
2507 dev_dbg(scomp->dev, "widget type %d name %s not handled\n", swidget->id, tw->name); in sof_widget_ready()
2513 dev_err(scomp->dev, in sof_widget_ready()
2524 ret = sof_widget_bind_event(scomp, swidget, in sof_widget_ready()
2527 dev_err(scomp->dev, "error: widget event binding failed\n"); in sof_widget_ready()
2539 static int sof_route_unload(struct snd_soc_component *scomp, in sof_route_unload() argument
2556 static int sof_widget_unload(struct snd_soc_component *scomp, in sof_widget_unload() argument
2559 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_widget_unload()
2604 dev_err(scomp->dev, "error: powering down pipeline schedule core %d\n", in sof_widget_unload()
2632 dev_warn(scomp->dev, "unsupported kcontrol_type\n"); in sof_widget_unload()
2656 static int sof_dai_load(struct snd_soc_component *scomp, int index, in sof_dai_load() argument
2660 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_dai_load()
2675 spcm->scomp = scomp; in sof_dai_load()
2684 dev_dbg(scomp->dev, "tplg: load pcm %s\n", pcm->dai_name); in sof_dai_load()
2689 ret = sof_parse_tokens(scomp, spcm, stream_tokens, in sof_dai_load()
2693 dev_err(scomp->dev, "error: parse stream tokens failed %d\n", in sof_dai_load()
2704 dev_vdbg(scomp->dev, "tplg: pcm %s stream tokens: playback d0i3:%d\n", in sof_dai_load()
2713 dev_err(scomp->dev, "error: can't alloc page table for %s %d\n", in sof_dai_load()
2720 ret = spcm_bind(scomp, spcm, stream); in sof_dai_load()
2722 dev_err(scomp->dev, in sof_dai_load()
2734 dev_vdbg(scomp->dev, "tplg: pcm %s stream tokens: capture d0i3:%d\n", in sof_dai_load()
2743 dev_err(scomp->dev, "error: can't alloc page table for %s %d\n", in sof_dai_load()
2749 ret = spcm_bind(scomp, spcm, stream); in sof_dai_load()
2751 dev_err(scomp->dev, in sof_dai_load()
2766 static int sof_dai_unload(struct snd_soc_component *scomp, in sof_dai_unload() argument
2879 static int sof_link_ssp_load(struct snd_soc_component *scomp, int index, in sof_link_ssp_load() argument
2885 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_link_ssp_load()
2897 ret = sof_parse_tokens(scomp, &config->ssp, ssp_tokens, in sof_link_ssp_load()
2901 dev_err(scomp->dev, "error: parse ssp tokens failed %d\n", in sof_link_ssp_load()
2915 …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()
2924 dev_err(scomp->dev, "error: invalid fsync rate for SSP%d\n", in sof_link_ssp_load()
2930 dev_err(scomp->dev, "error: invalid channel count for SSP%d\n", in sof_link_ssp_load()
2938 dev_err(scomp->dev, "error: failed to save DAI config for SSP%d\n", in sof_link_ssp_load()
2944 static int sof_link_sai_load(struct snd_soc_component *scomp, int index, in sof_link_sai_load() argument
2950 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_link_sai_load()
2962 ret = sof_parse_tokens(scomp, &config->sai, sai_tokens, in sof_link_sai_load()
2966 dev_err(scomp->dev, "error: parse sai tokens failed %d\n", in sof_link_sai_load()
2981 dev_info(scomp->dev, in sof_link_sai_load()
2988 dev_err(scomp->dev, "error: invalid channel count for SAI%d\n", in sof_link_sai_load()
2996 dev_err(scomp->dev, "error: failed to save DAI config for SAI%d\n", in sof_link_sai_load()
3002 static int sof_link_esai_load(struct snd_soc_component *scomp, int index, in sof_link_esai_load() argument
3008 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_link_esai_load()
3020 ret = sof_parse_tokens(scomp, &config->esai, esai_tokens, in sof_link_esai_load()
3024 dev_err(scomp->dev, "error: parse esai tokens failed %d\n", in sof_link_esai_load()
3038 dev_info(scomp->dev, in sof_link_esai_load()
3045 dev_err(scomp->dev, "error: invalid channel count for ESAI%d\n", in sof_link_esai_load()
3053 dev_err(scomp->dev, "error: failed to save DAI config for ESAI%d\n", in sof_link_esai_load()
3059 static int sof_link_dmic_load(struct snd_soc_component *scomp, int index, in sof_link_dmic_load() argument
3065 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_link_dmic_load()
3076 ret = sof_parse_tokens(scomp, &config->dmic, dmic_tokens, in sof_link_dmic_load()
3080 dev_err(scomp->dev, "error: parse dmic tokens failed %d\n", in sof_link_dmic_load()
3086 ret = sof_parse_token_sets(scomp, &config->dmic.pdm[0], dmic_pdm_tokens, in sof_link_dmic_load()
3093 dev_err(scomp->dev, "error: parse dmic pdm tokens failed %d\n", in sof_link_dmic_load()
3102 dev_dbg(scomp->dev, "tplg: config DMIC%d driver version %d\n", in sof_link_dmic_load()
3104 dev_dbg(scomp->dev, "pdmclk_min %d pdm_clkmax %d duty_min %hd\n", in sof_link_dmic_load()
3107 dev_dbg(scomp->dev, "duty_max %hd fifo_fs %d num_pdms active %d\n", in sof_link_dmic_load()
3110 dev_dbg(scomp->dev, "fifo word length %hd\n", config->dmic.fifo_bits); in sof_link_dmic_load()
3113 dev_dbg(scomp->dev, "pdm %hd mic a %hd mic b %hd\n", in sof_link_dmic_load()
3117 dev_dbg(scomp->dev, "pdm %hd polarity a %hd polarity b %hd\n", in sof_link_dmic_load()
3121 dev_dbg(scomp->dev, "pdm %hd clk_edge %hd skew %hd\n", in sof_link_dmic_load()
3137 dev_err(scomp->dev, "error: failed to save DAI config for DMIC%d\n", in sof_link_dmic_load()
3143 static int sof_link_hda_load(struct snd_soc_component *scomp, int index, in sof_link_hda_load() argument
3149 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_link_hda_load()
3160 ret = sof_parse_tokens(scomp, &config->hda, hda_tokens, in sof_link_hda_load()
3164 dev_err(scomp->dev, "error: parse hda tokens failed %d\n", in sof_link_hda_load()
3169 dev_dbg(scomp->dev, "HDA config rate %d channels %d\n", in sof_link_hda_load()
3174 dev_err(scomp->dev, "error: failed to find dai %s in %s", in sof_link_hda_load()
3183 dev_err(scomp->dev, "error: failed to process hda dai link %s", in sof_link_hda_load()
3189 static int sof_link_alh_load(struct snd_soc_component *scomp, int index, in sof_link_alh_load() argument
3195 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_link_alh_load()
3200 ret = sof_parse_tokens(scomp, &config->alh, alh_tokens, in sof_link_alh_load()
3204 dev_err(scomp->dev, "error: parse alh tokens failed %d\n", in sof_link_alh_load()
3215 dev_err(scomp->dev, "error: failed to save DAI config for ALH %d\n", in sof_link_alh_load()
3222 static int sof_link_load(struct snd_soc_component *scomp, int index, in sof_link_load() argument
3234 dev_err(scomp->dev, "error: no platforms\n"); in sof_link_load()
3237 link->platforms->name = dev_name(scomp->dev); in sof_link_load()
3264 dev_err(scomp->dev, "error: expected tokens for DAI, none found\n"); in sof_link_load()
3272 ret = sof_parse_tokens(scomp, &config, dai_link_tokens, in sof_link_load()
3276 dev_err(scomp->dev, "error: parse link tokens failed %d\n", in sof_link_load()
3288 dev_err(scomp->dev, "error: unexpected DAI config count %d!\n", in sof_link_load()
3293 dev_dbg(scomp->dev, "tplg: %d hw_configs found, default id: %d!\n", in sof_link_load()
3302 dev_err(scomp->dev, "error: default hw_config id: %d not found!\n", in sof_link_load()
3317 ret = sof_link_ssp_load(scomp, index, link, cfg, hw_config, in sof_link_load()
3321 ret = sof_link_dmic_load(scomp, index, link, cfg, hw_config, in sof_link_load()
3325 ret = sof_link_hda_load(scomp, index, link, cfg, hw_config, in sof_link_load()
3329 ret = sof_link_alh_load(scomp, index, link, cfg, hw_config, in sof_link_load()
3333 ret = sof_link_sai_load(scomp, index, link, cfg, hw_config, in sof_link_load()
3337 ret = sof_link_esai_load(scomp, index, link, cfg, hw_config, in sof_link_load()
3341 dev_err(scomp->dev, "error: invalid DAI type %d\n", in sof_link_load()
3367 static int sof_link_unload(struct snd_soc_component *scomp, in sof_link_unload() argument
3370 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_link_unload()
3389 dev_err(scomp->dev, "error: failed to find dai %s in %s", in sof_link_unload()
3406 dev_err(scomp->dev, "error: invalid DAI type %d\n", in sof_link_unload()
3416 static int sof_route_load(struct snd_soc_component *scomp, int index, in sof_route_load() argument
3419 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_route_load()
3432 sroute->scomp = scomp; in sof_route_load()
3443 dev_dbg(scomp->dev, "sink %s control %s source %s\n", in sof_route_load()
3448 source_swidget = snd_sof_find_swidget(scomp, (char *)route->source); in sof_route_load()
3450 dev_err(scomp->dev, "error: source %s not found\n", in sof_route_load()
3469 sink_swidget = snd_sof_find_swidget(scomp, (char *)route->sink); in sof_route_load()
3471 dev_err(scomp->dev, "error: sink %s not found\n", in sof_route_load()
3495 …dev_dbg(scomp->dev, "warning: neither Linked source component %s nor sink component %s is of buffe… in sof_route_load()
3506 dev_err(scomp->dev, "error: failed to add route sink %s control %s source %s\n", in sof_route_load()
3515 dev_err(scomp->dev, "error: DSP failed to add route sink %s control %s source %s result %d\n", in sof_route_load()
3542 static int snd_sof_cache_kcontrol_val(struct snd_soc_component *scomp) in snd_sof_cache_kcontrol_val() argument
3544 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in snd_sof_cache_kcontrol_val()
3564 dev_err(scomp->dev, in snd_sof_cache_kcontrol_val()
3574 dev_warn(scomp->dev, in snd_sof_cache_kcontrol_val()
3608 static void sof_complete(struct snd_soc_component *scomp) in sof_complete() argument
3610 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_complete()
3621 snd_sof_complete_pipeline(scomp->dev, swidget); in sof_complete()
3631 snd_sof_cache_kcontrol_val(scomp); in sof_complete()
3635 static int sof_manifest(struct snd_soc_component *scomp, int index, in sof_manifest() argument
3645 dev_dbg(scomp->dev, "No topology ABI info\n"); in sof_manifest()
3650 dev_err(scomp->dev, "error: invalid topology ABI size\n"); in sof_manifest()
3654 dev_info(scomp->dev, in sof_manifest()
3665 dev_err(scomp->dev, "error: incompatible topology ABI version\n"); in sof_manifest()
3671 dev_warn(scomp->dev, "warn: topology ABI is more recent than kernel\n"); in sof_manifest()
3673 dev_err(scomp->dev, "error: topology ABI is more recent than kernel\n"); in sof_manifest()
3732 int snd_sof_load_topology(struct snd_soc_component *scomp, const char *file) in snd_sof_load_topology() argument
3737 dev_dbg(scomp->dev, "loading topology:%s\n", file); in snd_sof_load_topology()
3739 ret = request_firmware(&fw, file, scomp->dev); in snd_sof_load_topology()
3741 dev_err(scomp->dev, "error: tplg request firmware %s failed err: %d\n", in snd_sof_load_topology()
3746 ret = snd_soc_tplg_component_load(scomp, in snd_sof_load_topology()
3750 dev_err(scomp->dev, "error: tplg component load failed %d\n", in snd_sof_load_topology()