Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 /*
0003  * Copyright © 2021 Intel Corporation
0004  */
0005 
0006 #undef TRACE_SYSTEM
0007 #define TRACE_SYSTEM i915
0008 
0009 #if !defined(__INTEL_DISPLAY_TRACE_H__) || defined(TRACE_HEADER_MULTI_READ)
0010 #define __INTEL_DISPLAY_TRACE_H__
0011 
0012 #include <linux/string_helpers.h>
0013 #include <linux/types.h>
0014 #include <linux/tracepoint.h>
0015 
0016 #include "i915_drv.h"
0017 #include "i915_irq.h"
0018 #include "intel_crtc.h"
0019 #include "intel_display_types.h"
0020 
0021 TRACE_EVENT(intel_pipe_enable,
0022         TP_PROTO(struct intel_crtc *crtc),
0023         TP_ARGS(crtc),
0024 
0025         TP_STRUCT__entry(
0026                  __array(u32, frame, 3)
0027                  __array(u32, scanline, 3)
0028                  __field(enum pipe, pipe)
0029                  ),
0030         TP_fast_assign(
0031                struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
0032                struct intel_crtc *it__;
0033                for_each_intel_crtc(&dev_priv->drm, it__) {
0034                    __entry->frame[it__->pipe] = intel_crtc_get_vblank_counter(it__);
0035                    __entry->scanline[it__->pipe] = intel_get_crtc_scanline(it__);
0036                }
0037                __entry->pipe = crtc->pipe;
0038                ),
0039 
0040         TP_printk("pipe %c enable, pipe A: frame=%u, scanline=%u, pipe B: frame=%u, scanline=%u, pipe C: frame=%u, scanline=%u",
0041               pipe_name(__entry->pipe),
0042               __entry->frame[PIPE_A], __entry->scanline[PIPE_A],
0043               __entry->frame[PIPE_B], __entry->scanline[PIPE_B],
0044               __entry->frame[PIPE_C], __entry->scanline[PIPE_C])
0045 );
0046 
0047 TRACE_EVENT(intel_pipe_disable,
0048         TP_PROTO(struct intel_crtc *crtc),
0049         TP_ARGS(crtc),
0050 
0051         TP_STRUCT__entry(
0052                  __array(u32, frame, 3)
0053                  __array(u32, scanline, 3)
0054                  __field(enum pipe, pipe)
0055                  ),
0056 
0057         TP_fast_assign(
0058                struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
0059                struct intel_crtc *it__;
0060                for_each_intel_crtc(&dev_priv->drm, it__) {
0061                    __entry->frame[it__->pipe] = intel_crtc_get_vblank_counter(it__);
0062                    __entry->scanline[it__->pipe] = intel_get_crtc_scanline(it__);
0063                }
0064                __entry->pipe = crtc->pipe;
0065                ),
0066 
0067         TP_printk("pipe %c disable, pipe A: frame=%u, scanline=%u, pipe B: frame=%u, scanline=%u, pipe C: frame=%u, scanline=%u",
0068               pipe_name(__entry->pipe),
0069               __entry->frame[PIPE_A], __entry->scanline[PIPE_A],
0070               __entry->frame[PIPE_B], __entry->scanline[PIPE_B],
0071               __entry->frame[PIPE_C], __entry->scanline[PIPE_C])
0072 );
0073 
0074 TRACE_EVENT(intel_pipe_crc,
0075         TP_PROTO(struct intel_crtc *crtc, const u32 *crcs),
0076         TP_ARGS(crtc, crcs),
0077 
0078         TP_STRUCT__entry(
0079                  __field(enum pipe, pipe)
0080                  __field(u32, frame)
0081                  __field(u32, scanline)
0082                  __array(u32, crcs, 5)
0083                  ),
0084 
0085         TP_fast_assign(
0086                __entry->pipe = crtc->pipe;
0087                __entry->frame = intel_crtc_get_vblank_counter(crtc);
0088                __entry->scanline = intel_get_crtc_scanline(crtc);
0089                memcpy(__entry->crcs, crcs, sizeof(__entry->crcs));
0090                ),
0091 
0092         TP_printk("pipe %c, frame=%u, scanline=%u crc=%08x %08x %08x %08x %08x",
0093               pipe_name(__entry->pipe), __entry->frame, __entry->scanline,
0094               __entry->crcs[0], __entry->crcs[1], __entry->crcs[2],
0095               __entry->crcs[3], __entry->crcs[4])
0096 );
0097 
0098 TRACE_EVENT(intel_cpu_fifo_underrun,
0099         TP_PROTO(struct drm_i915_private *dev_priv, enum pipe pipe),
0100         TP_ARGS(dev_priv, pipe),
0101 
0102         TP_STRUCT__entry(
0103                  __field(enum pipe, pipe)
0104                  __field(u32, frame)
0105                  __field(u32, scanline)
0106                  ),
0107 
0108         TP_fast_assign(
0109                 struct intel_crtc *crtc = intel_crtc_for_pipe(dev_priv, pipe);
0110                __entry->pipe = pipe;
0111                __entry->frame = intel_crtc_get_vblank_counter(crtc);
0112                __entry->scanline = intel_get_crtc_scanline(crtc);
0113                ),
0114 
0115         TP_printk("pipe %c, frame=%u, scanline=%u",
0116               pipe_name(__entry->pipe),
0117               __entry->frame, __entry->scanline)
0118 );
0119 
0120 TRACE_EVENT(intel_pch_fifo_underrun,
0121         TP_PROTO(struct drm_i915_private *dev_priv, enum pipe pch_transcoder),
0122         TP_ARGS(dev_priv, pch_transcoder),
0123 
0124         TP_STRUCT__entry(
0125                  __field(enum pipe, pipe)
0126                  __field(u32, frame)
0127                  __field(u32, scanline)
0128                  ),
0129 
0130         TP_fast_assign(
0131                enum pipe pipe = pch_transcoder;
0132                struct intel_crtc *crtc = intel_crtc_for_pipe(dev_priv, pipe);
0133                __entry->pipe = pipe;
0134                __entry->frame = intel_crtc_get_vblank_counter(crtc);
0135                __entry->scanline = intel_get_crtc_scanline(crtc);
0136                ),
0137 
0138         TP_printk("pch transcoder %c, frame=%u, scanline=%u",
0139               pipe_name(__entry->pipe),
0140               __entry->frame, __entry->scanline)
0141 );
0142 
0143 TRACE_EVENT(intel_memory_cxsr,
0144         TP_PROTO(struct drm_i915_private *dev_priv, bool old, bool new),
0145         TP_ARGS(dev_priv, old, new),
0146 
0147         TP_STRUCT__entry(
0148                  __array(u32, frame, 3)
0149                  __array(u32, scanline, 3)
0150                  __field(bool, old)
0151                  __field(bool, new)
0152                  ),
0153 
0154         TP_fast_assign(
0155                struct intel_crtc *crtc;
0156                for_each_intel_crtc(&dev_priv->drm, crtc) {
0157                    __entry->frame[crtc->pipe] = intel_crtc_get_vblank_counter(crtc);
0158                    __entry->scanline[crtc->pipe] = intel_get_crtc_scanline(crtc);
0159                }
0160                __entry->old = old;
0161                __entry->new = new;
0162                ),
0163 
0164         TP_printk("%s->%s, pipe A: frame=%u, scanline=%u, pipe B: frame=%u, scanline=%u, pipe C: frame=%u, scanline=%u",
0165               str_on_off(__entry->old), str_on_off(__entry->new),
0166               __entry->frame[PIPE_A], __entry->scanline[PIPE_A],
0167               __entry->frame[PIPE_B], __entry->scanline[PIPE_B],
0168               __entry->frame[PIPE_C], __entry->scanline[PIPE_C])
0169 );
0170 
0171 TRACE_EVENT(g4x_wm,
0172         TP_PROTO(struct intel_crtc *crtc, const struct g4x_wm_values *wm),
0173         TP_ARGS(crtc, wm),
0174 
0175         TP_STRUCT__entry(
0176                  __field(enum pipe, pipe)
0177                  __field(u32, frame)
0178                  __field(u32, scanline)
0179                  __field(u16, primary)
0180                  __field(u16, sprite)
0181                  __field(u16, cursor)
0182                  __field(u16, sr_plane)
0183                  __field(u16, sr_cursor)
0184                  __field(u16, sr_fbc)
0185                  __field(u16, hpll_plane)
0186                  __field(u16, hpll_cursor)
0187                  __field(u16, hpll_fbc)
0188                  __field(bool, cxsr)
0189                  __field(bool, hpll)
0190                  __field(bool, fbc)
0191                  ),
0192 
0193         TP_fast_assign(
0194                __entry->pipe = crtc->pipe;
0195                __entry->frame = intel_crtc_get_vblank_counter(crtc);
0196                __entry->scanline = intel_get_crtc_scanline(crtc);
0197                __entry->primary = wm->pipe[crtc->pipe].plane[PLANE_PRIMARY];
0198                __entry->sprite = wm->pipe[crtc->pipe].plane[PLANE_SPRITE0];
0199                __entry->cursor = wm->pipe[crtc->pipe].plane[PLANE_CURSOR];
0200                __entry->sr_plane = wm->sr.plane;
0201                __entry->sr_cursor = wm->sr.cursor;
0202                __entry->sr_fbc = wm->sr.fbc;
0203                __entry->hpll_plane = wm->hpll.plane;
0204                __entry->hpll_cursor = wm->hpll.cursor;
0205                __entry->hpll_fbc = wm->hpll.fbc;
0206                __entry->cxsr = wm->cxsr;
0207                __entry->hpll = wm->hpll_en;
0208                __entry->fbc = wm->fbc_en;
0209                ),
0210 
0211         TP_printk("pipe %c, frame=%u, scanline=%u, wm %d/%d/%d, sr %s/%d/%d/%d, hpll %s/%d/%d/%d, fbc %s",
0212               pipe_name(__entry->pipe), __entry->frame, __entry->scanline,
0213               __entry->primary, __entry->sprite, __entry->cursor,
0214               str_yes_no(__entry->cxsr), __entry->sr_plane, __entry->sr_cursor, __entry->sr_fbc,
0215               str_yes_no(__entry->hpll), __entry->hpll_plane, __entry->hpll_cursor, __entry->hpll_fbc,
0216               str_yes_no(__entry->fbc))
0217 );
0218 
0219 TRACE_EVENT(vlv_wm,
0220         TP_PROTO(struct intel_crtc *crtc, const struct vlv_wm_values *wm),
0221         TP_ARGS(crtc, wm),
0222 
0223         TP_STRUCT__entry(
0224                  __field(enum pipe, pipe)
0225                  __field(u32, frame)
0226                  __field(u32, scanline)
0227                  __field(u32, level)
0228                  __field(u32, cxsr)
0229                  __field(u32, primary)
0230                  __field(u32, sprite0)
0231                  __field(u32, sprite1)
0232                  __field(u32, cursor)
0233                  __field(u32, sr_plane)
0234                  __field(u32, sr_cursor)
0235                  ),
0236 
0237         TP_fast_assign(
0238                __entry->pipe = crtc->pipe;
0239                __entry->frame = intel_crtc_get_vblank_counter(crtc);
0240                __entry->scanline = intel_get_crtc_scanline(crtc);
0241                __entry->level = wm->level;
0242                __entry->cxsr = wm->cxsr;
0243                __entry->primary = wm->pipe[crtc->pipe].plane[PLANE_PRIMARY];
0244                __entry->sprite0 = wm->pipe[crtc->pipe].plane[PLANE_SPRITE0];
0245                __entry->sprite1 = wm->pipe[crtc->pipe].plane[PLANE_SPRITE1];
0246                __entry->cursor = wm->pipe[crtc->pipe].plane[PLANE_CURSOR];
0247                __entry->sr_plane = wm->sr.plane;
0248                __entry->sr_cursor = wm->sr.cursor;
0249                ),
0250 
0251         TP_printk("pipe %c, frame=%u, scanline=%u, level=%d, cxsr=%d, wm %d/%d/%d/%d, sr %d/%d",
0252               pipe_name(__entry->pipe), __entry->frame,
0253               __entry->scanline, __entry->level, __entry->cxsr,
0254               __entry->primary, __entry->sprite0, __entry->sprite1, __entry->cursor,
0255               __entry->sr_plane, __entry->sr_cursor)
0256 );
0257 
0258 TRACE_EVENT(vlv_fifo_size,
0259         TP_PROTO(struct intel_crtc *crtc, u32 sprite0_start, u32 sprite1_start, u32 fifo_size),
0260         TP_ARGS(crtc, sprite0_start, sprite1_start, fifo_size),
0261 
0262         TP_STRUCT__entry(
0263                  __field(enum pipe, pipe)
0264                  __field(u32, frame)
0265                  __field(u32, scanline)
0266                  __field(u32, sprite0_start)
0267                  __field(u32, sprite1_start)
0268                  __field(u32, fifo_size)
0269                  ),
0270 
0271         TP_fast_assign(
0272                __entry->pipe = crtc->pipe;
0273                __entry->frame = intel_crtc_get_vblank_counter(crtc);
0274                __entry->scanline = intel_get_crtc_scanline(crtc);
0275                __entry->sprite0_start = sprite0_start;
0276                __entry->sprite1_start = sprite1_start;
0277                __entry->fifo_size = fifo_size;
0278                ),
0279 
0280         TP_printk("pipe %c, frame=%u, scanline=%u, %d/%d/%d",
0281               pipe_name(__entry->pipe), __entry->frame,
0282               __entry->scanline, __entry->sprite0_start,
0283               __entry->sprite1_start, __entry->fifo_size)
0284 );
0285 
0286 TRACE_EVENT(intel_plane_update_noarm,
0287         TP_PROTO(struct drm_plane *plane, struct intel_crtc *crtc),
0288         TP_ARGS(plane, crtc),
0289 
0290         TP_STRUCT__entry(
0291                  __field(enum pipe, pipe)
0292                  __field(u32, frame)
0293                  __field(u32, scanline)
0294                  __array(int, src, 4)
0295                  __array(int, dst, 4)
0296                  __string(name, plane->name)
0297                  ),
0298 
0299         TP_fast_assign(
0300                __assign_str(name, plane->name);
0301                __entry->pipe = crtc->pipe;
0302                __entry->frame = intel_crtc_get_vblank_counter(crtc);
0303                __entry->scanline = intel_get_crtc_scanline(crtc);
0304                memcpy(__entry->src, &plane->state->src, sizeof(__entry->src));
0305                memcpy(__entry->dst, &plane->state->dst, sizeof(__entry->dst));
0306                ),
0307 
0308         TP_printk("pipe %c, plane %s, frame=%u, scanline=%u, " DRM_RECT_FP_FMT " -> " DRM_RECT_FMT,
0309               pipe_name(__entry->pipe), __get_str(name),
0310               __entry->frame, __entry->scanline,
0311               DRM_RECT_FP_ARG((const struct drm_rect *)__entry->src),
0312               DRM_RECT_ARG((const struct drm_rect *)__entry->dst))
0313 );
0314 
0315 TRACE_EVENT(intel_plane_update_arm,
0316         TP_PROTO(struct drm_plane *plane, struct intel_crtc *crtc),
0317         TP_ARGS(plane, crtc),
0318 
0319         TP_STRUCT__entry(
0320                  __field(enum pipe, pipe)
0321                  __field(u32, frame)
0322                  __field(u32, scanline)
0323                  __array(int, src, 4)
0324                  __array(int, dst, 4)
0325                  __string(name, plane->name)
0326                  ),
0327 
0328         TP_fast_assign(
0329                __assign_str(name, plane->name);
0330                __entry->pipe = crtc->pipe;
0331                __entry->frame = intel_crtc_get_vblank_counter(crtc);
0332                __entry->scanline = intel_get_crtc_scanline(crtc);
0333                memcpy(__entry->src, &plane->state->src, sizeof(__entry->src));
0334                memcpy(__entry->dst, &plane->state->dst, sizeof(__entry->dst));
0335                ),
0336 
0337         TP_printk("pipe %c, plane %s, frame=%u, scanline=%u, " DRM_RECT_FP_FMT " -> " DRM_RECT_FMT,
0338               pipe_name(__entry->pipe), __get_str(name),
0339               __entry->frame, __entry->scanline,
0340               DRM_RECT_FP_ARG((const struct drm_rect *)__entry->src),
0341               DRM_RECT_ARG((const struct drm_rect *)__entry->dst))
0342 );
0343 
0344 TRACE_EVENT(intel_plane_disable_arm,
0345         TP_PROTO(struct drm_plane *plane, struct intel_crtc *crtc),
0346         TP_ARGS(plane, crtc),
0347 
0348         TP_STRUCT__entry(
0349                  __field(enum pipe, pipe)
0350                  __field(u32, frame)
0351                  __field(u32, scanline)
0352                  __string(name, plane->name)
0353                  ),
0354 
0355         TP_fast_assign(
0356                __assign_str(name, plane->name);
0357                __entry->pipe = crtc->pipe;
0358                __entry->frame = intel_crtc_get_vblank_counter(crtc);
0359                __entry->scanline = intel_get_crtc_scanline(crtc);
0360                ),
0361 
0362         TP_printk("pipe %c, plane %s, frame=%u, scanline=%u",
0363               pipe_name(__entry->pipe), __get_str(name),
0364               __entry->frame, __entry->scanline)
0365 );
0366 
0367 TRACE_EVENT(intel_fbc_activate,
0368         TP_PROTO(struct intel_plane *plane),
0369         TP_ARGS(plane),
0370 
0371         TP_STRUCT__entry(
0372                  __field(enum pipe, pipe)
0373                  __field(u32, frame)
0374                  __field(u32, scanline)
0375                  ),
0376 
0377         TP_fast_assign(
0378                struct intel_crtc *crtc = intel_crtc_for_pipe(to_i915(plane->base.dev),
0379                                      plane->pipe);
0380                __entry->pipe = crtc->pipe;
0381                __entry->frame = intel_crtc_get_vblank_counter(crtc);
0382                __entry->scanline = intel_get_crtc_scanline(crtc);
0383                ),
0384 
0385         TP_printk("pipe %c, frame=%u, scanline=%u",
0386               pipe_name(__entry->pipe), __entry->frame, __entry->scanline)
0387 );
0388 
0389 TRACE_EVENT(intel_fbc_deactivate,
0390         TP_PROTO(struct intel_plane *plane),
0391         TP_ARGS(plane),
0392 
0393         TP_STRUCT__entry(
0394                  __field(enum pipe, pipe)
0395                  __field(u32, frame)
0396                  __field(u32, scanline)
0397                  ),
0398 
0399         TP_fast_assign(
0400                struct intel_crtc *crtc = intel_crtc_for_pipe(to_i915(plane->base.dev),
0401                                      plane->pipe);
0402                __entry->pipe = crtc->pipe;
0403                __entry->frame = intel_crtc_get_vblank_counter(crtc);
0404                __entry->scanline = intel_get_crtc_scanline(crtc);
0405                ),
0406 
0407         TP_printk("pipe %c, frame=%u, scanline=%u",
0408               pipe_name(__entry->pipe), __entry->frame, __entry->scanline)
0409 );
0410 
0411 TRACE_EVENT(intel_fbc_nuke,
0412         TP_PROTO(struct intel_plane *plane),
0413         TP_ARGS(plane),
0414 
0415         TP_STRUCT__entry(
0416                  __field(enum pipe, pipe)
0417                  __field(u32, frame)
0418                  __field(u32, scanline)
0419                  ),
0420 
0421         TP_fast_assign(
0422                struct intel_crtc *crtc = intel_crtc_for_pipe(to_i915(plane->base.dev),
0423                                      plane->pipe);
0424                __entry->pipe = crtc->pipe;
0425                __entry->frame = intel_crtc_get_vblank_counter(crtc);
0426                __entry->scanline = intel_get_crtc_scanline(crtc);
0427                ),
0428 
0429         TP_printk("pipe %c, frame=%u, scanline=%u",
0430               pipe_name(__entry->pipe), __entry->frame, __entry->scanline)
0431 );
0432 
0433 TRACE_EVENT(intel_crtc_vblank_work_start,
0434         TP_PROTO(struct intel_crtc *crtc),
0435         TP_ARGS(crtc),
0436 
0437         TP_STRUCT__entry(
0438                  __field(enum pipe, pipe)
0439                  __field(u32, frame)
0440                  __field(u32, scanline)
0441                  ),
0442 
0443         TP_fast_assign(
0444                __entry->pipe = crtc->pipe;
0445                __entry->frame = intel_crtc_get_vblank_counter(crtc);
0446                __entry->scanline = intel_get_crtc_scanline(crtc);
0447                ),
0448 
0449         TP_printk("pipe %c, frame=%u, scanline=%u",
0450               pipe_name(__entry->pipe), __entry->frame,
0451                __entry->scanline)
0452 );
0453 
0454 TRACE_EVENT(intel_crtc_vblank_work_end,
0455         TP_PROTO(struct intel_crtc *crtc),
0456         TP_ARGS(crtc),
0457 
0458         TP_STRUCT__entry(
0459                  __field(enum pipe, pipe)
0460                  __field(u32, frame)
0461                  __field(u32, scanline)
0462                  ),
0463 
0464         TP_fast_assign(
0465                __entry->pipe = crtc->pipe;
0466                __entry->frame = intel_crtc_get_vblank_counter(crtc);
0467                __entry->scanline = intel_get_crtc_scanline(crtc);
0468                ),
0469 
0470         TP_printk("pipe %c, frame=%u, scanline=%u",
0471               pipe_name(__entry->pipe), __entry->frame,
0472                __entry->scanline)
0473 );
0474 
0475 TRACE_EVENT(intel_pipe_update_start,
0476         TP_PROTO(struct intel_crtc *crtc),
0477         TP_ARGS(crtc),
0478 
0479         TP_STRUCT__entry(
0480                  __field(enum pipe, pipe)
0481                  __field(u32, frame)
0482                  __field(u32, scanline)
0483                  __field(u32, min)
0484                  __field(u32, max)
0485                  ),
0486 
0487         TP_fast_assign(
0488                __entry->pipe = crtc->pipe;
0489                __entry->frame = intel_crtc_get_vblank_counter(crtc);
0490                __entry->scanline = intel_get_crtc_scanline(crtc);
0491                __entry->min = crtc->debug.min_vbl;
0492                __entry->max = crtc->debug.max_vbl;
0493                ),
0494 
0495         TP_printk("pipe %c, frame=%u, scanline=%u, min=%u, max=%u",
0496               pipe_name(__entry->pipe), __entry->frame,
0497                __entry->scanline, __entry->min, __entry->max)
0498 );
0499 
0500 TRACE_EVENT(intel_pipe_update_vblank_evaded,
0501         TP_PROTO(struct intel_crtc *crtc),
0502         TP_ARGS(crtc),
0503 
0504         TP_STRUCT__entry(
0505                  __field(enum pipe, pipe)
0506                  __field(u32, frame)
0507                  __field(u32, scanline)
0508                  __field(u32, min)
0509                  __field(u32, max)
0510                  ),
0511 
0512         TP_fast_assign(
0513                __entry->pipe = crtc->pipe;
0514                __entry->frame = crtc->debug.start_vbl_count;
0515                __entry->scanline = crtc->debug.scanline_start;
0516                __entry->min = crtc->debug.min_vbl;
0517                __entry->max = crtc->debug.max_vbl;
0518                ),
0519 
0520         TP_printk("pipe %c, frame=%u, scanline=%u, min=%u, max=%u",
0521               pipe_name(__entry->pipe), __entry->frame,
0522                __entry->scanline, __entry->min, __entry->max)
0523 );
0524 
0525 TRACE_EVENT(intel_pipe_update_end,
0526         TP_PROTO(struct intel_crtc *crtc, u32 frame, int scanline_end),
0527         TP_ARGS(crtc, frame, scanline_end),
0528 
0529         TP_STRUCT__entry(
0530                  __field(enum pipe, pipe)
0531                  __field(u32, frame)
0532                  __field(u32, scanline)
0533                  ),
0534 
0535         TP_fast_assign(
0536                __entry->pipe = crtc->pipe;
0537                __entry->frame = frame;
0538                __entry->scanline = scanline_end;
0539                ),
0540 
0541         TP_printk("pipe %c, frame=%u, scanline=%u",
0542               pipe_name(__entry->pipe), __entry->frame,
0543               __entry->scanline)
0544 );
0545 
0546 TRACE_EVENT(intel_frontbuffer_invalidate,
0547         TP_PROTO(unsigned int frontbuffer_bits, unsigned int origin),
0548         TP_ARGS(frontbuffer_bits, origin),
0549 
0550         TP_STRUCT__entry(
0551                  __field(unsigned int, frontbuffer_bits)
0552                  __field(unsigned int, origin)
0553                  ),
0554 
0555         TP_fast_assign(
0556                __entry->frontbuffer_bits = frontbuffer_bits;
0557                __entry->origin = origin;
0558                ),
0559 
0560         TP_printk("frontbuffer_bits=0x%08x, origin=%u",
0561               __entry->frontbuffer_bits, __entry->origin)
0562 );
0563 
0564 TRACE_EVENT(intel_frontbuffer_flush,
0565         TP_PROTO(unsigned int frontbuffer_bits, unsigned int origin),
0566         TP_ARGS(frontbuffer_bits, origin),
0567 
0568         TP_STRUCT__entry(
0569                  __field(unsigned int, frontbuffer_bits)
0570                  __field(unsigned int, origin)
0571                  ),
0572 
0573         TP_fast_assign(
0574                __entry->frontbuffer_bits = frontbuffer_bits;
0575                __entry->origin = origin;
0576                ),
0577 
0578         TP_printk("frontbuffer_bits=0x%08x, origin=%u",
0579               __entry->frontbuffer_bits, __entry->origin)
0580 );
0581 
0582 #endif /* __INTEL_DISPLAY_TRACE_H__ */
0583 
0584 /* This part must be outside protection */
0585 #undef TRACE_INCLUDE_PATH
0586 #undef TRACE_INCLUDE_FILE
0587 #define TRACE_INCLUDE_PATH ../../drivers/gpu/drm/i915/display
0588 #define TRACE_INCLUDE_FILE intel_display_trace
0589 #include <trace/define_trace.h>