FAILED: patch "[PATCH] ASoC: SOF: sof-audio: setup sched widgets during pipeline" failed to apply to 5.16-stable tree
Subsystems (4)
[email protected]
maintainerThe patch below does not apply to the 5.16-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 01429183f479c54c1b5d15453a8ce574ea43e525 Mon Sep 17 00:00:00 2001
From: Pierre-Louis Bossart <[email protected]>
Date: Tue, 23 Nov 2021 19:16:04 +0200
Subject: [PATCH] ASoC: SOF: sof-audio: setup sched widgets during pipeline
complete step
Older firmware prior to ABI 3.19 has a dependency where the scheduler widgets need to be setup last. Moving the call to sof_widget_setup() before the pipeline_complete() call also helps remove the need for the 'reverse' direction when walking through the widget list - this was only working because of the topology macros but the topology does not require any order.
sound/soc/sof/sof-audio.c +17 -2
@@ -637,16 +637,25 @@ const struct sof_ipc_pipe_new *snd_sof_pipeline_find(struct snd_sof_dev *sdev,int sof_set_up_pipelines (struct snd_sof_dev *sdev,bool verify) { +struct sof_ipc_fw_version *v = &sdev->fw_ready.version;struct snd_sof_widget *swidget;struct snd_sof_route *sroute;int ret;/* restore pipeline components */ -list_for_each_entry_reverse (swidget, &sdev->widget_list, list) { +list_for_each_entry (swidget, &sdev->widget_list, list) {/* only set up the widgets belonging to static pipelines */ if (!verify && swidget->dynamic_pipeline_widget)continue ; +/* +* For older firmware, skip scheduler widgets in this loop, +* sof_widget_setup() will be called in the 'complete pipeline' loop +*/ +if (v->abi_version <SOF_ABI_VER (3 ,19 ,0 ) && + swidget->id == snd_soc_dapm_scheduler) +continue ; +/* update DAI config. The IPC will be sent in sof_widget_setup() */ if (WIDGET_IS_DAI (swidget->id)) {struct snd_sof_dai *dai = swidget->private;
@@ -694,6 +703,12 @@ int sof_set_up_pipelines(struct snd_sof_dev *sdev, bool verify)if (!verify && swidget->dynamic_pipeline_widget)continue ; +if (v->abi_version <SOF_ABI_VER (3 ,19 ,0 )) { + ret =sof_widget_setup (sdev, swidget); +if (ret <0 ) +return ret; + } + swidget->complete =snd_sof_complete_pipeline (sdev, swidget);break ;
@@ -722,7 +737,7 @@ int sof_tear_down_pipelines(struct snd_sof_dev *sdev, bool verify)* sroute->setup because during suspend all streams are suspended and during topology * loading the sound card unavailable to open PCMs. */ -list_for_each_entry_reverse (swidget, &sdev->widget_list, list) { +list_for_each_entry (swidget, &sdev->widget_list, list) {if (swidget->dynamic_pipeline_widget)continue ;
Quoted 5 lines · On 1/24/22 07:59, [email protected] wrote:
The patch below does not apply to the 5.16-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
Yes, it looks like we've missing two dependencies. the following sequence applies on top of v5.16.2
git cherry-pick 7cc7b9ba21d4978d19f0e3edc2b00d44c9d66ff6 git cherry-pick b2ebcf42a48f4560862bb811f3268767d17ebdcd
and then this commit
git cherry-pick 01429183f479c54c1b5d15453a8ce574ea43e525
I would recommend adding these three patches to avoid issues with dynamic pipelines.
Quoted 80 lines
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From
01429183f479c54c1b5d15453a8ce574ea43e525Mon Sep 17 00:00:00 2001
From: Pierre-Louis Bossart <[email protected]>
Date: Tue, 23 Nov 2021 19:16:04 +0200
Subject: [PATCH] ASoC: SOF: sof-audio: setup sched widgets during pipeline
complete stepOlder firmware prior to ABI 3.19 has a dependency where the scheduler widgets need to be setup last. Moving the call to
sof_widget_setup()before thepipeline_complete()call also helps remove the need for the 'reverse' direction when walking through the widget list - this was only working because of the topology macros but the topology does not require any order.Fixes 5fcdbb2d45df ("ASoC: SOF: Add support for dynamic pipelines")Signed-off-by Pierre-Louis Bossart <[email protected]>Reviewed-by Ranjani Sridharan <[email protected]>Signed-off-by Kai Vehmanen <[email protected]>Signed-off-by Mark Brown <[email protected]>sound/soc/sof/sof-audio.c +17
-2@@ -637,16 +637,25 @@ const struct sof_ipc_pipe_new *snd_sof_pipeline_find(struct snd_sof_dev *sdev,int sof_set_up_pipelines (struct snd_sof_dev *sdev,bool verify) { +struct sof_ipc_fw_version *v = &sdev->fw_ready.version;struct snd_sof_widget *swidget;struct snd_sof_route *sroute;int ret;/* restore pipeline components */ -list_for_each_entry_reverse (swidget, &sdev->widget_list, list) { +list_for_each_entry (swidget, &sdev->widget_list, list) {/* only set up the widgets belonging to static pipelines */ if (!verify && swidget->dynamic_pipeline_widget)continue ; +/* +* For older firmware, skip scheduler widgets in this loop, +* sof_widget_setup() will be called in the 'complete pipeline' loop +*/ +if (v->abi_version <SOF_ABI_VER (3 ,19 ,0 ) && + swidget->id == snd_soc_dapm_scheduler) +continue ; +/* update DAI config. The IPC will be sent in sof_widget_setup() */ if (WIDGET_IS_DAI (swidget->id)) {struct snd_sof_dai *dai = swidget->private;@@ -694,6 +703,12 @@ int sof_set_up_pipelines(struct snd_sof_dev *sdev, bool verify)if (!verify && swidget->dynamic_pipeline_widget)continue ; +if (v->abi_version <SOF_ABI_VER (3 ,19 ,0 )) { + ret =sof_widget_setup (sdev, swidget); +if (ret <0 ) +return ret; + } + swidget->complete =snd_sof_complete_pipeline (sdev, swidget);break ;@@ -722,7 +737,7 @@ int sof_tear_down_pipelines(struct snd_sof_dev *sdev, bool verify)* sroute->setup because during suspend all streams are suspended and during topology * loading the sound card unavailable to open PCMs. */ -list_for_each_entry_reverse (swidget, &sdev->widget_list, list) { +list_for_each_entry (swidget, &sdev->widget_list, list) {if (swidget->dynamic_pipeline_widget)continue ;
Greg KH
maintainerQuoted 12 lines · Pierre-Louis Bossart
Quoted 5 lines · On 1/24/22 07:59, [email protected] wrote:
The patch below does not apply to the 5.16-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.Yes, it looks like we've missing two dependencies. the following sequence applies on top of v5.16.2
Quoted 8 lines
git cherry-pick
7cc7b9ba21d4978d19f0e3edc2b00d44c9d66ff6git cherry-pickb2ebcf42a48f4560862bb811f3268767d17ebdcdand then this commit
git cherry-pick01429183f479c54c1b5d15453a8ce574ea43e525I would recommend adding these three patches to avoid issues with dynamic pipelines.
Thanks, all now queued up.
greg k-h