diff options
author | Eric Anholt <anholt@freebsd.org> | 2005-08-15 18:07:12 +0000 |
---|---|---|
committer | Eric Anholt <anholt@freebsd.org> | 2005-08-15 18:07:12 +0000 |
commit | 8c21b783c3e38aa2c2d16e11ec01cf695f8e7f8a (patch) | |
tree | c40ed75e583b24b7a9947221766c82d5a4cd061d /shared-core/via_map.c | |
parent | 4f5961eeeee806a2d6e08e159c56262d4f060cba (diff) |
Port the VIA DRM to FreeBSD. Original patch by Jake, with some cleanup by
me to match other drivers and avoid ifdeffing. The linux via_drv.c will
be moved from shared-core to linux-core soon by repocopy.
Submitted by: Jake Burkholder <jake@FreeBSD.org> Tested by: unichrome
Diffstat (limited to 'shared-core/via_map.c')
-rw-r--r-- | shared-core/via_map.c | 44 |
1 files changed, 27 insertions, 17 deletions
diff --git a/shared-core/via_map.c b/shared-core/via_map.c index bb171139..8e405418 100644 --- a/shared-core/via_map.c +++ b/shared-core/via_map.c @@ -27,16 +27,10 @@ static int via_do_init_map(drm_device_t * dev, drm_via_init_t * init) { - drm_via_private_t *dev_priv; + drm_via_private_t *dev_priv = dev->dev_private; DRM_DEBUG("%s\n", __FUNCTION__); - dev_priv = drm_alloc(sizeof(drm_via_private_t), DRM_MEM_DRIVER); - if (dev_priv == NULL) - return -ENOMEM; - - memset(dev_priv, 0, sizeof(drm_via_private_t)); - DRM_GETSAREA(); if (!dev_priv->sarea) { DRM_ERROR("could not find sarea!\n"); @@ -67,7 +61,6 @@ static int via_do_init_map(drm_device_t * dev, drm_via_init_t * init) dev_priv->agpAddr = init->agpAddr; via_init_futex( dev_priv ); - dev_priv->pro_group_a = (dev->pdev->device == 0x3118); dev->dev_private = (void *)dev_priv; return 0; @@ -75,19 +68,12 @@ static int via_do_init_map(drm_device_t * dev, drm_via_init_t * init) int via_do_cleanup_map(drm_device_t * dev) { - if (dev->dev_private) { - - drm_via_private_t *dev_priv = dev->dev_private; - - via_dma_cleanup(dev); - - drm_free(dev_priv, sizeof(drm_via_private_t), DRM_MEM_DRIVER); - dev->dev_private = NULL; - } + via_dma_cleanup(dev); return 0; } + int via_map_init(DRM_IOCTL_ARGS) { DRM_DEVICE; @@ -108,4 +94,28 @@ int via_map_init(DRM_IOCTL_ARGS) return -EINVAL; } +int via_driver_load(drm_device_t *dev, unsigned long chipset) +{ + drm_via_private_t *dev_priv; + + dev_priv = drm_calloc(1, sizeof(drm_via_private_t), DRM_MEM_DRIVER); + if (dev_priv == NULL) + return DRM_ERR(ENOMEM); + + dev->dev_private = (void *)dev_priv; + + if (chipset == VIA_PRO_GROUP_A) + dev_priv->pro_group_a = 1; + + return 0; +} + +int via_driver_unload(drm_device_t *dev) +{ + drm_via_private_t *dev_priv = dev->dev_private; + + drm_free(dev_priv, sizeof(drm_via_private_t), DRM_MEM_DRIVER); + + return 0; +} |