Lines Matching refs:sdev

341 	struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp);  in sof_ipc4_widget_set_module_info()  local
343 swidget->module_info = sof_ipc4_find_module_by_uuid(sdev, &swidget->uuid); in sof_ipc4_widget_set_module_info()
348 dev_err(sdev->dev, "failed to find module info for widget %s with UUID %pUL\n", in sof_ipc4_widget_set_module_info()
381 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_ipc4_widget_update_kcontrol_module_id() local
386 list_for_each_entry(scontrol, &sdev->kcontrol_list, list) { in sof_ipc4_widget_update_kcontrol_module_id()
552 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_ipc4_widget_setup_comp_dai() local
578 list_for_each_entry(w, &sdev->widget_list, list) { in sof_ipc4_widget_setup_comp_dai()
969 sof_ipc4_update_resource_usage(struct snd_sof_dev *sdev, struct snd_sof_widget *swidget, in sof_ipc4_update_resource_usage() argument
1003 sof_ipc4_update_cpc_from_manifest(sdev, fw_module, base_config); in sof_ipc4_update_resource_usage()
1006 dev_dbg(sdev->dev, "%s: ibs / obs: %u / %u, forcing cpc to 0 from %u\n", in sof_ipc4_update_resource_usage()
1011 dev_dbg(sdev->dev, "%s: ibs / obs / cpc: %u / %u / %u\n", in sof_ipc4_update_resource_usage()
1017 static int sof_ipc4_widget_assign_instance_id(struct snd_sof_dev *sdev, in sof_ipc4_widget_assign_instance_id() argument
1025 dev_err(sdev->dev, "failed to assign instance id for widget %s", in sof_ipc4_widget_assign_instance_id()
1034 static int sof_ipc4_update_hw_params(struct snd_sof_dev *sdev, struct snd_pcm_hw_params *params, in sof_ipc4_update_hw_params() argument
1054 dev_err(sdev->dev, "invalid PCM valid_bits %d\n", valid_bits); in sof_ipc4_update_hw_params()
1075 static bool sof_ipc4_is_single_format(struct snd_sof_dev *sdev, in sof_ipc4_is_single_format() argument
1103 static int sof_ipc4_init_output_audio_fmt(struct snd_sof_dev *sdev, in sof_ipc4_init_output_audio_fmt() argument
1116 single_format = sof_ipc4_is_single_format(sdev, available_fmt->output_pin_fmts, in sof_ipc4_init_output_audio_fmt()
1147 static int sof_ipc4_get_valid_bits(struct snd_sof_dev *sdev, struct snd_pcm_hw_params *params) in sof_ipc4_get_valid_bits() argument
1157 dev_err(sdev->dev, "invalid pcm frame format %d\n", params_format(params)); in sof_ipc4_get_valid_bits()
1162 static int sof_ipc4_init_input_audio_fmt(struct snd_sof_dev *sdev, in sof_ipc4_init_input_audio_fmt() argument
1178 dev_err(sdev->dev, "no input formats for %s\n", swidget->widget->name); in sof_ipc4_init_input_audio_fmt()
1182 single_format = sof_ipc4_is_single_format(sdev, available_fmt->input_pin_fmts, in sof_ipc4_init_input_audio_fmt()
1187 sample_valid_bits = sof_ipc4_get_valid_bits(sdev, params); in sof_ipc4_init_input_audio_fmt()
1206 dev_dbg(sdev->dev, "matched audio format index for %uHz, %ubit, %u channels: %d\n", in sof_ipc4_init_input_audio_fmt()
1213 dev_err(sdev->dev, "%s: Unsupported audio format: %uHz, %ubit, %u channels\n", in sof_ipc4_init_input_audio_fmt()
1227 dev_dbg(sdev->dev, "Init input audio formats for %s\n", swidget->widget->name); in sof_ipc4_init_input_audio_fmt()
1228 sof_ipc4_dbg_audio_format(sdev->dev, &available_fmt->input_pin_fmts[i], 1); in sof_ipc4_init_input_audio_fmt()
1286 static int snd_sof_get_hw_config_params(struct snd_sof_dev *sdev, struct snd_sof_dai *dai, in snd_sof_get_hw_config_params() argument
1296 list_for_each_entry(slink, &sdev->dai_link_list, list) { in snd_sof_get_hw_config_params()
1304 dev_err(sdev->dev, "%s: no DAI link found for DAI %s\n", __func__, dai->name); in snd_sof_get_hw_config_params()
1317 dev_err(sdev->dev, "%s: no matching hw_config found for DAI %s\n", __func__, in snd_sof_get_hw_config_params()
1326 dev_dbg(sdev->dev, "sample rate: %d sample width: %d channels: %d\n", in snd_sof_get_hw_config_params()
1332 static int snd_sof_get_nhlt_endpoint_data(struct snd_sof_dev *sdev, struct snd_sof_dai *dai, in snd_sof_get_nhlt_endpoint_data() argument
1336 struct sof_ipc4_fw_data *ipc4_data = sdev->private; in snd_sof_get_nhlt_endpoint_data()
1352 ret = snd_sof_get_hw_config_params(sdev, dai, &sample_rate, &channel_count, in snd_sof_get_nhlt_endpoint_data()
1361 dev_dbg(sdev->dev, "dai index %d nhlt type %d direction %d\n", in snd_sof_get_nhlt_endpoint_data()
1365 cfg = intel_nhlt_get_endpoint_blob(sdev->dev, ipc4_data->nhlt, dai_index, nhlt_type, in snd_sof_get_nhlt_endpoint_data()
1370 dev_err(sdev->dev, in snd_sof_get_nhlt_endpoint_data()
1383 static int snd_sof_get_nhlt_endpoint_data(struct snd_sof_dev *sdev, struct snd_sof_dai *dai, in snd_sof_get_nhlt_endpoint_data() argument
1391 static bool sof_ipc4_copier_is_single_format(struct snd_sof_dev *sdev, in sof_ipc4_copier_is_single_format() argument
1424 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_ipc4_prepare_copier_module() local
1440 dev_dbg(sdev->dev, "copier %s, type %d", swidget->widget->name, swidget->id); in sof_ipc4_prepare_copier_module()
1541 ret = snd_sof_get_nhlt_endpoint_data(sdev, dai, fe_params, ipc4_copier->dai_index, in sof_ipc4_prepare_copier_module()
1560 dev_err(sdev->dev, "unsupported type %d for copier %s", in sof_ipc4_prepare_copier_module()
1566 ret = sof_ipc4_init_input_audio_fmt(sdev, swidget, &copier_data->base_config, ref_params, in sof_ipc4_prepare_copier_module()
1572 single_output_format = sof_ipc4_copier_is_single_format(sdev, in sof_ipc4_prepare_copier_module()
1596 out_ref_valid_bits = sof_ipc4_get_valid_bits(sdev, fe_params); in sof_ipc4_prepare_copier_module()
1621 dev_dbg(sdev->dev, "copier %s: reference output rate %d, channels %d valid_bits %d\n", in sof_ipc4_prepare_copier_module()
1624 output_fmt_index = sof_ipc4_init_output_audio_fmt(sdev, &copier_data->base_config, in sof_ipc4_prepare_copier_module()
1628 dev_err(sdev->dev, "Failed to initialize output format for %s", in sof_ipc4_prepare_copier_module()
1643 dev_dbg(sdev->dev, "Output audio format for %s\n", swidget->widget->name); in sof_ipc4_prepare_copier_module()
1644 sof_ipc4_dbg_audio_format(sdev->dev, &available_fmt->output_pin_fmts[output_fmt_index], 1); in sof_ipc4_prepare_copier_module()
1687 list_for_each_entry(w, &sdev->widget_list, list) { in sof_ipc4_prepare_copier_module()
1733 ret = sof_ipc4_update_hw_params(sdev, pipeline_params, &copier_data->out_format); in sof_ipc4_prepare_copier_module()
1777 dev_err(sdev->dev, "Invalid configuration, TLV size %d length %d\n", in sof_ipc4_prepare_copier_module()
1788 dev_dbg(sdev->dev, "copier %s, IPC size is %d", swidget->widget->name, ipc_size); in sof_ipc4_prepare_copier_module()
1797 sof_ipc4_update_resource_usage(sdev, swidget, &copier_data->base_config); in sof_ipc4_prepare_copier_module()
1826 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_ipc4_prepare_gain_module() local
1833 ret = sof_ipc4_init_input_audio_fmt(sdev, swidget, &gain->data.base_config, in sof_ipc4_prepare_gain_module()
1843 ret = sof_ipc4_init_output_audio_fmt(sdev, &gain->data.base_config, available_fmt, in sof_ipc4_prepare_gain_module()
1846 dev_err(sdev->dev, "Failed to initialize output format for %s", in sof_ipc4_prepare_gain_module()
1852 sof_ipc4_update_resource_usage(sdev, swidget, &gain->data.base_config); in sof_ipc4_prepare_gain_module()
1863 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_ipc4_prepare_mixer_module() local
1870 ret = sof_ipc4_init_input_audio_fmt(sdev, swidget, &mixer->base_config, in sof_ipc4_prepare_mixer_module()
1880 ret = sof_ipc4_init_output_audio_fmt(sdev, &mixer->base_config, available_fmt, in sof_ipc4_prepare_mixer_module()
1883 dev_err(sdev->dev, "Failed to initialize output format for %s", in sof_ipc4_prepare_mixer_module()
1889 sof_ipc4_update_resource_usage(sdev, swidget, &mixer->base_config); in sof_ipc4_prepare_mixer_module()
1900 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_ipc4_prepare_src_module() local
1908 input_format_index = sof_ipc4_init_input_audio_fmt(sdev, swidget, &src->data.base_config, in sof_ipc4_prepare_src_module()
1918 dev_err(sdev->dev, "Invalid number of output formats: %d for SRC %s\n", in sof_ipc4_prepare_src_module()
1938 output_format_index = sof_ipc4_init_output_audio_fmt(sdev, &src->data.base_config, in sof_ipc4_prepare_src_module()
1942 dev_err(sdev->dev, "Failed to initialize output format for %s", in sof_ipc4_prepare_src_module()
1948 sof_ipc4_update_resource_usage(sdev, swidget, &src->data.base_config); in sof_ipc4_prepare_src_module()
1954 return sof_ipc4_update_hw_params(sdev, pipeline_params, out_audio_fmt); in sof_ipc4_prepare_src_module()
2041 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_ipc4_prepare_process_module() local
2050 ret = sof_ipc4_init_input_audio_fmt(sdev, swidget, &process->base_config, in sof_ipc4_prepare_process_module()
2060 output_fmt_index = sof_ipc4_init_output_audio_fmt(sdev, &process->base_config, in sof_ipc4_prepare_process_module()
2064 dev_err(sdev->dev, "Failed to initialize output format for %s", in sof_ipc4_prepare_process_module()
2078 ret = sof_ipc4_update_hw_params(sdev, pipeline_params, &process->output_format); in sof_ipc4_prepare_process_module()
2084 sof_ipc4_update_resource_usage(sdev, swidget, &process->base_config); in sof_ipc4_prepare_process_module()
2103 static int sof_ipc4_control_load_volume(struct snd_sof_dev *sdev, struct snd_sof_control *scontrol) in sof_ipc4_control_load_volume() argument
2135 static int sof_ipc4_control_load_bytes(struct snd_sof_dev *sdev, struct snd_sof_control *scontrol) in sof_ipc4_control_load_bytes() argument
2142 dev_err(sdev->dev, "insufficient size for a bytes control %s: %zu.\n", in sof_ipc4_control_load_bytes()
2148 dev_err(sdev->dev, "scontrol %s bytes data size %zu exceeds max %zu.\n", in sof_ipc4_control_load_bytes()
2168 dev_err(sdev->dev, "Wrong ABI magic (%#x) for control: %s\n", in sof_ipc4_control_load_bytes()
2178 dev_err(sdev->dev, "Control %s conflict in bytes %zu vs. priv size %zu.\n", in sof_ipc4_control_load_bytes()
2200 static int sof_ipc4_control_setup(struct snd_sof_dev *sdev, struct snd_sof_control *scontrol) in sof_ipc4_control_setup() argument
2206 return sof_ipc4_control_load_volume(sdev, scontrol); in sof_ipc4_control_setup()
2208 return sof_ipc4_control_load_bytes(sdev, scontrol); in sof_ipc4_control_setup()
2216 static int sof_ipc4_widget_setup(struct snd_sof_dev *sdev, struct snd_sof_widget *swidget) in sof_ipc4_widget_setup() argument
2219 struct sof_ipc4_fw_data *ipc4_data = sdev->private; in sof_ipc4_widget_setup()
2231 dev_warn(sdev->dev, "use_chain_dma set for scheduler %s", in sof_ipc4_widget_setup()
2236 dev_dbg(sdev->dev, "pipeline: %d memory pages: %d\n", swidget->pipeline_id, in sof_ipc4_widget_setup()
2245 dev_err(sdev->dev, "failed to assign pipeline id for %s: %d\n", in sof_ipc4_widget_setup()
2319 dev_err(sdev->dev, "module %s has no config data!\n", in sof_ipc4_widget_setup()
2331 dev_err(sdev->dev, "widget type %d not supported", swidget->id); in sof_ipc4_widget_setup()
2336 ret = sof_ipc4_widget_assign_instance_id(sdev, swidget); in sof_ipc4_widget_setup()
2338 dev_err(sdev->dev, "failed to assign instance id for %s\n", in sof_ipc4_widget_setup()
2352 dev_dbg(sdev->dev, "Create widget %s instance %d - pipe %d - core %d\n", in sof_ipc4_widget_setup()
2358 ret = sof_ipc_tx_message_no_reply(sdev->ipc, msg, ipc_size); in sof_ipc4_widget_setup()
2360 dev_err(sdev->dev, "failed to create module %s\n", swidget->widget->name); in sof_ipc4_widget_setup()
2374 static int sof_ipc4_widget_free(struct snd_sof_dev *sdev, struct snd_sof_widget *swidget) in sof_ipc4_widget_free() argument
2377 struct sof_ipc4_fw_data *ipc4_data = sdev->private; in sof_ipc4_widget_free()
2389 dev_warn(sdev->dev, "use_chain_dma set for scheduler %s", in sof_ipc4_widget_free()
2402 ret = sof_ipc_tx_message_no_reply(sdev->ipc, &msg, 0); in sof_ipc4_widget_free()
2404 dev_err(sdev->dev, "failed to free pipeline widget %s\n", in sof_ipc4_widget_free()
2506 static int sof_ipc4_set_copier_sink_format(struct snd_sof_dev *sdev, in sof_ipc4_set_copier_sink_format() argument
2512 const struct sof_ipc_ops *iops = sdev->ipc->ops; in sof_ipc4_set_copier_sink_format()
2518 dev_dbg(sdev->dev, "%s set copier sink %d format\n", in sof_ipc4_set_copier_sink_format()
2536 dev_err(sdev->dev, "Unable to get pin %d format for %s", in sof_ipc4_set_copier_sink_format()
2554 return iops->set_get_data(sdev, &msg, msg.data_size, true); in sof_ipc4_set_copier_sink_format()
2557 static int sof_ipc4_route_setup(struct snd_sof_dev *sdev, struct snd_sof_route *sroute) in sof_ipc4_route_setup() argument
2574 dev_err(sdev->dev, in sof_ipc4_route_setup()
2583 dev_err(sdev->dev, in sof_ipc4_route_setup()
2595 dev_err(sdev->dev, "failed to get queue ID for source widget: %s\n", in sof_ipc4_route_setup()
2603 dev_err(sdev->dev, "failed to get queue ID for sink widget: %s\n", in sof_ipc4_route_setup()
2612 ret = sof_ipc4_set_copier_sink_format(sdev, src_widget, sink_widget, in sof_ipc4_route_setup()
2615 dev_err(sdev->dev, "failed to set sink format for %s source queue ID %d\n", in sof_ipc4_route_setup()
2621 dev_dbg(sdev->dev, "bind %s:%d -> %s:%d\n", in sof_ipc4_route_setup()
2639 ret = sof_ipc_tx_message_no_reply(sdev->ipc, &msg, 0); in sof_ipc4_route_setup()
2641 dev_err(sdev->dev, "failed to bind modules %s:%d -> %s:%d\n", in sof_ipc4_route_setup()
2655 static int sof_ipc4_route_free(struct snd_sof_dev *sdev, struct snd_sof_route *sroute) in sof_ipc4_route_free() argument
2673 dev_dbg(sdev->dev, "unbind modules %s:%d -> %s:%d\n", in sof_ipc4_route_free()
2698 ret = sof_ipc_tx_message_no_reply(sdev->ipc, &msg, 0); in sof_ipc4_route_free()
2700 dev_err(sdev->dev, "failed to unbind modules %s:%d -> %s:%d\n", in sof_ipc4_route_free()
2710 static int sof_ipc4_dai_config(struct snd_sof_dev *sdev, struct snd_sof_widget *swidget, in sof_ipc4_dai_config() argument
2721 dev_err(sdev->dev, "Invalid DAI or DAI private data for %s\n", in sof_ipc4_dai_config()
2758 dev_err(sdev->dev, "%s: unsupported dai type %d\n", __func__, in sof_ipc4_dai_config()
2769 struct snd_sof_dev *sdev = snd_soc_component_get_drvdata(scomp); in sof_ipc4_parse_manifest() local
2770 struct sof_ipc4_fw_data *ipc4_data = sdev->private; in sof_ipc4_parse_manifest()
2810 ipc4_data->nhlt = devm_kmemdup(sdev->dev, manifest_tlv->data, in sof_ipc4_parse_manifest()
2827 static int sof_ipc4_dai_get_clk(struct snd_sof_dev *sdev, struct snd_sof_dai *dai, int clk_type) in sof_ipc4_dai_get_clk() argument
2839 list_for_each_entry(slink, &sdev->dai_link_list, list) { in sof_ipc4_dai_get_clk()
2847 dev_err(sdev->dev, "no DAI link found for DAI %s\n", dai->name); in sof_ipc4_dai_get_clk()
2860 dev_err(sdev->dev, "no matching hw_config found for DAI %s\n", dai->name); in sof_ipc4_dai_get_clk()
2872 dev_err(sdev->dev, "Invalid clk type for SSP %d\n", clk_type); in sof_ipc4_dai_get_clk()
2877 dev_err(sdev->dev, "DAI type %d not supported yet!\n", ipc4_copier->dai_type); in sof_ipc4_dai_get_clk()
2884 static int sof_ipc4_tear_down_all_pipelines(struct snd_sof_dev *sdev, bool verify) in sof_ipc4_tear_down_all_pipelines() argument
2900 list_for_each_entry(spcm, &sdev->pcm_list, list) { in sof_ipc4_tear_down_all_pipelines()
2908 ret = sof_pcm_stream_free(sdev, substream, spcm, dir, true); in sof_ipc4_tear_down_all_pipelines()
2917 static int sof_ipc4_link_setup(struct snd_sof_dev *sdev, struct snd_soc_dai_link *link) in sof_ipc4_link_setup() argument