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