xref: /openbmc/linux/include/trace/events/spi.h (revision 48c926cd)
1 #undef TRACE_SYSTEM
2 #define TRACE_SYSTEM spi
3 
4 #if !defined(_TRACE_SPI_H) || defined(TRACE_HEADER_MULTI_READ)
5 #define _TRACE_SPI_H
6 
7 #include <linux/ktime.h>
8 #include <linux/tracepoint.h>
9 
10 DECLARE_EVENT_CLASS(spi_controller,
11 
12 	TP_PROTO(struct spi_controller *controller),
13 
14 	TP_ARGS(controller),
15 
16 	TP_STRUCT__entry(
17 		__field(        int,           bus_num             )
18 	),
19 
20 	TP_fast_assign(
21 		__entry->bus_num = controller->bus_num;
22 	),
23 
24 	TP_printk("spi%d", (int)__entry->bus_num)
25 
26 );
27 
28 DEFINE_EVENT(spi_controller, spi_controller_idle,
29 
30 	TP_PROTO(struct spi_controller *controller),
31 
32 	TP_ARGS(controller)
33 
34 );
35 
36 DEFINE_EVENT(spi_controller, spi_controller_busy,
37 
38 	TP_PROTO(struct spi_controller *controller),
39 
40 	TP_ARGS(controller)
41 
42 );
43 
44 DECLARE_EVENT_CLASS(spi_message,
45 
46 	TP_PROTO(struct spi_message *msg),
47 
48 	TP_ARGS(msg),
49 
50 	TP_STRUCT__entry(
51 		__field(        int,            bus_num         )
52 		__field(        int,            chip_select     )
53 		__field(        struct spi_message *,   msg     )
54 	),
55 
56 	TP_fast_assign(
57 		__entry->bus_num = msg->spi->controller->bus_num;
58 		__entry->chip_select = msg->spi->chip_select;
59 		__entry->msg = msg;
60 	),
61 
62         TP_printk("spi%d.%d %p", (int)__entry->bus_num,
63 		  (int)__entry->chip_select,
64 		  (struct spi_message *)__entry->msg)
65 );
66 
67 DEFINE_EVENT(spi_message, spi_message_submit,
68 
69 	TP_PROTO(struct spi_message *msg),
70 
71 	TP_ARGS(msg)
72 
73 );
74 
75 DEFINE_EVENT(spi_message, spi_message_start,
76 
77 	TP_PROTO(struct spi_message *msg),
78 
79 	TP_ARGS(msg)
80 
81 );
82 
83 TRACE_EVENT(spi_message_done,
84 
85 	TP_PROTO(struct spi_message *msg),
86 
87 	TP_ARGS(msg),
88 
89 	TP_STRUCT__entry(
90 		__field(        int,            bus_num         )
91 		__field(        int,            chip_select     )
92 		__field(        struct spi_message *,   msg     )
93 		__field(        unsigned,       frame           )
94 		__field(        unsigned,       actual          )
95 	),
96 
97 	TP_fast_assign(
98 		__entry->bus_num = msg->spi->controller->bus_num;
99 		__entry->chip_select = msg->spi->chip_select;
100 		__entry->msg = msg;
101 		__entry->frame = msg->frame_length;
102 		__entry->actual = msg->actual_length;
103 	),
104 
105         TP_printk("spi%d.%d %p len=%u/%u", (int)__entry->bus_num,
106 		  (int)__entry->chip_select,
107 		  (struct spi_message *)__entry->msg,
108                   (unsigned)__entry->actual, (unsigned)__entry->frame)
109 );
110 
111 DECLARE_EVENT_CLASS(spi_transfer,
112 
113 	TP_PROTO(struct spi_message *msg, struct spi_transfer *xfer),
114 
115 	TP_ARGS(msg, xfer),
116 
117 	TP_STRUCT__entry(
118 		__field(        int,            bus_num         )
119 		__field(        int,            chip_select     )
120 		__field(        struct spi_transfer *,   xfer   )
121 		__field(        int,            len             )
122 	),
123 
124 	TP_fast_assign(
125 		__entry->bus_num = msg->spi->controller->bus_num;
126 		__entry->chip_select = msg->spi->chip_select;
127 		__entry->xfer = xfer;
128 		__entry->len = xfer->len;
129 	),
130 
131         TP_printk("spi%d.%d %p len=%d", (int)__entry->bus_num,
132 		  (int)__entry->chip_select,
133 		  (struct spi_message *)__entry->xfer,
134 		  (int)__entry->len)
135 );
136 
137 DEFINE_EVENT(spi_transfer, spi_transfer_start,
138 
139 	TP_PROTO(struct spi_message *msg, struct spi_transfer *xfer),
140 
141 	TP_ARGS(msg, xfer)
142 
143 );
144 
145 DEFINE_EVENT(spi_transfer, spi_transfer_stop,
146 
147 	TP_PROTO(struct spi_message *msg, struct spi_transfer *xfer),
148 
149 	TP_ARGS(msg, xfer)
150 
151 );
152 
153 #endif /* _TRACE_POWER_H */
154 
155 /* This part must be outside protection */
156 #include <trace/define_trace.h>
157