diff options
| author | Keith Packard <keithp@keithp.com> | 2008-11-18 12:30:25 -0500 |
|---|---|---|
| committer | Dave Airlie <airlied@redhat.com> | 2008-11-24 18:49:03 -0500 |
| commit | 52440211dcdc52c0b757f8b34d122e11b12cdd50 (patch) | |
| tree | 5ad9c526134d046043b04ee56fb34d428a03c890 /drivers/gpu/drm/mga | |
| parent | 6133047aa64d2fd5b3b79dff74f696ded45615b2 (diff) | |
drm: move drm vblank initialization/cleanup to driver load/unload
drm vblank initialization keeps track of the changes in driver-supplied
frame counts across vt switch and mode setting, but only if you let it by
not tearing down the drm vblank structure.
Signed-off-by: Keith Packard <keithp@keithp.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/mga')
| -rw-r--r-- | drivers/gpu/drm/mga/mga_dma.c | 8 | ||||
| -rw-r--r-- | drivers/gpu/drm/mga/mga_irq.c | 5 |
2 files changed, 8 insertions, 5 deletions
diff --git a/drivers/gpu/drm/mga/mga_dma.c b/drivers/gpu/drm/mga/mga_dma.c index c1d12dbfa8d8..b49c5ff29585 100644 --- a/drivers/gpu/drm/mga/mga_dma.c +++ b/drivers/gpu/drm/mga/mga_dma.c | |||
| @@ -396,6 +396,7 @@ int mga_freelist_put(struct drm_device * dev, struct drm_buf * buf) | |||
| 396 | int mga_driver_load(struct drm_device * dev, unsigned long flags) | 396 | int mga_driver_load(struct drm_device * dev, unsigned long flags) |
| 397 | { | 397 | { |
| 398 | drm_mga_private_t *dev_priv; | 398 | drm_mga_private_t *dev_priv; |
| 399 | int ret; | ||
| 399 | 400 | ||
| 400 | dev_priv = drm_alloc(sizeof(drm_mga_private_t), DRM_MEM_DRIVER); | 401 | dev_priv = drm_alloc(sizeof(drm_mga_private_t), DRM_MEM_DRIVER); |
| 401 | if (!dev_priv) | 402 | if (!dev_priv) |
| @@ -415,6 +416,13 @@ int mga_driver_load(struct drm_device * dev, unsigned long flags) | |||
| 415 | dev->types[7] = _DRM_STAT_PRIMARY; | 416 | dev->types[7] = _DRM_STAT_PRIMARY; |
| 416 | dev->types[8] = _DRM_STAT_SECONDARY; | 417 | dev->types[8] = _DRM_STAT_SECONDARY; |
| 417 | 418 | ||
| 419 | ret = drm_vblank_init(dev, 1); | ||
| 420 | |||
| 421 | if (ret) { | ||
| 422 | (void) mga_driver_unload(dev); | ||
| 423 | return ret; | ||
| 424 | } | ||
| 425 | |||
| 418 | return 0; | 426 | return 0; |
| 419 | } | 427 | } |
| 420 | 428 | ||
diff --git a/drivers/gpu/drm/mga/mga_irq.c b/drivers/gpu/drm/mga/mga_irq.c index bab42f41188b..daa6041a483a 100644 --- a/drivers/gpu/drm/mga/mga_irq.c +++ b/drivers/gpu/drm/mga/mga_irq.c | |||
| @@ -152,11 +152,6 @@ void mga_driver_irq_preinstall(struct drm_device * dev) | |||
| 152 | int mga_driver_irq_postinstall(struct drm_device *dev) | 152 | int mga_driver_irq_postinstall(struct drm_device *dev) |
| 153 | { | 153 | { |
| 154 | drm_mga_private_t *dev_priv = (drm_mga_private_t *) dev->dev_private; | 154 | drm_mga_private_t *dev_priv = (drm_mga_private_t *) dev->dev_private; |
| 155 | int ret; | ||
| 156 | |||
| 157 | ret = drm_vblank_init(dev, 1); | ||
| 158 | if (ret) | ||
| 159 | return ret; | ||
| 160 | 155 | ||
| 161 | DRM_INIT_WAITQUEUE(&dev_priv->fence_queue); | 156 | DRM_INIT_WAITQUEUE(&dev_priv->fence_queue); |
| 162 | 157 | ||
