1257d0e20SLukasz Luba /* SPDX-License-Identifier: GPL-2.0 */ 2257d0e20SLukasz Luba #undef TRACE_SYSTEM 3257d0e20SLukasz Luba #define TRACE_SYSTEM scmi 4257d0e20SLukasz Luba 5257d0e20SLukasz Luba #if !defined(_TRACE_SCMI_H) || defined(TRACE_HEADER_MULTI_READ) 6257d0e20SLukasz Luba #define _TRACE_SCMI_H 7257d0e20SLukasz Luba 8257d0e20SLukasz Luba #include <linux/tracepoint.h> 9257d0e20SLukasz Luba 10e699eb9bSCristian Marussi TRACE_EVENT(scmi_fc_call, 11e699eb9bSCristian Marussi TP_PROTO(u8 protocol_id, u8 msg_id, u32 res_id, u32 val1, u32 val2), 12e699eb9bSCristian Marussi TP_ARGS(protocol_id, msg_id, res_id, val1, val2), 13e699eb9bSCristian Marussi 14e699eb9bSCristian Marussi TP_STRUCT__entry( 15e699eb9bSCristian Marussi __field(u8, protocol_id) 16e699eb9bSCristian Marussi __field(u8, msg_id) 17e699eb9bSCristian Marussi __field(u32, res_id) 18e699eb9bSCristian Marussi __field(u32, val1) 19e699eb9bSCristian Marussi __field(u32, val2) 20e699eb9bSCristian Marussi ), 21e699eb9bSCristian Marussi 22e699eb9bSCristian Marussi TP_fast_assign( 23e699eb9bSCristian Marussi __entry->protocol_id = protocol_id; 24e699eb9bSCristian Marussi __entry->msg_id = msg_id; 25e699eb9bSCristian Marussi __entry->res_id = res_id; 26e699eb9bSCristian Marussi __entry->val1 = val1; 27e699eb9bSCristian Marussi __entry->val2 = val2; 28e699eb9bSCristian Marussi ), 29e699eb9bSCristian Marussi 3040d30cf6SCristian Marussi TP_printk("pt=%02X msg_id=%02X res_id:%u vals=%u:%u", 31e699eb9bSCristian Marussi __entry->protocol_id, __entry->msg_id, 32e699eb9bSCristian Marussi __entry->res_id, __entry->val1, __entry->val2) 33e699eb9bSCristian Marussi ); 34e699eb9bSCristian Marussi 35257d0e20SLukasz Luba TRACE_EVENT(scmi_xfer_begin, 36257d0e20SLukasz Luba TP_PROTO(int transfer_id, u8 msg_id, u8 protocol_id, u16 seq, 37257d0e20SLukasz Luba bool poll), 38257d0e20SLukasz Luba TP_ARGS(transfer_id, msg_id, protocol_id, seq, poll), 39257d0e20SLukasz Luba 40257d0e20SLukasz Luba TP_STRUCT__entry( 41257d0e20SLukasz Luba __field(int, transfer_id) 42257d0e20SLukasz Luba __field(u8, msg_id) 43257d0e20SLukasz Luba __field(u8, protocol_id) 44257d0e20SLukasz Luba __field(u16, seq) 45257d0e20SLukasz Luba __field(bool, poll) 46257d0e20SLukasz Luba ), 47257d0e20SLukasz Luba 48257d0e20SLukasz Luba TP_fast_assign( 49257d0e20SLukasz Luba __entry->transfer_id = transfer_id; 50257d0e20SLukasz Luba __entry->msg_id = msg_id; 51257d0e20SLukasz Luba __entry->protocol_id = protocol_id; 52257d0e20SLukasz Luba __entry->seq = seq; 53257d0e20SLukasz Luba __entry->poll = poll; 54257d0e20SLukasz Luba ), 55257d0e20SLukasz Luba 5640d30cf6SCristian Marussi TP_printk("pt=%02X msg_id=%02X seq=%04X transfer_id=%X poll=%u", 5740d30cf6SCristian Marussi __entry->protocol_id, __entry->msg_id, __entry->seq, 5840d30cf6SCristian Marussi __entry->transfer_id, __entry->poll) 59257d0e20SLukasz Luba ); 60257d0e20SLukasz Luba 618b276b59SCristian Marussi TRACE_EVENT(scmi_xfer_response_wait, 628b276b59SCristian Marussi TP_PROTO(int transfer_id, u8 msg_id, u8 protocol_id, u16 seq, 638b276b59SCristian Marussi u32 timeout, bool poll), 648b276b59SCristian Marussi TP_ARGS(transfer_id, msg_id, protocol_id, seq, timeout, poll), 658b276b59SCristian Marussi 668b276b59SCristian Marussi TP_STRUCT__entry( 678b276b59SCristian Marussi __field(int, transfer_id) 688b276b59SCristian Marussi __field(u8, msg_id) 698b276b59SCristian Marussi __field(u8, protocol_id) 708b276b59SCristian Marussi __field(u16, seq) 718b276b59SCristian Marussi __field(u32, timeout) 728b276b59SCristian Marussi __field(bool, poll) 738b276b59SCristian Marussi ), 748b276b59SCristian Marussi 758b276b59SCristian Marussi TP_fast_assign( 768b276b59SCristian Marussi __entry->transfer_id = transfer_id; 778b276b59SCristian Marussi __entry->msg_id = msg_id; 788b276b59SCristian Marussi __entry->protocol_id = protocol_id; 798b276b59SCristian Marussi __entry->seq = seq; 808b276b59SCristian Marussi __entry->timeout = timeout; 818b276b59SCristian Marussi __entry->poll = poll; 828b276b59SCristian Marussi ), 838b276b59SCristian Marussi 8440d30cf6SCristian Marussi TP_printk("pt=%02X msg_id=%02X seq=%04X transfer_id=%X tmo_ms=%u poll=%u", 8540d30cf6SCristian Marussi __entry->protocol_id, __entry->msg_id, __entry->seq, 8640d30cf6SCristian Marussi __entry->transfer_id, __entry->timeout, __entry->poll) 878b276b59SCristian Marussi ); 888b276b59SCristian Marussi 89257d0e20SLukasz Luba TRACE_EVENT(scmi_xfer_end, 90257d0e20SLukasz Luba TP_PROTO(int transfer_id, u8 msg_id, u8 protocol_id, u16 seq, 91bad0d73bSSudeep Holla int status), 92257d0e20SLukasz Luba TP_ARGS(transfer_id, msg_id, protocol_id, seq, status), 93257d0e20SLukasz Luba 94257d0e20SLukasz Luba TP_STRUCT__entry( 95257d0e20SLukasz Luba __field(int, transfer_id) 96257d0e20SLukasz Luba __field(u8, msg_id) 97257d0e20SLukasz Luba __field(u8, protocol_id) 98257d0e20SLukasz Luba __field(u16, seq) 99bad0d73bSSudeep Holla __field(int, status) 100257d0e20SLukasz Luba ), 101257d0e20SLukasz Luba 102257d0e20SLukasz Luba TP_fast_assign( 103257d0e20SLukasz Luba __entry->transfer_id = transfer_id; 104257d0e20SLukasz Luba __entry->msg_id = msg_id; 105257d0e20SLukasz Luba __entry->protocol_id = protocol_id; 106257d0e20SLukasz Luba __entry->seq = seq; 107257d0e20SLukasz Luba __entry->status = status; 108257d0e20SLukasz Luba ), 109257d0e20SLukasz Luba 11040d30cf6SCristian Marussi TP_printk("pt=%02X msg_id=%02X seq=%04X transfer_id=%X s=%d", 11140d30cf6SCristian Marussi __entry->protocol_id, __entry->msg_id, __entry->seq, 11240d30cf6SCristian Marussi __entry->transfer_id, __entry->status) 113257d0e20SLukasz Luba ); 114257d0e20SLukasz Luba 115257d0e20SLukasz Luba TRACE_EVENT(scmi_rx_done, 116257d0e20SLukasz Luba TP_PROTO(int transfer_id, u8 msg_id, u8 protocol_id, u16 seq, 117257d0e20SLukasz Luba u8 msg_type), 118257d0e20SLukasz Luba TP_ARGS(transfer_id, msg_id, protocol_id, seq, msg_type), 119257d0e20SLukasz Luba 120257d0e20SLukasz Luba TP_STRUCT__entry( 121257d0e20SLukasz Luba __field(int, transfer_id) 122257d0e20SLukasz Luba __field(u8, msg_id) 123257d0e20SLukasz Luba __field(u8, protocol_id) 124257d0e20SLukasz Luba __field(u16, seq) 125257d0e20SLukasz Luba __field(u8, msg_type) 126257d0e20SLukasz Luba ), 127257d0e20SLukasz Luba 128257d0e20SLukasz Luba TP_fast_assign( 129257d0e20SLukasz Luba __entry->transfer_id = transfer_id; 130257d0e20SLukasz Luba __entry->msg_id = msg_id; 131257d0e20SLukasz Luba __entry->protocol_id = protocol_id; 132257d0e20SLukasz Luba __entry->seq = seq; 133257d0e20SLukasz Luba __entry->msg_type = msg_type; 134257d0e20SLukasz Luba ), 135257d0e20SLukasz Luba 13640d30cf6SCristian Marussi TP_printk("pt=%02X msg_id=%02X seq=%04X transfer_id=%X msg_type=%u", 13740d30cf6SCristian Marussi __entry->protocol_id, __entry->msg_id, __entry->seq, 13840d30cf6SCristian Marussi __entry->transfer_id, __entry->msg_type) 139257d0e20SLukasz Luba ); 1402bd04670SCristian Marussi 1412bd04670SCristian Marussi TRACE_EVENT(scmi_msg_dump, 142*8b2bd711SCristian Marussi TP_PROTO(int id, u8 channel_id, u8 protocol_id, u8 msg_id, 143*8b2bd711SCristian Marussi unsigned char *tag, u16 seq, int status, 144*8b2bd711SCristian Marussi void *buf, size_t len), 145*8b2bd711SCristian Marussi TP_ARGS(id, channel_id, protocol_id, msg_id, tag, seq, status, 146*8b2bd711SCristian Marussi buf, len), 1472bd04670SCristian Marussi 1482bd04670SCristian Marussi TP_STRUCT__entry( 149*8b2bd711SCristian Marussi __field(int, id) 150*8b2bd711SCristian Marussi __field(u8, channel_id) 1512bd04670SCristian Marussi __field(u8, protocol_id) 1522bd04670SCristian Marussi __field(u8, msg_id) 1532bd04670SCristian Marussi __array(char, tag, 5) 1542bd04670SCristian Marussi __field(u16, seq) 1552bd04670SCristian Marussi __field(int, status) 1562bd04670SCristian Marussi __field(size_t, len) 1572bd04670SCristian Marussi __dynamic_array(unsigned char, cmd, len) 1582bd04670SCristian Marussi ), 1592bd04670SCristian Marussi 1602bd04670SCristian Marussi TP_fast_assign( 161*8b2bd711SCristian Marussi __entry->id = id; 162*8b2bd711SCristian Marussi __entry->channel_id = channel_id; 1632bd04670SCristian Marussi __entry->protocol_id = protocol_id; 1642bd04670SCristian Marussi __entry->msg_id = msg_id; 1652bd04670SCristian Marussi strscpy(__entry->tag, tag, 5); 1662bd04670SCristian Marussi __entry->seq = seq; 1672bd04670SCristian Marussi __entry->status = status; 1682bd04670SCristian Marussi __entry->len = len; 1692bd04670SCristian Marussi memcpy(__get_dynamic_array(cmd), buf, __entry->len); 1702bd04670SCristian Marussi ), 1712bd04670SCristian Marussi 172*8b2bd711SCristian Marussi TP_printk("id=%d ch=%02X pt=%02X t=%s msg_id=%02X seq=%04X s=%d pyld=%s", 173*8b2bd711SCristian Marussi __entry->id, __entry->channel_id, __entry->protocol_id, 174*8b2bd711SCristian Marussi __entry->tag, __entry->msg_id, __entry->seq, __entry->status, 1752bd04670SCristian Marussi __print_hex_str(__get_dynamic_array(cmd), __entry->len)) 1762bd04670SCristian Marussi ); 177257d0e20SLukasz Luba #endif /* _TRACE_SCMI_H */ 178257d0e20SLukasz Luba 179257d0e20SLukasz Luba /* This part must be outside protection */ 180257d0e20SLukasz Luba #include <trace/define_trace.h> 181