sof_intel.h 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. /* SPDX-License-Identifier: GPL-2.0-only */
  2. /*
  3. * Copyright(c) 2022 Intel Corporation. All rights reserved.
  4. *
  5. * Author: Noah Klayman <[email protected]>
  6. */
  7. #undef TRACE_SYSTEM
  8. #define TRACE_SYSTEM sof_intel
  9. #if !defined(_TRACE_SOF_INTEL_H) || defined(TRACE_HEADER_MULTI_READ)
  10. #define _TRACE_SOF_INTEL_H
  11. #include <linux/tracepoint.h>
  12. #include <sound/hdaudio.h>
  13. #include "../../../sound/soc/sof/sof-audio.h"
  14. TRACE_EVENT(sof_intel_hda_irq,
  15. TP_PROTO(struct snd_sof_dev *sdev, char *source),
  16. TP_ARGS(sdev, source),
  17. TP_STRUCT__entry(
  18. __string(device_name, dev_name(sdev->dev))
  19. __string(source, source)
  20. ),
  21. TP_fast_assign(
  22. __assign_str(device_name, dev_name(sdev->dev));
  23. __assign_str(source, source);
  24. ),
  25. TP_printk("device_name=%s source=%s",
  26. __get_str(device_name), __get_str(source))
  27. );
  28. DECLARE_EVENT_CLASS(sof_intel_ipc_firmware_template,
  29. TP_ARGS(struct snd_sof_dev *sdev, u32 msg, u32 msg_ext),
  30. TP_PROTO(sdev, msg, msg_ext),
  31. TP_STRUCT__entry(
  32. __string(device_name, dev_name(sdev->dev))
  33. __field(u32, msg)
  34. __field(u32, msg_ext)
  35. ),
  36. TP_fast_assign(
  37. __assign_str(device_name, dev_name(sdev->dev));
  38. __entry->msg = msg;
  39. __entry->msg_ext = msg_ext;
  40. ),
  41. TP_printk("device_name=%s msg=%#x msg_ext=%#x",
  42. __get_str(device_name), __entry->msg, __entry->msg_ext)
  43. );
  44. DEFINE_EVENT(sof_intel_ipc_firmware_template, sof_intel_ipc_firmware_response,
  45. TP_PROTO(struct snd_sof_dev *sdev, u32 msg, u32 msg_ext),
  46. TP_ARGS(sdev, msg, msg_ext)
  47. );
  48. DEFINE_EVENT(sof_intel_ipc_firmware_template, sof_intel_ipc_firmware_initiated,
  49. TP_PROTO(struct snd_sof_dev *sdev, u32 msg, u32 msg_ext),
  50. TP_ARGS(sdev, msg, msg_ext)
  51. );
  52. TRACE_EVENT(sof_intel_D0I3C_updated,
  53. TP_PROTO(struct snd_sof_dev *sdev, u8 reg),
  54. TP_ARGS(sdev, reg),
  55. TP_STRUCT__entry(
  56. __string(device_name, dev_name(sdev->dev))
  57. __field(u8, reg)
  58. ),
  59. TP_fast_assign(
  60. __assign_str(device_name, dev_name(sdev->dev));
  61. __entry->reg = reg;
  62. ),
  63. TP_printk("device_name=%s register=%#x",
  64. __get_str(device_name), __entry->reg)
  65. );
  66. TRACE_EVENT(sof_intel_hda_irq_ipc_check,
  67. TP_PROTO(struct snd_sof_dev *sdev, u32 irq_status),
  68. TP_ARGS(sdev, irq_status),
  69. TP_STRUCT__entry(
  70. __string(device_name, dev_name(sdev->dev))
  71. __field(u32, irq_status)
  72. ),
  73. TP_fast_assign(
  74. __assign_str(device_name, dev_name(sdev->dev));
  75. __entry->irq_status = irq_status;
  76. ),
  77. TP_printk("device_name=%s irq_status=%#x",
  78. __get_str(device_name), __entry->irq_status)
  79. );
  80. TRACE_EVENT(sof_intel_hda_dsp_pcm,
  81. TP_PROTO(struct snd_sof_dev *sdev,
  82. struct hdac_stream *hstream,
  83. struct snd_pcm_substream *substream,
  84. snd_pcm_uframes_t pos
  85. ),
  86. TP_ARGS(sdev, hstream, substream, pos),
  87. TP_STRUCT__entry(
  88. __string(device_name, dev_name(sdev->dev))
  89. __field(u32, hstream_index)
  90. __field(u32, substream)
  91. __field(unsigned long, pos)
  92. ),
  93. TP_fast_assign(
  94. __assign_str(device_name, dev_name(sdev->dev));
  95. __entry->hstream_index = hstream->index;
  96. __entry->substream = substream->stream;
  97. __entry->pos = pos;
  98. ),
  99. TP_printk("device_name=%s hstream_index=%d substream=%d pos=%lu",
  100. __get_str(device_name), __entry->hstream_index,
  101. __entry->substream, __entry->pos)
  102. );
  103. TRACE_EVENT(sof_intel_hda_dsp_stream_status,
  104. TP_PROTO(struct device *dev, struct hdac_stream *s, u32 status),
  105. TP_ARGS(dev, s, status),
  106. TP_STRUCT__entry(
  107. __string(device_name, dev_name(dev))
  108. __field(u32, stream)
  109. __field(u32, status)
  110. ),
  111. TP_fast_assign(
  112. __assign_str(device_name, dev_name(dev));
  113. __entry->stream = s->index;
  114. __entry->status = status;
  115. ),
  116. TP_printk("device_name=%s stream=%d status=%#x",
  117. __get_str(device_name), __entry->stream, __entry->status)
  118. );
  119. TRACE_EVENT(sof_intel_hda_dsp_check_stream_irq,
  120. TP_PROTO(struct snd_sof_dev *sdev, u32 status),
  121. TP_ARGS(sdev, status),
  122. TP_STRUCT__entry(
  123. __string(device_name, dev_name(sdev->dev))
  124. __field(u32, status)
  125. ),
  126. TP_fast_assign(
  127. __assign_str(device_name, dev_name(sdev->dev));
  128. __entry->status = status;
  129. ),
  130. TP_printk("device_name=%s status=%#x",
  131. __get_str(device_name), __entry->status)
  132. );
  133. #endif /* _TRACE_SOF_INTEL_H */
  134. /* This part must be outside protection */
  135. #include <trace/define_trace.h>