1 --- XFree86-4.2.0/xc/programs/Xserver/hw/xfree86/drivers/nv.orig/nv.man Tue Dec 18 05:52:33 2001
2 +++ XFree86-4.2.0/xc/programs/Xserver/hw/xfree86/drivers/nv/nv.man Sun Apr 14 15:59:41 2002
7 -NV11 & NV15 (except GeForce2 Go, which is
17 .SH CONFIGURATION DETAILS
18 Please refer to XF86Config(__filemansuffix__) for general configuration
19 details. This section only covers configuration details specific to this
21 .BI "Option \*qUseFBDev\*q \*q" boolean \*q
22 Enable or disable use of on OS-specific fb interface (and is not supported
23 on all OSs). See fbdevhw(__drivermansuffix__) for further information.
26 +.BI "Option \*qCrtcNumber\*q \*q" integer \*q
27 +NV17 and NV25 can have two video outputs. The driver attempts to autodetect
28 +which one the monitor is connected to. In the case that autodetection picks
29 +the wrong one, this option may be used to force usage of a particular output.
30 +The options are "0" or "1".
31 +Default: autodetected.
33 +.BI "Option \*qFlatPanel\*q \*q" boolean \*q
34 +This driver has experimental flat panel support for some chips. The driver
35 +cannot autodetect the presence of a flat panel so this option must be set
36 +when used with a flat panel.
39 .BI "Option \*qRotate\*q \*qCW\*q"
40 --- XFree86-4.2.0/xc/programs/Xserver/hw/xfree86/drivers/nv.orig/nv_cursor.c Tue Dec 18 07:17:55 2001
41 +++ XFree86-4.2.0/xc/programs/Xserver/hw/xfree86/drivers/nv/nv_cursor.c Sun Apr 14 15:59:41 2002
43 NVPtr pNv = NVPTR(pScrn);
45 pNv->riva.ShowHideCursor(&pNv->riva, 0);
46 - *(pNv->riva.CURSORPOS) = (x & 0xFFFF) | (y << 16);
47 + pNv->riva.PRAMDAC[0x0000300/4] = (x & 0xFFFF) | (y << 16);
48 pNv->riva.ShowHideCursor(&pNv->riva, 1);
52 back = ConvertToRGB555(bg);
54 #if X_BYTE_ORDER == X_BIG_ENDIAN
55 - fore = (fore << 8) | (fore >> 8);
56 - back = (back << 8) | (back >> 8);
57 + if((pNv->Chipset & 0x0ff0) == 0x0110) {
58 + fore = (fore << 8) | (fore >> 8);
59 + back = (back << 8) | (back >> 8);
63 if (pNv->curFg != fore || pNv->curBg != back) {
64 --- XFree86-4.2.0/xc/programs/Xserver/hw/xfree86/drivers/nv.orig/nv_dac.c Wed Dec 12 04:42:01 2001
65 +++ XFree86-4.2.0/xc/programs/Xserver/hw/xfree86/drivers/nv/nv_dac.c Sun Apr 14 15:59:41 2002
67 if(mode->Flags & V_INTERLACE)
70 + if(pNv->FlatPanel == 1) {
71 + vertStart = vertTotal - 3;
72 + vertEnd = vertTotal - 2;
73 + vertBlankStart = vertStart;
74 + horizStart = horizTotal - 3;
75 + horizEnd = horizTotal - 2;
76 + horizBlankEnd = horizTotal + 4;
79 pVga->CRTC[0x0] = Set8Bits(horizTotal);
80 pVga->CRTC[0x1] = Set8Bits(horizDisplay);
81 pVga->CRTC[0x2] = Set8Bits(horizBlankStart);
83 if(pNv->riva.Architecture >= NV_ARCH_10)
84 pNv->riva.CURSOR = (U032 *)(pNv->FbStart + pNv->riva.CursorStart);
86 + pNv->riva.LockUnlock(&pNv->riva, 0);
88 pNv->riva.CalcStateExt(&pNv->riva,
95 + nvReg->scale = pNv->riva.PRAMDAC[0x00000848/4] & 0xfff000ff;
96 + if(pNv->FlatPanel == 1) {
97 + nvReg->pixel |= (1 << 7);
98 + nvReg->scale |= (1 << 8) ;
100 + if(pNv->SecondCRTC) {
101 + nvReg->head = pNv->riva.PCRTC0[0x00000860/4] & ~0x00001000;
102 + nvReg->head2 = pNv->riva.PCRTC0[0x00002860/4] | 0x00001000;
103 + nvReg->crtcOwner = 3;
104 + nvReg->pllsel |= 0x20000800;
105 + nvReg->vpll2 = nvReg->vpll;
107 + if(pNv->riva.twoHeads) {
108 + nvReg->head = pNv->riva.PCRTC0[0x00000860/4] | 0x00001000;
109 + nvReg->head2 = pNv->riva.PCRTC0[0x00002860/4] & ~0x00001000;
110 + nvReg->crtcOwner = 0;
111 + nvReg->vpll2 = pNv->riva.PRAMDAC0[0x00000520/4];
118 NVDACRestore(ScrnInfoPtr pScrn, vgaRegPtr vgaReg, NVRegPtr nvReg,
122 NVPtr pNv = NVPTR(pScrn);
123 + int restore = VGA_SR_MODE;
125 DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "NVDACRestore\n"));
127 + if(primary) restore |= VGA_SR_CMAP | VGA_SR_FONTS;
128 + else if(pNv->Chipset == NV_CHIP_RIVA_128)
129 + restore |= VGA_SR_CMAP;
130 pNv->riva.LoadStateExt(&pNv->riva, nvReg);
131 #if defined(__powerpc__)
132 - restoreFonts = FALSE;
133 + restore &= ~VGA_SR_FONTS;
135 - vgaHWRestore(pScrn, vgaReg, VGA_SR_CMAP | VGA_SR_MODE |
136 - (restoreFonts? VGA_SR_FONTS : 0));
137 + vgaHWRestore(pScrn, vgaReg, restore);
143 NVPtr pNv = NVPTR(pScrn);
144 DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "NVDACSave\n"));
145 - vgaHWSave(pScrn, vgaReg, VGA_SR_MODE | (saveFonts? VGA_SR_FONTS : 0));
147 +#if defined(__powerpc__)
151 + vgaHWSave(pScrn, vgaReg, VGA_SR_CMAP | VGA_SR_MODE |
152 + (saveFonts? VGA_SR_FONTS : 0));
153 pNv->riva.UnloadStateExt(&pNv->riva, nvReg);
155 + if((pNv->Chipset & 0x0ff0) == 0x0110)
156 + nvReg->crtcOwner = ((pNv->Chipset & 0x0fff) == 0x0112) ? 3 : 0;
159 #define DEPTH_SHIFT(val, w) ((val << (8 - w)) | (val >> ((w << 1) - 8)))
160 --- XFree86-4.2.0/xc/programs/Xserver/hw/xfree86/drivers/nv.orig/nv_dga.c Tue Jan 23 06:32:36 2001
161 +++ XFree86-4.2.0/xc/programs/Xserver/hw/xfree86/drivers/nv/nv_dga.c Sun Apr 14 15:59:41 2002
164 NVAdjustFrame(pScrn->pScreen->myNum, x, y, flags);
166 - while(pNv->riva.PCIO[0x3da] & 0x08);
167 - while(!(pNv->riva.PCIO[0x3da] & 0x08));
168 + while(VGA_RD08(pNv->riva.PCIO, 0x3da) & 0x08);
169 + while(!(VGA_RD08(pNv->riva.PCIO, 0x3da) & 0x08));
171 pNv->DGAViewportStatus = 0;
173 --- XFree86-4.2.0/xc/programs/Xserver/hw/xfree86/drivers/nv.orig/nv_driver.c Sat Jan 5 06:22:33 2002
174 +++ XFree86-4.2.0/xc/programs/Xserver/hw/xfree86/drivers/nv/nv_driver.c Sun Apr 14 15:59:41 2002
177 /* Supported chipsets */
178 static SymTabRec NVChipsets[] = {
179 - { NV_CHIP_RIVA128, "RIVA128" },
180 - { NV_CHIP_TNT, "RIVA TNT" },
181 - { NV_CHIP_TNT2, "RIVA TNT2" },
182 - { NV_CHIP_UTNT2, "RIVA TNT2 Ultra" },
183 - { NV_CHIP_VTNT2, "Vanta" },
184 - { NV_CHIP_UVTNT2, "RIVA TNT2 M64" },
185 - { NV_CHIP_ITNT2, "Aladdin TNT2" },
186 - { NV_CHIP_GEFORCE256, "GeForce 256" },
187 - { NV_CHIP_GEFORCEDDR, "GeForce DDR" },
188 - { NV_CHIP_QUADRO, "Quadro" },
189 - { NV_CHIP_GEFORCE2GTS, "GeForce2 GTS/Pro"},
190 - { NV_CHIP_GEFORCE2GTS_1,"GeForce2 Ti"},
191 - { NV_CHIP_GEFORCE2ULTRA,"GeForce2 Ultra"},
192 - { NV_CHIP_QUADRO2PRO, "Quadro2 Pro"},
193 - { NV_CHIP_GEFORCE2MX, "GeForce2 MX/MX 400"},
194 - { NV_CHIP_GEFORCE2MXDDR, "GeForce2 MX 100/200"},
195 - { NV_CHIP_0x0170, "0x0170" },
196 - { NV_CHIP_0x0171, "0x0171" },
197 - { NV_CHIP_0x0172, "0x0172" },
198 - { NV_CHIP_0x0173, "0x0173" },
199 - { NV_CHIP_0x0174, "0x0174" },
200 - { NV_CHIP_0x0175, "0x0175" },
201 - { NV_CHIP_0x0178, "0x0178" },
202 - { NV_CHIP_0x017A, "0x017A" },
203 - { NV_CHIP_0x017B, "0x017B" },
204 - { NV_CHIP_0x017C, "0x017C" },
205 - { NV_CHIP_IGEFORCE2, "GeForce2 Integrated"},
206 - { NV_CHIP_QUADRO2MXR, "Quadro2 MXR"},
207 - { NV_CHIP_GEFORCE2GO, "GeForce2 Go"},
208 - { NV_CHIP_GEFORCE3, "GeForce3"},
209 - { NV_CHIP_GEFORCE3_1, "GeForce3 Ti 200"},
210 - { NV_CHIP_GEFORCE3_2, "GeForce3 Ti 500"},
211 - { NV_CHIP_QUADRO_DDC, "Quadro DDC"},
212 - { NV_CHIP_0x0250, "0x0250"},
213 - { NV_CHIP_0x0258, "0x0258"},
214 + {NV_CHIP_RIVA_128, "RIVA 128"},
215 + {NV_CHIP_TNT, "RIVA TNT"},
216 + {NV_CHIP_TNT2, "RIVA TNT2/TNT2 Pro"},
217 + {NV_CHIP_UTNT2, "RIVA TNT2 Ultra"},
218 + {NV_CHIP_VTNT2, "Vanta"},
219 + {NV_CHIP_UVTNT2, "Riva TNT2 M64"},
220 + {NV_CHIP_ITNT2, "Aladdin TNT2"},
221 + {NV_CHIP_GEFORCE_256, "GeForce 256"},
222 + {NV_CHIP_GEFORCE_DDR, "GeForce DDR"},
223 + {NV_CHIP_QUADRO, "Quadro"},
224 + {NV_CHIP_GEFORCE2_MX, "GeForce2 MX/MX 400"},
225 + {NV_CHIP_GEFORCE2_MX_100, "GeForce2 MX 100/200"},
226 + {NV_CHIP_GEFORCE2_GO, "GeForce2 Go"},
227 + {NV_CHIP_QUADRO2_MXR, "Quadro2 MXR"},
228 + {NV_CHIP_GEFORCE2_GTS, "GeForce2 GTS/Pro"},
229 + {NV_CHIP_GEFORCE2_TI, "GeForce2 Ti"},
230 + {NV_CHIP_GEFORCE2_ULTRA, "GeForce2 Ultra"},
231 + {NV_CHIP_QUADRO2_PRO, "Quadro2 Pro"},
232 + {NV_CHIP_GEFORCE4_MX_460, "GeForce4 MX 460"},
233 + {NV_CHIP_GEFORCE4_MX_440, "GeForce4 MX 440"},
234 + {NV_CHIP_GEFORCE4_MX_420, "GeForce4 MX 420"},
235 + {NV_CHIP_GEFORCE4_440_GO, "GeForce4 440 Go"},
236 + {NV_CHIP_GEFORCE4_420_GO, "GeForce4 420 Go"},
237 + {NV_CHIP_GEFORCE4_420_GO_M32,"GeForce4 420 Go M32"},
238 + {NV_CHIP_QUADRO4_500XGL, "Quadro4 500XGL"},
239 + {NV_CHIP_GEFORCE4_440_GO_M64,"GeForce4 440 Go M64"},
240 + {NV_CHIP_QUADRO4_200, "Quadro4 200/400NVS"},
241 + {NV_CHIP_QUADRO4_550XGL, "Quadro4 550XGL"},
242 + {NV_CHIP_QUADRO4_500_GOGL, "Quadro4 GoGL"},
243 + {NV_CHIP_IGEFORCE2, "GeForce2 Integrated"},
244 + {NV_CHIP_GEFORCE3, "GeForce3"},
245 + {NV_CHIP_GEFORCE3_TI_200, "GeForce3 Ti 200"},
246 + {NV_CHIP_GEFORCE3_TI_500, "GeForce3 Ti 500"},
247 + {NV_CHIP_QUADRO_DCC, "Quadro DCC"},
248 + {NV_CHIP_GEFORCE4_TI_4600, "GeForce4 Ti 4600"},
249 + {NV_CHIP_GEFORCE4_TI_4400, "GeForce4 Ti 4400"},
250 + {NV_CHIP_GEFORCE4_TI_4200, "GeForce4 Ti 4200"},
251 + {NV_CHIP_QUADRO4_900XGL, "Quadro4 900 XGL"},
252 + {NV_CHIP_QUADRO4_750XGL, "Quadro4 750 XGL"},
253 + {NV_CHIP_QUADRO4_700XGL, "Quadro4 700 XGL"},
257 static PciChipsets NVPciChipsets[] = {
258 - { NV_CHIP_RIVA128, NV_CHIP_RIVA128, RES_SHARED_VGA },
259 - { NV_CHIP_TNT, NV_CHIP_TNT, RES_SHARED_VGA },
260 - { NV_CHIP_TNT2, NV_CHIP_TNT2, RES_SHARED_VGA },
261 - { NV_CHIP_UTNT2, NV_CHIP_UTNT2, RES_SHARED_VGA },
262 - { NV_CHIP_VTNT2, NV_CHIP_VTNT2, RES_SHARED_VGA },
263 - { NV_CHIP_UVTNT2, NV_CHIP_UVTNT2, RES_SHARED_VGA },
264 - { NV_CHIP_ITNT2, NV_CHIP_ITNT2, RES_SHARED_VGA },
265 - { NV_CHIP_GEFORCE256, NV_CHIP_GEFORCE256, RES_SHARED_VGA },
266 - { NV_CHIP_GEFORCEDDR, NV_CHIP_GEFORCEDDR, RES_SHARED_VGA },
267 - { NV_CHIP_QUADRO, NV_CHIP_QUADRO, RES_SHARED_VGA },
268 - { NV_CHIP_GEFORCE2GTS, NV_CHIP_GEFORCE2GTS, RES_SHARED_VGA },
269 - { NV_CHIP_GEFORCE2GTS_1, NV_CHIP_GEFORCE2GTS_1, RES_SHARED_VGA },
270 - { NV_CHIP_GEFORCE2ULTRA, NV_CHIP_GEFORCE2ULTRA, RES_SHARED_VGA },
271 - { NV_CHIP_QUADRO2PRO, NV_CHIP_QUADRO2PRO, RES_SHARED_VGA },
272 - { NV_CHIP_GEFORCE2MX, NV_CHIP_GEFORCE2MX, RES_SHARED_VGA },
273 - { NV_CHIP_GEFORCE2MXDDR, NV_CHIP_GEFORCE2MXDDR, RES_SHARED_VGA },
274 - { NV_CHIP_0x0170, NV_CHIP_0x0170, RES_SHARED_VGA },
275 - { NV_CHIP_0x0171, NV_CHIP_0x0171, RES_SHARED_VGA },
276 - { NV_CHIP_0x0172, NV_CHIP_0x0172, RES_SHARED_VGA },
277 - { NV_CHIP_0x0173, NV_CHIP_0x0173, RES_SHARED_VGA },
278 - { NV_CHIP_0x0174, NV_CHIP_0x0174, RES_SHARED_VGA },
279 - { NV_CHIP_0x0175, NV_CHIP_0x0175, RES_SHARED_VGA },
280 - { NV_CHIP_0x0178, NV_CHIP_0x0178, RES_SHARED_VGA },
281 - { NV_CHIP_0x017A, NV_CHIP_0x017A, RES_SHARED_VGA },
282 - { NV_CHIP_0x017B, NV_CHIP_0x017B, RES_SHARED_VGA },
283 - { NV_CHIP_0x017C, NV_CHIP_0x017C, RES_SHARED_VGA },
284 - { NV_CHIP_IGEFORCE2, NV_CHIP_IGEFORCE2, RES_SHARED_VGA },
285 - { NV_CHIP_QUADRO2MXR, NV_CHIP_QUADRO2MXR, RES_SHARED_VGA },
286 - { NV_CHIP_GEFORCE2GO, NV_CHIP_GEFORCE2GO, RES_SHARED_VGA },
287 - { NV_CHIP_GEFORCE3, NV_CHIP_GEFORCE3, RES_SHARED_VGA },
288 - { NV_CHIP_GEFORCE3_1, NV_CHIP_GEFORCE3_1, RES_SHARED_VGA },
289 - { NV_CHIP_GEFORCE3_2, NV_CHIP_GEFORCE3_2, RES_SHARED_VGA },
290 - { NV_CHIP_QUADRO_DDC, NV_CHIP_QUADRO_DDC, RES_SHARED_VGA },
291 - { NV_CHIP_0x0250, NV_CHIP_0x0250, RES_SHARED_VGA },
292 - { NV_CHIP_0x0258, NV_CHIP_0x0258, RES_SHARED_VGA },
293 - { -1, -1, RES_UNDEFINED }
294 + {NV_CHIP_RIVA_128, NV_CHIP_RIVA_128, RES_SHARED_VGA},
295 + {NV_CHIP_TNT, NV_CHIP_TNT, RES_SHARED_VGA},
296 + {NV_CHIP_TNT2, NV_CHIP_TNT2, RES_SHARED_VGA},
297 + {NV_CHIP_UTNT2, NV_CHIP_UTNT2, RES_SHARED_VGA},
298 + {NV_CHIP_VTNT2, NV_CHIP_VTNT2, RES_SHARED_VGA},
299 + {NV_CHIP_UVTNT2, NV_CHIP_UVTNT2, RES_SHARED_VGA},
300 + {NV_CHIP_ITNT2, NV_CHIP_ITNT2, RES_SHARED_VGA},
301 + {NV_CHIP_GEFORCE_256, NV_CHIP_GEFORCE_256, RES_SHARED_VGA},
302 + {NV_CHIP_GEFORCE_DDR, NV_CHIP_GEFORCE_DDR, RES_SHARED_VGA},
303 + {NV_CHIP_QUADRO, NV_CHIP_QUADRO, RES_SHARED_VGA},
304 + {NV_CHIP_GEFORCE2_MX, NV_CHIP_GEFORCE2_MX, RES_SHARED_VGA},
305 + {NV_CHIP_GEFORCE2_MX_100, NV_CHIP_GEFORCE2_MX_100, RES_SHARED_VGA},
306 + {NV_CHIP_GEFORCE2_GO, NV_CHIP_GEFORCE2_GO, RES_SHARED_VGA},
307 + {NV_CHIP_QUADRO2_MXR, NV_CHIP_QUADRO2_MXR, RES_SHARED_VGA},
308 + {NV_CHIP_GEFORCE2_GTS, NV_CHIP_GEFORCE2_GTS, RES_SHARED_VGA},
309 + {NV_CHIP_GEFORCE2_TI, NV_CHIP_GEFORCE2_TI, RES_SHARED_VGA},
310 + {NV_CHIP_GEFORCE2_ULTRA, NV_CHIP_GEFORCE2_ULTRA, RES_SHARED_VGA},
311 + {NV_CHIP_QUADRO2_PRO, NV_CHIP_QUADRO2_PRO, RES_SHARED_VGA},
312 + {NV_CHIP_GEFORCE4_MX_460, NV_CHIP_GEFORCE4_MX_460, RES_SHARED_VGA},
313 + {NV_CHIP_GEFORCE4_MX_440, NV_CHIP_GEFORCE4_MX_440, RES_SHARED_VGA},
314 + {NV_CHIP_GEFORCE4_MX_420, NV_CHIP_GEFORCE4_MX_420, RES_SHARED_VGA},
315 + {NV_CHIP_GEFORCE4_440_GO, NV_CHIP_GEFORCE4_440_GO, RES_SHARED_VGA},
316 + {NV_CHIP_GEFORCE4_420_GO, NV_CHIP_GEFORCE4_420_GO, RES_SHARED_VGA},
317 + {NV_CHIP_GEFORCE4_420_GO_M32,NV_CHIP_GEFORCE4_420_GO_M32,RES_SHARED_VGA},
318 + {NV_CHIP_QUADRO4_500XGL, NV_CHIP_QUADRO4_500XGL, RES_SHARED_VGA},
319 + {NV_CHIP_GEFORCE4_440_GO_M64,NV_CHIP_GEFORCE4_440_GO_M64,RES_SHARED_VGA},
320 + {NV_CHIP_QUADRO4_200, NV_CHIP_QUADRO4_200, RES_SHARED_VGA},
321 + {NV_CHIP_QUADRO4_550XGL, NV_CHIP_QUADRO4_550XGL, RES_SHARED_VGA},
322 + {NV_CHIP_QUADRO4_500_GOGL, NV_CHIP_QUADRO4_500_GOGL, RES_SHARED_VGA},
323 + {NV_CHIP_IGEFORCE2, NV_CHIP_IGEFORCE2, RES_SHARED_VGA},
324 + {NV_CHIP_GEFORCE3, NV_CHIP_GEFORCE3, RES_SHARED_VGA},
325 + {NV_CHIP_GEFORCE3_TI_200, NV_CHIP_GEFORCE3_TI_200, RES_SHARED_VGA},
326 + {NV_CHIP_GEFORCE3_TI_500, NV_CHIP_GEFORCE3_TI_500, RES_SHARED_VGA},
327 + {NV_CHIP_QUADRO_DCC, NV_CHIP_QUADRO_DCC, RES_SHARED_VGA},
328 + {NV_CHIP_GEFORCE4_TI_4600, NV_CHIP_GEFORCE4_TI_4600, RES_SHARED_VGA},
329 + {NV_CHIP_GEFORCE4_TI_4400, NV_CHIP_GEFORCE4_TI_4400, RES_SHARED_VGA},
330 + {NV_CHIP_GEFORCE4_TI_4200, NV_CHIP_GEFORCE4_TI_4200, RES_SHARED_VGA},
331 + {NV_CHIP_QUADRO4_900XGL, NV_CHIP_QUADRO4_900XGL, RES_SHARED_VGA},
332 + {NV_CHIP_QUADRO4_750XGL, NV_CHIP_QUADRO4_750XGL, RES_SHARED_VGA},
333 + {NV_CHIP_QUADRO4_700XGL, NV_CHIP_QUADRO4_700XGL, RES_SHARED_VGA},
334 + { -1, -1, RES_UNDEFINED }
338 @@ -179,13 +189,11 @@
363 { OPTION_ROTATE, "Rotate", OPTV_ANYSTR, {0}, FALSE },
364 { OPTION_VIDEO_KEY, "VideoKey", OPTV_INTEGER, {0}, FALSE },
365 { OPTION_FLAT_PANEL, "FlatPanel", OPTV_BOOLEAN, {0}, FALSE },
366 + { OPTION_CRTC_NUMBER, "CrtcNumber", OPTV_INTEGER, {0}, FALSE },
367 { -1, NULL, OPTV_NONE, {0}, FALSE }
372 static NVRamdacRec DacInit = {
373 FALSE, 0, 0, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL,
374 - 0, NULL, NULL, NULL, NULL, NULL
375 + 0, NULL, NULL, NULL, NULL
380 NVEnterVT(int scrnIndex, int flags)
382 ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
383 - NVPtr pNv = NVPTR(pScrn);
384 - vgaHWPtr hwp = VGAHWPTR(pScrn);
386 DEBUG(xf86DrvMsg(scrnIndex, X_INFO, "NVEnterVT\n"));
389 - pNv->riva.LockUnlock(&pNv->riva, 0);
390 if (!NVModeInit(pScrn, pScrn->currentMode))
392 NVAdjustFrame(scrnIndex, pScrn->frameX0, pScrn->frameY0, 0);
393 @@ -600,13 +606,11 @@
395 ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
396 NVPtr pNv = NVPTR(pScrn);
397 - vgaHWPtr hwp = VGAHWPTR(pScrn);
399 DEBUG(xf86DrvMsg(scrnIndex, X_INFO, "NVLeaveVT\n"));
402 pNv->riva.LockUnlock(&pNv->riva, 1);
408 NVCloseScreen(int scrnIndex, ScreenPtr pScreen)
410 ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
411 - vgaHWPtr hwp = VGAHWPTR(pScrn);
412 NVPtr pNv = NVPTR(pScrn);
414 DEBUG(xf86DrvMsg(scrnIndex, X_INFO, "NVCloseScreen\n"));
418 pNv->riva.LockUnlock(&pNv->riva, 1);
423 @@ -779,15 +781,13 @@
426 /* Internally used */
429 NVdoDDC(ScrnInfoPtr pScrn)
434 xf86MonPtr MonInfo = NULL;
436 - hwp = VGAHWPTR(pScrn);
441 /* if ((MonInfo = nvDoDDCVBE(pScrn))) return MonInfo; */
443 /* Enable access to extended registers */
445 pNv->riva.LockUnlock(&pNv->riva, 0);
446 /* Save the current state */
449 /* Restore previous state */
451 pNv->riva.LockUnlock(&pNv->riva, 1);
460 - if(pNv->Chipset == NV_CHIP_RIVA128) {
461 + if(pNv->Chipset == NV_CHIP_RIVA_128) {
462 xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
463 "The Riva 128 chipset does not support depth 16. "
464 "Using depth 15 instead\n");
465 @@ -1141,10 +1139,23 @@
466 (((pScrn->mask.blue >> pScrn->offset.blue) - 1) << pScrn->offset.blue);
469 - if (xf86ReturnOptValBool(pNv->Options, OPTION_FLAT_PANEL, FALSE)) {
470 - pNv->FlatPanel = TRUE;
471 - xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "using flat panel\n");
472 + if (xf86GetOptValBool(pNv->Options, OPTION_FLAT_PANEL, &(pNv->FlatPanel))) {
473 + xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "forcing %s usage\n",
474 + pNv->FlatPanel ? "DFP" : "CRTC");
476 + pNv->FlatPanel = -1; /* autodetect later */
479 + if (xf86GetOptValInteger(pNv->Options, OPTION_CRTC_NUMBER,
482 + if((pNv->forceCRTC < 0) || (pNv->forceCRTC > 1)) {
483 + pNv->forceCRTC = -1;
484 + xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
485 + "Invalid CRTC number. Must be 0 or 1\n");
487 + } else pNv->forceCRTC = -1;
490 if (pNv->pEnt->device->MemBase != 0) {
491 /* Require that the config file value matches one of the PCI values. */
492 @@ -1233,12 +1244,6 @@
496 - * fill riva structure etc.
498 - (*pNv->PreInit)(pScrn);
502 * If the user has specified the amount of memory in the XF86Config
503 * file, we respect that setting.
505 @@ -1258,42 +1263,6 @@
507 pNv->FbMapSize = pScrn->videoRam * 1024;
509 -#if !defined(__powerpc__)
510 - /* Read and print the Monitor DDC info */
511 - pScrn->monitor->DDC = NVdoDDC(pScrn);
516 - * This code was for testing. It will be removed as soon
517 - * as this is integrated into the common level.
519 - if ((!pScrn->monitor->nHsync || !pScrn->monitor->nVrefresh)
520 - && pScrn->monitor->DDC) {
522 - int h = (!pScrn->monitor->nHsync) ? 0 : -1;
523 - int v = (!pScrn->monitor->nVrefresh) ? 0 : -1;
524 - xf86MonPtr pMon = (xf86MonPtr)pScrn->monitor->DDC;
525 - for (i = 0; i < DET_TIMINGS; i++) {
526 - if (pMon->det_mon[i].type == DS_RANGES) {
528 - pScrn->monitor->hsync[h].lo
529 - = pMon->det_mon[i].section.ranges.min_h;
530 - pScrn->monitor->hsync[h++].hi
531 - = pMon->det_mon[i].section.ranges.max_h;
534 - pScrn->monitor->vrefresh[v].lo
535 - = pMon->det_mon[i].section.ranges.min_v;
536 - pScrn->monitor->vrefresh[v++].hi
537 - = pMon->det_mon[i].section.ranges.max_v;
541 - if (h != -1) pScrn->monitor->nHsync = h;
542 - if (v != -1) pScrn->monitor->nVrefresh = v;
546 * If the driver can do gamma correction, it should call xf86SetGamma()
548 @@ -1318,6 +1287,7 @@
553 pNv->FbUsableSize -= 128 * 1024;
556 @@ -1344,6 +1314,11 @@
557 clockRanges->interlaceAllowed = FALSE;
558 clockRanges->doubleScanAllowed = TRUE;
560 + if(pNv->FlatPanel == 1) {
561 + clockRanges->interlaceAllowed = FALSE;
562 + clockRanges->doubleScanAllowed = FALSE;
566 * xf86ValidateModes will check that the mode HTotal and VTotal values
567 * don't exceed the chipset's limit if pScrn->maxHValue and
568 @@ -1538,9 +1513,7 @@
572 - * Initialise a new mode. This is currently still using the old
573 - * "initialise struct, restore/write struct to HW" model. That could
575 + * Initialise a new mode.
579 @@ -1558,18 +1531,15 @@
581 pScrn->vtSema = TRUE;
583 - if ( pNv->ModeInit ) {
584 - if (!(*pNv->ModeInit)(pScrn, mode))
587 + if(!(*pNv->ModeInit)(pScrn, mode))
590 /* Program the registers */
591 vgaHWProtect(pScrn, TRUE);
592 vgaReg = &hwp->ModeReg;
593 nvReg = &pNv->ModeReg;
595 - if ( pNv->Restore )
596 - (*pNv->Restore)(pScrn, vgaReg, nvReg, FALSE);
597 + (*pNv->Restore)(pScrn, vgaReg, nvReg, FALSE);
599 #if X_BYTE_ORDER == X_BIG_ENDIAN
600 /* turn on LFB swapping */
601 @@ -1606,10 +1576,7 @@
602 DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "NVRestore\n"));
603 /* Only restore text mode fonts/text for the primary card */
604 vgaHWProtect(pScrn, TRUE);
606 - (*pNv->Restore)(pScrn, vgaReg, nvReg, TRUE);
608 - vgaHWRestore(pScrn, vgaReg, VGA_SR_MODE);
609 + (*pNv->Restore)(pScrn, vgaReg, nvReg, pNv->Primary);
610 vgaHWProtect(pScrn, FALSE);
613 @@ -1666,7 +1633,6 @@
616 /* Save the current state */
618 pNv->riva.LockUnlock(&pNv->riva, 0);
620 /* Initialise the first mode */
621 @@ -1897,12 +1863,6 @@
622 vgaRegPtr vgaReg = &pVga->SavedReg;
624 DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "NVSave\n"));
625 -#if defined(__powerpc__)
626 - /* The console driver will have to save the fonts, we can't */
627 - vgaHWSave(pScrn, vgaReg, VGA_SR_CMAP | VGA_SR_MODE);
629 - vgaHWSave(pScrn, vgaReg, VGA_SR_CMAP | VGA_SR_MODE | VGA_SR_FONTS);
631 - pNv->riva.UnloadStateExt(&pNv->riva, nvReg);
632 + (*pNv->Save)(pScrn, vgaReg, nvReg, pNv->Primary);
635 --- XFree86-4.2.0/xc/programs/Xserver/hw/xfree86/drivers/nv.orig/nv_local.h Sat Nov 4 03:46:12 2000
636 +++ XFree86-4.2.0/xc/programs/Xserver/hw/xfree86/drivers/nv/nv_local.h Sun Apr 14 15:59:41 2002
638 |* those rights set forth herein. *|
640 \***************************************************************************/
641 -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_local.h,v 1.6 2000/11/03 18:46:12 eich Exp $ */
642 +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_local.h,v 1.7 2002/01/25 21:56:06 tsi Exp $ */
644 #ifndef __NV_LOCAL_H__
645 #define __NV_LOCAL_H__
648 - * This file includes any environment or machine specific values to access the HW.
649 - * Put all affected includes, typdefs, etc. here so the riva_hw.* files can stay
650 - * generic in nature.
651 + * This file includes any environment or machine specific values to access the
652 + * HW. Put all affected includes, typdefs, etc. here so the riva_hw.* files
653 + * can stay generic in nature.
655 #include "xf86_ansic.h"
656 #include "compiler.h"
657 +#include "xf86_OSproc.h"
660 * Typedefs to force certain sized values.
662 typedef unsigned char U008;
663 typedef unsigned short U016;
664 typedef unsigned int U032;
667 - * HW access macros.
668 + * HW access macros. These assume memory-mapped I/O, and not normal I/O space.
670 -#include "xf86_OSproc.h"
671 -/* these assume memory-mapped I/O, and not normal I/O space */
672 #define NV_WR08(p,i,d) MMIO_OUT8((volatile pointer)(p), (i), (d))
673 #define NV_RD08(p,i) MMIO_IN8((volatile pointer)(p), (i))
674 #define NV_WR16(p,i,d) MMIO_OUT16((volatile pointer)(p), (i), (d))
675 #define NV_RD16(p,i) MMIO_IN16((volatile pointer)(p), (i))
676 #define NV_WR32(p,i,d) MMIO_OUT32((volatile pointer)(p), (i), (d))
677 #define NV_RD32(p,i) MMIO_IN32((volatile pointer)(p), (i))
680 +/* VGA I/O is now always done through MMIO */
681 #define VGA_WR08(p,i,d) NV_WR08(p,i,d)
682 #define VGA_RD08(p,i) NV_RD08(p,i)
684 -#define VGA_WR08(p,i,d) outb(i,d)
685 -#define VGA_RD08(p,i) inb(i)
687 -#endif /* __NV_LOCAL_H__ */
689 +#endif /* __NV_LOCAL_H__ */
690 --- XFree86-4.2.0/xc/programs/Xserver/hw/xfree86/drivers/nv.orig/nv_proto.h Wed Mar 28 10:17:43 2001
691 +++ XFree86-4.2.0/xc/programs/Xserver/hw/xfree86/drivers/nv/nv_proto.h Sun Apr 14 15:59:41 2002
694 Bool NVSwitchMode(int scrnIndex, DisplayModePtr mode, int flags);
695 void NVAdjustFrame(int scrnIndex, int x, int y, int flags);
696 +xf86MonPtr NVdoDDC(ScrnInfoPtr pScrn);
700 void NVRamdacInit(ScrnInfoPtr pScrn);
701 --- XFree86-4.2.0/xc/programs/Xserver/hw/xfree86/drivers/nv.orig/nv_setup.c Wed Oct 31 04:38:29 2001
702 +++ XFree86-4.2.0/xc/programs/Xserver/hw/xfree86/drivers/nv/nv_setup.c Sun Apr 14 15:59:41 2002
704 return (VGA_RD08(pNv->riva.PDIO, VGA_DAC_DATA));
708 +NVIsConnected (ScrnInfoPtr pScrn, Bool second)
710 + NVPtr pNv = NVPTR(pScrn);
711 + volatile U032 *PRAMDAC = pNv->riva.PRAMDAC0;
712 + CARD32 reg52C, reg608;
715 + if(second) PRAMDAC += 0x800;
717 + reg52C = PRAMDAC[0x052C/4];
718 + reg608 = PRAMDAC[0x0608/4];
720 + PRAMDAC[0x0608/4] = reg608 & ~0x00010000;
722 + PRAMDAC[0x052C/4] = reg52C & 0x0000FEEE;
724 + PRAMDAC[0x052C/4] |= 1;
726 + pNv->riva.PRAMDAC0[0x0610/4] = 0x94050140;
727 + pNv->riva.PRAMDAC0[0x0608/4] |= 0x00001000;
731 + present = (PRAMDAC[0x0608/4] & (1 << 28)) ? TRUE : FALSE;
733 + pNv->riva.PRAMDAC0[0x0608/4] &= 0x0000EFFF;
735 + PRAMDAC[0x052C/4] = reg52C;
736 + PRAMDAC[0x0608/4] = reg608;
742 +NVOverrideCRTC(ScrnInfoPtr pScrn)
744 + NVPtr pNv = NVPTR(pScrn);
746 + xf86DrvMsg(pScrn->scrnIndex, X_INFO,
747 + "Detected CRTC controller %i being used\n",
748 + pNv->SecondCRTC ? 1 : 0);
750 + if(pNv->forceCRTC != -1) {
751 + xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
752 + "Forcing usage of CRTC %i\n", pNv->forceCRTC);
753 + pNv->SecondCRTC = pNv->forceCRTC;
758 +NVIsSecond (ScrnInfoPtr pScrn)
760 + NVPtr pNv = NVPTR(pScrn);
762 + if(pNv->FlatPanel == 1) {
763 + switch(pNv->Chipset) {
764 + case NV_CHIP_GEFORCE4_440_GO:
765 + case NV_CHIP_GEFORCE4_440_GO_M64:
766 + case NV_CHIP_GEFORCE4_420_GO:
767 + case NV_CHIP_GEFORCE4_420_GO_M32:
768 + case NV_CHIP_QUADRO4_500_GOGL:
769 + pNv->SecondCRTC = TRUE;
772 + pNv->SecondCRTC = FALSE;
776 + if(NVIsConnected(pScrn, 0)) {
777 + if(pNv->riva.PRAMDAC0[0x0000052C/4] & 0x100)
778 + pNv->SecondCRTC = TRUE;
780 + pNv->SecondCRTC = FALSE;
782 + if (NVIsConnected(pScrn, 1)) {
783 + if(pNv->riva.PRAMDAC0[0x0000252C/4] & 0x100)
784 + pNv->SecondCRTC = TRUE;
786 + pNv->SecondCRTC = FALSE;
787 + } else /* default */
788 + pNv->SecondCRTC = FALSE;
791 + NVOverrideCRTC(pScrn);
795 NVCommonSetup(ScrnInfoPtr pScrn)
797 DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "- Regbase %x\n", regBase));
798 DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "- riva %x\n", &pNv->riva));
800 - pNv->PreInit = NVRamdacInit;
801 pNv->Save = NVDACSave;
802 pNv->Restore = NVDACRestore;
803 pNv->ModeInit = NVDACInit;
806 mmioFlags = VIDMEM_MMIO | VIDMEM_READSIDEEFFECT;
808 - pNv->riva.PRAMDAC = xf86MapPciMem(pScrn->scrnIndex, mmioFlags, pNv->PciTag,
809 + pNv->riva.PRAMDAC0 = xf86MapPciMem(pScrn->scrnIndex, mmioFlags, pNv->PciTag,
810 regBase+0x00680000, 0x00003000);
811 - DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "- PRAMDAC %x\n", pNv->riva.PRAMDAC));
812 + DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "- PRAMDAC %x\n", pNv->riva.PRAMDAC0));
813 pNv->riva.PFB = xf86MapPciMem(pScrn->scrnIndex, mmioFlags, pNv->PciTag,
814 regBase+0x00100000, 0x00001000);
815 DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "- PFB %x\n", pNv->riva.PFB));
816 @@ -245,22 +330,88 @@
817 * These registers are read/write as 8 bit values. Probably have to map
820 - pNv->riva.PCIO = (U008 *)xf86MapPciMem(pScrn->scrnIndex, mmioFlags,
821 + pNv->riva.PCIO0 = (U008 *)xf86MapPciMem(pScrn->scrnIndex, mmioFlags,
822 pNv->PciTag, regBase+0x00601000,
824 - pNv->riva.PDIO = (U008 *)xf86MapPciMem(pScrn->scrnIndex, mmioFlags,
826 + pNv->riva.PDIO0 = (U008 *)xf86MapPciMem(pScrn->scrnIndex, mmioFlags,
827 pNv->PciTag, regBase+0x00681000,
830 pNv->riva.PVIO = (U008 *)xf86MapPciMem(pScrn->scrnIndex, mmioFlags,
831 pNv->PciTag, regBase+0x000C0000,
835 + if(pNv->FlatPanel == -1) {
836 + switch(pNv->Chipset) {
837 + case NV_CHIP_GEFORCE4_440_GO:
838 + case NV_CHIP_GEFORCE4_440_GO_M64:
839 + case NV_CHIP_GEFORCE4_420_GO:
840 + case NV_CHIP_GEFORCE4_420_GO_M32:
841 + case NV_CHIP_QUADRO4_500_GOGL:
842 + case NV_CHIP_GEFORCE2_GO:
843 + xf86DrvMsg(pScrn->scrnIndex, X_PROBED,
844 + "On a laptop. Assuming Digital Flat Panel\n");
845 + pNv->FlatPanel = 1;
852 + switch(pNv->Chipset & 0x0ff0) {
854 + if(pNv->Chipset == NV_CHIP_GEFORCE2_GO)
855 + pNv->SecondCRTC = TRUE;
856 +#if defined(__powerpc__)
857 + else if(pNv->FlatPanel == 1)
858 + pNv->SecondCRTC = TRUE;
860 + NVOverrideCRTC(pScrn);
870 + if(pNv->SecondCRTC) {
871 + pNv->riva.PCIO = pNv->riva.PCIO0 + 0x2000;
872 + pNv->riva.PCRTC = pNv->riva.PCRTC0 + 0x800;
873 + pNv->riva.PRAMDAC = pNv->riva.PRAMDAC0 + 0x800;
874 + pNv->riva.PDIO = pNv->riva.PDIO0 + 0x2000;
876 + pNv->riva.PCIO = pNv->riva.PCIO0;
877 + pNv->riva.PCRTC = pNv->riva.PCRTC0;
878 + pNv->riva.PRAMDAC = pNv->riva.PRAMDAC0;
879 + pNv->riva.PDIO = pNv->riva.PDIO0;
884 pNv->Dac.maxPixelClock = pNv->riva.MaxVClockFreqKHz;
886 - vgaHWUnlock(VGAHWPTR(pScrn));
887 pNv->riva.LockUnlock(&pNv->riva, 0);
889 + NVRamdacInit(pScrn);
891 +#if !defined(__powerpc__)
892 + /* Read and print the Monitor DDC info */
893 + pScrn->monitor->DDC = NVdoDDC(pScrn);
895 + if(pNv->FlatPanel == -1) {
896 + pNv->FlatPanel = 0;
897 + if(pScrn->monitor->DDC) {
898 + xf86MonPtr ddc = (xf86MonPtr)pScrn->monitor->DDC;
900 + if(ddc->features.input_type) {
901 + pNv->FlatPanel = 1;
902 + xf86DrvMsg(pScrn->scrnIndex, X_PROBED,
903 + "autodetected Digital Flat Panel\n");
907 + pNv->riva.flatPanel = (pNv->FlatPanel > 0) ? TRUE : FALSE;
912 frameBase+0x00C00000, 0x00008000);
914 NVCommonSetup(pScrn);
915 + pNv->riva.PCRTC = pNv->riva.PCRTC0 = pNv->riva.PGRAPH;
919 @@ -307,11 +459,12 @@
920 mmioFlags = VIDMEM_MMIO | VIDMEM_READSIDEEFFECT;
921 pNv->riva.PRAMIN = xf86MapPciMem(pScrn->scrnIndex, mmioFlags, pNv->PciTag,
922 regBase+0x00710000, 0x00010000);
923 - pNv->riva.PCRTC = xf86MapPciMem(pScrn->scrnIndex, mmioFlags, pNv->PciTag,
924 + pNv->riva.PCRTC0 = xf86MapPciMem(pScrn->scrnIndex, mmioFlags, pNv->PciTag,
925 regBase+0x00600000, 0x00001000);
927 NVCommonSetup(pScrn);
931 NV10Setup(ScrnInfoPtr pScrn)
933 @@ -322,14 +475,11 @@
934 DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "NV10Setup\n"));
936 pNv->riva.Architecture = 0x10;
938 - * Map chip-specific memory-mapped registers. This MUST be done in the OS specific driver code.
940 mmioFlags = VIDMEM_MMIO | VIDMEM_READSIDEEFFECT;
941 pNv->riva.PRAMIN = xf86MapPciMem(pScrn->scrnIndex, mmioFlags, pNv->PciTag,
942 regBase+0x00710000, 0x00010000);
943 - pNv->riva.PCRTC = xf86MapPciMem(pScrn->scrnIndex, mmioFlags, pNv->PciTag,
944 - regBase+0x00600000, 0x00001000);
945 + pNv->riva.PCRTC0 = xf86MapPciMem(pScrn->scrnIndex, mmioFlags, pNv->PciTag,
946 + regBase+0x00600000, 0x00003000);
948 NVCommonSetup(pScrn);
950 @@ -341,18 +491,14 @@
951 CARD32 regBase = pNv->IOAddress;
954 - DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "NV10Setup\n"));
955 + DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "NV20Setup\n"));
957 pNv->riva.Architecture = 0x20;
959 - * Map chip-specific memory-mapped registers. This MUST be done in the OS sp
962 mmioFlags = VIDMEM_MMIO | VIDMEM_READSIDEEFFECT;
963 pNv->riva.PRAMIN = xf86MapPciMem(pScrn->scrnIndex, mmioFlags, pNv->PciTag,
964 regBase+0x00710000, 0x00010000);
965 - pNv->riva.PCRTC = xf86MapPciMem(pScrn->scrnIndex, mmioFlags, pNv->PciTag,
966 - regBase+0x00600000, 0x00001000);
967 + pNv->riva.PCRTC0 = xf86MapPciMem(pScrn->scrnIndex, mmioFlags, pNv->PciTag,
968 + regBase+0x00600000, 0x00003000);
970 NVCommonSetup(pScrn);
972 --- XFree86-4.2.0/xc/programs/Xserver/hw/xfree86/drivers/nv.orig/nv_type.h Fri Dec 7 09:09:56 2001
973 +++ XFree86-4.2.0/xc/programs/Xserver/hw/xfree86/drivers/nv/nv_type.h Sun Apr 14 15:59:41 2002
975 void (*SetCursorColors)(ScrnInfoPtr, int, int);
977 void (*LoadPalette)(ScrnInfoPtr, int, int*, LOCO*, VisualPtr);
978 - void (*PreInit)(ScrnInfoPtr);
979 void (*Save)(ScrnInfoPtr, vgaRegPtr, NVRegPtr, Bool);
980 void (*Restore)(ScrnInfoPtr, vgaRegPtr, NVRegPtr, Bool);
981 Bool (*ModeInit)(ScrnInfoPtr, DisplayModePtr);
985 int DGAViewportStatus;
986 - void (*PreInit)(ScrnInfoPtr pScrn);
987 void (*Save)(ScrnInfoPtr, vgaRegPtr, NVRegPtr, Bool);
988 void (*Restore)(ScrnInfoPtr, vgaRegPtr, NVRegPtr, Bool);
989 Bool (*ModeInit)(ScrnInfoPtr, DisplayModePtr);
991 void (*VideoTimerCallback)(ScrnInfoPtr, Time);
992 XF86VideoAdaptorPtr overlayAdaptor;
998 OptionInfoPtr Options;
1001 @@ -127,40 +127,46 @@
1003 int RivaGetConfig(NVPtr);
1005 -#define NV_CHIP_RIVA128 ((PCI_VENDOR_NVIDIA_SGS << 16)| PCI_CHIP_RIVA128)
1006 -#define NV_CHIP_TNT ((PCI_VENDOR_NVIDIA << 16)| PCI_CHIP_TNT)
1007 -#define NV_CHIP_TNT2 ((PCI_VENDOR_NVIDIA << 16)| PCI_CHIP_TNT2)
1008 -#define NV_CHIP_UTNT2 ((PCI_VENDOR_NVIDIA << 16)| PCI_CHIP_UTNT2)
1009 -#define NV_CHIP_VTNT2 ((PCI_VENDOR_NVIDIA << 16)| PCI_CHIP_VTNT2)
1010 -#define NV_CHIP_UVTNT2 ((PCI_VENDOR_NVIDIA << 16)| PCI_CHIP_UVTNT2)
1011 -#define NV_CHIP_ITNT2 ((PCI_VENDOR_NVIDIA << 16)| PCI_CHIP_ITNT2)
1012 -#define NV_CHIP_GEFORCE256 ((PCI_VENDOR_NVIDIA << 16)| PCI_CHIP_GEFORCE256)
1013 -#define NV_CHIP_GEFORCEDDR ((PCI_VENDOR_NVIDIA << 16)| PCI_CHIP_GEFORCEDDR)
1014 -#define NV_CHIP_QUADRO ((PCI_VENDOR_NVIDIA << 16)| PCI_CHIP_QUADRO)
1015 -#define NV_CHIP_GEFORCE2MX ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_GEFORCE2MX)
1016 -#define NV_CHIP_GEFORCE2MXDDR ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_GEFORCE2MXDDR)
1017 -#define NV_CHIP_IGEFORCE2 ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_IGEFORCE2)
1018 -#define NV_CHIP_0x0170 ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_0x0170)
1019 -#define NV_CHIP_0x0171 ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_0x0171)
1020 -#define NV_CHIP_0x0172 ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_0x0172)
1021 -#define NV_CHIP_0x0173 ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_0x0173)
1022 -#define NV_CHIP_0x0174 ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_0x0174)
1023 -#define NV_CHIP_0x0175 ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_0x0175)
1024 -#define NV_CHIP_0x0178 ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_0x0178)
1025 -#define NV_CHIP_0x017A ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_0x017A)
1026 -#define NV_CHIP_0x017B ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_0x017B)
1027 -#define NV_CHIP_0x017C ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_0x017C)
1028 -#define NV_CHIP_QUADRO2MXR ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_QUADRO2MXR)
1029 -#define NV_CHIP_GEFORCE2GO ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_GEFORCE2GO)
1030 -#define NV_CHIP_GEFORCE2GTS ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_GEFORCE2GTS)
1031 -#define NV_CHIP_GEFORCE2GTS_1 ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_GEFORCE2GTS_1)
1032 -#define NV_CHIP_GEFORCE2ULTRA ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_GEFORCE2ULTRA)
1033 -#define NV_CHIP_QUADRO2PRO ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_QUADRO2PRO)
1034 -#define NV_CHIP_GEFORCE3 ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_GEFORCE3)
1035 -#define NV_CHIP_GEFORCE3_1 ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_GEFORCE3_1)
1036 -#define NV_CHIP_GEFORCE3_2 ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_GEFORCE3_2)
1037 -#define NV_CHIP_QUADRO_DDC ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_QUADRO_DDC)
1038 -#define NV_CHIP_0x0250 ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_0x0250)
1039 -#define NV_CHIP_0x0258 ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_0x0258)
1040 +#define NV_CHIP_RIVA_128 ((PCI_VENDOR_NVIDIA_SGS << 16)| PCI_CHIP_RIVA128)
1041 +#define NV_CHIP_TNT ((PCI_VENDOR_NVIDIA << 16)| PCI_CHIP_TNT)
1042 +#define NV_CHIP_TNT2 ((PCI_VENDOR_NVIDIA << 16)| PCI_CHIP_TNT2)
1043 +#define NV_CHIP_UTNT2 ((PCI_VENDOR_NVIDIA << 16)| PCI_CHIP_UTNT2)
1044 +#define NV_CHIP_VTNT2 ((PCI_VENDOR_NVIDIA << 16)| PCI_CHIP_VTNT2)
1045 +#define NV_CHIP_UVTNT2 ((PCI_VENDOR_NVIDIA << 16)| PCI_CHIP_UVTNT2)
1046 +#define NV_CHIP_ITNT2 ((PCI_VENDOR_NVIDIA << 16)| PCI_CHIP_ITNT2)
1047 +#define NV_CHIP_GEFORCE_256 ((PCI_VENDOR_NVIDIA << 16)| PCI_CHIP_GEFORCE_256)
1048 +#define NV_CHIP_GEFORCE_DDR ((PCI_VENDOR_NVIDIA << 16)| PCI_CHIP_GEFORCE_DDR)
1049 +#define NV_CHIP_QUADRO ((PCI_VENDOR_NVIDIA << 16)| PCI_CHIP_QUADRO)
1050 +#define NV_CHIP_GEFORCE2_MX ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_GEFORCE2_MX)
1051 +#define NV_CHIP_GEFORCE2_MX_100 ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_GEFORCE2_MX_100)
1052 +#define NV_CHIP_QUADRO2_MXR ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_QUADRO2_MXR)
1053 +#define NV_CHIP_GEFORCE2_GO ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_GEFORCE2_GO)
1054 +#define NV_CHIP_GEFORCE2_GTS ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_GEFORCE2_GTS)
1055 +#define NV_CHIP_GEFORCE2_TI ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_GEFORCE2_TI)
1056 +#define NV_CHIP_GEFORCE2_ULTRA ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_GEFORCE2_ULTRA)
1057 +#define NV_CHIP_QUADRO2_PRO ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_QUADRO2_PRO)
1058 +#define NV_CHIP_GEFORCE4_MX_460 ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_GEFORCE4_MX_460)
1059 +#define NV_CHIP_GEFORCE4_MX_440 ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_GEFORCE4_MX_440)
1060 +#define NV_CHIP_GEFORCE4_MX_420 ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_GEFORCE4_MX_420)
1061 +#define NV_CHIP_GEFORCE4_440_GO ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_GEFORCE4_440_GO)
1062 +#define NV_CHIP_GEFORCE4_420_GO ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_GEFORCE4_420_GO)
1063 +#define NV_CHIP_GEFORCE4_420_GO_M32 ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_GEFORCE4_420_GO_M32)
1064 +#define NV_CHIP_QUADRO4_500XGL ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_QUADRO4_500XGL)
1065 +#define NV_CHIP_GEFORCE4_440_GO_M64 ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_GEFORCE4_440_GO_M64)
1066 +#define NV_CHIP_QUADRO4_200 ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_QUADRO4_200)
1067 +#define NV_CHIP_QUADRO4_550XGL ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_QUADRO4_550XGL)
1068 +#define NV_CHIP_QUADRO4_500_GOGL ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_QUADRO4_500_GOGL)
1069 +#define NV_CHIP_IGEFORCE2 ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_IGEFORCE2)
1070 +#define NV_CHIP_GEFORCE3 ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_GEFORCE3)
1071 +#define NV_CHIP_GEFORCE3_TI_200 ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_GEFORCE3_TI_200)
1072 +#define NV_CHIP_GEFORCE3_TI_500 ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_GEFORCE3_TI_500)
1073 +#define NV_CHIP_QUADRO_DCC ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_QUADRO_DCC)
1074 +#define NV_CHIP_GEFORCE4_TI_4600 ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_GEFORCE4_TI_4600)
1075 +#define NV_CHIP_GEFORCE4_TI_4400 ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_GEFORCE4_TI_4400)
1076 +#define NV_CHIP_GEFORCE4_TI_4200 ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_GEFORCE4_TI_4200)
1077 +#define NV_CHIP_QUADRO4_900XGL ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_QUADRO4_900XGL)
1078 +#define NV_CHIP_QUADRO4_750XGL ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_QUADRO4_750XGL)
1079 +#define NV_CHIP_QUADRO4_700XGL ((PCI_VENDOR_NVIDIA << 16) | PCI_CHIP_QUADRO4_700XGL)
1082 #endif /* __NV_STRUCT_H__ */
1083 --- XFree86-4.2.0/xc/programs/Xserver/hw/xfree86/drivers/nv.orig/nvreg.h Fri Nov 12 11:12:41 1999
1084 +++ XFree86-4.2.0/xc/programs/Xserver/hw/xfree86/drivers/nv/nvreg.h Sun Apr 14 15:59:41 2002
1085 @@ -164,18 +164,9 @@
1086 (PDAC_Write(INDEX_HI,((NV_PDAC_EXT_##reg) >> 8) & 0xff)),\
1087 (PDAC_Write(INDEX_DATA,(value))))
1089 -#define CRTC_Write(index,value) outb(0x3d4,(index));outb(0x3d5,value)
1090 -#define CRTC_Read(index) (outb(0x3d4,index),inb(0x3d5))
1092 -#define PCRTC_Write(index,value) CRTC_Write(NV_PCRTC_##index,value)
1093 -#define PCRTC_Read(index) CRTC_Read(NV_PCRTC_##index)
1095 #define PCRTC_Def(mask,value) DEVICE_DEF(PCRTC,mask,value)
1096 #define PCRTC_Val(mask,value) DEVICE_VALUE(PCRTC,mask,value)
1097 #define PCRTC_Mask(mask) DEVICE_MASK(PCRTC,mask)
1099 -#define SR_Write(index,value) outb(0x3c4,(index));outb(0x3c5,value)
1100 -#define SR_Read(index) (outb(0x3c4,index),inb(0x3c5))
1103 /* These are the variables which actually point at the register blocks */
1104 --- XFree86-4.2.0/xc/programs/Xserver/hw/xfree86/drivers/nv.orig/riva_hw.c Tue Dec 18 07:17:55 2001
1105 +++ XFree86-4.2.0/xc/programs/Xserver/hw/xfree86/drivers/nv/riva_hw.c Sun Apr 14 15:59:41 2002
1108 return ((chip->Rop->FifoFree < chip->FifoEmptyCount) || (chip->PGRAPH[0x00000700/4] & 0x01));
1110 -static void nv3LockUnlock
1111 +static void vgaLockUnlock
1118 - VGA_WR08(chip->PVIO, 0x3C4, 0x06);
1119 - VGA_WR08(chip->PVIO, 0x3C5, LockUnlock ? 0x99 : 0x57);
1121 + VGA_WR08(chip->PCIO, 0x3D4, 0x11);
1122 + cr11 = VGA_RD08(chip->PCIO, 0x3D5);
1123 + if(Lock) cr11 |= 0x80;
1124 + else cr11 &= ~0x80;
1125 + VGA_WR08(chip->PCIO, 0x3D5, cr11);
1127 -static void nv4LockUnlock
1129 +static void nv3LockUnlock
1136 - VGA_WR08(chip->PCIO, 0x3D4, 0x1F);
1137 - VGA_WR08(chip->PCIO, 0x3D5, LockUnlock ? 0x99 : 0x57);
1138 + VGA_WR08(chip->PVIO, 0x3C4, 0x06);
1139 + VGA_WR08(chip->PVIO, 0x3C5, Lock ? 0x99 : 0x57);
1140 + vgaLockUnlock(chip, Lock);
1142 -static void nv10LockUnlock
1143 +static void nv4LockUnlock
1150 VGA_WR08(chip->PCIO, 0x3D4, 0x1F);
1151 - VGA_WR08(chip->PCIO, 0x3D5, LockUnlock ? 0x99 : 0x57);
1152 + VGA_WR08(chip->PCIO, 0x3D5, Lock ? 0x99 : 0x57);
1153 + vgaLockUnlock(chip, Lock);
1156 static int ShowHideCursor
1160 nv3_sim_state sim_data;
1161 unsigned int M, N, P, pll, MClk;
1163 - pll = chip->PRAMDAC[0x00000504/4];
1164 + pll = chip->PRAMDAC0[0x00000504/4];
1165 M = (pll >> 0) & 0xFF; N = (pll >> 8) & 0xFF; P = (pll >> 16) & 0x0F;
1166 MClk = (N * chip->CrystalFreqKHz / M) >> P;
1167 sim_data.pix_bpp = (char)pixelDepth;
1168 @@ -788,10 +794,10 @@
1169 nv4_sim_state sim_data;
1170 unsigned int M, N, P, pll, MClk, NVClk, cfg1;
1172 - pll = chip->PRAMDAC[0x00000504/4];
1173 + pll = chip->PRAMDAC0[0x00000504/4];
1174 M = (pll >> 0) & 0xFF; N = (pll >> 8) & 0xFF; P = (pll >> 16) & 0x0F;
1175 MClk = (N * chip->CrystalFreqKHz / M) >> P;
1176 - pll = chip->PRAMDAC[0x00000500/4];
1177 + pll = chip->PRAMDAC0[0x00000500/4];
1178 M = (pll >> 0) & 0xFF; N = (pll >> 8) & 0xFF; P = (pll >> 16) & 0x0F;
1179 NVClk = (N * chip->CrystalFreqKHz / M) >> P;
1180 cfg1 = chip->PFB[0x00000204/4];
1181 @@ -1049,10 +1055,10 @@
1182 nv10_sim_state sim_data;
1183 unsigned int M, N, P, pll, MClk, NVClk, cfg1;
1185 - pll = chip->PRAMDAC[0x00000504/4];
1186 + pll = chip->PRAMDAC0[0x00000504/4];
1187 M = (pll >> 0) & 0xFF; N = (pll >> 8) & 0xFF; P = (pll >> 16) & 0x0F;
1188 MClk = (N * chip->CrystalFreqKHz / M) >> P;
1189 - pll = chip->PRAMDAC[0x00000500/4];
1190 + pll = chip->PRAMDAC0[0x00000500/4];
1191 M = (pll >> 0) & 0xFF; N = (pll >> 8) & 0xFF; P = (pll >> 16) & 0x0F;
1192 NVClk = (N * chip->CrystalFreqKHz / M) >> P;
1193 cfg1 = chip->PFB[0x00000204/4];
1194 @@ -1078,6 +1084,66 @@
1198 +static void nForceUpdateArbitrationSettings
1201 + unsigned pixelDepth,
1204 + RIVA_HW_INST *chip
1207 + nv10_fifo_info fifo_data;
1208 + nv10_sim_state sim_data;
1209 + unsigned int M, N, P, pll, MClk, NVClk;
1210 + unsigned int uMClkPostDiv, memctrl;
1212 + uMClkPostDiv = (pciReadLong(pciTag(0, 0, 3), 0x6C) >> 8) & 0xf;
1213 + if(!uMClkPostDiv) uMClkPostDiv = 4;
1214 + MClk = 400000 / uMClkPostDiv;
1216 + pll = chip->PRAMDAC0[0x00000500/4];
1217 + M = (pll >> 0) & 0xFF; N = (pll >> 8) & 0xFF; P = (pll >> 16) & 0x0F;
1218 + NVClk = (N * chip->CrystalFreqKHz / M) >> P;
1219 + sim_data.pix_bpp = (char)pixelDepth;
1220 + sim_data.enable_video = 0;
1221 + sim_data.enable_mp = 0;
1222 + sim_data.memory_type = (pciReadLong(pciTag(0, 0, 1), 0x7C) >> 12) & 1;
1223 + sim_data.memory_width = 64;
1225 + memctrl = pciReadLong(pciTag(0, 0, 3), 0x00) >> 16;
1227 + if((memctrl == 0x1A9) || (memctrl == 0x1AB)) {
1230 + dimm[0] = (pciReadLong(pciTag(0, 0, 2), 0x40) >> 8) & 0x4F;
1231 + dimm[1] = (pciReadLong(pciTag(0, 0, 2), 0x44) >> 8) & 0x4F;
1232 + dimm[2] = (pciReadLong(pciTag(0, 0, 2), 0x48) >> 8) & 0x4F;
1234 + if((dimm[0] + dimm[1]) != dimm[2]) {
1235 + ErrorF("WARNING: "
1236 + "your nForce DIMMs are not arranged in optimal banks!\n");
1240 + sim_data.mem_latency = 3;
1241 + sim_data.mem_aligned = 1;
1242 + sim_data.mem_page_miss = 10;
1243 + sim_data.gr_during_vid = 0;
1244 + sim_data.pclk_khz = VClk;
1245 + sim_data.mclk_khz = MClk;
1246 + sim_data.nvclk_khz = NVClk;
1247 + nv10CalcArbitration(&fifo_data, &sim_data);
1248 + if (fifo_data.valid)
1250 + int b = fifo_data.graphics_burst_size >> 4;
1252 + while (b >>= 1) (*burst)++;
1253 + *lwm = fifo_data.graphics_lwm >> 3;
1258 /****************************************************************************\
1260 * RIVA Mode State Routines *
1261 @@ -1211,11 +1277,19 @@
1265 - nv10UpdateArbitrationSettings(VClk,
1266 + if(chip->Chipset == NV_CHIP_IGEFORCE2) {
1267 + nForceUpdateArbitrationSettings(VClk,
1269 + &(state->arbitration0),
1270 + &(state->arbitration1),
1273 + nv10UpdateArbitrationSettings(VClk,
1275 &(state->arbitration0),
1276 &(state->arbitration1),
1279 state->cursor0 = 0x80 | (chip->CursorStart >> 17);
1280 state->cursor1 = (chip->CursorStart >> 11) << 2;
1281 state->cursor2 = chip->CursorStart >> 24;
1282 @@ -1272,18 +1346,10 @@
1285 LOAD_FIXED_STATE(nv4,FIFO);
1287 - chip->Tri05 = (RivaTexturedTriangle05 *)&(chip->FIFO[0x0000E000/4]);
1292 - * Initialize state for the RivaTriangle3D05 routines.
1294 - LOAD_FIXED_STATE(nv10tri05,PGRAPH);
1295 LOAD_FIXED_STATE(nv10,FIFO);
1297 - chip->Tri05 = (RivaTexturedTriangle05 *)&(chip->FIFO[0x0000E000/4]);
1301 @@ -1316,19 +1382,16 @@
1303 LOAD_FIXED_STATE_15BPP(nv3,PRAMIN);
1304 LOAD_FIXED_STATE_15BPP(nv3,PGRAPH);
1305 - chip->Tri03 = (RivaTexturedTriangle03 *)&(chip->FIFO[0x0000E000/4]);
1309 LOAD_FIXED_STATE_32BPP(nv3,PRAMIN);
1310 LOAD_FIXED_STATE_32BPP(nv3,PGRAPH);
1315 LOAD_FIXED_STATE_8BPP(nv3,PRAMIN);
1316 LOAD_FIXED_STATE_8BPP(nv3,PGRAPH);
1320 for (i = 0x00000; i < 0x00800; i++)
1321 @@ -1355,24 +1418,20 @@
1323 LOAD_FIXED_STATE_15BPP(nv4,PRAMIN);
1324 LOAD_FIXED_STATE_15BPP(nv4,PGRAPH);
1325 - chip->Tri03 = (RivaTexturedTriangle03 *)&(chip->FIFO[0x0000E000/4]);
1328 LOAD_FIXED_STATE_16BPP(nv4,PRAMIN);
1329 LOAD_FIXED_STATE_16BPP(nv4,PGRAPH);
1330 - chip->Tri03 = (RivaTexturedTriangle03 *)&(chip->FIFO[0x0000E000/4]);
1334 LOAD_FIXED_STATE_32BPP(nv4,PRAMIN);
1335 LOAD_FIXED_STATE_32BPP(nv4,PGRAPH);
1340 LOAD_FIXED_STATE_8BPP(nv4,PRAMIN);
1341 LOAD_FIXED_STATE_8BPP(nv4,PGRAPH);
1345 chip->PGRAPH[0x00000640/4] = state->offset0;
1346 @@ -1386,6 +1445,12 @@
1350 + if(chip->twoHeads) {
1351 + VGA_WR08(chip->PCIO, 0x03D4, 0x44);
1352 + VGA_WR08(chip->PCIO, 0x03D5, state->crtcOwner);
1353 + chip->LockUnlock(chip, 0);
1356 LOAD_FIXED_STATE(nv10,PFIFO);
1357 LOAD_FIXED_STATE(nv10,PRAMIN);
1358 LOAD_FIXED_STATE(nv10,PGRAPH);
1359 @@ -1394,24 +1459,20 @@
1361 LOAD_FIXED_STATE_15BPP(nv10,PRAMIN);
1362 LOAD_FIXED_STATE_15BPP(nv10,PGRAPH);
1363 - chip->Tri03 = (RivaTexturedTriangle03 *)&(chip->FIFO[0x0000E000/4]);
1366 LOAD_FIXED_STATE_16BPP(nv10,PRAMIN);
1367 LOAD_FIXED_STATE_16BPP(nv10,PGRAPH);
1368 - chip->Tri03 = (RivaTexturedTriangle03 *)&(chip->FIFO[0x0000E000/4]);
1372 LOAD_FIXED_STATE_32BPP(nv10,PRAMIN);
1373 LOAD_FIXED_STATE_32BPP(nv10,PGRAPH);
1378 LOAD_FIXED_STATE_8BPP(nv10,PRAMIN);
1379 LOAD_FIXED_STATE_8BPP(nv10,PGRAPH);
1384 @@ -1438,11 +1499,12 @@
1385 chip->PGRAPH[0x00000864/4] = state->pitch3;
1386 chip->PGRAPH[0x000009A4/4] = chip->PFB[0x00000200/4];
1387 chip->PGRAPH[0x000009A8/4] = chip->PFB[0x00000204/4];
1388 - chip->PRAMDAC[0x0000052C/4] = 0x00000101;
1389 - chip->PRAMDAC[0x0000252C/4] = 0x00000001;
1391 + if(chip->twoHeads) {
1392 + chip->PCRTC0[0x00000860/4] = state->head;
1393 + chip->PCRTC0[0x00002860/4] = state->head2;
1395 chip->PRAMDAC[0x00000404/4] |= (1 << 25);
1396 - chip->PRAMDAC[0x00002404/4] |= (1 << 25);
1398 chip->PMC[0x00008704/4] = 1;
1399 chip->PMC[0x00008140/4] = 0;
1400 @@ -1450,6 +1512,7 @@
1401 chip->PMC[0x00008924/4] = 0;
1402 chip->PMC[0x00008908/4] = 0x01ffffff;
1403 chip->PMC[0x0000890C/4] = 0x01ffffff;
1404 + chip->PMC[0x00001588/4] = 0;
1406 chip->PFB[0x00000240/4] = 0;
1407 chip->PFB[0x00000244/4] = 0;
1408 @@ -1533,14 +1596,24 @@
1409 chip->PGRAPH[0x00000F50/4] = 0x00000040;
1410 for (i = 0; i < 4; i++)
1411 chip->PGRAPH[0x00000F54/4] = 0x00000000;
1413 + if(chip->flatPanel) {
1414 + VGA_WR08(chip->PCIO, 0x03D4, 0x53);
1415 + VGA_WR08(chip->PCIO, 0x03D5, 0);
1416 + VGA_WR08(chip->PCIO, 0x03D4, 0x54);
1417 + VGA_WR08(chip->PCIO, 0x03D5, 0);
1418 + VGA_WR08(chip->PCIO, 0x03D4, 0x21);
1419 + VGA_WR08(chip->PCIO, 0x03D5, 0xfa);
1424 LOAD_FIXED_STATE(Riva,FIFO);
1425 UpdateFifoState(chip);
1428 * Load HW mode state.
1431 VGA_WR08(chip->PCIO, 0x03D4, 0x19);
1432 VGA_WR08(chip->PCIO, 0x03D5, state->repaint0);
1433 VGA_WR08(chip->PCIO, 0x03D4, 0x1A);
1434 @@ -1565,14 +1638,22 @@
1435 VGA_WR08(chip->PCIO, 0x03D5, state->interlace);
1436 VGA_WR08(chip->PCIO, 0x03D4, 0x41);
1437 VGA_WR08(chip->PCIO, 0x03D5, state->extra);
1438 - chip->PRAMDAC[0x00000508/4] = state->vpll;
1439 - chip->PRAMDAC[0x0000050C/4] = state->pllsel;
1441 + if(!chip->flatPanel) {
1442 + chip->PRAMDAC0[0x00000508/4] = state->vpll;
1443 + chip->PRAMDAC0[0x0000050C/4] = state->pllsel;
1444 + if(chip->twoHeads)
1445 + chip->PRAMDAC0[0x00000520/4] = state->vpll2;
1447 + chip->PRAMDAC[0x00000848/4] = state->scale;
1449 chip->PRAMDAC[0x00000600/4] = state->general;
1452 * Turn off VBlank enable and reset.
1454 - *(chip->VBLANKENABLE) = 0;
1455 - *(chip->VBLANK) = chip->VBlankBit;
1456 + chip->PCRTC[0x00000140/4] = 0;
1457 + chip->PCRTC[0x00000100/4] = chip->VBlankBit;
1459 * Set interrupt enable.
1461 @@ -1588,6 +1669,7 @@
1462 /* Free count from first subchannel */
1463 chip->FifoEmptyCount = chip->Rop->FifoFree;
1466 static void UnloadStateExt
1469 @@ -1621,10 +1703,13 @@
1470 state->interlace = VGA_RD08(chip->PCIO, 0x03D5);
1471 VGA_WR08(chip->PCIO, 0x03D4, 0x41);
1472 state->extra = VGA_RD08(chip->PCIO, 0x03D5);
1473 - state->vpll = chip->PRAMDAC[0x00000508/4];
1474 - state->pllsel = chip->PRAMDAC[0x0000050C/4];
1475 + state->vpll = chip->PRAMDAC0[0x00000508/4];
1476 + state->vpll2 = chip->PRAMDAC0[0x00000520/4];
1477 + state->pllsel = chip->PRAMDAC0[0x0000050C/4];
1478 state->general = chip->PRAMDAC[0x00000600/4];
1479 + state->scale = chip->PRAMDAC[0x00000848/4];
1480 state->config = chip->PFB[0x00000200/4];
1482 switch (chip->Architecture)
1485 @@ -1657,6 +1742,13 @@
1486 state->pitch1 = chip->PGRAPH[0x00000674/4];
1487 state->pitch2 = chip->PGRAPH[0x00000678/4];
1488 state->pitch3 = chip->PGRAPH[0x0000067C/4];
1489 + if(chip->twoHeads) {
1490 + state->head = chip->PCRTC0[0x00000860/4];
1491 + state->head2 = chip->PCRTC0[0x00002860/4];
1492 + VGA_WR08(chip->PCIO, 0x03D4, 0x44);
1493 + state->crtcOwner = VGA_RD08(chip->PCIO, 0x03D5);
1499 @@ -1666,6 +1758,15 @@
1503 + chip->PCRTC[0x800/4] = start;
1506 +static void SetStartAddress3
1508 + RIVA_HW_INST *chip,
1512 int offset = start >> 2;
1513 int pan = (start & 3) << 1;
1515 @@ -1692,99 +1793,6 @@
1516 VGA_WR08(chip->PCIO, 0x3C0, 0x13);
1517 VGA_WR08(chip->PCIO, 0x3C0, pan);
1519 -static void nv3SetSurfaces2D
1521 - RIVA_HW_INST *chip,
1526 - RivaSurface *Surface = (RivaSurface *)&(chip->FIFO[0x0000E000/4]);
1528 - RIVA_FIFO_FREE(*chip,Tri03,5);
1529 - chip->FIFO[0x00003800] = 0x80000003;
1530 - Surface->Offset = surf0;
1531 - chip->FIFO[0x00003800] = 0x80000004;
1532 - Surface->Offset = surf1;
1533 - chip->FIFO[0x00003800] = 0x80000013;
1535 -static void nv4SetSurfaces2D
1537 - RIVA_HW_INST *chip,
1542 - RivaSurface *Surface = (RivaSurface *)&(chip->FIFO[0x0000E000/4]);
1544 - chip->FIFO[0x00003800] = 0x80000003;
1545 - Surface->Offset = surf0;
1546 - chip->FIFO[0x00003800] = 0x80000004;
1547 - Surface->Offset = surf1;
1548 - chip->FIFO[0x00003800] = 0x80000014;
1550 -static void nv10SetSurfaces2D
1552 - RIVA_HW_INST *chip,
1557 - RivaSurface *Surface = (RivaSurface *)&(chip->FIFO[0x0000E000/4]);
1559 - chip->FIFO[0x00003800] = 0x80000003;
1560 - Surface->Offset = surf0;
1561 - chip->FIFO[0x00003800] = 0x80000004;
1562 - Surface->Offset = surf1;
1563 - chip->FIFO[0x00003800] = 0x80000014;
1565 -static void nv3SetSurfaces3D
1567 - RIVA_HW_INST *chip,
1572 - RivaSurface *Surface = (RivaSurface *)&(chip->FIFO[0x0000E000/4]);
1574 - RIVA_FIFO_FREE(*chip,Tri03,5);
1575 - chip->FIFO[0x00003800] = 0x80000005;
1576 - Surface->Offset = surf0;
1577 - chip->FIFO[0x00003800] = 0x80000006;
1578 - Surface->Offset = surf1;
1579 - chip->FIFO[0x00003800] = 0x80000013;
1581 -static void nv4SetSurfaces3D
1583 - RIVA_HW_INST *chip,
1588 - RivaSurface *Surface = (RivaSurface *)&(chip->FIFO[0x0000E000/4]);
1590 - chip->FIFO[0x00003800] = 0x80000005;
1591 - Surface->Offset = surf0;
1592 - chip->FIFO[0x00003800] = 0x80000006;
1593 - Surface->Offset = surf1;
1594 - chip->FIFO[0x00003800] = 0x80000014;
1596 -static void nv10SetSurfaces3D
1598 - RIVA_HW_INST *chip,
1603 - RivaSurface3D *Surfaces3D = (RivaSurface3D *)&(chip->FIFO[0x0000E000/4]);
1605 - RIVA_FIFO_FREE(*chip,Tri03,4);
1606 - chip->FIFO[0x00003800] = 0x80000007;
1607 - Surfaces3D->RenderBufferOffset = surf0;
1608 - Surfaces3D->ZBufferOffset = surf1;
1609 - chip->FIFO[0x00003800] = 0x80000014;
1612 /****************************************************************************\
1614 * Probe RIVA Chip Configuration *
1615 @@ -1848,9 +1856,6 @@
1617 chip->CrystalFreqKHz = (chip->PEXTDEV[0x00000000/4] & 0x00000040) ? 14318 : 13500;
1618 chip->CURSOR = &(chip->PRAMIN[0x00008000/4 - 0x0800/4]);
1619 - chip->CURSORPOS = &(chip->PRAMDAC[0x0300/4]);
1620 - chip->VBLANKENABLE = &(chip->PGRAPH[0x0140/4]);
1621 - chip->VBLANK = &(chip->PGRAPH[0x0100/4]);
1622 chip->VBlankBit = 0x00000100;
1623 chip->MaxVClockFreqKHz = 256000;
1625 @@ -1861,9 +1866,7 @@
1626 chip->CalcStateExt = CalcStateExt;
1627 chip->LoadStateExt = LoadStateExt;
1628 chip->UnloadStateExt = UnloadStateExt;
1629 - chip->SetStartAddress = SetStartAddress;
1630 - chip->SetSurfaces2D = nv3SetSurfaces2D;
1631 - chip->SetSurfaces3D = nv3SetSurfaces3D;
1632 + chip->SetStartAddress = SetStartAddress3;
1633 chip->LockUnlock = nv3LockUnlock;
1635 static void nv4GetConfig
1636 @@ -1909,9 +1912,6 @@
1638 chip->CrystalFreqKHz = (chip->PEXTDEV[0x00000000/4] & 0x00000040) ? 14318 : 13500;
1639 chip->CURSOR = &(chip->PRAMIN[0x00010000/4 - 0x0800/4]);
1640 - chip->CURSORPOS = &(chip->PRAMDAC[0x0300/4]);
1641 - chip->VBLANKENABLE = &(chip->PCRTC[0x0140/4]);
1642 - chip->VBLANK = &(chip->PCRTC[0x0100/4]);
1643 chip->VBlankBit = 0x00000001;
1644 chip->MaxVClockFreqKHz = 350000;
1646 @@ -1923,8 +1923,6 @@
1647 chip->LoadStateExt = LoadStateExt;
1648 chip->UnloadStateExt = UnloadStateExt;
1649 chip->SetStartAddress = SetStartAddress;
1650 - chip->SetSurfaces2D = nv4SetSurfaces2D;
1651 - chip->SetSurfaces3D = nv4SetSurfaces3D;
1652 chip->LockUnlock = nv4LockUnlock;
1654 static void nv10GetConfig
1655 @@ -1989,9 +1987,6 @@
1657 chip->CursorStart = (chip->RamAmountKBytes - 128) * 1024;
1658 chip->CURSOR = NULL; /* can't set this here */
1659 - chip->CURSORPOS = &(chip->PRAMDAC[0x0300/4]);
1660 - chip->VBLANKENABLE = &(chip->PCRTC[0x0140/4]);
1661 - chip->VBLANK = &(chip->PCRTC[0x0100/4]);
1662 chip->VBlankBit = 0x00000001;
1663 chip->MaxVClockFreqKHz = 350000;
1665 @@ -2003,9 +1998,18 @@
1666 chip->LoadStateExt = LoadStateExt;
1667 chip->UnloadStateExt = UnloadStateExt;
1668 chip->SetStartAddress = SetStartAddress;
1669 - chip->SetSurfaces2D = nv10SetSurfaces2D;
1670 - chip->SetSurfaces3D = nv10SetSurfaces3D;
1671 - chip->LockUnlock = nv10LockUnlock;
1672 + chip->LockUnlock = nv4LockUnlock;
1674 + switch(pNv->Chipset & 0x0ff0) {
1678 + chip->twoHeads = TRUE;
1681 + chip->twoHeads = FALSE;
1687 @@ -2035,6 +2039,7 @@
1691 + chip->Chipset = pNv->Chipset;
1693 * Fill in FIFO pointers.
1695 @@ -2045,7 +2050,6 @@
1696 chip->Blt = (RivaScreenBlt *)&(chip->FIFO[0x00008000/4]);
1697 chip->Bitmap = (RivaBitmap *)&(chip->FIFO[0x0000A000/4]);
1698 chip->Line = (RivaLine *)&(chip->FIFO[0x0000C000/4]);
1699 - chip->Tri03 = (RivaTexturedTriangle03 *)&(chip->FIFO[0x0000E000/4]);
1703 --- XFree86-4.2.0/xc/programs/Xserver/hw/xfree86/drivers/nv.orig/riva_hw.h Tue Oct 9 07:28:53 2001
1704 +++ XFree86-4.2.0/xc/programs/Xserver/hw/xfree86/drivers/nv/riva_hw.h Sun Apr 14 15:59:41 2002
1705 @@ -225,74 +225,6 @@
1706 U032 MonochromeData01E;
1709 - * 3D textured, Z buffered triangle.
1711 -typedef volatile struct
1713 - U032 reserved00[4];
1714 -#if X_BYTE_ORDER == X_BIG_ENDIAN
1720 - U032 reserved01[0x0BC];
1721 - U032 TextureOffset;
1722 - U032 TextureFormat;
1723 - U032 TextureFilter;
1725 -/* This is a problem on LynxOS */
1731 - U032 reserved02[0x339];
1740 -} RivaTexturedTriangle03;
1741 -typedef volatile struct
1743 - U032 reserved00[4];
1744 -#if X_BYTE_ORDER == X_BIG_ENDIAN
1750 - U032 reserved01[0x0BB];
1752 - U032 TextureOffset;
1753 - U032 TextureFormat;
1754 - U032 TextureFilter;
1756 -/* This is a problem on LynxOS */
1762 - U032 reserved02[0x39];
1774 - U032 DrawTriangle3D;
1775 -} RivaTexturedTriangle05;
1779 typedef volatile struct
1785 U032 CrystalFreqKHz;
1786 U032 RamAmountKBytes;
1787 U032 MaxVClockFreqKHz;
1788 @@ -385,11 +318,14 @@
1790 U032 FifoEmptyCount;
1795 * Non-FIFO registers.
1797 + volatile U032 *PCRTC0;
1798 volatile U032 *PCRTC;
1799 - volatile U032 *PRAMDAC;
1800 + volatile U032 *PRAMDAC0;
1802 volatile U032 *PFIFO;
1803 volatile U032 *PGRAPH;
1804 @@ -399,12 +335,12 @@
1805 volatile U032 *PRAMIN;
1806 volatile U032 *FIFO;
1807 volatile U032 *CURSOR;
1808 - volatile U032 *CURSORPOS;
1809 - volatile U032 *VBLANKENABLE;
1810 - volatile U032 *VBLANK;
1811 + volatile U008 *PCIO0;
1812 volatile U008 *PCIO;
1813 volatile U008 *PVIO;
1814 + volatile U008 *PDIO0;
1815 volatile U008 *PDIO;
1816 + volatile U032 *PRAMDAC;
1818 * Common chip functions.
1821 void (*LoadStateExt)(struct _riva_hw_inst *,struct _riva_hw_state *);
1822 void (*UnloadStateExt)(struct _riva_hw_inst *,struct _riva_hw_state *);
1823 void (*SetStartAddress)(struct _riva_hw_inst *,U032);
1824 - void (*SetSurfaces2D)(struct _riva_hw_inst *,U032,U032);
1825 - void (*SetSurfaces3D)(struct _riva_hw_inst *,U032,U032);
1826 int (*ShowHideCursor)(struct _riva_hw_inst *,int);
1827 void (*LockUnlock)(struct _riva_hw_inst *, int);
1833 - RivaTexturedTriangle03 *Tri03;
1834 - RivaTexturedTriangle05 *Tri05;
1837 * Extended mode state information.
1838 @@ -446,14 +378,19 @@
1858 --- XFree86-4.2.0/xc/programs/Xserver/hw/xfree86/drivers/nv.orig/riva_tbl.h Thu Sep 20 08:40:06 2001
1859 +++ XFree86-4.2.0/xc/programs/Xserver/hw/xfree86/drivers/nv/riva_tbl.h Sun Apr 14 15:59:41 2002
1860 @@ -633,180 +633,6 @@
1861 {0x000001C9, 0x0077D777},
1862 {0x00000186, 0x000070E5},
1863 {0x0000020C, 0x0E0D0D0D}
1865 -static unsigned nv10tri05TablePGRAPH[][2] =
1867 - {(0x00000E00/4), 0x00000000},
1868 - {(0x00000E04/4), 0x00000000},
1869 - {(0x00000E08/4), 0x00000000},
1870 - {(0x00000E0C/4), 0x00000000},
1871 - {(0x00000E10/4), 0x00001000},
1872 - {(0x00000E14/4), 0x00001000},
1873 - {(0x00000E18/4), 0x4003ff80},
1874 - {(0x00000E1C/4), 0x00000000},
1875 - {(0x00000E20/4), 0x00000000},
1876 - {(0x00000E24/4), 0x00000000},
1877 - {(0x00000E28/4), 0x00000000},
1878 - {(0x00000E2C/4), 0x00000000},
1879 - {(0x00000E30/4), 0x00080008},
1880 - {(0x00000E34/4), 0x00080008},
1881 - {(0x00000E38/4), 0x00000000},
1882 - {(0x00000E3C/4), 0x00000000},
1883 - {(0x00000E40/4), 0x00000000},
1884 - {(0x00000E44/4), 0x00000000},
1885 - {(0x00000E48/4), 0x00000000},
1886 - {(0x00000E4C/4), 0x00000000},
1887 - {(0x00000E50/4), 0x00000000},
1888 - {(0x00000E54/4), 0x00000000},
1889 - {(0x00000E58/4), 0x00000000},
1890 - {(0x00000E5C/4), 0x00000000},
1891 - {(0x00000E60/4), 0x00000000},
1892 - {(0x00000E64/4), 0x10000000},
1893 - {(0x00000E68/4), 0x00000000},
1894 - {(0x00000E6C/4), 0x00000000},
1895 - {(0x00000E70/4), 0x00000000},
1896 - {(0x00000E74/4), 0x00000000},
1897 - {(0x00000E78/4), 0x00000000},
1898 - {(0x00000E7C/4), 0x00000000},
1899 - {(0x00000E80/4), 0x00000000},
1900 - {(0x00000E84/4), 0x00000000},
1901 - {(0x00000E88/4), 0x08000000},
1902 - {(0x00000E8C/4), 0x00000000},
1903 - {(0x00000E90/4), 0x00000000},
1904 - {(0x00000E94/4), 0x00000000},
1905 - {(0x00000E98/4), 0x00000000},
1906 - {(0x00000E9C/4), 0x4B7FFFFF},
1907 - {(0x00000EA0/4), 0x00000000},
1908 - {(0x00000EA4/4), 0x00000000},
1909 - {(0x00000EA8/4), 0x00000000},
1910 - {(0x00000F00/4), 0x07FF0800},
1911 - {(0x00000F04/4), 0x07FF0800},
1912 - {(0x00000F08/4), 0x07FF0800},
1913 - {(0x00000F0C/4), 0x07FF0800},
1914 - {(0x00000F10/4), 0x07FF0800},
1915 - {(0x00000F14/4), 0x07FF0800},
1916 - {(0x00000F18/4), 0x07FF0800},
1917 - {(0x00000F1C/4), 0x07FF0800},
1918 - {(0x00000F20/4), 0x07FF0800},
1919 - {(0x00000F24/4), 0x07FF0800},
1920 - {(0x00000F28/4), 0x07FF0800},
1921 - {(0x00000F2C/4), 0x07FF0800},
1922 - {(0x00000F30/4), 0x07FF0800},
1923 - {(0x00000F34/4), 0x07FF0800},
1924 - {(0x00000F38/4), 0x07FF0800},
1925 - {(0x00000F3C/4), 0x07FF0800},
1926 - {(0x00000F40/4), 0x10000000},
1927 - {(0x00000F44/4), 0x00000000},
1928 - {(0x00000F50/4), 0x00006740},
1929 - {(0x00000F54/4), 0x00000000},
1930 - {(0x00000F54/4), 0x00000000},
1931 - {(0x00000F54/4), 0x00000000},
1932 - {(0x00000F54/4), 0x3F800000},
1933 - {(0x00000F50/4), 0x00006750},
1934 - {(0x00000F54/4), 0x40000000},
1935 - {(0x00000F54/4), 0x40000000},
1936 - {(0x00000F54/4), 0x40000000},
1937 - {(0x00000F54/4), 0x40000000},
1938 - {(0x00000F50/4), 0x00006760},
1939 - {(0x00000F54/4), 0x00000000},
1940 - {(0x00000F54/4), 0x00000000},
1941 - {(0x00000F54/4), 0x3F800000},
1942 - {(0x00000F54/4), 0x00000000},
1943 - {(0x00000F50/4), 0x00006770},
1944 - {(0x00000F54/4), 0xC5000000},
1945 - {(0x00000F54/4), 0xC5000000},
1946 - {(0x00000F54/4), 0x00000000},
1947 - {(0x00000F54/4), 0x00000000},
1948 - {(0x00000F50/4), 0x00006780},
1949 - {(0x00000F54/4), 0x00000000},
1950 - {(0x00000F54/4), 0x00000000},
1951 - {(0x00000F54/4), 0x3F800000},
1952 - {(0x00000F54/4), 0x00000000},
1953 - {(0x00000F50/4), 0x000067A0},
1954 - {(0x00000F54/4), 0x3F800000},
1955 - {(0x00000F54/4), 0x3F800000},
1956 - {(0x00000F54/4), 0x3F800000},
1957 - {(0x00000F54/4), 0x3F800000},
1958 - {(0x00000F50/4), 0x00006AB0},
1959 - {(0x00000F54/4), 0x3F800000},
1960 - {(0x00000F54/4), 0x3F800000},
1961 - {(0x00000F54/4), 0x3F800000},
1962 - {(0x00000F50/4), 0x00006AC0},
1963 - {(0x00000F54/4), 0x00000000},
1964 - {(0x00000F54/4), 0x00000000},
1965 - {(0x00000F54/4), 0x00000000},
1966 - {(0x00000F50/4), 0x00006C10},
1967 - {(0x00000F54/4), 0xBF800000},
1968 - {(0x00000F50/4), 0x00007030},
1969 - {(0x00000F54/4), 0x7149F2CA},
1970 - {(0x00000F50/4), 0x00007040},
1971 - {(0x00000F54/4), 0x7149F2CA},
1972 - {(0x00000F50/4), 0x00007050},
1973 - {(0x00000F54/4), 0x7149F2CA},
1974 - {(0x00000F50/4), 0x00007060},
1975 - {(0x00000F54/4), 0x7149F2CA},
1976 - {(0x00000F50/4), 0x00007070},
1977 - {(0x00000F54/4), 0x7149F2CA},
1978 - {(0x00000F50/4), 0x00007080},
1979 - {(0x00000F54/4), 0x7149F2CA},
1980 - {(0x00000F50/4), 0x00007090},
1981 - {(0x00000F54/4), 0x7149F2CA},
1982 - {(0x00000F50/4), 0x000070A0},
1983 - {(0x00000F54/4), 0x7149F2CA},
1984 - {(0x00000F50/4), 0x00006A80},
1985 - {(0x00000F54/4), 0x00000000},
1986 - {(0x00000F54/4), 0x00000000},
1987 - {(0x00000F54/4), 0x3F800000},
1988 - {(0x00000F50/4), 0x00006AA0},
1989 - {(0x00000F54/4), 0x00000000},
1990 - {(0x00000F54/4), 0x00000000},
1991 - {(0x00000F54/4), 0x00000000},
1992 - {(0x00000F50/4), 0x00000040},
1993 - {(0x00000F54/4), 0x00000005},
1994 - {(0x00000F50/4), 0x00006400},
1995 - {(0x00000F54/4), 0x3F800000},
1996 - {(0x00000F54/4), 0x3F800000},
1997 - {(0x00000F54/4), 0x4B7FFFFF},
1998 - {(0x00000F54/4), 0x00000000},
1999 - {(0x00000F50/4), 0x00006410},
2000 - {(0x00000F54/4), 0xC5000000},
2001 - {(0x00000F54/4), 0xC5000000},
2002 - {(0x00000F54/4), 0x00000000},
2003 - {(0x00000F54/4), 0x00000000},
2004 - {(0x00000F50/4), 0x00006420},
2005 - {(0x00000F54/4), 0x00000000},
2006 - {(0x00000F54/4), 0x00000000},
2007 - {(0x00000F54/4), 0x00000000},
2008 - {(0x00000F54/4), 0x00000000},
2009 - {(0x00000F50/4), 0x00006430},
2010 - {(0x00000F54/4), 0x00000000},
2011 - {(0x00000F54/4), 0x00000000},
2012 - {(0x00000F54/4), 0x00000000},
2013 - {(0x00000F54/4), 0x00000000},
2014 - {(0x00000F50/4), 0x000064C0},
2015 - {(0x00000F54/4), 0x3F800000},
2016 - {(0x00000F54/4), 0x3F800000},
2017 - {(0x00000F54/4), 0x477FFFFF},
2018 - {(0x00000F54/4), 0x3F800000},
2019 - {(0x00000F50/4), 0x000064D0},
2020 - {(0x00000F54/4), 0xC5000000},
2021 - {(0x00000F54/4), 0xC5000000},
2022 - {(0x00000F54/4), 0x00000000},
2023 - {(0x00000F54/4), 0x00000000},
2024 - {(0x00000F50/4), 0x000064E0},
2025 - {(0x00000F54/4), 0xC4FFF000},
2026 - {(0x00000F54/4), 0xC4FFF000},
2027 - {(0x00000F54/4), 0x00000000},
2028 - {(0x00000F54/4), 0x00000000},
2029 - {(0x00000F50/4), 0x000064F0},
2030 - {(0x00000F54/4), 0x00000000},
2031 - {(0x00000F54/4), 0x00000000},
2032 - {(0x00000F54/4), 0x00000000},
2033 - {(0x00000F54/4), 0x00000000},
2034 - {(0x00000F40/4), 0x30000000},
2035 - {(0x00000F44/4), 0x00000004},
2036 - {(0x00000F48/4), 0x10000000},
2037 - {(0x00000F4C/4), 0x00000000}
2039 static unsigned nv10TablePRAMIN[][2] =
2041 --- XFree86-4.2.0/xc/programs/Xserver/hw/xfree86/common/xf86PciInfo.h.orig Sun Apr 14 15:53:25 2002
2042 +++ XFree86-4.2.0/xc/programs/Xserver/hw/xfree86/common/xf86PciInfo.h Sun Apr 14 16:02:42 2002
2043 @@ -508,42 +508,47 @@
2044 #define PCI_CHIP_BT849 0x0351
2047 -#define PCI_CHIP_NV1 0x0008
2048 -#define PCI_CHIP_DAC64 0x0009
2049 -#define PCI_CHIP_TNT 0x0020
2050 -#define PCI_CHIP_TNT2 0x0028
2051 -#define PCI_CHIP_UTNT2 0x0029
2052 -#define PCI_CHIP_VTNT2 0x002C
2053 -#define PCI_CHIP_UVTNT2 0x002D
2054 -#define PCI_CHIP_ITNT2 0x00A0
2055 -#define PCI_CHIP_GEFORCE256 0x0100
2056 -#define PCI_CHIP_GEFORCEDDR 0x0101
2057 -#define PCI_CHIP_QUADRO 0x0103
2058 -#define PCI_CHIP_GEFORCE2MX 0x0110
2059 -#define PCI_CHIP_GEFORCE2MXDDR 0x0111
2060 -#define PCI_CHIP_GEFORCE2GO 0x0112
2061 -#define PCI_CHIP_QUADRO2MXR 0x0113
2062 -#define PCI_CHIP_GEFORCE2GTS 0x0150
2063 -#define PCI_CHIP_GEFORCE2GTS_1 0x0151
2064 -#define PCI_CHIP_GEFORCE2ULTRA 0x0152
2065 -#define PCI_CHIP_QUADRO2PRO 0x0153
2066 -#define PCI_CHIP_0x0170 0x0170
2067 -#define PCI_CHIP_0x0171 0x0171
2068 -#define PCI_CHIP_0x0172 0x0172
2069 -#define PCI_CHIP_0x0173 0x0173
2070 -#define PCI_CHIP_0x0174 0x0174
2071 -#define PCI_CHIP_0x0175 0x0175
2072 -#define PCI_CHIP_0x0178 0x0178
2073 -#define PCI_CHIP_0x017A 0x017A
2074 -#define PCI_CHIP_0x017B 0x017B
2075 -#define PCI_CHIP_0x017C 0x017C
2076 -#define PCI_CHIP_IGEFORCE2 0x01A0
2077 -#define PCI_CHIP_GEFORCE3 0x0200
2078 -#define PCI_CHIP_GEFORCE3_1 0x0201
2079 -#define PCI_CHIP_GEFORCE3_2 0x0202
2080 -#define PCI_CHIP_QUADRO_DDC 0x0203
2081 -#define PCI_CHIP_0x0250 0x0250
2082 -#define PCI_CHIP_0x0258 0x0258
2083 +#define PCI_CHIP_NV1 0x0008
2084 +#define PCI_CHIP_DAC64 0x0009
2085 +#define PCI_CHIP_TNT 0x0020
2086 +#define PCI_CHIP_TNT2 0x0028
2087 +#define PCI_CHIP_UTNT2 0x0029
2088 +#define PCI_CHIP_VTNT2 0x002C
2089 +#define PCI_CHIP_UVTNT2 0x002D
2090 +#define PCI_CHIP_ITNT2 0x00A0
2091 +#define PCI_CHIP_GEFORCE_256 0x0100
2092 +#define PCI_CHIP_GEFORCE_DDR 0x0101
2093 +#define PCI_CHIP_QUADRO 0x0103
2094 +#define PCI_CHIP_GEFORCE2_MX 0x0110
2095 +#define PCI_CHIP_GEFORCE2_MX_100 0x0111
2096 +#define PCI_CHIP_GEFORCE2_GO 0x0112
2097 +#define PCI_CHIP_QUADRO2_MXR 0x0113
2098 +#define PCI_CHIP_GEFORCE2_GTS 0x0150
2099 +#define PCI_CHIP_GEFORCE2_TI 0x0151
2100 +#define PCI_CHIP_GEFORCE2_ULTRA 0x0152
2101 +#define PCI_CHIP_QUADRO2_PRO 0x0153
2102 +#define PCI_CHIP_GEFORCE4_MX_460 0x0170
2103 +#define PCI_CHIP_GEFORCE4_MX_440 0x0171
2104 +#define PCI_CHIP_GEFORCE4_MX_420 0x0172
2105 +#define PCI_CHIP_GEFORCE4_440_GO 0x0174
2106 +#define PCI_CHIP_GEFORCE4_420_GO 0x0175
2107 +#define PCI_CHIP_GEFORCE4_420_GO_M32 0x0176
2108 +#define PCI_CHIP_QUADRO4_500XGL 0x0178
2109 +#define PCI_CHIP_GEFORCE4_440_GO_M64 0x0179
2110 +#define PCI_CHIP_QUADRO4_200 0x017A
2111 +#define PCI_CHIP_QUADRO4_550XGL 0x017B
2112 +#define PCI_CHIP_QUADRO4_500_GOGL 0x017C
2113 +#define PCI_CHIP_IGEFORCE2 0x01A0
2114 +#define PCI_CHIP_GEFORCE3 0x0200
2115 +#define PCI_CHIP_GEFORCE3_TI_200 0x0201
2116 +#define PCI_CHIP_GEFORCE3_TI_500 0x0202
2117 +#define PCI_CHIP_QUADRO_DCC 0x0203
2118 +#define PCI_CHIP_GEFORCE4_TI_4600 0x0250
2119 +#define PCI_CHIP_GEFORCE4_TI_4400 0x0251
2120 +#define PCI_CHIP_GEFORCE4_TI_4200 0x0253
2121 +#define PCI_CHIP_QUADRO4_900XGL 0x0258
2122 +#define PCI_CHIP_QUADRO4_750XGL 0x0259
2123 +#define PCI_CHIP_QUADRO4_700XGL 0x025B
2126 #define PCI_CHIP_RIVA128 0x0018
2127 @@ -1313,42 +1318,47 @@
2130 {PCI_VENDOR_NVIDIA, {
2131 - {PCI_CHIP_NV1, "NV1",0},
2132 - {PCI_CHIP_DAC64, "DAC64",0},
2133 - {PCI_CHIP_TNT, "RIVA TNT",0},
2134 - {PCI_CHIP_TNT2, "RIVA TNT2/TNT2 Pro",0},
2135 - {PCI_CHIP_UTNT2, "RIVA TNT2 Ultra",0},
2136 - {PCI_CHIP_VTNT2, "Vanta",0},
2137 - {PCI_CHIP_UVTNT2, "Riva TNT2 M64",0},
2138 - {PCI_CHIP_ITNT2, "Aladdin TNT2",0},
2139 - {PCI_CHIP_GEFORCE256, "GeForce 256",0},
2140 - {PCI_CHIP_GEFORCEDDR, "GeForce DDR",0},
2141 - {PCI_CHIP_QUADRO, "Quadro",0},
2142 - {PCI_CHIP_GEFORCE2MX, "GeForce2 MX/MX 400",0},
2143 - {PCI_CHIP_GEFORCE2MXDDR,"GeForce2 MX 100/200",0},
2144 - {PCI_CHIP_GEFORCE2GO, "GeForce2 Go", 0},
2145 - {PCI_CHIP_QUADRO2MXR, "Quadro2 MXR",0},
2146 - {PCI_CHIP_GEFORCE2GTS, "GeForce2 GTS/Pro",0},
2147 - {PCI_CHIP_GEFORCE2GTS_1,"GeForce2 Ti",0},
2148 - {PCI_CHIP_GEFORCE2ULTRA,"GeForce2 Ultra",0},
2149 - {PCI_CHIP_QUADRO2PRO, "Quadro2 Pro",0},
2150 - {PCI_CHIP_0x0170, "0x0170",0},
2151 - {PCI_CHIP_0x0171, "0x0171",0},
2152 - {PCI_CHIP_0x0172, "0x0172",0},
2153 - {PCI_CHIP_0x0173, "0x0173",0},
2154 - {PCI_CHIP_0x0174, "0x0174",0},
2155 - {PCI_CHIP_0x0175, "0x0175",0},
2156 - {PCI_CHIP_0x0178, "0x0178",0},
2157 - {PCI_CHIP_0x017A, "0x017A",0},
2158 - {PCI_CHIP_0x017B, "0x017B",0},
2159 - {PCI_CHIP_0x017C, "0x017C",0},
2160 - {PCI_CHIP_IGEFORCE2, "GeForce2 Integrated",0},
2161 - {PCI_CHIP_GEFORCE3, "GeForce3",0},
2162 - {PCI_CHIP_GEFORCE3_1, "GeForce3 Ti 200",0},
2163 - {PCI_CHIP_GEFORCE3_2, "GeForce3 Ti 500",0},
2164 - {PCI_CHIP_QUADRO_DDC, "Quadro DDC",0},
2165 - {PCI_CHIP_0x0250, "0x0250",0},
2166 - {PCI_CHIP_0x0258, "0x0258",0},
2167 + {PCI_CHIP_NV1, "NV1",0},
2168 + {PCI_CHIP_DAC64, "DAC64",0},
2169 + {PCI_CHIP_TNT, "RIVA TNT",0},
2170 + {PCI_CHIP_TNT2, "RIVA TNT2/TNT2 Pro",0},
2171 + {PCI_CHIP_UTNT2, "RIVA TNT2 Ultra",0},
2172 + {PCI_CHIP_VTNT2, "Vanta",0},
2173 + {PCI_CHIP_UVTNT2, "Riva TNT2 M64",0},
2174 + {PCI_CHIP_ITNT2, "Aladdin TNT2",0},
2175 + {PCI_CHIP_GEFORCE_256, "GeForce 256",0},
2176 + {PCI_CHIP_GEFORCE_DDR, "GeForce DDR",0},
2177 + {PCI_CHIP_QUADRO, "Quadro",0},
2178 + {PCI_CHIP_GEFORCE2_MX, "GeForce2 MX/MX 400",0},
2179 + {PCI_CHIP_GEFORCE2_MX_100, "GeForce2 MX 100/200",0},
2180 + {PCI_CHIP_GEFORCE2_GO, "GeForce2 Go", 0},
2181 + {PCI_CHIP_QUADRO2_MXR, "Quadro2 MXR",0},
2182 + {PCI_CHIP_GEFORCE2_GTS, "GeForce2 GTS/Pro",0},
2183 + {PCI_CHIP_GEFORCE2_TI, "GeForce2 Ti",0},
2184 + {PCI_CHIP_GEFORCE2_ULTRA, "GeForce2 Ultra",0},
2185 + {PCI_CHIP_QUADRO2_PRO, "Quadro2 Pro",0},
2186 + {PCI_CHIP_GEFORCE4_MX_460, "GeForce4 MX 460",0},
2187 + {PCI_CHIP_GEFORCE4_MX_440, "GeForce4 MX 440",0},
2188 + {PCI_CHIP_GEFORCE4_MX_420, "GeForce4 MX 420",0},
2189 + {PCI_CHIP_GEFORCE4_440_GO, "GeForce4 440 Go",0},
2190 + {PCI_CHIP_GEFORCE4_420_GO, "GeForce4 420 Go",0},
2191 + {PCI_CHIP_GEFORCE4_420_GO_M32,"GeForce4 420 Go M32",0},
2192 + {PCI_CHIP_QUADRO4_500XGL, "Quadro4 500XGL",0},
2193 + {PCI_CHIP_GEFORCE4_440_GO_M64,"GeForce4 440 Go M64",0},
2194 + {PCI_CHIP_QUADRO4_200, "Quadro4 200/400NVS",0},
2195 + {PCI_CHIP_QUADRO4_550XGL, "Quadro4 550XGL",0},
2196 + {PCI_CHIP_QUADRO4_500_GOGL, "Quadro4 GoGL",0},
2197 + {PCI_CHIP_IGEFORCE2, "GeForce2 Integrated",0},
2198 + {PCI_CHIP_GEFORCE3, "GeForce3",0},
2199 + {PCI_CHIP_GEFORCE3_TI_200, "GeForce3 Ti 200",0},
2200 + {PCI_CHIP_GEFORCE3_TI_500, "GeForce3 Ti 500",0},
2201 + {PCI_CHIP_QUADRO_DCC, "Quadro DCC",0},
2202 + {PCI_CHIP_GEFORCE4_TI_4600, "GeForce4 Ti 4600",0},
2203 + {PCI_CHIP_GEFORCE4_TI_4400, "GeForce4 Ti 4400",0},
2204 + {PCI_CHIP_GEFORCE4_TI_4200, "GeForce4 Ti 4200",0},
2205 + {PCI_CHIP_QUADRO4_900XGL, "Quadro4 900 XGL",0},
2206 + {PCI_CHIP_QUADRO4_750XGL, "Quadro4 750 XGL",0},
2207 + {PCI_CHIP_QUADRO4_700XGL, "Quadro4 700 XGL",0},
2210 {PCI_CHIP_IMSTT128, "TwinTurbo 128", 0},