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_map.c | |
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_map.c')
-rw-r--r-- | shared/via_map.c | 35 |
1 files changed, 2 insertions, 33 deletions
diff --git a/shared/via_map.c b/shared/via_map.c index 178284c1..af850d73 100644 --- a/shared/via_map.c +++ b/shared/via_map.c @@ -29,7 +29,6 @@ int via_do_init_map(drm_device_t * dev, drm_via_init_t * init) { drm_via_private_t *dev_priv; - unsigned int i; DRM_DEBUG("%s\n", __FUNCTION__); @@ -69,10 +68,8 @@ int via_do_init_map(drm_device_t * dev, drm_via_init_t * init) dev_priv->agpAddr = init->agpAddr; - for (i = 0; i < VIA_NR_XVMC_LOCKS; ++i) { - DRM_INIT_WAITQUEUE(&(dev_priv->decoder_queue[i])); - XVMCLOCKPTR(dev_priv->sarea_priv, i)->lock = 0; - } + via_init_futex( dev_priv ); + dev_priv->pro_group_a = (dev->pdev->device == 0x3118); dev->dev_private = (void *)dev_priv; @@ -113,31 +110,3 @@ int via_map_init(DRM_IOCTL_ARGS) return -EINVAL; } - -int via_decoder_futex(DRM_IOCTL_ARGS) -{ - DRM_DEVICE; - drm_via_futex_t fx; - volatile int *lock; - drm_via_private_t *dev_priv = (drm_via_private_t *) dev->dev_private; - drm_via_sarea_t *sAPriv = dev_priv->sarea_priv; - int ret = 0; - - DRM_COPY_FROM_USER_IOCTL(fx, (drm_via_futex_t *) data, sizeof(fx)); - - if (fx.lock > VIA_NR_XVMC_LOCKS) - return -EFAULT; - - lock = (int *)XVMCLOCKPTR(sAPriv, fx.lock); - - switch (fx.func) { - case VIA_FUTEX_WAIT: - DRM_WAIT_ON(ret, dev_priv->decoder_queue[fx.lock], - (fx.ms / 10) * (DRM_HZ / 100), *lock != fx.val); - return ret; - case VIA_FUTEX_WAKE: - DRM_WAKEUP(&(dev_priv->decoder_queue[fx.lock])); - return 0; - } - return 0; -} |