* #define DRIVER_DESC "Matrox G200/G400"
* #define DRIVER_DATE "20001127"
*
- * #define DRIVER_MAJOR 2
- * #define DRIVER_MINOR 0
- * #define DRIVER_PATCHLEVEL 2
- *
* #define DRIVER_IOCTL_COUNT DRM_ARRAY_SIZE( mga_ioctls )
*
* #define drm_x mga_##x
if (dev->driver->pretakedown)
dev->driver->pretakedown(dev);
+ if (dev->unique) {
+ drm_free(dev->unique, strlen(dev->unique) + 1, DRM_MEM_DRIVER);
+ dev->unique = NULL;
+ dev->unique_len = 0;
+ }
+
if ( dev->irq_enabled ) drm_irq_uninstall( dev );
down( &dev->struct_sem );
del_timer( &dev->timer );
- if ( dev->devname ) {
- drm_free( dev->devname, strlen( dev->devname ) + 1,
- DRM_MEM_DRIVER );
- dev->devname = NULL;
- }
-
- if ( dev->unique ) {
- drm_free( dev->unique, strlen( dev->unique ) + 1,
- DRM_MEM_DRIVER );
- dev->unique = NULL;
- dev->unique_len = 0;
- }
/* Clear pid list */
for ( i = 0 ; i < DRM_HASH_SIZE ; i++ ) {
for ( pt = dev->magiclist[i].head ; pt ; pt = next ) {
}
dev->agp->memory = NULL;
- if ( dev->agp->acquired ) drm_agp_do_release();
+ if ( dev->agp->acquired ) drm_agp_do_release(dev);
dev->agp->acquired = 0;
dev->agp->enabled = 0;
while ((pdev = pci_get_subsys(pid->vendor, pid->device, pid->subvendor, pid->subdevice, pdev)) != NULL) {
/* stealth mode requires a manual probe */
pci_dev_get(pdev);
- drm_probe(pdev, pid, driver);
+ drm_get_dev(pdev, pid, driver);
}
}
return 0;
if (dev->driver->postcleanup)
dev->driver->postcleanup(dev);
- if ( drm_put_minor(dev) )
+ drm_put_head(&dev->primary);
+ if ( drm_put_dev(dev) )
DRM_ERROR( "Cannot unload module\n" );
}
{
int i;
drm_device_t *dev = NULL;
- drm_minor_t *minor;
+ drm_head_t *head;
DRM_DEBUG( "\n" );
for (i = 0; i < drm_cards_limit; i++) {
- minor = &drm_minors[i];
- if (!minor->dev)
+ head = drm_heads[i];
+ if (!head)
continue;
- if (minor->dev->driver!=driver)
+ if (!head->dev)
continue;
-
- dev = minor->dev;
-
+ if (head->dev->driver!=driver)
+ continue;
+ dev=head->dev;
}
if (dev) {
/* release the pci driver */
pci_dev_put(dev->pdev);
drm_cleanup(dev);
}
-
DRM_INFO( "Module unloaded\n" );
}
EXPORT_SYMBOL(drm_exit);
int ret = -ENOMEM;
drm_cards_limit = (drm_cards_limit < DRM_MAX_MINOR + 1 ? drm_cards_limit : DRM_MAX_MINOR + 1);
- drm_minors = drm_calloc(drm_cards_limit,
- sizeof(*drm_minors), DRM_MEM_STUB);
- if(!drm_minors)
+ drm_heads = drm_calloc(drm_cards_limit,
+ sizeof(*drm_heads), DRM_MEM_STUB);
+ if(!drm_heads)
goto err_p1;
if (register_chrdev(DRM_MAJOR, "drm", &drm_stub_fops))
}
DRM_INFO( "Initialized %s %d.%d.%d %s\n",
- DRIVER_NAME,
- DRIVER_MAJOR,
- DRIVER_MINOR,
- DRIVER_PATCHLEVEL,
- DRIVER_DATE
- );
+ CORE_NAME, CORE_MAJOR, CORE_MINOR, CORE_PATCHLEVEL,
+ CORE_DATE);
return 0;
err_p3:
drm_sysfs_destroy(drm_class);
err_p2:
unregister_chrdev(DRM_MAJOR, "drm");
- drm_free(drm_minors, sizeof(*drm_minors) * drm_cards_limit, DRM_MEM_STUB);
+ drm_free(drm_heads, sizeof(*drm_heads) * drm_cards_limit, DRM_MEM_STUB);
err_p1:
return ret;
}
unregister_chrdev(DRM_MAJOR, "drm");
- drm_free(drm_minors, sizeof(*drm_minors) *
+ drm_free(drm_heads, sizeof(*drm_heads) *
drm_cards_limit, DRM_MEM_STUB);
}
unsigned int cmd, unsigned long arg )
{
drm_file_t *priv = filp->private_data;
- drm_device_t *dev = priv->dev;
+ drm_device_t *dev = priv->head->dev;
drm_version_t __user *argp = (void __user *)arg;
drm_version_t version;
int ret;
unsigned int cmd, unsigned long arg )
{
drm_file_t *priv = filp->private_data;
- drm_device_t *dev = priv->dev;
+ drm_device_t *dev = priv->head->dev;
drm_ioctl_desc_t *ioctl;
drm_ioctl_t *func;
unsigned int nr = DRM_IOCTL_NR(cmd);
++priv->ioctl_count;
DRM_DEBUG( "pid=%d, cmd=0x%02x, nr=0x%02x, dev 0x%lx, auth=%d\n",
- current->pid, cmd, nr, (long)old_encode_dev(dev->device),
+ current->pid, cmd, nr, (long)old_encode_dev(priv->head->device),
priv->authenticated );
if (nr < DRIVER_IOCTL_COUNT)