2013-11-22 23:48:28 +04:00
# undef TRACE_SYSTEM
# define TRACE_SYSTEM v4l2
# if !defined(_TRACE_V4L2_H) || defined(TRACE_HEADER_MULTI_READ)
# define _TRACE_V4L2_H
# include <linux/tracepoint.h>
# define show_type(type) \
__print_symbolic ( type , \
{ V4L2_BUF_TYPE_VIDEO_CAPTURE , " VIDEO_CAPTURE " } , \
{ V4L2_BUF_TYPE_VIDEO_OUTPUT , " VIDEO_OUTPUT " } , \
{ V4L2_BUF_TYPE_VIDEO_OVERLAY , " VIDEO_OVERLAY " } , \
{ V4L2_BUF_TYPE_VBI_CAPTURE , " VBI_CAPTURE " } , \
{ V4L2_BUF_TYPE_VBI_OUTPUT , " VBI_OUTPUT " } , \
{ V4L2_BUF_TYPE_SLICED_VBI_CAPTURE , " SLICED_VBI_CAPTURE " } , \
{ V4L2_BUF_TYPE_SLICED_VBI_OUTPUT , " SLICED_VBI_OUTPUT " } , \
{ V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY , " VIDEO_OUTPUT_OVERLAY " } , \
{ V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE , " VIDEO_CAPTURE_MPLANE " } , \
{ V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE , " VIDEO_OUTPUT_MPLANE " } , \
2013-12-12 20:34:30 +04:00
{ V4L2_BUF_TYPE_SDR_CAPTURE , " SDR_CAPTURE " } , \
2013-11-22 23:48:28 +04:00
{ V4L2_BUF_TYPE_PRIVATE , " PRIVATE " } )
# define show_field(field) \
__print_symbolic ( field , \
{ V4L2_FIELD_ANY , " ANY " } , \
{ V4L2_FIELD_NONE , " NONE " } , \
{ V4L2_FIELD_TOP , " TOP " } , \
{ V4L2_FIELD_BOTTOM , " BOTTOM " } , \
{ V4L2_FIELD_INTERLACED , " INTERLACED " } , \
{ V4L2_FIELD_SEQ_TB , " SEQ_TB " } , \
{ V4L2_FIELD_SEQ_BT , " SEQ_BT " } , \
{ V4L2_FIELD_ALTERNATE , " ALTERNATE " } , \
{ V4L2_FIELD_INTERLACED_TB , " INTERLACED_TB " } , \
{ V4L2_FIELD_INTERLACED_BT , " INTERLACED_BT " } )
# define show_timecode_type(type) \
__print_symbolic ( type , \
{ V4L2_TC_TYPE_24FPS , " 24FPS " } , \
{ V4L2_TC_TYPE_25FPS , " 25FPS " } , \
{ V4L2_TC_TYPE_30FPS , " 30FPS " } , \
{ V4L2_TC_TYPE_50FPS , " 50FPS " } , \
{ V4L2_TC_TYPE_60FPS , " 60FPS " } )
# define show_flags(flags) \
__print_flags ( flags , " | " , \
{ V4L2_BUF_FLAG_MAPPED , " MAPPED " } , \
{ V4L2_BUF_FLAG_QUEUED , " QUEUED " } , \
{ V4L2_BUF_FLAG_DONE , " DONE " } , \
{ V4L2_BUF_FLAG_KEYFRAME , " KEYFRAME " } , \
{ V4L2_BUF_FLAG_PFRAME , " PFRAME " } , \
{ V4L2_BUF_FLAG_BFRAME , " BFRAME " } , \
{ V4L2_BUF_FLAG_ERROR , " ERROR " } , \
{ V4L2_BUF_FLAG_TIMECODE , " TIMECODE " } , \
{ V4L2_BUF_FLAG_PREPARED , " PREPARED " } , \
{ V4L2_BUF_FLAG_NO_CACHE_INVALIDATE , " NO_CACHE_INVALIDATE " } , \
{ V4L2_BUF_FLAG_NO_CACHE_CLEAN , " NO_CACHE_CLEAN " } , \
{ V4L2_BUF_FLAG_TIMESTAMP_MASK , " TIMESTAMP_MASK " } , \
{ V4L2_BUF_FLAG_TIMESTAMP_UNKNOWN , " TIMESTAMP_UNKNOWN " } , \
{ V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC , " TIMESTAMP_MONOTONIC " } , \
{ V4L2_BUF_FLAG_TIMESTAMP_COPY , " TIMESTAMP_COPY " } )
# define show_timecode_flags(flags) \
__print_flags ( flags , " | " , \
{ V4L2_TC_FLAG_DROPFRAME , " DROPFRAME " } , \
{ V4L2_TC_FLAG_COLORFRAME , " COLORFRAME " } , \
{ V4L2_TC_USERBITS_USERDEFINED , " USERBITS_USERDEFINED " } , \
{ V4L2_TC_USERBITS_8BITCHARS , " USERBITS_8BITCHARS " } )
# define V4L2_TRACE_EVENT(event_name) \
TRACE_EVENT ( event_name , \
TP_PROTO ( int minor , struct v4l2_buffer * buf ) , \
\
TP_ARGS ( minor , buf ) , \
\
TP_STRUCT__entry ( \
__field ( int , minor ) \
__field ( u32 , index ) \
__field ( u32 , type ) \
__field ( u32 , bytesused ) \
__field ( u32 , flags ) \
__field ( u32 , field ) \
__field ( s64 , timestamp ) \
__field ( u32 , timecode_type ) \
__field ( u32 , timecode_flags ) \
__field ( u8 , timecode_frames ) \
__field ( u8 , timecode_seconds ) \
__field ( u8 , timecode_minutes ) \
__field ( u8 , timecode_hours ) \
__field ( u8 , timecode_userbits0 ) \
__field ( u8 , timecode_userbits1 ) \
__field ( u8 , timecode_userbits2 ) \
__field ( u8 , timecode_userbits3 ) \
__field ( u32 , sequence ) \
) , \
\
TP_fast_assign ( \
__entry - > minor = minor ; \
__entry - > index = buf - > index ; \
__entry - > type = buf - > type ; \
__entry - > bytesused = buf - > bytesused ; \
__entry - > flags = buf - > flags ; \
__entry - > field = buf - > field ; \
__entry - > timestamp = \
timeval_to_ns ( & buf - > timestamp ) ; \
__entry - > timecode_type = buf - > timecode . type ; \
__entry - > timecode_flags = buf - > timecode . flags ; \
__entry - > timecode_frames = \
buf - > timecode . frames ; \
__entry - > timecode_seconds = \
buf - > timecode . seconds ; \
__entry - > timecode_minutes = \
buf - > timecode . minutes ; \
__entry - > timecode_hours = buf - > timecode . hours ; \
__entry - > timecode_userbits0 = \
buf - > timecode . userbits [ 0 ] ; \
__entry - > timecode_userbits1 = \
buf - > timecode . userbits [ 1 ] ; \
__entry - > timecode_userbits2 = \
buf - > timecode . userbits [ 2 ] ; \
__entry - > timecode_userbits3 = \
buf - > timecode . userbits [ 3 ] ; \
__entry - > sequence = buf - > sequence ; \
) , \
\
TP_printk ( " minor = %d, index = %u, type = %s, " \
" bytesused = %u, flags = %s, " \
" field = %s, timestamp = %llu, timecode = { " \
" type = %s, flags = %s, frames = %u, " \
" seconds = %u, minutes = %u, hours = %u, " \
" userbits = { %u %u %u %u } }, " \
" sequence = %u " , __entry - > minor , \
__entry - > index , show_type ( __entry - > type ) , \
__entry - > bytesused , \
show_flags ( __entry - > flags ) , \
show_field ( __entry - > field ) , \
__entry - > timestamp , \
show_timecode_type ( __entry - > timecode_type ) , \
show_timecode_flags ( __entry - > timecode_flags ) , \
__entry - > timecode_frames , \
__entry - > timecode_seconds , \
__entry - > timecode_minutes , \
__entry - > timecode_hours , \
__entry - > timecode_userbits0 , \
__entry - > timecode_userbits1 , \
__entry - > timecode_userbits2 , \
__entry - > timecode_userbits3 , \
__entry - > sequence \
) \
)
V4L2_TRACE_EVENT ( v4l2_dqbuf ) ;
V4L2_TRACE_EVENT ( v4l2_qbuf ) ;
# endif /* if !defined(_TRACE_V4L2_H) || defined(TRACE_HEADER_MULTI_READ) */
/* This part must be outside protection */
# include <trace/define_trace.h>