summaryrefslogtreecommitdiff
path: root/shared/mga_dma.c
diff options
context:
space:
mode:
authorJon Smirl <jonsmirl@yahoo.com>2004-09-27 20:14:31 +0000
committerJon Smirl <jonsmirl@yahoo.com>2004-09-27 20:14:31 +0000
commit9e421181ddfc2d91859e9959487baf2df851e743 (patch)
tree6eaa1acc2f8d67365945b35b30bc060df436bd38 /shared/mga_dma.c
parent6d6526fdf9a4390fab3edbca79d6a0b80b84ddd1 (diff)
Fix the shared directory I accidentally stomped on
Diffstat (limited to 'shared/mga_dma.c')
-rw-r--r--shared/mga_dma.c34
1 files changed, 26 insertions, 8 deletions
diff --git a/shared/mga_dma.c b/shared/mga_dma.c
index 896787be..0288f1c2 100644
--- a/shared/mga_dma.c
+++ b/shared/mga_dma.c
@@ -33,6 +33,7 @@
* Gareth Hughes <gareth@valinux.com>
*/
+#include "mga.h"
#include "drmP.h"
#include "drm.h"
#include "mga_drm.h"
@@ -307,7 +308,7 @@ static int mga_freelist_init( drm_device_t *dev, drm_mga_private_t *dev_priv )
int i;
DRM_DEBUG( "count=%d\n", dma->buf_count );
- dev_priv->head = drm_alloc( sizeof(drm_mga_freelist_t),
+ dev_priv->head = DRM(alloc)( sizeof(drm_mga_freelist_t),
DRM_MEM_DRIVER );
if ( dev_priv->head == NULL )
return DRM_ERR(ENOMEM);
@@ -319,7 +320,7 @@ static int mga_freelist_init( drm_device_t *dev, drm_mga_private_t *dev_priv )
buf = dma->buflist[i];
buf_priv = buf->dev_private;
- entry = drm_alloc( sizeof(drm_mga_freelist_t),
+ entry = DRM(alloc)( sizeof(drm_mga_freelist_t),
DRM_MEM_DRIVER );
if ( entry == NULL )
return DRM_ERR(ENOMEM);
@@ -356,7 +357,7 @@ static void mga_freelist_cleanup( drm_device_t *dev )
entry = dev_priv->head;
while ( entry ) {
next = entry->next;
- drm_free( entry, sizeof(drm_mga_freelist_t), DRM_MEM_DRIVER );
+ DRM(free)( entry, sizeof(drm_mga_freelist_t), DRM_MEM_DRIVER );
entry = next;
}
@@ -457,7 +458,7 @@ static int mga_do_init_dma( drm_device_t *dev, drm_mga_init_t *init )
int ret;
DRM_DEBUG( "\n" );
- dev_priv = drm_alloc( sizeof(drm_mga_private_t), DRM_MEM_DRIVER );
+ dev_priv = DRM(alloc)( sizeof(drm_mga_private_t), DRM_MEM_DRIVER );
if ( !dev_priv )
return DRM_ERR(ENOMEM);
@@ -633,7 +634,7 @@ int mga_do_cleanup_dma( drm_device_t *dev )
* may not have been called from userspace and after dev_private
* is freed, it's too late.
*/
- if ( dev->irq_enabled ) drm_irq_uninstall(dev);
+ if ( dev->irq_enabled ) DRM(irq_uninstall)(dev);
if ( dev->dev_private ) {
drm_mga_private_t *dev_priv = dev->dev_private;
@@ -651,7 +652,7 @@ int mga_do_cleanup_dma( drm_device_t *dev )
mga_freelist_cleanup( dev );
}
- drm_free( dev->dev_private, sizeof(drm_mga_private_t),
+ DRM(free)( dev->dev_private, sizeof(drm_mga_private_t),
DRM_MEM_DRIVER );
dev->dev_private = NULL;
}
@@ -799,13 +800,30 @@ int mga_dma_buffers( DRM_IOCTL_ARGS )
return ret;
}
-void mga_driver_pretakedown(drm_device_t *dev)
+static void mga_driver_pretakedown(drm_device_t *dev)
{
mga_do_cleanup_dma( dev );
}
-int mga_driver_dma_quiescent(drm_device_t *dev)
+static int mga_driver_dma_quiescent(drm_device_t *dev)
{
drm_mga_private_t *dev_priv = dev->dev_private;
return mga_do_wait_for_idle( dev_priv );
}
+
+void mga_driver_register_fns(drm_device_t *dev)
+{
+ dev->driver_features = DRIVER_USE_AGP | DRIVER_REQUIRE_AGP | DRIVER_USE_MTRR | DRIVER_HAVE_DMA | DRIVER_HAVE_IRQ | DRIVER_IRQ_SHARED | DRIVER_IRQ_VBL;
+ dev->fn_tbl.pretakedown = mga_driver_pretakedown;
+ dev->fn_tbl.dma_quiescent = mga_driver_dma_quiescent;
+ dev->fn_tbl.vblank_wait = mga_driver_vblank_wait;
+ dev->fn_tbl.irq_preinstall = mga_driver_irq_preinstall;
+ dev->fn_tbl.irq_postinstall = mga_driver_irq_postinstall;
+ dev->fn_tbl.irq_uninstall = mga_driver_irq_uninstall;
+ dev->fn_tbl.irq_handler = mga_driver_irq_handler;
+
+ dev->counters += 3;
+ dev->types[6] = _DRM_STAT_IRQ;
+ dev->types[7] = _DRM_STAT_PRIMARY;
+ dev->types[8] = _DRM_STAT_SECONDARY;
+}