aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc
diff options
context:
space:
mode:
authorBard Liao <yung-chuan.liao@linux.intel.com>2022-09-19 14:21:02 +0200
committerMark Brown <broonie@kernel.org>2022-09-19 15:44:03 +0100
commitfa6e73d69193d0ba3b794f7c303beae498732f40 (patch)
treef004763a364812c7184ee39741fc525ebdf52363 /sound/soc
parentASoC/qcom/arm64: Qualcomm ADSP DTS and binding fixes (diff)
downloadlinux-dev-fa6e73d69193d0ba3b794f7c303beae498732f40.tar.xz
linux-dev-fa6e73d69193d0ba3b794f7c303beae498732f40.zip
ASoC: SOF: add widget setup/free tracing
Enables tracking of use_count during widget setup and free routines. Useful for debugging unbalanced use_counts during suspend/resume. Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com> Signed-off-by: Noah Klayman <noah.klayman@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/20220919122108.43764-2-pierre-louis.bossart@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound/soc')
-rw-r--r--sound/soc/sof/core.c3
-rw-r--r--sound/soc/sof/sof-audio.c5
2 files changed, 8 insertions, 0 deletions
diff --git a/sound/soc/sof/core.c b/sound/soc/sof/core.c
index c99b5e6c026c..3e6141d03770 100644
--- a/sound/soc/sof/core.c
+++ b/sound/soc/sof/core.c
@@ -15,6 +15,9 @@
#include "sof-priv.h"
#include "ops.h"
+#define CREATE_TRACE_POINTS
+#include <trace/events/sof.h>
+
/* see SOF_DBG_ flags */
static int sof_core_debug = IS_ENABLED(CONFIG_SND_SOC_SOF_DEBUG_ENABLE_FIRMWARE_TRACE);
module_param_named(sof_debug, sof_core_debug, int, 0444);
diff --git a/sound/soc/sof/sof-audio.c b/sound/soc/sof/sof-audio.c
index ea9663d448eb..a3d3dd7a0037 100644
--- a/sound/soc/sof/sof-audio.c
+++ b/sound/soc/sof/sof-audio.c
@@ -9,6 +9,7 @@
//
#include <linux/bitfield.h>
+#include <trace/events/sof.h>
#include "sof-audio.h"
#include "sof-of-dev.h"
#include "ops.h"
@@ -36,6 +37,8 @@ int sof_widget_free(struct snd_sof_dev *sdev, struct snd_sof_widget *swidget)
if (!swidget->private)
return 0;
+ trace_sof_widget_free(swidget);
+
/* only free when use_count is 0 */
if (--swidget->use_count)
return 0;
@@ -86,6 +89,8 @@ int sof_widget_setup(struct snd_sof_dev *sdev, struct snd_sof_widget *swidget)
if (!swidget->private)
return 0;
+ trace_sof_widget_setup(swidget);
+
/* widget already set up */
if (++swidget->use_count > 1)
return 0;