summaryrefslogtreecommitdiff
path: root/shared-core
AgeCommit message (Expand)Author
2007-06-28nouveau: never touch PRAMIN with NV_WRITE, cleanup RAMHT code a bitBen Skeggs
2007-06-28nouveau: simplify PRAMIN accessBen Skeggs
2007-06-28nouveau: name some regsBen Skeggs
2007-06-28nouveau/nv50: skeletal backendBen Skeggs
2007-06-28nouveau: Nuke DMA_OBJECT_INIT ioctl (bumps interface to 0.0.7)Ben Skeggs
2007-06-28nouveau/nv04: Set NV_PFIFO_CACHE1_PUSH1 correctly + small tweaksBen Skeggs
2007-06-26More 64-bit padding.Thomas Hellstrom
2007-06-26Add support SiS based XGI chips to SiS DRM.Ian Romanick
2007-06-25nouveau: NV49/NV4B PGRAPH setup from jb17bsome and stephan_2303Ben Skeggs
2007-06-24nouveau: kill some dead codeBen Skeggs
2007-06-24nouveau: NV04/NV10/NV20 PGRAPH engtab functionsBen Skeggs
2007-06-24nouveau: NV3X PGRAPH engtab functionsBen Skeggs
2007-06-24nouveau: NV1X/2X/3X PFIFO engtab functionsBen Skeggs
2007-06-24nouveau: NV04 PFIFO engtab functionsBen Skeggs
2007-06-24nouveau: NV4X PGRAPH engtab functionsBen Skeggs
2007-06-24nouveau: NV4X PFIFO engtab functionsBen Skeggs
2007-06-24nouveau: split PFIFO/PGRAPH context creationBen Skeggs
2007-06-24nouveau: (mostly) hook up put_base againBen Skeggs
2007-06-24nouveau: prototype PFIFO/PGRAPH engtab APIBen Skeggs
2007-06-24nouveau: rename engtab functionsBen Skeggs
2007-06-22radeon: Acknowledge all interrupts we're interested in.Michel Dänzer
2007-06-21r300: Synchronized the register defines file; documentation changes.Oliver McFadden
2007-06-21r300: Allow writes to R300_VAP_PVS_WAITIDLE.Oliver McFadden
2007-06-18r300: Registers 0x2220-0x2230 are known as R300_VAP_CLIP_X_0-R300_VAP_CLIP_Y_1.Oliver McFadden
2007-06-18r300: Synchronized the register defines file again.Oliver McFadden
2007-06-15i915: Fix handling of breadcrumb counter wraparounds.Michel Dänzer
2007-06-12Fix some obvious bugs.Thomas Hellstrom
2007-06-12Try to make buffer object / fence object ioctl args 64-bit safe.Thomas Hellstrom
2007-06-08r300: Added the CP maximum fetch size and ring rptr update variables.Oliver McFadden
2007-06-05r300: Small correction to the previous commit.Oliver McFadden
2007-06-05r300: Document more of the RADEON_RBBM_STATUS register.Alex Deucher
2007-06-05Add support for the G33, Q33, and Q35 chipsets.Wang Zhenyu
2007-06-04nouveau: fix RAMHT wrappingMaurice van der Pot
2007-06-03radeon: refine irq acking for vbl on crtc 2Dave Airlie
2007-06-03Revert "move i915 to new drm_wait_on function"root
2007-06-03radeon: add support for vblank on crtc2Dave Airlie
2007-05-31i915: Add support for 945GME chipWang Zhenyu
2007-05-31i915: Add support for 965GME/GLE chip.Wang Zhenyu
2007-05-29Update a bunch of FreeBSD port code.Jung-uk Kim
2007-05-26drm: spinlock initializer cleanupThomas Gleixner
2007-05-26radeon: add other IGP chipsetsDave Airlie
2007-05-26Revert "drm/ttm: cleanup mm_ioctl ioctls to be separate ioctls."Dave Airlie
2007-05-26Revert "drm/ttm: cleanup most of fence ioctl split out"Dave Airlie
2007-05-26whitespace fixups from kernelDave Airlie
2007-05-26drm/ttm: cleanup most of fence ioctl split outDave Airlie
2007-05-26drm/ttm: cleanup mm_ioctl ioctls to be separate ioctls.Dave Airlie
2007-05-26drm: cleanup use of Linux list handling macrosDave Airlie
2007-05-13r300: Added my comments into r300_reg.h.Oliver McFadden
2007-05-13r300: Synchronized R300 register defines file.Oliver McFadden
2007-05-12nouveau : nv10 graph move clipping value to per channel initMatthieu Castet
s="hl opt">= 0; } while (!atomic_cmpset_int(lock, old, new)); if (_DRM_LOCK_IS_HELD(old) && _DRM_LOCKING_CONTEXT(old) != context) { DRM_ERROR("%d freed heavyweight lock held by %d\n", context, _DRM_LOCKING_CONTEXT(old)); return 1; } DRM_WAKEUP_INT((void *)&dev->lock.lock_queue); return 0; } int drm_lock(DRM_IOCTL_ARGS) { DRM_DEVICE; drm_lock_t lock; int ret = 0; DRM_COPY_FROM_USER_IOCTL(lock, (drm_lock_t *)data, sizeof(lock)); if (lock.context == DRM_KERNEL_CONTEXT) { DRM_ERROR("Process %d using kernel context %d\n", DRM_CURRENTPID, lock.context); return EINVAL; } DRM_DEBUG("%d (pid %d) requests lock (0x%08x), flags = 0x%08x\n", lock.context, DRM_CURRENTPID, dev->lock.hw_lock->lock, lock.flags); if (dev->use_dma_queue && lock.context < 0) return EINVAL; DRM_LOCK(); for (;;) { if (drm_lock_take(&dev->lock.hw_lock->lock, lock.context)) { dev->lock.filp = (void *)(uintptr_t)DRM_CURRENTPID; dev->lock.lock_time = jiffies; atomic_inc(&dev->counts[_DRM_STAT_LOCKS]); break; /* Got lock */ } /* Contention */ #if defined(__FreeBSD__) && __FreeBSD_version > 500000 ret = msleep((void *)&dev->lock.lock_queue, &dev->dev_lock, PZERO | PCATCH, "drmlk2", 0); #else ret = tsleep((void *)&dev->lock.lock_queue, PZERO | PCATCH, "drmlk2", 0); #endif if (ret != 0) break; } DRM_UNLOCK(); DRM_DEBUG("%d %s\n", lock.context, ret ? "interrupted" : "has lock"); if (ret != 0) return ret; /* XXX: Add signal blocking here */ if (dev->dma_quiescent != NULL && (lock.flags & _DRM_LOCK_QUIESCENT)) dev->dma_quiescent(dev); return 0; } int drm_unlock(DRM_IOCTL_ARGS) { DRM_DEVICE; drm_lock_t lock; DRM_COPY_FROM_USER_IOCTL(lock, (drm_lock_t *)data, sizeof(lock)); if (lock.context == DRM_KERNEL_CONTEXT) { DRM_ERROR("Process %d using kernel context %d\n", DRM_CURRENTPID, lock.context); return EINVAL; } atomic_inc(&dev->counts[_DRM_STAT_UNLOCKS]); DRM_LOCK(); drm_lock_transfer(dev, &dev->lock.hw_lock->lock, DRM_KERNEL_CONTEXT); if (drm_lock_free(dev, &dev->lock.hw_lock->lock, DRM_KERNEL_CONTEXT)) { DRM_ERROR("\n"); } DRM_UNLOCK(); return 0; }