diff options
-rw-r--r-- | sys/dev/drm/i915_dma.c | 9 | ||||
-rw-r--r-- | sys/dev/drm/i915_drv.h | 2 | ||||
-rw-r--r-- | sys/dev/drm/i915_irq.c | 4 |
3 files changed, 8 insertions, 7 deletions
diff --git a/sys/dev/drm/i915_dma.c b/sys/dev/drm/i915_dma.c index a701a5e..d2f27b6 100644 --- a/sys/dev/drm/i915_dma.c +++ b/sys/dev/drm/i915_dma.c @@ -871,10 +871,13 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags) ret = drm_addmap(dev, base, size, _DRM_REGISTERS, _DRM_KERNEL | _DRM_DRIVER, &dev_priv->mmio_map); - if (IS_GM45(dev)) - dev->driver->get_vblank_counter = gm45_get_vblank_counter; - else + if (IS_G4X(dev)) { + dev->driver->get_vblank_counter = g45_get_vblank_counter; + dev->max_vblank_count = 0xffffffff; /* 32 bits of frame count */ + } else { dev->driver->get_vblank_counter = i915_get_vblank_counter; + dev->max_vblank_count = 0x00ffffff; /* 24 bits of frame count */ + } #ifdef I915_HAVE_GEM i915_gem_load(dev); diff --git a/sys/dev/drm/i915_drv.h b/sys/dev/drm/i915_drv.h index 92c8f74..f1300f4 100644 --- a/sys/dev/drm/i915_drv.h +++ b/sys/dev/drm/i915_drv.h @@ -453,7 +453,7 @@ extern int i915_vblank_pipe_get(struct drm_device *dev, void *data, extern int i915_enable_vblank(struct drm_device *dev, int crtc); extern void i915_disable_vblank(struct drm_device *dev, int crtc); extern u32 i915_get_vblank_counter(struct drm_device *dev, int crtc); -extern u32 gm45_get_vblank_counter(struct drm_device *dev, int crtc); +extern u32 g45_get_vblank_counter(struct drm_device *dev, int crtc); extern int i915_vblank_swap(struct drm_device *dev, void *data, struct drm_file *file_priv); diff --git a/sys/dev/drm/i915_irq.c b/sys/dev/drm/i915_irq.c index 7583031..dac1058 100644 --- a/sys/dev/drm/i915_irq.c +++ b/sys/dev/drm/i915_irq.c @@ -177,7 +177,7 @@ u32 i915_get_vblank_counter(struct drm_device *dev, int pipe) return count; } -u32 gm45_get_vblank_counter(struct drm_device *dev, int pipe) +u32 g45_get_vblank_counter(struct drm_device *dev, int pipe) { drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; int reg = pipe ? PIPEB_FRMCOUNT_GM45 : PIPEA_FRMCOUNT_GM45; @@ -516,8 +516,6 @@ int i915_driver_irq_postinstall(struct drm_device *dev) dev_priv->vblank_pipe = DRM_I915_VBLANK_PIPE_A | DRM_I915_VBLANK_PIPE_B; - dev->max_vblank_count = 0xffffff; /* only 24 bits of frame count */ - /* Unmask the interrupts that we always want on. */ dev_priv->irq_mask_reg = ~I915_INTERRUPT_ENABLE_FIX; |