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