830d48d85979bbdc2e741a4f94b58463427a8ef7
[mesa.git] / src / mesa / drivers / dri / mga / server / mga.h
1 /* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/mga/mga.h,v 1.85 2002/12/16 16:19:17 dawes Exp $ */
2 /*
3 * MGA Millennium (MGA2064W) functions
4 *
5 * Copyright 1996 The XFree86 Project, Inc.
6 *
7 * Authors
8 * Dirk Hohndel
9 * hohndel@XFree86.Org
10 * David Dawes
11 * dawes@XFree86.Org
12 */
13
14 #ifndef MGA_H
15 #define MGA_H
16
17
18 #include "xf86drm.h"
19 #include "linux/types.h"
20
21
22 #define PCI_CHIP_MGA2085 0x0518
23 #define PCI_CHIP_MGA2064 0x0519
24 #define PCI_CHIP_MGA1064 0x051A
25 #define PCI_CHIP_MGA2164 0x051B
26 #define PCI_CHIP_MGA2164_AGP 0x051F
27 #define PCI_CHIP_MGAG200_PCI 0x0520
28 #define PCI_CHIP_MGAG200 0x0521
29 #define PCI_CHIP_MGAG400 0x0525
30 #define PCI_CHIP_MGAG550 0x2527
31 #define PCI_CHIP_MGAG100_PCI 0x1000
32 #define PCI_CHIP_MGAG100 0x1001
33
34
35 # define MMIO_IN8(base, offset) \
36 *(volatile unsigned char *)(((unsigned char*)(base)) + (offset))
37 # define MMIO_IN16(base, offset) \
38 *(volatile unsigned short *)(void *)(((unsigned char*)(base)) + (offset))
39 # define MMIO_IN32(base, offset) \
40 *(volatile unsigned int *)(void *)(((unsigned char*)(base)) + (offset))
41 # define MMIO_OUT8(base, offset, val) \
42 *(volatile unsigned char *)(((unsigned char*)(base)) + (offset)) = (val)
43 # define MMIO_OUT16(base, offset, val) \
44 *(volatile unsigned short *)(void *)(((unsigned char*)(base)) + (offset)) = (val)
45 # define MMIO_OUT32(base, offset, val) \
46 *(volatile unsigned int *)(void *)(((unsigned char*)(base)) + (offset)) = (val)
47
48 #define INREG8(addr) MMIO_IN8(pMga->IOBase, addr)
49 #define INREG16(addr) MMIO_IN16(pMga->IOBase, addr)
50 #define INREG(addr) MMIO_IN32(pMga->IOBase, addr)
51 #define OUTREG8(addr, val) MMIO_OUT8(pMga->IOBase, addr, val)
52 #define OUTREG16(addr, val) MMIO_OUT16(pMga->IOBase, addr, val)
53 #define OUTREG(addr, val) MMIO_OUT32(pMga->IOBase, addr, val)
54
55 #define MGAIOMAPSIZE 0x00004000
56
57
58 typedef struct {
59 int Chipset; /**< \brief Chipset number */
60
61 int irq; /**< \brief IRQ number */
62
63
64 int frontOffset; /**< \brief Front color buffer offset */
65 int frontPitch; /**< \brief Front color buffer pitch */
66 int backOffset; /**< \brief Back color buffer offset */
67 int backPitch; /**< \brief Back color buffer pitch */
68 int depthOffset; /**< \brief Depth buffer offset */
69 int depthPitch; /**< \brief Depth buffer pitch */
70 int textureOffset; /**< \brief Texture area offset */
71 int textureSize; /**< \brief Texture area size */
72 int logTextureGranularity;
73
74 /**
75 * \name AGP
76 */
77 /*@{*/
78 drmSize agpSize; /**< \brief AGP map size */
79 int agpMode; /**< \brief AGP mode */
80 /*@}*/
81
82 drmRegion agp;
83
84 /* PCI mappings */
85 drmRegion registers;
86 drmRegion status;
87
88 /* AGP mappings */
89 drmRegion warp;
90 drmRegion primary;
91 drmRegion buffers;
92 drmRegion agpTextures;
93
94 drmBufMapPtr drmBuffers;
95
96 unsigned long IOAddress;
97 unsigned char *IOBase;
98 int HasSDRAM;
99
100 __u32 reg_ien;
101 } MGARec, *MGAPtr;
102
103
104
105 #define MGA_FRONT 0x1
106 #define MGA_BACK 0x2
107 #define MGA_DEPTH 0x4
108
109 #define MGA_AGP_1X_MODE 0x01
110 #define MGA_AGP_2X_MODE 0x02
111 #define MGA_AGP_4X_MODE 0x04
112 #define MGA_AGP_MODE_MASK 0x07
113
114
115 #endif