summaryrefslogtreecommitdiff
path: root/shared-core/via_drv.h
diff options
context:
space:
mode:
authorThomas Hellstrom <unichrome@shipmail.org>2005-03-28 21:21:42 +0000
committerThomas Hellstrom <unichrome@shipmail.org>2005-03-28 21:21:42 +0000
commit532ccb98b5f2946f574a747b90c39edbe783f888 (patch)
treecfbdf4e8e2b8e0827b35b92a7e57e7f6104e18f1 /shared-core/via_drv.h
parentc6161eff86b250f3113791edcc162dc97322c401 (diff)
Via updates:
New PCI command parser. Moved from via_dma.c to via_verifier.c so functions with similar functionality are close to eachother. Moved video related functions to via_video.c, which might be extended in the future, as new video functionality is added. New device-specific generic IRQ IOCTL, similar to the general VBLANK IOCTL, but with support for multiple device IRQ sources and functionality. Support for Unichrome Pro PM800/CN400 video DMA commands in verifier and PCI parser. Support for Unichrome Pro PM800/CN400 HQV IRQs in the new generic IRQ IOCTL. Bumped minor. New version 2.6.0.
Diffstat (limited to 'shared-core/via_drv.h')
-rw-r--r--shared-core/via_drv.h27
1 files changed, 24 insertions, 3 deletions
diff --git a/shared-core/via_drv.h b/shared-core/via_drv.h
index 00382e5d..353a9b9b 100644
--- a/shared-core/via_drv.h
+++ b/shared-core/via_drv.h
@@ -27,23 +27,35 @@
#define DRIVER_AUTHOR "VIA"
#define DRIVER_NAME "via"
-#define DRIVER_DESC "VIA Unichrome"
-#define DRIVER_DATE "20050314"
+#define DRIVER_DESC "VIA Unichrome / Pro"
+#define DRIVER_DATE "20050328"
#define DRIVER_MAJOR 2
-#define DRIVER_MINOR 5
+#define DRIVER_MINOR 6
#define DRIVER_PATCHLEVEL 0
#include "via_verifier.h"
#define VIA_PCI_BUF_SIZE 120000
#define VIA_FIRE_BUF_SIZE 2048
+#define VIA_NUM_IRQS 2
+
+
typedef struct drm_via_ring_buffer {
drm_map_t map;
char *virtual_start;
} drm_via_ring_buffer_t;
+typedef uint32_t maskarray_t[5];
+
+typedef struct drm_via_irq {
+ atomic_t irq_received;
+ uint32_t pending_mask;
+ uint32_t enable_mask;
+ wait_queue_head_t irq_queue;
+} drm_via_irq_t;
+
typedef struct drm_via_private {
drm_via_sarea_t *sarea_priv;
drm_map_t *sarea;
@@ -66,6 +78,12 @@ typedef struct drm_via_private {
char pci_buf[VIA_PCI_BUF_SIZE];
const uint32_t *fire_offsets[VIA_FIRE_BUF_SIZE];
uint32_t num_fire_offsets;
+ int pro_group_a;
+ drm_via_irq_t via_irqs[VIA_NUM_IRQS];
+ unsigned num_irqs;
+ maskarray_t *irq_masks;
+ uint32_t irq_enable_mask;
+ uint32_t irq_pending_mask;
} drm_via_private_t;
/* VIA MMIO register access */
@@ -92,6 +110,9 @@ extern void via_driver_irq_uninstall(drm_device_t * dev);
extern int via_dma_cleanup(drm_device_t * dev);
extern void via_init_command_verifier(void);
extern int via_driver_dma_quiescent(drm_device_t * dev);
+extern void via_init_futex(drm_via_private_t *dev_priv);
+extern void via_cleanup_futex(drm_via_private_t *dev_priv);
+extern void via_release_futex(drm_via_private_t *dev_priv, int context);
#endif