--- /dev/null
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Copyright(c) 2022 Intel Corporation. All rights reserved.
+ *
+ * Author: Noah Klayman <noah.klayman@intel.com>
+ */
+
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM sof_intel
+
+#if !defined(_TRACE_SOF_INTEL_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_SOF_INTEL_H
+#include <linux/tracepoint.h>
+#include "../../../sound/soc/sof/sof-audio.h"
+
+TRACE_EVENT(sof_intel_hda_irq,
+       TP_PROTO(struct snd_sof_dev *sdev, char *source),
+       TP_ARGS(sdev, source),
+       TP_STRUCT__entry(
+               __string(device_name, dev_name(sdev->dev))
+               __string(source, source)
+       ),
+       TP_fast_assign(
+               __assign_str(device_name, dev_name(sdev->dev));
+               __assign_str(source, source);
+       ),
+       TP_printk("device_name=%s source=%s",
+                 __get_str(device_name), __get_str(source))
+);
+
+#endif /* _TRACE_SOF_INTEL_H */
+
+/* This part must be outside protection */
+#include <trace/define_trace.h>
 
 #include "../ops.h"
 #include "hda.h"
 
+#define CREATE_TRACE_POINTS
+#include <trace/events/sof_intel.h>
+
 #if IS_ENABLED(CONFIG_SND_SOC_SOF_HDA)
 #include <sound/soc-acpi-intel-match.h>
 #endif
        struct sof_intel_hda_dev *hdev = sdev->pdata->hw_pdata;
 
        /* deal with streams and controller first */
-       if (hda_dsp_check_stream_irq(sdev))
+       if (hda_dsp_check_stream_irq(sdev)) {
+               trace_sof_intel_hda_irq(sdev, "stream");
                hda_dsp_stream_threaded_handler(irq, sdev);
+       }
 
-       if (hda_check_ipc_irq(sdev))
+       if (hda_check_ipc_irq(sdev)) {
+               trace_sof_intel_hda_irq(sdev, "ipc");
                sof_ops(sdev)->irq_thread(irq, sdev);
+       }
 
-       if (hda_dsp_check_sdw_irq(sdev))
+       if (hda_dsp_check_sdw_irq(sdev)) {
+               trace_sof_intel_hda_irq(sdev, "sdw");
                hda_dsp_sdw_thread(irq, hdev->sdw);
+       }
 
-       if (hda_sdw_check_wakeen_irq(sdev))
+       if (hda_sdw_check_wakeen_irq(sdev)) {
+               trace_sof_intel_hda_irq(sdev, "wakeen");
                hda_sdw_process_wakeen(sdev);
+       }
 
        hda_check_for_state_change(sdev);