summaryrefslogtreecommitdiff
AgeCommit message (Expand)Author
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-24Suspend/resume shouldn't call drm_initial_config (seems to work ok for me now),Jesse Barnes
2007-05-22Suspend/resume support (incomplete).Jesse Barnes
2007-05-22Call preallocated space VRAM instead of PRIV0 to be more consistent withJesse Barnes
2007-05-18Merge branch 'modesetting-101' of git+ssh://git.freedesktop.org/git/mesa/drm ...Jesse Barnes
2007-05-18Add locking. The main lock is dev->mode_config.config_lock. It should beJesse Barnes
2007-05-18Change some printk's to DRM_DEBUG'sAlan Hourihane
2007-05-18Move fbo creation to the specified fb driver which givesAlan Hourihane
2007-05-18Fix merge problem.Alan Hourihane
2007-05-18Merge branch 'master' of git+ssh://git.freedesktop.org/git/mesa/drm into mode...Alan Hourihane
2007-05-17Set crtcinfo on temporary modeAlan Hourihane
2007-05-17Remove unused edid.h header from X.Org.Jesse Barnes
2007-05-17bring in change from drm_fb.cAlan Hourihane
2007-05-17Move destruction of crtc as intelfb_remove uses the crtc to locate the fb.Alan Hourihane
2007-05-17Merge branch 'modesetting-101' of git+ssh://git.freedesktop.org/git/mesa/drm ...Jesse Barnes
2007-05-17Grab the default mode if the preferred mode isn't available.Alan Hourihane
2007-05-17Fix FB pitch value (we had it wrong and were working around it in a fewJesse Barnes
2007-05-17nouveau: don't build the module by defaultStephane Marchesin
2007-05-17Fix build problemAlan Hourihane
2007-05-17Large changes for fbdev support.root
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
2007-05-12nouveau : nv10 graph clipping values were forgoten in ddx to drm commitMatthieu Castet
2007-05-10Allow vblank interrupts to remain disabled across VT switch.Keith Packard
2007-05-10Just some minor cleanups.Alan Hourihane
2007-05-09r300: Synchronized R300 register defines file.Oliver McFadden
2007-05-09r300: Synchronized R300 register defines file.Oliver McFadden
2007-05-08nouveau : fix fifo context size for nv10Matthieu Castet
2007-05-08ttm: complete drm buffer object ioctl splitDave Airlie
2007-05-08drm/ttm: remove old fence ioctlDave Airlie
2007-05-08drm/ttm: ioctl cleanup for buffer object - user side onlyDave Airlie
2007-05-08libdrm: fix typo on ttm fence interfaceDave Airlie
2007-05-06s/OJBECTS/OBJECTS/Brian
2007-05-06r300: Synchronize the register file from Mesa.Oliver McFadden
2007-05-06r300: Use the defined names for known registers.Oliver McFadden
2007-05-06drm/ttm: cleanup most of fence ioctl split outDave Airlie
2007-05-06drm/ttm: cleanup mm_ioctl ioctls to be separate ioctls.Dave Airlie
2007-05-06drm: remove unused define DRM_HAS_TTMDave Airlie
2007-05-05Cleaned up userspace interface for modesetting.Jakob Bornecrantz
2007-05-02Fix buffer object list freeing.Thomas Hellstrom
2007-05-01Fix userspace ABI breakage from 3c384a9ad5f964709a237cfe035ea5d6df2da5fa.Michel Dänzer
2007-05-01cleanup usermodes on drm mode setting shutdownDave Airlie
2007-05-01Add support for user defined modesDave Airlie
2007-05-01fix unusued variableDave Airlie
2007-04-29radeon: Don't mess up page flipping when a file descriptor is closed.Michel Dänzer
2007-04-28move i915 to new drm_wait_on functionDave Airlie
2007-04-28drm: add new drm_wait_on function to replace macroDave Airlie
l opt">, magic); DRM_SPINLOCK_ASSERT(&dev->dev_lock); hash = drm_hash_magic(magic); entry = malloc(sizeof(*entry), DRM_MEM_MAGIC, M_ZERO | M_NOWAIT); if (!entry) return ENOMEM; entry->magic = magic; entry->priv = priv; entry->next = NULL; if (dev->magiclist[hash].tail) { dev->magiclist[hash].tail->next = entry; dev->magiclist[hash].tail = entry; } else { dev->magiclist[hash].head = entry; dev->magiclist[hash].tail = entry; } return 0; } /** * Removes the given magic number from the hash table of used magic number * lists. */ static int drm_remove_magic(struct drm_device *dev, drm_magic_t magic) { drm_magic_entry_t *prev = NULL; drm_magic_entry_t *pt; int hash; DRM_SPINLOCK_ASSERT(&dev->dev_lock); DRM_DEBUG("%d\n", magic); hash = drm_hash_magic(magic); for (pt = dev->magiclist[hash].head; pt; prev = pt, pt = pt->next) { if (pt->magic == magic) { if (dev->magiclist[hash].head == pt) { dev->magiclist[hash].head = pt->next; } if (dev->magiclist[hash].tail == pt) { dev->magiclist[hash].tail = prev; } if (prev) { prev->next = pt->next; } free(pt, DRM_MEM_MAGIC); return 0; } } return EINVAL; } /** * Called by the client, this returns a unique magic number to be authorized * by the master. * * The master may use its own knowledge of the client (such as the X * connection that the magic is passed over) to determine if the magic number * should be authenticated. */ int drm_getmagic(struct drm_device *dev, void *data, struct drm_file *file_priv) { static drm_magic_t sequence = 0; struct drm_auth *auth = data; /* Find unique magic */ if (file_priv->magic) { auth->magic = file_priv->magic; } else { DRM_LOCK(); do { int old = sequence; auth->magic = old+1; if (!atomic_cmpset_int(&sequence, old, auth->magic)) continue; } while (drm_find_file(dev, auth->magic)); file_priv->magic = auth->magic; drm_add_magic(dev, file_priv, auth->magic); DRM_UNLOCK(); } DRM_DEBUG("%u\n", auth->magic); return 0; } /** * Marks the client associated with the given magic number as authenticated. */ int drm_authmagic(struct drm_device *dev, void *data, struct drm_file *file_priv) { struct drm_auth *auth = data; struct drm_file *priv; DRM_DEBUG("%u\n", auth->magic); DRM_LOCK(); priv = drm_find_file(dev, auth->magic); if (priv != NULL) { priv->authenticated = 1; drm_remove_magic(dev, auth->magic); DRM_UNLOCK(); return 0; } else { DRM_UNLOCK(); return EINVAL; } }