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