xref: /openbmc/linux/drivers/usb/musb/musb_trace.h (revision c74173fdd4fba23f237af48dff95f613f011cee3)
1f89252adSBin Liu /*
2f89252adSBin Liu  * musb_trace.h - MUSB Controller Trace Support
3f89252adSBin Liu  *
4f89252adSBin Liu  * Copyright (C) 2015 Texas Instruments Incorporated - http://www.ti.com
5f89252adSBin Liu  *
6f89252adSBin Liu  * Author: Bin Liu <b-liu@ti.com>
7f89252adSBin Liu  *
8f89252adSBin Liu  * This program is free software: you can redistribute it and/or modify
9f89252adSBin Liu  * it under the terms of the GNU General Public License version 2  of
10f89252adSBin Liu  * the License as published by the Free Software Foundation.
11f89252adSBin Liu  *
12f89252adSBin Liu  * This program is distributed in the hope that it will be useful,
13f89252adSBin Liu  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14f89252adSBin Liu  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15f89252adSBin Liu  * GNU General Public License for more details.
16f89252adSBin Liu  */
17f89252adSBin Liu 
18f89252adSBin Liu #undef TRACE_SYSTEM
19f89252adSBin Liu #define TRACE_SYSTEM musb
20f89252adSBin Liu 
21f89252adSBin Liu #if !defined(__MUSB_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
22f89252adSBin Liu #define __MUSB_TRACE_H
23f89252adSBin Liu 
24f89252adSBin Liu #include <linux/types.h>
25f89252adSBin Liu #include <linux/tracepoint.h>
26f89252adSBin Liu #include "musb_core.h"
27f89252adSBin Liu 
28f89252adSBin Liu #define MUSB_MSG_MAX   500
29f89252adSBin Liu 
30f89252adSBin Liu TRACE_EVENT(musb_log,
31f89252adSBin Liu 	TP_PROTO(struct musb *musb, struct va_format *vaf),
32f89252adSBin Liu 	TP_ARGS(musb, vaf),
33f89252adSBin Liu 	TP_STRUCT__entry(
34f89252adSBin Liu 		__string(name, dev_name(musb->controller))
35f89252adSBin Liu 		__dynamic_array(char, msg, MUSB_MSG_MAX)
36f89252adSBin Liu 	),
37f89252adSBin Liu 	TP_fast_assign(
38f89252adSBin Liu 		__assign_str(name, dev_name(musb->controller));
39f89252adSBin Liu 		vsnprintf(__get_str(msg), MUSB_MSG_MAX, vaf->fmt, *vaf->va);
40f89252adSBin Liu 	),
41f89252adSBin Liu 	TP_printk("%s: %s", __get_str(name), __get_str(msg))
42f89252adSBin Liu );
43f89252adSBin Liu 
44*c74173fdSBin Liu DECLARE_EVENT_CLASS(musb_regb,
45*c74173fdSBin Liu 	TP_PROTO(void *caller, const void *addr, unsigned int offset, u8 data),
46*c74173fdSBin Liu 	TP_ARGS(caller, addr, offset, data),
47*c74173fdSBin Liu 	TP_STRUCT__entry(
48*c74173fdSBin Liu 		__field(void *, caller)
49*c74173fdSBin Liu 		__field(const void *, addr)
50*c74173fdSBin Liu 		__field(unsigned int, offset)
51*c74173fdSBin Liu 		__field(u8, data)
52*c74173fdSBin Liu 	),
53*c74173fdSBin Liu 	TP_fast_assign(
54*c74173fdSBin Liu 		__entry->caller = caller;
55*c74173fdSBin Liu 		__entry->addr = addr;
56*c74173fdSBin Liu 		__entry->offset = offset;
57*c74173fdSBin Liu 		__entry->data = data;
58*c74173fdSBin Liu 	),
59*c74173fdSBin Liu 	TP_printk("%pS: %p + %04x: %02x",
60*c74173fdSBin Liu 		__entry->caller, __entry->addr, __entry->offset, __entry->data)
61*c74173fdSBin Liu );
62*c74173fdSBin Liu 
63*c74173fdSBin Liu DEFINE_EVENT(musb_regb, musb_readb,
64*c74173fdSBin Liu 	TP_PROTO(void *caller, const void *addr, unsigned int offset, u8 data),
65*c74173fdSBin Liu 	TP_ARGS(caller, addr, offset, data)
66*c74173fdSBin Liu );
67*c74173fdSBin Liu 
68*c74173fdSBin Liu DEFINE_EVENT(musb_regb, musb_writeb,
69*c74173fdSBin Liu 	TP_PROTO(void *caller, const void *addr, unsigned int offset, u8 data),
70*c74173fdSBin Liu 	TP_ARGS(caller, addr, offset, data)
71*c74173fdSBin Liu );
72*c74173fdSBin Liu 
73*c74173fdSBin Liu DECLARE_EVENT_CLASS(musb_regw,
74*c74173fdSBin Liu 	TP_PROTO(void *caller, const void *addr, unsigned int offset, u16 data),
75*c74173fdSBin Liu 	TP_ARGS(caller, addr, offset, data),
76*c74173fdSBin Liu 	TP_STRUCT__entry(
77*c74173fdSBin Liu 		__field(void *, caller)
78*c74173fdSBin Liu 		__field(const void *, addr)
79*c74173fdSBin Liu 		__field(unsigned int, offset)
80*c74173fdSBin Liu 		__field(u16, data)
81*c74173fdSBin Liu 	),
82*c74173fdSBin Liu 	TP_fast_assign(
83*c74173fdSBin Liu 		__entry->caller = caller;
84*c74173fdSBin Liu 		__entry->addr = addr;
85*c74173fdSBin Liu 		__entry->offset = offset;
86*c74173fdSBin Liu 		__entry->data = data;
87*c74173fdSBin Liu 	),
88*c74173fdSBin Liu 	TP_printk("%pS: %p + %04x: %04x",
89*c74173fdSBin Liu 		__entry->caller, __entry->addr, __entry->offset, __entry->data)
90*c74173fdSBin Liu );
91*c74173fdSBin Liu 
92*c74173fdSBin Liu DEFINE_EVENT(musb_regw, musb_readw,
93*c74173fdSBin Liu 	TP_PROTO(void *caller, const void *addr, unsigned int offset, u16 data),
94*c74173fdSBin Liu 	TP_ARGS(caller, addr, offset, data)
95*c74173fdSBin Liu );
96*c74173fdSBin Liu 
97*c74173fdSBin Liu DEFINE_EVENT(musb_regw, musb_writew,
98*c74173fdSBin Liu 	TP_PROTO(void *caller, const void *addr, unsigned int offset, u16 data),
99*c74173fdSBin Liu 	TP_ARGS(caller, addr, offset, data)
100*c74173fdSBin Liu );
101*c74173fdSBin Liu 
102*c74173fdSBin Liu DECLARE_EVENT_CLASS(musb_regl,
103*c74173fdSBin Liu 	TP_PROTO(void *caller, const void *addr, unsigned int offset, u32 data),
104*c74173fdSBin Liu 	TP_ARGS(caller, addr, offset, data),
105*c74173fdSBin Liu 	TP_STRUCT__entry(
106*c74173fdSBin Liu 		__field(void *, caller)
107*c74173fdSBin Liu 		__field(const void *, addr)
108*c74173fdSBin Liu 		__field(unsigned int, offset)
109*c74173fdSBin Liu 		__field(u32, data)
110*c74173fdSBin Liu 	),
111*c74173fdSBin Liu 	TP_fast_assign(
112*c74173fdSBin Liu 		__entry->caller = caller;
113*c74173fdSBin Liu 		__entry->addr = addr;
114*c74173fdSBin Liu 		__entry->offset = offset;
115*c74173fdSBin Liu 		__entry->data = data;
116*c74173fdSBin Liu 	),
117*c74173fdSBin Liu 	TP_printk("%pS: %p + %04x: %08x",
118*c74173fdSBin Liu 		__entry->caller, __entry->addr, __entry->offset, __entry->data)
119*c74173fdSBin Liu );
120*c74173fdSBin Liu 
121*c74173fdSBin Liu DEFINE_EVENT(musb_regl, musb_readl,
122*c74173fdSBin Liu 	TP_PROTO(void *caller, const void *addr, unsigned int offset, u32 data),
123*c74173fdSBin Liu 	TP_ARGS(caller, addr, offset, data)
124*c74173fdSBin Liu );
125*c74173fdSBin Liu 
126*c74173fdSBin Liu DEFINE_EVENT(musb_regl, musb_writel,
127*c74173fdSBin Liu 	TP_PROTO(void *caller, const void *addr, unsigned int offset, u32 data),
128*c74173fdSBin Liu 	TP_ARGS(caller, addr, offset, data)
129*c74173fdSBin Liu );
130*c74173fdSBin Liu 
131f89252adSBin Liu #endif /* __MUSB_TRACE_H */
132f89252adSBin Liu 
133f89252adSBin Liu /* this part has to be here */
134f89252adSBin Liu 
135f89252adSBin Liu #undef TRACE_INCLUDE_PATH
136f89252adSBin Liu #define TRACE_INCLUDE_PATH .
137f89252adSBin Liu 
138f89252adSBin Liu #undef TRACE_INCLUDE_FILE
139f89252adSBin Liu #define TRACE_INCLUDE_FILE musb_trace
140f89252adSBin Liu 
141f89252adSBin Liu #include <trace/define_trace.h>
142