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), 40 TP_ARGS(transfer_id, msg_id, protocol_id, seq, poll), 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 ), 49 50 TP_fast_assign( 51 __entry->transfer_id = transfer_id; 52 __entry->msg_id = msg_id; 53 __entry->protocol_id = protocol_id; 54 __entry->seq = seq; 55 __entry->poll = poll; 56 ), 57 58 TP_printk("pt=%02X msg_id=%02X seq=%04X transfer_id=%X poll=%u", 59 __entry->protocol_id, __entry->msg_id, __entry->seq, 60 __entry->transfer_id, __entry->poll) 61 ); 62 63 TRACE_EVENT(scmi_xfer_response_wait, 64 TP_PROTO(int transfer_id, u8 msg_id, u8 protocol_id, u16 seq, 65 u32 timeout, bool poll), 66 TP_ARGS(transfer_id, msg_id, protocol_id, seq, timeout, poll), 67 68 TP_STRUCT__entry( 69 __field(int, transfer_id) 70 __field(u8, msg_id) 71 __field(u8, protocol_id) 72 __field(u16, seq) 73 __field(u32, timeout) 74 __field(bool, poll) 75 ), 76 77 TP_fast_assign( 78 __entry->transfer_id = transfer_id; 79 __entry->msg_id = msg_id; 80 __entry->protocol_id = protocol_id; 81 __entry->seq = seq; 82 __entry->timeout = timeout; 83 __entry->poll = poll; 84 ), 85 86 TP_printk("pt=%02X msg_id=%02X seq=%04X transfer_id=%X tmo_ms=%u poll=%u", 87 __entry->protocol_id, __entry->msg_id, __entry->seq, 88 __entry->transfer_id, __entry->timeout, __entry->poll) 89 ); 90 91 TRACE_EVENT(scmi_xfer_end, 92 TP_PROTO(int transfer_id, u8 msg_id, u8 protocol_id, u16 seq, 93 int status), 94 TP_ARGS(transfer_id, msg_id, protocol_id, seq, status), 95 96 TP_STRUCT__entry( 97 __field(int, transfer_id) 98 __field(u8, msg_id) 99 __field(u8, protocol_id) 100 __field(u16, seq) 101 __field(int, status) 102 ), 103 104 TP_fast_assign( 105 __entry->transfer_id = transfer_id; 106 __entry->msg_id = msg_id; 107 __entry->protocol_id = protocol_id; 108 __entry->seq = seq; 109 __entry->status = status; 110 ), 111 112 TP_printk("pt=%02X msg_id=%02X seq=%04X transfer_id=%X s=%d", 113 __entry->protocol_id, __entry->msg_id, __entry->seq, 114 __entry->transfer_id, __entry->status) 115 ); 116 117 TRACE_EVENT(scmi_rx_done, 118 TP_PROTO(int transfer_id, u8 msg_id, u8 protocol_id, u16 seq, 119 u8 msg_type), 120 TP_ARGS(transfer_id, msg_id, protocol_id, seq, msg_type), 121 122 TP_STRUCT__entry( 123 __field(int, transfer_id) 124 __field(u8, msg_id) 125 __field(u8, protocol_id) 126 __field(u16, seq) 127 __field(u8, msg_type) 128 ), 129 130 TP_fast_assign( 131 __entry->transfer_id = transfer_id; 132 __entry->msg_id = msg_id; 133 __entry->protocol_id = protocol_id; 134 __entry->seq = seq; 135 __entry->msg_type = msg_type; 136 ), 137 138 TP_printk("pt=%02X msg_id=%02X seq=%04X transfer_id=%X msg_type=%u", 139 __entry->protocol_id, __entry->msg_id, __entry->seq, 140 __entry->transfer_id, __entry->msg_type) 141 ); 142 143 TRACE_EVENT(scmi_msg_dump, 144 TP_PROTO(int id, u8 channel_id, u8 protocol_id, u8 msg_id, 145 unsigned char *tag, u16 seq, int status, 146 void *buf, size_t len), 147 TP_ARGS(id, channel_id, protocol_id, msg_id, tag, seq, status, 148 buf, len), 149 150 TP_STRUCT__entry( 151 __field(int, id) 152 __field(u8, channel_id) 153 __field(u8, protocol_id) 154 __field(u8, msg_id) 155 __array(char, tag, TRACE_SCMI_MAX_TAG_LEN) 156 __field(u16, seq) 157 __field(int, status) 158 __field(size_t, len) 159 __dynamic_array(unsigned char, cmd, len) 160 ), 161 162 TP_fast_assign( 163 __entry->id = id; 164 __entry->channel_id = channel_id; 165 __entry->protocol_id = protocol_id; 166 __entry->msg_id = msg_id; 167 strscpy(__entry->tag, tag, TRACE_SCMI_MAX_TAG_LEN); 168 __entry->seq = seq; 169 __entry->status = status; 170 __entry->len = len; 171 memcpy(__get_dynamic_array(cmd), buf, __entry->len); 172 ), 173 174 TP_printk("id=%d ch=%02X pt=%02X t=%s msg_id=%02X seq=%04X s=%d pyld=%s", 175 __entry->id, __entry->channel_id, __entry->protocol_id, 176 __entry->tag, __entry->msg_id, __entry->seq, __entry->status, 177 __print_hex_str(__get_dynamic_array(cmd), __entry->len)) 178 ); 179 #endif /* _TRACE_SCMI_H */ 180 181 /* This part must be outside protection */ 182 #include <trace/define_trace.h> 183