summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2005-06-28- Remove drm_initmap and replace its usage with drm_addmap. This reducesEric Anholt
code duplication, and it also hands you the map pointer so you don't need to re-find it. - Remove the permanent maps flag. Instead, for register and framebuffer maps, we always check whether there's already a map of that type and offset around. Move the Radeon map initialization into presetup (first open) so it happens again after every takedown. - Remove the split cleanup of maps between driver takedown (last close) and cleanup (module unload). Instead, always tear down maps on takedown, and drivers can recreate them on first open. - Make MGA always use addmap, instead of allocating consistent memory in the PCI case and then faking up a map for it, which accomplished nearly the same thing, in a different order. Note that the maps are exposed to the user again: we may want to expose a flag to avoid this, but it's not a security concern, and saves us a lot of code. - Remove rmmaps in the MGA driver. Since the function is only called during takedown anyway, we can let them die a natural death. - Make removal of maps happen in one function, which is called by both drm_takedown and drm_rmmap_ioctl. Reviewed by: idr (previous revision) Tested on: mga (old/new/pci dma), radeon, savage
2005-06-28add compat code from Paul MackerrasDave Airlie
2005-06-28Add compat to MakefileDave Airlie
2005-06-28Add drm and radeon 32/64-bit compat code from Paul MackerrasDave Airlie
2005-06-28Given that BenH says using the sysdev approach for DRM is bogus, I'll yankAlan Hourihane
the code for it, rather than introducing something that isn't going to work 100% of the time.
2005-06-28Comment out the .resume function as without programming their dependentAlan Hourihane
registers things tend to lock up in certain situations. The BIOS repost will fix things up.
2005-06-27Reverse the pm_message_t patch for now, it appears that the 2.6.12 releaseAlan Hourihane
didn't have it.
2005-06-27Check for 2.6.12 suspend/resume changes (pm_message_t)Alan Hourihane
2005-06-27Check dev_privAlan Hourihane
2005-06-27Save state of registers for suspend/resume.Alan Hourihane
2005-06-26removed dev->sysdev_registeredJon Smirl
2005-06-24Ref count the sysdev class to support multiple DRM cardsJon Smirl
2005-06-24Make sysdev class only register when fbdev detectedJon Smirl
2005-06-24More err path clean up for drm_pm Add mandatory sysdev shutdown functionJon Smirl
2005-06-24Fix the sysdev approach for power management.Alan Hourihane
We need to use the container_of() call to access our device private.
2005-06-24Fix suspend problem when i915 private hasn't been initialized yet.Alan Hourihane
2005-06-23Fix drm_memory_debug.c to compile, doesn't seem to be working Clean upJon Smirl
error return path in drm_stub.c
2005-06-22Get the power management hooks into the right place so that everything getsJon Smirl
freed correctly.
2005-06-21Change initialization of savage register access to _DRM_READ_ONLY. Flags ofJon Smirl
zero does not mean no privs, instead it grants write access _DRM_READ_ONLY only applies to non-root users. Problem is only in CVS, initmaps are not in the kernel yet.
2005-06-20Change initialization of radeon register access to _DRM_READ_ONLY. Flags ofJon Smirl
zero does not mean no privs, instead it grants write access _DRM_READ_ONLY only applies to non-root users. Problem is only in CVS, initmaps are not in the kernel yet.
2005-06-19Remove I2C support from radeon driver. Same support is available fromJon Smirl
radeonfb.
2005-06-17fix up drm_alloc_agp to take a dev arg and not pass crappy agpgart aroundDave Airlie
2005-06-17Fix 810/830 buildJon Smirl
2005-06-16Force AGP always for Intel chipsets.Alan Hourihane
Fixes bug #3552
2005-06-15Re-sync (and correct!) shared/mga_drm.h with shared-core/mga_drm.h.Ian Romanick
2005-06-14Adds support for PCI cards to MGA DRMIan Romanick
This patch adds serveral new ioctls and a new query to get_param query to support PCI MGA cards. Two ioctls were added to implement interrupt based waiting. With this change, the client-side driver no longer needs to map the primary DMA region or the MMIO region. Previously, end-of-frame waiting was done by busy waiting in the client-side driver until one of the MMIO registers (the current DMA pointer) matched a pointer to the end of primary DMA space. By using interrupts, the busy waiting and the extra mappings are removed. A third ioctl was added to bootstrap DMA. This ioctl, which is used by the X-server, moves a *LOT* of code from the X-server into the kernel. This allows the kernel to do whatever needs to be done to setup DMA buffers. The entire process and the locations of the buffers are hidden from user-mode. Additionally, a get_param query was added to differentiate between G4x0 cards and G550 cards. A gap was left in the numbering sequence so that, if needed, G450 cards could be distinguished from G400 cards. According to Ville Syrjälä, the G4x0 cards and the G550 cards handle anisotropic filtering differently. This seems the most compatible way to let the client-side driver know which card it's own. Doing this very small change now eliminates the need to bump the DRM minor version twice. http://marc.theaimsgroup.com/?l=dri-devel&m=106625815319773&w=2 A number of ioctl handlers in linux-core were also modified so that they could be called in-kernel. In these cases, the in-kernel callable version kept the existing name (e.g., drm_agp_acquire) and the ioctl handler added _ioctl to the name (e.g., drm_agp_acquire_ioctl). This patch also replaces the drm_agp_do_release function with drm_agp_release. drm_agp_release (drm_core_agp_release in the previous patch) is very similar to drm_agp_do_release, and I saw no reason to have both. This commit *breaks the build* on BSD. Eric said that he would make the required updates to the BSD side soon. Xorg bug: 3259 Reviewed by: Eric Anholt
2005-06-11fix up drm.h for C++ include as this can be included in user programsDave Airlie
2005-06-10add dragonfly #define from Xorg CVSDave Airlie
2005-06-09Synchronize with the shared-core version.Ian Romanick
2005-06-09Completely re-initialize DMA settingsIan Romanick
There were two problems. First, the 'warp' and 'primary' pointers weren't cleared, so mga_do_cleanup_dma, which gets called multiple times, would try to ioremapfree them multiple times. This resulted in the new error messages to syslog. The second problem was the, since the dev_private structure isn't reallocated and cleaned out in mga_do_init_dma, when the server is reloaded idle-waits would wait for impossible values. I have given this patch some more riggorous testing. This includes: - Load module, start server, run GL app, stop server, unload module. - Load module, start server, run GL app, stop server, unload module, reload module, restart server, run GL app. - Load module, start server, run GL app, stop server, restart server, run GL app, stop server, unload module. In all three cases, everything worked as expected. Please let me know if there are any further regressions with this patch. Xorg bug: 3408 Reported by: Chris Rankin
2005-06-09drm_mem_init should be done at core load, not driver initJon Smirl
2005-06-06fix some issues with radeon interrupt handlingDave Airlie
From: Dave Airlie + Benjamin Herrenschmidt
2005-06-06Fix copyrightsAlan Hourihane
2005-06-06Add a few more bits of Tonnerre's NetBSD port (Still need to deal with theEric Anholt
device attachment).
2005-06-04misc cleanup patch from Adrian BunkDave Airlie
2005-06-04Remove warnings about code mixed with declerations..Dave Airlie
2005-06-03Minor clean-ups. The drm_mga_fullscreen_t stuff has been dead for a looongIan Romanick
time. Remove it and an out-dated comment.
2005-06-03Move the deallocation of dev_private. Since dev_private is allocated whenIan Romanick
the driver is loaded and is always expected to be around, it should only be deallocated when the driver is unloaded. Xorg bug: #3408 Reported by: Chris Rankin
2005-05-28Bugzilla #3217: Create a new __drm_pci_free which is used internally inEric Anholt
linux-core to free pci memory without freeing the structure. Linux-core internals often create pci dma handle structures on the stack due to the lack of a drm_local_map_t to store them in properly. Fix the original drm_pci_free to actually free the dma handle structure instead of leaking it. Signed-off-by: Sergey Vlasov <vsu@altlinux.ru>
2005-05-28Bugzilla #3217: The size field in the new dma handle structure wasEric Anholt
uninitialized, and its use in drm_pci_free later resulted in panics. Signed-off-by: Sergey Vlasov <vsu@altlinux.ru>
2005-05-28Actually check for drm_fb_loaded before trying to initialize the sysdevAlan Hourihane
approach.
2005-05-28Re-implement the power management.Alan Hourihane
There's two choices when fb is or isn't loaded as we treat ourselves as a PCI driver in the latter case. If we are a PCI driver, then register the suspend/resume functions directly. If not, then we register as a sysdev and pick up the suspend/resume actions and pump them down into a generic *power function. It'll be nice when this little mess is sorted out with regard to being a real PCI driver ;-/
2005-05-27Modify drm_driver::device_is_agp to return a tri-state value to indicateIan Romanick
that a device absolutely is, absolutely is not, or may or may not be AGP. Modify the i915 DRM to use this to force all i9x5 devices to be "AGP" (even the PCI-e devices). Reported by: Lukas Hejtmanek
2005-05-27add radeon registers from VHA code these are the "unknown" registersDave Airlie
2005-05-23VIA:Thomas Hellstrom
64-bit fixes. Bumped driver date and patchlevel.
2005-05-22Refactor the routines for "calculating" the size of the WARP microcode. TheIan Romanick
two routines (one for G200 and one for G400) were replaced with static const variables and a single function that returns the correct size. The code to generate an error if the allocated WARP region is too small was refactored from mga_warp_install_{g200,g400}_microcode to mga_wrap_install_microcode. mga_warp_microcode_size is global to the MGA DRM because it will soon be used by code in another file.
2005-05-21Forgot to bump the patchlevel and driver date on last commit.Ian Romanick
2005-05-21Change the MGA initialization and cleanup a bit. The dev_private structureIan Romanick
is now allocated (and partially filled in) by the new mga_driver_preinit function. This allows the driver to detect the type of card (i.e., G200 class vs. G400 class) on its own. The chipset value passed to mga_dma_init is now ignored. This same technique is used by the radeon DRM. As a result of this, mga_driver_pretakedown was converted to mga_driver_postcleanup. This routine gets called in some other places than might be expected, and it sets the dev_private pointer to NULL. That little gem took over an hour to track down. :(
2005-05-20Refactor common, boilerplate ioctl code from drm_addbufs_* functions intoIan Romanick
drm_addbufs. This makes the code more like the BSD code, and makes the drm_addbufs_* functions callable in-kernel. Reviewed by: Dave Airlie
2005-05-18Add i945G pci ids to drmDave Airlie
From: Christopher Allen Wing <wingc@engin.umich.edu> Signed-off-by: Dave Airlie <airlied@linux.ie>