Merge tag 'acpi-5.15-rc1-3' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael...
[linux-2.6-microblaze.git] / drivers / platform / chrome / cros_ec_trace.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * Trace events for the ChromeOS Embedded Controller
4  *
5  * Copyright 2019 Google LLC.
6  */
7
8 #undef TRACE_SYSTEM
9 #define TRACE_SYSTEM cros_ec
10
11 #if !defined(_CROS_EC_TRACE_H_) || defined(TRACE_HEADER_MULTI_READ)
12 #define _CROS_EC_TRACE_H_
13
14 #include <linux/bits.h>
15 #include <linux/types.h>
16 #include <linux/platform_data/cros_ec_commands.h>
17 #include <linux/platform_data/cros_ec_proto.h>
18 #include <linux/platform_data/cros_ec_sensorhub.h>
19
20 #include <linux/tracepoint.h>
21
22 TRACE_EVENT(cros_ec_request_start,
23         TP_PROTO(struct cros_ec_command *cmd),
24         TP_ARGS(cmd),
25         TP_STRUCT__entry(
26                 __field(uint32_t, version)
27                 __field(uint32_t, offset)
28                 __field(uint32_t, command)
29                 __field(uint32_t, outsize)
30                 __field(uint32_t, insize)
31         ),
32         TP_fast_assign(
33                 __entry->version = cmd->version;
34                 __entry->offset = cmd->command / EC_CMD_PASSTHRU_OFFSET(1);
35                 __entry->command = cmd->command % EC_CMD_PASSTHRU_OFFSET(1);
36                 __entry->outsize = cmd->outsize;
37                 __entry->insize = cmd->insize;
38         ),
39         TP_printk("version: %u, offset: %d, command: %s, outsize: %u, insize: %u",
40                   __entry->version, __entry->offset,
41                   __print_symbolic(__entry->command, EC_CMDS),
42                   __entry->outsize, __entry->insize)
43 );
44
45 TRACE_EVENT(cros_ec_request_done,
46         TP_PROTO(struct cros_ec_command *cmd, int retval),
47         TP_ARGS(cmd, retval),
48         TP_STRUCT__entry(
49                 __field(uint32_t, version)
50                 __field(uint32_t, offset)
51                 __field(uint32_t, command)
52                 __field(uint32_t, outsize)
53                 __field(uint32_t, insize)
54                 __field(uint32_t, result)
55                 __field(int, retval)
56         ),
57         TP_fast_assign(
58                 __entry->version = cmd->version;
59                 __entry->offset = cmd->command / EC_CMD_PASSTHRU_OFFSET(1);
60                 __entry->command = cmd->command % EC_CMD_PASSTHRU_OFFSET(1);
61                 __entry->outsize = cmd->outsize;
62                 __entry->insize = cmd->insize;
63                 __entry->result = cmd->result;
64                 __entry->retval = retval;
65         ),
66         TP_printk("version: %u, offset: %d, command: %s, outsize: %u, insize: %u, ec result: %s, retval: %u",
67                   __entry->version, __entry->offset,
68                   __print_symbolic(__entry->command, EC_CMDS),
69                   __entry->outsize, __entry->insize,
70                   __print_symbolic(__entry->result, EC_RESULT),
71                   __entry->retval)
72 );
73
74 TRACE_EVENT(cros_ec_sensorhub_timestamp,
75             TP_PROTO(u32 ec_sample_timestamp, u32 ec_fifo_timestamp, s64 fifo_timestamp,
76                      s64 current_timestamp, s64 current_time),
77         TP_ARGS(ec_sample_timestamp, ec_fifo_timestamp, fifo_timestamp, current_timestamp,
78                 current_time),
79         TP_STRUCT__entry(
80                 __field(u32, ec_sample_timestamp)
81                 __field(u32, ec_fifo_timestamp)
82                 __field(s64, fifo_timestamp)
83                 __field(s64, current_timestamp)
84                 __field(s64, current_time)
85                 __field(s64, delta)
86         ),
87         TP_fast_assign(
88                 __entry->ec_sample_timestamp = ec_sample_timestamp;
89                 __entry->ec_fifo_timestamp = ec_fifo_timestamp;
90                 __entry->fifo_timestamp = fifo_timestamp;
91                 __entry->current_timestamp = current_timestamp;
92                 __entry->current_time = current_time;
93                 __entry->delta = current_timestamp - current_time;
94         ),
95         TP_printk("ec_ts: %9u, ec_fifo_ts: %9u, fifo_ts: %12lld, curr_ts: %12lld, curr_time: %12lld, delta %12lld",
96                   __entry->ec_sample_timestamp,
97                 __entry->ec_fifo_timestamp,
98                 __entry->fifo_timestamp,
99                 __entry->current_timestamp,
100                 __entry->current_time,
101                 __entry->delta
102         )
103 );
104
105 TRACE_EVENT(cros_ec_sensorhub_data,
106             TP_PROTO(u32 ec_sensor_num, u32 ec_fifo_timestamp, s64 fifo_timestamp,
107                      s64 current_timestamp, s64 current_time),
108         TP_ARGS(ec_sensor_num, ec_fifo_timestamp, fifo_timestamp, current_timestamp, current_time),
109         TP_STRUCT__entry(
110                 __field(u32, ec_sensor_num)
111                 __field(u32, ec_fifo_timestamp)
112                 __field(s64, fifo_timestamp)
113                 __field(s64, current_timestamp)
114                 __field(s64, current_time)
115                 __field(s64, delta)
116         ),
117         TP_fast_assign(
118                 __entry->ec_sensor_num = ec_sensor_num;
119                 __entry->ec_fifo_timestamp = ec_fifo_timestamp;
120                 __entry->fifo_timestamp = fifo_timestamp;
121                 __entry->current_timestamp = current_timestamp;
122                 __entry->current_time = current_time;
123                 __entry->delta = current_timestamp - current_time;
124         ),
125         TP_printk("ec_num: %4u, ec_fifo_ts: %9u, fifo_ts: %12lld, curr_ts: %12lld, curr_time: %12lld, delta %12lld",
126                   __entry->ec_sensor_num,
127                 __entry->ec_fifo_timestamp,
128                 __entry->fifo_timestamp,
129                 __entry->current_timestamp,
130                 __entry->current_time,
131                 __entry->delta
132         )
133 );
134
135 TRACE_EVENT(cros_ec_sensorhub_filter,
136             TP_PROTO(struct cros_ec_sensors_ts_filter_state *state, s64 dx, s64 dy),
137         TP_ARGS(state, dx, dy),
138         TP_STRUCT__entry(
139                 __field(s64, dx)
140                 __field(s64, dy)
141                 __field(s64, median_m)
142                 __field(s64, median_error)
143                 __field(s64, history_len)
144                 __field(s64, x)
145                 __field(s64, y)
146         ),
147         TP_fast_assign(
148                 __entry->dx = dx;
149                 __entry->dy = dy;
150                 __entry->median_m = state->median_m;
151                 __entry->median_error = state->median_error;
152                 __entry->history_len = state->history_len;
153                 __entry->x = state->x_offset;
154                 __entry->y = state->y_offset;
155         ),
156         TP_printk("dx: %12lld. dy: %12lld median_m: %12lld median_error: %12lld len: %lld x: %12lld y: %12lld",
157                   __entry->dx,
158                 __entry->dy,
159                 __entry->median_m,
160                 __entry->median_error,
161                 __entry->history_len,
162                 __entry->x,
163                 __entry->y
164         )
165 );
166
167
168 #endif /* _CROS_EC_TRACE_H_ */
169
170 /* this part must be outside header guard */
171
172 #undef TRACE_INCLUDE_PATH
173 #define TRACE_INCLUDE_PATH .
174
175 #undef TRACE_INCLUDE_FILE
176 #define TRACE_INCLUDE_FILE cros_ec_trace
177
178 #include <trace/define_trace.h>