]> Git Repo - linux.git/blob - drivers/gpu/drm/i915/display/intel_display_trace.h
net: wan: Add framer framework support
[linux.git] / drivers / gpu / drm / i915 / display / intel_display_trace.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * Copyright © 2021 Intel Corporation
4  */
5
6 #undef TRACE_SYSTEM
7 #define TRACE_SYSTEM i915
8
9 #if !defined(__INTEL_DISPLAY_TRACE_H__) || defined(TRACE_HEADER_MULTI_READ)
10 #define __INTEL_DISPLAY_TRACE_H__
11
12 #include <linux/string_helpers.h>
13 #include <linux/types.h>
14 #include <linux/tracepoint.h>
15
16 #include "i915_drv.h"
17 #include "intel_crtc.h"
18 #include "intel_display_types.h"
19 #include "intel_vblank.h"
20
21 #define __dev_name_i915(i915) dev_name((i915)->drm.dev)
22 #define __dev_name_kms(obj) dev_name((obj)->base.dev->dev)
23
24 TRACE_EVENT(intel_pipe_enable,
25             TP_PROTO(struct intel_crtc *crtc),
26             TP_ARGS(crtc),
27
28             TP_STRUCT__entry(
29                              __string(dev, __dev_name_kms(crtc))
30                              __array(u32, frame, 3)
31                              __array(u32, scanline, 3)
32                              __field(enum pipe, pipe)
33                              ),
34             TP_fast_assign(
35                            struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
36                            struct intel_crtc *it__;
37                            __assign_str(dev, __dev_name_kms(crtc));
38                            for_each_intel_crtc(&dev_priv->drm, it__) {
39                                    __entry->frame[it__->pipe] = intel_crtc_get_vblank_counter(it__);
40                                    __entry->scanline[it__->pipe] = intel_get_crtc_scanline(it__);
41                            }
42                            __entry->pipe = crtc->pipe;
43                            ),
44
45             TP_printk("dev %s, pipe %c enable, pipe A: frame=%u, scanline=%u, pipe B: frame=%u, scanline=%u, pipe C: frame=%u, scanline=%u",
46                       __get_str(dev), pipe_name(__entry->pipe),
47                       __entry->frame[PIPE_A], __entry->scanline[PIPE_A],
48                       __entry->frame[PIPE_B], __entry->scanline[PIPE_B],
49                       __entry->frame[PIPE_C], __entry->scanline[PIPE_C])
50 );
51
52 TRACE_EVENT(intel_pipe_disable,
53             TP_PROTO(struct intel_crtc *crtc),
54             TP_ARGS(crtc),
55
56             TP_STRUCT__entry(
57                              __string(dev, __dev_name_kms(crtc))
58                              __array(u32, frame, 3)
59                              __array(u32, scanline, 3)
60                              __field(enum pipe, pipe)
61                              ),
62
63             TP_fast_assign(
64                            struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
65                            struct intel_crtc *it__;
66                            __assign_str(dev, __dev_name_kms(crtc));
67                            for_each_intel_crtc(&dev_priv->drm, it__) {
68                                    __entry->frame[it__->pipe] = intel_crtc_get_vblank_counter(it__);
69                                    __entry->scanline[it__->pipe] = intel_get_crtc_scanline(it__);
70                            }
71                            __entry->pipe = crtc->pipe;
72                            ),
73
74             TP_printk("dev %s, pipe %c disable, pipe A: frame=%u, scanline=%u, pipe B: frame=%u, scanline=%u, pipe C: frame=%u, scanline=%u",
75                       __get_str(dev), pipe_name(__entry->pipe),
76                       __entry->frame[PIPE_A], __entry->scanline[PIPE_A],
77                       __entry->frame[PIPE_B], __entry->scanline[PIPE_B],
78                       __entry->frame[PIPE_C], __entry->scanline[PIPE_C])
79 );
80
81 TRACE_EVENT(intel_pipe_crc,
82             TP_PROTO(struct intel_crtc *crtc, const u32 *crcs),
83             TP_ARGS(crtc, crcs),
84
85             TP_STRUCT__entry(
86                              __string(dev, __dev_name_kms(crtc))
87                              __field(enum pipe, pipe)
88                              __field(u32, frame)
89                              __field(u32, scanline)
90                              __array(u32, crcs, 5)
91                              ),
92
93             TP_fast_assign(
94                            __assign_str(dev, __dev_name_kms(crtc));
95                            __entry->pipe = crtc->pipe;
96                            __entry->frame = intel_crtc_get_vblank_counter(crtc);
97                            __entry->scanline = intel_get_crtc_scanline(crtc);
98                            memcpy(__entry->crcs, crcs, sizeof(__entry->crcs));
99                            ),
100
101             TP_printk("dev %s, pipe %c, frame=%u, scanline=%u crc=%08x %08x %08x %08x %08x",
102                       __get_str(dev), pipe_name(__entry->pipe),
103                       __entry->frame, __entry->scanline,
104                       __entry->crcs[0], __entry->crcs[1],
105                       __entry->crcs[2], __entry->crcs[3],
106                       __entry->crcs[4])
107 );
108
109 TRACE_EVENT(intel_cpu_fifo_underrun,
110             TP_PROTO(struct drm_i915_private *dev_priv, enum pipe pipe),
111             TP_ARGS(dev_priv, pipe),
112
113             TP_STRUCT__entry(
114                              __string(dev, __dev_name_i915(dev_priv))
115                              __field(enum pipe, pipe)
116                              __field(u32, frame)
117                              __field(u32, scanline)
118                              ),
119
120             TP_fast_assign(
121                             struct intel_crtc *crtc = intel_crtc_for_pipe(dev_priv, pipe);
122                            __assign_str(dev, __dev_name_kms(crtc));
123                            __entry->pipe = pipe;
124                            __entry->frame = intel_crtc_get_vblank_counter(crtc);
125                            __entry->scanline = intel_get_crtc_scanline(crtc);
126                            ),
127
128             TP_printk("dev %s, pipe %c, frame=%u, scanline=%u",
129                       __get_str(dev), pipe_name(__entry->pipe),
130                       __entry->frame, __entry->scanline)
131 );
132
133 TRACE_EVENT(intel_pch_fifo_underrun,
134             TP_PROTO(struct drm_i915_private *dev_priv, enum pipe pch_transcoder),
135             TP_ARGS(dev_priv, pch_transcoder),
136
137             TP_STRUCT__entry(
138                              __string(dev, __dev_name_i915(dev_priv))
139                              __field(enum pipe, pipe)
140                              __field(u32, frame)
141                              __field(u32, scanline)
142                              ),
143
144             TP_fast_assign(
145                            enum pipe pipe = pch_transcoder;
146                            struct intel_crtc *crtc = intel_crtc_for_pipe(dev_priv, pipe);
147                            __assign_str(dev, __dev_name_i915(dev_priv));
148                            __entry->pipe = pipe;
149                            __entry->frame = intel_crtc_get_vblank_counter(crtc);
150                            __entry->scanline = intel_get_crtc_scanline(crtc);
151                            ),
152
153             TP_printk("dev %s, pch transcoder %c, frame=%u, scanline=%u",
154                       __get_str(dev), pipe_name(__entry->pipe),
155                       __entry->frame, __entry->scanline)
156 );
157
158 TRACE_EVENT(intel_memory_cxsr,
159             TP_PROTO(struct drm_i915_private *dev_priv, bool old, bool new),
160             TP_ARGS(dev_priv, old, new),
161
162             TP_STRUCT__entry(
163                              __string(dev, __dev_name_i915(dev_priv))
164                              __array(u32, frame, 3)
165                              __array(u32, scanline, 3)
166                              __field(bool, old)
167                              __field(bool, new)
168                              ),
169
170             TP_fast_assign(
171                            struct intel_crtc *crtc;
172                            __assign_str(dev, __dev_name_i915(dev_priv));
173                            for_each_intel_crtc(&dev_priv->drm, crtc) {
174                                    __entry->frame[crtc->pipe] = intel_crtc_get_vblank_counter(crtc);
175                                    __entry->scanline[crtc->pipe] = intel_get_crtc_scanline(crtc);
176                            }
177                            __entry->old = old;
178                            __entry->new = new;
179                            ),
180
181             TP_printk("dev %s, cxsr %s->%s, pipe A: frame=%u, scanline=%u, pipe B: frame=%u, scanline=%u, pipe C: frame=%u, scanline=%u",
182                       __get_str(dev), str_on_off(__entry->old), str_on_off(__entry->new),
183                       __entry->frame[PIPE_A], __entry->scanline[PIPE_A],
184                       __entry->frame[PIPE_B], __entry->scanline[PIPE_B],
185                       __entry->frame[PIPE_C], __entry->scanline[PIPE_C])
186 );
187
188 TRACE_EVENT(g4x_wm,
189             TP_PROTO(struct intel_crtc *crtc, const struct g4x_wm_values *wm),
190             TP_ARGS(crtc, wm),
191
192             TP_STRUCT__entry(
193                              __string(dev, __dev_name_kms(crtc))
194                              __field(enum pipe, pipe)
195                              __field(u32, frame)
196                              __field(u32, scanline)
197                              __field(u16, primary)
198                              __field(u16, sprite)
199                              __field(u16, cursor)
200                              __field(u16, sr_plane)
201                              __field(u16, sr_cursor)
202                              __field(u16, sr_fbc)
203                              __field(u16, hpll_plane)
204                              __field(u16, hpll_cursor)
205                              __field(u16, hpll_fbc)
206                              __field(bool, cxsr)
207                              __field(bool, hpll)
208                              __field(bool, fbc)
209                              ),
210
211             TP_fast_assign(
212                            __assign_str(dev, __dev_name_kms(crtc));
213                            __entry->pipe = crtc->pipe;
214                            __entry->frame = intel_crtc_get_vblank_counter(crtc);
215                            __entry->scanline = intel_get_crtc_scanline(crtc);
216                            __entry->primary = wm->pipe[crtc->pipe].plane[PLANE_PRIMARY];
217                            __entry->sprite = wm->pipe[crtc->pipe].plane[PLANE_SPRITE0];
218                            __entry->cursor = wm->pipe[crtc->pipe].plane[PLANE_CURSOR];
219                            __entry->sr_plane = wm->sr.plane;
220                            __entry->sr_cursor = wm->sr.cursor;
221                            __entry->sr_fbc = wm->sr.fbc;
222                            __entry->hpll_plane = wm->hpll.plane;
223                            __entry->hpll_cursor = wm->hpll.cursor;
224                            __entry->hpll_fbc = wm->hpll.fbc;
225                            __entry->cxsr = wm->cxsr;
226                            __entry->hpll = wm->hpll_en;
227                            __entry->fbc = wm->fbc_en;
228                            ),
229
230             TP_printk("dev %s, pipe %c, frame=%u, scanline=%u, wm %d/%d/%d, sr %s/%d/%d/%d, hpll %s/%d/%d/%d, fbc %s",
231                       __get_str(dev), pipe_name(__entry->pipe),
232                       __entry->frame, __entry->scanline,
233                       __entry->primary, __entry->sprite, __entry->cursor,
234                       str_yes_no(__entry->cxsr), __entry->sr_plane, __entry->sr_cursor, __entry->sr_fbc,
235                       str_yes_no(__entry->hpll), __entry->hpll_plane, __entry->hpll_cursor, __entry->hpll_fbc,
236                       str_yes_no(__entry->fbc))
237 );
238
239 TRACE_EVENT(vlv_wm,
240             TP_PROTO(struct intel_crtc *crtc, const struct vlv_wm_values *wm),
241             TP_ARGS(crtc, wm),
242
243             TP_STRUCT__entry(
244                              __string(dev, __dev_name_kms(crtc))
245                              __field(enum pipe, pipe)
246                              __field(u32, frame)
247                              __field(u32, scanline)
248                              __field(u32, level)
249                              __field(u32, cxsr)
250                              __field(u32, primary)
251                              __field(u32, sprite0)
252                              __field(u32, sprite1)
253                              __field(u32, cursor)
254                              __field(u32, sr_plane)
255                              __field(u32, sr_cursor)
256                              ),
257
258             TP_fast_assign(
259                            __assign_str(dev, __dev_name_kms(crtc));
260                            __entry->pipe = crtc->pipe;
261                            __entry->frame = intel_crtc_get_vblank_counter(crtc);
262                            __entry->scanline = intel_get_crtc_scanline(crtc);
263                            __entry->level = wm->level;
264                            __entry->cxsr = wm->cxsr;
265                            __entry->primary = wm->pipe[crtc->pipe].plane[PLANE_PRIMARY];
266                            __entry->sprite0 = wm->pipe[crtc->pipe].plane[PLANE_SPRITE0];
267                            __entry->sprite1 = wm->pipe[crtc->pipe].plane[PLANE_SPRITE1];
268                            __entry->cursor = wm->pipe[crtc->pipe].plane[PLANE_CURSOR];
269                            __entry->sr_plane = wm->sr.plane;
270                            __entry->sr_cursor = wm->sr.cursor;
271                            ),
272
273             TP_printk("dev %s, pipe %c, frame=%u, scanline=%u, level=%d, cxsr=%d, wm %d/%d/%d/%d, sr %d/%d",
274                       __get_str(dev), pipe_name(__entry->pipe),
275                       __entry->frame, __entry->scanline,
276                       __entry->level, __entry->cxsr,
277                       __entry->primary, __entry->sprite0, __entry->sprite1, __entry->cursor,
278                       __entry->sr_plane, __entry->sr_cursor)
279 );
280
281 TRACE_EVENT(vlv_fifo_size,
282             TP_PROTO(struct intel_crtc *crtc, u32 sprite0_start, u32 sprite1_start, u32 fifo_size),
283             TP_ARGS(crtc, sprite0_start, sprite1_start, fifo_size),
284
285             TP_STRUCT__entry(
286                              __string(dev, __dev_name_kms(crtc))
287                              __field(enum pipe, pipe)
288                              __field(u32, frame)
289                              __field(u32, scanline)
290                              __field(u32, sprite0_start)
291                              __field(u32, sprite1_start)
292                              __field(u32, fifo_size)
293                              ),
294
295             TP_fast_assign(
296                            __assign_str(dev, __dev_name_kms(crtc));
297                            __entry->pipe = crtc->pipe;
298                            __entry->frame = intel_crtc_get_vblank_counter(crtc);
299                            __entry->scanline = intel_get_crtc_scanline(crtc);
300                            __entry->sprite0_start = sprite0_start;
301                            __entry->sprite1_start = sprite1_start;
302                            __entry->fifo_size = fifo_size;
303                            ),
304
305             TP_printk("dev %s, pipe %c, frame=%u, scanline=%u, %d/%d/%d",
306                       __get_str(dev), pipe_name(__entry->pipe),
307                       __entry->frame, __entry->scanline,
308                       __entry->sprite0_start, __entry->sprite1_start, __entry->fifo_size)
309 );
310
311 TRACE_EVENT(intel_plane_update_noarm,
312             TP_PROTO(struct intel_plane *plane, struct intel_crtc *crtc),
313             TP_ARGS(plane, crtc),
314
315             TP_STRUCT__entry(
316                              __string(dev, __dev_name_kms(plane))
317                              __field(enum pipe, pipe)
318                              __field(u32, frame)
319                              __field(u32, scanline)
320                              __array(int, src, 4)
321                              __array(int, dst, 4)
322                              __string(name, plane->base.name)
323                              ),
324
325             TP_fast_assign(
326                            __assign_str(dev, __dev_name_kms(plane));
327                            __assign_str(name, plane->base.name);
328                            __entry->pipe = crtc->pipe;
329                            __entry->frame = intel_crtc_get_vblank_counter(crtc);
330                            __entry->scanline = intel_get_crtc_scanline(crtc);
331                            memcpy(__entry->src, &plane->base.state->src, sizeof(__entry->src));
332                            memcpy(__entry->dst, &plane->base.state->dst, sizeof(__entry->dst));
333                            ),
334
335             TP_printk("dev %s, pipe %c, plane %s, frame=%u, scanline=%u, " DRM_RECT_FP_FMT " -> " DRM_RECT_FMT,
336                       __get_str(dev), pipe_name(__entry->pipe), __get_str(name),
337                       __entry->frame, __entry->scanline,
338                       DRM_RECT_FP_ARG((const struct drm_rect *)__entry->src),
339                       DRM_RECT_ARG((const struct drm_rect *)__entry->dst))
340 );
341
342 TRACE_EVENT(intel_plane_update_arm,
343             TP_PROTO(struct intel_plane *plane, struct intel_crtc *crtc),
344             TP_ARGS(plane, crtc),
345
346             TP_STRUCT__entry(
347                              __string(dev, __dev_name_kms(plane))
348                              __field(enum pipe, pipe)
349                              __field(u32, frame)
350                              __field(u32, scanline)
351                              __array(int, src, 4)
352                              __array(int, dst, 4)
353                              __string(name, plane->base.name)
354                              ),
355
356             TP_fast_assign(
357                            __assign_str(dev, __dev_name_kms(plane));
358                            __assign_str(name, plane->base.name);
359                            __entry->pipe = crtc->pipe;
360                            __entry->frame = intel_crtc_get_vblank_counter(crtc);
361                            __entry->scanline = intel_get_crtc_scanline(crtc);
362                            memcpy(__entry->src, &plane->base.state->src, sizeof(__entry->src));
363                            memcpy(__entry->dst, &plane->base.state->dst, sizeof(__entry->dst));
364                            ),
365
366             TP_printk("dev %s, pipe %c, plane %s, frame=%u, scanline=%u, " DRM_RECT_FP_FMT " -> " DRM_RECT_FMT,
367                       __get_str(dev), pipe_name(__entry->pipe), __get_str(name),
368                       __entry->frame, __entry->scanline,
369                       DRM_RECT_FP_ARG((const struct drm_rect *)__entry->src),
370                       DRM_RECT_ARG((const struct drm_rect *)__entry->dst))
371 );
372
373 TRACE_EVENT(intel_plane_disable_arm,
374             TP_PROTO(struct intel_plane *plane, struct intel_crtc *crtc),
375             TP_ARGS(plane, crtc),
376
377             TP_STRUCT__entry(
378                              __string(dev, __dev_name_kms(plane))
379                              __field(enum pipe, pipe)
380                              __field(u32, frame)
381                              __field(u32, scanline)
382                              __string(name, plane->base.name)
383                              ),
384
385             TP_fast_assign(
386                            __assign_str(dev, __dev_name_kms(plane));
387                            __assign_str(name, plane->base.name);
388                            __entry->pipe = crtc->pipe;
389                            __entry->frame = intel_crtc_get_vblank_counter(crtc);
390                            __entry->scanline = intel_get_crtc_scanline(crtc);
391                            ),
392
393             TP_printk("dev %s, pipe %c, plane %s, frame=%u, scanline=%u",
394                       __get_str(dev), pipe_name(__entry->pipe), __get_str(name),
395                       __entry->frame, __entry->scanline)
396 );
397
398 TRACE_EVENT(intel_fbc_activate,
399             TP_PROTO(struct intel_plane *plane),
400             TP_ARGS(plane),
401
402             TP_STRUCT__entry(
403                              __string(dev, __dev_name_kms(plane))
404                              __string(name, plane->base.name)
405                              __field(enum pipe, pipe)
406                              __field(u32, frame)
407                              __field(u32, scanline)
408                              ),
409
410             TP_fast_assign(
411                            struct intel_crtc *crtc = intel_crtc_for_pipe(to_i915(plane->base.dev),
412                                                                          plane->pipe);
413                            __assign_str(dev, __dev_name_kms(plane));
414                            __assign_str(name, plane->base.name)
415                            __entry->pipe = crtc->pipe;
416                            __entry->frame = intel_crtc_get_vblank_counter(crtc);
417                            __entry->scanline = intel_get_crtc_scanline(crtc);
418                            ),
419
420             TP_printk("dev %s, pipe %c, plane %s, frame=%u, scanline=%u",
421                       __get_str(dev), pipe_name(__entry->pipe), __get_str(name),
422                       __entry->frame, __entry->scanline)
423 );
424
425 TRACE_EVENT(intel_fbc_deactivate,
426             TP_PROTO(struct intel_plane *plane),
427             TP_ARGS(plane),
428
429             TP_STRUCT__entry(
430                              __string(dev, __dev_name_kms(plane))
431                              __string(name, plane->base.name)
432                              __field(enum pipe, pipe)
433                              __field(u32, frame)
434                              __field(u32, scanline)
435                              ),
436
437             TP_fast_assign(
438                            struct intel_crtc *crtc = intel_crtc_for_pipe(to_i915(plane->base.dev),
439                                                                          plane->pipe);
440                            __assign_str(dev, __dev_name_kms(plane));
441                            __assign_str(name, plane->base.name)
442                            __entry->pipe = crtc->pipe;
443                            __entry->frame = intel_crtc_get_vblank_counter(crtc);
444                            __entry->scanline = intel_get_crtc_scanline(crtc);
445                            ),
446
447             TP_printk("dev %s, pipe %c, plane %s, frame=%u, scanline=%u",
448                       __get_str(dev), pipe_name(__entry->pipe), __get_str(name),
449                       __entry->frame, __entry->scanline)
450 );
451
452 TRACE_EVENT(intel_fbc_nuke,
453             TP_PROTO(struct intel_plane *plane),
454             TP_ARGS(plane),
455
456             TP_STRUCT__entry(
457                              __string(dev, __dev_name_kms(plane))
458                              __string(name, plane->base.name)
459                              __field(enum pipe, pipe)
460                              __field(u32, frame)
461                              __field(u32, scanline)
462                              ),
463
464             TP_fast_assign(
465                            struct intel_crtc *crtc = intel_crtc_for_pipe(to_i915(plane->base.dev),
466                                                                          plane->pipe);
467                            __assign_str(dev, __dev_name_kms(plane));
468                            __assign_str(name, plane->base.name)
469                            __entry->pipe = crtc->pipe;
470                            __entry->frame = intel_crtc_get_vblank_counter(crtc);
471                            __entry->scanline = intel_get_crtc_scanline(crtc);
472                            ),
473
474             TP_printk("dev %s, pipe %c, plane %s, frame=%u, scanline=%u",
475                       __get_str(dev), pipe_name(__entry->pipe), __get_str(name),
476                       __entry->frame, __entry->scanline)
477 );
478
479 TRACE_EVENT(intel_crtc_vblank_work_start,
480             TP_PROTO(struct intel_crtc *crtc),
481             TP_ARGS(crtc),
482
483             TP_STRUCT__entry(
484                              __string(dev, __dev_name_kms(crtc))
485                              __field(enum pipe, pipe)
486                              __field(u32, frame)
487                              __field(u32, scanline)
488                              ),
489
490             TP_fast_assign(
491                            __assign_str(dev, __dev_name_kms(crtc));
492                            __entry->pipe = crtc->pipe;
493                            __entry->frame = intel_crtc_get_vblank_counter(crtc);
494                            __entry->scanline = intel_get_crtc_scanline(crtc);
495                            ),
496
497             TP_printk("dev %s, pipe %c, frame=%u, scanline=%u",
498                       __get_str(dev), pipe_name(__entry->pipe),
499                       __entry->frame, __entry->scanline)
500 );
501
502 TRACE_EVENT(intel_crtc_vblank_work_end,
503             TP_PROTO(struct intel_crtc *crtc),
504             TP_ARGS(crtc),
505
506             TP_STRUCT__entry(
507                              __string(dev, __dev_name_kms(crtc))
508                              __field(enum pipe, pipe)
509                              __field(u32, frame)
510                              __field(u32, scanline)
511                              ),
512
513             TP_fast_assign(
514                            __assign_str(dev, __dev_name_kms(crtc));
515                            __entry->pipe = crtc->pipe;
516                            __entry->frame = intel_crtc_get_vblank_counter(crtc);
517                            __entry->scanline = intel_get_crtc_scanline(crtc);
518                            ),
519
520             TP_printk("dev %s, pipe %c, frame=%u, scanline=%u",
521                       __get_str(dev), pipe_name(__entry->pipe),
522                       __entry->frame, __entry->scanline)
523 );
524
525 TRACE_EVENT(intel_pipe_update_start,
526             TP_PROTO(struct intel_crtc *crtc),
527             TP_ARGS(crtc),
528
529             TP_STRUCT__entry(
530                              __string(dev, __dev_name_kms(crtc))
531                              __field(enum pipe, pipe)
532                              __field(u32, frame)
533                              __field(u32, scanline)
534                              __field(u32, min)
535                              __field(u32, max)
536                              ),
537
538             TP_fast_assign(
539                            __assign_str(dev, __dev_name_kms(crtc));
540                            __entry->pipe = crtc->pipe;
541                            __entry->frame = intel_crtc_get_vblank_counter(crtc);
542                            __entry->scanline = intel_get_crtc_scanline(crtc);
543                            __entry->min = crtc->debug.min_vbl;
544                            __entry->max = crtc->debug.max_vbl;
545                            ),
546
547             TP_printk("dev %s, pipe %c, frame=%u, scanline=%u, min=%u, max=%u",
548                       __get_str(dev), pipe_name(__entry->pipe),
549                       __entry->frame, __entry->scanline,
550                       __entry->min, __entry->max)
551 );
552
553 TRACE_EVENT(intel_pipe_update_vblank_evaded,
554             TP_PROTO(struct intel_crtc *crtc),
555             TP_ARGS(crtc),
556
557             TP_STRUCT__entry(
558                              __string(dev, __dev_name_kms(crtc))
559                              __field(enum pipe, pipe)
560                              __field(u32, frame)
561                              __field(u32, scanline)
562                              __field(u32, min)
563                              __field(u32, max)
564                              ),
565
566             TP_fast_assign(
567                            __assign_str(dev, __dev_name_kms(crtc));
568                            __entry->pipe = crtc->pipe;
569                            __entry->frame = crtc->debug.start_vbl_count;
570                            __entry->scanline = crtc->debug.scanline_start;
571                            __entry->min = crtc->debug.min_vbl;
572                            __entry->max = crtc->debug.max_vbl;
573                            ),
574
575             TP_printk("dev %s, pipe %c, frame=%u, scanline=%u, min=%u, max=%u",
576                       __get_str(dev), pipe_name(__entry->pipe),
577                       __entry->frame, __entry->scanline,
578                       __entry->min, __entry->max)
579 );
580
581 TRACE_EVENT(intel_pipe_update_end,
582             TP_PROTO(struct intel_crtc *crtc, u32 frame, int scanline_end),
583             TP_ARGS(crtc, frame, scanline_end),
584
585             TP_STRUCT__entry(
586                              __string(dev, __dev_name_kms(crtc))
587                              __field(enum pipe, pipe)
588                              __field(u32, frame)
589                              __field(u32, scanline)
590                              ),
591
592             TP_fast_assign(
593                            __assign_str(dev, __dev_name_kms(crtc));
594                            __entry->pipe = crtc->pipe;
595                            __entry->frame = frame;
596                            __entry->scanline = scanline_end;
597                            ),
598
599             TP_printk("dev %s, pipe %c, frame=%u, scanline=%u",
600                       __get_str(dev), pipe_name(__entry->pipe),
601                       __entry->frame, __entry->scanline)
602 );
603
604 TRACE_EVENT(intel_frontbuffer_invalidate,
605             TP_PROTO(struct drm_i915_private *i915,
606                      unsigned int frontbuffer_bits, unsigned int origin),
607             TP_ARGS(i915, frontbuffer_bits, origin),
608
609             TP_STRUCT__entry(
610                              __string(dev, __dev_name_i915(i915))
611                              __field(unsigned int, frontbuffer_bits)
612                              __field(unsigned int, origin)
613                              ),
614
615             TP_fast_assign(
616                            __assign_str(dev, __dev_name_i915(i915));
617                            __entry->frontbuffer_bits = frontbuffer_bits;
618                            __entry->origin = origin;
619                            ),
620
621             TP_printk("dev %s, frontbuffer_bits=0x%08x, origin=%u",
622                       __get_str(dev), __entry->frontbuffer_bits, __entry->origin)
623 );
624
625 TRACE_EVENT(intel_frontbuffer_flush,
626             TP_PROTO(struct drm_i915_private *i915,
627                      unsigned int frontbuffer_bits, unsigned int origin),
628             TP_ARGS(i915, frontbuffer_bits, origin),
629
630             TP_STRUCT__entry(
631                              __string(dev, __dev_name_i915(i915))
632                              __field(unsigned int, frontbuffer_bits)
633                              __field(unsigned int, origin)
634                              ),
635
636             TP_fast_assign(
637                            __assign_str(dev, __dev_name_i915(i915));
638                            __entry->frontbuffer_bits = frontbuffer_bits;
639                            __entry->origin = origin;
640                            ),
641
642             TP_printk("dev %s, frontbuffer_bits=0x%08x, origin=%u",
643                       __get_str(dev), __entry->frontbuffer_bits, __entry->origin)
644 );
645
646 #endif /* __INTEL_DISPLAY_TRACE_H__ */
647
648 /* This part must be outside protection */
649 #undef TRACE_INCLUDE_PATH
650 #undef TRACE_INCLUDE_FILE
651 #define TRACE_INCLUDE_PATH ../../drivers/gpu/drm/i915/display
652 #define TRACE_INCLUDE_FILE intel_display_trace
653 #include <trace/define_trace.h>
This page took 0.075011 seconds and 4 git commands to generate.