1 /* SPDX-License-Identifier: GPL-2.0 */ 2 3 #undef TRACE_SYSTEM 4 #define TRACE_SYSTEM ucsi 5 6 #if !defined(__UCSI_TRACE_H) || defined(TRACE_HEADER_MULTI_READ) 7 #define __UCSI_TRACE_H 8 9 #include <linux/tracepoint.h> 10 11 const char *ucsi_cmd_str(u64 raw_cmd); 12 const char *ucsi_ack_str(u8 ack); 13 const char *ucsi_cci_str(u32 cci); 14 const char *ucsi_recipient_str(u8 recipient); 15 16 DECLARE_EVENT_CLASS(ucsi_log_ack, 17 TP_PROTO(u8 ack), 18 TP_ARGS(ack), 19 TP_STRUCT__entry( 20 __field(u8, ack) 21 ), 22 TP_fast_assign( 23 __entry->ack = ack; 24 ), 25 TP_printk("ACK %s", ucsi_ack_str(__entry->ack)) 26 ); 27 28 DEFINE_EVENT(ucsi_log_ack, ucsi_ack, 29 TP_PROTO(u8 ack), 30 TP_ARGS(ack) 31 ); 32 33 DECLARE_EVENT_CLASS(ucsi_log_control, 34 TP_PROTO(struct ucsi_control *ctrl), 35 TP_ARGS(ctrl), 36 TP_STRUCT__entry( 37 __field(u64, ctrl) 38 ), 39 TP_fast_assign( 40 __entry->ctrl = ctrl->raw_cmd; 41 ), 42 TP_printk("control=%08llx (%s)", __entry->ctrl, 43 ucsi_cmd_str(__entry->ctrl)) 44 ); 45 46 DEFINE_EVENT(ucsi_log_control, ucsi_command, 47 TP_PROTO(struct ucsi_control *ctrl), 48 TP_ARGS(ctrl) 49 ); 50 51 DECLARE_EVENT_CLASS(ucsi_log_command, 52 TP_PROTO(struct ucsi_control *ctrl, int ret), 53 TP_ARGS(ctrl, ret), 54 TP_STRUCT__entry( 55 __field(u64, ctrl) 56 __field(int, ret) 57 ), 58 TP_fast_assign( 59 __entry->ctrl = ctrl->raw_cmd; 60 __entry->ret = ret; 61 ), 62 TP_printk("%s -> %s (err=%d)", ucsi_cmd_str(__entry->ctrl), 63 __entry->ret < 0 ? "FAIL" : "OK", 64 __entry->ret < 0 ? __entry->ret : 0) 65 ); 66 67 DEFINE_EVENT(ucsi_log_command, ucsi_run_command, 68 TP_PROTO(struct ucsi_control *ctrl, int ret), 69 TP_ARGS(ctrl, ret) 70 ); 71 72 DEFINE_EVENT(ucsi_log_command, ucsi_reset_ppm, 73 TP_PROTO(struct ucsi_control *ctrl, int ret), 74 TP_ARGS(ctrl, ret) 75 ); 76 77 DECLARE_EVENT_CLASS(ucsi_log_cci, 78 TP_PROTO(u32 cci), 79 TP_ARGS(cci), 80 TP_STRUCT__entry( 81 __field(u32, cci) 82 ), 83 TP_fast_assign( 84 __entry->cci = cci; 85 ), 86 TP_printk("CCI=%08x %s", __entry->cci, ucsi_cci_str(__entry->cci)) 87 ); 88 89 DEFINE_EVENT(ucsi_log_cci, ucsi_notify, 90 TP_PROTO(u32 cci), 91 TP_ARGS(cci) 92 ); 93 94 DECLARE_EVENT_CLASS(ucsi_log_connector_status, 95 TP_PROTO(int port, struct ucsi_connector_status *status), 96 TP_ARGS(port, status), 97 TP_STRUCT__entry( 98 __field(int, port) 99 __field(u16, change) 100 __field(u8, opmode) 101 __field(u8, connected) 102 __field(u8, pwr_dir) 103 __field(u8, partner_flags) 104 __field(u8, partner_type) 105 __field(u32, request_data_obj) 106 __field(u8, bc_status) 107 ), 108 TP_fast_assign( 109 __entry->port = port - 1; 110 __entry->change = status->change; 111 __entry->opmode = status->pwr_op_mode; 112 __entry->connected = status->connected; 113 __entry->pwr_dir = status->pwr_dir; 114 __entry->partner_flags = status->partner_flags; 115 __entry->partner_type = status->partner_type; 116 __entry->request_data_obj = status->request_data_obj; 117 __entry->bc_status = status->bc_status; 118 ), 119 TP_printk("port%d status: change=%04x, opmode=%x, connected=%d, " 120 "sourcing=%d, partner_flags=%x, partner_type=%x, " 121 "request_data_obj=%08x, BC status=%x", __entry->port, 122 __entry->change, __entry->opmode, __entry->connected, 123 __entry->pwr_dir, __entry->partner_flags, __entry->partner_type, 124 __entry->request_data_obj, __entry->bc_status) 125 ); 126 127 DEFINE_EVENT(ucsi_log_connector_status, ucsi_connector_change, 128 TP_PROTO(int port, struct ucsi_connector_status *status), 129 TP_ARGS(port, status) 130 ); 131 132 DEFINE_EVENT(ucsi_log_connector_status, ucsi_register_port, 133 TP_PROTO(int port, struct ucsi_connector_status *status), 134 TP_ARGS(port, status) 135 ); 136 137 #endif /* __UCSI_TRACE_H */ 138 139 /* This part must be outside protection */ 140 141 #undef TRACE_INCLUDE_PATH 142 #define TRACE_INCLUDE_PATH . 143 144 #undef TRACE_INCLUDE_FILE 145 #define TRACE_INCLUDE_FILE trace 146 147 #include <trace/define_trace.h> 148