From: Mark Brown Date: Wed, 29 Mar 2023 23:14:00 +0000 (+0100) Subject: ASoC: Merge fixes X-Git-Tag: v6.4-rc1~125^2^2~76 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=461b56f26119b9fc47a83113a59c05be05e4c6fa;p=thirdparty%2Fkernel%2Fstable.git ASoC: Merge fixes So they can be used as a basis for new work. --- 461b56f26119b9fc47a83113a59c05be05e4c6fa diff --cc sound/soc/sof/ipc4-topology.c index de7213237b27c,669b99a4f76e6..d2d41c53260cb --- a/sound/soc/sof/ipc4-topology.c +++ b/sound/soc/sof/ipc4-topology.c @@@ -2337,19 -1805,16 +2337,27 @@@ static int sof_ipc4_route_setup(struct u32 header, extension; int ret; + /* no route set up if chain DMA is used */ + if (src_pipeline->use_chain_dma || sink_pipeline->use_chain_dma) { + if (!src_pipeline->use_chain_dma || !sink_pipeline->use_chain_dma) { + dev_err(sdev->dev, + "use_chain_dma must be set for both src %s and sink %s pipelines\n", + src_widget->widget->name, sink_widget->widget->name); + return -EINVAL; + } + return 0; + } + + if (!src_fw_module || !sink_fw_module) { + /* The NULL module will print as "(efault)" */ + dev_err(sdev->dev, "source %s or sink %s widget weren't set up properly\n", + src_fw_module->man4_module_entry.name, + sink_fw_module->man4_module_entry.name); + return -ENODEV; + } + sroute->src_queue_id = sof_ipc4_get_queue_id(src_widget, sink_widget, - SOF_PIN_TYPE_SOURCE); + SOF_PIN_TYPE_OUTPUT); if (sroute->src_queue_id < 0) { dev_err(sdev->dev, "failed to get queue ID for source widget: %s\n", src_widget->widget->name);