1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */ 2ac2874b9SJesse Barnes #if !defined(_DRM_TRACE_H_) || defined(TRACE_HEADER_MULTI_READ) 3ac2874b9SJesse Barnes #define _DRM_TRACE_H_ 4ac2874b9SJesse Barnes 5ac2874b9SJesse Barnes #include <linux/stringify.h> 6ac2874b9SJesse Barnes #include <linux/types.h> 7ac2874b9SJesse Barnes #include <linux/tracepoint.h> 8ac2874b9SJesse Barnes 934112dedSSam Ravnborg struct drm_file; 1034112dedSSam Ravnborg 11ac2874b9SJesse Barnes #undef TRACE_SYSTEM 12ac2874b9SJesse Barnes #define TRACE_SYSTEM drm 13ac2874b9SJesse Barnes #define TRACE_INCLUDE_FILE drm_trace 14ac2874b9SJesse Barnes 15ac2874b9SJesse Barnes TRACE_EVENT(drm_vblank_event, 16*6914f8ebSHeinrich Fink TP_PROTO(int crtc, unsigned int seq, ktime_t time, bool high_prec), 17*6914f8ebSHeinrich Fink TP_ARGS(crtc, seq, time, high_prec), 18ac2874b9SJesse Barnes TP_STRUCT__entry( 19ac2874b9SJesse Barnes __field(int, crtc) 20ac2874b9SJesse Barnes __field(unsigned int, seq) 21*6914f8ebSHeinrich Fink __field(ktime_t, time) 22*6914f8ebSHeinrich Fink __field(bool, high_prec) 23ac2874b9SJesse Barnes ), 24ac2874b9SJesse Barnes TP_fast_assign( 25ac2874b9SJesse Barnes __entry->crtc = crtc; 26ac2874b9SJesse Barnes __entry->seq = seq; 27*6914f8ebSHeinrich Fink __entry->time = time; 28*6914f8ebSHeinrich Fink __entry->high_prec = high_prec; 29ac2874b9SJesse Barnes ), 30*6914f8ebSHeinrich Fink TP_printk("crtc=%d, seq=%u, time=%lld, high-prec=%s", 31*6914f8ebSHeinrich Fink __entry->crtc, __entry->seq, __entry->time, 32*6914f8ebSHeinrich Fink __entry->high_prec ? "true" : "false") 33ac2874b9SJesse Barnes ); 34ac2874b9SJesse Barnes 35b9c2c9aeSJesse Barnes TRACE_EVENT(drm_vblank_event_queued, 367d52cb88SDaniel Vetter TP_PROTO(struct drm_file *file, int crtc, unsigned int seq), 377d52cb88SDaniel Vetter TP_ARGS(file, crtc, seq), 38b9c2c9aeSJesse Barnes TP_STRUCT__entry( 397d52cb88SDaniel Vetter __field(struct drm_file *, file) 40b9c2c9aeSJesse Barnes __field(int, crtc) 41b9c2c9aeSJesse Barnes __field(unsigned int, seq) 42b9c2c9aeSJesse Barnes ), 43b9c2c9aeSJesse Barnes TP_fast_assign( 447d52cb88SDaniel Vetter __entry->file = file; 45b9c2c9aeSJesse Barnes __entry->crtc = crtc; 46b9c2c9aeSJesse Barnes __entry->seq = seq; 47b9c2c9aeSJesse Barnes ), 487d52cb88SDaniel Vetter TP_printk("file=%p, crtc=%d, seq=%u", __entry->file, __entry->crtc, \ 49b9c2c9aeSJesse Barnes __entry->seq) 50b9c2c9aeSJesse Barnes ); 51b9c2c9aeSJesse Barnes 52b9c2c9aeSJesse Barnes TRACE_EVENT(drm_vblank_event_delivered, 537d52cb88SDaniel Vetter TP_PROTO(struct drm_file *file, int crtc, unsigned int seq), 547d52cb88SDaniel Vetter TP_ARGS(file, crtc, seq), 55b9c2c9aeSJesse Barnes TP_STRUCT__entry( 567d52cb88SDaniel Vetter __field(struct drm_file *, file) 57b9c2c9aeSJesse Barnes __field(int, crtc) 58b9c2c9aeSJesse Barnes __field(unsigned int, seq) 59b9c2c9aeSJesse Barnes ), 60b9c2c9aeSJesse Barnes TP_fast_assign( 617d52cb88SDaniel Vetter __entry->file = file; 62b9c2c9aeSJesse Barnes __entry->crtc = crtc; 63b9c2c9aeSJesse Barnes __entry->seq = seq; 64b9c2c9aeSJesse Barnes ), 657d52cb88SDaniel Vetter TP_printk("file=%p, crtc=%d, seq=%u", __entry->file, __entry->crtc, \ 66b9c2c9aeSJesse Barnes __entry->seq) 67b9c2c9aeSJesse Barnes ); 68b9c2c9aeSJesse Barnes 69ac2874b9SJesse Barnes #endif /* _DRM_TRACE_H_ */ 70ac2874b9SJesse Barnes 71ac2874b9SJesse Barnes /* This part must be outside protection */ 72ac2874b9SJesse Barnes #undef TRACE_INCLUDE_PATH 73d99ce553SThierry Reding #define TRACE_INCLUDE_PATH ../../drivers/gpu/drm 74ac2874b9SJesse Barnes #include <trace/define_trace.h> 75