diff options
author | Thomas Hellstrom <unichrome@shipmail.org> | 2005-03-28 21:21:42 +0000 |
---|---|---|
committer | Thomas Hellstrom <unichrome@shipmail.org> | 2005-03-28 21:21:42 +0000 |
commit | 532ccb98b5f2946f574a747b90c39edbe783f888 (patch) | |
tree | cfbdf4e8e2b8e0827b35b92a7e57e7f6104e18f1 /shared/via_drv.h | |
parent | c6161eff86b250f3113791edcc162dc97322c401 (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/via_drv.h')
-rw-r--r-- | shared/via_drv.h | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/shared/via_drv.h b/shared/via_drv.h index 5d90c9ca..8227b735 100644 --- a/shared/via_drv.h +++ b/shared/via_drv.h @@ -29,12 +29,23 @@ #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; @@ -57,6 +68,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 */ @@ -82,10 +99,13 @@ extern void via_driver_irq_postinstall(drm_device_t * dev); extern void via_driver_irq_uninstall(drm_device_t * dev); extern int via_dma_cleanup(drm_device_t * dev); -extern int via_wait_idle(drm_via_private_t * dev_priv); extern int via_driver_dma_quiescent(drm_device_t * dev); extern void via_init_command_verifier( void ); extern int via_fb_free(drm_via_mem_t * mem); extern int via_fb_alloc(drm_via_mem_t * mem); +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 |