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
15TRACE_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       )
25	),
26
27	TP_fast_assign(
28		__entry->opcode = opcode;
29		__entry->sid    = sid;
30		__entry->addr   = addr;
31		__entry->len    = len;
32		memcpy(__get_dynamic_array(buf), buf, len);
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
41TRACE_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
64TRACE_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
85TRACE_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       )
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;
104		memcpy(__get_dynamic_array(buf), buf, len);
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
113TRACE_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