summaryrefslogtreecommitdiff
path: root/linux/i810.h
diff options
context:
space:
mode:
authorGareth Hughes <gareth@users.sourceforge.net>2001-02-16 05:24:06 +0000
committerGareth Hughes <gareth@users.sourceforge.net>2001-02-16 05:24:06 +0000
commit01a14789edce0ce1cae0f3fd4328833399fae56d (patch)
tree455e6c689273e86516654df7b62e97a3131256d5 /linux/i810.h
parent1d30ac11404c588e4a158d72f987c1fb3e478bea (diff)
- Clean up the way customization of the templates is done.
- Fix old-style DMA for gamma driver (please test). - Pull out IRQ handling into drm_dma.h (please test on i810, gamma). - Lots of general cleanups, remove compiler warnings etc.
Diffstat (limited to 'linux/i810.h')
-rw-r--r--linux/i810.h66
1 files changed, 63 insertions, 3 deletions
diff --git a/linux/i810.h b/linux/i810.h
index 021d7988..303ddd5e 100644
--- a/linux/i810.h
+++ b/linux/i810.h
@@ -34,17 +34,77 @@
*/
#define DRM(x) i810_##x
+/* General customization:
+ */
#define __HAVE_AGP 1
#define __MUST_HAVE_AGP 1
-
#define __HAVE_MTRR 1
-
#define __HAVE_CTX_BITMAP 1
+/* Driver customization:
+ */
+#define __HAVE_RELEASE 1
+#define DRIVER_RELEASE() do { \
+ i810_reclaim_buffers( dev, priv->pid ); \
+} while (0)
+
+/* DMA customization:
+ */
#define __HAVE_DMA 1
-#define __HAVE_DMA_IRQ 1
#define __HAVE_DMA_QUEUE 1
#define __HAVE_DMA_WAITLIST 1
#define __HAVE_DMA_RECLAIM 1
+#define __HAVE_DMA_QUIESCENT 1
+#define DRIVER_DMA_QUIESCENT() do { \
+ i810_dma_quiescent( dev ); \
+} while (0)
+
+#define __HAVE_DMA_IRQ 1
+#define __HAVE_DMA_IRQ_BH 1
+#define DRIVER_PREINSTALL() do { \
+ u16 tmp; \
+ tmp = I810_READ16( I810REG_HWSTAM ); \
+ tmp = tmp & 0x6000; \
+ I810_WRITE16( I810REG_HWSTAM, tmp ); \
+ \
+ tmp = I810_READ16( I810REG_INT_MASK_R ); \
+ tmp = tmp & 0x6000; /* Unmask interrupts */ \
+ I810_WRITE16( I810REG_INT_MASK_R, tmp ); \
+ tmp = I810_READ16( I810REG_INT_ENABLE_R ); \
+ tmp = tmp & 0x6000; /* Disable all interrupts */ \
+ I810_WRITE16( I810REG_INT_ENABLE_R, tmp ); \
+} while (0)
+
+#define DRIVER_POSTINSTALL() do { \
+ u16 tmp; \
+ tmp = I810_READ16( I810REG_INT_ENABLE_R ); \
+ tmp = tmp & 0x6000; \
+ tmp = tmp | 0x0003; /* Enable bp & user interrupts */ \
+ I810_WRITE16( I810REG_INT_ENABLE_R, tmp ); \
+} while (0)
+
+#define DRIVER_UNINSTALL() do { \
+ u16 tmp; \
+ tmp = I810_READ16( I810REG_INT_IDENTITY_R ); \
+ tmp = tmp & ~(0x6000); /* Clear all interrupts */ \
+ if ( tmp != 0 ) I810_WRITE16( I810REG_INT_IDENTITY_R, tmp ); \
+ \
+ tmp = I810_READ16( I810REG_INT_ENABLE_R ); \
+ tmp = tmp & 0x6000; /* Disable all interrupts */ \
+ I810_WRITE16( I810REG_INT_ENABLE_R, tmp ); \
+} while (0)
+
+/* Buffer customization:
+ */
+
+#define DRIVER_BUF_PRIV_T drm_i810_buf_priv_t
+
+#define DRIVER_AGP_BUFFERS_MAP( dev ) \
+({ \
+ drm_i810_private_t *dev_priv = (dev)->dev_private; \
+ drm_map_t *map = (dev)->maplist[dev_priv->buffer_map_idx]; \
+ map; \
+})
+
#endif