Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 2755
Collapse All | Expand All

(-)xc/programs/Xserver/hw/xfree86/drivers/nv/nv.man (-4 / +18 lines)
Lines 1-4 Link Here
1
.\" $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv.man,v 1.7 2001/12/17 20:52:33 dawes Exp $ 
1
.\" $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv.man,v 1.10 2002/02/19 23:39:50 mvojkovi Exp $ 
2
.\" shorthand for double quote that works everywhere.
2
.\" shorthand for double quote that works everywhere.
3
.ds q \N'34'
3
.ds q \N'34'
4
.TH NV __drivermansuffix__ __vendorversion__
4
.TH NV __drivermansuffix__ __vendorversion__
Lines 39-50 Link Here
39
NV10
39
NV10
40
.TP 22
40
.TP 22
41
.B GeForce2, QUADRO2
41
.B GeForce2, QUADRO2
42
NV11 & NV15 (except GeForce2 Go, which is 
42
NV11 & NV15  
43
.B NOT 
44
supported)
45
.TP 22
43
.TP 22
46
.B GeForce3
44
.B GeForce3
47
NV20
45
NV20
46
.TP 22
47
.B GeForce4, QUADRO4
48
NV17 & NV25 
48
.SH CONFIGURATION DETAILS
49
.SH CONFIGURATION DETAILS
49
Please refer to XF86Config(__filemansuffix__) for general configuration
50
Please refer to XF86Config(__filemansuffix__) for general configuration
50
details.  This section only covers configuration details specific to this
51
details.  This section only covers configuration details specific to this
Lines 68-73 Link Here
68
on all OSs).  See fbdevhw(__drivermansuffix__) for further information.
69
on all OSs).  See fbdevhw(__drivermansuffix__) for further information.
69
Default: off.
70
Default: off.
70
.TP
71
.TP
72
.BI "Option \*qCrtcNumber\*q \*q" integer \*q
73
NV17 and NV25 can have two video outputs.  The driver attempts to autodetect
74
which one the monitor is connected to.  In the case that autodetection picks
75
the wrong one, this option may be used to force usage of a particular output. 
76
The options are "0" or "1".
77
Default: autodetected.
78
.TP
79
.BI "Option \*qFlatPanel\*q \*q" boolean \*q
80
This driver has experimental flat panel support for some chips.  The driver
81
cannot autodetect the presence of a flat panel so this option must be set
82
when used with a flat panel.
83
Default: off.
84
.TP
71
.BI "Option \*qRotate\*q \*qCW\*q"
85
.BI "Option \*qRotate\*q \*qCW\*q"
72
.TP
86
.TP
73
.BI "Option \*qRotate\*q \*qCCW\*q"
87
.BI "Option \*qRotate\*q \*qCCW\*q"
(-)xc/programs/Xserver/hw/xfree86/drivers/nv/nv_cursor.c (-4 / +6 lines)
Lines 24-30 Link Here
24
/* Rewritten with reference from mga driver and 3.3.4 NVIDIA driver by
24
/* Rewritten with reference from mga driver and 3.3.4 NVIDIA driver by
25
   Jarno Paananen <jpaana@s2.org> */
25
   Jarno Paananen <jpaana@s2.org> */
26
26
27
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_cursor.c,v 1.5 2001/12/17 22:17:55 mvojkovi Exp $ */
27
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_cursor.c,v 1.7 2002/02/06 01:33:06 mvojkovi Exp $ */
28
28
29
#include "nv_include.h"
29
#include "nv_include.h"
30
30
Lines 109-115 Link Here
109
    NVPtr pNv = NVPTR(pScrn);
109
    NVPtr pNv = NVPTR(pScrn);
110
110
111
    pNv->riva.ShowHideCursor(&pNv->riva, 0);
111
    pNv->riva.ShowHideCursor(&pNv->riva, 0);
112
    *(pNv->riva.CURSORPOS) = (x & 0xFFFF) | (y << 16);
112
    pNv->riva.PRAMDAC[0x0000300/4] = (x & 0xFFFF) | (y << 16);
113
    pNv->riva.ShowHideCursor(&pNv->riva, 1);
113
    pNv->riva.ShowHideCursor(&pNv->riva, 1);
114
}
114
}
115
115
Lines 123-130 Link Here
123
    back = ConvertToRGB555(bg);
123
    back = ConvertToRGB555(bg);
124
124
125
#if X_BYTE_ORDER == X_BIG_ENDIAN
125
#if X_BYTE_ORDER == X_BIG_ENDIAN
126
    fore = (fore << 8) | (fore >> 8);
126
    if((pNv->Chipset & 0x0ff0) == 0x0110) {
127
    back = (back << 8) | (back >> 8);
127
       fore = (fore << 8) | (fore >> 8);
128
       back = (back << 8) | (back >> 8);
129
    }
128
#endif
130
#endif
129
131
130
    if (pNv->curFg != fore || pNv->curBg != back) {
132
    if (pNv->curFg != fore || pNv->curBg != back) {
(-)xc/programs/Xserver/hw/xfree86/drivers/nv/nv_dac.c (-6 / +50 lines)
Lines 24-30 Link Here
24
/* Hacked together from mga driver and 3.3.4 NVIDIA driver by Jarno Paananen
24
/* Hacked together from mga driver and 3.3.4 NVIDIA driver by Jarno Paananen
25
   <jpaana@s2.org> */
25
   <jpaana@s2.org> */
26
26
27
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_dac.c,v 1.15 2001/12/11 19:42:01 mvojkovi Exp $ */
27
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_dac.c,v 1.26 2002/04/04 14:05:45 eich Exp $ */
28
28
29
#include "nv_include.h"
29
#include "nv_include.h"
30
30
Lines 71-76 Link Here
71
    if(mode->Flags & V_INTERLACE) 
71
    if(mode->Flags & V_INTERLACE) 
72
        vertTotal |= 1;
72
        vertTotal |= 1;
73
73
74
    if(pNv->FlatPanel == 1) {
75
       vertStart = vertTotal - 3;  
76
       vertEnd = vertTotal - 2;
77
       vertBlankStart = vertStart;
78
       horizStart = horizTotal - 3;
79
       horizEnd = horizTotal - 2;   
80
       horizBlankEnd = horizTotal + 4;    
81
    }
82
74
    pVga->CRTC[0x0]  = Set8Bits(horizTotal);
83
    pVga->CRTC[0x0]  = Set8Bits(horizTotal);
75
    pVga->CRTC[0x1]  = Set8Bits(horizDisplay);
84
    pVga->CRTC[0x1]  = Set8Bits(horizDisplay);
76
    pVga->CRTC[0x2]  = Set8Bits(horizBlankStart);
85
    pVga->CRTC[0x2]  = Set8Bits(horizBlankStart);
Lines 147-152 Link Here
147
    if(pNv->riva.Architecture >= NV_ARCH_10)
156
    if(pNv->riva.Architecture >= NV_ARCH_10)
148
	pNv->riva.CURSOR = (U032 *)(pNv->FbStart + pNv->riva.CursorStart);
157
	pNv->riva.CURSOR = (U032 *)(pNv->FbStart + pNv->riva.CursorStart);
149
158
159
    pNv->riva.LockUnlock(&pNv->riva, 0);
160
150
    pNv->riva.CalcStateExt(&pNv->riva, 
161
    pNv->riva.CalcStateExt(&pNv->riva, 
151
                           nvReg,
162
                           nvReg,
152
                           i,
163
                           i,
Lines 156-176 Link Here
156
                           mode->Clock,
167
                           mode->Clock,
157
			   mode->Flags);
168
			   mode->Flags);
158
169
170
    nvReg->scale = pNv->riva.PRAMDAC[0x00000848/4] & 0xfff000ff;
171
    if(pNv->FlatPanel == 1) {
172
       nvReg->pixel |= (1 << 7);
173
       nvReg->scale |= (1 << 8) ;
174
    }
175
    if(pNv->SecondCRTC) {
176
       nvReg->head  = pNv->riva.PCRTC0[0x00000860/4] & ~0x00001000;
177
       nvReg->head2 = pNv->riva.PCRTC0[0x00002860/4] | 0x00001000;
178
       nvReg->crtcOwner = 3;
179
       nvReg->pllsel |= 0x20000800;
180
       nvReg->vpll2 = nvReg->vpll;
181
    } else 
182
    if(pNv->riva.twoHeads) {
183
       nvReg->head  =  pNv->riva.PCRTC0[0x00000860/4] | 0x00001000;
184
       nvReg->head2 =  pNv->riva.PCRTC0[0x00002860/4] & ~0x00001000;
185
       nvReg->crtcOwner = 0;
186
       nvReg->vpll2 = pNv->riva.PRAMDAC0[0x00000520/4];
187
    }
188
159
    return (TRUE);
189
    return (TRUE);
160
}
190
}
161
191
162
void 
192
void 
163
NVDACRestore(ScrnInfoPtr pScrn, vgaRegPtr vgaReg, NVRegPtr nvReg,
193
NVDACRestore(ScrnInfoPtr pScrn, vgaRegPtr vgaReg, NVRegPtr nvReg,
164
             Bool restoreFonts)
194
             Bool primary)
165
{
195
{
166
    NVPtr pNv = NVPTR(pScrn);
196
    NVPtr pNv = NVPTR(pScrn);
197
    int restore = VGA_SR_MODE;
198
167
    DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "NVDACRestore\n"));
199
    DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "NVDACRestore\n"));
200
201
    if(primary) restore |= VGA_SR_CMAP | VGA_SR_FONTS;
202
    else if(pNv->Chipset == NV_CHIP_RIVA_128) 
203
	restore |= VGA_SR_CMAP;
168
    pNv->riva.LoadStateExt(&pNv->riva, nvReg);
204
    pNv->riva.LoadStateExt(&pNv->riva, nvReg);
169
#if defined(__powerpc__)
205
#if defined(__powerpc__)
170
    restoreFonts = FALSE;
206
    restore &= ~VGA_SR_FONTS;
171
#endif
207
#endif
172
    vgaHWRestore(pScrn, vgaReg, VGA_SR_CMAP | VGA_SR_MODE | 
208
    vgaHWRestore(pScrn, vgaReg, restore);
173
			(restoreFonts? VGA_SR_FONTS : 0));
174
}
209
}
175
210
176
/*
211
/*
Lines 184-191 Link Here
184
{
219
{
185
    NVPtr pNv = NVPTR(pScrn);
220
    NVPtr pNv = NVPTR(pScrn);
186
    DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "NVDACSave\n"));
221
    DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "NVDACSave\n"));
187
    vgaHWSave(pScrn, vgaReg, VGA_SR_MODE | (saveFonts? VGA_SR_FONTS : 0));
222
223
#if defined(__powerpc__)
224
    saveFonts = FALSE;
225
#endif
226
227
    vgaHWSave(pScrn, vgaReg, VGA_SR_CMAP | VGA_SR_MODE | 
228
                             (saveFonts? VGA_SR_FONTS : 0));
188
    pNv->riva.UnloadStateExt(&pNv->riva, nvReg);
229
    pNv->riva.UnloadStateExt(&pNv->riva, nvReg);
230
231
    if((pNv->Chipset & 0x0ff0) == 0x0110) 
232
       nvReg->crtcOwner = ((pNv->Chipset & 0x0fff) == 0x0112) ? 3 : 0;
189
}
233
}
190
234
191
#define DEPTH_SHIFT(val, w) ((val << (8 - w)) | (val >> ((w << 1) - 8)))
235
#define DEPTH_SHIFT(val, w) ((val << (8 - w)) | (val >> ((w << 1) - 8)))
(-)xc/programs/Xserver/hw/xfree86/drivers/nv/nv_dga.c (-3 / +3 lines)
Lines 1-4 Link Here
1
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_dga.c,v 1.10 2001/01/22 21:32:36 dawes Exp $ */
1
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_dga.c,v 1.11 2002/01/25 21:56:06 tsi Exp $ */
2
2
3
#include "nv_local.h"
3
#include "nv_local.h"
4
#include "nv_include.h"
4
#include "nv_include.h"
Lines 234-241 Link Here
234
234
235
   NVAdjustFrame(pScrn->pScreen->myNum, x, y, flags);
235
   NVAdjustFrame(pScrn->pScreen->myNum, x, y, flags);
236
236
237
   while(pNv->riva.PCIO[0x3da] & 0x08);
237
   while(VGA_RD08(pNv->riva.PCIO, 0x3da) & 0x08);
238
   while(!(pNv->riva.PCIO[0x3da] & 0x08));
238
   while(!(VGA_RD08(pNv->riva.PCIO, 0x3da) & 0x08));
239
239
240
   pNv->DGAViewportStatus = 0;  
240
   pNv->DGAViewportStatus = 0;  
241
}
241
}
(-)xc/programs/Xserver/hw/xfree86/drivers/nv/nv_driver.c (-156 / +116 lines)
Lines 24-30 Link Here
24
/* Hacked together from mga driver and 3.3.4 NVIDIA driver by Jarno Paananen
24
/* Hacked together from mga driver and 3.3.4 NVIDIA driver by Jarno Paananen
25
   <jpaana@s2.org> */
25
   <jpaana@s2.org> */
26
26
27
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_driver.c,v 1.81 2002/01/04 21:22:33 tsi Exp $ */
27
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_driver.c,v 1.87 2002/03/18 21:47:48 mvojkovi Exp $ */
28
28
29
#include "nv_include.h"
29
#include "nv_include.h"
30
30
Lines 87-167 Link Here
87
87
88
/* Supported chipsets */
88
/* Supported chipsets */
89
static SymTabRec NVChipsets[] = {
89
static SymTabRec NVChipsets[] = {
90
    { NV_CHIP_RIVA128,    "RIVA128" },
90
    {NV_CHIP_RIVA_128,           "RIVA 128"},
91
    { NV_CHIP_TNT,        "RIVA TNT" },
91
    {NV_CHIP_TNT,                "RIVA TNT"},
92
    { NV_CHIP_TNT2,       "RIVA TNT2" },
92
    {NV_CHIP_TNT2,               "RIVA TNT2/TNT2 Pro"},
93
    { NV_CHIP_UTNT2,      "RIVA TNT2 Ultra" },
93
    {NV_CHIP_UTNT2,              "RIVA TNT2 Ultra"},
94
    { NV_CHIP_VTNT2,      "Vanta" },
94
    {NV_CHIP_VTNT2,              "Vanta"},
95
    { NV_CHIP_UVTNT2,     "RIVA TNT2 M64" },
95
    {NV_CHIP_UVTNT2,             "Riva TNT2 M64"},
96
    { NV_CHIP_ITNT2,      "Aladdin TNT2" },
96
    {NV_CHIP_ITNT2,              "Aladdin TNT2"},
97
    { NV_CHIP_GEFORCE256, "GeForce 256" },
97
    {NV_CHIP_GEFORCE_256,        "GeForce 256"},
98
    { NV_CHIP_GEFORCEDDR, "GeForce DDR" },
98
    {NV_CHIP_GEFORCE_DDR,        "GeForce DDR"},
99
    { NV_CHIP_QUADRO,     "Quadro" },
99
    {NV_CHIP_QUADRO,             "Quadro"},
100
    { NV_CHIP_GEFORCE2GTS,  "GeForce2 GTS/Pro"},
100
    {NV_CHIP_GEFORCE2_MX,        "GeForce2 MX/MX 400"},
101
    { NV_CHIP_GEFORCE2GTS_1,"GeForce2 Ti"},
101
    {NV_CHIP_GEFORCE2_MX_100,    "GeForce2 MX 100/200"},
102
    { NV_CHIP_GEFORCE2ULTRA,"GeForce2 Ultra"},
102
    {NV_CHIP_GEFORCE2_GO,        "GeForce2 Go"},
103
    { NV_CHIP_QUADRO2PRO,   "Quadro2 Pro"},
103
    {NV_CHIP_QUADRO2_MXR,        "Quadro2 MXR"},
104
    { NV_CHIP_GEFORCE2MX,   "GeForce2 MX/MX 400"},
104
    {NV_CHIP_GEFORCE2_GTS,       "GeForce2 GTS/Pro"},
105
    { NV_CHIP_GEFORCE2MXDDR, "GeForce2 MX 100/200"},
105
    {NV_CHIP_GEFORCE2_TI,        "GeForce2 Ti"},
106
    { NV_CHIP_0x0170,      "0x0170" },
106
    {NV_CHIP_GEFORCE2_ULTRA,     "GeForce2 Ultra"},
107
    { NV_CHIP_0x0171,      "0x0171" },
107
    {NV_CHIP_QUADRO2_PRO,        "Quadro2 Pro"},
108
    { NV_CHIP_0x0172,      "0x0172" },
108
    {NV_CHIP_GEFORCE4_MX_460,    "GeForce4 MX 460"},
109
    { NV_CHIP_0x0173,      "0x0173" },
109
    {NV_CHIP_GEFORCE4_MX_440,    "GeForce4 MX 440"},
110
    { NV_CHIP_0x0174,      "0x0174" },
110
    {NV_CHIP_GEFORCE4_MX_420,    "GeForce4 MX 420"},
111
    { NV_CHIP_0x0175,      "0x0175" },
111
    {NV_CHIP_GEFORCE4_440_GO,    "GeForce4 440 Go"},
112
    { NV_CHIP_0x0178,      "0x0178" },
112
    {NV_CHIP_GEFORCE4_420_GO,    "GeForce4 420 Go"},
113
    { NV_CHIP_0x017A,      "0x017A" },
113
    {NV_CHIP_GEFORCE4_420_GO_M32,"GeForce4 420 Go M32"},
114
    { NV_CHIP_0x017B,      "0x017B" },
114
    {NV_CHIP_QUADRO4_500XGL,     "Quadro4 500XGL"},
115
    { NV_CHIP_0x017C,      "0x017C" },
115
    {NV_CHIP_GEFORCE4_440_GO_M64,"GeForce4 440 Go M64"},
116
    { NV_CHIP_IGEFORCE2,    "GeForce2 Integrated"},
116
    {NV_CHIP_QUADRO4_200,        "Quadro4 200/400NVS"},
117
    { NV_CHIP_QUADRO2MXR,   "Quadro2 MXR"},
117
    {NV_CHIP_QUADRO4_550XGL,     "Quadro4 550XGL"},
118
    { NV_CHIP_GEFORCE2GO,   "GeForce2 Go"},
118
    {NV_CHIP_QUADRO4_500_GOGL,   "Quadro4 GoGL"},
119
    { NV_CHIP_GEFORCE3,     "GeForce3"},
119
    {NV_CHIP_IGEFORCE2,          "GeForce2 Integrated"},
120
    { NV_CHIP_GEFORCE3_1,   "GeForce3 Ti 200"},
120
    {NV_CHIP_GEFORCE3,           "GeForce3"},
121
    { NV_CHIP_GEFORCE3_2,   "GeForce3 Ti 500"},
121
    {NV_CHIP_GEFORCE3_TI_200,    "GeForce3 Ti 200"},
122
    { NV_CHIP_QUADRO_DDC,   "Quadro DDC"},
122
    {NV_CHIP_GEFORCE3_TI_500,    "GeForce3 Ti 500"},
123
    { NV_CHIP_0x0250,       "0x0250"},
123
    {NV_CHIP_QUADRO_DCC,         "Quadro DCC"},
124
    { NV_CHIP_0x0258,       "0x0258"},
124
    {NV_CHIP_GEFORCE4_TI_4600,   "GeForce4 Ti 4600"},
125
    {NV_CHIP_GEFORCE4_TI_4400,   "GeForce4 Ti 4400"},
126
    {NV_CHIP_GEFORCE4_TI_4200,   "GeForce4 Ti 4200"},
127
    {NV_CHIP_QUADRO4_900XGL,     "Quadro4 900 XGL"},
128
    {NV_CHIP_QUADRO4_750XGL,     "Quadro4 750 XGL"},
129
    {NV_CHIP_QUADRO4_700XGL,     "Quadro4 700 XGL"},
125
    {-1,                        NULL }
130
    {-1,                        NULL }
126
};
131
};
127
132
128
static PciChipsets NVPciChipsets[] = {
133
static PciChipsets NVPciChipsets[] = {
129
    { NV_CHIP_RIVA128,          NV_CHIP_RIVA128,        RES_SHARED_VGA },
134
    {NV_CHIP_RIVA_128,           NV_CHIP_RIVA_128,           RES_SHARED_VGA},
130
    { NV_CHIP_TNT,              NV_CHIP_TNT,            RES_SHARED_VGA },
135
    {NV_CHIP_TNT,                NV_CHIP_TNT,                RES_SHARED_VGA},
131
    { NV_CHIP_TNT2,             NV_CHIP_TNT2,           RES_SHARED_VGA },
136
    {NV_CHIP_TNT2,               NV_CHIP_TNT2,               RES_SHARED_VGA},
132
    { NV_CHIP_UTNT2,            NV_CHIP_UTNT2,          RES_SHARED_VGA },
137
    {NV_CHIP_UTNT2,              NV_CHIP_UTNT2,              RES_SHARED_VGA},
133
    { NV_CHIP_VTNT2,            NV_CHIP_VTNT2,          RES_SHARED_VGA },
138
    {NV_CHIP_VTNT2,              NV_CHIP_VTNT2,              RES_SHARED_VGA},
134
    { NV_CHIP_UVTNT2,           NV_CHIP_UVTNT2,         RES_SHARED_VGA },
139
    {NV_CHIP_UVTNT2,             NV_CHIP_UVTNT2,             RES_SHARED_VGA},
135
    { NV_CHIP_ITNT2,            NV_CHIP_ITNT2,          RES_SHARED_VGA },
140
    {NV_CHIP_ITNT2,              NV_CHIP_ITNT2,              RES_SHARED_VGA},
136
    { NV_CHIP_GEFORCE256,       NV_CHIP_GEFORCE256,     RES_SHARED_VGA },
141
    {NV_CHIP_GEFORCE_256,        NV_CHIP_GEFORCE_256,        RES_SHARED_VGA},
137
    { NV_CHIP_GEFORCEDDR,       NV_CHIP_GEFORCEDDR,     RES_SHARED_VGA },
142
    {NV_CHIP_GEFORCE_DDR,        NV_CHIP_GEFORCE_DDR,        RES_SHARED_VGA},
138
    { NV_CHIP_QUADRO,           NV_CHIP_QUADRO,         RES_SHARED_VGA },
143
    {NV_CHIP_QUADRO,             NV_CHIP_QUADRO,             RES_SHARED_VGA},
139
    { NV_CHIP_GEFORCE2GTS,      NV_CHIP_GEFORCE2GTS,    RES_SHARED_VGA },
144
    {NV_CHIP_GEFORCE2_MX,        NV_CHIP_GEFORCE2_MX,        RES_SHARED_VGA},
140
    { NV_CHIP_GEFORCE2GTS_1,    NV_CHIP_GEFORCE2GTS_1,  RES_SHARED_VGA },
145
    {NV_CHIP_GEFORCE2_MX_100,    NV_CHIP_GEFORCE2_MX_100,    RES_SHARED_VGA},
141
    { NV_CHIP_GEFORCE2ULTRA,    NV_CHIP_GEFORCE2ULTRA,  RES_SHARED_VGA },
146
    {NV_CHIP_GEFORCE2_GO,        NV_CHIP_GEFORCE2_GO,        RES_SHARED_VGA},
142
    { NV_CHIP_QUADRO2PRO,       NV_CHIP_QUADRO2PRO,     RES_SHARED_VGA },
147
    {NV_CHIP_QUADRO2_MXR,        NV_CHIP_QUADRO2_MXR,        RES_SHARED_VGA},
143
    { NV_CHIP_GEFORCE2MX,       NV_CHIP_GEFORCE2MX,     RES_SHARED_VGA },
148
    {NV_CHIP_GEFORCE2_GTS,       NV_CHIP_GEFORCE2_GTS,       RES_SHARED_VGA},
144
    { NV_CHIP_GEFORCE2MXDDR,    NV_CHIP_GEFORCE2MXDDR,  RES_SHARED_VGA },
149
    {NV_CHIP_GEFORCE2_TI,        NV_CHIP_GEFORCE2_TI,        RES_SHARED_VGA},
145
    { NV_CHIP_0x0170,           NV_CHIP_0x0170,         RES_SHARED_VGA },
150
    {NV_CHIP_GEFORCE2_ULTRA,     NV_CHIP_GEFORCE2_ULTRA,     RES_SHARED_VGA},
146
    { NV_CHIP_0x0171,           NV_CHIP_0x0171,         RES_SHARED_VGA },
151
    {NV_CHIP_QUADRO2_PRO,        NV_CHIP_QUADRO2_PRO,        RES_SHARED_VGA},
147
    { NV_CHIP_0x0172,           NV_CHIP_0x0172,         RES_SHARED_VGA },
152
    {NV_CHIP_GEFORCE4_MX_460,    NV_CHIP_GEFORCE4_MX_460,    RES_SHARED_VGA},
148
    { NV_CHIP_0x0173,           NV_CHIP_0x0173,         RES_SHARED_VGA },
153
    {NV_CHIP_GEFORCE4_MX_440,    NV_CHIP_GEFORCE4_MX_440,    RES_SHARED_VGA},
149
    { NV_CHIP_0x0174,           NV_CHIP_0x0174,         RES_SHARED_VGA },
154
    {NV_CHIP_GEFORCE4_MX_420,    NV_CHIP_GEFORCE4_MX_420,    RES_SHARED_VGA},
150
    { NV_CHIP_0x0175,           NV_CHIP_0x0175,         RES_SHARED_VGA },
155
    {NV_CHIP_GEFORCE4_440_GO,    NV_CHIP_GEFORCE4_440_GO,    RES_SHARED_VGA},
151
    { NV_CHIP_0x0178,           NV_CHIP_0x0178,         RES_SHARED_VGA },
156
    {NV_CHIP_GEFORCE4_420_GO,    NV_CHIP_GEFORCE4_420_GO,    RES_SHARED_VGA},
152
    { NV_CHIP_0x017A,           NV_CHIP_0x017A,         RES_SHARED_VGA },
157
    {NV_CHIP_GEFORCE4_420_GO_M32,NV_CHIP_GEFORCE4_420_GO_M32,RES_SHARED_VGA},
153
    { NV_CHIP_0x017B,           NV_CHIP_0x017B,         RES_SHARED_VGA },
158
    {NV_CHIP_QUADRO4_500XGL,     NV_CHIP_QUADRO4_500XGL,     RES_SHARED_VGA},
154
    { NV_CHIP_0x017C,           NV_CHIP_0x017C,         RES_SHARED_VGA },
159
    {NV_CHIP_GEFORCE4_440_GO_M64,NV_CHIP_GEFORCE4_440_GO_M64,RES_SHARED_VGA},
155
    { NV_CHIP_IGEFORCE2,        NV_CHIP_IGEFORCE2,      RES_SHARED_VGA },
160
    {NV_CHIP_QUADRO4_200,        NV_CHIP_QUADRO4_200,        RES_SHARED_VGA},
156
    { NV_CHIP_QUADRO2MXR,       NV_CHIP_QUADRO2MXR,     RES_SHARED_VGA },
161
    {NV_CHIP_QUADRO4_550XGL,     NV_CHIP_QUADRO4_550XGL,     RES_SHARED_VGA},
157
    { NV_CHIP_GEFORCE2GO,       NV_CHIP_GEFORCE2GO,     RES_SHARED_VGA },
162
    {NV_CHIP_QUADRO4_500_GOGL,   NV_CHIP_QUADRO4_500_GOGL,   RES_SHARED_VGA},
158
    { NV_CHIP_GEFORCE3,         NV_CHIP_GEFORCE3,       RES_SHARED_VGA },
163
    {NV_CHIP_IGEFORCE2,          NV_CHIP_IGEFORCE2,          RES_SHARED_VGA},
159
    { NV_CHIP_GEFORCE3_1,       NV_CHIP_GEFORCE3_1,     RES_SHARED_VGA },
164
    {NV_CHIP_GEFORCE3,           NV_CHIP_GEFORCE3,           RES_SHARED_VGA},
160
    { NV_CHIP_GEFORCE3_2,       NV_CHIP_GEFORCE3_2,     RES_SHARED_VGA },
165
    {NV_CHIP_GEFORCE3_TI_200,    NV_CHIP_GEFORCE3_TI_200,    RES_SHARED_VGA},
161
    { NV_CHIP_QUADRO_DDC,       NV_CHIP_QUADRO_DDC,     RES_SHARED_VGA },
166
    {NV_CHIP_GEFORCE3_TI_500,    NV_CHIP_GEFORCE3_TI_500,    RES_SHARED_VGA},
162
    { NV_CHIP_0x0250,           NV_CHIP_0x0250,         RES_SHARED_VGA },
167
    {NV_CHIP_QUADRO_DCC,         NV_CHIP_QUADRO_DCC,         RES_SHARED_VGA},
163
    { NV_CHIP_0x0258,           NV_CHIP_0x0258,         RES_SHARED_VGA },
168
    {NV_CHIP_GEFORCE4_TI_4600,   NV_CHIP_GEFORCE4_TI_4600,   RES_SHARED_VGA},
164
    { -1,                       -1,                     RES_UNDEFINED  }
169
    {NV_CHIP_GEFORCE4_TI_4400,   NV_CHIP_GEFORCE4_TI_4400,   RES_SHARED_VGA},
170
    {NV_CHIP_GEFORCE4_TI_4200,   NV_CHIP_GEFORCE4_TI_4200,   RES_SHARED_VGA},
171
    {NV_CHIP_QUADRO4_900XGL,     NV_CHIP_QUADRO4_900XGL,     RES_SHARED_VGA},
172
    {NV_CHIP_QUADRO4_750XGL,     NV_CHIP_QUADRO4_750XGL,     RES_SHARED_VGA},
173
    {NV_CHIP_QUADRO4_700XGL,     NV_CHIP_QUADRO4_700XGL,     RES_SHARED_VGA},
174
    { -1,                       -1,                          RES_UNDEFINED  }
165
};
175
};
166
176
167
/*
177
/*
Lines 179-191 Link Here
179
    "vgaHWGetHWRec",
189
    "vgaHWGetHWRec",
180
    "vgaHWGetIndex",
190
    "vgaHWGetIndex",
181
    "vgaHWInit",
191
    "vgaHWInit",
182
    "vgaHWLock",
183
    "vgaHWMapMem",
192
    "vgaHWMapMem",
184
    "vgaHWProtect",
193
    "vgaHWProtect",
185
    "vgaHWRestore",
194
    "vgaHWRestore",
186
    "vgaHWSave",
195
    "vgaHWSave",
187
    "vgaHWSaveScreen",
196
    "vgaHWSaveScreen",
188
    "vgaHWUnlock",
189
    "vgaHWddc1SetSpeed",
197
    "vgaHWddc1SetSpeed",
190
    NULL
198
    NULL
191
};
199
};
Lines 305-311 Link Here
305
    OPTION_FBDEV,
313
    OPTION_FBDEV,
306
    OPTION_ROTATE,
314
    OPTION_ROTATE,
307
    OPTION_VIDEO_KEY,
315
    OPTION_VIDEO_KEY,
308
    OPTION_FLAT_PANEL
316
    OPTION_FLAT_PANEL,
317
    OPTION_CRTC_NUMBER
309
} NVOpts;
318
} NVOpts;
310
319
311
320
Lines 319-324 Link Here
319
    { OPTION_ROTATE,		"Rotate",	OPTV_ANYSTR,	{0}, FALSE },
328
    { OPTION_ROTATE,		"Rotate",	OPTV_ANYSTR,	{0}, FALSE },
320
    { OPTION_VIDEO_KEY,		"VideoKey",	OPTV_INTEGER,	{0}, FALSE },
329
    { OPTION_VIDEO_KEY,		"VideoKey",	OPTV_INTEGER,	{0}, FALSE },
321
    { OPTION_FLAT_PANEL,	"FlatPanel",	OPTV_BOOLEAN,	{0}, FALSE },
330
    { OPTION_FLAT_PANEL,	"FlatPanel",	OPTV_BOOLEAN,	{0}, FALSE },
331
    { OPTION_CRTC_NUMBER,	"CrtcNumber",	OPTV_INTEGER,	{0}, FALSE },
322
    { -1,                       NULL,           OPTV_NONE,      {0}, FALSE }
332
    { -1,                       NULL,           OPTV_NONE,      {0}, FALSE }
323
};
333
};
324
334
Lines 333-339 Link Here
333
 */
343
 */
334
static NVRamdacRec DacInit = {
344
static NVRamdacRec DacInit = {
335
        FALSE, 0, 0, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL,
345
        FALSE, 0, 0, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL,
336
        0, NULL, NULL, NULL, NULL, NULL
346
        0, NULL, NULL, NULL, NULL
337
}; 
347
}; 
338
348
339
349
Lines 565-577 Link Here
565
NVEnterVT(int scrnIndex, int flags)
575
NVEnterVT(int scrnIndex, int flags)
566
{
576
{
567
    ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
577
    ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
568
    NVPtr pNv = NVPTR(pScrn);
569
    vgaHWPtr hwp = VGAHWPTR(pScrn);
570
578
571
    DEBUG(xf86DrvMsg(scrnIndex, X_INFO, "NVEnterVT\n"));
579
    DEBUG(xf86DrvMsg(scrnIndex, X_INFO, "NVEnterVT\n"));
572
580
573
    vgaHWUnlock(hwp);
574
    pNv->riva.LockUnlock(&pNv->riva, 0);
575
    if (!NVModeInit(pScrn, pScrn->currentMode))
581
    if (!NVModeInit(pScrn, pScrn->currentMode))
576
        return FALSE;
582
        return FALSE;
577
    NVAdjustFrame(scrnIndex, pScrn->frameX0, pScrn->frameY0, 0);
583
    NVAdjustFrame(scrnIndex, pScrn->frameX0, pScrn->frameY0, 0);
Lines 600-612 Link Here
600
{
606
{
601
    ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
607
    ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
602
    NVPtr pNv = NVPTR(pScrn);
608
    NVPtr pNv = NVPTR(pScrn);
603
    vgaHWPtr hwp = VGAHWPTR(pScrn);
604
609
605
    DEBUG(xf86DrvMsg(scrnIndex, X_INFO, "NVLeaveVT\n"));
610
    DEBUG(xf86DrvMsg(scrnIndex, X_INFO, "NVLeaveVT\n"));
606
611
607
    NVRestore(pScrn);
612
    NVRestore(pScrn);
608
    pNv->riva.LockUnlock(&pNv->riva, 1);
613
    pNv->riva.LockUnlock(&pNv->riva, 1);
609
    vgaHWLock(hwp);
610
}
614
}
611
615
612
616
Lines 645-651 Link Here
645
NVCloseScreen(int scrnIndex, ScreenPtr pScreen)
649
NVCloseScreen(int scrnIndex, ScreenPtr pScreen)
646
{
650
{
647
    ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
651
    ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
648
    vgaHWPtr hwp = VGAHWPTR(pScrn);
649
    NVPtr pNv = NVPTR(pScrn);
652
    NVPtr pNv = NVPTR(pScrn);
650
653
651
    DEBUG(xf86DrvMsg(scrnIndex, X_INFO, "NVCloseScreen\n"));
654
    DEBUG(xf86DrvMsg(scrnIndex, X_INFO, "NVCloseScreen\n"));
Lines 653-659 Link Here
653
    if (pScrn->vtSema) {
656
    if (pScrn->vtSema) {
654
        NVRestore(pScrn);
657
        NVRestore(pScrn);
655
        pNv->riva.LockUnlock(&pNv->riva, 1);
658
        pNv->riva.LockUnlock(&pNv->riva, 1);
656
        vgaHWLock(hwp);
657
    }
659
    }
658
660
659
    NVUnmapMem(pScrn);
661
    NVUnmapMem(pScrn);
Lines 779-793 Link Here
779
 
781
 
780
782
781
/* Internally used */
783
/* Internally used */
782
static xf86MonPtr
784
xf86MonPtr
783
NVdoDDC(ScrnInfoPtr pScrn)
785
NVdoDDC(ScrnInfoPtr pScrn)
784
{
786
{
785
    vgaHWPtr hwp;
786
    NVPtr pNv;
787
    NVPtr pNv;
787
    NVRamdacPtr NVdac;
788
    NVRamdacPtr NVdac;
788
    xf86MonPtr MonInfo = NULL;
789
    xf86MonPtr MonInfo = NULL;
789
790
790
    hwp = VGAHWPTR(pScrn);
791
    pNv = NVPTR(pScrn);
791
    pNv = NVPTR(pScrn);
792
    NVdac = &pNv->Dac;
792
    NVdac = &pNv->Dac;
793
793
Lines 800-806 Link Here
800
    /*    if ((MonInfo = nvDoDDCVBE(pScrn))) return MonInfo;      */
800
    /*    if ((MonInfo = nvDoDDCVBE(pScrn))) return MonInfo;      */
801
801
802
    /* Enable access to extended registers */
802
    /* Enable access to extended registers */
803
    vgaHWUnlock(hwp);
804
    pNv->riva.LockUnlock(&pNv->riva, 0);
803
    pNv->riva.LockUnlock(&pNv->riva, 0);
805
    /* Save the current state */
804
    /* Save the current state */
806
    NVSave(pScrn);
805
    NVSave(pScrn);
Lines 814-820 Link Here
814
    /* Restore previous state */
813
    /* Restore previous state */
815
    NVRestore(pScrn);
814
    NVRestore(pScrn);
816
    pNv->riva.LockUnlock(&pNv->riva, 1);
815
    pNv->riva.LockUnlock(&pNv->riva, 1);
817
    vgaHWLock(hwp);
818
816
819
    return MonInfo;
817
    return MonInfo;
820
}
818
}
Lines 972-978 Link Here
972
                /* OK */
970
                /* OK */
973
                break;
971
                break;
974
            case 16:
972
            case 16:
975
                if(pNv->Chipset == NV_CHIP_RIVA128) {
973
                if(pNv->Chipset == NV_CHIP_RIVA_128) {
976
                    xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
974
                    xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
977
                        "The Riva 128 chipset does not support depth 16.  "
975
                        "The Riva 128 chipset does not support depth 16.  "
978
			"Using depth 15 instead\n");
976
			"Using depth 15 instead\n");
Lines 1141-1150 Link Here
1141
        (((pScrn->mask.blue >> pScrn->offset.blue) - 1) << pScrn->offset.blue); 
1139
        (((pScrn->mask.blue >> pScrn->offset.blue) - 1) << pScrn->offset.blue); 
1142
    }
1140
    }
1143
1141
1144
    if (xf86ReturnOptValBool(pNv->Options, OPTION_FLAT_PANEL, FALSE)) {
1142
    if (xf86GetOptValBool(pNv->Options, OPTION_FLAT_PANEL, &(pNv->FlatPanel))) {
1145
	pNv->FlatPanel = TRUE;
1143
        xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "forcing %s usage\n",
1146
	xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "using flat panel\n");
1144
                   pNv->FlatPanel ? "DFP" : "CRTC");
1145
    } else {
1146
        pNv->FlatPanel = -1;   /* autodetect later */
1147
    }
1147
    }
1148
1149
    if (xf86GetOptValInteger(pNv->Options, OPTION_CRTC_NUMBER, 
1150
                                &pNv->forceCRTC)) 
1151
    {
1152
	if((pNv->forceCRTC < 0) || (pNv->forceCRTC > 1)) {
1153
           pNv->forceCRTC = -1;
1154
           xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, 
1155
                      "Invalid CRTC number.  Must be 0 or 1\n");
1156
        }
1157
    } else pNv->forceCRTC = -1;
1158
1148
    
1159
    
1149
    if (pNv->pEnt->device->MemBase != 0) {
1160
    if (pNv->pEnt->device->MemBase != 0) {
1150
	/* Require that the config file value matches one of the PCI values. */
1161
	/* Require that the config file value matches one of the PCI values. */
Lines 1233-1244 Link Here
1233
    }
1244
    }
1234
1245
1235
    /*
1246
    /*
1236
     * fill riva structure etc.
1237
     */
1238
    (*pNv->PreInit)(pScrn);
1239
    
1240
1241
    /*
1242
     * If the user has specified the amount of memory in the XF86Config
1247
     * If the user has specified the amount of memory in the XF86Config
1243
     * file, we respect that setting.
1248
     * file, we respect that setting.
1244
     */
1249
     */
Lines 1258-1299 Link Here
1258
	
1263
	
1259
    pNv->FbMapSize = pScrn->videoRam * 1024;
1264
    pNv->FbMapSize = pScrn->videoRam * 1024;
1260
1265
1261
#if !defined(__powerpc__)
1262
    /* Read and print the Monitor DDC info */
1263
    pScrn->monitor->DDC = NVdoDDC(pScrn);
1264
#endif
1265
1266
#if 0
1267
    /*
1268
     * This code was for testing. It will be removed as soon
1269
     * as this is integrated into the common level.
1270
     */
1271
    if ((!pScrn->monitor->nHsync || !pScrn->monitor->nVrefresh)
1272
 	&& pScrn->monitor->DDC) {
1273
 	int i;
1274
 	int h = (!pScrn->monitor->nHsync) ? 0 : -1;
1275
 	int v = (!pScrn->monitor->nVrefresh) ? 0 : -1;
1276
 	xf86MonPtr pMon = (xf86MonPtr)pScrn->monitor->DDC;
1277
 	for (i = 0; i < DET_TIMINGS; i++) {
1278
 	    if (pMon->det_mon[i].type == DS_RANGES) {
1279
 		if (h != -1) {
1280
 		    pScrn->monitor->hsync[h].lo
1281
 			= pMon->det_mon[i].section.ranges.min_h;
1282
 		    pScrn->monitor->hsync[h++].hi
1283
 			= pMon->det_mon[i].section.ranges.max_h;
1284
 		}
1285
 		if (v != -1) {
1286
 		    pScrn->monitor->vrefresh[v].lo
1287
 			= pMon->det_mon[i].section.ranges.min_v;
1288
 		    pScrn->monitor->vrefresh[v++].hi
1289
 			= pMon->det_mon[i].section.ranges.max_v;
1290
 		}
1291
 	    }
1292
 	}
1293
 	if (h != -1) pScrn->monitor->nHsync = h;
1294
 	if (v != -1) pScrn->monitor->nVrefresh = v;
1295
     }     
1296
#endif
1297
    /*
1266
    /*
1298
     * If the driver can do gamma correction, it should call xf86SetGamma()
1267
     * If the driver can do gamma correction, it should call xf86SetGamma()
1299
     * here.
1268
     * here.
Lines 1318-1323 Link Here
1318
        case NV_ARCH_04:
1287
        case NV_ARCH_04:
1319
        case NV_ARCH_10:
1288
        case NV_ARCH_10:
1320
        case NV_ARCH_20:
1289
        case NV_ARCH_20:
1290
        default:
1321
            pNv->FbUsableSize -= 128 * 1024;
1291
            pNv->FbUsableSize -= 128 * 1024;
1322
            break;
1292
            break;
1323
    }
1293
    }
Lines 1344-1349 Link Here
1344
       clockRanges->interlaceAllowed = FALSE;
1314
       clockRanges->interlaceAllowed = FALSE;
1345
    clockRanges->doubleScanAllowed = TRUE;
1315
    clockRanges->doubleScanAllowed = TRUE;
1346
1316
1317
    if(pNv->FlatPanel == 1) {
1318
       clockRanges->interlaceAllowed = FALSE;
1319
       clockRanges->doubleScanAllowed = FALSE;
1320
    }
1321
1347
    /*
1322
    /*
1348
     * xf86ValidateModes will check that the mode HTotal and VTotal values
1323
     * xf86ValidateModes will check that the mode HTotal and VTotal values
1349
     * don't exceed the chipset's limit if pScrn->maxHValue and
1324
     * don't exceed the chipset's limit if pScrn->maxHValue and
Lines 1538-1546 Link Here
1538
1513
1539
1514
1540
/*
1515
/*
1541
 * Initialise a new mode.  This is currently still using the old
1516
 * Initialise a new mode. 
1542
 * "initialise struct, restore/write struct to HW" model.  That could
1543
 * be changed.
1544
 */
1517
 */
1545
1518
1546
static Bool
1519
static Bool
Lines 1558-1575 Link Here
1558
	return FALSE;
1531
	return FALSE;
1559
    pScrn->vtSema = TRUE;
1532
    pScrn->vtSema = TRUE;
1560
1533
1561
    if ( pNv->ModeInit ) {
1534
    if(!(*pNv->ModeInit)(pScrn, mode))
1562
        if (!(*pNv->ModeInit)(pScrn, mode))
1535
        return FALSE;
1563
            return FALSE;
1564
    }
1565
1536
1566
    /* Program the registers */
1537
    /* Program the registers */
1567
    vgaHWProtect(pScrn, TRUE);
1538
    vgaHWProtect(pScrn, TRUE);
1568
    vgaReg = &hwp->ModeReg;
1539
    vgaReg = &hwp->ModeReg;
1569
    nvReg = &pNv->ModeReg;
1540
    nvReg = &pNv->ModeReg;
1570
1541
1571
    if ( pNv->Restore )
1542
    (*pNv->Restore)(pScrn, vgaReg, nvReg, FALSE);
1572
        (*pNv->Restore)(pScrn, vgaReg, nvReg, FALSE);
1573
1543
1574
#if X_BYTE_ORDER == X_BIG_ENDIAN
1544
#if X_BYTE_ORDER == X_BIG_ENDIAN
1575
    /* turn on LFB swapping */
1545
    /* turn on LFB swapping */
Lines 1606-1615 Link Here
1606
    DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "NVRestore\n"));
1576
    DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "NVRestore\n"));
1607
    /* Only restore text mode fonts/text for the primary card */
1577
    /* Only restore text mode fonts/text for the primary card */
1608
    vgaHWProtect(pScrn, TRUE);
1578
    vgaHWProtect(pScrn, TRUE);
1609
    if (pNv->Primary)
1579
    (*pNv->Restore)(pScrn, vgaReg, nvReg, pNv->Primary);
1610
        (*pNv->Restore)(pScrn, vgaReg, nvReg, TRUE);
1611
    else
1612
        vgaHWRestore(pScrn, vgaReg, VGA_SR_MODE);
1613
    vgaHWProtect(pScrn, FALSE);
1580
    vgaHWProtect(pScrn, FALSE);
1614
}
1581
}
1615
1582
Lines 1666-1672 Link Here
1666
	    return FALSE;
1633
	    return FALSE;
1667
    } else {
1634
    } else {
1668
	/* Save the current state */
1635
	/* Save the current state */
1669
        vgaHWUnlock(hwp);
1670
        pNv->riva.LockUnlock(&pNv->riva, 0);
1636
        pNv->riva.LockUnlock(&pNv->riva, 0);
1671
	NVSave(pScrn);
1637
	NVSave(pScrn);
1672
	/* Initialise the first mode */
1638
	/* Initialise the first mode */
Lines 1897-1908 Link Here
1897
    vgaRegPtr vgaReg = &pVga->SavedReg;
1863
    vgaRegPtr vgaReg = &pVga->SavedReg;
1898
1864
1899
    DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "NVSave\n"));
1865
    DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "NVSave\n"));
1900
#if defined(__powerpc__)
1866
    (*pNv->Save)(pScrn, vgaReg, nvReg, pNv->Primary);
1901
    /* The console driver will have to save the fonts, we can't */
1902
    vgaHWSave(pScrn, vgaReg, VGA_SR_CMAP | VGA_SR_MODE);
1903
#else
1904
    vgaHWSave(pScrn, vgaReg, VGA_SR_CMAP | VGA_SR_MODE | VGA_SR_FONTS);
1905
#endif
1906
    pNv->riva.UnloadStateExt(&pNv->riva, nvReg);
1907
}
1867
}
1908
1868
(-)xc/programs/Xserver/hw/xfree86/drivers/nv/nv_local.h (-13 / +12 lines)
Lines 36-75 Link Here
36
|*     those rights set forth herein.                                        *|
36
|*     those rights set forth herein.                                        *|
37
|*                                                                           *|
37
|*                                                                           *|
38
 \***************************************************************************/
38
 \***************************************************************************/
39
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_local.h,v 1.6 2000/11/03 18:46:12 eich Exp $ */
39
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_local.h,v 1.7 2002/01/25 21:56:06 tsi Exp $ */
40
40
41
#ifndef __NV_LOCAL_H__
41
#ifndef __NV_LOCAL_H__
42
#define __NV_LOCAL_H__
42
#define __NV_LOCAL_H__
43
43
/*
44
/*
44
 * This file includes any environment or machine specific values to access the HW.
45
 * This file includes any environment or machine specific values to access the
45
 * Put all affected includes, typdefs, etc. here so the riva_hw.* files can stay
46
 * HW.  Put all affected includes, typdefs, etc. here so the riva_hw.* files
46
 * generic in nature.
47
 * can stay generic in nature.
47
 */ 
48
 */ 
48
#include "xf86_ansic.h"
49
#include "xf86_ansic.h"
49
#include "compiler.h"
50
#include "compiler.h"
51
#include "xf86_OSproc.h"
52
50
/*
53
/*
51
 * Typedefs to force certain sized values.
54
 * Typedefs to force certain sized values.
52
 */
55
 */
53
typedef unsigned char  U008;
56
typedef unsigned char  U008;
54
typedef unsigned short U016;
57
typedef unsigned short U016;
55
typedef unsigned int   U032;
58
typedef unsigned int   U032;
59
56
/*
60
/*
57
 * HW access macros.
61
 * HW access macros.  These assume memory-mapped I/O, and not normal I/O space.
58
 */
62
 */
59
#include "xf86_OSproc.h"
60
/* these assume memory-mapped I/O, and not normal I/O space */
61
#define NV_WR08(p,i,d)  MMIO_OUT8((volatile pointer)(p), (i), (d))
63
#define NV_WR08(p,i,d)  MMIO_OUT8((volatile pointer)(p), (i), (d))
62
#define NV_RD08(p,i)    MMIO_IN8((volatile pointer)(p), (i))
64
#define NV_RD08(p,i)    MMIO_IN8((volatile pointer)(p), (i))
63
#define NV_WR16(p,i,d)  MMIO_OUT16((volatile pointer)(p), (i), (d))
65
#define NV_WR16(p,i,d)  MMIO_OUT16((volatile pointer)(p), (i), (d))
64
#define NV_RD16(p,i)    MMIO_IN16((volatile pointer)(p), (i))
66
#define NV_RD16(p,i)    MMIO_IN16((volatile pointer)(p), (i))
65
#define NV_WR32(p,i,d)  MMIO_OUT32((volatile pointer)(p), (i), (d))
67
#define NV_WR32(p,i,d)  MMIO_OUT32((volatile pointer)(p), (i), (d))
66
#define NV_RD32(p,i)    MMIO_IN32((volatile pointer)(p), (i))
68
#define NV_RD32(p,i)    MMIO_IN32((volatile pointer)(p), (i))
67
#if 1
69
70
/* VGA I/O is now always done through MMIO */
68
#define VGA_WR08(p,i,d) NV_WR08(p,i,d)
71
#define VGA_WR08(p,i,d) NV_WR08(p,i,d)
69
#define VGA_RD08(p,i)   NV_RD08(p,i)
72
#define VGA_RD08(p,i)   NV_RD08(p,i)
70
#else
71
#define VGA_WR08(p,i,d) outb(i,d)
72
#define VGA_RD08(p,i)   inb(i)
73
#endif
74
#endif /* __NV_LOCAL_H__ */
75
73
74
#endif /* __NV_LOCAL_H__ */
(-)xc/programs/Xserver/hw/xfree86/drivers/nv/nv_proto.h (-1 / +3 lines)
Lines 1-4 Link Here
1
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_proto.h,v 1.6 2001/03/28 01:17:43 mvojkovi Exp $ */
1
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_proto.h,v 1.7 2002/03/15 05:16:40 mvojkovi Exp $ */
2
2
3
#ifndef __NV_PROTO_H__
3
#ifndef __NV_PROTO_H__
4
#define __NV_PROTO_H__
4
#define __NV_PROTO_H__
Lines 6-11 Link Here
6
/* in nv_driver.c */
6
/* in nv_driver.c */
7
Bool    NVSwitchMode(int scrnIndex, DisplayModePtr mode, int flags);
7
Bool    NVSwitchMode(int scrnIndex, DisplayModePtr mode, int flags);
8
void    NVAdjustFrame(int scrnIndex, int x, int y, int flags);
8
void    NVAdjustFrame(int scrnIndex, int x, int y, int flags);
9
xf86MonPtr NVdoDDC(ScrnInfoPtr pScrn);
10
9
11
10
/* in nv_dac.c */
12
/* in nv_dac.c */
11
void    NVRamdacInit(ScrnInfoPtr pScrn);
13
void    NVRamdacInit(ScrnInfoPtr pScrn);
(-)xc/programs/Xserver/hw/xfree86/drivers/nv/nv_setup.c (-23 / +169 lines)
Lines 24-30 Link Here
24
/* Hacked together from mga driver and 3.3.4 NVIDIA driver by Jarno Paananen
24
/* Hacked together from mga driver and 3.3.4 NVIDIA driver by Jarno Paananen
25
   <jpaana@s2.org> */
25
   <jpaana@s2.org> */
26
26
27
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_setup.c,v 1.11 2001/10/30 19:38:29 mvojkovi Exp $ */
27
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_setup.c,v 1.17 2002/03/15 05:16:40 mvojkovi Exp $ */
28
28
29
#include "nv_include.h"
29
#include "nv_include.h"
30
30
Lines 155-160 Link Here
155
    return (VGA_RD08(pNv->riva.PDIO, VGA_DAC_DATA));
155
    return (VGA_RD08(pNv->riva.PDIO, VGA_DAC_DATA));
156
}
156
}
157
157
158
static Bool 
159
NVIsConnected (ScrnInfoPtr pScrn, Bool second)
160
{
161
    NVPtr pNv = NVPTR(pScrn);
162
    volatile U032 *PRAMDAC = pNv->riva.PRAMDAC0;
163
    CARD32 reg52C, reg608;
164
    Bool present;
165
166
    if(second) PRAMDAC += 0x800;
167
168
    reg52C = PRAMDAC[0x052C/4];
169
    reg608 = PRAMDAC[0x0608/4];
170
171
    PRAMDAC[0x0608/4] = reg608 & ~0x00010000;
172
173
    PRAMDAC[0x052C/4] = reg52C & 0x0000FEEE;
174
    usleep(1000);
175
    PRAMDAC[0x052C/4] |= 1;
176
177
    pNv->riva.PRAMDAC0[0x0610/4] = 0x94050140;
178
    pNv->riva.PRAMDAC0[0x0608/4] |= 0x00001000;
179
180
    usleep(1000);
181
182
    present = (PRAMDAC[0x0608/4] & (1 << 28)) ? TRUE : FALSE;
183
184
    pNv->riva.PRAMDAC0[0x0608/4] &= 0x0000EFFF;
185
186
    PRAMDAC[0x052C/4] = reg52C;
187
    PRAMDAC[0x0608/4] = reg608;
188
189
    return present;
190
}
191
192
static void
193
NVOverrideCRTC(ScrnInfoPtr pScrn)
194
{
195
    NVPtr pNv = NVPTR(pScrn);
196
197
    xf86DrvMsg(pScrn->scrnIndex, X_INFO,
198
               "Detected CRTC controller %i being used\n",
199
               pNv->SecondCRTC ? 1 : 0);
200
201
    if(pNv->forceCRTC != -1) {
202
        xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
203
                   "Forcing usage of CRTC %i\n", pNv->forceCRTC);
204
        pNv->SecondCRTC = pNv->forceCRTC;
205
    }
206
}
207
208
static void
209
NVIsSecond (ScrnInfoPtr pScrn)
210
{
211
    NVPtr pNv = NVPTR(pScrn);
212
213
    if(pNv->FlatPanel == 1) {
214
       switch(pNv->Chipset) {
215
       case NV_CHIP_GEFORCE4_440_GO:
216
       case NV_CHIP_GEFORCE4_440_GO_M64:
217
       case NV_CHIP_GEFORCE4_420_GO:
218
       case NV_CHIP_GEFORCE4_420_GO_M32:
219
       case NV_CHIP_QUADRO4_500_GOGL:
220
           pNv->SecondCRTC = TRUE;
221
           break;
222
       default:
223
           pNv->SecondCRTC = FALSE;
224
           break;
225
       }
226
    } else {
227
       if(NVIsConnected(pScrn, 0)) {
228
          if(pNv->riva.PRAMDAC0[0x0000052C/4] & 0x100)
229
             pNv->SecondCRTC = TRUE;
230
          else
231
             pNv->SecondCRTC = FALSE;
232
       } else 
233
       if (NVIsConnected(pScrn, 1)) {
234
          if(pNv->riva.PRAMDAC0[0x0000252C/4] & 0x100)
235
             pNv->SecondCRTC = TRUE;
236
          else
237
             pNv->SecondCRTC = FALSE;
238
       } else /* default */
239
          pNv->SecondCRTC = FALSE;
240
    }
241
242
    NVOverrideCRTC(pScrn);
243
}
158
244
159
static void
245
static void
160
NVCommonSetup(ScrnInfoPtr pScrn)
246
NVCommonSetup(ScrnInfoPtr pScrn)
Lines 168-174 Link Here
168
    DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "- Regbase %x\n", regBase));
254
    DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "- Regbase %x\n", regBase));
169
    DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "- riva %x\n", &pNv->riva));
255
    DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "- riva %x\n", &pNv->riva));
170
256
171
    pNv->PreInit = NVRamdacInit;
172
    pNv->Save = NVDACSave;
257
    pNv->Save = NVDACSave;
173
    pNv->Restore = NVDACRestore;
258
    pNv->Restore = NVDACRestore;
174
    pNv->ModeInit = NVDACInit;
259
    pNv->ModeInit = NVDACInit;
Lines 216-224 Link Here
216
301
217
    mmioFlags = VIDMEM_MMIO | VIDMEM_READSIDEEFFECT;
302
    mmioFlags = VIDMEM_MMIO | VIDMEM_READSIDEEFFECT;
218
303
219
    pNv->riva.PRAMDAC = xf86MapPciMem(pScrn->scrnIndex, mmioFlags, pNv->PciTag,
304
    pNv->riva.PRAMDAC0 = xf86MapPciMem(pScrn->scrnIndex, mmioFlags, pNv->PciTag,
220
                                      regBase+0x00680000, 0x00003000);
305
                                      regBase+0x00680000, 0x00003000);
221
    DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "- PRAMDAC %x\n", pNv->riva.PRAMDAC));
306
    DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "- PRAMDAC %x\n", pNv->riva.PRAMDAC0));
222
    pNv->riva.PFB     = xf86MapPciMem(pScrn->scrnIndex, mmioFlags, pNv->PciTag,
307
    pNv->riva.PFB     = xf86MapPciMem(pScrn->scrnIndex, mmioFlags, pNv->PciTag,
223
                                      regBase+0x00100000, 0x00001000);
308
                                      regBase+0x00100000, 0x00001000);
224
    DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "- PFB %x\n", pNv->riva.PFB));
309
    DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "- PFB %x\n", pNv->riva.PFB));
Lines 245-266 Link Here
245
     * These registers are read/write as 8 bit values.  Probably have to map
330
     * These registers are read/write as 8 bit values.  Probably have to map
246
     * sparse on alpha.
331
     * sparse on alpha.
247
     */
332
     */
248
    pNv->riva.PCIO = (U008 *)xf86MapPciMem(pScrn->scrnIndex, mmioFlags,
333
    pNv->riva.PCIO0 = (U008 *)xf86MapPciMem(pScrn->scrnIndex, mmioFlags,
249
                                           pNv->PciTag, regBase+0x00601000,
334
                                           pNv->PciTag, regBase+0x00601000,
250
                                           0x00001000);
335
                                           0x00003000);
251
    pNv->riva.PDIO = (U008 *)xf86MapPciMem(pScrn->scrnIndex, mmioFlags,
336
    pNv->riva.PDIO0 = (U008 *)xf86MapPciMem(pScrn->scrnIndex, mmioFlags,
252
                                           pNv->PciTag, regBase+0x00681000,
337
                                           pNv->PciTag, regBase+0x00681000,
253
                                           0x00001000);
338
                                           0x00003000);
254
    pNv->riva.PVIO = (U008 *)xf86MapPciMem(pScrn->scrnIndex, mmioFlags,
339
    pNv->riva.PVIO = (U008 *)xf86MapPciMem(pScrn->scrnIndex, mmioFlags,
255
                                           pNv->PciTag, regBase+0x000C0000,
340
                                           pNv->PciTag, regBase+0x000C0000,
256
                                           0x00001000);
341
                                           0x00001000);
257
    
342
343
    if(pNv->FlatPanel == -1) {
344
       switch(pNv->Chipset) {
345
       case NV_CHIP_GEFORCE4_440_GO:
346
       case NV_CHIP_GEFORCE4_440_GO_M64:
347
       case NV_CHIP_GEFORCE4_420_GO:
348
       case NV_CHIP_GEFORCE4_420_GO_M32:
349
       case NV_CHIP_QUADRO4_500_GOGL:
350
       case NV_CHIP_GEFORCE2_GO:
351
           xf86DrvMsg(pScrn->scrnIndex, X_PROBED,
352
                      "On a laptop.  Assuming Digital Flat Panel\n");
353
           pNv->FlatPanel = 1;
354
           break;
355
       default:
356
           break;
357
       }
358
    }
359
360
    switch(pNv->Chipset & 0x0ff0) {
361
    case 0x0110:
362
        if(pNv->Chipset == NV_CHIP_GEFORCE2_GO)
363
            pNv->SecondCRTC = TRUE;
364
#if defined(__powerpc__)
365
        else if(pNv->FlatPanel == 1)
366
            pNv->SecondCRTC = TRUE;
367
#endif
368
        NVOverrideCRTC(pScrn);
369
        break;
370
    case 0x0170:
371
    case 0x0250:
372
        NVIsSecond(pScrn);
373
        break;
374
    default:
375
        break;
376
    }
377
378
    if(pNv->SecondCRTC) {
379
       pNv->riva.PCIO = pNv->riva.PCIO0 + 0x2000;
380
       pNv->riva.PCRTC = pNv->riva.PCRTC0 + 0x800;
381
       pNv->riva.PRAMDAC = pNv->riva.PRAMDAC0 + 0x800;
382
       pNv->riva.PDIO = pNv->riva.PDIO0 + 0x2000;
383
    } else {
384
       pNv->riva.PCIO = pNv->riva.PCIO0;
385
       pNv->riva.PCRTC = pNv->riva.PCRTC0;
386
       pNv->riva.PRAMDAC = pNv->riva.PRAMDAC0;
387
       pNv->riva.PDIO = pNv->riva.PDIO0;
388
    }
389
258
    RivaGetConfig(pNv);
390
    RivaGetConfig(pNv);
259
391
260
    pNv->Dac.maxPixelClock = pNv->riva.MaxVClockFreqKHz;
392
    pNv->Dac.maxPixelClock = pNv->riva.MaxVClockFreqKHz;
261
393
262
    vgaHWUnlock(VGAHWPTR(pScrn));
263
    pNv->riva.LockUnlock(&pNv->riva, 0);
394
    pNv->riva.LockUnlock(&pNv->riva, 0);
395
396
    NVRamdacInit(pScrn);
397
398
#if !defined(__powerpc__)
399
    /* Read and print the Monitor DDC info */
400
    pScrn->monitor->DDC = NVdoDDC(pScrn);
401
#endif
402
    if(pNv->FlatPanel == -1) {
403
        pNv->FlatPanel = 0;
404
        if(pScrn->monitor->DDC) {
405
           xf86MonPtr ddc = (xf86MonPtr)pScrn->monitor->DDC;
406
407
           if(ddc->features.input_type) {
408
               pNv->FlatPanel = 1;
409
               xf86DrvMsg(pScrn->scrnIndex, X_PROBED,
410
                         "autodetected Digital Flat Panel\n");
411
           }
412
        }
413
    }
414
    pNv->riva.flatPanel = (pNv->FlatPanel > 0) ? TRUE : FALSE;
264
}
415
}
265
416
266
void
417
void
Lines 289-294 Link Here
289
                                     frameBase+0x00C00000, 0x00008000);
440
                                     frameBase+0x00C00000, 0x00008000);
290
            
441
            
291
    NVCommonSetup(pScrn);
442
    NVCommonSetup(pScrn);
443
    pNv->riva.PCRTC = pNv->riva.PCRTC0 = pNv->riva.PGRAPH;
292
}
444
}
293
445
294
void
446
void
Lines 307-317 Link Here
307
    mmioFlags = VIDMEM_MMIO | VIDMEM_READSIDEEFFECT;
459
    mmioFlags = VIDMEM_MMIO | VIDMEM_READSIDEEFFECT;
308
    pNv->riva.PRAMIN = xf86MapPciMem(pScrn->scrnIndex, mmioFlags, pNv->PciTag,
460
    pNv->riva.PRAMIN = xf86MapPciMem(pScrn->scrnIndex, mmioFlags, pNv->PciTag,
309
                                     regBase+0x00710000, 0x00010000);
461
                                     regBase+0x00710000, 0x00010000);
310
    pNv->riva.PCRTC  = xf86MapPciMem(pScrn->scrnIndex, mmioFlags, pNv->PciTag,
462
    pNv->riva.PCRTC0 = xf86MapPciMem(pScrn->scrnIndex, mmioFlags, pNv->PciTag,
311
                                     regBase+0x00600000, 0x00001000);
463
                                     regBase+0x00600000, 0x00001000);
312
464
313
    NVCommonSetup(pScrn);
465
    NVCommonSetup(pScrn);
314
}
466
}
467
315
void
468
void
316
NV10Setup(ScrnInfoPtr pScrn)
469
NV10Setup(ScrnInfoPtr pScrn)
317
{
470
{
Lines 322-335 Link Here
322
    DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "NV10Setup\n"));
475
    DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "NV10Setup\n"));
323
476
324
    pNv->riva.Architecture = 0x10;
477
    pNv->riva.Architecture = 0x10;
325
    /*
326
     * Map chip-specific memory-mapped registers. This MUST be done in the OS specific driver code.
327
     */
328
    mmioFlags = VIDMEM_MMIO | VIDMEM_READSIDEEFFECT;
478
    mmioFlags = VIDMEM_MMIO | VIDMEM_READSIDEEFFECT;
329
    pNv->riva.PRAMIN = xf86MapPciMem(pScrn->scrnIndex, mmioFlags, pNv->PciTag,
479
    pNv->riva.PRAMIN = xf86MapPciMem(pScrn->scrnIndex, mmioFlags, pNv->PciTag,
330
                                     regBase+0x00710000, 0x00010000);
480
                                     regBase+0x00710000, 0x00010000);
331
    pNv->riva.PCRTC  = xf86MapPciMem(pScrn->scrnIndex, mmioFlags, pNv->PciTag,
481
    pNv->riva.PCRTC0 = xf86MapPciMem(pScrn->scrnIndex, mmioFlags, pNv->PciTag,
332
                                     regBase+0x00600000, 0x00001000);
482
                                     regBase+0x00600000, 0x00003000);
333
483
334
    NVCommonSetup(pScrn);
484
    NVCommonSetup(pScrn);
335
}
485
}
Lines 341-358 Link Here
341
    CARD32 regBase = pNv->IOAddress;
491
    CARD32 regBase = pNv->IOAddress;
342
    int mmioFlags;
492
    int mmioFlags;
343
493
344
    DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "NV10Setup\n"));
494
    DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "NV20Setup\n"));
345
495
346
    pNv->riva.Architecture = 0x20;
496
    pNv->riva.Architecture = 0x20;
347
    /*
348
     * Map chip-specific memory-mapped registers. This MUST be done in the OS sp
349
ecific driver code.
350
     */
351
    mmioFlags = VIDMEM_MMIO | VIDMEM_READSIDEEFFECT;
497
    mmioFlags = VIDMEM_MMIO | VIDMEM_READSIDEEFFECT;
352
    pNv->riva.PRAMIN = xf86MapPciMem(pScrn->scrnIndex, mmioFlags, pNv->PciTag,
498
    pNv->riva.PRAMIN = xf86MapPciMem(pScrn->scrnIndex, mmioFlags, pNv->PciTag,
353
                                     regBase+0x00710000, 0x00010000);
499
                                     regBase+0x00710000, 0x00010000);
354
    pNv->riva.PCRTC  = xf86MapPciMem(pScrn->scrnIndex, mmioFlags, pNv->PciTag,
500
    pNv->riva.PCRTC0 = xf86MapPciMem(pScrn->scrnIndex, mmioFlags, pNv->PciTag,
355
                                     regBase+0x00600000, 0x00001000);
501
                                     regBase+0x00600000, 0x00003000);
356
502
357
    NVCommonSetup(pScrn);
503
    NVCommonSetup(pScrn);
358
}
504
}
(-)xc/programs/Xserver/hw/xfree86/drivers/nv/nv_type.h (-39 / +45 lines)
Lines 1-4 Link Here
1
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_type.h,v 1.29 2001/12/07 00:09:56 mvojkovi Exp $ */
1
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_type.h,v 1.34 2002/03/18 21:47:48 mvojkovi Exp $ */
2
2
3
#ifndef __NV_STRUCT_H__
3
#ifndef __NV_STRUCT_H__
4
#define __NV_STRUCT_H__
4
#define __NV_STRUCT_H__
Lines 32-38 Link Here
32
    void        (*SetCursorColors)(ScrnInfoPtr, int, int);
32
    void        (*SetCursorColors)(ScrnInfoPtr, int, int);
33
    long        maxPixelClock;
33
    long        maxPixelClock;
34
    void        (*LoadPalette)(ScrnInfoPtr, int, int*, LOCO*, VisualPtr);
34
    void        (*LoadPalette)(ScrnInfoPtr, int, int*, LOCO*, VisualPtr);
35
    void        (*PreInit)(ScrnInfoPtr);
36
    void        (*Save)(ScrnInfoPtr, vgaRegPtr, NVRegPtr, Bool);
35
    void        (*Save)(ScrnInfoPtr, vgaRegPtr, NVRegPtr, Bool);
37
    void        (*Restore)(ScrnInfoPtr, vgaRegPtr, NVRegPtr, Bool);
36
    void        (*Restore)(ScrnInfoPtr, vgaRegPtr, NVRegPtr, Bool);
38
    Bool        (*ModeInit)(ScrnInfoPtr, DisplayModePtr);
37
    Bool        (*ModeInit)(ScrnInfoPtr, DisplayModePtr);
Lines 80-86 Link Here
80
    int                 numDGAModes;
79
    int                 numDGAModes;
81
    Bool                DGAactive;
80
    Bool                DGAactive;
82
    int                 DGAViewportStatus;
81
    int                 DGAViewportStatus;
83
    void                (*PreInit)(ScrnInfoPtr pScrn);
84
    void                (*Save)(ScrnInfoPtr, vgaRegPtr, NVRegPtr, Bool);
82
    void                (*Save)(ScrnInfoPtr, vgaRegPtr, NVRegPtr, Bool);
85
    void                (*Restore)(ScrnInfoPtr, vgaRegPtr, NVRegPtr, Bool);
83
    void                (*Restore)(ScrnInfoPtr, vgaRegPtr, NVRegPtr, Bool);
86
    Bool                (*ModeInit)(ScrnInfoPtr, DisplayModePtr);
84
    Bool                (*ModeInit)(ScrnInfoPtr, DisplayModePtr);
Lines 113-119 Link Here
113
    void		(*VideoTimerCallback)(ScrnInfoPtr, Time);
111
    void		(*VideoTimerCallback)(ScrnInfoPtr, Time);
114
    XF86VideoAdaptorPtr	overlayAdaptor;
112
    XF86VideoAdaptorPtr	overlayAdaptor;
115
    int			videoKey;
113
    int			videoKey;
116
    Bool		FlatPanel;
114
    int			FlatPanel;
115
    Bool		SecondCRTC;
116
    int			forceCRTC;
117
    OptionInfoPtr	Options;
117
    OptionInfoPtr	Options;
118
} NVRec, *NVPtr;
118
} NVRec, *NVPtr;
119
119
Lines 127-166 Link Here
127
127
128
int RivaGetConfig(NVPtr);
128
int RivaGetConfig(NVPtr);
129
129
130
#define NV_CHIP_RIVA128    ((PCI_VENDOR_NVIDIA_SGS << 16)| PCI_CHIP_RIVA128)
130
#define NV_CHIP_RIVA_128            ((PCI_VENDOR_NVIDIA_SGS << 16)| PCI_CHIP_RIVA128)
131
#define NV_CHIP_TNT        ((PCI_VENDOR_NVIDIA     << 16)| PCI_CHIP_TNT)
131
#define NV_CHIP_TNT                 ((PCI_VENDOR_NVIDIA << 16)| PCI_CHIP_TNT)
132
#define NV_CHIP_TNT2       ((PCI_VENDOR_NVIDIA     << 16)| PCI_CHIP_TNT2)
132
#define NV_CHIP_TNT2                ((PCI_VENDOR_NVIDIA << 16)| PCI_CHIP_TNT2)
133
#define NV_CHIP_UTNT2      ((PCI_VENDOR_NVIDIA     << 16)| PCI_CHIP_UTNT2)
133
#define NV_CHIP_UTNT2               ((PCI_VENDOR_NVIDIA << 16)| PCI_CHIP_UTNT2)
134
#define NV_CHIP_VTNT2      ((PCI_VENDOR_NVIDIA     << 16)| PCI_CHIP_VTNT2)
134
#define NV_CHIP_VTNT2               ((PCI_VENDOR_NVIDIA << 16)| PCI_CHIP_VTNT2)
135
#define NV_CHIP_UVTNT2     ((PCI_VENDOR_NVIDIA     << 16)| PCI_CHIP_UVTNT2)
135
#define NV_CHIP_UVTNT2              ((PCI_VENDOR_NVIDIA << 16)| PCI_CHIP_UVTNT2)
136
#define NV_CHIP_ITNT2      ((PCI_VENDOR_NVIDIA     << 16)| PCI_CHIP_ITNT2)
136
#define NV_CHIP_ITNT2               ((PCI_VENDOR_NVIDIA << 16)| PCI_CHIP_ITNT2)
137
#define NV_CHIP_GEFORCE256 ((PCI_VENDOR_NVIDIA     << 16)| PCI_CHIP_GEFORCE256)
137
#define NV_CHIP_GEFORCE_256         ((PCI_VENDOR_NVIDIA << 16)| PCI_CHIP_GEFORCE_256)
138
#define NV_CHIP_GEFORCEDDR ((PCI_VENDOR_NVIDIA     << 16)| PCI_CHIP_GEFORCEDDR)
138
#define NV_CHIP_GEFORCE_DDR         ((PCI_VENDOR_NVIDIA << 16)| PCI_CHIP_GEFORCE_DDR)
139
#define NV_CHIP_QUADRO     ((PCI_VENDOR_NVIDIA     << 16)| PCI_CHIP_QUADRO)
139
#define NV_CHIP_QUADRO              ((PCI_VENDOR_NVIDIA << 16)| PCI_CHIP_QUADRO)
140
#define NV_CHIP_GEFORCE2MX      ((PCI_VENDOR_NVIDIA  << 16) | PCI_CHIP_GEFORCE2MX)
140
#define NV_CHIP_GEFORCE2_MX         ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_GEFORCE2_MX)
141
#define NV_CHIP_GEFORCE2MXDDR    ((PCI_VENDOR_NVIDIA  << 16) | PCI_CHIP_GEFORCE2MXDDR)
141
#define NV_CHIP_GEFORCE2_MX_100     ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_GEFORCE2_MX_100)
142
#define NV_CHIP_IGEFORCE2    ((PCI_VENDOR_NVIDIA  << 16) | PCI_CHIP_IGEFORCE2)
142
#define NV_CHIP_QUADRO2_MXR         ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_QUADRO2_MXR)
143
#define NV_CHIP_0x0170    ((PCI_VENDOR_NVIDIA  << 16) | PCI_CHIP_0x0170)
143
#define NV_CHIP_GEFORCE2_GO         ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_GEFORCE2_GO)
144
#define NV_CHIP_0x0171    ((PCI_VENDOR_NVIDIA  << 16) | PCI_CHIP_0x0171)
144
#define NV_CHIP_GEFORCE2_GTS        ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_GEFORCE2_GTS)
145
#define NV_CHIP_0x0172    ((PCI_VENDOR_NVIDIA  << 16) | PCI_CHIP_0x0172)
145
#define NV_CHIP_GEFORCE2_TI         ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_GEFORCE2_TI)
146
#define NV_CHIP_0x0173    ((PCI_VENDOR_NVIDIA  << 16) | PCI_CHIP_0x0173)
146
#define NV_CHIP_GEFORCE2_ULTRA      ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_GEFORCE2_ULTRA)
147
#define NV_CHIP_0x0174    ((PCI_VENDOR_NVIDIA  << 16) | PCI_CHIP_0x0174)
147
#define NV_CHIP_QUADRO2_PRO         ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_QUADRO2_PRO)
148
#define NV_CHIP_0x0175    ((PCI_VENDOR_NVIDIA  << 16) | PCI_CHIP_0x0175)
148
#define NV_CHIP_GEFORCE4_MX_460     ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_GEFORCE4_MX_460)
149
#define NV_CHIP_0x0178    ((PCI_VENDOR_NVIDIA  << 16) | PCI_CHIP_0x0178)
149
#define NV_CHIP_GEFORCE4_MX_440     ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_GEFORCE4_MX_440)
150
#define NV_CHIP_0x017A    ((PCI_VENDOR_NVIDIA  << 16) | PCI_CHIP_0x017A)
150
#define NV_CHIP_GEFORCE4_MX_420     ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_GEFORCE4_MX_420)
151
#define NV_CHIP_0x017B    ((PCI_VENDOR_NVIDIA  << 16) | PCI_CHIP_0x017B)
151
#define NV_CHIP_GEFORCE4_440_GO     ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_GEFORCE4_440_GO)
152
#define NV_CHIP_0x017C    ((PCI_VENDOR_NVIDIA  << 16) | PCI_CHIP_0x017C)
152
#define NV_CHIP_GEFORCE4_420_GO     ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_GEFORCE4_420_GO)
153
#define NV_CHIP_QUADRO2MXR      ((PCI_VENDOR_NVIDIA  << 16) | PCI_CHIP_QUADRO2MXR)
153
#define NV_CHIP_GEFORCE4_420_GO_M32 ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_GEFORCE4_420_GO_M32)
154
#define NV_CHIP_GEFORCE2GO      ((PCI_VENDOR_NVIDIA  << 16) | PCI_CHIP_GEFORCE2GO)
154
#define NV_CHIP_QUADRO4_500XGL      ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_QUADRO4_500XGL)
155
#define NV_CHIP_GEFORCE2GTS     ((PCI_VENDOR_NVIDIA  << 16) | PCI_CHIP_GEFORCE2GTS)
155
#define NV_CHIP_GEFORCE4_440_GO_M64 ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_GEFORCE4_440_GO_M64)
156
#define NV_CHIP_GEFORCE2GTS_1   ((PCI_VENDOR_NVIDIA  << 16) | PCI_CHIP_GEFORCE2GTS_1)
156
#define NV_CHIP_QUADRO4_200         ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_QUADRO4_200)
157
#define NV_CHIP_GEFORCE2ULTRA   ((PCI_VENDOR_NVIDIA  << 16) | PCI_CHIP_GEFORCE2ULTRA)
157
#define NV_CHIP_QUADRO4_550XGL      ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_QUADRO4_550XGL)
158
#define NV_CHIP_QUADRO2PRO      ((PCI_VENDOR_NVIDIA  << 16) | PCI_CHIP_QUADRO2PRO)
158
#define NV_CHIP_QUADRO4_500_GOGL    ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_QUADRO4_500_GOGL)
159
#define NV_CHIP_GEFORCE3     ((PCI_VENDOR_NVIDIA  << 16) | PCI_CHIP_GEFORCE3)
159
#define NV_CHIP_IGEFORCE2           ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_IGEFORCE2)
160
#define NV_CHIP_GEFORCE3_1   ((PCI_VENDOR_NVIDIA  << 16) | PCI_CHIP_GEFORCE3_1)
160
#define NV_CHIP_GEFORCE3            ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_GEFORCE3)
161
#define NV_CHIP_GEFORCE3_2   ((PCI_VENDOR_NVIDIA  << 16) | PCI_CHIP_GEFORCE3_2)
161
#define NV_CHIP_GEFORCE3_TI_200     ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_GEFORCE3_TI_200)
162
#define NV_CHIP_QUADRO_DDC   ((PCI_VENDOR_NVIDIA  << 16) | PCI_CHIP_QUADRO_DDC)
162
#define NV_CHIP_GEFORCE3_TI_500     ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_GEFORCE3_TI_500)
163
#define NV_CHIP_0x0250    ((PCI_VENDOR_NVIDIA  << 16) | PCI_CHIP_0x0250)
163
#define NV_CHIP_QUADRO_DCC          ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_QUADRO_DCC)
164
#define NV_CHIP_0x0258    ((PCI_VENDOR_NVIDIA  << 16) | PCI_CHIP_0x0258)
164
#define NV_CHIP_GEFORCE4_TI_4600    ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_GEFORCE4_TI_4600)
165
#define NV_CHIP_GEFORCE4_TI_4400    ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_GEFORCE4_TI_4400)
166
#define NV_CHIP_GEFORCE4_TI_4200    ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_GEFORCE4_TI_4200)
167
#define NV_CHIP_QUADRO4_900XGL      ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_QUADRO4_900XGL)
168
#define NV_CHIP_QUADRO4_750XGL      ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_QUADRO4_750XGL)
169
#define NV_CHIP_QUADRO4_700XGL      ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_QUADRO4_700XGL)
170
165
171
166
#endif /* __NV_STRUCT_H__ */
172
#endif /* __NV_STRUCT_H__ */
(-)xc/programs/Xserver/hw/xfree86/drivers/nv/nv_video.c (-7 / +8 lines)
Lines 1-4 Link Here
1
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_video.c,v 1.6 2001/12/14 01:20:44 mvojkovi Exp $ */
1
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_video.c,v 1.8 2002/04/26 19:57:14 mvojkovi Exp $ */
2
2
3
#include "xf86.h"
3
#include "xf86.h"
4
#include "xf86_OSproc.h"
4
#include "xf86_OSproc.h"
Lines 103-109 Link Here
103
{ 
103
{ 
104
   0,
104
   0,
105
   "XV_IMAGE",
105
   "XV_IMAGE",
106
   2046, 2047,
106
   2046, 2046,
107
   {1, 1}
107
   {1, 1}
108
};
108
};
109
109
Lines 863-870 Link Here
863
    
863
    
864
    if(*w > 2046)
864
    if(*w > 2046)
865
        *w = 2046;
865
        *w = 2046;
866
    if(*h > 2047)
866
    if(*h > 2046)
867
        *h = 2047;
867
        *h = 2046;
868
    
868
    
869
    *w = (*w + 1) & ~1;
869
    *w = (*w + 1) & ~1;
870
    if (offsets)
870
    if (offsets)
Lines 960-966 Link Here
960
960
961
    if(pPriv->grabbedByV4L) return BadAlloc;
961
    if(pPriv->grabbedByV4L) return BadAlloc;
962
962
963
    if((w > 2046) || (h > 2047)) return BadValue;
963
    if((w > 2046) || (h > 2046)) return BadValue;
964
964
965
    w = (w + 1) & ~1;
965
    w = (w + 1) & ~1;
966
    pPriv->pitch = ((w << 1) + 63) & ~63;
966
    pPriv->pitch = ((w << 1) + 63) & ~63;
Lines 980-985 Link Here
980
    surface->pitches = &pPriv->pitch; 
980
    surface->pitches = &pPriv->pitch; 
981
    surface->offsets = &pPriv->offset;
981
    surface->offsets = &pPriv->offset;
982
    surface->devPrivate.ptr = (pointer)pPriv;
982
    surface->devPrivate.ptr = (pointer)pPriv;
983
    surface->id = id;
983
984
984
    /* grab the video */
985
    /* grab the video */
985
    NVStopOverlay(pScrnInfo);
986
    NVStopOverlay(pScrnInfo);
Lines 1109-1115 Link Here
1109
   NVStopSurface,
1110
   NVStopSurface,
1110
   NVGetSurfaceAttribute,
1111
   NVGetSurfaceAttribute,
1111
   NVSetSurfaceAttribute,
1112
   NVSetSurfaceAttribute,
1112
   2046, 2047,
1113
   2046, 2046,
1113
   NUM_ATTRIBUTES - 1,
1114
   NUM_ATTRIBUTES - 1,
1114
   &NVAttributes[1]
1115
   &NVAttributes[1]
1115
  },
1116
  },
Lines 1122-1128 Link Here
1122
   NVStopSurface,
1123
   NVStopSurface,
1123
   NVGetSurfaceAttribute,
1124
   NVGetSurfaceAttribute,
1124
   NVSetSurfaceAttribute,
1125
   NVSetSurfaceAttribute,
1125
   2046, 2047,
1126
   2046, 2046,
1126
   NUM_ATTRIBUTES - 1,
1127
   NUM_ATTRIBUTES - 1,
1127
   &NVAttributes[1]
1128
   &NVAttributes[1]
1128
  },
1129
  },
(-)xc/programs/Xserver/hw/xfree86/drivers/nv/nvreg.h (-10 / +1 lines)
Lines 21-27 Link Here
21
 * SOFTWARE.
21
 * SOFTWARE.
22
 */
22
 */
23
23
24
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nvreg.h,v 1.5 1999/11/12 02:12:41 mvojkovi Exp $ */
24
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nvreg.h,v 1.6 2002/01/25 21:56:06 tsi Exp $ */
25
25
26
#ifndef __NVREG_H_
26
#ifndef __NVREG_H_
27
#define __NVREG_H_
27
#define __NVREG_H_
Lines 164-182 Link Here
164
  (PDAC_Write(INDEX_HI,((NV_PDAC_EXT_##reg) >> 8) & 0xff)),\
164
  (PDAC_Write(INDEX_HI,((NV_PDAC_EXT_##reg) >> 8) & 0xff)),\
165
  (PDAC_Write(INDEX_DATA,(value))))
165
  (PDAC_Write(INDEX_DATA,(value))))
166
166
167
#define CRTC_Write(index,value) outb(0x3d4,(index));outb(0x3d5,value)
168
#define CRTC_Read(index) (outb(0x3d4,index),inb(0x3d5))
169
170
#define PCRTC_Write(index,value) CRTC_Write(NV_PCRTC_##index,value)
171
#define PCRTC_Read(index) CRTC_Read(NV_PCRTC_##index)
172
173
#define PCRTC_Def(mask,value)          DEVICE_DEF(PCRTC,mask,value)
167
#define PCRTC_Def(mask,value)          DEVICE_DEF(PCRTC,mask,value)
174
#define PCRTC_Val(mask,value)          DEVICE_VALUE(PCRTC,mask,value)
168
#define PCRTC_Val(mask,value)          DEVICE_VALUE(PCRTC,mask,value)
175
#define PCRTC_Mask(mask)               DEVICE_MASK(PCRTC,mask)
169
#define PCRTC_Mask(mask)               DEVICE_MASK(PCRTC,mask)
176
170
177
#define SR_Write(index,value) outb(0x3c4,(index));outb(0x3c5,value)
178
#define SR_Read(index) (outb(0x3c4,index),inb(0x3c5))
179
180
171
181
/* These are the variables which actually point at the register blocks */
172
/* These are the variables which actually point at the register blocks */
182
extern volatile unsigned  *nvPDACPort;    /* Points to the DAC */
173
extern volatile unsigned  *nvPDACPort;    /* Points to the DAC */
(-)xc/programs/Xserver/hw/xfree86/drivers/nv/riva_hw.c (-185 / +201 lines)
Lines 36-42 Link Here
36
|*     those rights set forth herein.                                        *|
36
|*     those rights set forth herein.                                        *|
37
|*                                                                           *|
37
|*                                                                           *|
38
 \***************************************************************************/
38
 \***************************************************************************/
39
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/riva_hw.c,v 1.21 2001/12/17 22:17:55 mvojkovi Exp $ */
39
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/riva_hw.c,v 1.32 2002/04/30 20:04:44 mvojkovi Exp $ */
40
40
41
#include "nv_local.h"
41
#include "nv_local.h"
42
#include "compiler.h"
42
#include "compiler.h"
Lines 70-103 Link Here
70
{
70
{
71
    return ((chip->Rop->FifoFree < chip->FifoEmptyCount) || (chip->PGRAPH[0x00000700/4] & 0x01));
71
    return ((chip->Rop->FifoFree < chip->FifoEmptyCount) || (chip->PGRAPH[0x00000700/4] & 0x01));
72
}
72
}
73
static void nv3LockUnlock
73
static void vgaLockUnlock
74
(
74
(
75
    RIVA_HW_INST *chip,
75
    RIVA_HW_INST *chip,
76
    int           LockUnlock
76
    Bool           Lock
77
)
77
)
78
{
78
{
79
    VGA_WR08(chip->PVIO, 0x3C4, 0x06);
79
    CARD8 cr11;
80
    VGA_WR08(chip->PVIO, 0x3C5, LockUnlock ? 0x99 : 0x57);
80
    VGA_WR08(chip->PCIO, 0x3D4, 0x11);
81
    cr11 = VGA_RD08(chip->PCIO, 0x3D5);
82
    if(Lock) cr11 |= 0x80;
83
    else cr11 &= ~0x80;
84
    VGA_WR08(chip->PCIO, 0x3D5, cr11);
81
}
85
}
82
static void nv4LockUnlock
86
87
static void nv3LockUnlock
83
(
88
(
84
    RIVA_HW_INST *chip,
89
    RIVA_HW_INST *chip,
85
    int           LockUnlock
90
    Bool           Lock
86
)
91
)
87
{
92
{
88
    VGA_WR08(chip->PCIO, 0x3D4, 0x1F);
93
    VGA_WR08(chip->PVIO, 0x3C4, 0x06);
89
    VGA_WR08(chip->PCIO, 0x3D5, LockUnlock ? 0x99 : 0x57);
94
    VGA_WR08(chip->PVIO, 0x3C5, Lock ? 0x99 : 0x57);
95
    vgaLockUnlock(chip, Lock);
90
}
96
}
91
static void nv10LockUnlock
97
static void nv4LockUnlock
92
(
98
(
93
    RIVA_HW_INST *chip,
99
    RIVA_HW_INST *chip,
94
    int           LockUnlock
100
    Bool           Lock
95
)
101
)
96
{
102
{
97
    VGA_WR08(chip->PCIO, 0x3D4, 0x1F);
103
    VGA_WR08(chip->PCIO, 0x3D4, 0x1F);
98
    VGA_WR08(chip->PCIO, 0x3D5, LockUnlock ? 0x99 : 0x57);
104
    VGA_WR08(chip->PCIO, 0x3D5, Lock ? 0x99 : 0x57);
105
    vgaLockUnlock(chip, Lock);
99
}
106
}
100
101
static int ShowHideCursor
107
static int ShowHideCursor
102
(
108
(
103
    RIVA_HW_INST *chip,
109
    RIVA_HW_INST *chip,
Lines 601-607 Link Here
601
    nv3_sim_state sim_data;
607
    nv3_sim_state sim_data;
602
    unsigned int M, N, P, pll, MClk;
608
    unsigned int M, N, P, pll, MClk;
603
    
609
    
604
    pll = chip->PRAMDAC[0x00000504/4];
610
    pll = chip->PRAMDAC0[0x00000504/4];
605
    M = (pll >> 0) & 0xFF; N = (pll >> 8) & 0xFF; P = (pll >> 16) & 0x0F;
611
    M = (pll >> 0) & 0xFF; N = (pll >> 8) & 0xFF; P = (pll >> 16) & 0x0F;
606
    MClk = (N * chip->CrystalFreqKHz / M) >> P;
612
    MClk = (N * chip->CrystalFreqKHz / M) >> P;
607
    sim_data.pix_bpp        = (char)pixelDepth;
613
    sim_data.pix_bpp        = (char)pixelDepth;
Lines 788-797 Link Here
788
    nv4_sim_state sim_data;
794
    nv4_sim_state sim_data;
789
    unsigned int M, N, P, pll, MClk, NVClk, cfg1;
795
    unsigned int M, N, P, pll, MClk, NVClk, cfg1;
790
796
791
    pll = chip->PRAMDAC[0x00000504/4];
797
    pll = chip->PRAMDAC0[0x00000504/4];
792
    M = (pll >> 0)  & 0xFF; N = (pll >> 8)  & 0xFF; P = (pll >> 16) & 0x0F;
798
    M = (pll >> 0)  & 0xFF; N = (pll >> 8)  & 0xFF; P = (pll >> 16) & 0x0F;
793
    MClk  = (N * chip->CrystalFreqKHz / M) >> P;
799
    MClk  = (N * chip->CrystalFreqKHz / M) >> P;
794
    pll = chip->PRAMDAC[0x00000500/4];
800
    pll = chip->PRAMDAC0[0x00000500/4];
795
    M = (pll >> 0)  & 0xFF; N = (pll >> 8)  & 0xFF; P = (pll >> 16) & 0x0F;
801
    M = (pll >> 0)  & 0xFF; N = (pll >> 8)  & 0xFF; P = (pll >> 16) & 0x0F;
796
    NVClk  = (N * chip->CrystalFreqKHz / M) >> P;
802
    NVClk  = (N * chip->CrystalFreqKHz / M) >> P;
797
    cfg1 = chip->PFB[0x00000204/4];
803
    cfg1 = chip->PFB[0x00000204/4];
Lines 1049-1058 Link Here
1049
    nv10_sim_state sim_data;
1055
    nv10_sim_state sim_data;
1050
    unsigned int M, N, P, pll, MClk, NVClk, cfg1;
1056
    unsigned int M, N, P, pll, MClk, NVClk, cfg1;
1051
1057
1052
    pll = chip->PRAMDAC[0x00000504/4];
1058
    pll = chip->PRAMDAC0[0x00000504/4];
1053
    M = (pll >> 0)  & 0xFF; N = (pll >> 8)  & 0xFF; P = (pll >> 16) & 0x0F;
1059
    M = (pll >> 0)  & 0xFF; N = (pll >> 8)  & 0xFF; P = (pll >> 16) & 0x0F;
1054
    MClk  = (N * chip->CrystalFreqKHz / M) >> P;
1060
    MClk  = (N * chip->CrystalFreqKHz / M) >> P;
1055
    pll = chip->PRAMDAC[0x00000500/4];
1061
    pll = chip->PRAMDAC0[0x00000500/4];
1056
    M = (pll >> 0)  & 0xFF; N = (pll >> 8)  & 0xFF; P = (pll >> 16) & 0x0F;
1062
    M = (pll >> 0)  & 0xFF; N = (pll >> 8)  & 0xFF; P = (pll >> 16) & 0x0F;
1057
    NVClk  = (N * chip->CrystalFreqKHz / M) >> P;
1063
    NVClk  = (N * chip->CrystalFreqKHz / M) >> P;
1058
    cfg1 = chip->PFB[0x00000204/4];
1064
    cfg1 = chip->PFB[0x00000204/4];
Lines 1078-1083 Link Here
1078
    }
1084
    }
1079
}
1085
}
1080
1086
1087
static void nForceUpdateArbitrationSettings
1088
(
1089
    unsigned      VClk,
1090
    unsigned      pixelDepth,
1091
    unsigned     *burst,
1092
    unsigned     *lwm,
1093
    RIVA_HW_INST *chip
1094
)
1095
{
1096
    nv10_fifo_info fifo_data;
1097
    nv10_sim_state sim_data;
1098
    unsigned int M, N, P, pll, MClk, NVClk;
1099
    unsigned int uMClkPostDiv, memctrl;
1100
1101
    uMClkPostDiv = (pciReadLong(pciTag(0, 0, 3), 0x6C) >> 8) & 0xf;
1102
    if(!uMClkPostDiv) uMClkPostDiv = 4; 
1103
    MClk = 400000 / uMClkPostDiv;
1104
1105
    pll = chip->PRAMDAC0[0x00000500/4];
1106
    M = (pll >> 0)  & 0xFF; N = (pll >> 8)  & 0xFF; P = (pll >> 16) & 0x0F;
1107
    NVClk  = (N * chip->CrystalFreqKHz / M) >> P;
1108
    sim_data.pix_bpp        = (char)pixelDepth;
1109
    sim_data.enable_video   = 0;
1110
    sim_data.enable_mp      = 0;
1111
    sim_data.memory_type    = (pciReadLong(pciTag(0, 0, 1), 0x7C) >> 12) & 1;
1112
    sim_data.memory_width   = 64;
1113
1114
    memctrl = pciReadLong(pciTag(0, 0, 3), 0x00) >> 16;
1115
1116
    if((memctrl == 0x1A9) || (memctrl == 0x1AB)) {
1117
        int dimm[3];
1118
1119
        dimm[0] = (pciReadLong(pciTag(0, 0, 2), 0x40) >> 8) & 0x4F;
1120
        dimm[1] = (pciReadLong(pciTag(0, 0, 2), 0x44) >> 8) & 0x4F;
1121
        dimm[2] = (pciReadLong(pciTag(0, 0, 2), 0x48) >> 8) & 0x4F;
1122
1123
        if((dimm[0] + dimm[1]) != dimm[2]) {
1124
             ErrorF("WARNING: "
1125
              "your nForce DIMMs are not arranged in optimal banks!\n");
1126
        } 
1127
    }
1128
1129
    sim_data.mem_latency    = 3;
1130
    sim_data.mem_aligned    = 1;
1131
    sim_data.mem_page_miss  = 10;
1132
    sim_data.gr_during_vid  = 0;
1133
    sim_data.pclk_khz       = VClk;
1134
    sim_data.mclk_khz       = MClk;
1135
    sim_data.nvclk_khz      = NVClk;
1136
    nv10CalcArbitration(&fifo_data, &sim_data);
1137
    if (fifo_data.valid)
1138
    {
1139
        int  b = fifo_data.graphics_burst_size >> 4;
1140
        *burst = 0;
1141
        while (b >>= 1) (*burst)++;
1142
        *lwm   = fifo_data.graphics_lwm >> 3;
1143
    }
1144
}
1145
1146
1081
/****************************************************************************\
1147
/****************************************************************************\
1082
*                                                                            *
1148
*                                                                            *
1083
*                          RIVA Mode State Routines                          *
1149
*                          RIVA Mode State Routines                          *
Lines 1106-1121 Link Here
1106
1172
1107
    VClk     = (unsigned)clockIn;
1173
    VClk     = (unsigned)clockIn;
1108
    
1174
    
1109
    if (chip->CrystalFreqKHz == 14318)
1175
    if (chip->CrystalFreqKHz == 13500)
1110
    {
1111
        lowM  = 8;
1112
        highM = 14 - (chip->Architecture == NV_ARCH_03);
1113
    }
1114
    else
1115
    {
1176
    {
1116
        lowM  = 7;
1177
        lowM  = 7;
1117
        highM = 13 - (chip->Architecture == NV_ARCH_03);
1178
        highM = 13 - (chip->Architecture == NV_ARCH_03);
1118
    }                      
1179
    }                      
1180
    else
1181
    {
1182
        lowM  = 8;
1183
        highM = 14 - (chip->Architecture == NV_ARCH_03);
1184
    }
1119
1185
1120
    highP = 4 - (chip->Architecture == NV_ARCH_03);
1186
    highP = 4 - (chip->Architecture == NV_ARCH_03);
1121
    for (P = 0; P <= highP; P ++)
1187
    for (P = 0; P <= highP; P ++)
Lines 1125-1143 Link Here
1125
        {
1191
        {
1126
            for (M = lowM; M <= highM; M++)
1192
            for (M = lowM; M <= highM; M++)
1127
            {
1193
            {
1128
                N    = (VClk * M / chip->CrystalFreqKHz) << P;
1194
                N    = (VClk << P) * M / chip->CrystalFreqKHz;
1129
                Freq = (chip->CrystalFreqKHz * N / M) >> P;
1195
                if(N <= 255) {
1130
                if (Freq > VClk)
1196
                    Freq = (chip->CrystalFreqKHz * N / M) >> P;
1131
                    DeltaNew = Freq - VClk;
1197
                    if (Freq > VClk)
1132
                else
1198
                        DeltaNew = Freq - VClk;
1133
                    DeltaNew = VClk - Freq;
1199
                    else
1134
                if (DeltaNew < DeltaOld)
1200
                        DeltaNew = VClk - Freq;
1135
                {
1201
                    if (DeltaNew < DeltaOld)
1136
                    *mOut     = M;
1202
                    {
1137
                    *nOut     = N;
1203
                        *mOut     = M;
1138
                    *pOut     = P;
1204
                        *nOut     = N;
1139
                    *clockOut = Freq;
1205
                        *pOut     = P;
1140
                    DeltaOld  = DeltaNew;
1206
                        *clockOut = Freq;
1207
                        DeltaOld  = DeltaNew;
1208
                    }
1141
                }
1209
                }
1142
            }
1210
            }
1143
        }
1211
        }
Lines 1211-1221 Link Here
1211
            break;
1279
            break;
1212
        case NV_ARCH_10:
1280
        case NV_ARCH_10:
1213
        case NV_ARCH_20:
1281
        case NV_ARCH_20:
1214
            nv10UpdateArbitrationSettings(VClk, 
1282
            if(chip->Chipset == NV_CHIP_IGEFORCE2) {
1283
                nForceUpdateArbitrationSettings(VClk,
1284
                                          pixelDepth * 8,
1285
                                         &(state->arbitration0),
1286
                                         &(state->arbitration1),
1287
                                          chip);
1288
            } else {
1289
                nv10UpdateArbitrationSettings(VClk, 
1215
                                          pixelDepth * 8, 
1290
                                          pixelDepth * 8, 
1216
                                         &(state->arbitration0),
1291
                                         &(state->arbitration0),
1217
                                         &(state->arbitration1),
1292
                                         &(state->arbitration1),
1218
                                          chip);
1293
                                          chip);
1294
            }
1219
            state->cursor0  = 0x80 | (chip->CursorStart >> 17);
1295
            state->cursor0  = 0x80 | (chip->CursorStart >> 17);
1220
            state->cursor1  = (chip->CursorStart >> 11) << 2;
1296
            state->cursor1  = (chip->CursorStart >> 11) << 2;
1221
	    state->cursor2  = chip->CursorStart >> 24;
1297
	    state->cursor2  = chip->CursorStart >> 24;
Lines 1272-1289 Link Here
1272
    {
1348
    {
1273
        case NV_ARCH_04:
1349
        case NV_ARCH_04:
1274
            LOAD_FIXED_STATE(nv4,FIFO);
1350
            LOAD_FIXED_STATE(nv4,FIFO);
1275
            chip->Tri03 = 0L;
1276
            chip->Tri05 = (RivaTexturedTriangle05 *)&(chip->FIFO[0x0000E000/4]);
1277
            break;
1351
            break;
1278
        case NV_ARCH_10:
1352
        case NV_ARCH_10:
1279
        case NV_ARCH_20:
1353
        case NV_ARCH_20:
1280
            /*
1281
             * Initialize state for the RivaTriangle3D05 routines.
1282
             */
1283
            LOAD_FIXED_STATE(nv10tri05,PGRAPH);
1284
            LOAD_FIXED_STATE(nv10,FIFO);
1354
            LOAD_FIXED_STATE(nv10,FIFO);
1285
            chip->Tri03 = 0L;
1286
            chip->Tri05 = (RivaTexturedTriangle05 *)&(chip->FIFO[0x0000E000/4]);
1287
            break;
1355
            break;
1288
    }
1356
    }
1289
}
1357
}
Lines 1316-1334 Link Here
1316
                case 16:
1384
                case 16:
1317
                    LOAD_FIXED_STATE_15BPP(nv3,PRAMIN);
1385
                    LOAD_FIXED_STATE_15BPP(nv3,PRAMIN);
1318
                    LOAD_FIXED_STATE_15BPP(nv3,PGRAPH);
1386
                    LOAD_FIXED_STATE_15BPP(nv3,PGRAPH);
1319
                    chip->Tri03 = (RivaTexturedTriangle03  *)&(chip->FIFO[0x0000E000/4]);
1320
                    break;
1387
                    break;
1321
                case 24:
1388
                case 24:
1322
                case 32:
1389
                case 32:
1323
                    LOAD_FIXED_STATE_32BPP(nv3,PRAMIN);
1390
                    LOAD_FIXED_STATE_32BPP(nv3,PRAMIN);
1324
                    LOAD_FIXED_STATE_32BPP(nv3,PGRAPH);
1391
                    LOAD_FIXED_STATE_32BPP(nv3,PGRAPH);
1325
                    chip->Tri03 = 0L;
1326
                    break;
1392
                    break;
1327
                case 8:
1393
                case 8:
1328
                default:
1394
                default:
1329
                    LOAD_FIXED_STATE_8BPP(nv3,PRAMIN);
1395
                    LOAD_FIXED_STATE_8BPP(nv3,PRAMIN);
1330
                    LOAD_FIXED_STATE_8BPP(nv3,PGRAPH);
1396
                    LOAD_FIXED_STATE_8BPP(nv3,PGRAPH);
1331
                    chip->Tri03 = 0L;
1332
                    break;
1397
                    break;
1333
            }
1398
            }
1334
            for (i = 0x00000; i < 0x00800; i++)
1399
            for (i = 0x00000; i < 0x00800; i++)
Lines 1355-1378 Link Here
1355
                case 15:
1420
                case 15:
1356
                    LOAD_FIXED_STATE_15BPP(nv4,PRAMIN);
1421
                    LOAD_FIXED_STATE_15BPP(nv4,PRAMIN);
1357
                    LOAD_FIXED_STATE_15BPP(nv4,PGRAPH);
1422
                    LOAD_FIXED_STATE_15BPP(nv4,PGRAPH);
1358
                    chip->Tri03 = (RivaTexturedTriangle03  *)&(chip->FIFO[0x0000E000/4]);
1359
                    break;
1423
                    break;
1360
                case 16:
1424
                case 16:
1361
                    LOAD_FIXED_STATE_16BPP(nv4,PRAMIN);
1425
                    LOAD_FIXED_STATE_16BPP(nv4,PRAMIN);
1362
                    LOAD_FIXED_STATE_16BPP(nv4,PGRAPH);
1426
                    LOAD_FIXED_STATE_16BPP(nv4,PGRAPH);
1363
                    chip->Tri03 = (RivaTexturedTriangle03  *)&(chip->FIFO[0x0000E000/4]);
1364
                    break;
1427
                    break;
1365
                case 24:
1428
                case 24:
1366
                case 32:
1429
                case 32:
1367
                    LOAD_FIXED_STATE_32BPP(nv4,PRAMIN);
1430
                    LOAD_FIXED_STATE_32BPP(nv4,PRAMIN);
1368
                    LOAD_FIXED_STATE_32BPP(nv4,PGRAPH);
1431
                    LOAD_FIXED_STATE_32BPP(nv4,PGRAPH);
1369
                    chip->Tri03 = 0L;
1370
                    break;
1432
                    break;
1371
                case 8:
1433
                case 8:
1372
                default:
1434
                default:
1373
                    LOAD_FIXED_STATE_8BPP(nv4,PRAMIN);
1435
                    LOAD_FIXED_STATE_8BPP(nv4,PRAMIN);
1374
                    LOAD_FIXED_STATE_8BPP(nv4,PGRAPH);
1436
                    LOAD_FIXED_STATE_8BPP(nv4,PGRAPH);
1375
                    chip->Tri03 = 0L;
1376
                    break;
1437
                    break;
1377
            }
1438
            }
1378
            chip->PGRAPH[0x00000640/4] = state->offset0;
1439
            chip->PGRAPH[0x00000640/4] = state->offset0;
Lines 1386-1391 Link Here
1386
            break;
1447
            break;
1387
        case NV_ARCH_10:
1448
        case NV_ARCH_10:
1388
        case NV_ARCH_20:
1449
        case NV_ARCH_20:
1450
            if(chip->twoHeads) {
1451
               VGA_WR08(chip->PCIO, 0x03D4, 0x44);
1452
               VGA_WR08(chip->PCIO, 0x03D5, state->crtcOwner);
1453
               chip->LockUnlock(chip, 0);
1454
            }
1455
1389
            LOAD_FIXED_STATE(nv10,PFIFO);
1456
            LOAD_FIXED_STATE(nv10,PFIFO);
1390
            LOAD_FIXED_STATE(nv10,PRAMIN);
1457
            LOAD_FIXED_STATE(nv10,PRAMIN);
1391
            LOAD_FIXED_STATE(nv10,PGRAPH);
1458
            LOAD_FIXED_STATE(nv10,PGRAPH);
Lines 1394-1417 Link Here
1394
                case 15:
1461
                case 15:
1395
                    LOAD_FIXED_STATE_15BPP(nv10,PRAMIN);
1462
                    LOAD_FIXED_STATE_15BPP(nv10,PRAMIN);
1396
                    LOAD_FIXED_STATE_15BPP(nv10,PGRAPH);
1463
                    LOAD_FIXED_STATE_15BPP(nv10,PGRAPH);
1397
                    chip->Tri03 = (RivaTexturedTriangle03  *)&(chip->FIFO[0x0000E000/4]);
1398
                    break;
1464
                    break;
1399
                case 16:
1465
                case 16:
1400
                    LOAD_FIXED_STATE_16BPP(nv10,PRAMIN);
1466
                    LOAD_FIXED_STATE_16BPP(nv10,PRAMIN);
1401
                    LOAD_FIXED_STATE_16BPP(nv10,PGRAPH);
1467
                    LOAD_FIXED_STATE_16BPP(nv10,PGRAPH);
1402
                    chip->Tri03 = (RivaTexturedTriangle03  *)&(chip->FIFO[0x0000E000/4]);
1403
                    break;
1468
                    break;
1404
                case 24:
1469
                case 24:
1405
                case 32:
1470
                case 32:
1406
                    LOAD_FIXED_STATE_32BPP(nv10,PRAMIN);
1471
                    LOAD_FIXED_STATE_32BPP(nv10,PRAMIN);
1407
                    LOAD_FIXED_STATE_32BPP(nv10,PGRAPH);
1472
                    LOAD_FIXED_STATE_32BPP(nv10,PGRAPH);
1408
                    chip->Tri03 = 0L;
1409
                    break;
1473
                    break;
1410
                case 8:
1474
                case 8:
1411
                default:
1475
                default:
1412
                    LOAD_FIXED_STATE_8BPP(nv10,PRAMIN);
1476
                    LOAD_FIXED_STATE_8BPP(nv10,PRAMIN);
1413
                    LOAD_FIXED_STATE_8BPP(nv10,PGRAPH);
1477
                    LOAD_FIXED_STATE_8BPP(nv10,PGRAPH);
1414
                    chip->Tri03 = 0L;
1415
                    break;
1478
                    break;
1416
            }
1479
            }
1417
1480
Lines 1438-1448 Link Here
1438
                chip->PGRAPH[0x00000864/4] = state->pitch3;
1501
                chip->PGRAPH[0x00000864/4] = state->pitch3;
1439
                chip->PGRAPH[0x000009A4/4] = chip->PFB[0x00000200/4]; 
1502
                chip->PGRAPH[0x000009A4/4] = chip->PFB[0x00000200/4]; 
1440
                chip->PGRAPH[0x000009A8/4] = chip->PFB[0x00000204/4];
1503
                chip->PGRAPH[0x000009A8/4] = chip->PFB[0x00000204/4];
1441
                chip->PRAMDAC[0x0000052C/4] = 0x00000101;
1442
                chip->PRAMDAC[0x0000252C/4] = 0x00000001;
1443
	    }
1504
	    }
1505
            if(chip->twoHeads) {
1506
               chip->PCRTC0[0x00000860/4] = state->head;
1507
               chip->PCRTC0[0x00002860/4] = state->head2;
1508
            }
1444
            chip->PRAMDAC[0x00000404/4] |= (1 << 25);
1509
            chip->PRAMDAC[0x00000404/4] |= (1 << 25);
1445
            chip->PRAMDAC[0x00002404/4] |= (1 << 25);
1446
1510
1447
	    chip->PMC[0x00008704/4] = 1;
1511
	    chip->PMC[0x00008704/4] = 1;
1448
	    chip->PMC[0x00008140/4] = 0;
1512
	    chip->PMC[0x00008140/4] = 0;
Lines 1450-1455 Link Here
1450
	    chip->PMC[0x00008924/4] = 0;
1514
	    chip->PMC[0x00008924/4] = 0;
1451
	    chip->PMC[0x00008908/4] = 0x01ffffff;
1515
	    chip->PMC[0x00008908/4] = 0x01ffffff;
1452
	    chip->PMC[0x0000890C/4] = 0x01ffffff;
1516
	    chip->PMC[0x0000890C/4] = 0x01ffffff;
1517
            chip->PMC[0x00001588/4] = 0;
1453
1518
1454
            chip->PFB[0x00000240/4] = 0;
1519
            chip->PFB[0x00000240/4] = 0;
1455
            chip->PFB[0x00000244/4] = 0;
1520
            chip->PFB[0x00000244/4] = 0;
Lines 1533-1546 Link Here
1533
            chip->PGRAPH[0x00000F50/4] = 0x00000040;
1598
            chip->PGRAPH[0x00000F50/4] = 0x00000040;
1534
            for (i = 0; i < 4; i++)
1599
            for (i = 0; i < 4; i++)
1535
                chip->PGRAPH[0x00000F54/4] = 0x00000000;
1600
                chip->PGRAPH[0x00000F54/4] = 0x00000000;
1601
1602
            if(chip->flatPanel) {
1603
               VGA_WR08(chip->PCIO, 0x03D4, 0x53);
1604
               VGA_WR08(chip->PCIO, 0x03D5, 0);
1605
               VGA_WR08(chip->PCIO, 0x03D4, 0x54);
1606
               VGA_WR08(chip->PCIO, 0x03D5, 0);
1607
               VGA_WR08(chip->PCIO, 0x03D4, 0x21);
1608
               VGA_WR08(chip->PCIO, 0x03D5, 0xfa);
1609
            }
1536
            break;
1610
            break;
1611
1612
            VGA_WR08(chip->PCIO, 0x03D4, 0x41);
1613
            VGA_WR08(chip->PCIO, 0x03D5, state->extra);
1537
    }
1614
    }
1615
1538
    LOAD_FIXED_STATE(Riva,FIFO);
1616
    LOAD_FIXED_STATE(Riva,FIFO);
1539
    UpdateFifoState(chip);
1617
    UpdateFifoState(chip);
1618
1540
    /*
1619
    /*
1541
     * Load HW mode state.
1620
     * Load HW mode state.
1542
     */
1621
     */
1543
1544
    VGA_WR08(chip->PCIO, 0x03D4, 0x19);
1622
    VGA_WR08(chip->PCIO, 0x03D4, 0x19);
1545
    VGA_WR08(chip->PCIO, 0x03D5, state->repaint0);
1623
    VGA_WR08(chip->PCIO, 0x03D5, state->repaint0);
1546
    VGA_WR08(chip->PCIO, 0x03D4, 0x1A);
1624
    VGA_WR08(chip->PCIO, 0x03D4, 0x1A);
Lines 1563-1578 Link Here
1563
    VGA_WR08(chip->PCIO, 0x03D5, state->cursor2);
1641
    VGA_WR08(chip->PCIO, 0x03D5, state->cursor2);
1564
    VGA_WR08(chip->PCIO, 0x03D4, 0x39);
1642
    VGA_WR08(chip->PCIO, 0x03D4, 0x39);
1565
    VGA_WR08(chip->PCIO, 0x03D5, state->interlace);
1643
    VGA_WR08(chip->PCIO, 0x03D5, state->interlace);
1566
    VGA_WR08(chip->PCIO, 0x03D4, 0x41);
1644
1567
    VGA_WR08(chip->PCIO, 0x03D5, state->extra);
1645
    if(!chip->flatPanel) {
1568
    chip->PRAMDAC[0x00000508/4]  = state->vpll;
1646
       chip->PRAMDAC0[0x00000508/4] = state->vpll;
1569
    chip->PRAMDAC[0x0000050C/4]  = state->pllsel;
1647
       chip->PRAMDAC0[0x0000050C/4] = state->pllsel;
1648
       if(chip->twoHeads)
1649
          chip->PRAMDAC0[0x00000520/4] = state->vpll2;
1650
    } else {
1651
       chip->PRAMDAC[0x00000848/4]  = state->scale;
1652
    }
1570
    chip->PRAMDAC[0x00000600/4]  = state->general;
1653
    chip->PRAMDAC[0x00000600/4]  = state->general;
1654
1571
    /*
1655
    /*
1572
     * Turn off VBlank enable and reset.
1656
     * Turn off VBlank enable and reset.
1573
     */
1657
     */
1574
    *(chip->VBLANKENABLE) = 0;
1658
    chip->PCRTC[0x00000140/4] = 0;
1575
    *(chip->VBLANK)       = chip->VBlankBit;
1659
    chip->PCRTC[0x00000100/4] = chip->VBlankBit;
1576
    /*
1660
    /*
1577
     * Set interrupt enable.
1661
     * Set interrupt enable.
1578
     */    
1662
     */    
Lines 1588-1593 Link Here
1588
    /* Free count from first subchannel */
1672
    /* Free count from first subchannel */
1589
    chip->FifoEmptyCount = chip->Rop->FifoFree; 
1673
    chip->FifoEmptyCount = chip->Rop->FifoFree; 
1590
}
1674
}
1675
1591
static void UnloadStateExt
1676
static void UnloadStateExt
1592
(
1677
(
1593
    RIVA_HW_INST  *chip,
1678
    RIVA_HW_INST  *chip,
Lines 1619-1630 Link Here
1619
    state->cursor2      = VGA_RD08(chip->PCIO, 0x03D5);
1704
    state->cursor2      = VGA_RD08(chip->PCIO, 0x03D5);
1620
    VGA_WR08(chip->PCIO, 0x03D4, 0x39);
1705
    VGA_WR08(chip->PCIO, 0x03D4, 0x39);
1621
    state->interlace    = VGA_RD08(chip->PCIO, 0x03D5);
1706
    state->interlace    = VGA_RD08(chip->PCIO, 0x03D5);
1622
    VGA_WR08(chip->PCIO, 0x03D4, 0x41);
1707
    state->vpll         = chip->PRAMDAC0[0x00000508/4];
1623
    state->extra        = VGA_RD08(chip->PCIO, 0x03D5);
1708
    state->vpll2        = chip->PRAMDAC0[0x00000520/4];
1624
    state->vpll         = chip->PRAMDAC[0x00000508/4];
1709
    state->pllsel       = chip->PRAMDAC0[0x0000050C/4];
1625
    state->pllsel       = chip->PRAMDAC[0x0000050C/4];
1626
    state->general      = chip->PRAMDAC[0x00000600/4];
1710
    state->general      = chip->PRAMDAC[0x00000600/4];
1711
    state->scale        = chip->PRAMDAC[0x00000848/4];
1627
    state->config       = chip->PFB[0x00000200/4];
1712
    state->config       = chip->PFB[0x00000200/4];
1713
1628
    switch (chip->Architecture)
1714
    switch (chip->Architecture)
1629
    {
1715
    {
1630
        case NV_ARCH_03:
1716
        case NV_ARCH_03:
Lines 1657-1662 Link Here
1657
            state->pitch1   = chip->PGRAPH[0x00000674/4];
1743
            state->pitch1   = chip->PGRAPH[0x00000674/4];
1658
            state->pitch2   = chip->PGRAPH[0x00000678/4];
1744
            state->pitch2   = chip->PGRAPH[0x00000678/4];
1659
            state->pitch3   = chip->PGRAPH[0x0000067C/4];
1745
            state->pitch3   = chip->PGRAPH[0x0000067C/4];
1746
            if(chip->twoHeads) {
1747
               state->head     = chip->PCRTC0[0x00000860/4];
1748
               state->head2    = chip->PCRTC0[0x00002860/4];
1749
               VGA_WR08(chip->PCIO, 0x03D4, 0x44);
1750
               state->crtcOwner = VGA_RD08(chip->PCIO, 0x03D5);
1751
            }
1752
            VGA_WR08(chip->PCIO, 0x03D4, 0x41);
1753
            state->extra = VGA_RD08(chip->PCIO, 0x03D5);
1660
            break;
1754
            break;
1661
    }
1755
    }
1662
}
1756
}
Lines 1666-1671 Link Here
1666
    unsigned      start
1760
    unsigned      start
1667
)
1761
)
1668
{
1762
{
1763
    chip->PCRTC[0x800/4] = start;
1764
}
1765
1766
static void SetStartAddress3
1767
(
1768
    RIVA_HW_INST *chip,
1769
    unsigned      start
1770
)
1771
{
1669
    int offset = start >> 2;
1772
    int offset = start >> 2;
1670
    int pan    = (start & 3) << 1;
1773
    int pan    = (start & 3) << 1;
1671
    unsigned char tmp;
1774
    unsigned char tmp;
Lines 1692-1790 Link Here
1692
    VGA_WR08(chip->PCIO, 0x3C0, 0x13);
1795
    VGA_WR08(chip->PCIO, 0x3C0, 0x13);
1693
    VGA_WR08(chip->PCIO, 0x3C0, pan);
1796
    VGA_WR08(chip->PCIO, 0x3C0, pan);
1694
}
1797
}
1695
static void nv3SetSurfaces2D
1696
(
1697
    RIVA_HW_INST *chip,
1698
    unsigned     surf0,
1699
    unsigned     surf1
1700
)
1701
{
1702
    RivaSurface *Surface = (RivaSurface *)&(chip->FIFO[0x0000E000/4]);
1703
1704
    RIVA_FIFO_FREE(*chip,Tri03,5);
1705
    chip->FIFO[0x00003800] = 0x80000003;
1706
    Surface->Offset        = surf0;
1707
    chip->FIFO[0x00003800] = 0x80000004;
1708
    Surface->Offset        = surf1;
1709
    chip->FIFO[0x00003800] = 0x80000013;
1710
}
1711
static void nv4SetSurfaces2D
1712
(
1713
    RIVA_HW_INST *chip,
1714
    unsigned     surf0,
1715
    unsigned     surf1
1716
)
1717
{
1718
    RivaSurface *Surface = (RivaSurface *)&(chip->FIFO[0x0000E000/4]);
1719
1720
    chip->FIFO[0x00003800] = 0x80000003;
1721
    Surface->Offset        = surf0;
1722
    chip->FIFO[0x00003800] = 0x80000004;
1723
    Surface->Offset        = surf1;
1724
    chip->FIFO[0x00003800] = 0x80000014;
1725
}
1726
static void nv10SetSurfaces2D
1727
(
1728
    RIVA_HW_INST *chip,
1729
    unsigned     surf0,
1730
    unsigned     surf1
1731
)
1732
{
1733
    RivaSurface *Surface = (RivaSurface *)&(chip->FIFO[0x0000E000/4]);
1734
1735
    chip->FIFO[0x00003800] = 0x80000003;
1736
    Surface->Offset        = surf0;
1737
    chip->FIFO[0x00003800] = 0x80000004;
1738
    Surface->Offset        = surf1;
1739
    chip->FIFO[0x00003800] = 0x80000014;
1740
}
1741
static void nv3SetSurfaces3D
1742
(
1743
    RIVA_HW_INST *chip,
1744
    unsigned     surf0,
1745
    unsigned     surf1
1746
)
1747
{
1748
    RivaSurface *Surface = (RivaSurface *)&(chip->FIFO[0x0000E000/4]);
1749
1750
    RIVA_FIFO_FREE(*chip,Tri03,5);
1751
    chip->FIFO[0x00003800] = 0x80000005;
1752
    Surface->Offset        = surf0;
1753
    chip->FIFO[0x00003800] = 0x80000006;
1754
    Surface->Offset        = surf1;
1755
    chip->FIFO[0x00003800] = 0x80000013;
1756
}
1757
static void nv4SetSurfaces3D
1758
(
1759
    RIVA_HW_INST *chip,
1760
    unsigned     surf0,
1761
    unsigned     surf1
1762
)
1763
{
1764
    RivaSurface *Surface = (RivaSurface *)&(chip->FIFO[0x0000E000/4]);
1765
1766
    chip->FIFO[0x00003800] = 0x80000005;
1767
    Surface->Offset        = surf0;
1768
    chip->FIFO[0x00003800] = 0x80000006;
1769
    Surface->Offset        = surf1;
1770
    chip->FIFO[0x00003800] = 0x80000014;
1771
}
1772
static void nv10SetSurfaces3D
1773
(
1774
    RIVA_HW_INST *chip,
1775
    unsigned     surf0,
1776
    unsigned     surf1
1777
)
1778
{
1779
    RivaSurface3D *Surfaces3D = (RivaSurface3D *)&(chip->FIFO[0x0000E000/4]);
1780
1781
    RIVA_FIFO_FREE(*chip,Tri03,4);
1782
    chip->FIFO[0x00003800]         = 0x80000007;
1783
    Surfaces3D->RenderBufferOffset = surf0;
1784
    Surfaces3D->ZBufferOffset      = surf1;
1785
    chip->FIFO[0x00003800]         = 0x80000014;
1786
}
1787
1788
/****************************************************************************\
1798
/****************************************************************************\
1789
*                                                                            *
1799
*                                                                            *
1790
*                      Probe RIVA Chip Configuration                         *
1800
*                      Probe RIVA Chip Configuration                         *
Lines 1848-1856 Link Here
1848
    }        
1858
    }        
1849
    chip->CrystalFreqKHz   = (chip->PEXTDEV[0x00000000/4] & 0x00000040) ? 14318 : 13500;
1859
    chip->CrystalFreqKHz   = (chip->PEXTDEV[0x00000000/4] & 0x00000040) ? 14318 : 13500;
1850
    chip->CURSOR           = &(chip->PRAMIN[0x00008000/4 - 0x0800/4]);
1860
    chip->CURSOR           = &(chip->PRAMIN[0x00008000/4 - 0x0800/4]);
1851
    chip->CURSORPOS        = &(chip->PRAMDAC[0x0300/4]);
1852
    chip->VBLANKENABLE     = &(chip->PGRAPH[0x0140/4]);
1853
    chip->VBLANK           = &(chip->PGRAPH[0x0100/4]);
1854
    chip->VBlankBit        = 0x00000100;
1861
    chip->VBlankBit        = 0x00000100;
1855
    chip->MaxVClockFreqKHz = 256000;
1862
    chip->MaxVClockFreqKHz = 256000;
1856
    /*
1863
    /*
Lines 1861-1869 Link Here
1861
    chip->CalcStateExt    = CalcStateExt;
1868
    chip->CalcStateExt    = CalcStateExt;
1862
    chip->LoadStateExt    = LoadStateExt;
1869
    chip->LoadStateExt    = LoadStateExt;
1863
    chip->UnloadStateExt  = UnloadStateExt;
1870
    chip->UnloadStateExt  = UnloadStateExt;
1864
    chip->SetStartAddress = SetStartAddress;
1871
    chip->SetStartAddress = SetStartAddress3;
1865
    chip->SetSurfaces2D   = nv3SetSurfaces2D;
1866
    chip->SetSurfaces3D   = nv3SetSurfaces3D;
1867
    chip->LockUnlock      = nv3LockUnlock;
1872
    chip->LockUnlock      = nv3LockUnlock;
1868
}
1873
}
1869
static void nv4GetConfig
1874
static void nv4GetConfig
Lines 1909-1917 Link Here
1909
    }
1914
    }
1910
    chip->CrystalFreqKHz   = (chip->PEXTDEV[0x00000000/4] & 0x00000040) ? 14318 : 13500;
1915
    chip->CrystalFreqKHz   = (chip->PEXTDEV[0x00000000/4] & 0x00000040) ? 14318 : 13500;
1911
    chip->CURSOR           = &(chip->PRAMIN[0x00010000/4 - 0x0800/4]);
1916
    chip->CURSOR           = &(chip->PRAMIN[0x00010000/4 - 0x0800/4]);
1912
    chip->CURSORPOS        = &(chip->PRAMDAC[0x0300/4]);
1913
    chip->VBLANKENABLE     = &(chip->PCRTC[0x0140/4]);
1914
    chip->VBLANK           = &(chip->PCRTC[0x0100/4]);
1915
    chip->VBlankBit        = 0x00000001;
1917
    chip->VBlankBit        = 0x00000001;
1916
    chip->MaxVClockFreqKHz = 350000;
1918
    chip->MaxVClockFreqKHz = 350000;
1917
    /*
1919
    /*
Lines 1923-1930 Link Here
1923
    chip->LoadStateExt    = LoadStateExt;
1925
    chip->LoadStateExt    = LoadStateExt;
1924
    chip->UnloadStateExt  = UnloadStateExt;
1926
    chip->UnloadStateExt  = UnloadStateExt;
1925
    chip->SetStartAddress = SetStartAddress;
1927
    chip->SetStartAddress = SetStartAddress;
1926
    chip->SetSurfaces2D   = nv4SetSurfaces2D;
1927
    chip->SetSurfaces3D   = nv4SetSurfaces3D;
1928
    chip->LockUnlock      = nv4LockUnlock;
1928
    chip->LockUnlock      = nv4LockUnlock;
1929
}
1929
}
1930
static void nv10GetConfig
1930
static void nv10GetConfig
Lines 1984-1997 Link Here
1984
            chip->RamBandwidthKBytesPerSec = 1000000;
1984
            chip->RamBandwidthKBytesPerSec = 1000000;
1985
            break;
1985
            break;
1986
    }
1986
    }
1987
    chip->CrystalFreqKHz   = (chip->PEXTDEV[0x0000/4] & (1 << 6))  ? 14318 : 
1987
1988
                             (chip->PEXTDEV[0x0000/4] & (1 << 22)) ? 27000 :
1988
    chip->CrystalFreqKHz = (chip->PEXTDEV[0x0000/4] & (1 << 6)) ? 14318 :
1989
                                                                     13500;
1989
                                                                  13500;
1990
    switch(pNv->Chipset & 0x0ff0) {
1991
    case 0x0170:
1992
    case 0x0250:
1993
       if(chip->PEXTDEV[0x0000/4] & (1 << 22))
1994
           chip->CrystalFreqKHz = 27000;
1995
       break;
1996
    default:
1997
       break;
1998
    }
1999
1990
    chip->CursorStart      = (chip->RamAmountKBytes - 128) * 1024;
2000
    chip->CursorStart      = (chip->RamAmountKBytes - 128) * 1024;
1991
    chip->CURSOR           = NULL;  /* can't set this here */
2001
    chip->CURSOR           = NULL;  /* can't set this here */
1992
    chip->CURSORPOS        = &(chip->PRAMDAC[0x0300/4]);
1993
    chip->VBLANKENABLE     = &(chip->PCRTC[0x0140/4]);
1994
    chip->VBLANK           = &(chip->PCRTC[0x0100/4]);
1995
    chip->VBlankBit        = 0x00000001;
2002
    chip->VBlankBit        = 0x00000001;
1996
    chip->MaxVClockFreqKHz = 350000;
2003
    chip->MaxVClockFreqKHz = 350000;
1997
    /*
2004
    /*
Lines 2003-2011 Link Here
2003
    chip->LoadStateExt    = LoadStateExt;
2010
    chip->LoadStateExt    = LoadStateExt;
2004
    chip->UnloadStateExt  = UnloadStateExt;
2011
    chip->UnloadStateExt  = UnloadStateExt;
2005
    chip->SetStartAddress = SetStartAddress;
2012
    chip->SetStartAddress = SetStartAddress;
2006
    chip->SetSurfaces2D   = nv10SetSurfaces2D;
2013
    chip->LockUnlock      = nv4LockUnlock;
2007
    chip->SetSurfaces3D   = nv10SetSurfaces3D;
2014
2008
    chip->LockUnlock      = nv10LockUnlock;
2015
    switch(pNv->Chipset & 0x0ff0) {
2016
    case 0x0110:
2017
    case 0x0170:
2018
    case 0x0250:
2019
        chip->twoHeads = TRUE;
2020
        break;
2021
    default:
2022
        chip->twoHeads = FALSE;
2023
        break;
2024
    }
2009
}
2025
}
2010
int RivaGetConfig
2026
int RivaGetConfig
2011
(
2027
(
Lines 2035-2040 Link Here
2035
        default:
2051
        default:
2036
            return (-1);
2052
            return (-1);
2037
    }
2053
    }
2054
    chip->Chipset = pNv->Chipset;
2038
    /*
2055
    /*
2039
     * Fill in FIFO pointers.
2056
     * Fill in FIFO pointers.
2040
     */
2057
     */
Lines 2045-2051 Link Here
2045
    chip->Blt    = (RivaScreenBlt           *)&(chip->FIFO[0x00008000/4]);
2062
    chip->Blt    = (RivaScreenBlt           *)&(chip->FIFO[0x00008000/4]);
2046
    chip->Bitmap = (RivaBitmap              *)&(chip->FIFO[0x0000A000/4]);
2063
    chip->Bitmap = (RivaBitmap              *)&(chip->FIFO[0x0000A000/4]);
2047
    chip->Line   = (RivaLine                *)&(chip->FIFO[0x0000C000/4]);
2064
    chip->Line   = (RivaLine                *)&(chip->FIFO[0x0000C000/4]);
2048
    chip->Tri03  = (RivaTexturedTriangle03  *)&(chip->FIFO[0x0000E000/4]);
2049
    return (0);
2065
    return (0);
2050
}
2066
}
2051
2067
(-)xc/programs/Xserver/hw/xfree86/drivers/nv/riva_hw.h (-77 / +14 lines)
Lines 36-42 Link Here
36
|*     those rights set forth herein.                                        *|
36
|*     those rights set forth herein.                                        *|
37
|*                                                                           *|
37
|*                                                                           *|
38
\***************************************************************************/
38
\***************************************************************************/
39
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/riva_hw.h,v 1.15 2001/10/08 22:28:53 mvojkovi Exp $ */
39
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/riva_hw.h,v 1.19 2002/03/14 20:35:53 mvojkovi Exp $ */
40
#ifndef __RIVA_HW_H__
40
#ifndef __RIVA_HW_H__
41
#define __RIVA_HW_H__
41
#define __RIVA_HW_H__
42
#define RIVA_SW_VERSION 0x00010003
42
#define RIVA_SW_VERSION 0x00010003
Lines 225-298 Link Here
225
    U032 MonochromeData01E;
225
    U032 MonochromeData01E;
226
} RivaBitmap;
226
} RivaBitmap;
227
/*
227
/*
228
 * 3D textured, Z buffered triangle.
229
 */
230
typedef volatile struct
231
{
232
    U032 reserved00[4];
233
#if X_BYTE_ORDER == X_BIG_ENDIAN
234
    U032 FifoFree;
235
#else
236
    U016 FifoFree;
237
    U016 Nop;
238
#endif
239
    U032 reserved01[0x0BC];
240
    U032 TextureOffset;
241
    U032 TextureFormat;
242
    U032 TextureFilter;
243
    U032 FogColor;
244
/* This is a problem on LynxOS */
245
#ifdef Control
246
#undef Control
247
#endif
248
    U032 Control;
249
    U032 AlphaTest;
250
    U032 reserved02[0x339];
251
    U032 FogAndIndex;
252
    U032 Color;
253
    float ScreenX;
254
    float ScreenY;
255
    float ScreenZ;
256
    float EyeM;
257
    float TextureS;
258
    float TextureT;
259
} RivaTexturedTriangle03;
260
typedef volatile struct
261
{
262
    U032 reserved00[4];
263
#if X_BYTE_ORDER == X_BIG_ENDIAN
264
    U032 FifoFree;
265
#else
266
    U016 FifoFree;
267
    U016 Nop;
268
#endif
269
    U032 reserved01[0x0BB];
270
    U032 ColorKey;
271
    U032 TextureOffset;
272
    U032 TextureFormat;
273
    U032 TextureFilter;
274
    U032 Blend;
275
/* This is a problem on LynxOS */
276
#ifdef Control
277
#undef Control
278
#endif
279
    U032 Control;
280
    U032 FogColor;
281
    U032 reserved02[0x39];
282
    struct
283
    {
284
        float ScreenX;
285
        float ScreenY;
286
        float ScreenZ;
287
        float EyeM;
288
        U032 Color;
289
        U032 Specular;
290
        float TextureS;
291
        float TextureT;
292
    } Vertex[16];
293
    U032 DrawTriangle3D;
294
} RivaTexturedTriangle05;
295
/*
296
 * 2D line.
228
 * 2D line.
297
 */
229
 */
298
typedef volatile struct
230
typedef volatile struct
Lines 375-380 Link Here
375
     */
307
     */
376
    U032 Architecture;
308
    U032 Architecture;
377
    U032 Version;
309
    U032 Version;
310
    U032 Chipset;
378
    U032 CrystalFreqKHz;
311
    U032 CrystalFreqKHz;
379
    U032 RamAmountKBytes;
312
    U032 RamAmountKBytes;
380
    U032 MaxVClockFreqKHz;
313
    U032 MaxVClockFreqKHz;
Lines 385-395 Link Here
385
    U032 FifoFreeCount;
318
    U032 FifoFreeCount;
386
    U032 FifoEmptyCount;
319
    U032 FifoEmptyCount;
387
    U032 CursorStart;
320
    U032 CursorStart;
321
    Bool flatPanel;
322
    Bool twoHeads;
388
    /*
323
    /*
389
     * Non-FIFO registers.
324
     * Non-FIFO registers.
390
     */
325
     */
326
    volatile U032 *PCRTC0;
391
    volatile U032 *PCRTC;
327
    volatile U032 *PCRTC;
392
    volatile U032 *PRAMDAC;
328
    volatile U032 *PRAMDAC0;
393
    volatile U032 *PFB;
329
    volatile U032 *PFB;
394
    volatile U032 *PFIFO;
330
    volatile U032 *PFIFO;
395
    volatile U032 *PGRAPH;
331
    volatile U032 *PGRAPH;
Lines 399-410 Link Here
399
    volatile U032 *PRAMIN;
335
    volatile U032 *PRAMIN;
400
    volatile U032 *FIFO;
336
    volatile U032 *FIFO;
401
    volatile U032 *CURSOR;
337
    volatile U032 *CURSOR;
402
    volatile U032 *CURSORPOS;
338
    volatile U008 *PCIO0;
403
    volatile U032 *VBLANKENABLE;
404
    volatile U032 *VBLANK;
405
    volatile U008 *PCIO;
339
    volatile U008 *PCIO;
406
    volatile U008 *PVIO;
340
    volatile U008 *PVIO;
341
    volatile U008 *PDIO0;
407
    volatile U008 *PDIO;
342
    volatile U008 *PDIO;
343
    volatile U032 *PRAMDAC;
408
    /*
344
    /*
409
     * Common chip functions.
345
     * Common chip functions.
410
     */
346
     */
Lines 413-420 Link Here
413
    void (*LoadStateExt)(struct _riva_hw_inst *,struct _riva_hw_state *);
349
    void (*LoadStateExt)(struct _riva_hw_inst *,struct _riva_hw_state *);
414
    void (*UnloadStateExt)(struct _riva_hw_inst *,struct _riva_hw_state *);
350
    void (*UnloadStateExt)(struct _riva_hw_inst *,struct _riva_hw_state *);
415
    void (*SetStartAddress)(struct _riva_hw_inst *,U032);
351
    void (*SetStartAddress)(struct _riva_hw_inst *,U032);
416
    void (*SetSurfaces2D)(struct _riva_hw_inst *,U032,U032);
417
    void (*SetSurfaces3D)(struct _riva_hw_inst *,U032,U032);
418
    int  (*ShowHideCursor)(struct _riva_hw_inst *,int);
352
    int  (*ShowHideCursor)(struct _riva_hw_inst *,int);
419
    void (*LockUnlock)(struct _riva_hw_inst *, int);
353
    void (*LockUnlock)(struct _riva_hw_inst *, int);
420
    /*
354
    /*
Lines 431-438 Link Here
431
    RivaScreenBlt           *Blt;
365
    RivaScreenBlt           *Blt;
432
    RivaBitmap              *Bitmap;
366
    RivaBitmap              *Bitmap;
433
    RivaLine                *Line;
367
    RivaLine                *Line;
434
    RivaTexturedTriangle03  *Tri03;
435
    RivaTexturedTriangle05  *Tri05;
436
} RIVA_HW_INST;
368
} RIVA_HW_INST;
437
/*
369
/*
438
 * Extended mode state information.
370
 * Extended mode state information.
Lines 446-459 Link Here
446
    U032 repaint0;
378
    U032 repaint0;
447
    U032 repaint1;
379
    U032 repaint1;
448
    U032 screen;
380
    U032 screen;
381
    U032 scale;
449
    U032 extra;
382
    U032 extra;
450
    U032 pixel;
383
    U032 pixel;
451
    U032 horiz;
384
    U032 horiz;
452
    U032 arbitration0;
385
    U032 arbitration0;
453
    U032 arbitration1;
386
    U032 arbitration1;
454
    U032 vpll;
387
    U032 vpll;
388
    U032 vpll2;
455
    U032 pllsel;
389
    U032 pllsel;
456
    U032 general;
390
    U032 general;
391
    U032 crtcOwner;
392
    U032 head; 
393
    U032 head2; 
457
    U032 config;
394
    U032 config;
458
    U032 cursor0;
395
    U032 cursor0;
459
    U032 cursor1;
396
    U032 cursor1;
(-)xc/programs/Xserver/hw/xfree86/drivers/nv/riva_tbl.h (-175 / +1 lines)
Lines 36-42 Link Here
36
|*     those rights set forth herein.                                        *|
36
|*     those rights set forth herein.                                        *|
37
|*                                                                           *|
37
|*                                                                           *|
38
 \***************************************************************************/
38
 \***************************************************************************/
39
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/riva_tbl.h,v 1.8 2001/09/19 23:40:06 mvojkovi Exp $ */
39
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/riva_tbl.h,v 1.9 2002/01/30 01:35:03 mvojkovi Exp $ */
40
40
41
41
42
/*
42
/*
Lines 634-813 Link Here
634
    {0x00000186, 0x000070E5},
634
    {0x00000186, 0x000070E5},
635
    {0x0000020C, 0x0E0D0D0D}
635
    {0x0000020C, 0x0E0D0D0D}
636
};
636
};
637
static unsigned nv10tri05TablePGRAPH[][2] =
638
{
639
    {(0x00000E00/4), 0x00000000},
640
    {(0x00000E04/4), 0x00000000},
641
    {(0x00000E08/4), 0x00000000},
642
    {(0x00000E0C/4), 0x00000000},
643
    {(0x00000E10/4), 0x00001000},
644
    {(0x00000E14/4), 0x00001000},
645
    {(0x00000E18/4), 0x4003ff80},
646
    {(0x00000E1C/4), 0x00000000},
647
    {(0x00000E20/4), 0x00000000},
648
    {(0x00000E24/4), 0x00000000},
649
    {(0x00000E28/4), 0x00000000},
650
    {(0x00000E2C/4), 0x00000000},
651
    {(0x00000E30/4), 0x00080008},
652
    {(0x00000E34/4), 0x00080008},
653
    {(0x00000E38/4), 0x00000000},
654
    {(0x00000E3C/4), 0x00000000},
655
    {(0x00000E40/4), 0x00000000},
656
    {(0x00000E44/4), 0x00000000},
657
    {(0x00000E48/4), 0x00000000},
658
    {(0x00000E4C/4), 0x00000000},
659
    {(0x00000E50/4), 0x00000000},
660
    {(0x00000E54/4), 0x00000000},
661
    {(0x00000E58/4), 0x00000000},
662
    {(0x00000E5C/4), 0x00000000},
663
    {(0x00000E60/4), 0x00000000},
664
    {(0x00000E64/4), 0x10000000},
665
    {(0x00000E68/4), 0x00000000},
666
    {(0x00000E6C/4), 0x00000000},
667
    {(0x00000E70/4), 0x00000000},
668
    {(0x00000E74/4), 0x00000000},
669
    {(0x00000E78/4), 0x00000000},
670
    {(0x00000E7C/4), 0x00000000},
671
    {(0x00000E80/4), 0x00000000},
672
    {(0x00000E84/4), 0x00000000},
673
    {(0x00000E88/4), 0x08000000},
674
    {(0x00000E8C/4), 0x00000000},
675
    {(0x00000E90/4), 0x00000000},
676
    {(0x00000E94/4), 0x00000000},
677
    {(0x00000E98/4), 0x00000000},
678
    {(0x00000E9C/4), 0x4B7FFFFF},
679
    {(0x00000EA0/4), 0x00000000},
680
    {(0x00000EA4/4), 0x00000000},
681
    {(0x00000EA8/4), 0x00000000},
682
    {(0x00000F00/4), 0x07FF0800},
683
    {(0x00000F04/4), 0x07FF0800},
684
    {(0x00000F08/4), 0x07FF0800},
685
    {(0x00000F0C/4), 0x07FF0800},
686
    {(0x00000F10/4), 0x07FF0800},
687
    {(0x00000F14/4), 0x07FF0800},
688
    {(0x00000F18/4), 0x07FF0800},
689
    {(0x00000F1C/4), 0x07FF0800},
690
    {(0x00000F20/4), 0x07FF0800},
691
    {(0x00000F24/4), 0x07FF0800},
692
    {(0x00000F28/4), 0x07FF0800},
693
    {(0x00000F2C/4), 0x07FF0800},
694
    {(0x00000F30/4), 0x07FF0800},
695
    {(0x00000F34/4), 0x07FF0800},
696
    {(0x00000F38/4), 0x07FF0800},
697
    {(0x00000F3C/4), 0x07FF0800},
698
    {(0x00000F40/4), 0x10000000},
699
    {(0x00000F44/4), 0x00000000},
700
    {(0x00000F50/4), 0x00006740},
701
    {(0x00000F54/4), 0x00000000},
702
    {(0x00000F54/4), 0x00000000},
703
    {(0x00000F54/4), 0x00000000},
704
    {(0x00000F54/4), 0x3F800000},
705
    {(0x00000F50/4), 0x00006750},
706
    {(0x00000F54/4), 0x40000000},
707
    {(0x00000F54/4), 0x40000000},
708
    {(0x00000F54/4), 0x40000000},
709
    {(0x00000F54/4), 0x40000000},
710
    {(0x00000F50/4), 0x00006760},
711
    {(0x00000F54/4), 0x00000000},
712
    {(0x00000F54/4), 0x00000000},
713
    {(0x00000F54/4), 0x3F800000},
714
    {(0x00000F54/4), 0x00000000},
715
    {(0x00000F50/4), 0x00006770},
716
    {(0x00000F54/4), 0xC5000000},
717
    {(0x00000F54/4), 0xC5000000},
718
    {(0x00000F54/4), 0x00000000},
719
    {(0x00000F54/4), 0x00000000},
720
    {(0x00000F50/4), 0x00006780},
721
    {(0x00000F54/4), 0x00000000},
722
    {(0x00000F54/4), 0x00000000},
723
    {(0x00000F54/4), 0x3F800000},
724
    {(0x00000F54/4), 0x00000000},
725
    {(0x00000F50/4), 0x000067A0},
726
    {(0x00000F54/4), 0x3F800000},
727
    {(0x00000F54/4), 0x3F800000},
728
    {(0x00000F54/4), 0x3F800000},
729
    {(0x00000F54/4), 0x3F800000},
730
    {(0x00000F50/4), 0x00006AB0},
731
    {(0x00000F54/4), 0x3F800000},
732
    {(0x00000F54/4), 0x3F800000},
733
    {(0x00000F54/4), 0x3F800000},
734
    {(0x00000F50/4), 0x00006AC0},
735
    {(0x00000F54/4), 0x00000000},
736
    {(0x00000F54/4), 0x00000000},
737
    {(0x00000F54/4), 0x00000000},
738
    {(0x00000F50/4), 0x00006C10},
739
    {(0x00000F54/4), 0xBF800000},
740
    {(0x00000F50/4), 0x00007030},
741
    {(0x00000F54/4), 0x7149F2CA},
742
    {(0x00000F50/4), 0x00007040},
743
    {(0x00000F54/4), 0x7149F2CA},
744
    {(0x00000F50/4), 0x00007050},
745
    {(0x00000F54/4), 0x7149F2CA},
746
    {(0x00000F50/4), 0x00007060},
747
    {(0x00000F54/4), 0x7149F2CA},
748
    {(0x00000F50/4), 0x00007070},
749
    {(0x00000F54/4), 0x7149F2CA},
750
    {(0x00000F50/4), 0x00007080},
751
    {(0x00000F54/4), 0x7149F2CA},
752
    {(0x00000F50/4), 0x00007090},
753
    {(0x00000F54/4), 0x7149F2CA},
754
    {(0x00000F50/4), 0x000070A0},
755
    {(0x00000F54/4), 0x7149F2CA},
756
    {(0x00000F50/4), 0x00006A80},
757
    {(0x00000F54/4), 0x00000000},
758
    {(0x00000F54/4), 0x00000000},
759
    {(0x00000F54/4), 0x3F800000},
760
    {(0x00000F50/4), 0x00006AA0},
761
    {(0x00000F54/4), 0x00000000},
762
    {(0x00000F54/4), 0x00000000},
763
    {(0x00000F54/4), 0x00000000},
764
    {(0x00000F50/4), 0x00000040},
765
    {(0x00000F54/4), 0x00000005},
766
    {(0x00000F50/4), 0x00006400},
767
    {(0x00000F54/4), 0x3F800000},
768
    {(0x00000F54/4), 0x3F800000},
769
    {(0x00000F54/4), 0x4B7FFFFF},
770
    {(0x00000F54/4), 0x00000000},
771
    {(0x00000F50/4), 0x00006410},
772
    {(0x00000F54/4), 0xC5000000},
773
    {(0x00000F54/4), 0xC5000000},
774
    {(0x00000F54/4), 0x00000000},
775
    {(0x00000F54/4), 0x00000000},
776
    {(0x00000F50/4), 0x00006420},
777
    {(0x00000F54/4), 0x00000000},
778
    {(0x00000F54/4), 0x00000000},
779
    {(0x00000F54/4), 0x00000000},
780
    {(0x00000F54/4), 0x00000000},
781
    {(0x00000F50/4), 0x00006430},
782
    {(0x00000F54/4), 0x00000000},
783
    {(0x00000F54/4), 0x00000000},
784
    {(0x00000F54/4), 0x00000000},
785
    {(0x00000F54/4), 0x00000000},
786
    {(0x00000F50/4), 0x000064C0},
787
    {(0x00000F54/4), 0x3F800000},
788
    {(0x00000F54/4), 0x3F800000},
789
    {(0x00000F54/4), 0x477FFFFF},
790
    {(0x00000F54/4), 0x3F800000},
791
    {(0x00000F50/4), 0x000064D0},
792
    {(0x00000F54/4), 0xC5000000},
793
    {(0x00000F54/4), 0xC5000000},
794
    {(0x00000F54/4), 0x00000000},
795
    {(0x00000F54/4), 0x00000000},
796
    {(0x00000F50/4), 0x000064E0},
797
    {(0x00000F54/4), 0xC4FFF000},
798
    {(0x00000F54/4), 0xC4FFF000},
799
    {(0x00000F54/4), 0x00000000},
800
    {(0x00000F54/4), 0x00000000},
801
    {(0x00000F50/4), 0x000064F0},
802
    {(0x00000F54/4), 0x00000000},
803
    {(0x00000F54/4), 0x00000000},
804
    {(0x00000F54/4), 0x00000000},
805
    {(0x00000F54/4), 0x00000000},
806
    {(0x00000F40/4), 0x30000000},
807
    {(0x00000F44/4), 0x00000004},
808
    {(0x00000F48/4), 0x10000000},
809
    {(0x00000F4C/4), 0x00000000}
810
};
811
static unsigned nv10TablePRAMIN[][2] =
637
static unsigned nv10TablePRAMIN[][2] =
812
{
638
{
813
    {0x00000000, 0x80000010},
639
    {0x00000000, 0x80000010},
(-)xc/programs/Xserver/hw/xfree86/common/xf86PciInfo.h (-72 / +82 lines)
Lines 506-547 Link Here
506
#define PCI_CHIP_BT849		0x0351
506
#define PCI_CHIP_BT849		0x0351
507
507
508
/* NVIDIA */
508
/* NVIDIA */
509
#define PCI_CHIP_NV1		0x0008
509
#define PCI_CHIP_NV1			0x0008
510
#define PCI_CHIP_DAC64		0x0009
510
#define PCI_CHIP_DAC64			0x0009
511
#define PCI_CHIP_TNT		0x0020
511
#define PCI_CHIP_TNT			0x0020
512
#define PCI_CHIP_TNT2		0x0028
512
#define PCI_CHIP_TNT2			0x0028
513
#define PCI_CHIP_UTNT2		0x0029
513
#define PCI_CHIP_UTNT2			0x0029
514
#define PCI_CHIP_VTNT2		0x002C
514
#define PCI_CHIP_VTNT2			0x002C
515
#define PCI_CHIP_UVTNT2		0x002D
515
#define PCI_CHIP_UVTNT2			0x002D
516
#define PCI_CHIP_ITNT2		0x00A0
516
#define PCI_CHIP_ITNT2			0x00A0
517
#define PCI_CHIP_GEFORCE256     0x0100
517
#define PCI_CHIP_GEFORCE_256		0x0100
518
#define PCI_CHIP_GEFORCEDDR     0x0101
518
#define PCI_CHIP_GEFORCE_DDR		0x0101
519
#define PCI_CHIP_QUADRO         0x0103
519
#define PCI_CHIP_QUADRO			0x0103
520
#define PCI_CHIP_GEFORCE2MX     0x0110
520
#define PCI_CHIP_GEFORCE2_MX		0x0110
521
#define PCI_CHIP_GEFORCE2MXDDR  0x0111
521
#define PCI_CHIP_GEFORCE2_MX_100  	0x0111
522
#define PCI_CHIP_GEFORCE2GO	0x0112
522
#define PCI_CHIP_GEFORCE2_GO		0x0112
523
#define PCI_CHIP_QUADRO2MXR     0x0113
523
#define PCI_CHIP_QUADRO2_MXR     	0x0113
524
#define PCI_CHIP_GEFORCE2GTS    0x0150
524
#define PCI_CHIP_GEFORCE2_GTS    	0x0150
525
#define PCI_CHIP_GEFORCE2GTS_1  0x0151
525
#define PCI_CHIP_GEFORCE2_TI  		0x0151
526
#define PCI_CHIP_GEFORCE2ULTRA  0x0152
526
#define PCI_CHIP_GEFORCE2_ULTRA  	0x0152
527
#define PCI_CHIP_QUADRO2PRO     0x0153
527
#define PCI_CHIP_QUADRO2_PRO     	0x0153
528
#define PCI_CHIP_0x0170         0x0170
528
#define PCI_CHIP_GEFORCE4_MX_460 	0x0170
529
#define PCI_CHIP_0x0171         0x0171
529
#define PCI_CHIP_GEFORCE4_MX_440 	0x0171
530
#define PCI_CHIP_0x0172         0x0172
530
#define PCI_CHIP_GEFORCE4_MX_420 	0x0172
531
#define PCI_CHIP_0x0173         0x0173
531
#define PCI_CHIP_GEFORCE4_440_GO	0x0174
532
#define PCI_CHIP_0x0174         0x0174
532
#define PCI_CHIP_GEFORCE4_420_GO	0x0175
533
#define PCI_CHIP_0x0175         0x0175
533
#define PCI_CHIP_GEFORCE4_420_GO_M32	0x0176
534
#define PCI_CHIP_0x0178         0x0178
534
#define PCI_CHIP_QUADRO4_500XGL		0x0178
535
#define PCI_CHIP_0x017A         0x017A
535
#define PCI_CHIP_GEFORCE4_440_GO_M64	0x0179
536
#define PCI_CHIP_0x017B         0x017B
536
#define PCI_CHIP_QUADRO4_200		0x017A
537
#define PCI_CHIP_0x017C         0x017C
537
#define PCI_CHIP_QUADRO4_550XGL		0x017B
538
#define PCI_CHIP_IGEFORCE2      0x01A0
538
#define PCI_CHIP_QUADRO4_500_GOGL       0x017C
539
#define PCI_CHIP_GEFORCE3	0x0200
539
#define PCI_CHIP_IGEFORCE2      	0x01A0
540
#define PCI_CHIP_GEFORCE3_1	0x0201
540
#define PCI_CHIP_GEFORCE3		0x0200
541
#define PCI_CHIP_GEFORCE3_2	0x0202
541
#define PCI_CHIP_GEFORCE3_TI_200	0x0201
542
#define PCI_CHIP_QUADRO_DDC	0x0203
542
#define PCI_CHIP_GEFORCE3_TI_500	0x0202
543
#define PCI_CHIP_0x0250         0x0250
543
#define PCI_CHIP_QUADRO_DCC		0x0203
544
#define PCI_CHIP_0x0258         0x0258
544
#define PCI_CHIP_GEFORCE4_TI_4600	0x0250
545
#define PCI_CHIP_GEFORCE4_TI_4400	0x0251
546
#define PCI_CHIP_GEFORCE4_TI_4200	0x0253
547
#define PCI_CHIP_QUADRO4_900XGL		0x0258
548
#define PCI_CHIP_QUADRO4_750XGL		0x0259
549
#define PCI_CHIP_QUADRO4_700XGL		0x025B
545
550
546
/* NVIDIA & SGS */
551
/* NVIDIA & SGS */
547
#define PCI_CHIP_RIVA128	0x0018
552
#define PCI_CHIP_RIVA128	0x0018
Lines 1308-1349 Link Here
1308
				{0x0000,		NULL,0}}},
1313
				{0x0000,		NULL,0}}},
1309
#endif
1314
#endif
1310
    {PCI_VENDOR_NVIDIA,	{
1315
    {PCI_VENDOR_NVIDIA,	{
1311
				{PCI_CHIP_NV1,		"NV1",0},
1316
				{PCI_CHIP_NV1,		      "NV1",0},
1312
				{PCI_CHIP_DAC64,	"DAC64",0},
1317
				{PCI_CHIP_DAC64,	      "DAC64",0},
1313
				{PCI_CHIP_TNT,		"RIVA TNT",0},
1318
				{PCI_CHIP_TNT,		      "RIVA TNT",0},
1314
				{PCI_CHIP_TNT2,		"RIVA TNT2/TNT2 Pro",0},
1319
				{PCI_CHIP_TNT2,		      "RIVA TNT2/TNT2 Pro",0},
1315
				{PCI_CHIP_UTNT2,	"RIVA TNT2 Ultra",0},
1320
				{PCI_CHIP_UTNT2,	      "RIVA TNT2 Ultra",0},
1316
				{PCI_CHIP_VTNT2,	"Vanta",0},
1321
				{PCI_CHIP_VTNT2,	      "Vanta",0},
1317
				{PCI_CHIP_UVTNT2,	"Riva TNT2 M64",0},
1322
				{PCI_CHIP_UVTNT2,	      "Riva TNT2 M64",0},
1318
				{PCI_CHIP_ITNT2,	"Aladdin TNT2",0},
1323
				{PCI_CHIP_ITNT2,	      "Aladdin TNT2",0},
1319
				{PCI_CHIP_GEFORCE256,	"GeForce 256",0},
1324
				{PCI_CHIP_GEFORCE_256,        "GeForce 256",0},
1320
				{PCI_CHIP_GEFORCEDDR,	"GeForce DDR",0},
1325
				{PCI_CHIP_GEFORCE_DDR,	      "GeForce DDR",0},
1321
				{PCI_CHIP_QUADRO,	"Quadro",0},
1326
				{PCI_CHIP_QUADRO,	      "Quadro",0},
1322
				{PCI_CHIP_GEFORCE2MX,	"GeForce2 MX/MX 400",0},
1327
				{PCI_CHIP_GEFORCE2_MX,	      "GeForce2 MX/MX 400",0},
1323
				{PCI_CHIP_GEFORCE2MXDDR,"GeForce2 MX 100/200",0},
1328
				{PCI_CHIP_GEFORCE2_MX_100,    "GeForce2 MX 100/200",0},
1324
				{PCI_CHIP_GEFORCE2GO,   "GeForce2 Go", 0},
1329
				{PCI_CHIP_GEFORCE2_GO,        "GeForce2 Go", 0},
1325
				{PCI_CHIP_QUADRO2MXR,	"Quadro2 MXR",0},
1330
				{PCI_CHIP_QUADRO2_MXR,	      "Quadro2 MXR",0},
1326
				{PCI_CHIP_GEFORCE2GTS,	"GeForce2 GTS/Pro",0},
1331
				{PCI_CHIP_GEFORCE2_GTS,	      "GeForce2 GTS/Pro",0},
1327
				{PCI_CHIP_GEFORCE2GTS_1,"GeForce2 Ti",0},
1332
				{PCI_CHIP_GEFORCE2_TI,        "GeForce2 Ti",0},
1328
				{PCI_CHIP_GEFORCE2ULTRA,"GeForce2 Ultra",0},
1333
				{PCI_CHIP_GEFORCE2_ULTRA,     "GeForce2 Ultra",0},
1329
				{PCI_CHIP_QUADRO2PRO,	"Quadro2 Pro",0},
1334
				{PCI_CHIP_QUADRO2_PRO,	      "Quadro2 Pro",0},
1330
				{PCI_CHIP_0x0170,	"0x0170",0},
1335
				{PCI_CHIP_GEFORCE4_MX_460,    "GeForce4 MX 460",0},
1331
				{PCI_CHIP_0x0171,	"0x0171",0},
1336
				{PCI_CHIP_GEFORCE4_MX_440,    "GeForce4 MX 440",0},
1332
				{PCI_CHIP_0x0172,	"0x0172",0},
1337
				{PCI_CHIP_GEFORCE4_MX_420,    "GeForce4 MX 420",0},
1333
				{PCI_CHIP_0x0173,	"0x0173",0},
1338
				{PCI_CHIP_GEFORCE4_440_GO,    "GeForce4 440 Go",0},
1334
				{PCI_CHIP_0x0174,	"0x0174",0},
1339
				{PCI_CHIP_GEFORCE4_420_GO,    "GeForce4 420 Go",0},
1335
				{PCI_CHIP_0x0175,	"0x0175",0},
1340
				{PCI_CHIP_GEFORCE4_420_GO_M32,"GeForce4 420 Go M32",0},
1336
				{PCI_CHIP_0x0178,	"0x0178",0},
1341
				{PCI_CHIP_QUADRO4_500XGL,     "Quadro4 500XGL",0},
1337
				{PCI_CHIP_0x017A,	"0x017A",0},
1342
				{PCI_CHIP_GEFORCE4_440_GO_M64,"GeForce4 440 Go M64",0},
1338
				{PCI_CHIP_0x017B,	"0x017B",0},
1343
				{PCI_CHIP_QUADRO4_200,        "Quadro4 200/400NVS",0},
1339
				{PCI_CHIP_0x017C,	"0x017C",0},
1344
				{PCI_CHIP_QUADRO4_550XGL,     "Quadro4 550XGL",0},
1340
				{PCI_CHIP_IGEFORCE2,	"GeForce2 Integrated",0},
1345
				{PCI_CHIP_QUADRO4_500_GOGL,   "Quadro4 GoGL",0},
1341
				{PCI_CHIP_GEFORCE3,	"GeForce3",0},
1346
				{PCI_CHIP_IGEFORCE2,	      "GeForce2 Integrated",0},
1342
				{PCI_CHIP_GEFORCE3_1,	"GeForce3 Ti 200",0},
1347
				{PCI_CHIP_GEFORCE3,	      "GeForce3",0},
1343
				{PCI_CHIP_GEFORCE3_2,	"GeForce3 Ti 500",0},
1348
				{PCI_CHIP_GEFORCE3_TI_200,    "GeForce3 Ti 200",0},
1344
				{PCI_CHIP_QUADRO_DDC,	"Quadro DDC",0},
1349
				{PCI_CHIP_GEFORCE3_TI_500,    "GeForce3 Ti 500",0},
1345
				{PCI_CHIP_0x0250,	"0x0250",0},
1350
				{PCI_CHIP_QUADRO_DCC,	      "Quadro DCC",0},
1346
				{PCI_CHIP_0x0258,	"0x0258",0},
1351
				{PCI_CHIP_GEFORCE4_TI_4600,   "GeForce4 Ti 4600",0},
1352
				{PCI_CHIP_GEFORCE4_TI_4400,   "GeForce4 Ti 4400",0},
1353
				{PCI_CHIP_GEFORCE4_TI_4200,   "GeForce4 Ti 4200",0},
1354
				{PCI_CHIP_QUADRO4_900XGL,     "Quadro4 900 XGL",0},
1355
				{PCI_CHIP_QUADRO4_750XGL,     "Quadro4 750 XGL",0},
1356
				{PCI_CHIP_QUADRO4_700XGL,     "Quadro4 700 XGL",0},
1347
				{0x0000,		NULL,0}}},
1357
				{0x0000,		NULL,0}}},
1348
    {PCI_VENDOR_IMS, {
1358
    {PCI_VENDOR_IMS, {
1349
				{PCI_CHIP_IMSTT128,	"TwinTurbo 128", 0},
1359
				{PCI_CHIP_IMSTT128,	"TwinTurbo 128", 0},

Return to bug 2755