diff options
Diffstat (limited to 'linux-core')
| -rw-r--r-- | linux-core/drmP.h | 31 | ||||
| -rw-r--r-- | linux-core/drm_drv.c | 29 | ||||
| -rw-r--r-- | linux-core/drm_fops.c | 32 | ||||
| -rw-r--r-- | linux-core/drm_ioctl.c | 18 | ||||
| -rw-r--r-- | linux-core/drm_stub.c | 15 | ||||
| -rw-r--r-- | linux-core/ffb_context.c | 14 | ||||
| -rw-r--r-- | linux-core/ffb_drv.c | 39 | ||||
| -rw-r--r-- | linux-core/i810_dma.c | 18 | ||||
| -rw-r--r-- | linux-core/i810_drv.c | 41 | ||||
| -rw-r--r-- | linux-core/i810_drv.h | 10 | ||||
| -rw-r--r-- | linux-core/i830_dma.c | 18 | ||||
| -rw-r--r-- | linux-core/i830_drv.c | 48 | ||||
| -rw-r--r-- | linux-core/i830_drv.h | 8 | ||||
| -rw-r--r-- | linux-core/i915_drv.c | 47 | ||||
| -rw-r--r-- | linux-core/imagine_drv.c | 30 | ||||
| -rw-r--r-- | linux-core/mach64_drv.c | 38 | ||||
| -rw-r--r-- | linux-core/mga_drv.c | 52 | ||||
| -rw-r--r-- | linux-core/r128_drv.c | 40 | ||||
| -rw-r--r-- | linux-core/radeon_drv.c | 49 | ||||
| -rw-r--r-- | linux-core/savage_drv.c | 44 | ||||
| -rw-r--r-- | linux-core/sis_drv.c | 36 | ||||
| -rw-r--r-- | linux-core/tdfx_drv.c | 36 | 
22 files changed, 216 insertions, 477 deletions
diff --git a/linux-core/drmP.h b/linux-core/drmP.h index ca415b8f..2b4dbcf6 100644 --- a/linux-core/drmP.h +++ b/linux-core/drmP.h @@ -526,18 +526,14 @@ typedef struct drm_vbl_sig {   */  struct drm_device;  struct drm_driver { -	int (*preinit) (struct drm_device *, unsigned long flags); -	void (*prerelease) (struct drm_device *, struct file * filp); -	void (*pretakedown) (struct drm_device *); -	int (*postcleanup) (struct drm_device *); -	int (*presetup) (struct drm_device *); -	int (*postsetup) (struct drm_device *); +	int (*load) (struct drm_device *, unsigned long flags); +	int (*firstopen) (struct drm_device *); +	int (*open) (struct drm_device *, drm_file_t *); +	void (*preclose) (struct drm_device *, struct file * filp); +	void (*postclose) (struct drm_device *, drm_file_t *); +	void (*lastclose) (struct drm_device *); +	int (*unload) (struct drm_device *);  	int (*dma_ioctl) (DRM_IOCTL_ARGS); -	/* these are opposites at the moment */ -	int (*open_helper) (struct drm_device *, drm_file_t *); -	void (*free_filp_priv) (struct drm_device *, drm_file_t *); - -	void (*release) (struct drm_device *, struct file * filp);  	void (*dma_ready) (struct drm_device *);  	int (*dma_quiescent) (struct drm_device *);  	int (*context_ctor) (struct drm_device * dev, int context); @@ -562,16 +558,25 @@ struct drm_driver {  	int (*device_is_agp) (struct drm_device * dev);  /* these have to be filled in */ -	int (*postinit) (struct drm_device *, unsigned long flags);  	 irqreturn_t(*irq_handler) (DRM_IRQ_ARGS);  	void (*irq_preinstall) (struct drm_device * dev);  	void (*irq_postinstall) (struct drm_device * dev);  	void (*irq_uninstall) (struct drm_device * dev);  	void (*reclaim_buffers) (struct drm_device *dev, struct file * filp); +	void (*reclaim_buffers_locked) (struct drm_device *dev, +					struct file * filp);  	unsigned long (*get_map_ofs) (drm_map_t * map);  	unsigned long (*get_reg_ofs) (struct drm_device * dev);  	void (*set_version) (struct drm_device * dev, drm_set_version_t * sv);  	int (*version) (drm_version_t * version); + +	int major; +	int minor; +	int patchlevel; +	char *name; +	char *desc; +	char *date; +  /* variables */  	u32 driver_features;  	int dev_priv_size; @@ -766,7 +771,7 @@ extern int drm_ioctl(struct inode *inode, struct file *filp,  extern long drm_compat_ioctl(struct file *filp,  			     unsigned int cmd, unsigned long arg); -extern int drm_takedown(drm_device_t * dev); +extern int drm_lastclose(drm_device_t * dev);  				/* Device support (drm_fops.h) */  extern int drm_open(struct inode *inode, struct file *filp); diff --git a/linux-core/drm_drv.c b/linux-core/drm_drv.c index 4e4648b9..1ff880e1 100644 --- a/linux-core/drm_drv.c +++ b/linux-core/drm_drv.c @@ -132,7 +132,7 @@ drm_ioctl_desc_t drm_ioctls[] = {   *   * \sa drm_device   */ -int drm_takedown(drm_device_t * dev) +int drm_lastclose(drm_device_t * dev)  {  	drm_magic_entry_t *pt, *next;  	drm_map_list_t *r_list; @@ -141,9 +141,9 @@ int drm_takedown(drm_device_t * dev)  	DRM_DEBUG("\n"); -	if (dev->driver->pretakedown) -		dev->driver->pretakedown(dev); -	DRM_DEBUG("driver pretakedown completed\n"); +	if (dev->driver->lastclose) +		dev->driver->lastclose(dev); +	DRM_DEBUG("driver lastclose completed\n");  	if (dev->unique) {  		drm_free(dev->unique, strlen(dev->unique) + 1, DRM_MEM_DRIVER); @@ -243,7 +243,7 @@ int drm_takedown(drm_device_t * dev)  	}  	up(&dev->struct_sem); -	DRM_DEBUG("takedown completed\n"); +	DRM_DEBUG("lastclose completed\n");  	return 0;  } @@ -331,7 +331,7 @@ EXPORT_SYMBOL(drm_init);  /**   * Called via cleanup_module() at module unload time.   * - * Cleans up all DRM device, calling takedown(). + * Cleans up all DRM device, calling drm_lastclose().   *   * \sa drm_init   */ @@ -344,7 +344,7 @@ static void __exit drm_cleanup(drm_device_t * dev)  		return;  	} -	drm_takedown(dev); +	drm_lastclose(dev);  	if (dev->maplist) {  		drm_free(dev->maplist, sizeof(*dev->maplist), DRM_MEM_MAPS); @@ -369,8 +369,8 @@ static void __exit drm_cleanup(drm_device_t * dev)  		drm_free(dev->agp, sizeof(*dev->agp), DRM_MEM_AGPLISTS);  		dev->agp = NULL;  	} -	if (dev->driver->postcleanup) -		dev->driver->postcleanup(dev); +	if (dev->driver->unload) +		dev->driver->unload(dev);  	drm_put_head(&dev->primary);  	if (drm_put_dev(dev)) @@ -486,14 +486,17 @@ static int drm_version(struct inode *inode, struct file *filp,  	drm_device_t *dev = priv->head->dev;  	drm_version_t __user *argp = (void __user *)arg;  	drm_version_t version; -	int ret; +	int len;  	if (copy_from_user(&version, argp, sizeof(version)))  		return -EFAULT; -	/* version is a required function to return the personality module version */ -	if ((ret = dev->driver->version(&version))) -		return ret; +	version.version_major = dev->driver->major; +	version.version_minor = dev->driver->minor; +	version.version_patchlevel = dev->driver->patchlevel; +	DRM_COPY(version.name, dev->driver->name); +	DRM_COPY(version.date, dev->driver->date); +	DRM_COPY(version.desc, dev->driver->desc);  	if (copy_to_user(argp, &version, sizeof(version)))  		return -EFAULT; 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); diff --git a/linux-core/drm_ioctl.c b/linux-core/drm_ioctl.c index 24f6579f..eac89ea6 100644 --- a/linux-core/drm_ioctl.c +++ b/linux-core/drm_ioctl.c @@ -324,23 +324,13 @@ int drm_setversion(DRM_IOCTL_ARGS)  	drm_set_version_t retv;  	int if_version;  	drm_set_version_t __user *argp = (void __user *)data; -	drm_version_t version;  	DRM_COPY_FROM_USER_IOCTL(sv, argp, sizeof(sv)); -	/* -	 * version.name etc need to be initialized to zero. -	 * If we don't, driver->version() will poke random strings to -	 * random locations in user space, causing X server segfaults -	 * that are interesting to debug.   --eich -	 */ -	memset(&version, 0, sizeof(version)); - -	dev->driver->version(&version);  	retv.drm_di_major = DRM_IF_MAJOR;  	retv.drm_di_minor = DRM_IF_MINOR; -	retv.drm_dd_major = version.version_major; -	retv.drm_dd_minor = version.version_minor; +	retv.drm_dd_major = dev->driver->major; +	retv.drm_dd_minor = dev->driver->minor;  	DRM_COPY_TO_USER_IOCTL(argp, retv, sizeof(sv)); @@ -359,8 +349,8 @@ int drm_setversion(DRM_IOCTL_ARGS)  	}  	if (sv.drm_dd_major != -1) { -		if (sv.drm_dd_major != version.version_major || -		    sv.drm_dd_minor < 0 || sv.drm_dd_minor > version.version_minor) +		if (sv.drm_dd_major != dev->driver->major || +		    sv.drm_dd_minor < 0 || sv.drm_dd_minor > dev->driver->minor)  			return EINVAL;  		if (dev->driver->set_version) diff --git a/linux-core/drm_stub.c b/linux-core/drm_stub.c index 5496ed89..52b5e9c6 100644 --- a/linux-core/drm_stub.c +++ b/linux-core/drm_stub.c @@ -94,8 +94,8 @@ static int fill_in_dev(drm_device_t * dev, struct pci_dev *pdev,  	dev->driver = driver; -	if (dev->driver->preinit) -		if ((retcode = dev->driver->preinit(dev, ent->driver_data))) +	if (dev->driver->load) +		if ((retcode = dev->driver->load(dev, ent->driver_data)))  			goto error_out_unreg;  	if (drm_core_has_AGP(dev)) { @@ -126,7 +126,7 @@ static int fill_in_dev(drm_device_t * dev, struct pci_dev *pdev,  	return 0;  error_out_unreg: -	drm_takedown(dev); +	drm_lastclose(dev);  	return retcode;  } @@ -222,15 +222,12 @@ int drm_get_dev(struct pci_dev *pdev, const struct pci_device_id *ent,  	if ((ret = drm_get_head(dev, &dev->primary)))  		goto err_g1; -	/* postinit is a required function to display the signon banner */ -	/* drivers add secondary heads here if needed */ -	if ((ret = dev->driver->postinit(dev, ent->driver_data))) -		goto err_g2; +	DRM_INFO("Initialized %s %d.%d.%d %s on minor %d: %s\n", +		 driver->name, driver->major, driver->minor, driver->patchlevel, +		 driver->date, dev->primary.minor, pci_pretty_name(dev->pdev));  	return 0; -err_g2: -	drm_put_head(&dev->primary);  err_g1:  	if (!drm_fb_loaded) {  		pci_set_drvdata(pdev, NULL); diff --git a/linux-core/ffb_context.c b/linux-core/ffb_context.c index c2b163ea..e6ae60c3 100644 --- a/linux-core/ffb_context.c +++ b/linux-core/ffb_context.c @@ -523,7 +523,7 @@ int ffb_rmctx(struct inode * inode, struct file * filp, unsigned int cmd,  	return 0;  } -static void ffb_driver_release(drm_device_t * dev) +static void ffb_driver_reclaim_buffers_locked(drm_device_t * dev)  {  	ffb_dev_priv_t *fpriv = (ffb_dev_priv_t *) dev->dev_private;  	int context = _DRM_LOCKING_CONTEXT(dev->lock.hw_lock->lock); @@ -537,21 +537,13 @@ static void ffb_driver_release(drm_device_t * dev)  	}  } -static int ffb_driver_presetup(drm_device_t * dev) -{ -	int ret; -	ret = ffb_presetup(dev); -	if (_ret != 0) -		return ret; -} - -static void ffb_driver_pretakedown(drm_device_t * dev) +static void ffb_driver_lastclose(drm_device_t * dev)  {  	if (dev->dev_private)  		kfree(dev->dev_private);  } -static void ffb_driver_postcleanup(drm_device_t * dev) +static void ffb_driver_unload(drm_device_t * dev)  {  	if (ffb_position != NULL)  		kfree(ffb_position); diff --git a/linux-core/ffb_drv.c b/linux-core/ffb_drv.c index 8122e95e..7b028c86 100644 --- a/linux-core/ffb_drv.c +++ b/linux-core/ffb_drv.c @@ -238,7 +238,7 @@ unsigned long ffb_get_unmapped_area(struct file *filp,  /* This functions must be here since it references drm_numdevs)   * which drm_drv.h declares.   */ -int ffb_presetup(drm_device_t *dev) +static int ffb_driver_firstopen(drm_device_t *dev)  {  	ffb_dev_priv_t	*ffb_priv;  	drm_device_t *temp_dev; @@ -274,49 +274,20 @@ int ffb_presetup(drm_device_t *dev)  #include "drm_pciids.h" -static int postinit( struct drm_device *dev, unsigned long flags ) -{ -	DRM_INFO( "Initialized %s %d.%d.%d %s on minor %d: %s\n", -		DRIVER_NAME, -		DRIVER_MAJOR, -		DRIVER_MINOR, -		DRIVER_PATCHLEVEL, -		DRIVER_DATE, -		dev->minor, -		pci_pretty_name(pdev) -		); -	return 0; -} - -static int version( drm_version_t *version ) -{ -	int len; - -	version->version_major = DRIVER_MAJOR; -	version->version_minor = DRIVER_MINOR; -	version->version_patchlevel = DRIVER_PATCHLEVEL; -	DRM_COPY( version->name, DRIVER_NAME ); -	DRM_COPY( version->date, DRIVER_DATE ); -	DRM_COPY( version->desc, DRIVER_DESC ); -	return 0; -} -  static struct pci_device_id pciidlist[] = {  	ffb_PCI_IDS  };  static struct drm_driver ffb_driver = { -	.release = ffb_driver_release, -	.presetup = ffb_driver_presetup, -	.pretakedown = ffb_driver_pretakedown, -	.postcleanup = ffb_driver_postcleanup, +	.release = ffb_driver_reclaim_buffers_locked, +	.firstopen = ffb_driver_firstopen, +	.lastclose = ffb_driver_lastclose, +	.unload = ffb_driver_unload,  	.kernel_context_switch = ffb_context_switch,  	.kernel_context_switch_unlock = ffb_driver_kernel_context_switch_unlock,  	.get_map_ofs = ffb_driver_get_map_ofs,  	.get_reg_ofs = ffb_driver_get_reg_ofs,  	.reclaim_buffers = drm_core_reclaim_buffers, -	.postinit = postinit, -	.version = version,  	fops = {  		.owner   = THIS_MODULE,  		.open	 = drm_open, diff --git a/linux-core/i810_dma.c b/linux-core/i810_dma.c index 32367324..9e0634a5 100644 --- a/linux-core/i810_dma.c +++ b/linux-core/i810_dma.c @@ -1341,12 +1341,24 @@ static int i810_flip_bufs(struct inode *inode, struct file *filp,  	return 0;  } -void i810_driver_pretakedown(drm_device_t * dev) +int i810_driver_load(drm_device_t *dev, unsigned long flags) +{ +	/* i810 has 4 more counters */ +	dev->counters += 4; +	dev->types[6] = _DRM_STAT_IRQ; +	dev->types[7] = _DRM_STAT_PRIMARY; +	dev->types[8] = _DRM_STAT_SECONDARY; +	dev->types[9] = _DRM_STAT_DMA; + +	return 0; +} + +void i810_driver_lastclose(drm_device_t * dev)  {  	i810_dma_cleanup(dev);  } -void i810_driver_prerelease(drm_device_t * dev, DRMFILE filp) +void i810_driver_preclose(drm_device_t * dev, DRMFILE filp)  {  	if (dev->dev_private) {  		drm_i810_private_t *dev_priv = dev->dev_private; @@ -1356,7 +1368,7 @@ void i810_driver_prerelease(drm_device_t * dev, DRMFILE filp)  	}  } -void i810_driver_release(drm_device_t * dev, struct file *filp) +void i810_driver_reclaim_buffers_locked(drm_device_t * dev, struct file *filp)  {  	i810_reclaim_buffers(dev, filp);  } diff --git a/linux-core/i810_drv.c b/linux-core/i810_drv.c index f043041b..fca04cc6 100644 --- a/linux-core/i810_drv.c +++ b/linux-core/i810_drv.c @@ -38,38 +38,6 @@  #include "drm_pciids.h" -static int postinit(struct drm_device *dev, unsigned long flags) -{ -	/* i810 has 4 more counters */ -	dev->counters += 4; -	dev->types[6] = _DRM_STAT_IRQ; -	dev->types[7] = _DRM_STAT_PRIMARY; -	dev->types[8] = _DRM_STAT_SECONDARY; -	dev->types[9] = _DRM_STAT_DMA; - -	DRM_INFO("Initialized %s %d.%d.%d %s on minor %d: %s\n", -		 DRIVER_NAME, -		 DRIVER_MAJOR, -		 DRIVER_MINOR, -		 DRIVER_PATCHLEVEL, -		 DRIVER_DATE, dev->primary.minor, pci_pretty_name(dev->pdev) -	    ); -	return 0; -} - -static int version(drm_version_t * version) -{ -	int len; - -	version->version_major = DRIVER_MAJOR; -	version->version_minor = DRIVER_MINOR; -	version->version_patchlevel = DRIVER_PATCHLEVEL; -	DRM_COPY(version->name, DRIVER_NAME); -	DRM_COPY(version->date, DRIVER_DATE); -	DRM_COPY(version->desc, DRIVER_DESC); -	return 0; -} -  static int dri_library_name(struct drm_device * dev, char * buf)  {  	return snprintf(buf, PAGE_SIZE, "i830\n"); @@ -88,16 +56,15 @@ static struct drm_driver driver = {  	    DRIVER_USE_AGP | DRIVER_REQUIRE_AGP | DRIVER_USE_MTRR |  	    DRIVER_HAVE_DMA | DRIVER_DMA_QUEUE,  	.dev_priv_size = sizeof(drm_i810_buf_priv_t), -	.pretakedown = i810_driver_pretakedown, -	.prerelease = i810_driver_prerelease, +	.load = i810_driver_load, +	.lastclose = i810_driver_lastclose, +	.preclose = i810_driver_preclose,  	.device_is_agp = i810_driver_device_is_agp, -	.release = i810_driver_release, +	.reclaim_buffers_locked = i810_driver_reclaim_buffers_locked,  	.dma_quiescent = i810_driver_dma_quiescent,  	.get_map_ofs = drm_core_get_map_ofs,  	.get_reg_ofs = drm_core_get_reg_ofs,  	.dri_library_name = dri_library_name, -	.postinit = postinit, -	.version = version,  	.ioctls = i810_ioctls,  	.fops = {  		.owner = THIS_MODULE, diff --git a/linux-core/i810_drv.h b/linux-core/i810_drv.h index 6f06f09e..65bc77dd 100644 --- a/linux-core/i810_drv.h +++ b/linux-core/i810_drv.h @@ -116,9 +116,13 @@ typedef struct drm_i810_private {  extern void i810_reclaim_buffers(drm_device_t *dev, struct file *filp);  extern int i810_driver_dma_quiescent(drm_device_t * dev); -extern void i810_driver_release(drm_device_t * dev, struct file *filp); -extern void i810_driver_pretakedown(drm_device_t * dev); -extern void i810_driver_prerelease(drm_device_t * dev, DRMFILE filp); +extern void i810_driver_reclaim_buffers_locked(drm_device_t * dev, +					       struct file *filp); +extern int i810_driver_load(struct drm_device *, unsigned long flags); +extern void i810_driver_lastclose(drm_device_t * dev); +extern void i810_driver_preclose(drm_device_t * dev, DRMFILE filp); +extern void i810_driver_reclaim_buffers_locked(drm_device_t * dev, +					       struct file *filp);  extern int i810_driver_device_is_agp(drm_device_t * dev);  #define I810_BASE(reg)		((unsigned long) \ diff --git a/linux-core/i830_dma.c b/linux-core/i830_dma.c index 10d9dff6..1c44f70d 100644 --- a/linux-core/i830_dma.c +++ b/linux-core/i830_dma.c @@ -1524,12 +1524,24 @@ static int i830_setparam(struct inode *inode, struct file *filp,  	return 0;  } -void i830_driver_pretakedown(drm_device_t * dev) +int i830_driver_load(drm_device_t *dev, unsigned long flags) +{ +	/* i830 has 4 more counters */ +	dev->counters += 4; +	dev->types[6] = _DRM_STAT_IRQ; +	dev->types[7] = _DRM_STAT_PRIMARY; +	dev->types[8] = _DRM_STAT_SECONDARY; +	dev->types[9] = _DRM_STAT_DMA; + +	return 0; +} + +void i830_driver_lastclose(drm_device_t * dev)  {  	i830_dma_cleanup(dev);  } -void i830_driver_prerelease(drm_device_t * dev, DRMFILE filp) +void i830_driver_preclose(drm_device_t * dev, DRMFILE filp)  {  	if (dev->dev_private) {  		drm_i830_private_t *dev_priv = dev->dev_private; @@ -1539,7 +1551,7 @@ void i830_driver_prerelease(drm_device_t * dev, DRMFILE filp)  	}  } -void i830_driver_release(drm_device_t * dev, struct file *filp) +void i830_driver_reclaim_buffers_locked(drm_device_t * dev, struct file *filp)  {  	i830_reclaim_buffers(dev, filp);  } diff --git a/linux-core/i830_drv.c b/linux-core/i830_drv.c index 6b2955fe..b58b842e 100644 --- a/linux-core/i830_drv.c +++ b/linux-core/i830_drv.c @@ -41,36 +41,6 @@  #include "drm_pciids.h" -int postinit(struct drm_device *dev, unsigned long flags) -{ -	dev->counters += 4; -	dev->types[6] = _DRM_STAT_IRQ; -	dev->types[7] = _DRM_STAT_PRIMARY; -	dev->types[8] = _DRM_STAT_SECONDARY; -	dev->types[9] = _DRM_STAT_DMA; - -	DRM_INFO("Initialized %s %d.%d.%d %s on minor %d: %s\n", -		 DRIVER_NAME, -		 DRIVER_MAJOR, -		 DRIVER_MINOR, -		 DRIVER_PATCHLEVEL, -		 DRIVER_DATE, dev->primary.minor, pci_pretty_name(dev->pdev) -	    ); -	return 0; -} - -static int version(drm_version_t * version) -{ -	int len; - -	version->version_major = DRIVER_MAJOR; -	version->version_minor = DRIVER_MINOR; -	version->version_patchlevel = DRIVER_PATCHLEVEL; -	DRM_COPY(version->name, DRIVER_NAME); -	DRM_COPY(version->date, DRIVER_DATE); -	DRM_COPY(version->desc, DRIVER_DESC); -	return 0; -}  static struct pci_device_id pciidlist[] = {  	i830_PCI_IDS @@ -88,10 +58,11 @@ static struct drm_driver driver = {  	.driver_features |= DRIVER_HAVE_IRQ | DRIVER_SHARED_IRQ,  #endif  	.dev_priv_size = sizeof(drm_i830_buf_priv_t), -	.pretakedown = i830_driver_pretakedown, -	.prerelease = i830_driver_prerelease, +	.load = i830_driver_load, +	.lastclose = i830_driver_lastclose, +	.preclose = i830_driver_preclose,  	.device_is_agp = i830_driver_device_is_agp, -	.release = i830_driver_release, +	.reclaim_buffers_locked = i830_driver_reclaim_buffers_locked,  	.dma_quiescent = i830_driver_dma_quiescent,  	.get_map_ofs = drm_core_get_map_ofs,  	.get_reg_ofs = drm_core_get_reg_ofs, @@ -101,8 +72,6 @@ static struct drm_driver driver = {  	.irq_uninstall = i830_driver_irq_uninstall,  	.irq_handler = i830_driver_irq_handler,  #endif -	.postinit = postinit, -	.version = version,  	.ioctls = i830_ioctls,  	.fops = {  		.owner = THIS_MODULE, @@ -118,7 +87,14 @@ static struct drm_driver driver = {  		.id_table = pciidlist,  		.probe = probe,  		.remove = __devexit_p(drm_cleanup_pci), -	} +	}, + +	.name = DRIVER_NAME, +	.desc = DRIVER_DESC, +	.date = DRIVER_DATE, +	.major = DRIVER_MAJOR, +	.minor = DRIVER_MINOR, +	.patchlevel = DRIVER_PATCHLEVEL,  };  static int probe(struct pci_dev *pdev, const struct pci_device_id *ent) diff --git a/linux-core/i830_drv.h b/linux-core/i830_drv.h index bf384e2a..1ab980b4 100644 --- a/linux-core/i830_drv.h +++ b/linux-core/i830_drv.h @@ -133,10 +133,12 @@ extern irqreturn_t i830_driver_irq_handler(DRM_IRQ_ARGS);  extern void i830_driver_irq_preinstall(drm_device_t * dev);  extern void i830_driver_irq_postinstall(drm_device_t * dev);  extern void i830_driver_irq_uninstall(drm_device_t * dev); -extern void i830_driver_pretakedown(drm_device_t * dev); -extern void i830_driver_release(drm_device_t * dev, struct file *filp); +extern int i830_driver_load(struct drm_device *, unsigned long flags); +extern void i830_driver_preclose(drm_device_t * dev, DRMFILE filp); +extern void i830_driver_lastclose(drm_device_t * dev); +extern void i830_driver_reclaim_buffers_locked(drm_device_t * dev, +					       struct file *filp);  extern int i830_driver_dma_quiescent(drm_device_t * dev); -extern void i830_driver_prerelease(drm_device_t * dev, DRMFILE filp);  extern int i830_driver_device_is_agp(drm_device_t * dev);  #define I830_BASE(reg)		((unsigned long) \ diff --git a/linux-core/i915_drv.c b/linux-core/i915_drv.c index de6780ec..4e3e59b6 100644 --- a/linux-core/i915_drv.c +++ b/linux-core/i915_drv.c @@ -34,37 +34,6 @@  #include "drm_pciids.h" -static int postinit(struct drm_device *dev, unsigned long flags) -{ -	dev->counters += 4; -	dev->types[6] = _DRM_STAT_IRQ; -	dev->types[7] = _DRM_STAT_PRIMARY; -	dev->types[8] = _DRM_STAT_SECONDARY; -	dev->types[9] = _DRM_STAT_DMA; - -	DRM_INFO("Initialized %s %d.%d.%d %s on minor %d: %s\n", -		 DRIVER_NAME, -		 DRIVER_MAJOR, -		 DRIVER_MINOR, -		 DRIVER_PATCHLEVEL, -		 DRIVER_DATE, dev->primary.minor, pci_pretty_name(dev->pdev) -	    ); -	return 0; -} - -static int version(drm_version_t * version) -{ -	int len; - -	version->version_major = DRIVER_MAJOR; -	version->version_minor = DRIVER_MINOR; -	version->version_patchlevel = DRIVER_PATCHLEVEL; -	DRM_COPY(version->name, DRIVER_NAME); -	DRM_COPY(version->date, DRIVER_DATE); -	DRM_COPY(version->desc, DRIVER_DESC); -	return 0; -} -  static struct pci_device_id pciidlist[] = {  	i915_PCI_IDS  }; @@ -77,8 +46,9 @@ static struct drm_driver driver = {  	.driver_features =  	    DRIVER_USE_AGP | DRIVER_REQUIRE_AGP | DRIVER_USE_MTRR |  	    DRIVER_HAVE_IRQ | DRIVER_IRQ_SHARED, -	.pretakedown = i915_driver_pretakedown, -	.prerelease = i915_driver_prerelease, +	.load = i915_driver_load, +	.lastclose = i915_driver_lastclose, +	.preclose = i915_driver_preclose,  	.device_is_agp = i915_driver_device_is_agp,  	.irq_preinstall = i915_driver_irq_preinstall,  	.irq_postinstall = i915_driver_irq_postinstall, @@ -87,8 +57,6 @@ static struct drm_driver driver = {  	.reclaim_buffers = drm_core_reclaim_buffers,  	.get_map_ofs = drm_core_get_map_ofs,  	.get_reg_ofs = drm_core_get_reg_ofs, -	.postinit = postinit, -	.version = version,  	.ioctls = i915_ioctls,  	.fops = {  		.owner = THIS_MODULE, @@ -106,7 +74,14 @@ static struct drm_driver driver = {  		/* .resume = i915_resume, - need BIOS to re-init */  		.suspend = i915_suspend,  		.remove = __devexit_p(drm_cleanup_pci), -		} +		}, + +	.name = DRIVER_NAME, +	.desc = DRIVER_DESC, +	.date = DRIVER_DATE, +	.major = DRIVER_MAJOR, +	.minor = DRIVER_MINOR, +	.patchlevel = DRIVER_PATCHLEVEL,  };  static int probe(struct pci_dev *pdev, const struct pci_device_id *ent) diff --git a/linux-core/imagine_drv.c b/linux-core/imagine_drv.c index ec5454ce..bec2fae4 100644 --- a/linux-core/imagine_drv.c +++ b/linux-core/imagine_drv.c @@ -30,27 +30,6 @@  static struct drm_driver driver; -static int postinit(struct drm_device *dev, unsigned long flags) -{ -    DRM_INFO("Initialized %s %d.%d.%d %s on minor %d: %s\n", -             DRIVER_NAME, DRIVER_MAJOR, DRIVER_MINOR, DRIVER_PATCHLEVEL, -             DRIVER_DATE, dev->primary.minor, pci_pretty_name(dev->pdev)); -    return 0; -} - -static int version(drm_version_t *version) -{ -    int len; - -    version->version_major = DRIVER_MAJOR; -    version->version_minor = DRIVER_MINOR; -    version->version_patchlevel = DRIVER_PATCHLEVEL; -    DRM_COPY(version->name, DRIVER_NAME); -    DRM_COPY(version->date, DRIVER_DATE); -    DRM_COPY(version->desc, DRIVER_DESC); -    return 0; -} -  static struct pci_device_id pciidlist[] = {      imagine_PCI_IDS  }; @@ -65,8 +44,6 @@ static struct drm_driver driver = {      .reclaim_buffers = drm_core_reclaim_buffers,      .get_map_ofs = drm_core_get_map_ofs,      .get_reg_ofs = drm_core_get_reg_ofs, -    .postinit = postinit, -    .version = version,      .fops = {          .owner = THIS_MODULE,          .open = drm_open, @@ -82,6 +59,13 @@ static struct drm_driver driver = {          .probe = probe,          .remove = __devexit_p(drm_cleanup_pci),      }, + +    .name = DRIVER_NAME, +    .desc = DRIVER_DESC, +    .date = DRIVER_DATE, +    .major = DRIVER_MAJOR, +    .minor = DRIVER_MINOR, +    .patchlevel = DRIVER_PATCHLEVEL,  };  static int __init imagine_init(void) diff --git a/linux-core/mach64_drv.c b/linux-core/mach64_drv.c index 5852c443..bcf60b59 100644 --- a/linux-core/mach64_drv.c +++ b/linux-core/mach64_drv.c @@ -35,31 +35,6 @@  #include "drm_pciids.h" -static int postinit(struct drm_device *dev, unsigned long flags) -{ -	DRM_INFO("Initialized %s %d.%d.%d %s on minor %d: %s\n", -		 DRIVER_NAME, -		 DRIVER_MAJOR, -		 DRIVER_MINOR, -		 DRIVER_PATCHLEVEL, -		 DRIVER_DATE, dev->primary.minor, pci_pretty_name(dev->pdev) -	    ); -	return 0; -} - -static int version(drm_version_t * version) -{ -	int len; - -	version->version_major = DRIVER_MAJOR; -	version->version_minor = DRIVER_MINOR; -	version->version_patchlevel = DRIVER_PATCHLEVEL; -	DRM_COPY(version->name, DRIVER_NAME); -	DRM_COPY(version->date, DRIVER_DATE); -	DRM_COPY(version->desc, DRIVER_DESC); -	return 0; -} -  static struct pci_device_id pciidlist[] = {  	mach64_PCI_IDS  }; @@ -72,7 +47,7 @@ static struct drm_driver driver = {  	.driver_features =  	    DRIVER_USE_AGP | DRIVER_USE_MTRR | DRIVER_PCI_DMA | DRIVER_HAVE_DMA  	    | DRIVER_HAVE_IRQ | DRIVER_IRQ_SHARED | DRIVER_IRQ_VBL, -	.pretakedown = mach64_driver_pretakedown, +	.lastclose = mach64_driver_lastclose,  	.vblank_wait = mach64_driver_vblank_wait,  	.irq_preinstall = mach64_driver_irq_preinstall,  	.irq_postinstall = mach64_driver_irq_postinstall, @@ -81,8 +56,6 @@ static struct drm_driver driver = {  	.reclaim_buffers = drm_core_reclaim_buffers,  	.get_map_ofs = drm_core_get_map_ofs,  	.get_reg_ofs = drm_core_get_reg_ofs, -	.postinit = postinit, -	.version = version,  	.ioctls = mach64_ioctls,  	.dma_ioctl = mach64_dma_buffers,  	.fops = { @@ -99,7 +72,14 @@ static struct drm_driver driver = {  		.id_table = pciidlist,  		.probe = probe,  		.remove = __devexit_p(drm_cleanup_pci), -	} +	}, + +	.name = DRIVER_NAME, +	.desc = DRIVER_DESC, +	.date = DRIVER_DATE, +	.major = DRIVER_MAJOR, +	.minor = DRIVER_MINOR, +	.patchlevel = DRIVER_PATCHLEVEL,  };  static int probe(struct pci_dev *pdev, const struct pci_device_id *ent) diff --git a/linux-core/mga_drv.c b/linux-core/mga_drv.c index 61c3ea06..4dc56031 100644 --- a/linux-core/mga_drv.c +++ b/linux-core/mga_drv.c @@ -38,41 +38,6 @@  #include "drm_pciids.h"  static int mga_driver_device_is_agp(drm_device_t * dev); -static int postinit(struct drm_device *dev, unsigned long flags) -{ -	drm_mga_private_t * const dev_priv = -		(drm_mga_private_t *) dev->dev_private; - -	dev_priv->mmio_base = pci_resource_start(dev->pdev, 1); -	dev_priv->mmio_size = pci_resource_len(dev->pdev, 1); - -	dev->counters += 3; -	dev->types[6] = _DRM_STAT_IRQ; -	dev->types[7] = _DRM_STAT_PRIMARY; -	dev->types[8] = _DRM_STAT_SECONDARY; - -	DRM_INFO("Initialized %s %d.%d.%d %s on minor %d: %s\n", -		 DRIVER_NAME, -		 DRIVER_MAJOR, -		 DRIVER_MINOR, -		 DRIVER_PATCHLEVEL, -		 DRIVER_DATE, dev->primary.minor, pci_pretty_name(dev->pdev) -	    ); -	return 0; -} - -static int version(drm_version_t * version) -{ -	int len; - -	version->version_major = DRIVER_MAJOR; -	version->version_minor = DRIVER_MINOR; -	version->version_patchlevel = DRIVER_PATCHLEVEL; -	DRM_COPY(version->name, DRIVER_NAME); -	DRM_COPY(version->date, DRIVER_DATE); -	DRM_COPY(version->desc, DRIVER_DESC); -	return 0; -}  static struct pci_device_id pciidlist[] = {  	mga_PCI_IDS @@ -87,9 +52,9 @@ static struct drm_driver driver = {  	    DRIVER_USE_AGP | DRIVER_USE_MTRR | DRIVER_PCI_DMA |  	    DRIVER_HAVE_DMA | DRIVER_HAVE_IRQ | DRIVER_IRQ_SHARED |  	    DRIVER_IRQ_VBL, -	.preinit = mga_driver_preinit, -	.postcleanup = mga_driver_postcleanup, -	.pretakedown = mga_driver_pretakedown, +	.load = mga_driver_load, +	.unload = mga_driver_unload, +	.lastclose = mga_driver_lastclose,  	.dma_quiescent = mga_driver_dma_quiescent,  	.device_is_agp = mga_driver_device_is_agp,  	.vblank_wait = mga_driver_vblank_wait, @@ -100,8 +65,6 @@ static struct drm_driver driver = {  	.reclaim_buffers = drm_core_reclaim_buffers,  	.get_map_ofs = drm_core_get_map_ofs,  	.get_reg_ofs = drm_core_get_reg_ofs, -	.postinit = postinit, -	.version = version,  	.ioctls = mga_ioctls,  	.dma_ioctl = mga_dma_buffers,  	.fops = { @@ -121,7 +84,14 @@ static struct drm_driver driver = {  		.id_table = pciidlist,  		.probe = probe,  		.remove = __devexit_p(drm_cleanup_pci), -	} +	}, + +	.name = DRIVER_NAME, +	.desc = DRIVER_DESC, +	.date = DRIVER_DATE, +	.major = DRIVER_MAJOR, +	.minor = DRIVER_MINOR, +	.patchlevel = DRIVER_PATCHLEVEL,  };  static int probe(struct pci_dev *pdev, const struct pci_device_id *ent) diff --git a/linux-core/r128_drv.c b/linux-core/r128_drv.c index 8b4b7447..b6cff4de 100644 --- a/linux-core/r128_drv.c +++ b/linux-core/r128_drv.c @@ -37,31 +37,6 @@  #include "drm_pciids.h" -static int postinit(struct drm_device *dev, unsigned long flags) -{ -	DRM_INFO("Initialized %s %d.%d.%d %s on minor %d: %s\n", -		 DRIVER_NAME, -		 DRIVER_MAJOR, -		 DRIVER_MINOR, -		 DRIVER_PATCHLEVEL, -		 DRIVER_DATE, dev->primary.minor, pci_pretty_name(dev->pdev) -	    ); -	return 0; -} - -static int version(drm_version_t * version) -{ -	int len; - -	version->version_major = DRIVER_MAJOR; -	version->version_minor = DRIVER_MINOR; -	version->version_patchlevel = DRIVER_PATCHLEVEL; -	DRM_COPY(version->name, DRIVER_NAME); -	DRM_COPY(version->date, DRIVER_DATE); -	DRM_COPY(version->desc, DRIVER_DESC); -	return 0; -} -  static struct pci_device_id pciidlist[] = {  	r128_PCI_IDS  }; @@ -76,8 +51,8 @@ static struct drm_driver driver = {  	    DRIVER_HAVE_DMA | DRIVER_HAVE_IRQ | DRIVER_IRQ_SHARED |  	    DRIVER_IRQ_VBL,  	.dev_priv_size = sizeof(drm_r128_buf_priv_t), -	.prerelease = r128_driver_prerelease, -	.pretakedown = r128_driver_pretakedown, +	.preclose = r128_driver_preclose, +	.lastclose = r128_driver_lastclose,  	.vblank_wait = r128_driver_vblank_wait,  	.irq_preinstall = r128_driver_irq_preinstall,  	.irq_postinstall = r128_driver_irq_postinstall, @@ -86,8 +61,6 @@ static struct drm_driver driver = {  	.reclaim_buffers = drm_core_reclaim_buffers,  	.get_map_ofs = drm_core_get_map_ofs,  	.get_reg_ofs = drm_core_get_reg_ofs, -	.postinit = postinit, -	.version = version,  	.ioctls = r128_ioctls,  	.dma_ioctl = r128_cce_buffers,  	.fops = { @@ -107,7 +80,14 @@ static struct drm_driver driver = {  		.id_table = pciidlist,  		.probe = probe,  		.remove = __devexit_p(drm_cleanup_pci), -	} +	}, + +	.name = DRIVER_NAME, +	.desc = DRIVER_DESC, +	.date = DRIVER_DATE, +	.major = DRIVER_MAJOR, +	.minor = DRIVER_MINOR, +	.patchlevel = DRIVER_PATCHLEVEL,  };  static int probe(struct pci_dev *pdev, const struct pci_device_id *ent) diff --git a/linux-core/radeon_drv.c b/linux-core/radeon_drv.c index a79bdf38..41ca7acf 100644 --- a/linux-core/radeon_drv.c +++ b/linux-core/radeon_drv.c @@ -37,30 +37,6 @@  #include "drm_pciids.h" -static int postinit(struct drm_device *dev, unsigned long flags) -{ -	DRM_INFO("Initialized %s %d.%d.%d %s on minor %d: %s\n", -		 DRIVER_NAME, -		 DRIVER_MAJOR, -		 DRIVER_MINOR, -		 DRIVER_PATCHLEVEL, -		 DRIVER_DATE, dev->primary.minor, pci_pretty_name(dev->pdev) -	    ); -	return 0; -} - -static int version(drm_version_t * version) -{ -	int len; - -	version->version_major = DRIVER_MAJOR; -	version->version_minor = DRIVER_MINOR; -	version->version_patchlevel = DRIVER_PATCHLEVEL; -	DRM_COPY(version->name, DRIVER_NAME); -	DRM_COPY(version->date, DRIVER_DATE); -	DRM_COPY(version->desc, DRIVER_DESC); -	return 0; -}  static int dri_library_name(struct drm_device * dev, char * buf)  { @@ -87,24 +63,22 @@ static struct drm_driver driver = {  	    DRIVER_HAVE_IRQ | DRIVER_HAVE_DMA | DRIVER_IRQ_SHARED |  	    DRIVER_IRQ_VBL,  	.dev_priv_size = sizeof(drm_radeon_buf_priv_t), -	.preinit = radeon_preinit, -	.presetup = radeon_presetup, -	.postcleanup = radeon_postcleanup, -	.prerelease = radeon_driver_prerelease, -	.pretakedown = radeon_driver_pretakedown, -	.open_helper = radeon_driver_open_helper, +	.load = radeon_driver_load, +	.firstopen = radeon_driver_firstopen, +	.open = radeon_driver_open, +	.preclose = radeon_driver_preclose, +	.postclose = radeon_driver_postclose, +	.lastclose = radeon_driver_lastclose, +	.unload = radeon_driver_unload,  	.vblank_wait = radeon_driver_vblank_wait,  	.dri_library_name = dri_library_name,  	.irq_preinstall = radeon_driver_irq_preinstall,  	.irq_postinstall = radeon_driver_irq_postinstall,  	.irq_uninstall = radeon_driver_irq_uninstall,  	.irq_handler = radeon_driver_irq_handler, -	.free_filp_priv = radeon_driver_free_filp_priv,  	.reclaim_buffers = drm_core_reclaim_buffers,  	.get_map_ofs = drm_core_get_map_ofs,  	.get_reg_ofs = drm_core_get_reg_ofs, -	.postinit = postinit, -	.version = version,  	.ioctls = radeon_ioctls,  	.dma_ioctl = radeon_cp_buffers,  	.fops = { @@ -124,7 +98,14 @@ static struct drm_driver driver = {  		.id_table = pciidlist,  		.probe = probe,  		.remove = __devexit_p(drm_cleanup_pci), -	} +	}, + +	.name = DRIVER_NAME, +	.desc = DRIVER_DESC, +	.date = DRIVER_DATE, +	.major = DRIVER_MAJOR, +	.minor = DRIVER_MINOR, +	.patchlevel = DRIVER_PATCHLEVEL,  };  static int probe(struct pci_dev *pdev, const struct pci_device_id *ent) diff --git a/linux-core/savage_drv.c b/linux-core/savage_drv.c index 5006e6ca..be54bd47 100644 --- a/linux-core/savage_drv.c +++ b/linux-core/savage_drv.c @@ -30,33 +30,6 @@  #include "drm_pciids.h" -static int postinit( struct drm_device *dev, unsigned long flags ) -{ -	DRM_INFO( "Initialized %s %d.%d.%d %s on minor %d: %s\n", -		DRIVER_NAME, -		DRIVER_MAJOR, -		DRIVER_MINOR, -		DRIVER_PATCHLEVEL, -		DRIVER_DATE, -		dev->primary.minor, -		pci_pretty_name(dev->pdev) -		); -	return 0; -} - -static int version( drm_version_t *version ) -{ -	int len; - -	version->version_major = DRIVER_MAJOR; -	version->version_minor = DRIVER_MINOR; -	version->version_patchlevel = DRIVER_PATCHLEVEL; -	DRM_COPY( version->name, DRIVER_NAME ); -	DRM_COPY( version->date, DRIVER_DATE ); -	DRM_COPY( version->desc, DRIVER_DESC ); -	return 0; -} -  static struct pci_device_id pciidlist[] = {  	savage_PCI_IDS  }; @@ -74,13 +47,13 @@ static struct drm_driver driver = {  	    DRIVER_USE_AGP | DRIVER_USE_MTRR |  	    DRIVER_HAVE_DMA | DRIVER_PCI_DMA,  	.dev_priv_size = sizeof(drm_savage_buf_priv_t), -	.preinit = savage_preinit, -	.postinit = postinit, -	.postcleanup = savage_postcleanup, +	.load = savage_driver_load, +	.firstopen = savage_driver_firstopen, +	.lastclose = savage_driver_lastclose, +	.unload = savage_driver_unload,  	.reclaim_buffers = savage_reclaim_buffers,  	.get_map_ofs = drm_core_get_map_ofs,  	.get_reg_ofs = drm_core_get_reg_ofs, -	.version = version,  	.ioctls = ioctls,  	.num_ioctls = DRM_ARRAY_SIZE(ioctls),  	.dma_ioctl = savage_bci_buffers, @@ -98,7 +71,14 @@ static struct drm_driver driver = {  		.id_table      = pciidlist,  		.probe         = probe,  		.remove        = __devexit_p(drm_cleanup_pci), -	} +	}, + +	.name = DRIVER_NAME, +	.desc = DRIVER_DESC, +	.date = DRIVER_DATE, +	.major = DRIVER_MAJOR, +	.minor = DRIVER_MINOR, +	.patchlevel = DRIVER_PATCHLEVEL,  };  static int probe(struct pci_dev *pdev, const struct pci_device_id *ent) diff --git a/linux-core/sis_drv.c b/linux-core/sis_drv.c index b38ae201..e524ae2d 100644 --- a/linux-core/sis_drv.c +++ b/linux-core/sis_drv.c @@ -32,31 +32,6 @@  #include "drm_pciids.h" -static int postinit(struct drm_device *dev, unsigned long flags) -{ -	DRM_INFO("Initialized %s %d.%d.%d %s on minor %d: %s\n", -		 DRIVER_NAME, -		 DRIVER_MAJOR, -		 DRIVER_MINOR, -		 DRIVER_PATCHLEVEL, -		 DRIVER_DATE, dev->primary.minor, pci_pretty_name(dev->pdev) -	    ); -	return 0; -} - -static int version(drm_version_t * version) -{ -	int len; - -	version->version_major = DRIVER_MAJOR; -	version->version_minor = DRIVER_MINOR; -	version->version_patchlevel = DRIVER_PATCHLEVEL; -	DRM_COPY(version->name, DRIVER_NAME); -	DRM_COPY(version->date, DRIVER_DATE); -	DRM_COPY(version->desc, DRIVER_DESC); -	return 0; -} -  static struct pci_device_id pciidlist[] = {  	sis_PCI_IDS  }; @@ -72,8 +47,6 @@ static struct drm_driver driver = {  	.reclaim_buffers = drm_core_reclaim_buffers,  	.get_map_ofs = drm_core_get_map_ofs,  	.get_reg_ofs = drm_core_get_reg_ofs, -	.postinit = postinit, -	.version = version,  	.ioctls = sis_ioctls,  	.fops = {  		.owner = THIS_MODULE, @@ -89,7 +62,14 @@ static struct drm_driver driver = {  		.id_table = pciidlist,  		.probe = probe,  		.remove = __devexit_p(drm_cleanup_pci), -	} +	}, + +	.name = DRIVER_NAME, +	.desc = DRIVER_DESC, +	.date = DRIVER_DATE, +	.major = DRIVER_MAJOR, +	.minor = DRIVER_MINOR, +	.patchlevel = DRIVER_PATCHLEVEL,  };  static int probe(struct pci_dev *pdev, const struct pci_device_id *ent) diff --git a/linux-core/tdfx_drv.c b/linux-core/tdfx_drv.c index 9062cb0a..ce1b7c5a 100644 --- a/linux-core/tdfx_drv.c +++ b/linux-core/tdfx_drv.c @@ -36,31 +36,6 @@  #include "drm_pciids.h" -static int postinit(struct drm_device *dev, unsigned long flags) -{ -	DRM_INFO("Initialized %s %d.%d.%d %s on minor %d: %s\n", -		 DRIVER_NAME, -		 DRIVER_MAJOR, -		 DRIVER_MINOR, -		 DRIVER_PATCHLEVEL, -		 DRIVER_DATE, dev->primary.minor, pci_pretty_name(dev->pdev) -	    ); -	return 0; -} - -static int version(drm_version_t * version) -{ -	int len; - -	version->version_major = DRIVER_MAJOR; -	version->version_minor = DRIVER_MINOR; -	version->version_patchlevel = DRIVER_PATCHLEVEL; -	DRM_COPY(version->name, DRIVER_NAME); -	DRM_COPY(version->date, DRIVER_DATE); -	DRM_COPY(version->desc, DRIVER_DESC); -	return 0; -} -  static struct pci_device_id pciidlist[] = {  	tdfx_PCI_IDS  }; @@ -71,8 +46,6 @@ static struct drm_driver driver = {  	.reclaim_buffers = drm_core_reclaim_buffers,  	.get_map_ofs = drm_core_get_map_ofs,  	.get_reg_ofs = drm_core_get_reg_ofs, -	.postinit = postinit, -	.version = version,  	.fops = {  		.owner = THIS_MODULE,  		.open = drm_open, @@ -87,7 +60,14 @@ static struct drm_driver driver = {  		.id_table = pciidlist,  		.probe = probe,  		.remove = __devexit_p(drm_cleanup_pci), -	} +	}, + +	.name = DRIVER_NAME, +	.desc = DRIVER_DESC, +	.date = DRIVER_DATE, +	.major = DRIVER_MAJOR, +	.minor = DRIVER_MINOR, +	.patchlevel = DRIVER_PATCHLEVEL,  };  static int probe(struct pci_dev *pdev, const struct pci_device_id *ent)  | 
