diff options
author | Leif Delgass <ldelgass@users.sourceforge.net> | 2003-04-26 22:28:56 +0000 |
---|---|---|
committer | Leif Delgass <ldelgass@users.sourceforge.net> | 2003-04-26 22:28:56 +0000 |
commit | f2a0c5438dc83171de1007a68e4f98e35b5a8fbe (patch) | |
tree | f886e31d758dda4c3460465d0f6be13921efbe58 /linux/i830.h | |
parent | a79adaab72bde726ce4c08184997f34b31014d9e (diff) |
Ensure driver has been initialized (dev_private != NULL) before installing
irq handler in DRM(irq_install). Modify all drivers to ensure irq
handler is removed before cleanup and cleanup is called at takedown.
Remove unused buffer private struct fields in i810, i830. Check for
lock on init/cleanup in all drivers except i810/i830. The current DDX
for i810 and i830 doesn't hold the lock on kernel init (FIXME?).
Diffstat (limited to 'linux/i830.h')
-rw-r--r-- | linux/i830.h | 36 |
1 files changed, 6 insertions, 30 deletions
diff --git a/linux/i830.h b/linux/i830.h index 432397a8..5775162a 100644 --- a/linux/i830.h +++ b/linux/i830.h @@ -87,7 +87,11 @@ */ #define __HAVE_RELEASE 1 #define DRIVER_RELEASE() do { \ - i830_reclaim_buffers( filp ); \ + i830_reclaim_buffers( filp ); \ +} while (0) + +#define DRIVER_PRETAKEDOWN() do { \ + i830_dma_cleanup( dev ); \ } while (0) /* DMA customization: @@ -107,45 +111,17 @@ * the card, but are subject to subtle interactions between bios, * hardware and the driver. */ +/* XXX: Add vblank support? */ #define USE_IRQS 0 - #if USE_IRQS #define __HAVE_DMA_IRQ 1 #define __HAVE_SHARED_IRQ 1 - -#define DRIVER_PREINSTALL() do { \ - drm_i830_private_t *dev_priv = \ - (drm_i830_private_t *)dev->dev_private; \ - \ - I830_WRITE16( I830REG_HWSTAM, 0xffff ); \ - I830_WRITE16( I830REG_INT_MASK_R, 0x0 ); \ - I830_WRITE16( I830REG_INT_ENABLE_R, 0x0 ); \ -} while (0) - - -#define DRIVER_POSTINSTALL() do { \ - drm_i830_private_t *dev_priv = \ - (drm_i830_private_t *)dev->dev_private; \ - I830_WRITE16( I830REG_INT_ENABLE_R, 0x2 ); \ - atomic_set(&dev_priv->irq_received, 0); \ - atomic_set(&dev_priv->irq_emitted, 0); \ - init_waitqueue_head(&dev_priv->irq_queue); \ -} while (0) - - -/* This gets called too late to be useful: dev_priv has already been - * freed. - */ -#define DRIVER_UNINSTALL() do { \ -} while (0) - #else #define __HAVE_DMA_IRQ 0 #endif - /* Buffer customization: */ |