162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Copyright(c) 2022 Intel Corporation. All rights reserved.
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci * Author: Noah Klayman <noah.klayman@intel.com>
662306a36Sopenharmony_ci */
762306a36Sopenharmony_ci
862306a36Sopenharmony_ci#undef TRACE_SYSTEM
962306a36Sopenharmony_ci#define TRACE_SYSTEM sof_intel
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ci#if !defined(_TRACE_SOF_INTEL_H) || defined(TRACE_HEADER_MULTI_READ)
1262306a36Sopenharmony_ci#define _TRACE_SOF_INTEL_H
1362306a36Sopenharmony_ci#include <linux/tracepoint.h>
1462306a36Sopenharmony_ci#include <sound/hdaudio.h>
1562306a36Sopenharmony_ci#include "../../../sound/soc/sof/sof-audio.h"
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ciTRACE_EVENT(sof_intel_hda_irq,
1862306a36Sopenharmony_ci	TP_PROTO(struct snd_sof_dev *sdev, char *source),
1962306a36Sopenharmony_ci	TP_ARGS(sdev, source),
2062306a36Sopenharmony_ci	TP_STRUCT__entry(
2162306a36Sopenharmony_ci		__string(device_name, dev_name(sdev->dev))
2262306a36Sopenharmony_ci		__string(source, source)
2362306a36Sopenharmony_ci	),
2462306a36Sopenharmony_ci	TP_fast_assign(
2562306a36Sopenharmony_ci		__assign_str(device_name, dev_name(sdev->dev));
2662306a36Sopenharmony_ci		__assign_str(source, source);
2762306a36Sopenharmony_ci	),
2862306a36Sopenharmony_ci	TP_printk("device_name=%s source=%s",
2962306a36Sopenharmony_ci		  __get_str(device_name), __get_str(source))
3062306a36Sopenharmony_ci);
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_ciDECLARE_EVENT_CLASS(sof_intel_ipc_firmware_template,
3362306a36Sopenharmony_ci	TP_ARGS(struct snd_sof_dev *sdev, u32 msg, u32 msg_ext),
3462306a36Sopenharmony_ci	TP_PROTO(sdev, msg, msg_ext),
3562306a36Sopenharmony_ci	TP_STRUCT__entry(
3662306a36Sopenharmony_ci		__string(device_name, dev_name(sdev->dev))
3762306a36Sopenharmony_ci		__field(u32, msg)
3862306a36Sopenharmony_ci		__field(u32, msg_ext)
3962306a36Sopenharmony_ci	),
4062306a36Sopenharmony_ci	TP_fast_assign(
4162306a36Sopenharmony_ci		__assign_str(device_name, dev_name(sdev->dev));
4262306a36Sopenharmony_ci		__entry->msg = msg;
4362306a36Sopenharmony_ci		__entry->msg_ext = msg_ext;
4462306a36Sopenharmony_ci	),
4562306a36Sopenharmony_ci	TP_printk("device_name=%s msg=%#x msg_ext=%#x",
4662306a36Sopenharmony_ci		  __get_str(device_name), __entry->msg, __entry->msg_ext)
4762306a36Sopenharmony_ci);
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_ciDEFINE_EVENT(sof_intel_ipc_firmware_template, sof_intel_ipc_firmware_response,
5062306a36Sopenharmony_ci	TP_PROTO(struct snd_sof_dev *sdev, u32 msg, u32 msg_ext),
5162306a36Sopenharmony_ci	TP_ARGS(sdev, msg, msg_ext)
5262306a36Sopenharmony_ci);
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ciDEFINE_EVENT(sof_intel_ipc_firmware_template, sof_intel_ipc_firmware_initiated,
5562306a36Sopenharmony_ci	TP_PROTO(struct snd_sof_dev *sdev, u32 msg, u32 msg_ext),
5662306a36Sopenharmony_ci	TP_ARGS(sdev, msg, msg_ext)
5762306a36Sopenharmony_ci);
5862306a36Sopenharmony_ci
5962306a36Sopenharmony_ciTRACE_EVENT(sof_intel_D0I3C_updated,
6062306a36Sopenharmony_ci	TP_PROTO(struct snd_sof_dev *sdev, u8 reg),
6162306a36Sopenharmony_ci	TP_ARGS(sdev, reg),
6262306a36Sopenharmony_ci	TP_STRUCT__entry(
6362306a36Sopenharmony_ci		__string(device_name, dev_name(sdev->dev))
6462306a36Sopenharmony_ci		__field(u8, reg)
6562306a36Sopenharmony_ci	),
6662306a36Sopenharmony_ci	TP_fast_assign(
6762306a36Sopenharmony_ci		__assign_str(device_name, dev_name(sdev->dev));
6862306a36Sopenharmony_ci		__entry->reg = reg;
6962306a36Sopenharmony_ci	),
7062306a36Sopenharmony_ci	TP_printk("device_name=%s register=%#x",
7162306a36Sopenharmony_ci		  __get_str(device_name), __entry->reg)
7262306a36Sopenharmony_ci);
7362306a36Sopenharmony_ci
7462306a36Sopenharmony_ciTRACE_EVENT(sof_intel_hda_irq_ipc_check,
7562306a36Sopenharmony_ci	TP_PROTO(struct snd_sof_dev *sdev, u32 irq_status),
7662306a36Sopenharmony_ci	TP_ARGS(sdev, irq_status),
7762306a36Sopenharmony_ci	TP_STRUCT__entry(
7862306a36Sopenharmony_ci		__string(device_name, dev_name(sdev->dev))
7962306a36Sopenharmony_ci		__field(u32, irq_status)
8062306a36Sopenharmony_ci	),
8162306a36Sopenharmony_ci	TP_fast_assign(
8262306a36Sopenharmony_ci		__assign_str(device_name, dev_name(sdev->dev));
8362306a36Sopenharmony_ci		__entry->irq_status = irq_status;
8462306a36Sopenharmony_ci	),
8562306a36Sopenharmony_ci	TP_printk("device_name=%s irq_status=%#x",
8662306a36Sopenharmony_ci		  __get_str(device_name), __entry->irq_status)
8762306a36Sopenharmony_ci);
8862306a36Sopenharmony_ci
8962306a36Sopenharmony_ciTRACE_EVENT(sof_intel_hda_dsp_pcm,
9062306a36Sopenharmony_ci	TP_PROTO(struct snd_sof_dev *sdev,
9162306a36Sopenharmony_ci		struct hdac_stream *hstream,
9262306a36Sopenharmony_ci		struct snd_pcm_substream *substream,
9362306a36Sopenharmony_ci		snd_pcm_uframes_t pos
9462306a36Sopenharmony_ci	),
9562306a36Sopenharmony_ci	TP_ARGS(sdev, hstream, substream, pos),
9662306a36Sopenharmony_ci	TP_STRUCT__entry(
9762306a36Sopenharmony_ci		__string(device_name, dev_name(sdev->dev))
9862306a36Sopenharmony_ci		__field(u32, hstream_index)
9962306a36Sopenharmony_ci		__field(u32, substream)
10062306a36Sopenharmony_ci		__field(unsigned long, pos)
10162306a36Sopenharmony_ci	),
10262306a36Sopenharmony_ci	TP_fast_assign(
10362306a36Sopenharmony_ci		__assign_str(device_name, dev_name(sdev->dev));
10462306a36Sopenharmony_ci		__entry->hstream_index = hstream->index;
10562306a36Sopenharmony_ci		__entry->substream = substream->stream;
10662306a36Sopenharmony_ci		__entry->pos = pos;
10762306a36Sopenharmony_ci	),
10862306a36Sopenharmony_ci	TP_printk("device_name=%s hstream_index=%d substream=%d pos=%lu",
10962306a36Sopenharmony_ci		  __get_str(device_name), __entry->hstream_index,
11062306a36Sopenharmony_ci		  __entry->substream, __entry->pos)
11162306a36Sopenharmony_ci);
11262306a36Sopenharmony_ci
11362306a36Sopenharmony_ciTRACE_EVENT(sof_intel_hda_dsp_stream_status,
11462306a36Sopenharmony_ci	TP_PROTO(struct device *dev, struct hdac_stream *s, u32 status),
11562306a36Sopenharmony_ci	TP_ARGS(dev, s, status),
11662306a36Sopenharmony_ci	TP_STRUCT__entry(
11762306a36Sopenharmony_ci		__string(device_name, dev_name(dev))
11862306a36Sopenharmony_ci		__field(u32, stream)
11962306a36Sopenharmony_ci		__field(u32, status)
12062306a36Sopenharmony_ci	),
12162306a36Sopenharmony_ci	TP_fast_assign(
12262306a36Sopenharmony_ci		__assign_str(device_name, dev_name(dev));
12362306a36Sopenharmony_ci		__entry->stream = s->index;
12462306a36Sopenharmony_ci		__entry->status = status;
12562306a36Sopenharmony_ci	),
12662306a36Sopenharmony_ci	TP_printk("device_name=%s stream=%d status=%#x",
12762306a36Sopenharmony_ci		  __get_str(device_name), __entry->stream, __entry->status)
12862306a36Sopenharmony_ci);
12962306a36Sopenharmony_ci
13062306a36Sopenharmony_ciTRACE_EVENT(sof_intel_hda_dsp_check_stream_irq,
13162306a36Sopenharmony_ci	TP_PROTO(struct snd_sof_dev *sdev, u32 status),
13262306a36Sopenharmony_ci	TP_ARGS(sdev, status),
13362306a36Sopenharmony_ci	TP_STRUCT__entry(
13462306a36Sopenharmony_ci		__string(device_name, dev_name(sdev->dev))
13562306a36Sopenharmony_ci		__field(u32, status)
13662306a36Sopenharmony_ci	),
13762306a36Sopenharmony_ci	TP_fast_assign(
13862306a36Sopenharmony_ci		__assign_str(device_name, dev_name(sdev->dev));
13962306a36Sopenharmony_ci		__entry->status = status;
14062306a36Sopenharmony_ci	),
14162306a36Sopenharmony_ci	TP_printk("device_name=%s status=%#x",
14262306a36Sopenharmony_ci		  __get_str(device_name), __entry->status)
14362306a36Sopenharmony_ci);
14462306a36Sopenharmony_ci
14562306a36Sopenharmony_ci#endif /* _TRACE_SOF_INTEL_H */
14662306a36Sopenharmony_ci
14762306a36Sopenharmony_ci/* This part must be outside protection */
14862306a36Sopenharmony_ci#include <trace/define_trace.h>
149