| /* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/mga/mga.h,v 1.85 2002/12/16 16:19:17 dawes Exp $ */ |
| /* |
| * MGA Millennium (MGA2064W) functions |
| * |
| * Copyright 1996 The XFree86 Project, Inc. |
| * |
| * Authors |
| * Dirk Hohndel |
| * hohndel@XFree86.Org |
| * David Dawes |
| * dawes@XFree86.Org |
| */ |
| |
| #ifndef MGA_H |
| #define MGA_H |
| |
| |
| #include "xf86drm.h" |
| #include "linux/types.h" |
| |
| |
| #define PCI_CHIP_MGA2085 0x0518 |
| #define PCI_CHIP_MGA2064 0x0519 |
| #define PCI_CHIP_MGA1064 0x051A |
| #define PCI_CHIP_MGA2164 0x051B |
| #define PCI_CHIP_MGA2164_AGP 0x051F |
| #define PCI_CHIP_MGAG200_PCI 0x0520 |
| #define PCI_CHIP_MGAG200 0x0521 |
| #define PCI_CHIP_MGAG400 0x0525 |
| #define PCI_CHIP_MGAG550 0x2527 |
| #define PCI_CHIP_MGAG100_PCI 0x1000 |
| #define PCI_CHIP_MGAG100 0x1001 |
| |
| |
| # define MMIO_IN8(base, offset) \ |
| *(volatile unsigned char *)(((unsigned char*)(base)) + (offset)) |
| # define MMIO_IN16(base, offset) \ |
| *(volatile unsigned short *)(void *)(((unsigned char*)(base)) + (offset)) |
| # define MMIO_IN32(base, offset) \ |
| *(volatile unsigned int *)(void *)(((unsigned char*)(base)) + (offset)) |
| # define MMIO_OUT8(base, offset, val) \ |
| *(volatile unsigned char *)(((unsigned char*)(base)) + (offset)) = (val) |
| # define MMIO_OUT16(base, offset, val) \ |
| *(volatile unsigned short *)(void *)(((unsigned char*)(base)) + (offset)) = (val) |
| # define MMIO_OUT32(base, offset, val) \ |
| *(volatile unsigned int *)(void *)(((unsigned char*)(base)) + (offset)) = (val) |
| |
| #define INREG8(addr) MMIO_IN8(pMga->IOBase, addr) |
| #define INREG16(addr) MMIO_IN16(pMga->IOBase, addr) |
| #define INREG(addr) MMIO_IN32(pMga->IOBase, addr) |
| #define OUTREG8(addr, val) MMIO_OUT8(pMga->IOBase, addr, val) |
| #define OUTREG16(addr, val) MMIO_OUT16(pMga->IOBase, addr, val) |
| #define OUTREG(addr, val) MMIO_OUT32(pMga->IOBase, addr, val) |
| |
| #define MGAIOMAPSIZE 0x00004000 |
| |
| |
| typedef struct { |
| int Chipset; /**< \brief Chipset number */ |
| |
| int irq; /**< \brief IRQ number */ |
| |
| |
| int frontOffset; /**< \brief Front color buffer offset */ |
| int frontPitch; /**< \brief Front color buffer pitch */ |
| int backOffset; /**< \brief Back color buffer offset */ |
| int backPitch; /**< \brief Back color buffer pitch */ |
| int depthOffset; /**< \brief Depth buffer offset */ |
| int depthPitch; /**< \brief Depth buffer pitch */ |
| int textureOffset; /**< \brief Texture area offset */ |
| int textureSize; /**< \brief Texture area size */ |
| int logTextureGranularity; |
| |
| /** |
| * \name AGP |
| */ |
| /*@{*/ |
| drmSize agpSize; /**< \brief AGP map size */ |
| int agpMode; /**< \brief AGP mode */ |
| /*@}*/ |
| |
| drmRegion agp; |
| |
| /* PCI mappings */ |
| drmRegion registers; |
| drmRegion status; |
| |
| /* AGP mappings */ |
| drmRegion warp; |
| drmRegion primary; |
| drmRegion buffers; |
| drmRegion agpTextures; |
| |
| drmBufMapPtr drmBuffers; |
| |
| unsigned long IOAddress; |
| unsigned char *IOBase; |
| int HasSDRAM; |
| |
| __u32 reg_ien; |
| } MGARec, *MGAPtr; |
| |
| |
| |
| #define MGA_FRONT 0x1 |
| #define MGA_BACK 0x2 |
| #define MGA_DEPTH 0x4 |
| |
| #define MGA_AGP_1X_MODE 0x01 |
| #define MGA_AGP_2X_MODE 0x02 |
| #define MGA_AGP_4X_MODE 0x04 |
| #define MGA_AGP_MODE_MASK 0x07 |
| |
| |
| #endif |