Exemple #1
0
int mga_do_cleanup_dma( drm_device_t *dev )
{
	DRM_DEBUG( "\n" );

#if __HAVE_IRQ
	/* Make sure interrupts are disabled here because the uninstall ioctl
	 * 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);
#endif

	if ( dev->dev_private ) {
		drm_mga_private_t *dev_priv = dev->dev_private;

		if ( dev_priv->warp != NULL )
			DRM_IOREMAPFREE( dev_priv->warp, dev );
		if ( dev_priv->primary != NULL )
			DRM_IOREMAPFREE( dev_priv->primary, dev );
		if ( dev_priv->buffers != NULL )
			DRM_IOREMAPFREE( dev_priv->buffers, dev );

		if ( dev_priv->head != NULL ) {
			mga_freelist_cleanup( dev );
		}

		DRM(free)( dev->dev_private, sizeof(drm_mga_private_t),
			   DRM_MEM_DRIVER );
		dev->dev_private = NULL;
	}

	return 0;
}
Exemple #2
0
int mga_do_cleanup_dma( drm_device_t *dev )
{
	DRM_DEBUG( "\n" );

	if ( dev->dev_private ) {
		drm_mga_private_t *dev_priv = dev->dev_private;

		DRM_IOREMAPFREE( dev_priv->warp, dev );
		DRM_IOREMAPFREE( dev_priv->primary, dev );
		DRM_IOREMAPFREE( dev_priv->buffers, dev );

		if ( dev_priv->head != NULL ) {
			mga_freelist_cleanup( dev );
		}

		DRM(free)( dev->dev_private, sizeof(drm_mga_private_t),
			   DRM_MEM_DRIVER );
		dev->dev_private = NULL;
	}

	return 0;
}