1 /* SPDX-License-Identifier: GPL-2.0 */
2 #undef TRACE_SYSTEM
3 #define TRACE_SYSTEM spmi
4 
5 #if !defined(_TRACE_SPMI_H) || defined(TRACE_HEADER_MULTI_READ)
6 #define _TRACE_SPMI_H
7 
8 #include <linux/spmi.h>
9 #include <linux/tracepoint.h>
10 
11 /*
12  * drivers/spmi/spmi.c
13  */
14 
15 TRACE_EVENT(spmi_write_begin,
16 	TP_PROTO(u8 opcode, u8 sid, u16 addr, u8 len, const u8 *buf),
17 	TP_ARGS(opcode, sid, addr, len, buf),
18 
19 	TP_STRUCT__entry(
20 		__field		( u8,         opcode    )
21 		__field		( u8,         sid       )
22 		__field		( u16,        addr      )
23 		__field		( u8,         len       )
24 		__dynamic_array	( u8,   buf,  len + 1   )
25 	),
26 
27 	TP_fast_assign(
28 		__entry->opcode = opcode;
29 		__entry->sid    = sid;
30 		__entry->addr   = addr;
31 		__entry->len    = len + 1;
32 		memcpy(__get_dynamic_array(buf), buf, len + 1);
33 	),
34 
35 	TP_printk("opc=%d sid=%02d addr=0x%04x len=%d buf=0x[%*phD]",
36 		  (int)__entry->opcode, (int)__entry->sid,
37 		  (int)__entry->addr, (int)__entry->len,
38 		  (int)__entry->len, __get_dynamic_array(buf))
39 );
40 
41 TRACE_EVENT(spmi_write_end,
42 	TP_PROTO(u8 opcode, u8 sid, u16 addr, int ret),
43 	TP_ARGS(opcode, sid, addr, ret),
44 
45 	TP_STRUCT__entry(
46 		__field		( u8,         opcode    )
47 		__field		( u8,         sid       )
48 		__field		( u16,        addr      )
49 		__field		( int,        ret       )
50 	),
51 
52 	TP_fast_assign(
53 		__entry->opcode = opcode;
54 		__entry->sid    = sid;
55 		__entry->addr   = addr;
56 		__entry->ret    = ret;
57 	),
58 
59 	TP_printk("opc=%d sid=%02d addr=0x%04x ret=%d",
60 		  (int)__entry->opcode, (int)__entry->sid,
61 		  (int)__entry->addr, __entry->ret)
62 );
63 
64 TRACE_EVENT(spmi_read_begin,
65 	TP_PROTO(u8 opcode, u8 sid, u16 addr),
66 	TP_ARGS(opcode, sid, addr),
67 
68 	TP_STRUCT__entry(
69 		__field		( u8,         opcode    )
70 		__field		( u8,         sid       )
71 		__field		( u16,        addr      )
72 	),
73 
74 	TP_fast_assign(
75 		__entry->opcode = opcode;
76 		__entry->sid    = sid;
77 		__entry->addr   = addr;
78 	),
79 
80 	TP_printk("opc=%d sid=%02d addr=0x%04x",
81 		  (int)__entry->opcode, (int)__entry->sid,
82 		  (int)__entry->addr)
83 );
84 
85 TRACE_EVENT(spmi_read_end,
86 	TP_PROTO(u8 opcode, u8 sid, u16 addr, int ret, u8 len, const u8 *buf),
87 	TP_ARGS(opcode, sid, addr, ret, len, buf),
88 
89 	TP_STRUCT__entry(
90 		__field		( u8,         opcode    )
91 		__field		( u8,         sid       )
92 		__field		( u16,        addr      )
93 		__field		( int,        ret       )
94 		__field		( u8,         len       )
95 		__dynamic_array	( u8,   buf,  len + 1   )
96 	),
97 
98 	TP_fast_assign(
99 		__entry->opcode = opcode;
100 		__entry->sid    = sid;
101 		__entry->addr   = addr;
102 		__entry->ret    = ret;
103 		__entry->len    = len + 1;
104 		memcpy(__get_dynamic_array(buf), buf, len + 1);
105 	),
106 
107 	TP_printk("opc=%d sid=%02d addr=0x%04x ret=%d len=%02d buf=0x[%*phD]",
108 		  (int)__entry->opcode, (int)__entry->sid,
109 		  (int)__entry->addr, __entry->ret, (int)__entry->len,
110 		  (int)__entry->len, __get_dynamic_array(buf))
111 );
112 
113 TRACE_EVENT(spmi_cmd,
114 	TP_PROTO(u8 opcode, u8 sid, int ret),
115 	TP_ARGS(opcode, sid, ret),
116 
117 	TP_STRUCT__entry(
118 		__field		( u8,         opcode    )
119 		__field		( u8,         sid       )
120 		__field		( int,        ret       )
121 	),
122 
123 	TP_fast_assign(
124 		__entry->opcode = opcode;
125 		__entry->sid    = sid;
126 		__entry->ret    = ret;
127 	),
128 
129 	TP_printk("opc=%d sid=%02d ret=%d", (int)__entry->opcode,
130 		  (int)__entry->sid, ret)
131 );
132 
133 #endif /* _TRACE_SPMI_H */
134 
135 /* This part must be outside protection */
136 #include <trace/define_trace.h>
137