1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * musb_trace.h - MUSB Controller Trace Support 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Copyright (C) 2015 Texas Instruments Incorporated - http://www.ti.com 6*4882a593Smuzhiyun * 7*4882a593Smuzhiyun * Author: Bin Liu <b-liu@ti.com> 8*4882a593Smuzhiyun */ 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun #undef TRACE_SYSTEM 11*4882a593Smuzhiyun #define TRACE_SYSTEM musb 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun #if !defined(__MUSB_TRACE_H) || defined(TRACE_HEADER_MULTI_READ) 14*4882a593Smuzhiyun #define __MUSB_TRACE_H 15*4882a593Smuzhiyun 16*4882a593Smuzhiyun #include <linux/types.h> 17*4882a593Smuzhiyun #include <linux/tracepoint.h> 18*4882a593Smuzhiyun #include <linux/usb.h> 19*4882a593Smuzhiyun #include "musb_core.h" 20*4882a593Smuzhiyun #ifdef CONFIG_USB_TI_CPPI41_DMA 21*4882a593Smuzhiyun #include "cppi_dma.h" 22*4882a593Smuzhiyun #endif 23*4882a593Smuzhiyun 24*4882a593Smuzhiyun #define MUSB_MSG_MAX 500 25*4882a593Smuzhiyun 26*4882a593Smuzhiyun TRACE_EVENT(musb_log, 27*4882a593Smuzhiyun TP_PROTO(struct musb *musb, struct va_format *vaf), 28*4882a593Smuzhiyun TP_ARGS(musb, vaf), 29*4882a593Smuzhiyun TP_STRUCT__entry( 30*4882a593Smuzhiyun __string(name, dev_name(musb->controller)) 31*4882a593Smuzhiyun __dynamic_array(char, msg, MUSB_MSG_MAX) 32*4882a593Smuzhiyun ), 33*4882a593Smuzhiyun TP_fast_assign( 34*4882a593Smuzhiyun __assign_str(name, dev_name(musb->controller)); 35*4882a593Smuzhiyun vsnprintf(__get_str(msg), MUSB_MSG_MAX, vaf->fmt, *vaf->va); 36*4882a593Smuzhiyun ), 37*4882a593Smuzhiyun TP_printk("%s: %s", __get_str(name), __get_str(msg)) 38*4882a593Smuzhiyun ); 39*4882a593Smuzhiyun 40*4882a593Smuzhiyun DECLARE_EVENT_CLASS(musb_regb, 41*4882a593Smuzhiyun TP_PROTO(void *caller, const void __iomem *addr, 42*4882a593Smuzhiyun unsigned int offset, u8 data), 43*4882a593Smuzhiyun TP_ARGS(caller, addr, offset, data), 44*4882a593Smuzhiyun TP_STRUCT__entry( 45*4882a593Smuzhiyun __field(void *, caller) 46*4882a593Smuzhiyun __field(const void __iomem *, addr) 47*4882a593Smuzhiyun __field(unsigned int, offset) 48*4882a593Smuzhiyun __field(u8, data) 49*4882a593Smuzhiyun ), 50*4882a593Smuzhiyun TP_fast_assign( 51*4882a593Smuzhiyun __entry->caller = caller; 52*4882a593Smuzhiyun __entry->addr = addr; 53*4882a593Smuzhiyun __entry->offset = offset; 54*4882a593Smuzhiyun __entry->data = data; 55*4882a593Smuzhiyun ), 56*4882a593Smuzhiyun TP_printk("%pS: %p + %04x: %02x", 57*4882a593Smuzhiyun __entry->caller, __entry->addr, __entry->offset, __entry->data) 58*4882a593Smuzhiyun ); 59*4882a593Smuzhiyun 60*4882a593Smuzhiyun DEFINE_EVENT(musb_regb, musb_readb, 61*4882a593Smuzhiyun TP_PROTO(void *caller, const void __iomem *addr, 62*4882a593Smuzhiyun unsigned int offset, u8 data), 63*4882a593Smuzhiyun TP_ARGS(caller, addr, offset, data) 64*4882a593Smuzhiyun ); 65*4882a593Smuzhiyun 66*4882a593Smuzhiyun DEFINE_EVENT(musb_regb, musb_writeb, 67*4882a593Smuzhiyun TP_PROTO(void *caller, const void __iomem *addr, 68*4882a593Smuzhiyun unsigned int offset, u8 data), 69*4882a593Smuzhiyun TP_ARGS(caller, addr, offset, data) 70*4882a593Smuzhiyun ); 71*4882a593Smuzhiyun 72*4882a593Smuzhiyun DECLARE_EVENT_CLASS(musb_regw, 73*4882a593Smuzhiyun TP_PROTO(void *caller, const void __iomem *addr, 74*4882a593Smuzhiyun unsigned int offset, u16 data), 75*4882a593Smuzhiyun TP_ARGS(caller, addr, offset, data), 76*4882a593Smuzhiyun TP_STRUCT__entry( 77*4882a593Smuzhiyun __field(void *, caller) 78*4882a593Smuzhiyun __field(const void __iomem *, addr) 79*4882a593Smuzhiyun __field(unsigned int, offset) 80*4882a593Smuzhiyun __field(u16, data) 81*4882a593Smuzhiyun ), 82*4882a593Smuzhiyun TP_fast_assign( 83*4882a593Smuzhiyun __entry->caller = caller; 84*4882a593Smuzhiyun __entry->addr = addr; 85*4882a593Smuzhiyun __entry->offset = offset; 86*4882a593Smuzhiyun __entry->data = data; 87*4882a593Smuzhiyun ), 88*4882a593Smuzhiyun TP_printk("%pS: %p + %04x: %04x", 89*4882a593Smuzhiyun __entry->caller, __entry->addr, __entry->offset, __entry->data) 90*4882a593Smuzhiyun ); 91*4882a593Smuzhiyun 92*4882a593Smuzhiyun DEFINE_EVENT(musb_regw, musb_readw, 93*4882a593Smuzhiyun TP_PROTO(void *caller, const void __iomem *addr, 94*4882a593Smuzhiyun unsigned int offset, u16 data), 95*4882a593Smuzhiyun TP_ARGS(caller, addr, offset, data) 96*4882a593Smuzhiyun ); 97*4882a593Smuzhiyun 98*4882a593Smuzhiyun DEFINE_EVENT(musb_regw, musb_writew, 99*4882a593Smuzhiyun TP_PROTO(void *caller, const void __iomem *addr, 100*4882a593Smuzhiyun unsigned int offset, u16 data), 101*4882a593Smuzhiyun TP_ARGS(caller, addr, offset, data) 102*4882a593Smuzhiyun ); 103*4882a593Smuzhiyun 104*4882a593Smuzhiyun DECLARE_EVENT_CLASS(musb_regl, 105*4882a593Smuzhiyun TP_PROTO(void *caller, const void __iomem *addr, 106*4882a593Smuzhiyun unsigned int offset, u32 data), 107*4882a593Smuzhiyun TP_ARGS(caller, addr, offset, data), 108*4882a593Smuzhiyun TP_STRUCT__entry( 109*4882a593Smuzhiyun __field(void *, caller) 110*4882a593Smuzhiyun __field(const void __iomem *, addr) 111*4882a593Smuzhiyun __field(unsigned int, offset) 112*4882a593Smuzhiyun __field(u32, data) 113*4882a593Smuzhiyun ), 114*4882a593Smuzhiyun TP_fast_assign( 115*4882a593Smuzhiyun __entry->caller = caller; 116*4882a593Smuzhiyun __entry->addr = addr; 117*4882a593Smuzhiyun __entry->offset = offset; 118*4882a593Smuzhiyun __entry->data = data; 119*4882a593Smuzhiyun ), 120*4882a593Smuzhiyun TP_printk("%pS: %p + %04x: %08x", 121*4882a593Smuzhiyun __entry->caller, __entry->addr, __entry->offset, __entry->data) 122*4882a593Smuzhiyun ); 123*4882a593Smuzhiyun 124*4882a593Smuzhiyun DEFINE_EVENT(musb_regl, musb_readl, 125*4882a593Smuzhiyun TP_PROTO(void *caller, const void __iomem *addr, 126*4882a593Smuzhiyun unsigned int offset, u32 data), 127*4882a593Smuzhiyun TP_ARGS(caller, addr, offset, data) 128*4882a593Smuzhiyun ); 129*4882a593Smuzhiyun 130*4882a593Smuzhiyun DEFINE_EVENT(musb_regl, musb_writel, 131*4882a593Smuzhiyun TP_PROTO(void *caller, const void __iomem *addr, 132*4882a593Smuzhiyun unsigned int offset, u32 data), 133*4882a593Smuzhiyun TP_ARGS(caller, addr, offset, data) 134*4882a593Smuzhiyun ); 135*4882a593Smuzhiyun 136*4882a593Smuzhiyun TRACE_EVENT(musb_isr, 137*4882a593Smuzhiyun TP_PROTO(struct musb *musb), 138*4882a593Smuzhiyun TP_ARGS(musb), 139*4882a593Smuzhiyun TP_STRUCT__entry( 140*4882a593Smuzhiyun __string(name, dev_name(musb->controller)) 141*4882a593Smuzhiyun __field(u8, int_usb) 142*4882a593Smuzhiyun __field(u16, int_tx) 143*4882a593Smuzhiyun __field(u16, int_rx) 144*4882a593Smuzhiyun ), 145*4882a593Smuzhiyun TP_fast_assign( 146*4882a593Smuzhiyun __assign_str(name, dev_name(musb->controller)); 147*4882a593Smuzhiyun __entry->int_usb = musb->int_usb; 148*4882a593Smuzhiyun __entry->int_tx = musb->int_tx; 149*4882a593Smuzhiyun __entry->int_rx = musb->int_rx; 150*4882a593Smuzhiyun ), 151*4882a593Smuzhiyun TP_printk("%s: usb %02x, tx %04x, rx %04x", 152*4882a593Smuzhiyun __get_str(name), __entry->int_usb, 153*4882a593Smuzhiyun __entry->int_tx, __entry->int_rx 154*4882a593Smuzhiyun ) 155*4882a593Smuzhiyun ); 156*4882a593Smuzhiyun 157*4882a593Smuzhiyun DECLARE_EVENT_CLASS(musb_urb, 158*4882a593Smuzhiyun TP_PROTO(struct musb *musb, struct urb *urb), 159*4882a593Smuzhiyun TP_ARGS(musb, urb), 160*4882a593Smuzhiyun TP_STRUCT__entry( 161*4882a593Smuzhiyun __string(name, dev_name(musb->controller)) 162*4882a593Smuzhiyun __field(struct urb *, urb) 163*4882a593Smuzhiyun __field(unsigned int, pipe) 164*4882a593Smuzhiyun __field(int, status) 165*4882a593Smuzhiyun __field(unsigned int, flag) 166*4882a593Smuzhiyun __field(u32, buf_len) 167*4882a593Smuzhiyun __field(u32, actual_len) 168*4882a593Smuzhiyun ), 169*4882a593Smuzhiyun TP_fast_assign( 170*4882a593Smuzhiyun __assign_str(name, dev_name(musb->controller)); 171*4882a593Smuzhiyun __entry->urb = urb; 172*4882a593Smuzhiyun __entry->pipe = urb->pipe; 173*4882a593Smuzhiyun __entry->status = urb->status; 174*4882a593Smuzhiyun __entry->flag = urb->transfer_flags; 175*4882a593Smuzhiyun __entry->buf_len = urb->transfer_buffer_length; 176*4882a593Smuzhiyun __entry->actual_len = urb->actual_length; 177*4882a593Smuzhiyun ), 178*4882a593Smuzhiyun TP_printk("%s: %p, dev%d ep%d%s, flag 0x%x, len %d/%d, status %d", 179*4882a593Smuzhiyun __get_str(name), __entry->urb, 180*4882a593Smuzhiyun usb_pipedevice(__entry->pipe), 181*4882a593Smuzhiyun usb_pipeendpoint(__entry->pipe), 182*4882a593Smuzhiyun usb_pipein(__entry->pipe) ? "in" : "out", 183*4882a593Smuzhiyun __entry->flag, 184*4882a593Smuzhiyun __entry->actual_len, __entry->buf_len, 185*4882a593Smuzhiyun __entry->status 186*4882a593Smuzhiyun ) 187*4882a593Smuzhiyun ); 188*4882a593Smuzhiyun 189*4882a593Smuzhiyun DEFINE_EVENT(musb_urb, musb_urb_start, 190*4882a593Smuzhiyun TP_PROTO(struct musb *musb, struct urb *urb), 191*4882a593Smuzhiyun TP_ARGS(musb, urb) 192*4882a593Smuzhiyun ); 193*4882a593Smuzhiyun 194*4882a593Smuzhiyun DEFINE_EVENT(musb_urb, musb_urb_gb, 195*4882a593Smuzhiyun TP_PROTO(struct musb *musb, struct urb *urb), 196*4882a593Smuzhiyun TP_ARGS(musb, urb) 197*4882a593Smuzhiyun ); 198*4882a593Smuzhiyun 199*4882a593Smuzhiyun DEFINE_EVENT(musb_urb, musb_urb_rx, 200*4882a593Smuzhiyun TP_PROTO(struct musb *musb, struct urb *urb), 201*4882a593Smuzhiyun TP_ARGS(musb, urb) 202*4882a593Smuzhiyun ); 203*4882a593Smuzhiyun 204*4882a593Smuzhiyun DEFINE_EVENT(musb_urb, musb_urb_tx, 205*4882a593Smuzhiyun TP_PROTO(struct musb *musb, struct urb *urb), 206*4882a593Smuzhiyun TP_ARGS(musb, urb) 207*4882a593Smuzhiyun ); 208*4882a593Smuzhiyun 209*4882a593Smuzhiyun DEFINE_EVENT(musb_urb, musb_urb_enq, 210*4882a593Smuzhiyun TP_PROTO(struct musb *musb, struct urb *urb), 211*4882a593Smuzhiyun TP_ARGS(musb, urb) 212*4882a593Smuzhiyun ); 213*4882a593Smuzhiyun 214*4882a593Smuzhiyun DEFINE_EVENT(musb_urb, musb_urb_deq, 215*4882a593Smuzhiyun TP_PROTO(struct musb *musb, struct urb *urb), 216*4882a593Smuzhiyun TP_ARGS(musb, urb) 217*4882a593Smuzhiyun ); 218*4882a593Smuzhiyun 219*4882a593Smuzhiyun DECLARE_EVENT_CLASS(musb_req, 220*4882a593Smuzhiyun TP_PROTO(struct musb_request *req), 221*4882a593Smuzhiyun TP_ARGS(req), 222*4882a593Smuzhiyun TP_STRUCT__entry( 223*4882a593Smuzhiyun __field(struct usb_request *, req) 224*4882a593Smuzhiyun __field(u8, is_tx) 225*4882a593Smuzhiyun __field(u8, epnum) 226*4882a593Smuzhiyun __field(int, status) 227*4882a593Smuzhiyun __field(unsigned int, buf_len) 228*4882a593Smuzhiyun __field(unsigned int, actual_len) 229*4882a593Smuzhiyun __field(unsigned int, zero) 230*4882a593Smuzhiyun __field(unsigned int, short_not_ok) 231*4882a593Smuzhiyun __field(unsigned int, no_interrupt) 232*4882a593Smuzhiyun ), 233*4882a593Smuzhiyun TP_fast_assign( 234*4882a593Smuzhiyun __entry->req = &req->request; 235*4882a593Smuzhiyun __entry->is_tx = req->tx; 236*4882a593Smuzhiyun __entry->epnum = req->epnum; 237*4882a593Smuzhiyun __entry->status = req->request.status; 238*4882a593Smuzhiyun __entry->buf_len = req->request.length; 239*4882a593Smuzhiyun __entry->actual_len = req->request.actual; 240*4882a593Smuzhiyun __entry->zero = req->request.zero; 241*4882a593Smuzhiyun __entry->short_not_ok = req->request.short_not_ok; 242*4882a593Smuzhiyun __entry->no_interrupt = req->request.no_interrupt; 243*4882a593Smuzhiyun ), 244*4882a593Smuzhiyun TP_printk("%p, ep%d %s, %s%s%s, len %d/%d, status %d", 245*4882a593Smuzhiyun __entry->req, __entry->epnum, 246*4882a593Smuzhiyun __entry->is_tx ? "tx/IN" : "rx/OUT", 247*4882a593Smuzhiyun __entry->zero ? "Z" : "z", 248*4882a593Smuzhiyun __entry->short_not_ok ? "S" : "s", 249*4882a593Smuzhiyun __entry->no_interrupt ? "I" : "i", 250*4882a593Smuzhiyun __entry->actual_len, __entry->buf_len, 251*4882a593Smuzhiyun __entry->status 252*4882a593Smuzhiyun ) 253*4882a593Smuzhiyun ); 254*4882a593Smuzhiyun 255*4882a593Smuzhiyun DEFINE_EVENT(musb_req, musb_req_gb, 256*4882a593Smuzhiyun TP_PROTO(struct musb_request *req), 257*4882a593Smuzhiyun TP_ARGS(req) 258*4882a593Smuzhiyun ); 259*4882a593Smuzhiyun 260*4882a593Smuzhiyun DEFINE_EVENT(musb_req, musb_req_tx, 261*4882a593Smuzhiyun TP_PROTO(struct musb_request *req), 262*4882a593Smuzhiyun TP_ARGS(req) 263*4882a593Smuzhiyun ); 264*4882a593Smuzhiyun 265*4882a593Smuzhiyun DEFINE_EVENT(musb_req, musb_req_rx, 266*4882a593Smuzhiyun TP_PROTO(struct musb_request *req), 267*4882a593Smuzhiyun TP_ARGS(req) 268*4882a593Smuzhiyun ); 269*4882a593Smuzhiyun 270*4882a593Smuzhiyun DEFINE_EVENT(musb_req, musb_req_alloc, 271*4882a593Smuzhiyun TP_PROTO(struct musb_request *req), 272*4882a593Smuzhiyun TP_ARGS(req) 273*4882a593Smuzhiyun ); 274*4882a593Smuzhiyun 275*4882a593Smuzhiyun DEFINE_EVENT(musb_req, musb_req_free, 276*4882a593Smuzhiyun TP_PROTO(struct musb_request *req), 277*4882a593Smuzhiyun TP_ARGS(req) 278*4882a593Smuzhiyun ); 279*4882a593Smuzhiyun 280*4882a593Smuzhiyun DEFINE_EVENT(musb_req, musb_req_start, 281*4882a593Smuzhiyun TP_PROTO(struct musb_request *req), 282*4882a593Smuzhiyun TP_ARGS(req) 283*4882a593Smuzhiyun ); 284*4882a593Smuzhiyun 285*4882a593Smuzhiyun DEFINE_EVENT(musb_req, musb_req_enq, 286*4882a593Smuzhiyun TP_PROTO(struct musb_request *req), 287*4882a593Smuzhiyun TP_ARGS(req) 288*4882a593Smuzhiyun ); 289*4882a593Smuzhiyun 290*4882a593Smuzhiyun DEFINE_EVENT(musb_req, musb_req_deq, 291*4882a593Smuzhiyun TP_PROTO(struct musb_request *req), 292*4882a593Smuzhiyun TP_ARGS(req) 293*4882a593Smuzhiyun ); 294*4882a593Smuzhiyun 295*4882a593Smuzhiyun #ifdef CONFIG_USB_TI_CPPI41_DMA 296*4882a593Smuzhiyun DECLARE_EVENT_CLASS(musb_cppi41, 297*4882a593Smuzhiyun TP_PROTO(struct cppi41_dma_channel *ch), 298*4882a593Smuzhiyun TP_ARGS(ch), 299*4882a593Smuzhiyun TP_STRUCT__entry( 300*4882a593Smuzhiyun __field(struct cppi41_dma_channel *, ch) 301*4882a593Smuzhiyun __string(name, dev_name(ch->hw_ep->musb->controller)) 302*4882a593Smuzhiyun __field(u8, hwep) 303*4882a593Smuzhiyun __field(u8, port) 304*4882a593Smuzhiyun __field(u8, is_tx) 305*4882a593Smuzhiyun __field(u32, len) 306*4882a593Smuzhiyun __field(u32, prog_len) 307*4882a593Smuzhiyun __field(u32, xferred) 308*4882a593Smuzhiyun ), 309*4882a593Smuzhiyun TP_fast_assign( 310*4882a593Smuzhiyun __entry->ch = ch; 311*4882a593Smuzhiyun __assign_str(name, dev_name(ch->hw_ep->musb->controller)); 312*4882a593Smuzhiyun __entry->hwep = ch->hw_ep->epnum; 313*4882a593Smuzhiyun __entry->port = ch->port_num; 314*4882a593Smuzhiyun __entry->is_tx = ch->is_tx; 315*4882a593Smuzhiyun __entry->len = ch->total_len; 316*4882a593Smuzhiyun __entry->prog_len = ch->prog_len; 317*4882a593Smuzhiyun __entry->xferred = ch->transferred; 318*4882a593Smuzhiyun ), 319*4882a593Smuzhiyun TP_printk("%s: %p, hwep%d ch%d%s, prog_len %d, len %d/%d", 320*4882a593Smuzhiyun __get_str(name), __entry->ch, __entry->hwep, 321*4882a593Smuzhiyun __entry->port, __entry->is_tx ? "tx" : "rx", 322*4882a593Smuzhiyun __entry->prog_len, __entry->xferred, __entry->len 323*4882a593Smuzhiyun ) 324*4882a593Smuzhiyun ); 325*4882a593Smuzhiyun 326*4882a593Smuzhiyun DEFINE_EVENT(musb_cppi41, musb_cppi41_done, 327*4882a593Smuzhiyun TP_PROTO(struct cppi41_dma_channel *ch), 328*4882a593Smuzhiyun TP_ARGS(ch) 329*4882a593Smuzhiyun ); 330*4882a593Smuzhiyun 331*4882a593Smuzhiyun DEFINE_EVENT(musb_cppi41, musb_cppi41_gb, 332*4882a593Smuzhiyun TP_PROTO(struct cppi41_dma_channel *ch), 333*4882a593Smuzhiyun TP_ARGS(ch) 334*4882a593Smuzhiyun ); 335*4882a593Smuzhiyun 336*4882a593Smuzhiyun DEFINE_EVENT(musb_cppi41, musb_cppi41_config, 337*4882a593Smuzhiyun TP_PROTO(struct cppi41_dma_channel *ch), 338*4882a593Smuzhiyun TP_ARGS(ch) 339*4882a593Smuzhiyun ); 340*4882a593Smuzhiyun 341*4882a593Smuzhiyun DEFINE_EVENT(musb_cppi41, musb_cppi41_cont, 342*4882a593Smuzhiyun TP_PROTO(struct cppi41_dma_channel *ch), 343*4882a593Smuzhiyun TP_ARGS(ch) 344*4882a593Smuzhiyun ); 345*4882a593Smuzhiyun 346*4882a593Smuzhiyun DEFINE_EVENT(musb_cppi41, musb_cppi41_alloc, 347*4882a593Smuzhiyun TP_PROTO(struct cppi41_dma_channel *ch), 348*4882a593Smuzhiyun TP_ARGS(ch) 349*4882a593Smuzhiyun ); 350*4882a593Smuzhiyun 351*4882a593Smuzhiyun DEFINE_EVENT(musb_cppi41, musb_cppi41_abort, 352*4882a593Smuzhiyun TP_PROTO(struct cppi41_dma_channel *ch), 353*4882a593Smuzhiyun TP_ARGS(ch) 354*4882a593Smuzhiyun ); 355*4882a593Smuzhiyun 356*4882a593Smuzhiyun DEFINE_EVENT(musb_cppi41, musb_cppi41_free, 357*4882a593Smuzhiyun TP_PROTO(struct cppi41_dma_channel *ch), 358*4882a593Smuzhiyun TP_ARGS(ch) 359*4882a593Smuzhiyun ); 360*4882a593Smuzhiyun #endif /* CONFIG_USB_TI_CPPI41_DMA */ 361*4882a593Smuzhiyun 362*4882a593Smuzhiyun #endif /* __MUSB_TRACE_H */ 363*4882a593Smuzhiyun 364*4882a593Smuzhiyun /* this part has to be here */ 365*4882a593Smuzhiyun 366*4882a593Smuzhiyun #undef TRACE_INCLUDE_PATH 367*4882a593Smuzhiyun #define TRACE_INCLUDE_PATH . 368*4882a593Smuzhiyun 369*4882a593Smuzhiyun #undef TRACE_INCLUDE_FILE 370*4882a593Smuzhiyun #define TRACE_INCLUDE_FILE musb_trace 371*4882a593Smuzhiyun 372*4882a593Smuzhiyun #include <trace/define_trace.h> 373