summaryrefslogtreecommitdiff
path: root/linux-core/drm_stub.c
AgeCommit message (Expand)Author
2006-09-29Add support for tracking drawable information to coreMichel Dänzer
2006-09-04Make memory caches global so that they can be used withThomas Hellstrom
2006-09-01Bugfixes,Thomas Hellstrom
2006-08-28Merge branch 'master' of git+ssh://git.freedesktop.org/git/mesa/drm into drm-...Thomas Hellstrom
2006-08-28drm: lots of small cleanups and whitespace issues fixed upDave Airlie
2006-08-28remove local copies of pci domain/bus/slot/numDave Airlie
2006-08-21User / Kernel space fence objects (device-independent part).Thomas Hellstrom
2006-08-21Generic DRM support base-class support for user-space objects, likeThomas Hellstrom
2006-07-24switch drm to use Linux mutexes instead of semaphore.Dave Airlie
2006-07-10Change drm Map handles to be arbitrary 32-bit hash tokens in the rangeThomas Hellstrom
2006-02-18always enable and set master on pci deviceDave Airlie
2006-02-18major realigment of DRM CVS with kernel code, makes integration much easierDave Airlie
2006-01-02use drm_cards_limit instead of cards_limitDave Airlie
2005-08-05Rename the driver hooks in the DRM to something a little moreEric Anholt
2005-07-03Simplify the sysfs codeJon Smirl
2005-07-03Add sysfs attribute dri_library_name on Linux. code in share-core/via_drv.cJon Smirl
2005-06-28Given that BenH says using the sysdev approach for DRM is bogus, I'll yankAlan Hourihane
2005-06-23Fix drm_memory_debug.c to compile, doesn't seem to be working Clean upJon Smirl
2005-06-22Get the power management hooks into the right place so that everything getsJon Smirl
2005-06-04misc cleanup patch from Adrian BunkDave Airlie
2005-05-28Actually check for drm_fb_loaded before trying to initialize the sysdevAlan Hourihane
2005-05-28Re-implement the power management.Alan Hourihane
2005-05-16Added device_is_agp callback to drm_driver. This function is called by theIan Romanick
2005-03-25fix up AGP multi-head support for kernel 2.6.12Dave Airlie
2005-03-25For 2.6.12 and 2.6.11.x:Dave Airlie
2005-02-07change DRIVER_ to CORE_ makes things look nicer, also change it so theDave Airlie
2004-10-29Switch SPIN_LOCK_UNLOCKED to spin_lock_init()Jon Smirl
2004-10-29Add include of moduleparam.hJon Smirl
2004-10-23Prepare to eliminate inter_module_get("agp")Jon Smirl
2004-10-20Switch linux-core from using dev->pdev->driver->name toJon Smirl
2004-10-18Update Doxygen configuration & comments.Jose Fonseca
2004-10-15Switch linux-core over to 2.6 parameter model to enable debug useJon Smirl
2004-10-12Breakout heads into their own data structures.Jon Smirl
2004-10-10Rename fn_tbl to driver. Core driver now uses pci_driver name whichJon Smirl
2004-10-05enable the device in the right order, remove __devinit from drm_intJon Smirl
2004-09-30Lindent of core build. Drivers checked for no binary diffs. A few filesJon Smirl
2004-09-30Move things around to reduce public symbols and even out files. Switch toJon Smirl
2004-09-30Make fops per driver instead of global, remove default flush, poll, readJon Smirl
2004-09-27First check in for DRM that splits core from personality modulesJon Smirl
2004-09-23Remove 2.6 code that allow DRM major device number to be shared. We can addJon Smirl
2004-09-231) switches from class_sysfs to drm sysfs implementation to allowJon Smirl
2004-09-22Remove hotplug reset support from DRM driver. This will be handled by theJon Smirl
2004-09-16Let's try adding the dyn-minor patch again. This patch will reuse minorJon Smirl
2004-09-15Back dyn-minor patch out for now. fops handling is broken on some cardsJon Smirl
2004-09-15Don't use module_param if it isn't defined in older kernels.Jon Smirl
2004-09-15Dynamic device minor support. Minor device numbers will be reused if theJon Smirl
2004-08-27__NO_VERSION__ hasn't been needed since 2.3 days ditch it...Dave Airlie
2004-08-15Fix warning about unused ddev variableJon Smirl
2004-08-15Add dev to DRIVER_CTX_DTOR( dev, pos->handle) so that sis driver willJon Smirl
2004-08-11minor patch from Jon Smirl : sets up some things for later useDave Airlie
n class="hl opt">); goto out; } if (no_wait) return -EBUSY; /* * Go back to the lru list and try to expire fences. */ list_for_each_entry_safe(entry, next_entry, &manager->lru, head) { BUG_ON(!entry->fence); ret = drm_fence_object_wait(entry->fence, 0, !interruptible, entry->fence_type); if (ret) return ret; drm_fence_usage_deref_unlocked(&entry->fence); list_del(&entry->head); entry->new_fence_type = fence_type; list_add_tail(&entry->head, &manager->unfenced); goto out; } /* * Oops. All registers are used up :(. */ return -EBUSY; out: *reg = entry; return 0; } EXPORT_SYMBOL(drm_regs_alloc); void drm_regs_fence(struct drm_reg_manager *manager, struct drm_fence_object *fence) { struct drm_reg *entry; struct drm_reg *next_entry; if (!fence) { /* * Old fence (if any) is still valid. * Put back on free and lru lists. */ list_for_each_entry_safe_reverse(entry, next_entry, &manager->unfenced, head) { list_del(&entry->head); list_add(&entry->head, (entry->fence) ? &manager->lru : &manager->free); } } else { /* * Fence with a new fence and put on lru list. */ list_for_each_entry_safe(entry, next_entry, &manager->unfenced, head) { list_del(&entry->head); if (entry->fence) drm_fence_usage_deref_unlocked(&entry->fence); drm_fence_reference_unlocked(&entry->fence, fence); entry->fence_type = entry->new_fence_type; BUG_ON((entry->fence_type & fence->type) != entry->fence_type); list_add_tail(&entry->head, &manager->lru); } } } EXPORT_SYMBOL(drm_regs_fence); void drm_regs_free(struct drm_reg_manager *manager) { struct drm_reg *entry; struct drm_reg *next_entry; drm_regs_fence(manager, NULL); list_for_each_entry_safe(entry, next_entry, &manager->free, head) { list_del(&entry->head); manager->reg_destroy(entry); } list_for_each_entry_safe(entry, next_entry, &manager->lru, head) { (void)drm_fence_object_wait(entry->fence, 1, 1, entry->fence_type); list_del(&entry->head); drm_fence_usage_deref_unlocked(&entry->fence); manager->reg_destroy(entry); } } EXPORT_SYMBOL(drm_regs_free); void drm_regs_add(struct drm_reg_manager *manager, struct drm_reg *reg) { reg->fence = NULL; list_add_tail(&reg->head, &manager->free); } EXPORT_SYMBOL(drm_regs_add); void drm_regs_init(struct drm_reg_manager *manager, int (*reg_reusable) (const struct drm_reg *, const void *), void (*reg_destroy) (struct drm_reg *)) { INIT_LIST_HEAD(&manager->free); INIT_LIST_HEAD(&manager->lru); INIT_LIST_HEAD(&manager->unfenced); manager->reg_reusable = reg_reusable; manager->reg_destroy = reg_destroy; } EXPORT_SYMBOL(drm_regs_init);