xref: /openbmc/linux/drivers/usb/musb/musb_trace.h (revision 8ccb49dd5cdeb7bc1c12580698ffec9619fea14d)
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>
2619ca682eSBin Liu #include <linux/usb.h>
27f89252adSBin Liu #include "musb_core.h"
28*8ccb49ddSBin Liu #ifdef CONFIG_USB_TI_CPPI41_DMA
29*8ccb49ddSBin Liu #include "cppi_dma.h"
30*8ccb49ddSBin Liu #endif
31f89252adSBin Liu 
32f89252adSBin Liu #define MUSB_MSG_MAX   500
33f89252adSBin Liu 
34f89252adSBin Liu TRACE_EVENT(musb_log,
35f89252adSBin Liu 	TP_PROTO(struct musb *musb, struct va_format *vaf),
36f89252adSBin Liu 	TP_ARGS(musb, vaf),
37f89252adSBin Liu 	TP_STRUCT__entry(
38f89252adSBin Liu 		__string(name, dev_name(musb->controller))
39f89252adSBin Liu 		__dynamic_array(char, msg, MUSB_MSG_MAX)
40f89252adSBin Liu 	),
41f89252adSBin Liu 	TP_fast_assign(
42f89252adSBin Liu 		__assign_str(name, dev_name(musb->controller));
43f89252adSBin Liu 		vsnprintf(__get_str(msg), MUSB_MSG_MAX, vaf->fmt, *vaf->va);
44f89252adSBin Liu 	),
45f89252adSBin Liu 	TP_printk("%s: %s", __get_str(name), __get_str(msg))
46f89252adSBin Liu );
47f89252adSBin Liu 
48c74173fdSBin Liu DECLARE_EVENT_CLASS(musb_regb,
49c74173fdSBin Liu 	TP_PROTO(void *caller, const void *addr, unsigned int offset, u8 data),
50c74173fdSBin Liu 	TP_ARGS(caller, addr, offset, data),
51c74173fdSBin Liu 	TP_STRUCT__entry(
52c74173fdSBin Liu 		__field(void *, caller)
53c74173fdSBin Liu 		__field(const void *, addr)
54c74173fdSBin Liu 		__field(unsigned int, offset)
55c74173fdSBin Liu 		__field(u8, data)
56c74173fdSBin Liu 	),
57c74173fdSBin Liu 	TP_fast_assign(
58c74173fdSBin Liu 		__entry->caller = caller;
59c74173fdSBin Liu 		__entry->addr = addr;
60c74173fdSBin Liu 		__entry->offset = offset;
61c74173fdSBin Liu 		__entry->data = data;
62c74173fdSBin Liu 	),
63c74173fdSBin Liu 	TP_printk("%pS: %p + %04x: %02x",
64c74173fdSBin Liu 		__entry->caller, __entry->addr, __entry->offset, __entry->data)
65c74173fdSBin Liu );
66c74173fdSBin Liu 
67c74173fdSBin Liu DEFINE_EVENT(musb_regb, musb_readb,
68c74173fdSBin Liu 	TP_PROTO(void *caller, const void *addr, unsigned int offset, u8 data),
69c74173fdSBin Liu 	TP_ARGS(caller, addr, offset, data)
70c74173fdSBin Liu );
71c74173fdSBin Liu 
72c74173fdSBin Liu DEFINE_EVENT(musb_regb, musb_writeb,
73c74173fdSBin Liu 	TP_PROTO(void *caller, const void *addr, unsigned int offset, u8 data),
74c74173fdSBin Liu 	TP_ARGS(caller, addr, offset, data)
75c74173fdSBin Liu );
76c74173fdSBin Liu 
77c74173fdSBin Liu DECLARE_EVENT_CLASS(musb_regw,
78c74173fdSBin Liu 	TP_PROTO(void *caller, const void *addr, unsigned int offset, u16 data),
79c74173fdSBin Liu 	TP_ARGS(caller, addr, offset, data),
80c74173fdSBin Liu 	TP_STRUCT__entry(
81c74173fdSBin Liu 		__field(void *, caller)
82c74173fdSBin Liu 		__field(const void *, addr)
83c74173fdSBin Liu 		__field(unsigned int, offset)
84c74173fdSBin Liu 		__field(u16, data)
85c74173fdSBin Liu 	),
86c74173fdSBin Liu 	TP_fast_assign(
87c74173fdSBin Liu 		__entry->caller = caller;
88c74173fdSBin Liu 		__entry->addr = addr;
89c74173fdSBin Liu 		__entry->offset = offset;
90c74173fdSBin Liu 		__entry->data = data;
91c74173fdSBin Liu 	),
92c74173fdSBin Liu 	TP_printk("%pS: %p + %04x: %04x",
93c74173fdSBin Liu 		__entry->caller, __entry->addr, __entry->offset, __entry->data)
94c74173fdSBin Liu );
95c74173fdSBin Liu 
96c74173fdSBin Liu DEFINE_EVENT(musb_regw, musb_readw,
97c74173fdSBin Liu 	TP_PROTO(void *caller, const void *addr, unsigned int offset, u16 data),
98c74173fdSBin Liu 	TP_ARGS(caller, addr, offset, data)
99c74173fdSBin Liu );
100c74173fdSBin Liu 
101c74173fdSBin Liu DEFINE_EVENT(musb_regw, musb_writew,
102c74173fdSBin Liu 	TP_PROTO(void *caller, const void *addr, unsigned int offset, u16 data),
103c74173fdSBin Liu 	TP_ARGS(caller, addr, offset, data)
104c74173fdSBin Liu );
105c74173fdSBin Liu 
106c74173fdSBin Liu DECLARE_EVENT_CLASS(musb_regl,
107c74173fdSBin Liu 	TP_PROTO(void *caller, const void *addr, unsigned int offset, u32 data),
108c74173fdSBin Liu 	TP_ARGS(caller, addr, offset, data),
109c74173fdSBin Liu 	TP_STRUCT__entry(
110c74173fdSBin Liu 		__field(void *, caller)
111c74173fdSBin Liu 		__field(const void *, addr)
112c74173fdSBin Liu 		__field(unsigned int, offset)
113c74173fdSBin Liu 		__field(u32, data)
114c74173fdSBin Liu 	),
115c74173fdSBin Liu 	TP_fast_assign(
116c74173fdSBin Liu 		__entry->caller = caller;
117c74173fdSBin Liu 		__entry->addr = addr;
118c74173fdSBin Liu 		__entry->offset = offset;
119c74173fdSBin Liu 		__entry->data = data;
120c74173fdSBin Liu 	),
121c74173fdSBin Liu 	TP_printk("%pS: %p + %04x: %08x",
122c74173fdSBin Liu 		__entry->caller, __entry->addr, __entry->offset, __entry->data)
123c74173fdSBin Liu );
124c74173fdSBin Liu 
125c74173fdSBin Liu DEFINE_EVENT(musb_regl, musb_readl,
126c74173fdSBin Liu 	TP_PROTO(void *caller, const void *addr, unsigned int offset, u32 data),
127c74173fdSBin Liu 	TP_ARGS(caller, addr, offset, data)
128c74173fdSBin Liu );
129c74173fdSBin Liu 
130c74173fdSBin Liu DEFINE_EVENT(musb_regl, musb_writel,
131c74173fdSBin Liu 	TP_PROTO(void *caller, const void *addr, unsigned int offset, u32 data),
132c74173fdSBin Liu 	TP_ARGS(caller, addr, offset, data)
133c74173fdSBin Liu );
134c74173fdSBin Liu 
135cfb9a1bcSBin Liu TRACE_EVENT(musb_isr,
136cfb9a1bcSBin Liu 	TP_PROTO(struct musb *musb),
137cfb9a1bcSBin Liu 	TP_ARGS(musb),
138cfb9a1bcSBin Liu 	TP_STRUCT__entry(
139cfb9a1bcSBin Liu 		__string(name, dev_name(musb->controller))
140cfb9a1bcSBin Liu 		__field(u8, int_usb)
141cfb9a1bcSBin Liu 		__field(u16, int_tx)
142cfb9a1bcSBin Liu 		__field(u16, int_rx)
143cfb9a1bcSBin Liu 	),
144cfb9a1bcSBin Liu 	TP_fast_assign(
145cfb9a1bcSBin Liu 		__assign_str(name, dev_name(musb->controller));
146cfb9a1bcSBin Liu 		__entry->int_usb = musb->int_usb;
147cfb9a1bcSBin Liu 		__entry->int_tx = musb->int_tx;
148cfb9a1bcSBin Liu 		__entry->int_rx = musb->int_rx;
149cfb9a1bcSBin Liu 	),
150cfb9a1bcSBin Liu 	TP_printk("%s: usb %02x, tx %04x, rx %04x",
151cfb9a1bcSBin Liu 		__get_str(name), __entry->int_usb,
152cfb9a1bcSBin Liu 		__entry->int_tx, __entry->int_rx
153cfb9a1bcSBin Liu 	)
154cfb9a1bcSBin Liu );
155cfb9a1bcSBin Liu 
15619ca682eSBin Liu DECLARE_EVENT_CLASS(musb_urb,
15719ca682eSBin Liu 	TP_PROTO(struct musb *musb, struct urb *urb),
15819ca682eSBin Liu 	TP_ARGS(musb, urb),
15919ca682eSBin Liu 	TP_STRUCT__entry(
16019ca682eSBin Liu 		__string(name, dev_name(musb->controller))
16119ca682eSBin Liu 		__field(struct urb *, urb)
16219ca682eSBin Liu 		__field(unsigned int, pipe)
16319ca682eSBin Liu 		__field(int, status)
16419ca682eSBin Liu 		__field(unsigned int, flag)
16519ca682eSBin Liu 		__field(u32, buf_len)
16619ca682eSBin Liu 		__field(u32, actual_len)
16719ca682eSBin Liu 	),
16819ca682eSBin Liu 	TP_fast_assign(
16919ca682eSBin Liu 		__assign_str(name, dev_name(musb->controller));
17019ca682eSBin Liu 		__entry->urb = urb;
17119ca682eSBin Liu 		__entry->pipe = urb->pipe;
17219ca682eSBin Liu 		__entry->status = urb->status;
17319ca682eSBin Liu 		__entry->flag = urb->transfer_flags;
17419ca682eSBin Liu 		__entry->buf_len = urb->transfer_buffer_length;
17519ca682eSBin Liu 		__entry->actual_len = urb->actual_length;
17619ca682eSBin Liu 	),
17719ca682eSBin Liu 	TP_printk("%s: %p, dev%d ep%d%s, flag 0x%x, len %d/%d, status %d",
17819ca682eSBin Liu 			__get_str(name), __entry->urb,
17919ca682eSBin Liu 			usb_pipedevice(__entry->pipe),
18019ca682eSBin Liu 			usb_pipeendpoint(__entry->pipe),
18119ca682eSBin Liu 			usb_pipein(__entry->pipe) ? "in" : "out",
18219ca682eSBin Liu 			__entry->flag,
18319ca682eSBin Liu 			__entry->actual_len, __entry->buf_len,
18419ca682eSBin Liu 			__entry->status
18519ca682eSBin Liu 	)
18619ca682eSBin Liu );
18719ca682eSBin Liu 
18819ca682eSBin Liu DEFINE_EVENT(musb_urb, musb_urb_start,
18919ca682eSBin Liu 	TP_PROTO(struct musb *musb, struct urb *urb),
19019ca682eSBin Liu 	TP_ARGS(musb, urb)
19119ca682eSBin Liu );
19219ca682eSBin Liu 
19319ca682eSBin Liu DEFINE_EVENT(musb_urb, musb_urb_gb,
19419ca682eSBin Liu 	TP_PROTO(struct musb *musb, struct urb *urb),
19519ca682eSBin Liu 	TP_ARGS(musb, urb)
19619ca682eSBin Liu );
19719ca682eSBin Liu 
19819ca682eSBin Liu DEFINE_EVENT(musb_urb, musb_urb_rx,
19919ca682eSBin Liu 	TP_PROTO(struct musb *musb, struct urb *urb),
20019ca682eSBin Liu 	TP_ARGS(musb, urb)
20119ca682eSBin Liu );
20219ca682eSBin Liu 
20319ca682eSBin Liu DEFINE_EVENT(musb_urb, musb_urb_tx,
20419ca682eSBin Liu 	TP_PROTO(struct musb *musb, struct urb *urb),
20519ca682eSBin Liu 	TP_ARGS(musb, urb)
20619ca682eSBin Liu );
20719ca682eSBin Liu 
20819ca682eSBin Liu DEFINE_EVENT(musb_urb, musb_urb_enq,
20919ca682eSBin Liu 	TP_PROTO(struct musb *musb, struct urb *urb),
21019ca682eSBin Liu 	TP_ARGS(musb, urb)
21119ca682eSBin Liu );
21219ca682eSBin Liu 
21319ca682eSBin Liu DEFINE_EVENT(musb_urb, musb_urb_deq,
21419ca682eSBin Liu 	TP_PROTO(struct musb *musb, struct urb *urb),
21519ca682eSBin Liu 	TP_ARGS(musb, urb)
21619ca682eSBin Liu );
21719ca682eSBin Liu 
218fc78003eSBin Liu DECLARE_EVENT_CLASS(musb_req,
219fc78003eSBin Liu 	TP_PROTO(struct musb_request *req),
220fc78003eSBin Liu 	TP_ARGS(req),
221fc78003eSBin Liu 	TP_STRUCT__entry(
222fc78003eSBin Liu 		__field(struct usb_request *, req)
223fc78003eSBin Liu 		__field(u8, is_tx)
224fc78003eSBin Liu 		__field(u8, epnum)
225fc78003eSBin Liu 		__field(int, status)
226fc78003eSBin Liu 		__field(unsigned int, buf_len)
227fc78003eSBin Liu 		__field(unsigned int, actual_len)
228fc78003eSBin Liu 		__field(unsigned int, zero)
229fc78003eSBin Liu 		__field(unsigned int, short_not_ok)
230fc78003eSBin Liu 		__field(unsigned int, no_interrupt)
231fc78003eSBin Liu 	),
232fc78003eSBin Liu 	TP_fast_assign(
233fc78003eSBin Liu 		__entry->req = &req->request;
234fc78003eSBin Liu 		__entry->is_tx = req->tx;
235fc78003eSBin Liu 		__entry->epnum = req->epnum;
236fc78003eSBin Liu 		__entry->status = req->request.status;
237fc78003eSBin Liu 		__entry->buf_len = req->request.length;
238fc78003eSBin Liu 		__entry->actual_len = req->request.actual;
239fc78003eSBin Liu 		__entry->zero = req->request.zero;
240fc78003eSBin Liu 		__entry->short_not_ok = req->request.short_not_ok;
241fc78003eSBin Liu 		__entry->no_interrupt = req->request.no_interrupt;
242fc78003eSBin Liu 	),
243fc78003eSBin Liu 	TP_printk("%p, ep%d %s, %s%s%s, len %d/%d, status %d",
244fc78003eSBin Liu 			__entry->req, __entry->epnum,
245fc78003eSBin Liu 			__entry->is_tx ? "tx/IN" : "rx/OUT",
246fc78003eSBin Liu 			__entry->zero ? "Z" : "z",
247fc78003eSBin Liu 			__entry->short_not_ok ? "S" : "s",
248fc78003eSBin Liu 			__entry->no_interrupt ? "I" : "i",
249fc78003eSBin Liu 			__entry->actual_len, __entry->buf_len,
250fc78003eSBin Liu 			__entry->status
251fc78003eSBin Liu 	)
252fc78003eSBin Liu );
253fc78003eSBin Liu 
254fc78003eSBin Liu DEFINE_EVENT(musb_req, musb_req_gb,
255fc78003eSBin Liu 	TP_PROTO(struct musb_request *req),
256fc78003eSBin Liu 	TP_ARGS(req)
257fc78003eSBin Liu );
258fc78003eSBin Liu 
259fc78003eSBin Liu DEFINE_EVENT(musb_req, musb_req_tx,
260fc78003eSBin Liu 	TP_PROTO(struct musb_request *req),
261fc78003eSBin Liu 	TP_ARGS(req)
262fc78003eSBin Liu );
263fc78003eSBin Liu 
264fc78003eSBin Liu DEFINE_EVENT(musb_req, musb_req_rx,
265fc78003eSBin Liu 	TP_PROTO(struct musb_request *req),
266fc78003eSBin Liu 	TP_ARGS(req)
267fc78003eSBin Liu );
268fc78003eSBin Liu 
269fc78003eSBin Liu DEFINE_EVENT(musb_req, musb_req_alloc,
270fc78003eSBin Liu 	TP_PROTO(struct musb_request *req),
271fc78003eSBin Liu 	TP_ARGS(req)
272fc78003eSBin Liu );
273fc78003eSBin Liu 
274fc78003eSBin Liu DEFINE_EVENT(musb_req, musb_req_free,
275fc78003eSBin Liu 	TP_PROTO(struct musb_request *req),
276fc78003eSBin Liu 	TP_ARGS(req)
277fc78003eSBin Liu );
278fc78003eSBin Liu 
279fc78003eSBin Liu DEFINE_EVENT(musb_req, musb_req_start,
280fc78003eSBin Liu 	TP_PROTO(struct musb_request *req),
281fc78003eSBin Liu 	TP_ARGS(req)
282fc78003eSBin Liu );
283fc78003eSBin Liu 
284fc78003eSBin Liu DEFINE_EVENT(musb_req, musb_req_enq,
285fc78003eSBin Liu 	TP_PROTO(struct musb_request *req),
286fc78003eSBin Liu 	TP_ARGS(req)
287fc78003eSBin Liu );
288fc78003eSBin Liu 
289fc78003eSBin Liu DEFINE_EVENT(musb_req, musb_req_deq,
290fc78003eSBin Liu 	TP_PROTO(struct musb_request *req),
291fc78003eSBin Liu 	TP_ARGS(req)
292fc78003eSBin Liu );
293fc78003eSBin Liu 
294*8ccb49ddSBin Liu #ifdef CONFIG_USB_TI_CPPI41_DMA
295*8ccb49ddSBin Liu DECLARE_EVENT_CLASS(musb_cppi41,
296*8ccb49ddSBin Liu 	TP_PROTO(struct cppi41_dma_channel *ch),
297*8ccb49ddSBin Liu 	TP_ARGS(ch),
298*8ccb49ddSBin Liu 	TP_STRUCT__entry(
299*8ccb49ddSBin Liu 		__field(struct cppi41_dma_channel *, ch)
300*8ccb49ddSBin Liu 		__string(name, dev_name(ch->hw_ep->musb->controller))
301*8ccb49ddSBin Liu 		__field(u8, hwep)
302*8ccb49ddSBin Liu 		__field(u8, port)
303*8ccb49ddSBin Liu 		__field(u8, is_tx)
304*8ccb49ddSBin Liu 		__field(u32, len)
305*8ccb49ddSBin Liu 		__field(u32, prog_len)
306*8ccb49ddSBin Liu 		__field(u32, xferred)
307*8ccb49ddSBin Liu 	),
308*8ccb49ddSBin Liu 	TP_fast_assign(
309*8ccb49ddSBin Liu 		__entry->ch = ch;
310*8ccb49ddSBin Liu 		__assign_str(name, dev_name(ch->hw_ep->musb->controller));
311*8ccb49ddSBin Liu 		__entry->hwep = ch->hw_ep->epnum;
312*8ccb49ddSBin Liu 		__entry->port = ch->port_num;
313*8ccb49ddSBin Liu 		__entry->is_tx = ch->is_tx;
314*8ccb49ddSBin Liu 		__entry->len = ch->total_len;
315*8ccb49ddSBin Liu 		__entry->prog_len = ch->prog_len;
316*8ccb49ddSBin Liu 		__entry->xferred = ch->transferred;
317*8ccb49ddSBin Liu 	),
318*8ccb49ddSBin Liu 	TP_printk("%s: %p, hwep%d ch%d%s, prog_len %d, len %d/%d",
319*8ccb49ddSBin Liu 			__get_str(name), __entry->ch, __entry->hwep,
320*8ccb49ddSBin Liu 			__entry->port, __entry->is_tx ? "tx" : "rx",
321*8ccb49ddSBin Liu 			__entry->prog_len, __entry->xferred, __entry->len
322*8ccb49ddSBin Liu 	)
323*8ccb49ddSBin Liu );
324*8ccb49ddSBin Liu 
325*8ccb49ddSBin Liu DEFINE_EVENT(musb_cppi41, musb_cppi41_done,
326*8ccb49ddSBin Liu 	TP_PROTO(struct cppi41_dma_channel *ch),
327*8ccb49ddSBin Liu 	TP_ARGS(ch)
328*8ccb49ddSBin Liu );
329*8ccb49ddSBin Liu 
330*8ccb49ddSBin Liu DEFINE_EVENT(musb_cppi41, musb_cppi41_gb,
331*8ccb49ddSBin Liu 	TP_PROTO(struct cppi41_dma_channel *ch),
332*8ccb49ddSBin Liu 	TP_ARGS(ch)
333*8ccb49ddSBin Liu );
334*8ccb49ddSBin Liu 
335*8ccb49ddSBin Liu DEFINE_EVENT(musb_cppi41, musb_cppi41_config,
336*8ccb49ddSBin Liu 	TP_PROTO(struct cppi41_dma_channel *ch),
337*8ccb49ddSBin Liu 	TP_ARGS(ch)
338*8ccb49ddSBin Liu );
339*8ccb49ddSBin Liu 
340*8ccb49ddSBin Liu DEFINE_EVENT(musb_cppi41, musb_cppi41_cont,
341*8ccb49ddSBin Liu 	TP_PROTO(struct cppi41_dma_channel *ch),
342*8ccb49ddSBin Liu 	TP_ARGS(ch)
343*8ccb49ddSBin Liu );
344*8ccb49ddSBin Liu 
345*8ccb49ddSBin Liu DEFINE_EVENT(musb_cppi41, musb_cppi41_alloc,
346*8ccb49ddSBin Liu 	TP_PROTO(struct cppi41_dma_channel *ch),
347*8ccb49ddSBin Liu 	TP_ARGS(ch)
348*8ccb49ddSBin Liu );
349*8ccb49ddSBin Liu 
350*8ccb49ddSBin Liu DEFINE_EVENT(musb_cppi41, musb_cppi41_abort,
351*8ccb49ddSBin Liu 	TP_PROTO(struct cppi41_dma_channel *ch),
352*8ccb49ddSBin Liu 	TP_ARGS(ch)
353*8ccb49ddSBin Liu );
354*8ccb49ddSBin Liu 
355*8ccb49ddSBin Liu DEFINE_EVENT(musb_cppi41, musb_cppi41_free,
356*8ccb49ddSBin Liu 	TP_PROTO(struct cppi41_dma_channel *ch),
357*8ccb49ddSBin Liu 	TP_ARGS(ch)
358*8ccb49ddSBin Liu );
359*8ccb49ddSBin Liu #endif /* CONFIG_USB_TI_CPPI41_DMA */
360*8ccb49ddSBin Liu 
361f89252adSBin Liu #endif /* __MUSB_TRACE_H */
362f89252adSBin Liu 
363f89252adSBin Liu /* this part has to be here */
364f89252adSBin Liu 
365f89252adSBin Liu #undef TRACE_INCLUDE_PATH
366f89252adSBin Liu #define TRACE_INCLUDE_PATH .
367f89252adSBin Liu 
368f89252adSBin Liu #undef TRACE_INCLUDE_FILE
369f89252adSBin Liu #define TRACE_INCLUDE_FILE musb_trace
370f89252adSBin Liu 
371f89252adSBin Liu #include <trace/define_trace.h>
372