xref: /linux/drivers/gpu/drm/drm_trace.h (revision 28336be568bb473d16ba80db0801276fb4f1bbe5)
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