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