162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci#if !defined(_DRM_TRACE_H_) || defined(TRACE_HEADER_MULTI_READ)
362306a36Sopenharmony_ci#define _DRM_TRACE_H_
462306a36Sopenharmony_ci
562306a36Sopenharmony_ci#include <linux/stringify.h>
662306a36Sopenharmony_ci#include <linux/types.h>
762306a36Sopenharmony_ci#include <linux/tracepoint.h>
862306a36Sopenharmony_ci
962306a36Sopenharmony_cistruct drm_file;
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ci#undef TRACE_SYSTEM
1262306a36Sopenharmony_ci#define TRACE_SYSTEM drm
1362306a36Sopenharmony_ci#define TRACE_INCLUDE_FILE drm_trace
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ciTRACE_EVENT(drm_vblank_event,
1662306a36Sopenharmony_ci	    TP_PROTO(int crtc, unsigned int seq, ktime_t time, bool high_prec),
1762306a36Sopenharmony_ci	    TP_ARGS(crtc, seq, time, high_prec),
1862306a36Sopenharmony_ci	    TP_STRUCT__entry(
1962306a36Sopenharmony_ci		    __field(int, crtc)
2062306a36Sopenharmony_ci		    __field(unsigned int, seq)
2162306a36Sopenharmony_ci		    __field(ktime_t, time)
2262306a36Sopenharmony_ci		    __field(bool, high_prec)
2362306a36Sopenharmony_ci		    ),
2462306a36Sopenharmony_ci	    TP_fast_assign(
2562306a36Sopenharmony_ci		    __entry->crtc = crtc;
2662306a36Sopenharmony_ci		    __entry->seq = seq;
2762306a36Sopenharmony_ci		    __entry->time = time;
2862306a36Sopenharmony_ci		    __entry->high_prec = high_prec;
2962306a36Sopenharmony_ci			),
3062306a36Sopenharmony_ci	    TP_printk("crtc=%d, seq=%u, time=%lld, high-prec=%s",
3162306a36Sopenharmony_ci			__entry->crtc, __entry->seq, __entry->time,
3262306a36Sopenharmony_ci			__entry->high_prec ? "true" : "false")
3362306a36Sopenharmony_ci);
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ciTRACE_EVENT(drm_vblank_event_queued,
3662306a36Sopenharmony_ci	    TP_PROTO(struct drm_file *file, int crtc, unsigned int seq),
3762306a36Sopenharmony_ci	    TP_ARGS(file, crtc, seq),
3862306a36Sopenharmony_ci	    TP_STRUCT__entry(
3962306a36Sopenharmony_ci		    __field(struct drm_file *, file)
4062306a36Sopenharmony_ci		    __field(int, crtc)
4162306a36Sopenharmony_ci		    __field(unsigned int, seq)
4262306a36Sopenharmony_ci		    ),
4362306a36Sopenharmony_ci	    TP_fast_assign(
4462306a36Sopenharmony_ci		    __entry->file = file;
4562306a36Sopenharmony_ci		    __entry->crtc = crtc;
4662306a36Sopenharmony_ci		    __entry->seq = seq;
4762306a36Sopenharmony_ci		    ),
4862306a36Sopenharmony_ci	    TP_printk("file=%p, crtc=%d, seq=%u", __entry->file, __entry->crtc, \
4962306a36Sopenharmony_ci		      __entry->seq)
5062306a36Sopenharmony_ci);
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ciTRACE_EVENT(drm_vblank_event_delivered,
5362306a36Sopenharmony_ci	    TP_PROTO(struct drm_file *file, int crtc, unsigned int seq),
5462306a36Sopenharmony_ci	    TP_ARGS(file, crtc, seq),
5562306a36Sopenharmony_ci	    TP_STRUCT__entry(
5662306a36Sopenharmony_ci		    __field(struct drm_file *, file)
5762306a36Sopenharmony_ci		    __field(int, crtc)
5862306a36Sopenharmony_ci		    __field(unsigned int, seq)
5962306a36Sopenharmony_ci		    ),
6062306a36Sopenharmony_ci	    TP_fast_assign(
6162306a36Sopenharmony_ci		    __entry->file = file;
6262306a36Sopenharmony_ci		    __entry->crtc = crtc;
6362306a36Sopenharmony_ci		    __entry->seq = seq;
6462306a36Sopenharmony_ci		    ),
6562306a36Sopenharmony_ci	    TP_printk("file=%p, crtc=%d, seq=%u", __entry->file, __entry->crtc, \
6662306a36Sopenharmony_ci		      __entry->seq)
6762306a36Sopenharmony_ci);
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_ci#endif /* _DRM_TRACE_H_ */
7062306a36Sopenharmony_ci
7162306a36Sopenharmony_ci/* This part must be outside protection */
7262306a36Sopenharmony_ci#undef TRACE_INCLUDE_PATH
7362306a36Sopenharmony_ci#define TRACE_INCLUDE_PATH ../../drivers/gpu/drm
7462306a36Sopenharmony_ci#include <trace/define_trace.h>
75