/* watermark/fifo updates */
 
 TRACE_EVENT(intel_pipe_enable,
-           TP_PROTO(struct drm_i915_private *dev_priv, enum pipe pipe),
-           TP_ARGS(dev_priv, pipe),
+           TP_PROTO(struct intel_crtc *crtc),
+           TP_ARGS(crtc),
 
            TP_STRUCT__entry(
                             __array(u32, frame, 3)
                             __array(u32, scanline, 3)
                             __field(enum pipe, pipe)
                             ),
-
            TP_fast_assign(
-                          enum pipe _pipe;
-                          for_each_pipe(dev_priv, _pipe) {
-                                  __entry->frame[_pipe] =
-                                          dev_priv->drm.driver->get_vblank_counter(&dev_priv->drm, _pipe);
-                                  __entry->scanline[_pipe] =
-                                          intel_get_crtc_scanline(intel_get_crtc_for_pipe(dev_priv, _pipe));
+                          struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
+                          struct intel_crtc *it__;
+                          for_each_intel_crtc(&dev_priv->drm, it__) {
+                                  __entry->frame[it__->pipe] = intel_crtc_get_vblank_counter(it__);
+                                  __entry->scanline[it__->pipe] = intel_get_crtc_scanline(it__);
                           }
-                          __entry->pipe = pipe;
+                          __entry->pipe = crtc->pipe;
                           ),
 
            TP_printk("pipe %c enable, pipe A: frame=%u, scanline=%u, pipe B: frame=%u, scanline=%u, pipe C: frame=%u, scanline=%u",
 );
 
 TRACE_EVENT(intel_pipe_disable,
-           TP_PROTO(struct drm_i915_private *dev_priv, enum pipe pipe),
-           TP_ARGS(dev_priv, pipe),
+           TP_PROTO(struct intel_crtc *crtc),
+           TP_ARGS(crtc),
 
            TP_STRUCT__entry(
                             __array(u32, frame, 3)
                             ),
 
            TP_fast_assign(
-                          enum pipe _pipe;
-                          for_each_pipe(dev_priv, _pipe) {
-                                  __entry->frame[_pipe] =
-                                          dev_priv->drm.driver->get_vblank_counter(&dev_priv->drm, _pipe);
-                                  __entry->scanline[_pipe] =
-                                          intel_get_crtc_scanline(intel_get_crtc_for_pipe(dev_priv, _pipe));
+                          struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
+                          struct intel_crtc *it__;
+                          for_each_intel_crtc(&dev_priv->drm, it__) {
+                                  __entry->frame[it__->pipe] = intel_crtc_get_vblank_counter(it__);
+                                  __entry->scanline[it__->pipe] = intel_get_crtc_scanline(it__);
                           }
-                          __entry->pipe = pipe;
+                          __entry->pipe = crtc->pipe;
                           ),
 
            TP_printk("pipe %c disable, pipe A: frame=%u, scanline=%u, pipe B: frame=%u, scanline=%u, pipe C: frame=%u, scanline=%u",
 
            TP_fast_assign(
                           __entry->pipe = crtc->pipe;
-                          __entry->frame = crtc->base.dev->driver->get_vblank_counter(crtc->base.dev,
-                                                                                      crtc->pipe);
+                          __entry->frame = intel_crtc_get_vblank_counter(crtc);
                           __entry->scanline = intel_get_crtc_scanline(crtc);
                           memcpy(__entry->crcs, crcs, sizeof(__entry->crcs));
                           ),
                             ),
 
            TP_fast_assign(
+                           struct intel_crtc *crtc = intel_get_crtc_for_pipe(dev_priv, pipe);
                           __entry->pipe = pipe;
-                          __entry->frame = dev_priv->drm.driver->get_vblank_counter(&dev_priv->drm, pipe);
-                          __entry->scanline = intel_get_crtc_scanline(intel_get_crtc_for_pipe(dev_priv, pipe));
+                          __entry->frame = intel_crtc_get_vblank_counter(crtc);
+                          __entry->scanline = intel_get_crtc_scanline(crtc);
                           ),
 
            TP_printk("pipe %c, frame=%u, scanline=%u",
 
            TP_fast_assign(
                           enum pipe pipe = pch_transcoder;
+                          struct intel_crtc *crtc = intel_get_crtc_for_pipe(dev_priv, pipe);
                           __entry->pipe = pipe;
-                          __entry->frame = dev_priv->drm.driver->get_vblank_counter(&dev_priv->drm, pipe);
-                          __entry->scanline = intel_get_crtc_scanline(intel_get_crtc_for_pipe(dev_priv, pipe));
+                          __entry->frame = intel_crtc_get_vblank_counter(crtc);
+                          __entry->scanline = intel_get_crtc_scanline(crtc);
                           ),
 
            TP_printk("pch transcoder %c, frame=%u, scanline=%u",
                             ),
 
            TP_fast_assign(
-                          enum pipe pipe;
-                          for_each_pipe(dev_priv, pipe) {
-                                  __entry->frame[pipe] =
-                                          dev_priv->drm.driver->get_vblank_counter(&dev_priv->drm, pipe);
-                                  __entry->scanline[pipe] =
-                                          intel_get_crtc_scanline(intel_get_crtc_for_pipe(dev_priv, pipe));
+                          struct intel_crtc *crtc;
+                          for_each_intel_crtc(&dev_priv->drm, crtc) {
+                                  __entry->frame[crtc->pipe] = intel_crtc_get_vblank_counter(crtc);
+                                  __entry->scanline[crtc->pipe] = intel_get_crtc_scanline(crtc);
                           }
                           __entry->old = old;
                           __entry->new = new;
 
            TP_fast_assign(
                           __entry->pipe = crtc->pipe;
-                          __entry->frame = crtc->base.dev->driver->get_vblank_counter(crtc->base.dev,
-                                                                                      crtc->pipe);
+                          __entry->frame = intel_crtc_get_vblank_counter(crtc);
                           __entry->scanline = intel_get_crtc_scanline(crtc);
                           __entry->primary = wm->pipe[crtc->pipe].plane[PLANE_PRIMARY];
                           __entry->sprite = wm->pipe[crtc->pipe].plane[PLANE_SPRITE0];
 
            TP_fast_assign(
                           __entry->pipe = crtc->pipe;
-                          __entry->frame = crtc->base.dev->driver->get_vblank_counter(crtc->base.dev,
-                                                                                      crtc->pipe);
+                          __entry->frame = intel_crtc_get_vblank_counter(crtc);
                           __entry->scanline = intel_get_crtc_scanline(crtc);
                           __entry->level = wm->level;
                           __entry->cxsr = wm->cxsr;
 
            TP_fast_assign(
                           __entry->pipe = crtc->pipe;
-                          __entry->frame = crtc->base.dev->driver->get_vblank_counter(crtc->base.dev,
-                                                                                      crtc->pipe);
+                          __entry->frame = intel_crtc_get_vblank_counter(crtc);
                           __entry->scanline = intel_get_crtc_scanline(crtc);
                           __entry->sprite0_start = sprite0_start;
                           __entry->sprite1_start = sprite1_start;
            TP_fast_assign(
                           __entry->pipe = crtc->pipe;
                           __entry->name = plane->name;
-                          __entry->frame = crtc->base.dev->driver->get_vblank_counter(crtc->base.dev,
-                                                                                      crtc->pipe);
+                          __entry->frame = intel_crtc_get_vblank_counter(crtc);
                           __entry->scanline = intel_get_crtc_scanline(crtc);
                           memcpy(__entry->src, &plane->state->src, sizeof(__entry->src));
                           memcpy(__entry->dst, &plane->state->dst, sizeof(__entry->dst));
            TP_fast_assign(
                           __entry->pipe = crtc->pipe;
                           __entry->name = plane->name;
-                          __entry->frame = crtc->base.dev->driver->get_vblank_counter(crtc->base.dev,
-                                                                                      crtc->pipe);
+                          __entry->frame = intel_crtc_get_vblank_counter(crtc);
                           __entry->scanline = intel_get_crtc_scanline(crtc);
                           ),
 
 
            TP_fast_assign(
                           __entry->pipe = crtc->pipe;
-                          __entry->frame = crtc->base.dev->driver->get_vblank_counter(crtc->base.dev,
-                                                                                      crtc->pipe);
+                          __entry->frame = intel_crtc_get_vblank_counter(crtc);
                           __entry->scanline = intel_get_crtc_scanline(crtc);
                           __entry->min = crtc->debug.min_vbl;
                           __entry->max = crtc->debug.max_vbl;