xref: /openbmc/linux/drivers/usb/typec/ucsi/trace.h (revision 023e4163)
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