vblank-rework rework cleanups.
authorMichel Dänzer <michel@tungstengraphics.com>
Mon, 21 Jul 2008 06:16:55 +0000 (08:16 +0200)
committerMichel Dänzer <michel@tungstengraphics.com>
Mon, 21 Jul 2008 06:16:55 +0000 (08:16 +0200)
Remove some dead/obsolete code and make drm_update_vblank_count() static.

linux-core/drmP.h
linux-core/drm_irq.c

index 37dd60f..6e4d6dd 100644 (file)
@@ -848,9 +848,6 @@ struct drm_device {
        atomic_t *vblank_refcount;      /* number of users of vblank interrupts per crtc */
        u32 *last_vblank;               /* protected by dev->vbl_lock, used */
                                        /* for wraparound handling */
-       int *vblank_enabled;            /* so we don't call enable more than
-                                          once per disable */
-       u32 *vblank_premodeset;         /* for compensation of spurious wraparounds */
        int *vblank_inmodeset;          /* Display driver is setting mode */
        struct timer_list vblank_disable_timer;
 
@@ -1153,7 +1150,6 @@ extern int drm_wait_vblank(struct drm_device *dev, void *data, struct drm_file *
 extern int drm_vblank_wait(struct drm_device * dev, unsigned int *vbl_seq);
 extern void drm_locked_tasklet(struct drm_device *dev, void(*func)(struct drm_device*));
 extern u32 drm_vblank_count(struct drm_device *dev, int crtc);
-extern void drm_update_vblank_count(struct drm_device *dev, int crtc);
 extern void drm_handle_vblank(struct drm_device *dev, int crtc);
 extern int drm_vblank_get(struct drm_device *dev, int crtc);
 extern void drm_vblank_put(struct drm_device *dev, int crtc);
index ec1e5be..26aecdf 100644 (file)
@@ -82,13 +82,11 @@ static void vblank_disable_fn(unsigned long arg)
 
        for (i = 0; i < dev->num_crtcs; i++) {
                spin_lock_irqsave(&dev->vbl_lock, irqflags);
-               if (atomic_read(&dev->vblank_refcount[i]) == 0 &&
-                   dev->vblank_enabled[i]) {
+               if (atomic_read(&dev->vblank_refcount[i]) == 0) {
                        DRM_DEBUG("disabling vblank on crtc %d\n", i);
                        dev->last_vblank[i] =
                                dev->driver->get_vblank_counter(dev, i);
                        dev->driver->disable_vblank(dev, i);
-                       dev->vblank_enabled[i] = 0;
                }
                spin_unlock_irqrestore(&dev->vbl_lock, irqflags);
        }
@@ -112,12 +110,8 @@ static void drm_vblank_cleanup(struct drm_device *dev)
                 dev->num_crtcs, DRM_MEM_DRIVER);
        drm_free(dev->vblank_refcount, sizeof(*dev->vblank_refcount) *
                 dev->num_crtcs, DRM_MEM_DRIVER);
-       drm_free(dev->vblank_enabled, sizeof(*dev->vblank_enabled) *
-                dev->num_crtcs, DRM_MEM_DRIVER);
        drm_free(dev->last_vblank, sizeof(*dev->last_vblank) * dev->num_crtcs,
                 DRM_MEM_DRIVER);
-       drm_free(dev->vblank_premodeset, sizeof(*dev->vblank_premodeset) *
-                dev->num_crtcs, DRM_MEM_DRIVER);
        drm_free(dev->vblank_inmodeset, sizeof(*dev->vblank_inmodeset) *
                 dev->num_crtcs, DRM_MEM_DRIVER);
 
@@ -154,20 +148,10 @@ int drm_vblank_init(struct drm_device *dev, int num_crtcs)
        if (!dev->vblank_refcount)
                goto err;
 
-       dev->vblank_enabled = drm_calloc(num_crtcs, sizeof(int),
-                                        DRM_MEM_DRIVER);
-       if (!dev->vblank_enabled)
-               goto err;
-
        dev->last_vblank = drm_calloc(num_crtcs, sizeof(u32), DRM_MEM_DRIVER);
        if (!dev->last_vblank)
                goto err;
 
-       dev->vblank_premodeset = drm_calloc(num_crtcs, sizeof(u32),
-                                           DRM_MEM_DRIVER);
-       if (!dev->vblank_premodeset)
-               goto err;
-
        dev->vblank_inmodeset = drm_calloc(num_crtcs, sizeof(int),
                                         DRM_MEM_DRIVER);
        if (!dev->vblank_inmodeset)
@@ -359,7 +343,7 @@ EXPORT_SYMBOL(drm_vblank_count);
  * Note: caller must hold dev->vbl_lock since this reads & writes
  * device vblank fields.
  */
-void drm_update_vblank_count(struct drm_device *dev, int crtc)
+static void drm_update_vblank_count(struct drm_device *dev, int crtc)
 {
        u32 cur_vblank, diff;
 
@@ -385,7 +369,6 @@ void drm_update_vblank_count(struct drm_device *dev, int crtc)
        } else {
                diff = cur_vblank - dev->last_vblank[crtc];
        }
-       dev->last_vblank[crtc] = cur_vblank;
 
        DRM_DEBUG("enabling vblank interrupts on crtc %d, missed %d\n",
                  crtc, diff);
@@ -411,15 +394,12 @@ int drm_vblank_get(struct drm_device *dev, int crtc)
 
        spin_lock_irqsave(&dev->vbl_lock, irqflags);
        /* Going from 0->1 means we have to enable interrupts again */
-       if (atomic_add_return(1, &dev->vblank_refcount[crtc]) == 1 &&
-           !dev->vblank_enabled[crtc]) {
+       if (atomic_add_return(1, &dev->vblank_refcount[crtc]) == 1) {
                ret = dev->driver->enable_vblank(dev, crtc);
                if (ret)
                        atomic_dec(&dev->vblank_refcount[crtc]);
-               else {
-                       dev->vblank_enabled[crtc] = 1;
+               else
                        drm_update_vblank_count(dev, crtc);
-               }
        }
        spin_unlock_irqrestore(&dev->vbl_lock, irqflags);
 
@@ -481,9 +461,7 @@ int drm_modeset_ctl(struct drm_device *dev, void *data,
        switch (modeset->cmd) {
        case _DRM_PRE_MODESET:
                if (!dev->vblank_inmodeset[crtc]) {
-                       spin_lock_irqsave(&dev->vbl_lock, irqflags);
                        dev->vblank_inmodeset[crtc] = 1;
-                       spin_unlock_irqrestore(&dev->vbl_lock, irqflags);
                        drm_vblank_get(dev, crtc);
                }
                break;