On Tue, Jul 26, 2016 at 10:52 AM, Rodrigo Vivi <rodrigo.vivi@xxxxxxxxx> wrote: > From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> I believe we should change the subject and commit message if the patch that disables hw counter for platforms with DMC is accepted. But since that is uncertain and I didn't want to change what Ville had done, I just sent this rebased version for now. > > Gen2 doesn't have a hardware frame counter, so let's use the sw > counter value instead. > > v2: Rodrigo: Rebase patch: > - using drm_crtc_vblank_{get,put} since legacy is > no longer available > - declare struct dev when needed since dev_priv > become the default. > > Testcase: igt/kms_pipe_crc_basic/read-crc-pipe-?-frame-sequence > Signed-off-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > Signed-off-by: Rodrigo Vivi <rodrigo.vivi@xxxxxxxxx> > --- > drivers/gpu/drm/i915/i915_debugfs.c | 11 +++++++++++ > drivers/gpu/drm/i915/i915_irq.c | 8 ++++++-- > 2 files changed, 17 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c > index 9aa62c5..327a091 100644 > --- a/drivers/gpu/drm/i915/i915_debugfs.c > +++ b/drivers/gpu/drm/i915/i915_debugfs.c > @@ -4130,6 +4130,14 @@ static int pipe_crc_set_source(struct drm_device *dev, enum pipe pipe, > goto out; > } > > + if (dev->max_vblank_count == 0) { > + ret = drm_crtc_vblank_get(&crtc->base); > + if (ret) { > + kfree(entries); > + return ret; > + } > + } > + > /* > * When IPS gets enabled, the pipe CRC changes. Since IPS gets > * enabled and disabled dynamically based on package C states, > @@ -4182,6 +4190,9 @@ static int pipe_crc_set_source(struct drm_device *dev, enum pipe pipe, > hsw_trans_edp_pipe_A_crc_wa(dev, false); > > hsw_enable_ips(crtc); > + > + if (dev->max_vblank_count == 0) > + drm_crtc_vblank_put(&crtc->base); > } > > ret = 0; > diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c > index 6ae201e..a8b5e3a 100644 > --- a/drivers/gpu/drm/i915/i915_irq.c > +++ b/drivers/gpu/drm/i915/i915_irq.c > @@ -1491,6 +1491,7 @@ static void display_pipe_crc_irq_handler(struct drm_i915_private *dev_priv, > uint32_t crc2, uint32_t crc3, > uint32_t crc4) > { > + struct drm_device *dev = &dev_priv->drm; > struct intel_pipe_crc *pipe_crc = &dev_priv->pipe_crc[pipe]; > struct intel_pipe_crc_entry *entry; > int head, tail; > @@ -1514,8 +1515,11 @@ static void display_pipe_crc_irq_handler(struct drm_i915_private *dev_priv, > > entry = &pipe_crc->entries[head]; > > - entry->frame = dev_priv->drm.driver->get_vblank_counter(&dev_priv->drm, > - pipe); > + if (dev->max_vblank_count == 0) > + entry->frame = drm_vblank_count(dev, pipe); > + else > + entry->frame = dev_priv->drm.driver->get_vblank_counter(dev, > + pipe); > entry->crc[0] = crc0; > entry->crc[1] = crc1; > entry->crc[2] = crc2; > -- > 2.4.3 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Rodrigo Vivi Blog: http://blog.vivi.eng.br _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx