diff options
author | Eric Anholt <anholt@freebsd.org> | 2005-08-05 03:50:23 +0000 |
---|---|---|
committer | Eric Anholt <anholt@freebsd.org> | 2005-08-05 03:50:23 +0000 |
commit | c789ea1521ac9e935f2a1c6c043619d89bae9c16 (patch) | |
tree | bb8bcecf000f78f71db8dc70484d7ea82cc0b260 /linux-core/drm_fops.c | |
parent | 143622a987745ca2084f7a188e9993ffd5f28fe3 (diff) |
Rename the driver hooks in the DRM to something a little more
understandable: preinit -> load postinit -> (removed) presetup ->
firstopen postsetup -> (removed) open_helper -> open prerelease ->
preclose free_filp_priv -> postclose pretakedown -> lastclose
postcleanup -> unload release -> reclaim_buffers_locked version ->
(removed)
postinit and version were replaced with generic code in the Linux DRM
(drivers now set their version numbers and description in the driver
structure, like on BSD). postsetup wasn't used at all. Fixes the savage
hooks for initializing and tearing down mappings at the right times.
Testing involved at least starting X, running glxgears, killing
glxgears, exiting X, and repeating.
Tested on: FreeBSD (g200, g400, r200, r128) Linux (r200, savage4)
Diffstat (limited to 'linux-core/drm_fops.c')
-rw-r--r-- | linux-core/drm_fops.c | 32 |
1 files changed, 15 insertions, 17 deletions
diff --git a/linux-core/drm_fops.c b/linux-core/drm_fops.c index ca70c2c8..d7befb80 100644 --- a/linux-core/drm_fops.c +++ b/linux-core/drm_fops.c @@ -46,8 +46,8 @@ static int drm_setup(drm_device_t * dev) drm_local_map_t *map; int i; - if (dev->driver->presetup) - dev->driver->presetup(dev); + if (dev->driver->firstopen) + dev->driver->firstopen(dev); /* prebuild the SAREA */ i = drm_addmap(dev, 0, SAREA_MAX, _DRM_SHM, _DRM_CONTAINS_LOCK, &map); @@ -115,8 +115,6 @@ static int drm_setup(drm_device_t * dev) * drm_select_queue fails between the time the interrupt is * initialized and the time the queues are initialized. */ - if (dev->driver->postsetup) - dev->driver->postsetup(dev); return 0; } @@ -256,8 +254,8 @@ static int drm_open_helper(struct inode *inode, struct file *filp, drm_device_t priv->authenticated = capable(CAP_SYS_ADMIN); priv->lock_count = 0; - if (dev->driver->open_helper) { - ret = dev->driver->open_helper(dev, priv); + if (dev->driver->open) { + ret = dev->driver->open(dev, priv); if (ret < 0) goto out_free; } @@ -341,8 +339,8 @@ int drm_release(struct inode *inode, struct file *filp) DRM_DEBUG("open_count = %d\n", dev->open_count); - if (dev->driver->prerelease) - dev->driver->prerelease(dev, filp); + if (dev->driver->preclose) + dev->driver->preclose(dev, filp); /* ======================================================== * Begin inline drm_release @@ -358,8 +356,8 @@ int drm_release(struct inode *inode, struct file *filp) DRM_DEBUG("File %p released, freeing lock for context %d\n", filp, _DRM_LOCKING_CONTEXT(dev->lock.hw_lock->lock)); - if (dev->driver->release) - dev->driver->release(dev, filp); + if (dev->driver->reclaim_buffers_locked) + dev->driver->reclaim_buffers_locked(dev, filp); drm_lock_free(dev, &dev->lock.hw_lock->lock, _DRM_LOCKING_CONTEXT(dev->lock.hw_lock->lock)); @@ -368,7 +366,7 @@ int drm_release(struct inode *inode, struct file *filp) hardware at this point, possibly processed via a callback to the X server. */ - } else if (dev->driver->release && priv->lock_count + } else if (dev->driver->reclaim_buffers_locked && priv->lock_count && dev->lock.hw_lock) { /* The lock is required to reclaim buffers */ DECLARE_WAITQUEUE(entry, current); @@ -398,14 +396,14 @@ int drm_release(struct inode *inode, struct file *filp) current->state = TASK_RUNNING; remove_wait_queue(&dev->lock.lock_queue, &entry); if (!retcode) { - if (dev->driver->release) - dev->driver->release(dev, filp); + dev->driver->reclaim_buffers_locked(dev, filp); drm_lock_free(dev, &dev->lock.hw_lock->lock, DRM_KERNEL_CONTEXT); } } - if (drm_core_check_feature(dev, DRIVER_HAVE_DMA) && !dev->driver->release) { + if (drm_core_check_feature(dev, DRIVER_HAVE_DMA) && + !dev->driver->reclaim_buffers_locked) { dev->driver->reclaim_buffers(dev, filp); } @@ -452,8 +450,8 @@ int drm_release(struct inode *inode, struct file *filp) } up(&dev->struct_sem); - if (dev->driver->free_filp_priv) - dev->driver->free_filp_priv(dev, priv); + if (dev->driver->postclose) + dev->driver->postclose(dev, priv); drm_free(priv, sizeof(*priv), DRM_MEM_FILES); /* ======================================================== @@ -472,7 +470,7 @@ int drm_release(struct inode *inode, struct file *filp) } spin_unlock(&dev->count_lock); unlock_kernel(); - return drm_takedown(dev); + return drm_lastclose(dev); } spin_unlock(&dev->count_lock); |