]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
ASoC: SOF: sof-audio: reset route status before freeing widget
authorRanjani Sridharan <ranjani.sridharan@linux.intel.com>
Tue, 26 Apr 2022 17:17:34 +0000 (10:17 -0700)
committerMark Brown <broonie@kernel.org>
Fri, 29 Apr 2022 12:05:55 +0000 (13:05 +0100)
This is in preparation for IPC4 which requires that the route be reset
before the widget is freed. For IPC3, there is nothing more to be done
other than setting the route status. So it is OK to be moved before the
widget is freed.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com>
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Link: https://lore.kernel.org/r/20220426171743.171061-3-ranjani.sridharan@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/sof/sof-audio.c

index 7ecc84f9872bf3201fbd8341192b68017774032f..453e1edab1218bb23d3506019b1cec66d908e5f4 100644 (file)
@@ -34,6 +34,9 @@ int sof_widget_free(struct snd_sof_dev *sdev, struct snd_sof_widget *swidget)
        if (--swidget->use_count)
                return 0;
 
+       /* reset route setup status for all routes that contain this widget */
+       sof_reset_route_setup_status(sdev, swidget);
+
        /* continue to disable core even if IPC fails */
        if (tplg_ops->widget_free)
                err = tplg_ops->widget_free(sdev, swidget);
@@ -50,8 +53,6 @@ int sof_widget_free(struct snd_sof_dev *sdev, struct snd_sof_widget *swidget)
                        err = ret;
        }
 
-       /* reset route setup status for all routes that contain this widget */
-       sof_reset_route_setup_status(sdev, swidget);
        swidget->complete = 0;
 
        /*