scmi.h 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. #undef TRACE_SYSTEM
  3. #define TRACE_SYSTEM scmi
  4. #if !defined(_TRACE_SCMI_H) || defined(TRACE_HEADER_MULTI_READ)
  5. #define _TRACE_SCMI_H
  6. #include <linux/tracepoint.h>
  7. #define TRACE_SCMI_MAX_TAG_LEN 6
  8. TRACE_EVENT(scmi_fc_call,
  9. TP_PROTO(u8 protocol_id, u8 msg_id, u32 res_id, u32 val1, u32 val2),
  10. TP_ARGS(protocol_id, msg_id, res_id, val1, val2),
  11. TP_STRUCT__entry(
  12. __field(u8, protocol_id)
  13. __field(u8, msg_id)
  14. __field(u32, res_id)
  15. __field(u32, val1)
  16. __field(u32, val2)
  17. ),
  18. TP_fast_assign(
  19. __entry->protocol_id = protocol_id;
  20. __entry->msg_id = msg_id;
  21. __entry->res_id = res_id;
  22. __entry->val1 = val1;
  23. __entry->val2 = val2;
  24. ),
  25. TP_printk("pt=%02X msg_id=%02X res_id:%u vals=%u:%u",
  26. __entry->protocol_id, __entry->msg_id,
  27. __entry->res_id, __entry->val1, __entry->val2)
  28. );
  29. TRACE_EVENT(scmi_xfer_begin,
  30. TP_PROTO(int transfer_id, u8 msg_id, u8 protocol_id, u16 seq,
  31. bool poll, int inflight),
  32. TP_ARGS(transfer_id, msg_id, protocol_id, seq, poll, inflight),
  33. TP_STRUCT__entry(
  34. __field(int, transfer_id)
  35. __field(u8, msg_id)
  36. __field(u8, protocol_id)
  37. __field(u16, seq)
  38. __field(bool, poll)
  39. __field(int, inflight)
  40. ),
  41. TP_fast_assign(
  42. __entry->transfer_id = transfer_id;
  43. __entry->msg_id = msg_id;
  44. __entry->protocol_id = protocol_id;
  45. __entry->seq = seq;
  46. __entry->poll = poll;
  47. __entry->inflight = inflight;
  48. ),
  49. TP_printk("pt=%02X msg_id=%02X seq=%04X transfer_id=%X poll=%u inflight=%d",
  50. __entry->protocol_id, __entry->msg_id, __entry->seq,
  51. __entry->transfer_id, __entry->poll, __entry->inflight)
  52. );
  53. TRACE_EVENT(scmi_xfer_response_wait,
  54. TP_PROTO(int transfer_id, u8 msg_id, u8 protocol_id, u16 seq,
  55. u32 timeout, bool poll),
  56. TP_ARGS(transfer_id, msg_id, protocol_id, seq, timeout, poll),
  57. TP_STRUCT__entry(
  58. __field(int, transfer_id)
  59. __field(u8, msg_id)
  60. __field(u8, protocol_id)
  61. __field(u16, seq)
  62. __field(u32, timeout)
  63. __field(bool, poll)
  64. ),
  65. TP_fast_assign(
  66. __entry->transfer_id = transfer_id;
  67. __entry->msg_id = msg_id;
  68. __entry->protocol_id = protocol_id;
  69. __entry->seq = seq;
  70. __entry->timeout = timeout;
  71. __entry->poll = poll;
  72. ),
  73. TP_printk("pt=%02X msg_id=%02X seq=%04X transfer_id=%X tmo_ms=%u poll=%u",
  74. __entry->protocol_id, __entry->msg_id, __entry->seq,
  75. __entry->transfer_id, __entry->timeout, __entry->poll)
  76. );
  77. TRACE_EVENT(scmi_xfer_end,
  78. TP_PROTO(int transfer_id, u8 msg_id, u8 protocol_id, u16 seq,
  79. int status, int inflight),
  80. TP_ARGS(transfer_id, msg_id, protocol_id, seq, status, inflight),
  81. TP_STRUCT__entry(
  82. __field(int, transfer_id)
  83. __field(u8, msg_id)
  84. __field(u8, protocol_id)
  85. __field(u16, seq)
  86. __field(int, status)
  87. __field(int, inflight)
  88. ),
  89. TP_fast_assign(
  90. __entry->transfer_id = transfer_id;
  91. __entry->msg_id = msg_id;
  92. __entry->protocol_id = protocol_id;
  93. __entry->seq = seq;
  94. __entry->status = status;
  95. __entry->inflight = inflight;
  96. ),
  97. TP_printk("pt=%02X msg_id=%02X seq=%04X transfer_id=%X s=%d inflight=%d",
  98. __entry->protocol_id, __entry->msg_id, __entry->seq,
  99. __entry->transfer_id, __entry->status, __entry->inflight)
  100. );
  101. TRACE_EVENT(scmi_rx_done,
  102. TP_PROTO(int transfer_id, u8 msg_id, u8 protocol_id, u16 seq,
  103. u8 msg_type),
  104. TP_ARGS(transfer_id, msg_id, protocol_id, seq, msg_type),
  105. TP_STRUCT__entry(
  106. __field(int, transfer_id)
  107. __field(u8, msg_id)
  108. __field(u8, protocol_id)
  109. __field(u16, seq)
  110. __field(u8, msg_type)
  111. ),
  112. TP_fast_assign(
  113. __entry->transfer_id = transfer_id;
  114. __entry->msg_id = msg_id;
  115. __entry->protocol_id = protocol_id;
  116. __entry->seq = seq;
  117. __entry->msg_type = msg_type;
  118. ),
  119. TP_printk("pt=%02X msg_id=%02X seq=%04X transfer_id=%X msg_type=%u",
  120. __entry->protocol_id, __entry->msg_id, __entry->seq,
  121. __entry->transfer_id, __entry->msg_type)
  122. );
  123. TRACE_EVENT(scmi_msg_dump,
  124. TP_PROTO(int id, u8 channel_id, u8 protocol_id, u8 msg_id,
  125. unsigned char *tag, u16 seq, int status,
  126. void *buf, size_t len),
  127. TP_ARGS(id, channel_id, protocol_id, msg_id, tag, seq, status,
  128. buf, len),
  129. TP_STRUCT__entry(
  130. __field(int, id)
  131. __field(u8, channel_id)
  132. __field(u8, protocol_id)
  133. __field(u8, msg_id)
  134. __array(char, tag, TRACE_SCMI_MAX_TAG_LEN)
  135. __field(u16, seq)
  136. __field(int, status)
  137. __field(size_t, len)
  138. __dynamic_array(unsigned char, cmd, len)
  139. ),
  140. TP_fast_assign(
  141. __entry->id = id;
  142. __entry->channel_id = channel_id;
  143. __entry->protocol_id = protocol_id;
  144. __entry->msg_id = msg_id;
  145. strscpy(__entry->tag, tag, TRACE_SCMI_MAX_TAG_LEN);
  146. __entry->seq = seq;
  147. __entry->status = status;
  148. __entry->len = len;
  149. memcpy(__get_dynamic_array(cmd), buf, __entry->len);
  150. ),
  151. TP_printk("id=%d ch=%02X pt=%02X t=%s msg_id=%02X seq=%04X s=%d pyld=%s",
  152. __entry->id, __entry->channel_id, __entry->protocol_id,
  153. __entry->tag, __entry->msg_id, __entry->seq, __entry->status,
  154. __print_hex_str(__get_dynamic_array(cmd), __entry->len))
  155. );
  156. #endif /* _TRACE_SCMI_H */
  157. /* This part must be outside protection */
  158. #include <trace/define_trace.h>