ASoC: SOF: sof-audio: add is_virtual_widget helper
authorBard Liao <yung-chuan.liao@linux.intel.com>
Fri, 16 Jun 2023 10:00:32 +0000 (12:00 +0200)
committerMark Brown <broonie@kernel.org>
Fri, 16 Jun 2023 11:53:45 +0000 (12:53 +0100)
Testing virtual widget is required in many functions. No function
changed in this commit.

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

index 1cbda595c5183448cb148d4f643ad8370c5deb98..c77d07d62517aff4c8ebf5a773489363734d133b 100644 (file)
 #include "sof-of-dev.h"
 #include "ops.h"
 
+static bool is_virtual_widget(struct snd_sof_dev *sdev, struct snd_soc_dapm_widget *widget,
+                             const char *func)
+{
+       switch (widget->id) {
+       case snd_soc_dapm_out_drv:
+       case snd_soc_dapm_output:
+       case snd_soc_dapm_input:
+               dev_dbg(sdev->dev, "%s: %s is a virtual widget\n", func, widget->name);
+               return true;
+       default:
+               return false;
+       }
+}
+
 static void sof_reset_route_setup_status(struct snd_sof_dev *sdev, struct snd_sof_widget *widget)
 {
        const struct sof_ipc_tplg_ops *tplg_ops = sof_ipc_get_ops(sdev, tplg);
@@ -231,23 +245,9 @@ int sof_route_setup(struct snd_sof_dev *sdev, struct snd_soc_dapm_widget *wsourc
        bool route_found = false;
 
        /* ignore routes involving virtual widgets in topology */
-       switch (src_widget->id) {
-       case snd_soc_dapm_out_drv:
-       case snd_soc_dapm_output:
-       case snd_soc_dapm_input:
-               return 0;
-       default:
-               break;
-       }
-
-       switch (sink_widget->id) {
-       case snd_soc_dapm_out_drv:
-       case snd_soc_dapm_output:
-       case snd_soc_dapm_input:
+       if (is_virtual_widget(sdev, src_widget->widget, __func__) ||
+           is_virtual_widget(sdev, sink_widget->widget, __func__))
                return 0;
-       default:
-               break;
-       }
 
        /* find route matching source and sink widgets */
        list_for_each_entry(sroute, &sdev->route_list, list)