0001
0002
0003
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
0583
0584
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>