1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun #if !defined(_TRACE_PWC_H) || defined(TRACE_HEADER_MULTI_READ) 3*4882a593Smuzhiyun #define _TRACE_PWC_H 4*4882a593Smuzhiyun 5*4882a593Smuzhiyun #include <linux/usb.h> 6*4882a593Smuzhiyun #include <linux/tracepoint.h> 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun #undef TRACE_SYSTEM 9*4882a593Smuzhiyun #define TRACE_SYSTEM pwc 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun TRACE_EVENT(pwc_handler_enter, 12*4882a593Smuzhiyun TP_PROTO(struct urb *urb, struct pwc_device *pdev), 13*4882a593Smuzhiyun TP_ARGS(urb, pdev), 14*4882a593Smuzhiyun TP_STRUCT__entry( 15*4882a593Smuzhiyun __field(struct urb*, urb) 16*4882a593Smuzhiyun __field(struct pwc_frame_buf*, fbuf) 17*4882a593Smuzhiyun __field(int, urb__status) 18*4882a593Smuzhiyun __field(u32, urb__actual_length) 19*4882a593Smuzhiyun __field(int, fbuf__filled) 20*4882a593Smuzhiyun __string(name, pdev->v4l2_dev.name) 21*4882a593Smuzhiyun ), 22*4882a593Smuzhiyun TP_fast_assign( 23*4882a593Smuzhiyun __entry->urb = urb; 24*4882a593Smuzhiyun __entry->fbuf = pdev->fill_buf; 25*4882a593Smuzhiyun __entry->urb__status = urb->status; 26*4882a593Smuzhiyun __entry->urb__actual_length = urb->actual_length; 27*4882a593Smuzhiyun __entry->fbuf__filled = (pdev->fill_buf 28*4882a593Smuzhiyun ? pdev->fill_buf->filled : 0); 29*4882a593Smuzhiyun __assign_str(name, pdev->v4l2_dev.name); 30*4882a593Smuzhiyun ), 31*4882a593Smuzhiyun TP_printk("dev=%s (fbuf=%p filled=%d) urb=%p (status=%d actual_length=%u)", 32*4882a593Smuzhiyun __get_str(name), 33*4882a593Smuzhiyun __entry->fbuf, 34*4882a593Smuzhiyun __entry->fbuf__filled, 35*4882a593Smuzhiyun __entry->urb, 36*4882a593Smuzhiyun __entry->urb__status, 37*4882a593Smuzhiyun __entry->urb__actual_length) 38*4882a593Smuzhiyun ); 39*4882a593Smuzhiyun 40*4882a593Smuzhiyun TRACE_EVENT(pwc_handler_exit, 41*4882a593Smuzhiyun TP_PROTO(struct urb *urb, struct pwc_device *pdev), 42*4882a593Smuzhiyun TP_ARGS(urb, pdev), 43*4882a593Smuzhiyun TP_STRUCT__entry( 44*4882a593Smuzhiyun __field(struct urb*, urb) 45*4882a593Smuzhiyun __field(struct pwc_frame_buf*, fbuf) 46*4882a593Smuzhiyun __field(int, fbuf__filled) 47*4882a593Smuzhiyun __string(name, pdev->v4l2_dev.name) 48*4882a593Smuzhiyun ), 49*4882a593Smuzhiyun TP_fast_assign( 50*4882a593Smuzhiyun __entry->urb = urb; 51*4882a593Smuzhiyun __entry->fbuf = pdev->fill_buf; 52*4882a593Smuzhiyun __entry->fbuf__filled = pdev->fill_buf->filled; 53*4882a593Smuzhiyun __assign_str(name, pdev->v4l2_dev.name); 54*4882a593Smuzhiyun ), 55*4882a593Smuzhiyun TP_printk(" dev=%s (fbuf=%p filled=%d) urb=%p", 56*4882a593Smuzhiyun __get_str(name), 57*4882a593Smuzhiyun __entry->fbuf, 58*4882a593Smuzhiyun __entry->fbuf__filled, 59*4882a593Smuzhiyun __entry->urb) 60*4882a593Smuzhiyun ); 61*4882a593Smuzhiyun 62*4882a593Smuzhiyun #endif /* _TRACE_PWC_H */ 63*4882a593Smuzhiyun 64*4882a593Smuzhiyun /* This part must be outside protection */ 65*4882a593Smuzhiyun #include <trace/define_trace.h> 66