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