diff options
| author | Thomas Hellstrom <thomas@tungstengraphics.com> | 2006-06-06 14:19:00 +0000 | 
|---|---|---|
| committer | Thomas Hellstrom <thomas@tungstengraphics.com> | 2006-06-06 14:19:00 +0000 | 
| commit | 6bacb180cef00573fc41a1e79bdd5b89d6f1c1f5 (patch) | |
| tree | e11dc34c7c318a1ce901b932ac53d95012e5c871 /linux-core/sis_drv.c | |
| parent | 838b03f7aad579bcb593c06e44ade02a0583d3ce (diff) | |
Merge in the drm-sman-branch
Diffstat (limited to 'linux-core/sis_drv.c')
| -rw-r--r-- | linux-core/sis_drv.c | 36 | 
1 files changed, 34 insertions, 2 deletions
| diff --git a/linux-core/sis_drv.c b/linux-core/sis_drv.c index 96c143a5..5d55357c 100644 --- a/linux-core/sis_drv.c +++ b/linux-core/sis_drv.c @@ -36,12 +36,44 @@ static struct pci_device_id pciidlist[] = {  	sis_PCI_IDS  }; + +static int sis_driver_load(drm_device_t *dev, unsigned long chipset) +{ +	drm_sis_private_t *dev_priv; +        int ret; + +	dev_priv = drm_calloc(1, sizeof(drm_sis_private_t), DRM_MEM_DRIVER); +	if (dev_priv == NULL) +		return DRM_ERR(ENOMEM); + +	dev->dev_private = (void *)dev_priv; +        dev_priv->chipset = chipset; +        ret = drm_sman_init(&dev_priv->sman, 2, 12, 8); +	if (ret) { +		drm_free(dev_priv, sizeof(dev_priv), DRM_MEM_DRIVER); +	} + +	return ret; +} + +static int sis_driver_unload(drm_device_t *dev) +{ +	drm_sis_private_t *dev_priv = dev->dev_private; + +        drm_sman_takedown(&dev_priv->sman); +	drm_free(dev_priv, sizeof(*dev_priv), DRM_MEM_DRIVER); + +	return 0; +} + +  static int probe(struct pci_dev *pdev, const struct pci_device_id *ent);  static struct drm_driver driver = {  	.driver_features = DRIVER_USE_AGP | DRIVER_USE_MTRR, -	.context_ctor = sis_init_context, +        .load = sis_driver_load, +        .unload = sis_driver_unload,  	.context_dtor = sis_final_context, -	.reclaim_buffers = drm_core_reclaim_buffers, +	.reclaim_buffers = NULL,  	.get_map_ofs = drm_core_get_map_ofs,  	.get_reg_ofs = drm_core_get_reg_ofs,  	.ioctls = sis_ioctls, | 
