summaryrefslogtreecommitdiff
path: root/shared-core
AgeCommit message (Expand)Author
2006-06-21i915: Save vblank pipe configuration to restore on resumeKeith Packard
2006-06-19Add i915 ioctls to configure pipes for vblank interrupt.Keith Packard
2006-06-19Fix buffer cleanup on close. Move memory manager reset from final_contextThomas Hellstrom
2006-06-19via: Bump version number and date.Thomas Hellstrom
2006-06-15via:Thomas Hellstrom
2006-06-06Merge in the drm-sman-branchThomas Hellstrom
2006-05-24Add support for r200 vertex programs (R200_EMIT_VAP_PVS_CNTL, and newRoland Scheidegger
2006-05-20add forgotten register define for previous commitRoland Scheidegger
2006-05-20Do a tcl state flush before accessing tcl vector space. This fixes someRoland Scheidegger
2006-05-18add consts to radeon microcode.Dave Airlie
2006-04-23Fix from Benh for ppc r300 scratchDave Airlie
2006-04-20check for __FreeBSD_kernel__ (bug 3810)Brian Paul
2006-04-18Err, use "ifndef" rather than "if !", to avoid compiler warning.Eric Anholt
2006-04-18Use __LP64__ instead of checking the linux-specific BITS_PER_LONG.Eric Anholt
2006-04-09Revert a change that accidentally went in with whitespace changes fromEric Anholt
2006-04-08Compile fixes for FreeBSD.Eric Anholt
2006-04-05coverity bugfix from the kernelDave Airlie
2006-03-25radeon fix up the PCI ids for new memory map like the kernel one.. notDave Airlie
2006-03-20Bump driver date to reflect airlied's last fix.Adam Jackson
2006-03-19make some functions static in via driverDave Airlie
2006-03-17Add missing pci ids for new radeons (most but not all are pcie, r420,Roland Scheidegger
2006-03-08Fix bug I reintroducedDave Airlie
2006-03-08fix some use before NULL checkDave Airlie
2006-03-07ia64 support for r300_scratch. (not tested)Aapo Tahkola
2006-03-06Add general-purpose packet for manipulating scratch registers (r300)Aapo Tahkola
2006-02-25Add all radeon pci ids known by ddx, but only r350/rv350 and below (newRoland Scheidegger
2006-02-19missed a piece of benh patchDave Airlie
2006-02-18fix brace placementDave Airlie
2006-02-18clear i915 interrupts sources on server exitDave Airlie
2006-02-18add proper checking for bitblt multiDave Airlie
2006-02-18add benh's memory management patchDave Airlie
2006-02-18major realigment of DRM CVS with kernel code, makes integration much easierDave Airlie
2006-02-17via: Change via_drm.h versioning scheme after lenghty discussion onThomas Hellstrom
2006-02-09Update the hardware breadcrumb in the sarea on irq reception so thatKeith Whitwell
2006-01-24fix an error message typo Unkown -> UnknownAlan Hourihane
2006-01-24other part of revertAlan Hourihane
2006-01-24put back some of Dave's code related to vblank support - accidentallyAlan Hourihane
2006-01-23Fix CMDBUFFER path, add heap destroy and flesh out sarea for rotationAlan Hourihane
2006-01-20Add support for texture cache flushes (R300_TX_CNTL)Aapo Tahkola
2006-01-20Sync from r300_reg.h from Mesa.Aapo Tahkola
2006-01-19add Intel i945GM supportAlan Hourihane
2006-01-12via: direction bug in get_user_pages call in via_dmablit.c fixed. BumpedThomas Hellstrom
2006-01-06via: Version via_drm.h Alter the drm_via_dmablit_t IOCTL arg.Thomas Hellstrom
2006-01-06via: Last commit really required a bump of minor. Fix.Thomas Hellstrom
2006-01-06via: Combine PCI DMA transfers with stride==width (Idea from LucThomas Hellstrom
2006-01-02make max minor more rationalDave Airlie
2006-01-02The radeon DRM wasn't passing sparse checking in the kernel, this fixes itDave Airlie
2006-01-02whitespace cleanup/aligment with kernelDave Airlie
2006-01-02some fixes from linux kernelDave Airlie
2006-01-02complete fix for historic attributionDave Airlie
WARP_UCODE_SIZE(warp_g200_tgzsf)); unsigned int mga_warp_microcode_size(const drm_mga_private_t * dev_priv) { switch (dev_priv->chipset) { case MGA_CARD_TYPE_G400: case MGA_CARD_TYPE_G550: return PAGE_ALIGN(mga_warp_g400_microcode_size); case MGA_CARD_TYPE_G200: return PAGE_ALIGN(mga_warp_g200_microcode_size); default: DRM_ERROR("Unknown chipset value: 0x%x\n", dev_priv->chipset); return 0; } } static int mga_warp_install_g400_microcode(drm_mga_private_t * dev_priv) { unsigned char *vcbase = dev_priv->warp->handle; unsigned long pcbase = dev_priv->warp->offset; memset(dev_priv->warp_pipe_phys, 0, sizeof(dev_priv->warp_pipe_phys)); WARP_UCODE_INSTALL(warp_g400_tgz, MGA_WARP_TGZ); WARP_UCODE_INSTALL(warp_g400_tgzf, MGA_WARP_TGZF); WARP_UCODE_INSTALL(warp_g400_tgza, MGA_WARP_TGZA); WARP_UCODE_INSTALL(warp_g400_tgzaf, MGA_WARP_TGZAF); WARP_UCODE_INSTALL(warp_g400_tgzs, MGA_WARP_TGZS); WARP_UCODE_INSTALL(warp_g400_tgzsf, MGA_WARP_TGZSF); WARP_UCODE_INSTALL(warp_g400_tgzsa, MGA_WARP_TGZSA); WARP_UCODE_INSTALL(warp_g400_tgzsaf, MGA_WARP_TGZSAF); WARP_UCODE_INSTALL(warp_g400_t2gz, MGA_WARP_T2GZ); WARP_UCODE_INSTALL(warp_g400_t2gzf, MGA_WARP_T2GZF); WARP_UCODE_INSTALL(warp_g400_t2gza, MGA_WARP_T2GZA); WARP_UCODE_INSTALL(warp_g400_t2gzaf, MGA_WARP_T2GZAF); WARP_UCODE_INSTALL(warp_g400_t2gzs, MGA_WARP_T2GZS); WARP_UCODE_INSTALL(warp_g400_t2gzsf, MGA_WARP_T2GZSF); WARP_UCODE_INSTALL(warp_g400_t2gzsa, MGA_WARP_T2GZSA); WARP_UCODE_INSTALL(warp_g400_t2gzsaf, MGA_WARP_T2GZSAF); return 0; } static int mga_warp_install_g200_microcode(drm_mga_private_t * dev_priv) { unsigned char *vcbase = dev_priv->warp->handle; unsigned long pcbase = dev_priv->warp->offset; memset(dev_priv->warp_pipe_phys, 0, sizeof(dev_priv->warp_pipe_phys)); WARP_UCODE_INSTALL(warp_g200_tgz, MGA_WARP_TGZ); WARP_UCODE_INSTALL(warp_g200_tgzf, MGA_WARP_TGZF); WARP_UCODE_INSTALL(warp_g200_tgza, MGA_WARP_TGZA); WARP_UCODE_INSTALL(warp_g200_tgzaf, MGA_WARP_TGZAF); WARP_UCODE_INSTALL(warp_g200_tgzs, MGA_WARP_TGZS); WARP_UCODE_INSTALL(warp_g200_tgzsf, MGA_WARP_TGZSF); WARP_UCODE_INSTALL(warp_g200_tgzsa, MGA_WARP_TGZSA); WARP_UCODE_INSTALL(warp_g200_tgzsaf, MGA_WARP_TGZSAF); return 0; } int mga_warp_install_microcode(drm_mga_private_t * dev_priv) { const unsigned int size = mga_warp_microcode_size(dev_priv); DRM_DEBUG("MGA ucode size = %d bytes\n", size); if (size > dev_priv->warp->size) { DRM_ERROR("microcode too large! (%u > %lu)\n", size, dev_priv->warp->size); return DRM_ERR(ENOMEM); } switch (dev_priv->chipset) { case MGA_CARD_TYPE_G400: case MGA_CARD_TYPE_G550: return mga_warp_install_g400_microcode(dev_priv); case MGA_CARD_TYPE_G200: return mga_warp_install_g200_microcode(dev_priv); default: return DRM_ERR(EINVAL); } } #define WMISC_EXPECTED (MGA_WUCODECACHE_ENABLE | MGA_WMASTER_ENABLE) int mga_warp_init(drm_mga_private_t * dev_priv) { u32 wmisc; /* FIXME: Get rid of these damned magic numbers... */ switch (dev_priv->chipset) { case MGA_CARD_TYPE_G400: case MGA_CARD_TYPE_G550: MGA_WRITE(MGA_WIADDR2, MGA_WMODE_SUSPEND); MGA_WRITE(MGA_WGETMSB, 0x00000E00); MGA_WRITE(MGA_WVRTXSZ, 0x00001807); MGA_WRITE(MGA_WACCEPTSEQ, 0x18000000); break; case MGA_CARD_TYPE_G200: MGA_WRITE(MGA_WIADDR, MGA_WMODE_SUSPEND); MGA_WRITE(MGA_WGETMSB, 0x1606); MGA_WRITE(MGA_WVRTXSZ, 7); break; default: return DRM_ERR(EINVAL); } MGA_WRITE(MGA_WMISC, (MGA_WUCODECACHE_ENABLE | MGA_WMASTER_ENABLE | MGA_WCACHEFLUSH_ENABLE)); wmisc = MGA_READ(MGA_WMISC); if (wmisc != WMISC_EXPECTED) { DRM_ERROR("WARP engine config failed! 0x%x != 0x%x\n", wmisc, WMISC_EXPECTED); return DRM_ERR(EINVAL); } return 0; }