1 diff -ur xc.orig/programs/Xserver/hw/xfree86/common/compiler.h xc/programs/Xserver/hw/xfree86/common/compiler.h
2 --- xc.orig/programs/Xserver/hw/xfree86/common/compiler.h Fri Dec 8 22:58:34 2000
3 +++ xc/programs/Xserver/hw/xfree86/common/compiler.h Sun Mar 18 17:23:33 2001
4 @@ -1514,19 +1514,17 @@
5 /* Changed to kill noise generated by gcc's -Wcast-align */
6 #define MMIO_IN8(base, offset) (*xf86ReadMmio8)(base, offset)
7 #define MMIO_IN16(base, offset) (*xf86ReadMmio16)(base, offset)
8 -# if defined (JENSEN_SUPPORT)
9 #define MMIO_IN32(base, offset) (*xf86ReadMmio32)(base, offset)
10 +# if defined (JENSEN_SUPPORT)
11 #define MMIO_OUT32(base, offset, val) \
12 (*xf86WriteMmio32)((CARD32)(val), base, offset)
13 #define MMIO_ONB32(base, offset, val) \
14 (*xf86WriteMmioNB32)((CARD32)(val), base, offset)
16 -#define MMIO_IN32(base, offset) \
17 - *(volatile CARD32 *)(void *)(((CARD8*)(base)) + (offset))
18 #define MMIO_OUT32(base, offset, val) \
20 - *(volatile CARD32 *)(void *)(((CARD8*)(base)) + (offset)) = (val); \
21 write_mem_barrier(); \
22 + *(volatile CARD32 *)(void *)(((CARD8*)(base)) + (offset)) = (val); \
24 #define MMIO_ONB32(base, offset, val) \
25 *(volatile CARD32 *)(void *)(((CARD8*)(base)) + (offset)) = (val)
26 diff -ur xc.orig/programs/Xserver/hw/xfree86/drivers/ati/r128_accel.c xc/programs/Xserver/hw/xfree86/drivers/ati/r128_accel.c
27 --- xc.orig/programs/Xserver/hw/xfree86/drivers/ati/r128_accel.c Mon Dec 4 19:55:22 2000
28 +++ xc/programs/Xserver/hw/xfree86/drivers/ati/r128_accel.c Sun Apr 1 20:51:03 2001
30 if (info->scanline_direct) return;
33 + write_mem_barrier();
35 /* Last scanline - finish write to DATA_LAST */
36 if (info->scanline_h == 0) {
38 if (info->scanline_direct) return;
41 + write_mem_barrier();
43 /* Last scanline - finish write to DATA_LAST */
44 if (info->scanline_h == 0) {
45 diff -ur xc.orig/programs/Xserver/hw/xfree86/drivers/ati/r128_driver.c xc/programs/Xserver/hw/xfree86/drivers/ati/r128_driver.c
46 --- xc.orig/programs/Xserver/hw/xfree86/drivers/ati/r128_driver.c Sat Mar 17 17:57:15 2001
47 +++ xc/programs/Xserver/hw/xfree86/drivers/ati/r128_driver.c Sun Mar 18 16:51:29 2001
49 if (!xf86LoadSubModule(pScrn, "ddc")) return FALSE;
50 xf86LoaderReqSymLists(ddcSymbols, NULL);
52 -#if defined(__powerpc__)
53 - /* Int10 is broken on PPC */
54 +#if defined(__powerpc__) || defined(__alpha__)
55 + /* Int10 is broken on PPC and some Alphas */
58 if (xf86LoadSubModule(pScrn, "vbe")) {
60 static Bool R128PreInitInt10(ScrnInfoPtr pScrn)
62 R128InfoPtr info = R128PTR(pScrn);
64 +#if 1 && !defined(__alpha__)
65 + /* int10 is broken on some Alphas */
66 if (xf86LoadSubModule(pScrn, "int10")) {
67 xf86Int10InfoPtr pInt;
68 xf86DrvMsg(pScrn->scrnIndex,X_INFO,"initializing int10\n");
69 diff -ur xc.orig/programs/Xserver/hw/xfree86/drivers/ati/radeon_accel.c xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_accel.c
70 --- xc.orig/programs/Xserver/hw/xfree86/drivers/ati/radeon_accel.c Wed Nov 29 11:42:11 2000
71 +++ xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_accel.c Fri Mar 23 16:20:46 2001
74 info->scanline_words = (w + 31) >> 5;
76 - if ((info->scanline_words * h) <= 9) {
78 + /* always indirect for Alpha */
81 + if ((info->scanline_words * h) <= 9)
84 /* Turn on direct for less than 9 dword colour expansion */
85 info->scratch_buffer[0]
86 = (unsigned char *)(ADDRREG(RADEON_HOST_DATA_LAST)
88 if (info->scanline_direct) return;
91 + write_mem_barrier();
93 /* Last scanline - finish write to DATA_LAST */
94 if (info->scanline_h == 0) {
97 info->scanline_words = (w * info->scanline_bpp + 31) >> 5;
99 - if ((info->scanline_words * h) <= 9) {
101 + /* always indirect for Alpha */
104 + if ((info->scanline_words * h) <= 9)
107 /* Turn on direct for less than 9 dword colour expansion */
108 info->scratch_buffer[0]
109 = (unsigned char *)(ADDRREG(RADEON_HOST_DATA_LAST)
111 if (info->scanline_direct) return;
114 + write_mem_barrier();
116 /* Last scanline - finish write to DATA_LAST */
117 if (info->scanline_h == 0) {
118 diff -ur xc.orig/programs/Xserver/hw/xfree86/drivers/glint/dualmx_accel.c xc/programs/Xserver/hw/xfree86/drivers/glint/dualmx_accel.c
119 --- xc.orig/programs/Xserver/hw/xfree86/drivers/glint/dualmx_accel.c Sat Jun 24 14:19:54 2000
120 +++ xc/programs/Xserver/hw/xfree86/drivers/glint/dualmx_accel.c Sun Mar 18 16:53:54 2001
122 GLINT_WRITE_REG(d<<16,dY);
125 -static void MoveDWORDS(
126 - register CARD32* dest,
127 - register CARD32* src,
128 - register int dwords )
130 - while(dwords & ~0x03) {
132 - *(dest + 1) = *(src + 1);
133 - *(dest + 2) = *(src + 2);
134 - *(dest + 3) = *(src + 3);
139 - if (!dwords) return;
141 - if (dwords == 1) return;
142 - *(dest + 1) = *(src + 1);
143 - if (dwords == 2) return;
144 - *(dest + 2) = *(src + 2);
147 #define Sync_tag 0x188
151 while (dwords >= infoRec->ColorExpandRange) {
152 GLINT_WAIT(infoRec->ColorExpandRange);
153 GLINT_WRITE_REG((infoRec->ColorExpandRange - 2)<<16 | 0x0D, OutputFIFO);
154 - MoveDWORDS((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4), src,
156 + (CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4), src,
157 infoRec->ColorExpandRange - 1);
158 dwords -= (infoRec->ColorExpandRange - 1);
159 src += (infoRec->ColorExpandRange - 1);
163 GLINT_WRITE_REG((dwords - 1)<<16 | 0x0D, OutputFIFO);
164 - MoveDWORDS((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4), src,dwords);
166 + (CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4), src,dwords);
168 pGlint->cpucount += 1;
171 /* (0x15 << 4) | 0x05 is the TAG for FBSourceData */
172 GLINT_WRITE_REG(((infoRec->ColorExpandRange - 2) << 16) | (0x15 << 4) |
174 - MoveDWORDS((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
176 + (CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
177 (CARD32*)srcp, infoRec->ColorExpandRange - 1);
178 count -= infoRec->ColorExpandRange - 1;
179 srcp += infoRec->ColorExpandRange - 1;
181 /* (0x15 << 4) | 0x05 is the TAG for FBSourceData */
182 GLINT_WRITE_REG(((count - 1) << 16) | (0x15 << 4) |
184 - MoveDWORDS((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
186 + (CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
187 (CARD32*)srcp, count);
190 diff -ur xc.orig/programs/Xserver/hw/xfree86/drivers/glint/glint.h xc/programs/Xserver/hw/xfree86/drivers/glint/glint.h
191 --- xc.orig/programs/Xserver/hw/xfree86/drivers/glint/glint.h Wed Nov 29 11:42:16 2000
192 +++ xc/programs/Xserver/hw/xfree86/drivers/glint/glint.h Sun Mar 18 21:36:41 2001
197 + Bool ScanlineDirect;
199 CARD32 rasterizerMode;
202 DrawablePtr CurrentDrawable;
203 I2CBusPtr DDCBus, VSBus;
204 CARD8* XAAScanlineColorExpandBuffers[2];
205 + CARD8* ScratchBuffer;
206 CARD32 RasterizerSwap;
210 LOCO *colors, VisualPtr pVisual);
211 void Permedia2LoadPalette16(ScrnInfoPtr pScrn, int numColors, int *indices,
212 LOCO *colors, VisualPtr pVisual);
213 +void Permedia3LoadPalette(ScrnInfoPtr pScrn, int numColors, int *indices,
214 + LOCO *colors, VisualPtr pVisual);
215 +void Permedia3LoadPalette16(ScrnInfoPtr pScrn, int numColors, int *indices,
216 + LOCO *colors, VisualPtr pVisual);
217 void Permedia2I2CUDelay(I2CBusPtr b, int usec);
218 void Permedia2I2CPutBits(I2CBusPtr b, int scl, int sda);
219 void Permedia2I2CGetBits(I2CBusPtr b, int *scl, int *sda);
221 CARD32 GLINT_VERB_READ_REG(GLINTPtr, CARD32 r, char *file, int line);
223 void GLINTRefreshArea(ScrnInfoPtr pScrn, int num, BoxPtr pbox);
225 +void GLINT_MoveBYTES(CARD32* dest, unsigned char* src, int dwords);
226 +void GLINT_MoveWORDS(CARD32* dest, unsigned short* src, int dwords);
227 +void GLINT_MoveDWORDS(CARD32* dest, CARD32* src, int dwords);
228 #endif /* _GLINT_H_ */
229 diff -ur xc.orig/programs/Xserver/hw/xfree86/drivers/glint/glint_driver.c xc/programs/Xserver/hw/xfree86/drivers/glint/glint_driver.c
230 --- xc.orig/programs/Xserver/hw/xfree86/drivers/glint/glint_driver.c Fri Dec 8 22:58:55 2000
231 +++ xc/programs/Xserver/hw/xfree86/drivers/glint/glint_driver.c Sun Mar 18 21:39:59 2001
232 @@ -2610,8 +2610,17 @@
233 if (!miCreateDefColormap(pScreen))
236 + if (pGlint->Chipset == PCI_VENDOR_3DLABS_CHIP_PERMEDIA3) {
237 + if (!xf86HandleColormaps(pScreen, 256, pScrn->rgbBits,
238 + (pGlint->FBDev) ? fbdevHWLoadPalette :
239 + ((pScrn->depth == 16) ? Permedia3LoadPalette16:Permedia3LoadPalette),
241 + CMAP_RELOAD_ON_MODE_SWITCH |
242 + ((pScrn->overlayFlags & OVERLAY_8_32_PLANAR)
243 + ? 0 : CMAP_PALETTED_TRUECOLOR)))
246 if ((pGlint->Chipset == PCI_VENDOR_3DLABS_CHIP_PERMEDIA2V) ||
247 - (pGlint->Chipset == PCI_VENDOR_3DLABS_CHIP_PERMEDIA3) ||
248 (pGlint->Chipset == PCI_VENDOR_3DLABS_CHIP_PERMEDIA2) ||
249 (pGlint->Chipset == PCI_VENDOR_TI_CHIP_PERMEDIA2)) {
250 if (!xf86HandleColormaps(pScreen, 256, pScrn->rgbBits,
251 @@ -3051,16 +3060,86 @@
253 if (xf86GetVerbosity() > 2)
254 ErrorF("[0x%04x] <- 0x%08x (%s, %d)\n", r, v, file, line);
255 +#if defined(__alpha__)
256 + GLINT_WRITE_REG(v, r);
258 *(volatile CARD32 *)((char *) pGlint->IOBase + r) = v;
263 GLINT_VERB_READ_REG(GLINTPtr pGlint, CARD32 r, char *file, int line)
265 - CARD32 v = *(volatile CARD32 *)((char *) pGlint->IOBase + r);
268 +#if defined(__alpha__)
269 + v = GLINT_READ_REG(r);
271 + v = *(volatile CARD32 *)((char *) pGlint->IOBase + r);
273 if (xf86GetVerbosity() > 2)
274 ErrorF("[0x%04x] -> 0x%08x (%s, %d)\n", r, v, file, line);
279 +void GLINT_MoveBYTES(
280 + register CARD32* dest,
281 + register unsigned char* src,
282 + register int dwords)
284 +#if defined(__alpha__)
285 + write_mem_barrier();
295 +void GLINT_MoveWORDS(
296 + register CARD32* dest,
297 + register unsigned short* src,
298 + register int dwords)
300 +#if defined(__alpha__)
301 + write_mem_barrier();
303 + while(dwords & ~0x01) {
305 + *(dest + 1) = *(src + 1);
315 +void GLINT_MoveDWORDS(
316 + register CARD32* dest,
317 + register CARD32* src,
318 + register int dwords)
320 +#if defined(__alpha__)
321 + write_mem_barrier();
323 + while(dwords & ~0x03) {
325 + *(dest + 1) = *(src + 1);
326 + *(dest + 2) = *(src + 2);
327 + *(dest + 3) = *(src + 3);
332 + if (!dwords) return;
334 + if (dwords == 1) return;
335 + *(dest + 1) = *(src + 1);
336 + if (dwords == 2) return;
337 + *(dest + 2) = *(src + 2);
339 diff -ur xc.orig/programs/Xserver/hw/xfree86/drivers/glint/glint_regs.h xc/programs/Xserver/hw/xfree86/drivers/glint/glint_regs.h
340 --- xc.orig/programs/Xserver/hw/xfree86/drivers/glint/glint_regs.h Fri Oct 27 21:23:07 2000
341 +++ xc/programs/Xserver/hw/xfree86/drivers/glint/glint_regs.h Sun Mar 18 17:05:13 2001
342 @@ -1201,10 +1201,17 @@
344 #define GLINT_SLOW_WRITE_REG(v,r) \
346 - GLINTDACDelay(5); \
350 GLINT_WRITE_REG(v,r); \
351 - GLINTDACDelay(5); \
354 +#define GLINT_SET_INDEX(index) \
356 + GLINT_SLOW_WRITE_REG(((index)>>8)&0xff,PM2VDACIndexRegHigh); \
357 + GLINT_SLOW_WRITE_REG((index)&0xff,PM2VDACIndexRegLow); \
360 #define GLINT_SECONDARY_SLOW_WRITE_REG(v,r) \
362 diff -ur xc.orig/programs/Xserver/hw/xfree86/drivers/glint/pm2_accel.c xc/programs/Xserver/hw/xfree86/drivers/glint/pm2_accel.c
363 --- xc.orig/programs/Xserver/hw/xfree86/drivers/glint/pm2_accel.c Fri Mar 31 17:55:43 2000
364 +++ xc/programs/Xserver/hw/xfree86/drivers/glint/pm2_accel.c Sun Mar 18 16:55:14 2001
366 Permedia2SubsequentColorExpandScanline;
369 - infoPtr->ColorExpandRange = MAX_FIFO_ENTRIES;
371 infoPtr->WriteBitmap = Permedia2WriteBitmap;
373 if (pScrn->bitsPerPixel == 8)
374 @@ -427,10 +425,14 @@
377 while (GLINT_READ_REG(DMACount) != 0);
379 - GLINT_WRITE_REG(0, GlintSync);
381 + GLINT_SLOW_WRITE_REG(0xc00, FilterMode);
384 + GLINT_SLOW_WRITE_REG(0, GlintSync);
387 - while(GLINT_READ_REG(OutFIFOWords) == 0);
388 + while(GLINT_READ_REG(OutFIFOWords) == 0);
389 #define Sync_tag 0x188
390 } while (GLINT_READ_REG(OutputFIFO) != Sync_tag);
393 TRACE_EXIT("Permedia2SubsequentFillRectSolid");
396 -static void MoveBYTE(
397 - register CARD32* dest,
398 - register unsigned char* src,
399 - register int dwords
410 -static void MoveWORDS(
411 - register CARD32* dest,
412 - register unsigned short* src,
413 - register int dwords
416 - while(dwords & ~0x01) {
418 - *(dest + 1) = *(src + 1);
425 - case 1: *dest = *src;
430 -static void MoveDWORDS(
431 - register CARD32* dest,
432 - register CARD32* src,
433 - register int dwords )
435 - while(dwords & ~0x03) {
437 - *(dest + 1) = *(src + 1);
438 - *(dest + 2) = *(src + 2);
439 - *(dest + 3) = *(src + 3);
444 - if (!dwords) return;
446 - if (dwords == 1) return;
447 - *(dest + 1) = *(src + 1);
448 - if (dwords == 2) return;
449 - *(dest + 2) = *(src + 2);
454 Permedia2SetupForMono8x8PatternFill24bpp(ScrnInfoPtr pScrn,
455 int patternx, int patterny,
456 @@ -1117,10 +1062,10 @@
457 Permedia2SetClippingRectangle(pScrn,x+skipleft,y,x+w,y+h);
459 if (pScrn->bitsPerPixel == 24) {
464 - DO_PLANEMASK(planemask);
465 + DO_PLANEMASK(planemask);
468 Permedia2LoadCoord(pScrn, x&0xFFFF, y, w, h);
469 @@ -1137,39 +1082,40 @@
471 GLINT_WRITE_REG(UNIT_ENABLE, ColorDDAMode);
472 GLINT_WRITE_REG(BitMaskPackingEachScanline|
473 - pGlint->RasterizerSwap,RasterizerMode);
474 + pGlint->RasterizerSwap,RasterizerMode);
478 /* >>>>> set fg <<<<<<<< */
480 - if ((pScrn->bitsPerPixel != 24) && (rop == GXcopy)) {
481 - GLINT_WRITE_REG(fg, FBBlockColor);
482 + if ((pScrn->bitsPerPixel != 24) && (rop == GXcopy)) {
483 + GLINT_WRITE_REG(fg, FBBlockColor);
485 - GLINT_WRITE_REG(fg, ConstantColor);
486 + GLINT_WRITE_REG(fg, ConstantColor);
488 } else if(rop == GXcopy) {
489 - /* >>>>> set bg <<<<<<< */
490 - /* >>>>> draw rect (x,y,w,h) */
492 - if ((pScrn->bitsPerPixel != 24) && (rop == GXcopy)) {
493 + /* >>>>> set bg <<<<<<< */
494 + /* >>>>> draw rect (x,y,w,h) */
496 + if ((pScrn->bitsPerPixel != 24) && (rop == GXcopy)) {
497 GLINT_WRITE_REG(bg, FBBlockColor);
499 GLINT_WRITE_REG(bg, ConstantColor);
501 - GLINT_WRITE_REG(PrimitiveRectangle | XPositive | YPositive |mode,Render);
502 + GLINT_WRITE_REG(PrimitiveRectangle | XPositive | YPositive |mode,
504 /* >>>>>> set fg <<<<<< */
506 - if ((pScrn->bitsPerPixel != 24) && (rop == GXcopy)) {
507 + if ((pScrn->bitsPerPixel != 24) && (rop == GXcopy)) {
508 GLINT_WRITE_REG(fg, FBBlockColor);
510 GLINT_WRITE_REG(fg, ConstantColor);
515 /* >>>>> set fg <<<<<<< */
517 - if ((pScrn->bitsPerPixel != 24) && (rop == GXcopy)) {
518 + if ((pScrn->bitsPerPixel != 24) && (rop == GXcopy)) {
519 GLINT_WRITE_REG(fg, FBBlockColor);
521 GLINT_WRITE_REG(fg, ConstantColor);
522 @@ -1188,8 +1134,8 @@
524 /* 0x0D is the TAG value for BitMaskPattern */
525 GLINT_WRITE_REG(((dwords - 1) << 16) | 0x0D, OutputFIFO);
526 - MoveDWORDS((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
527 - (CARD32 *)srcpntr, dwords);
528 + GLINT_MoveDWORDS((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
529 + (CARD32 *)srcpntr, dwords);
533 @@ -1198,12 +1144,13 @@
534 /* >>>>>> invert bitmask and set bg <<<<<<<< */
537 - if ((pScrn->bitsPerPixel != 24) && (rop == GXcopy)) {
538 - GLINT_WRITE_REG(InvertBitMask|pGlint->RasterizerSwap,RasterizerMode);
539 + if ((pScrn->bitsPerPixel != 24) && (rop == GXcopy)) {
540 + GLINT_WRITE_REG(InvertBitMask|pGlint->RasterizerSwap,
542 GLINT_WRITE_REG(bg, FBBlockColor);
544 - GLINT_WRITE_REG(InvertBitMask|BitMaskPackingEachScanline|
545 - pGlint->RasterizerSwap, RasterizerMode);
546 + GLINT_WRITE_REG(InvertBitMask|BitMaskPackingEachScanline|
547 + pGlint->RasterizerSwap, RasterizerMode);
548 GLINT_WRITE_REG(bg, ConstantColor);
551 @@ -1276,13 +1223,15 @@
553 address = ((y * pScrn->displayWidth) + x) >> 2;
556 GLINT_WRITE_REG(address, TextureDownloadOffset);
557 while(count >= MAX_FIFO_ENTRIES) {
558 GLINT_WAIT(MAX_FIFO_ENTRIES);
559 /* (0x11 << 4) | 0x0D is the TAG for TextureData */
560 GLINT_WRITE_REG(((MAX_FIFO_ENTRIES - 2) << 16) | (0x11 << 4) |
562 - MoveDWORDS((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
564 + (CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
565 (CARD32*)srcp, MAX_FIFO_ENTRIES - 1);
566 count -= MAX_FIFO_ENTRIES - 1;
567 address += MAX_FIFO_ENTRIES - 1;
568 @@ -1293,7 +1242,8 @@
569 /* (0x11 << 4) | 0x0D is the TAG for TextureData */
570 GLINT_WRITE_REG(((count - 1) << 16) | (0x11 << 4) | 0x0D,
572 - MoveDWORDS((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
574 + (CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
575 (CARD32*)srcp, count);
578 @@ -1304,7 +1254,7 @@
580 char align = (x & pGlint->bppalign);
584 GLINT_WRITE_REG(UNIT_DISABLE, ColorDDAMode);
587 @@ -1329,7 +1279,8 @@
588 /* (0x15 << 4) | 0x05 is the TAG for FBSourceData */
589 GLINT_WRITE_REG(((MAX_FIFO_ENTRIES - 2) << 16) | (0x15 << 4) |
591 - MoveDWORDS((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
593 + (CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
594 (CARD32*)srcp, MAX_FIFO_ENTRIES - 1);
595 count -= MAX_FIFO_ENTRIES - 1;
596 srcp += MAX_FIFO_ENTRIES - 1;
597 @@ -1339,7 +1290,8 @@
598 /* (0x15 << 4) | 0x05 is the TAG for FBSourceData */
599 GLINT_WRITE_REG(((count - 1) << 16) | (0x15 << 4) |
601 - MoveDWORDS((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
603 + (CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
604 (CARD32*)srcp, count);
607 @@ -1353,7 +1305,8 @@
608 /* (0x15 << 4) | 0x05 is the TAG for FBSourceData */
609 GLINT_WRITE_REG(((MAX_FIFO_ENTRIES - 2) << 16) | (0x15 << 4) |
611 - MoveBYTE((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
613 + (CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
614 (unsigned char *)srcpbyte, MAX_FIFO_ENTRIES - 1);
615 count -= MAX_FIFO_ENTRIES - 1;
616 srcpbyte += MAX_FIFO_ENTRIES - 1;
617 @@ -1363,7 +1316,8 @@
618 /* (0x15 << 4) | 0x05 is the TAG for FBSourceData */
619 GLINT_WRITE_REG(((count - 1) << 16) | (0x15 << 4) |
621 - MoveBYTE((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
623 + (CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
624 (unsigned char *)srcpbyte, count);
627 @@ -1435,13 +1389,15 @@
629 address = ((y * pScrn->displayWidth) + x) >> 1;
632 GLINT_WRITE_REG(address, TextureDownloadOffset);
633 while(count >= MAX_FIFO_ENTRIES) {
634 GLINT_WAIT(MAX_FIFO_ENTRIES);
635 /* (0x11 << 4) | 0x0D is the TAG for TextureData */
636 GLINT_WRITE_REG(((MAX_FIFO_ENTRIES - 2) << 16) | (0x11 << 4) |
638 - MoveDWORDS((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
640 + (CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
641 (CARD32*)srcp, MAX_FIFO_ENTRIES - 1);
642 count -= MAX_FIFO_ENTRIES - 1;
643 address += MAX_FIFO_ENTRIES - 1;
644 @@ -1452,7 +1408,8 @@
645 /* (0x11 << 4) | 0x0D is the TAG for TextureData */
646 GLINT_WRITE_REG(((count - 1) << 16) | (0x11 << 4) | 0x0D,
648 - MoveDWORDS((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
650 + (CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
651 (CARD32*)srcp, count);
654 @@ -1488,7 +1445,8 @@
655 /* (0x15 << 4) | 0x05 is the TAG for FBSourceData */
656 GLINT_WRITE_REG(((MAX_FIFO_ENTRIES - 2) << 16) | (0x15 << 4) |
658 - MoveDWORDS((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
660 + (CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
661 (CARD32*)srcp, MAX_FIFO_ENTRIES - 1);
662 count -= MAX_FIFO_ENTRIES - 1;
663 srcp += MAX_FIFO_ENTRIES - 1;
664 @@ -1498,7 +1456,8 @@
665 /* (0x15 << 4) | 0x05 is the TAG for FBSourceData */
666 GLINT_WRITE_REG(((count - 1) << 16) | (0x15 << 4) |
668 - MoveDWORDS((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
670 + (CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
671 (CARD32*)srcp, count);
674 @@ -1512,7 +1471,8 @@
675 /* (0x15 << 4) | 0x05 is the TAG for FBSourceData */
676 GLINT_WRITE_REG(((MAX_FIFO_ENTRIES - 2) << 16) | (0x15 << 4) |
678 - MoveWORDS((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
680 + (CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
681 (unsigned short *)srcpword, MAX_FIFO_ENTRIES - 1);
682 count -= MAX_FIFO_ENTRIES - 1;
683 srcpword += MAX_FIFO_ENTRIES - 1;
684 @@ -1522,7 +1482,8 @@
685 /* (0x15 << 4) | 0x05 is the TAG for FBSourceData */
686 GLINT_WRITE_REG(((count - 1) << 16) | (0x15 << 4) |
688 - MoveWORDS((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
690 + (CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
691 (unsigned short *)srcpword, count);
694 @@ -1590,7 +1551,8 @@
695 /* (0x15 << 4) | 0x05 is the TAG for FBSourceData */
696 GLINT_WRITE_REG(((MAX_FIFO_ENTRIES - 2) << 16) | (0x15 << 4) |
698 - MoveBYTE((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
700 + (CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
701 (unsigned char *)srcpbyte, MAX_FIFO_ENTRIES - 1);
702 count -= MAX_FIFO_ENTRIES - 1;
703 srcpbyte += MAX_FIFO_ENTRIES - 1;
704 @@ -1600,7 +1562,8 @@
705 /* (0x15 << 4) | 0x05 is the TAG for FBSourceData */
706 GLINT_WRITE_REG(((count - 1) << 16) | (0x15 << 4) |
708 - MoveBYTE((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
710 + (CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
711 (unsigned char *)srcpbyte, count);
714 @@ -1613,7 +1576,8 @@
715 /* (0x15 << 4) | 0x05 is the TAG for FBSourceData */
716 GLINT_WRITE_REG(((MAX_FIFO_ENTRIES - 2) << 16) | (0x15 << 4) |
718 - MoveDWORDS((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
720 + (CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
721 (CARD32*)srcp, MAX_FIFO_ENTRIES - 1);
722 count -= MAX_FIFO_ENTRIES - 1;
723 srcp += MAX_FIFO_ENTRIES - 1;
724 @@ -1623,7 +1587,8 @@
725 /* (0x15 << 4) | 0x05 is the TAG for FBSourceData */
726 GLINT_WRITE_REG(((count - 1) << 16) | (0x15 << 4) |
728 - MoveDWORDS((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
730 + (CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
731 (CARD32*)srcp, count);
734 @@ -1689,13 +1654,15 @@
736 address = (y * pScrn->displayWidth) + x;
739 GLINT_WRITE_REG(address, TextureDownloadOffset);
740 while(count >= MAX_FIFO_ENTRIES) {
741 GLINT_WAIT(MAX_FIFO_ENTRIES);
742 /* (0x11 << 4) | 0x0D is the TAG for TextureData */
743 GLINT_WRITE_REG(((MAX_FIFO_ENTRIES - 2) << 16) | (0x11 << 4) |
745 - MoveDWORDS((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
747 + (CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
748 (CARD32*)srcp, MAX_FIFO_ENTRIES - 1);
749 count -= MAX_FIFO_ENTRIES - 1;
750 address += MAX_FIFO_ENTRIES - 1;
751 @@ -1706,7 +1673,8 @@
752 /* (0x11 << 4) | 0x0D is the TAG for TextureData */
753 GLINT_WRITE_REG(((count - 1) << 16) | (0x11 << 4) | 0x0D,
755 - MoveDWORDS((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
757 + (CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
758 (CARD32*)srcp, count);
761 @@ -1732,7 +1700,8 @@
762 /* (0x15 << 4) | 0x05 is the TAG for FBSourceData */
763 GLINT_WRITE_REG(((MAX_FIFO_ENTRIES - 2) << 16) | (0x15 << 4) |
765 - MoveDWORDS((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
767 + (CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
768 (CARD32*)srcp, MAX_FIFO_ENTRIES - 1);
769 count -= MAX_FIFO_ENTRIES - 1;
770 srcp += MAX_FIFO_ENTRIES - 1;
771 @@ -1742,7 +1711,8 @@
772 /* (0x15 << 4) | 0x05 is the TAG for FBSourceData */
773 GLINT_WRITE_REG(((count - 1) << 16) | (0x15 << 4) |
775 - MoveDWORDS((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
777 + (CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
778 (CARD32*)srcp, count);
781 diff -ur xc.orig/programs/Xserver/hw/xfree86/drivers/glint/pm2ramdac.c xc/programs/Xserver/hw/xfree86/drivers/glint/pm2ramdac.c
782 --- xc.orig/programs/Xserver/hw/xfree86/drivers/glint/pm2ramdac.c Sat Jul 17 23:26:57 1999
783 +++ xc/programs/Xserver/hw/xfree86/drivers/glint/pm2ramdac.c Sun Mar 18 22:26:08 2001
784 @@ -104,16 +104,21 @@
787 GLINTPtr pGlint = GLINTPTR(pScrn);
788 - int i, index, shift;
789 + int i, index, shift = 0, j, repeat = 1;
791 - shift = (pScrn->depth == 15) ? 3 : 0;
792 + if (pScrn->depth == 15) {
797 for(i = 0; i < numColors; i++) {
799 - Permedia2WriteAddress(pScrn, index << shift);
800 - Permedia2WriteData(pScrn, colors[index].red);
801 - Permedia2WriteData(pScrn, colors[index].green);
802 - Permedia2WriteData(pScrn, colors[index].blue);
803 + for (j = 0; j < repeat; j++) {
804 + Permedia2WriteAddress(pScrn, (index << shift)+j);
805 + Permedia2WriteData(pScrn, colors[index].red);
806 + Permedia2WriteData(pScrn, colors[index].green);
807 + Permedia2WriteData(pScrn, colors[index].blue);
810 GLINT_SLOW_WRITE_REG(index, TexelLUTIndex);
811 GLINT_SLOW_WRITE_REG((colors[index].red & 0xFF) |
812 @@ -132,14 +137,16 @@
815 GLINTPtr pGlint = GLINTPTR(pScrn);
819 for(i = 0; i < numColors; i++) {
821 - Permedia2WriteAddress(pScrn, index << 2);
822 - Permedia2WriteData(pScrn, colors[index >> 1].red);
823 - Permedia2WriteData(pScrn, colors[index].green);
824 - Permedia2WriteData(pScrn, colors[index >> 1].blue);
825 + for (j = 0; j < 4; j++) {
826 + Permedia2WriteAddress(pScrn, (index << 2)+j);
827 + Permedia2WriteData(pScrn, colors[index >> 1].red);
828 + Permedia2WriteData(pScrn, colors[index].green);
829 + Permedia2WriteData(pScrn, colors[index >> 1].blue);
831 GLINT_SLOW_WRITE_REG(index, TexelLUTIndex);
832 GLINT_SLOW_WRITE_REG((colors[index].red & 0xFF) |
833 ((colors[index].green & 0xFF) << 8) |
834 @@ -147,10 +154,12 @@
838 - Permedia2WriteAddress(pScrn, index << 3);
839 - Permedia2WriteData(pScrn, colors[index].red);
840 - Permedia2WriteData(pScrn, colors[(index << 1) + 1].green);
841 - Permedia2WriteData(pScrn, colors[index].blue);
842 + for (j = 0; j < 4; j++) {
843 + Permedia2WriteAddress(pScrn, (index << 3)+j);
844 + Permedia2WriteData(pScrn, colors[index].red);
845 + Permedia2WriteData(pScrn, colors[(index << 1) + 1].green);
846 + Permedia2WriteData(pScrn, colors[index].blue);
851 diff -ur xc.orig/programs/Xserver/hw/xfree86/drivers/glint/pm2v_dac.c xc/programs/Xserver/hw/xfree86/drivers/glint/pm2v_dac.c
852 --- xc.orig/programs/Xserver/hw/xfree86/drivers/glint/pm2v_dac.c Sat Mar 17 17:57:15 2001
853 +++ xc/programs/Xserver/hw/xfree86/drivers/glint/pm2v_dac.c Sun Mar 18 17:43:30 2001
858 - /* A 2 color cursor uses last 2 indexes into hardware cursor palette */
859 + GLINTPtr pGlint = GLINTPTR(pScrn);
861 + if (pGlint->Chipset == PCI_VENDOR_3DLABS_CHIP_PERMEDIA3) {
862 + /* PM3 uses last 2 indexes into hardware cursor palette fg first...*/
863 Permedia2vOutIndReg(pScrn, PM2VDACRDCursorPalette+39, 0x00, (fg>>16)&0xff);
864 Permedia2vOutIndReg(pScrn, PM2VDACRDCursorPalette+40, 0x00, (fg>>8)&0xff);
865 Permedia2vOutIndReg(pScrn, PM2VDACRDCursorPalette+41, 0x00, fg & 0xff);
867 Permedia2vOutIndReg(pScrn, PM2VDACRDCursorPalette+42, 0x00, (bg>>16)&0xff);
868 Permedia2vOutIndReg(pScrn, PM2VDACRDCursorPalette+43, 0x00, (bg>>8)&0xff);
869 Permedia2vOutIndReg(pScrn, PM2VDACRDCursorPalette+44, 0x00, bg & 0xff);
871 + /* PM2v uses first 2 indexes into hardware cursor palette bg first...*/
872 + Permedia2vOutIndReg(pScrn, PM2VDACRDCursorPalette+0, 0x00, (bg>>16)&0xff);
873 + Permedia2vOutIndReg(pScrn, PM2VDACRDCursorPalette+1, 0x00, (bg>>8)&0xff);
874 + Permedia2vOutIndReg(pScrn, PM2VDACRDCursorPalette+2, 0x00, bg & 0xff);
876 + Permedia2vOutIndReg(pScrn, PM2VDACRDCursorPalette+3, 0x00, (fg>>16)&0xff);
877 + Permedia2vOutIndReg(pScrn, PM2VDACRDCursorPalette+4, 0x00, (fg>>8)&0xff);
878 + Permedia2vOutIndReg(pScrn, PM2VDACRDCursorPalette+5, 0x00, fg & 0xff);
883 diff -ur xc.orig/programs/Xserver/hw/xfree86/drivers/glint/pm2vramdac.c xc/programs/Xserver/hw/xfree86/drivers/glint/pm2vramdac.c
884 --- xc.orig/programs/Xserver/hw/xfree86/drivers/glint/pm2vramdac.c Fri Feb 12 17:52:05 1999
885 +++ xc/programs/Xserver/hw/xfree86/drivers/glint/pm2vramdac.c Sun Mar 18 16:51:30 2001
887 GLINTPtr pGlint = GLINTPTR(pScrn);
888 unsigned char tmp = 0x00;
890 - GLINT_SLOW_WRITE_REG((reg>>8) & 0xff, PM2VDACIndexRegHigh);
891 - GLINT_SLOW_WRITE_REG(reg&0xff, PM2VDACIndexRegLow);
892 + GLINT_SET_INDEX(reg);
895 tmp = GLINT_READ_REG (PM2VDACIndexData) & mask;
897 GLINTPtr pGlint = GLINTPTR(pScrn);
900 - GLINT_SLOW_WRITE_REG (reg&0xff, PM2VDACIndexRegLow);
901 - GLINT_SLOW_WRITE_REG((reg>>8) & 0xff, PM2VDACIndexRegHigh);
902 + GLINT_SET_INDEX(reg);
903 ret = GLINT_READ_REG (PM2VDACIndexData);
906 diff -ur xc.orig/programs/Xserver/hw/xfree86/drivers/glint/pm3_accel.c xc/programs/Xserver/hw/xfree86/drivers/glint/pm3_accel.c
907 --- xc.orig/programs/Xserver/hw/xfree86/drivers/glint/pm3_accel.c Wed Nov 29 11:42:17 2000
908 +++ xc/programs/Xserver/hw/xfree86/drivers/glint/pm3_accel.c Sun Mar 18 20:15:21 2001
910 #include "xaalocal.h" /* For replacements */
913 -#define USE_DIRECT_FIFO_WRITES 1
916 # define TRACE_ENTER(str) ErrorF("pm3_accel: " str " %d\n",pScrn->scrnIndex)
918 int x_offset, int y_offset, int x, int y,
920 /* Color Expansion Fills */
921 -static void Permedia3SetupForCPUToScreenColorExpandFill(ScrnInfoPtr pScrn,
922 - int fg, int bg, int rop,unsigned int planemask);
923 -static void Permedia3SubsequentCPUToScreenColorExpandFill(ScrnInfoPtr pScrn,
924 - int x, int y, int w, int h, int skipleft);
925 +static void Permedia3SetupForScanlineCPUToScreenColorExpandFill(
927 + int fg, int bg, int rop,
928 + unsigned int planemask);
929 +static void Permedia3SubsequentScanlineCPUToScreenColorExpandFill(
930 + ScrnInfoPtr pScrn, int x,
931 + int y, int w, int h, int skipleft);
932 +static void Permedia3SubsequentColorExpandScanline(
935 /* Direct Fifo Bitmap Writes */
936 static void Permedia3WriteBitmap(ScrnInfoPtr pScrn, int x, int y, int w, int h,
937 unsigned char *src, int srcwidth, int skipleft,
938 int fg, int bg, int rop,unsigned int planemask);
940 -static void Permedia3SetupForImageWrite(ScrnInfoPtr pScrn, int rop,
941 +static void Permedia3SetupForScanlineImageWrite(ScrnInfoPtr pScrn, int rop,
942 unsigned int planemask, int trans_color,
944 -static void Permedia3SubsequentImageWriteRect(ScrnInfoPtr pScrn,
945 +static void Permedia3SubsequentScanlineImageWriteRect(ScrnInfoPtr pScrn,
946 int x, int y, int w, int h, int skipleft);
947 +static void Permedia3SubsequentImageWriteScanline(ScrnInfoPtr pScrn, int bufno);
948 /* Direct Fifo Pixmap Writes */
949 static void Permedia3WritePixmap(ScrnInfoPtr pScrn, int x, int y, int w, int h,
950 unsigned char *src, int srcwidth, int rop,
951 unsigned int planemask, int transparency_color,
954 +#define MAX_FIFO_ENTRIES 120
957 Permedia3InitializeEngine(ScrnInfoPtr pScrn)
959 @@ -407,51 +415,52 @@
960 infoPtr->SubsequentMono8x8PatternFillRect =
961 Permedia3SubsequentMono8x8PatternFillRect;
963 -#if USE_DIRECT_FIFO_WRITES
964 - /* Direct Fifo Bitmap Writes */
965 + /* Bitmap Writes */
966 infoPtr->WriteBitmapFlags = 0;
967 infoPtr->WriteBitmap = Permedia3WriteBitmap;
970 - /* Color Expand Fills */
971 - infoPtr->CPUToScreenColorExpandFillFlags =
973 - SYNC_AFTER_COLOR_EXPAND |
975 - LEFT_EDGE_CLIPPING |
976 - BIT_ORDER_IN_BYTE_LSBFIRST |
977 - CPU_TRANSFER_BASE_FIXED |
978 - CPU_TRANSFER_PAD_DWORD;
979 - infoPtr->ColorExpandBase = pGlint->IOBase + BitMaskPattern;
980 - infoPtr->ColorExpandRange = 4;
981 - infoPtr->SetupForCPUToScreenColorExpandFill =
982 - Permedia3SetupForCPUToScreenColorExpandFill;
983 - infoPtr->SubsequentCPUToScreenColorExpandFill =
984 - Permedia3SubsequentCPUToScreenColorExpandFill;
986 -#if USE_DIRECT_FIFO_WRITES
987 - /* Direct Fifo Images Writes */
988 + /* Pixmap Writes */
989 infoPtr->WritePixmapFlags = 0;
990 infoPtr->WritePixmap = Permedia3WritePixmap;
993 + /* Color Expand Fills */
994 + infoPtr->ScanlineCPUToScreenColorExpandFillFlags =
995 + LEFT_EDGE_CLIPPING |
996 + LEFT_EDGE_CLIPPING_NEGATIVE_X |
997 + BIT_ORDER_IN_BYTE_LSBFIRST |
998 + CPU_TRANSFER_PAD_DWORD;
1000 + infoPtr->NumScanlineColorExpandBuffers = 1;
1001 + pGlint->ScratchBuffer = xalloc(((pScrn->virtualX+62)/32*4)
1002 + + (pScrn->virtualX
1003 + * pScrn->bitsPerPixel / 8));
1004 + infoPtr->ScanlineColorExpandBuffers =
1005 + pGlint->XAAScanlineColorExpandBuffers;
1006 + pGlint->XAAScanlineColorExpandBuffers[0] =
1007 + pGlint->IOBase + OutputFIFO + 4;
1009 + infoPtr->SetupForScanlineCPUToScreenColorExpandFill =
1010 + Permedia3SetupForScanlineCPUToScreenColorExpandFill;
1011 + infoPtr->SubsequentScanlineCPUToScreenColorExpandFill =
1012 + Permedia3SubsequentScanlineCPUToScreenColorExpandFill;
1013 + infoPtr->SubsequentColorExpandScanline =
1014 + Permedia3SubsequentColorExpandScanline;
1017 - infoPtr->ImageWriteFlags =
1020 - SYNC_AFTER_IMAGE_WRITE |
1022 - LEFT_EDGE_CLIPPING |
1023 - LEFT_EDGE_CLIPPING_NEGATIVE_X |
1024 - BIT_ORDER_IN_BYTE_LSBFIRST |
1025 - CPU_TRANSFER_BASE_FIXED |
1026 - CPU_TRANSFER_PAD_DWORD;
1027 - infoPtr->ImageWriteBase = pGlint->IOBase + PM3FBSourceData;
1028 - infoPtr->ImageWriteRange = 4;
1029 - infoPtr->SetupForImageWrite =
1030 - Permedia3SetupForImageWrite;
1031 - infoPtr->SubsequentImageWriteRect =
1032 - Permedia3SubsequentImageWriteRect;
1034 + infoPtr->ScanlineImageWriteFlags = NO_GXCOPY |
1035 + LEFT_EDGE_CLIPPING |
1036 + LEFT_EDGE_CLIPPING_NEGATIVE_X |
1037 + BIT_ORDER_IN_BYTE_LSBFIRST |
1038 + CPU_TRANSFER_PAD_DWORD;
1039 + infoPtr->NumScanlineImageWriteBuffers = 1;
1040 + infoPtr->ScanlineImageWriteBuffers =
1041 + pGlint->XAAScanlineColorExpandBuffers;
1042 + infoPtr->SetupForScanlineImageWrite =
1043 + Permedia3SetupForScanlineImageWrite;
1044 + infoPtr->SubsequentScanlineImageWriteRect =
1045 + Permedia3SubsequentScanlineImageWriteRect;
1046 + infoPtr->SubsequentImageWriteScanline =
1047 + Permedia3SubsequentImageWriteScanline;
1049 /* Available Framebuffer Area for XAA. */
1052 pScrn->bitsPerPixel / 8);
1053 /* Alan does this ???
1054 AvailFBArea.y2 = ((pGlint->FbMapSize > 16384*1024) ? 16384*1024 :
1055 - pGlint->FbMapSize) / (pScrn->displayWidth
1056 + pGlint->FbMapSize) / (pScrn->displayWidth *
1057 pScrn->bitsPerPixel / 8);
1060 @@ -491,8 +500,12 @@
1063 while (GLINT_READ_REG(DMACount) != 0);
1067 + GLINT_WRITE_REG(3, BroadcastMask); /* hack! this shouldn't be needed */
1068 + GLINT_WRITE_REG(0x400, FilterMode);
1069 GLINT_WRITE_REG(0, GlintSync);
1072 while(GLINT_READ_REG(OutFIFOWords) == 0);
1073 } while (GLINT_READ_REG(OutputFIFO) != PM3SyncTag);
1074 @@ -700,11 +713,15 @@
1077 /* Color Expansion Fills */
1078 -static void Permedia3SetupForCPUToScreenColorExpandFill(ScrnInfoPtr pScrn,
1079 - int fg, int bg, int rop,unsigned int planemask)
1082 +Permedia3SetupForScanlineCPUToScreenColorExpandFill(
1083 + ScrnInfoPtr pScrn,
1086 + unsigned int planemask
1088 GLINTPtr pGlint = GLINTPTR(pScrn);
1089 - TRACE_ENTER("Permedia3SetupForCPUToScreenColorExpandFill");
1092 pGlint->PM3_Render2D =
1093 PM3Render2D_SpanOperation |
1094 @@ -729,14 +746,23 @@
1095 GLINT_WRITE_REG(fg, PM3ForegroundColor);
1096 DO_PLANEMASK(planemask);
1097 GLINT_WRITE_REG(pGlint->PM3_Config2D, PM3Config2D);
1098 - TRACE_EXIT("Permedia3SetupForCPUToScreenColorExpandFill");
1100 -static void Permedia3SubsequentCPUToScreenColorExpandFill(ScrnInfoPtr pScrn,
1101 - int x, int y, int w, int h, int skipleft)
1105 +Permedia3SubsequentScanlineCPUToScreenColorExpandFill(
1106 + ScrnInfoPtr pScrn,
1107 + int x, int y, int w, int h,
1110 GLINTPtr pGlint = GLINTPTR(pScrn);
1111 - TRACE_ENTER("Permedia3SubsequentCPUToScreenColorExpandFill");
1114 + TRACE_ENTER("Permedia2SubsequentScanlineCPUToScreenColorExpandFill");
1116 + pGlint->dwords = ((w + 31) >> 5); /* dwords per scanline */
1118 + pGlint->cpucount = h;
1121 GLINT_WRITE_REG(((y&0x0fff)<<16)|((x+skipleft)&0x0fff), ScissorMinXY);
1122 GLINT_WRITE_REG((((y+h)&0x0fff)<<16)|((x+w)&0x0fff), ScissorMaxXY);
1124 @@ -746,16 +772,60 @@
1125 GLINT_WRITE_REG(pGlint->PM3_Render2D |
1126 PM3Render2D_Width(w) | PM3Render2D_Height(h),
1128 - TRACE_EXIT("Permedia3SubsequentCPUToScreenColorExpandFill");
1131 + if (0) /* force ALPHA to use indirect always */
1133 + if ((pGlint->dwords*h) < MAX_FIFO_ENTRIES)
1136 + /* Turn on direct for less than 120 dword colour expansion */
1137 + pGlint->XAAScanlineColorExpandBuffers[0] = pGlint->IOBase+OutputFIFO+4;
1138 + pGlint->ScanlineDirect = 1;
1139 + GLINT_WRITE_REG(((pGlint->dwords*h)-1)<<16 | 0x0D, OutputFIFO);
1140 + GLINT_WAIT(pGlint->dwords*h);
1142 + /* Use indirect for anything else */
1143 + pGlint->XAAScanlineColorExpandBuffers[0] = pGlint->ScratchBuffer;
1144 + pGlint->ScanlineDirect = 0;
1147 + pGlint->cpucount--;
1151 +Permedia3SubsequentColorExpandScanline(ScrnInfoPtr pScrn, int bufno)
1153 + GLINTPtr pGlint = GLINTPTR(pScrn);
1154 + CARD32 *srcp = (CARD32*)pGlint->XAAScanlineColorExpandBuffers[bufno];
1155 + int dwords = pGlint->dwords;
1157 + if (!pGlint->ScanlineDirect) {
1158 + while(dwords >= MAX_FIFO_ENTRIES) {
1159 + GLINT_WAIT(MAX_FIFO_ENTRIES);
1160 + GLINT_WRITE_REG(((MAX_FIFO_ENTRIES - 2) << 16) | 0x0D, OutputFIFO);
1162 + (CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
1163 + (CARD32*)srcp, MAX_FIFO_ENTRIES - 1);
1164 + dwords -= MAX_FIFO_ENTRIES - 1;
1165 + srcp += MAX_FIFO_ENTRIES - 1;
1168 + GLINT_WAIT(dwords + 1);
1169 + GLINT_WRITE_REG(((dwords - 1) << 16) | 0x0D, OutputFIFO);
1171 + (CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
1172 + (CARD32*)srcp, dwords);
1178 -static void Permedia3SetupForImageWrite(ScrnInfoPtr pScrn, int rop,
1179 +static void Permedia3SetupForScanlineImageWrite(ScrnInfoPtr pScrn, int rop,
1180 unsigned int planemask, int trans_color, int bpp, int depth)
1182 GLINTPtr pGlint = GLINTPTR(pScrn);
1183 - TRACE_ENTER("Permedia3SetupForImageWrite");
1184 + TRACE_ENTER("Permedia3SetupForScanlineImageWrite");
1185 pGlint->PM3_Render2D =
1186 PM3Render2D_SpanOperation |
1187 PM3Render2D_XPositive |
1188 @@ -771,14 +841,18 @@
1190 DO_PLANEMASK(planemask);
1191 GLINT_WRITE_REG(pGlint->PM3_Config2D, PM3Config2D);
1192 - TRACE_EXIT("Permedia3SetupForImageWrite");
1193 + TRACE_EXIT("Permedia3SetupForScanlineImageWrite");
1195 -static void Permedia3SubsequentImageWriteRect(ScrnInfoPtr pScrn,
1197 +static void Permedia3SubsequentScanlineImageWriteRect(ScrnInfoPtr pScrn,
1198 int x, int y, int w, int h, int skipleft)
1200 GLINTPtr pGlint = GLINTPTR(pScrn);
1201 - TRACE_ENTER("Permedia3SubsequentImageWrite");
1203 + TRACE_ENTER("Permedia3SubsequentScanlineImageWrite");
1204 + pGlint->dwords = (((w * pScrn->bitsPerPixel) + 3) >> 2); /* per scanline */
1206 + pGlint->cpucount = h;
1208 GLINT_WRITE_REG(((y&0x0fff)<<16)|((x+skipleft)&0x0fff), ScissorMinXY);
1209 GLINT_WRITE_REG((((y+h)&0x0fff)<<16)|((x+w)&0x0fff), ScissorMaxXY);
1211 @@ -788,18 +862,63 @@
1212 GLINT_WRITE_REG(pGlint->PM3_Render2D |
1213 PM3Render2D_Width(w) | PM3Render2D_Height(h),
1215 - TRACE_EXIT("Permedia3SubsequentImageWrite");
1219 + if (0) /* force ALPHA to use indirect always */
1221 + if (pGlint->dwords < MAX_FIFO_ENTRIES)
1224 + /* Turn on direct for less than 120 dword colour expansion */
1225 + pGlint->XAAScanlineColorExpandBuffers[0] = pGlint->IOBase+OutputFIFO+4;
1226 + pGlint->ScanlineDirect = 1;
1227 + GLINT_WRITE_REG(((pGlint->dwords*h)-1)<<16 | (0x15<<4) | 0x05,
1229 + GLINT_WAIT(pGlint->dwords);
1231 + /* Use indirect for anything else */
1232 + pGlint->XAAScanlineColorExpandBuffers[0] = pGlint->ScratchBuffer;
1233 + pGlint->ScanlineDirect = 0;
1236 -/* Defines for Direct Fifo access */
1237 + pGlint->cpucount--;
1238 + TRACE_EXIT("Permedia3SubsequentScanlineImageWrite");
1241 -#define WriteRange 120
1242 -#define PciRetryWriteRange 1023
1243 -#define WriteBase_Fixed ((CARD32 *)(pGlint->IOBase + PM3FBSourceData))
1244 -#define WriteBase ((CARD32 *)(pGlint->IOBase + OutputFIFO + 4))
1246 +Permedia3SubsequentImageWriteScanline(ScrnInfoPtr pScrn, int bufno)
1248 + GLINTPtr pGlint = GLINTPTR(pScrn);
1249 + int dwords = pGlint->dwords;
1251 -/* Direct Fifo Bitmap Writes */
1252 + if (pGlint->ScanlineDirect) {
1253 + if (pGlint->cpucount--)
1254 + GLINT_WAIT(dwords);
1257 + while(dwords >= MAX_FIFO_ENTRIES) {
1258 + GLINT_WAIT(MAX_FIFO_ENTRIES);
1259 + GLINT_WRITE_REG(((MAX_FIFO_ENTRIES - 2) << 16) | (0x15 << 4) |
1260 + 0x05, OutputFIFO);
1262 + (CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
1263 + (CARD32*)pGlint->XAAScanlineColorExpandBuffers[bufno],
1264 + MAX_FIFO_ENTRIES - 1);
1265 + dwords -= MAX_FIFO_ENTRIES - 1;
1268 + GLINT_WAIT(dwords + 1);
1269 + GLINT_WRITE_REG(((dwords - 1) << 16) | (0x15 << 4) |
1270 + 0x05, OutputFIFO);
1272 + (CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
1273 + (CARD32*)pGlint->XAAScanlineColorExpandBuffers[bufno],
1279 +/* Bitmap Writes */
1282 Permedia3WriteBitmap(ScrnInfoPtr pScrn,
1283 @@ -810,59 +929,85 @@
1284 unsigned int planemask
1288 - int ApertureRange;
1289 + int dwords, count;
1291 GLINTPtr pGlint = GLINTPTR(pScrn);
1292 TRACE_ENTER("Permedia3WriteBitmap");
1296 - dwords = (w + 31) >>5;
1297 - if (pGlint->UsePCIRetry) ApertureRange = PciRetryWriteRange;
1298 - else ApertureRange = WriteRange;
1300 /* width of the stuff to copy in 32 bit words */
1301 - Permedia3SetupForCPUToScreenColorExpandFill(pScrn, fg, bg, rop, planemask);
1302 - Permedia3SubsequentCPUToScreenColorExpandFill(pScrn, x, y, w, h, skipleft);
1303 + dwords = (w + 31) >>5;
1305 - if (dwords > ApertureRange) {
1307 - XAAMoveDWORDS_FixedBase(WriteBase_Fixed, (CARD32*)src, dwords);
1311 - /* the src is exatcly as wide as the target rectangle. We copy all
1312 - * of it, so no need to separate stuff by scanline */
1313 - if(srcwidth == (dwords << 5)) {
1314 - /* decrement contains the number of lines that can be
1315 - * put in the fifo */
1316 - int decrement = ApertureRange/dwords;
1318 - while(h > decrement) {
1319 - GLINT_WAIT(dwords * decrement);
1320 - GLINT_WRITE_REG((((dwords * decrement)-1) << 16) | 0xd,
1322 - XAAMoveDWORDS(WriteBase, (CARD32*)src, dwords * decrement);
1323 - src += (srcwidth * decrement);
1327 - GLINT_WAIT(dwords * h);
1328 - GLINT_WRITE_REG((((dwords * h)-1) << 16) | 0xd, OutputFIFO);
1329 - XAAMoveDWORDS(WriteBase, (CARD32*)src, dwords * h);
1333 - GLINT_WAIT(dwords);
1334 - GLINT_WRITE_REG(((dwords-1) << 16) | 0xd, OutputFIFO);
1335 - XAAMoveDWORDS(WriteBase, (CARD32*)src, dwords);
1340 + pGlint->PM3_Render2D =
1341 + PM3Render2D_SpanOperation |
1342 + PM3Render2D_XPositive |
1343 + PM3Render2D_YPositive |
1344 + PM3Render2D_Operation_SyncOnBitMask;
1345 + pGlint->PM3_Config2D =
1346 + PM3Config2D_UserScissorEnable |
1347 + PM3Config2D_UseConstantSource |
1348 + PM3Config2D_ForegroundROPEnable |
1349 + PM3Config2D_ForegroundROP(rop) |
1350 + PM3Config2D_FBWriteEnable;
1351 + if ((rop!=GXclear)&&(rop!=GXset)&&(rop!=GXcopy)&&(rop!=GXcopyInverted))
1352 + pGlint->PM3_Config2D |= PM3Config2D_FBDestReadEnable;
1355 + pGlint->PM3_Config2D |= PM3Config2D_OpaqueSpan;
1357 + GLINT_WRITE_REG(bg, BackgroundColor);
1359 + else GLINT_WAIT(7);
1360 + GLINT_WRITE_REG(fg, PM3ForegroundColor);
1361 + DO_PLANEMASK(planemask);
1362 + GLINT_WRITE_REG(pGlint->PM3_Config2D, PM3Config2D);
1363 + GLINT_WRITE_REG(((y&0x0fff)<<16)|((x+skipleft)&0x0fff), ScissorMinXY);
1364 + GLINT_WRITE_REG((((y+h)&0x0fff)<<16)|((x+w)&0x0fff), ScissorMaxXY);
1366 + PM3RectanglePosition_XOffset(x) |
1367 + PM3RectanglePosition_YOffset(y),
1368 + PM3RectanglePosition);
1369 + GLINT_WRITE_REG(pGlint->PM3_Render2D |
1370 + PM3Render2D_Width(w) | PM3Render2D_Height(h),
1374 + mem_barrier(); /* dunno why, but this helps on older Alpha CPUs */
1379 + srcp = (CARD32*)src;
1380 + while(count >= MAX_FIFO_ENTRIES) {
1381 + GLINT_WAIT(MAX_FIFO_ENTRIES);
1382 + GLINT_WRITE_REG(((MAX_FIFO_ENTRIES - 2) << 16) |
1383 + 0x0D, OutputFIFO);
1385 + (CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
1386 + (CARD32*)srcp, MAX_FIFO_ENTRIES - 1);
1387 + count -= MAX_FIFO_ENTRIES - 1;
1388 + srcp += MAX_FIFO_ENTRIES - 1;
1391 + GLINT_WAIT(count + 1);
1392 + GLINT_WRITE_REG(((count - 1) << 16) | 0x0D, OutputFIFO);
1394 + (CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
1395 + (CARD32*)srcp, count);
1400 + Permedia3DisableClipping(pScrn);
1401 + Permedia3Sync(pScrn);
1403 TRACE_EXIT("Permedia3WriteBitmap");
1405 -/* Direct Fifo Images Writes */
1407 +/* Pixmap Writes */
1410 Permedia3WritePixmap(
1411 @@ -876,10 +1021,10 @@
1416 + int dwords, count;
1417 int skipleft = (long)src & 0x03L;
1419 - int ApertureRange;
1421 GLINTPtr pGlint = GLINTPTR(pScrn);
1422 TRACE_ENTER("Permedia3WritePixmap");
1424 @@ -896,48 +1041,67 @@
1426 src = (unsigned char*)((long)src & ~0x03L);
1428 - Permedia3SetupForImageWrite(pScrn, rop, planemask, trans, bpp, depth);
1429 - Permedia3SubsequentImageWriteRect(pScrn, x, y, w, h, skipleft);
1431 + pGlint->PM3_Render2D =
1432 + PM3Render2D_SpanOperation |
1433 + PM3Render2D_XPositive |
1434 + PM3Render2D_YPositive |
1435 + PM3Render2D_Operation_SyncOnHostData;
1436 + pGlint->PM3_Config2D =
1437 + PM3Config2D_UserScissorEnable |
1438 + PM3Config2D_ForegroundROPEnable |
1439 + PM3Config2D_ForegroundROP(rop) |
1440 + PM3Config2D_FBWriteEnable;
1441 + if ((rop!=GXclear)&&(rop!=GXset)&&(rop!=GXcopy)&&(rop!=GXcopyInverted))
1442 + pGlint->PM3_Config2D |= PM3Config2D_FBDestReadEnable;
1444 + DO_PLANEMASK(planemask);
1445 + GLINT_WRITE_REG(pGlint->PM3_Config2D, PM3Config2D);
1446 + GLINT_WRITE_REG(((y&0x0fff)<<16)|((x+skipleft)&0x0fff), ScissorMinXY);
1447 + GLINT_WRITE_REG((((y+h)&0x0fff)<<16)|((x+w)&0x0fff), ScissorMaxXY);
1449 + PM3RectanglePosition_XOffset(x) |
1450 + PM3RectanglePosition_YOffset(y),
1451 + PM3RectanglePosition);
1452 + GLINT_WRITE_REG(pGlint->PM3_Render2D |
1453 + PM3Render2D_Width(w) | PM3Render2D_Height(h),
1457 + mem_barrier(); /* dunno why, but this helps on older Alpha CPUs */
1460 /* width of the stuff to copy in 32 bit words */
1461 dwords = ((w * Bpp) + 3) >> 2;
1462 - if (pGlint->UsePCIRetry) ApertureRange = PciRetryWriteRange;
1463 - else ApertureRange = WriteRange;
1465 - if (dwords > ApertureRange) {
1467 - XAAMoveDWORDS_FixedBase(WriteBase_Fixed, (CARD32*)src, dwords);
1471 - /* the src is exatcly as wide as the target rectangle. We copy all
1472 - * of it, so no need to separate stuff by scanline */
1473 - if(srcwidth == (dwords << 2)) {
1474 - /* decrement contains the number of lines that can be
1475 - * put in the fifo */
1476 - int decrement = ApertureRange/dwords;
1478 - while(h > decrement) {
1479 - GLINT_WAIT(dwords * decrement);
1480 - GLINT_WRITE_REG((((dwords * decrement)-1) << 16) | 0x155,
1482 - XAAMoveDWORDS(WriteBase, (CARD32*)src, dwords * decrement);
1483 - src += (srcwidth * decrement);
1487 - GLINT_WAIT(dwords * h);
1488 - GLINT_WRITE_REG((((dwords * h)-1) << 16) | 0x155, OutputFIFO);
1489 - XAAMoveDWORDS(WriteBase, (CARD32*)src, dwords * h);
1493 - GLINT_WAIT(dwords);
1494 - GLINT_WRITE_REG(((dwords-1) << 16) | 0x155, OutputFIFO);
1495 - XAAMoveDWORDS(WriteBase, (CARD32*)src, dwords);
1501 + srcp = (CARD32*)src;
1502 + while(count >= MAX_FIFO_ENTRIES) {
1503 + GLINT_WAIT(MAX_FIFO_ENTRIES);
1504 + /* (0x15 << 4) | 0x05 is the TAG for FBSourceData */
1505 + GLINT_WRITE_REG(((MAX_FIFO_ENTRIES - 2) << 16) | (0x15 << 4) |
1506 + 0x05, OutputFIFO);
1508 + (CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
1509 + (CARD32*)srcp, MAX_FIFO_ENTRIES - 1);
1510 + count -= MAX_FIFO_ENTRIES - 1;
1511 + srcp += MAX_FIFO_ENTRIES - 1;
1514 + GLINT_WAIT(count + 1);
1515 + /* (0x15 << 4) | 0x05 is the TAG for FBSourceData */
1516 + GLINT_WRITE_REG(((count - 1) << 16) | (0x15 << 4) |
1517 + 0x05, OutputFIFO);
1519 + (CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
1520 + (CARD32*)srcp, count);
1525 + Permedia3DisableClipping(pScrn);
1526 + Permedia3Sync(pScrn);
1528 TRACE_EXIT("Permedia3WritePixmap");
1530 diff -ur xc.orig/programs/Xserver/hw/xfree86/drivers/glint/pm3_dac.c xc/programs/Xserver/hw/xfree86/drivers/glint/pm3_dac.c
1531 --- xc.orig/programs/Xserver/hw/xfree86/drivers/glint/pm3_dac.c Sat Mar 17 17:57:15 2001
1532 +++ xc/programs/Xserver/hw/xfree86/drivers/glint/pm3_dac.c Sun Mar 18 21:35:54 2001
1534 pReg->glintRegs[VClkCtl >> 3] = (GLINT_READ_REG(VClkCtl) & 0xFFFFFFFC);
1535 pReg->glintRegs[PMScreenBase >> 3] = 0;
1537 - pReg->glintRegs[ChipConfig >> 3] = GLINT_READ_REG(ChipConfig) & 0xFFFFFFDD;
1538 + pReg->glintRegs[ChipConfig >> 3] = GLINT_READ_REG(ChipConfig) & 0xFFFFFFFD;
1539 pReg->DacRegs[PM2VDACRDDACControl] = 0x00;
1542 @@ -524,4 +524,80 @@
1543 Permedia2vOutIndReg(pScrn, PM2VDACRDDClk0PostScale, 0x00,
1544 glintReg->DacRegs[PM2VDACRDDClk0PostScale]);
1545 Permedia2vOutIndReg(pScrn, PM2VDACIndexClockControl, 0x00, temp|0x03);
1548 +void Permedia3LoadPalette(
1549 + ScrnInfoPtr pScrn,
1555 +#if 0 /* NOT YET */
1556 + GLINTPtr pGlint = GLINTPTR(pScrn);
1558 + int i, index, shift = 0, j, repeat = 1;
1560 + if (pScrn->depth == 15) {
1565 + for(i = 0; i < numColors; i++) {
1566 + index = indices[i];
1567 + for (j = 0; j < repeat; j++) {
1568 + Permedia2WriteAddress(pScrn, (index << shift)+j);
1569 + Permedia2WriteData(pScrn, colors[index].red);
1570 + Permedia2WriteData(pScrn, colors[index].green);
1571 + Permedia2WriteData(pScrn, colors[index].blue);
1573 + /* for video i/o */
1574 +#if 0 /* NOT YET */
1575 + GLINT_SLOW_WRITE_REG(index, PM3LUTIndex);
1576 + GLINT_SLOW_WRITE_REG((colors[index].red & 0xFF) |
1577 + ((colors[index].green & 0xFF) << 8) |
1578 + ((colors[index].blue & 0xFF) << 16),
1584 +/* special one for 565 mode */
1585 +void Permedia3LoadPalette16(
1586 + ScrnInfoPtr pScrn,
1592 +#if 0 /* NOT YET */
1593 + GLINTPtr pGlint = GLINTPTR(pScrn);
1597 + for(i = 0; i < numColors; i++) {
1598 + index = indices[i];
1599 + for (j = 0; j < 4; j++) {
1600 + Permedia2WriteAddress(pScrn, (index << 2)+j);
1601 + Permedia2WriteData(pScrn, colors[index >> 1].red);
1602 + Permedia2WriteData(pScrn, colors[index].green);
1603 + Permedia2WriteData(pScrn, colors[index >> 1].blue);
1605 +#if 0 /* NOT YET */
1606 + GLINT_SLOW_WRITE_REG(index, PM3LUTIndex);
1607 + GLINT_SLOW_WRITE_REG((colors[index].red & 0xFF) |
1608 + ((colors[index].green & 0xFF) << 8) |
1609 + ((colors[index].blue & 0xFF) << 16),
1614 + for (j = 0; j < 4; j++) {
1615 + Permedia2WriteAddress(pScrn, (index << 3)+j);
1616 + Permedia2WriteData(pScrn, colors[index].red);
1617 + Permedia2WriteData(pScrn, colors[(index << 1) + 1].green);
1618 + Permedia2WriteData(pScrn, colors[index].blue);
1623 diff -ur xc.orig/programs/Xserver/hw/xfree86/drivers/glint/pm_accel.c xc/programs/Xserver/hw/xfree86/drivers/glint/pm_accel.c
1624 --- xc.orig/programs/Xserver/hw/xfree86/drivers/glint/pm_accel.c Sat Jun 24 14:19:55 2000
1625 +++ xc/programs/Xserver/hw/xfree86/drivers/glint/pm_accel.c Sun Mar 18 16:57:17 2001
1626 @@ -301,62 +301,6 @@
1627 return (XAAInit(pScreen, infoPtr));
1630 -static void MoveBYTE(
1631 - register CARD32* dest,
1632 - register unsigned char* src,
1633 - register int dwords
1644 -static void MoveWORDS(
1645 - register CARD32* dest,
1646 - register unsigned short* src,
1647 - register int dwords
1650 - while(dwords & ~0x01) {
1652 - *(dest + 1) = *(src + 1);
1659 - case 1: *dest = *src;
1664 -static void MoveDWORDS(
1665 - register CARD32* dest,
1666 - register CARD32* src,
1667 - register int dwords )
1669 - while(dwords & ~0x03) {
1671 - *(dest + 1) = *(src + 1);
1672 - *(dest + 2) = *(src + 2);
1673 - *(dest + 3) = *(src + 3);
1678 - if (!dwords) return;
1680 - if (dwords == 1) return;
1681 - *(dest + 1) = *(src + 1);
1682 - if (dwords == 2) return;
1683 - *(dest + 2) = *(src + 2);
1686 static void PermediaLoadCoord(
1689 @@ -779,15 +723,16 @@
1690 while (dwords >= infoRec->ColorExpandRange) {
1691 GLINT_WAIT(infoRec->ColorExpandRange);
1692 GLINT_WRITE_REG((infoRec->ColorExpandRange - 2)<<16 | 0x0D, OutputFIFO);
1693 - MoveDWORDS((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4), src,
1694 - infoRec->ColorExpandRange - 1);
1695 + GLINT_MoveDWORDS((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
1696 + src, infoRec->ColorExpandRange - 1);
1697 dwords -= (infoRec->ColorExpandRange - 1);
1698 src += (infoRec->ColorExpandRange - 1);
1702 GLINT_WRITE_REG((dwords - 1)<<16 | 0x0D, OutputFIFO);
1703 - MoveDWORDS((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4), src,dwords);
1704 + GLINT_MoveDWORDS((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
1707 pGlint->cpucount += 1;
1710 /* (0x11 << 4) | 0x0D is the TAG for TextureData */
1711 GLINT_WRITE_REG(((infoRec->ColorExpandRange - 2) << 16)
1712 | (0x11 << 4) | 0x0D, OutputFIFO);
1713 - MoveDWORDS((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
1715 + (CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
1716 (CARD32*)srcp, infoRec->ColorExpandRange - 1);
1717 count -= infoRec->ColorExpandRange - 1;
1718 address += infoRec->ColorExpandRange - 1;
1720 /* (0x11 << 4) | 0x0D is the TAG for TextureData */
1721 GLINT_WRITE_REG(((count - 1) << 16) | (0x11 << 4) | 0x0D,
1723 - MoveDWORDS((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
1725 + (CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
1726 (CARD32*)srcp, count);
1730 /* (0x15 << 4) | 0x05 is the TAG for FBSourceData */
1731 GLINT_WRITE_REG(((infoRec->ColorExpandRange - 2) << 16) |
1732 (0x15 << 4) | 0x05, OutputFIFO);
1733 - MoveBYTE((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
1735 + (CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
1736 (unsigned char *)srcpbyte, infoRec->ColorExpandRange-1);
1737 count -= infoRec->ColorExpandRange - 1;
1738 srcpbyte += infoRec->ColorExpandRange - 1;
1740 /* (0x15 << 4) | 0x05 is the TAG for FBSourceData */
1741 GLINT_WRITE_REG(((count - 1) << 16) | (0x15 << 4) |
1743 - MoveBYTE((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
1745 + (CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
1746 (unsigned char *)srcpbyte, count);
1749 @@ -1038,7 +987,8 @@
1750 /* (0x11 << 4) | 0x0D is the TAG for TextureData */
1751 GLINT_WRITE_REG(((infoRec->ColorExpandRange - 2) << 16) |
1752 (0x11 << 4) | 0x0D, OutputFIFO);
1753 - MoveDWORDS((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
1755 + (CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
1756 (CARD32*)srcp, infoRec->ColorExpandRange - 1);
1757 count -= infoRec->ColorExpandRange - 1;
1758 address += infoRec->ColorExpandRange - 1;
1759 @@ -1049,7 +999,8 @@
1760 /* (0x11 << 4) | 0x0D is the TAG for TextureData */
1761 GLINT_WRITE_REG(((count - 1) << 16) | (0x11 << 4) | 0x0D,
1763 - MoveDWORDS((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
1765 + (CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
1766 (CARD32*)srcp, count);
1769 @@ -1078,7 +1029,8 @@
1770 /* (0x15 << 4) | 0x05 is the TAG for FBSourceData */
1771 GLINT_WRITE_REG(((infoRec->ColorExpandRange - 2) << 16) |
1772 (0x15 << 4) | 0x05, OutputFIFO);
1773 - MoveWORDS((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
1775 + (CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
1776 (unsigned short *)srcpword,infoRec->ColorExpandRange-1);
1777 count -= infoRec->ColorExpandRange - 1;
1778 srcpword += infoRec->ColorExpandRange - 1;
1779 @@ -1088,7 +1040,8 @@
1780 /* (0x15 << 4) | 0x05 is the TAG for FBSourceData */
1781 GLINT_WRITE_REG(((count - 1) << 16) | (0x15 << 4) |
1783 - MoveWORDS((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
1785 + (CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
1786 (unsigned short *)srcpword, count);
1789 @@ -1162,7 +1115,8 @@
1790 /* (0x11 << 4) | 0x0D is the TAG for TextureData */
1791 GLINT_WRITE_REG(((infoRec->ColorExpandRange - 2) << 16) |
1792 (0x11 << 4) | 0x0D, OutputFIFO);
1793 - MoveDWORDS((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
1795 + (CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
1796 (CARD32*)srcp, infoRec->ColorExpandRange - 1);
1797 count -= infoRec->ColorExpandRange - 1;
1798 address += infoRec->ColorExpandRange - 1;
1799 @@ -1173,7 +1127,8 @@
1800 /* (0x11 << 4) | 0x0D is the TAG for TextureData */
1801 GLINT_WRITE_REG(((count - 1) << 16) | (0x11 << 4) | 0x0D,
1803 - MoveDWORDS((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
1805 + (CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
1806 (CARD32*)srcp, count);
1809 @@ -1196,7 +1151,8 @@
1810 /* (0x15 << 4) | 0x05 is the TAG for FBSourceData */
1811 GLINT_WRITE_REG(((infoRec->ColorExpandRange - 2) << 16) |
1812 (0x15 << 4) | 0x05, OutputFIFO);
1813 - MoveDWORDS((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
1815 + (CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
1816 (CARD32*)srcp, infoRec->ColorExpandRange - 1);
1817 count -= infoRec->ColorExpandRange - 1;
1818 srcp += infoRec->ColorExpandRange - 1;
1819 @@ -1206,7 +1162,8 @@
1820 /* (0x15 << 4) | 0x05 is the TAG for FBSourceData */
1821 GLINT_WRITE_REG(((count - 1) << 16) | (0x15 << 4) |
1823 - MoveDWORDS((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
1825 + (CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
1826 (CARD32*)srcp, count);
1829 diff -ur xc.orig/programs/Xserver/hw/xfree86/drivers/glint/sx_accel.c xc/programs/Xserver/hw/xfree86/drivers/glint/sx_accel.c
1830 --- xc.orig/programs/Xserver/hw/xfree86/drivers/glint/sx_accel.c Wed Apr 12 10:44:41 2000
1831 +++ xc/programs/Xserver/hw/xfree86/drivers/glint/sx_accel.c Sun Mar 18 16:57:36 2001
1832 @@ -298,28 +298,6 @@
1836 -static void MoveDWORDS(
1837 - register CARD32* dest,
1838 - register CARD32* src,
1839 - register int dwords )
1841 - while(dwords & ~0x03) {
1843 - *(dest + 1) = *(src + 1);
1844 - *(dest + 2) = *(src + 2);
1845 - *(dest + 3) = *(src + 3);
1850 - if (!dwords) return;
1852 - if (dwords == 1) return;
1853 - *(dest + 1) = *(src + 1);
1854 - if (dwords == 2) return;
1855 - *(dest + 2) = *(src + 2);
1862 while (dwords >= infoRec->ColorExpandRange) {
1863 GLINT_WAIT(infoRec->ColorExpandRange);
1864 GLINT_WRITE_REG((infoRec->ColorExpandRange - 2)<<16 | 0x0D, OutputFIFO);
1865 - MoveDWORDS((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4), src,
1867 + (CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4), src,
1868 infoRec->ColorExpandRange - 1);
1869 dwords -= (infoRec->ColorExpandRange - 1);
1870 src += (infoRec->ColorExpandRange - 1);
1874 GLINT_WRITE_REG((dwords - 1)<<16 | 0x0D, OutputFIFO);
1875 - MoveDWORDS((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4), src,dwords);
1877 + (CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4), src,dwords);
1879 pGlint->cpucount += 1;
1882 /* (0x0f << 4) | 0x0e is the TAG for GLINTColor */
1883 GLINT_WRITE_REG(((infoRec->ColorExpandRange - 2) << 16) | (0x0F << 4) |
1885 - MoveDWORDS((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
1887 + (CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
1888 (CARD32*)srcp, infoRec->ColorExpandRange - 1);
1889 count -= infoRec->ColorExpandRange - 1;
1890 srcp += infoRec->ColorExpandRange - 1;
1892 /* (0x0F << 4) | 0x0E is the TAG for GLINTColor */
1893 GLINT_WRITE_REG(((count - 1) << 16) | (0x0f << 4) |
1895 - MoveDWORDS((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
1897 + (CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
1898 (CARD32*)srcp, count);
1901 diff -ur xc.orig/programs/Xserver/hw/xfree86/drivers/glint/tx_accel.c xc/programs/Xserver/hw/xfree86/drivers/glint/tx_accel.c
1902 --- xc.orig/programs/Xserver/hw/xfree86/drivers/glint/tx_accel.c Wed May 10 16:01:32 2000
1903 +++ xc/programs/Xserver/hw/xfree86/drivers/glint/tx_accel.c Sun Mar 18 16:57:58 2001
1904 @@ -326,28 +326,6 @@
1908 -static void MoveDWORDS(
1909 - register CARD32* dest,
1910 - register CARD32* src,
1911 - register int dwords )
1913 - while(dwords & ~0x03) {
1915 - *(dest + 1) = *(src + 1);
1916 - *(dest + 2) = *(src + 2);
1917 - *(dest + 3) = *(src + 3);
1922 - if (!dwords) return;
1924 - if (dwords == 1) return;
1925 - *(dest + 1) = *(src + 1);
1926 - if (dwords == 2) return;
1927 - *(dest + 2) = *(src + 2);
1934 while (dwords >= infoRec->ColorExpandRange) {
1935 GLINT_WAIT(infoRec->ColorExpandRange);
1936 GLINT_WRITE_REG((infoRec->ColorExpandRange - 2)<<16 | 0x0D, OutputFIFO);
1937 - MoveDWORDS((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4), src,
1939 + (CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4), src,
1940 infoRec->ColorExpandRange - 1);
1941 dwords -= (infoRec->ColorExpandRange - 1);
1942 src += (infoRec->ColorExpandRange - 1);
1946 GLINT_WRITE_REG((dwords - 1)<<16 | 0x0D, OutputFIFO);
1947 - MoveDWORDS((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4), src,dwords);
1949 + (CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4), src,dwords);
1951 pGlint->cpucount += 1;
1954 /* (0x15 << 4) | 0x05 is the TAG for FBSourceData */
1955 GLINT_WRITE_REG(((infoRec->ColorExpandRange - 2) << 16) | (0x15 << 4) |
1957 - MoveDWORDS((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
1959 + (CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
1960 (CARD32*)srcp, infoRec->ColorExpandRange - 1);
1961 count -= infoRec->ColorExpandRange - 1;
1962 srcp += infoRec->ColorExpandRange - 1;
1964 /* (0x15 << 4) | 0x05 is the TAG for FBSourceData */
1965 GLINT_WRITE_REG(((count - 1) << 16) | (0x15 << 4) |
1967 - MoveDWORDS((CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
1969 + (CARD32*)((char*)pGlint->IOBase + OutputFIFO + 4),
1970 (CARD32*)srcp, count);
1973 diff -ur xc.orig/programs/Xserver/hw/xfree86/drivers/mga/mga_storm.c xc/programs/Xserver/hw/xfree86/drivers/mga/mga_storm.c
1974 --- xc.orig/programs/Xserver/hw/xfree86/drivers/mga/mga_storm.c Sat Mar 17 17:57:15 2001
1975 +++ xc/programs/Xserver/hw/xfree86/drivers/mga/mga_storm.c Sun Mar 18 17:19:13 2001
1977 #include "mga_dri.h"
1980 +#if defined(__alpha__)
1981 +#define MGAMoveDWORDS(d,s,c) \
1983 + write_mem_barrier(); \
1984 + XAAMoveDWORDS((d),(s),(c)); \
1987 +#define MGAMoveDWORDS(d,s,c) XAAMoveDWORDS((d),(s),(c))
1990 static void MGANAME(SubsequentScreenToScreenCopy)(ScrnInfoPtr pScrn,
1991 int srcX, int srcY, int dstX, int dstY,
1995 CHECK_DMA_QUIESCENT(pMga, pScrn);
1997 + mem_barrier(); /*??*/
2000 /* flush cache before a read (mga-1064g 5.1.6) */
2001 OUTREG8(MGAREG_CRTC_INDEX, 0);
2002 @@ -1599,7 +1611,13 @@
2003 OUTREG(MGAREG_FXBNDRY, ((x + w - 1) << 16) | (x & 0xFFFF));
2004 OUTREG(MGAREG_YDSTLEN + MGAREG_EXEC, (y << 16) | h);
2006 - if(pMga->expandDWORDs > pMga->FifoSize) {
2008 + /* force Alpha to always use indirect */
2011 + if(pMga->expandDWORDs > pMga->FifoSize)
2014 pMga->AccelInfoRec->SubsequentColorExpandScanline =
2015 MGANAME(SubsequentColorExpandScanlineIndirect);
2016 pMga->AccelInfoRec->ScanlineColorExpandBuffers =
2017 @@ -1624,13 +1642,13 @@
2019 while(dwords > pMga->FifoSize) {
2020 WAITFIFO(pMga->FifoSize);
2021 - XAAMoveDWORDS((CARD32*)(pMga->ColorExpandBase), src, pMga->FifoSize);
2022 + MGAMoveDWORDS((CARD32*)(pMga->ColorExpandBase), src, pMga->FifoSize);
2023 src += pMga->FifoSize;
2024 dwords -= pMga->FifoSize;
2028 - XAAMoveDWORDS((CARD32*)(pMga->ColorExpandBase), src, dwords);
2029 + MGAMoveDWORDS((CARD32*)(pMga->ColorExpandBase), src, dwords);
2031 if(!(--pMga->expandRows)) {
2032 if(pMga->expandRemaining) {
2033 @@ -1726,13 +1744,13 @@
2035 while(dwords > pMga->FifoSize) {
2036 WAITFIFO(pMga->FifoSize);
2037 - XAAMoveDWORDS((CARD32*)(pMga->ColorExpandBase), src, pMga->FifoSize);
2038 + MGAMoveDWORDS((CARD32*)(pMga->ColorExpandBase), src, pMga->FifoSize);
2039 src += pMga->FifoSize;
2040 dwords -= pMga->FifoSize;
2044 - XAAMoveDWORDS((CARD32*)(pMga->ColorExpandBase), src, dwords);
2045 + MGAMoveDWORDS((CARD32*)(pMga->ColorExpandBase), src, dwords);
2047 if(!(--pMga->expandRows)) {
2049 diff -ur xc.orig/programs/Xserver/hw/xfree86/drivers/tga/IBM561ramdac.c xc/programs/Xserver/hw/xfree86/drivers/tga/IBM561ramdac.c
2050 --- xc.orig/programs/Xserver/hw/xfree86/drivers/tga/IBM561ramdac.c Mon Oct 23 17:16:50 2000
2051 +++ xc/programs/Xserver/hw/xfree86/drivers/tga/IBM561ramdac.c Sun Mar 18 16:51:30 2001
2053 TGAPtr pTga = TGAPTR(pScrn);
2055 unsigned int temp1[6] = {0,0,0,0,0,0};
2056 - struct monitor_data * c_table = &crystal_table;
2059 * Set-up av9110 to 14.3 Mhz as reference for 561's PLL
2060 @@ -555,10 +554,10 @@
2061 IBM561WriteReg(pScrn, IBM561_CONFIG_REG_4, 0x20 );
2063 /* IBM561WriteReg(pScrn, IBM561_PLL_VCO_DIV_REG, 0xc8 ); */
2064 - IBM561WriteReg(pScrn, IBM561_PLL_VCO_DIV_REG, c_table->ibm561_vco_div);
2065 + IBM561WriteReg(pScrn, IBM561_PLL_VCO_DIV_REG, tga_c_table->ibm561_vco_div);
2067 /* IBM561WriteReg(pScrn, IBM561_PLL_REF_REG, 0x08 ); */
2068 - IBM561WriteReg(pScrn, IBM561_PLL_REF_REG, c_table->ibm561_ref );
2069 + IBM561WriteReg(pScrn, IBM561_PLL_REF_REG, tga_c_table->ibm561_ref );
2071 IBM561WriteReg(pScrn, IBM561_DIV_DOT_CLK_REG, 0xb0 );
2073 diff -ur xc.orig/programs/Xserver/hw/xfree86/drivers/tga/tga.h xc/programs/Xserver/hw/xfree86/drivers/tga/tga.h
2074 --- xc.orig/programs/Xserver/hw/xfree86/drivers/tga/tga.h Fri Oct 27 21:23:37 2000
2075 +++ xc/programs/Xserver/hw/xfree86/drivers/tga/tga.h Sun Mar 18 16:51:30 2001
2077 unsigned int ibm561_ref;
2080 -extern struct monitor_data crystal_table;
2081 +extern struct monitor_data tga_crystal_table[];
2082 +extern int tga_crystal_table_entries;
2083 +extern struct monitor_data *tga_c_table;
2089 Bool DEC21030Init(ScrnInfoPtr pScrn, DisplayModePtr mode);
2090 void write_av9110(ScrnInfoPtr pScrn, unsigned int *);
2091 +void TGA2SetupMode(ScrnInfoPtr pScrn);
2094 Bool DEC21030AccelInit(ScreenPtr pScreen);
2095 diff -ur xc.orig/programs/Xserver/hw/xfree86/drivers/tga/tga_dac.c xc/programs/Xserver/hw/xfree86/drivers/tga/tga_dac.c
2096 --- xc.orig/programs/Xserver/hw/xfree86/drivers/tga/tga_dac.c Fri Oct 27 21:23:37 2000
2097 +++ xc/programs/Xserver/hw/xfree86/drivers/tga/tga_dac.c Sun Mar 18 16:51:30 2001
2098 @@ -49,45 +49,114 @@
2099 /* There lies an ICS1562 Clock Generator. */
2100 ICS1562_CalcClockBits(freq, pll_bits);
2102 - switch (pTga->Chipset) {
2103 - case PCI_CHIP_DEC21030:
2105 - * For the DEC 21030 TGA:
2106 - * This requires the 55 clock bits be written in a serial manner to
2107 - * bit 0 of the CLOCK register and on the 56th bit set the hold flag.
2109 - for (i = 0;i <= 6; i++) {
2110 - for (j = 0; j <= 7; j++) {
2111 - temp = (pll_bits[i] >> (7-j)) & 1;
2112 - if (i == 6 && j == 7)
2114 - TGA_WRITE_REG(temp, TGA_CLOCK_REG);
2117 + * For the DEC 21030 TGA:
2118 + * This requires the 55 clock bits be written in a serial manner to
2119 + * bit 0 of the CLOCK register and on the 56th bit set the hold flag.
2121 + for (i = 0;i <= 6; i++) {
2122 + for (j = 0; j <= 7; j++) {
2123 + temp = (pll_bits[i] >> (7-j)) & 1;
2124 + if (i == 6 && j == 7)
2126 + TGA_WRITE_REG(temp, TGA_CLOCK_REG);
2130 - case PCI_CHIP_TGA2:
2132 - * For the DEC TGA2:
2133 - * This requires the 55 clock bits be written in a serial manner to
2134 - * bit 0 of the CLOCK register and on the 56th bit set the hold flag.
2137 - /* ?? FIXME FIXME FIXME ?? */
2138 - for (i = 0;i <= 6; i++) {
2139 - for (j = 0; j <= 7; j++) {
2140 - temp = (pll_bits[i] >> (7-j)) & 1;
2141 - if (i == 6 && j == 7)
2143 - TGA_WRITE_REG(temp, TGA_CLOCK_REG);
2151 -struct monitor_data crystal_table =
2152 +struct monitor_data tga_crystal_table[] = {
2154 +/* Option 0 Monitor Info 130.8 */
2156 +1280, /* columns */
2157 +130, /* 130.8 Mhz */
2158 +72, /* refresh rate */
2159 +1024, /* v scanlines */
2160 +3, /* v front porch */
2162 +33, /* v back porch */
2163 +1280, /* h pixels */
2164 +32, /* h front porch */
2166 +232, /* h back porch */
2167 +/* AV9110 clock serial load information 130.808 */
2168 +0x40, /* 0:6 VCO frequency divider N */
2169 +0x7, /* 7:13 Reference frequency divide M */
2170 +0x0, /* 14 VCO pre-scale divide V (0=div.by 1,1=by 8)
2172 +0x1, /* 15:16 CLK/X output divide X */
2173 +0x1, /* 17:18 VCO output divide R */
2174 +1, /* 19 CLK Output enable. */
2175 +1, /* 20 CLK/X Output enable */
2176 +0, /* reserved, should be set to 0 */
2177 +0, /* Reference clock select on CLK 1=ref */
2178 +1, /* reserved, should be set to 1 */
2179 +/* IBM561 PLL setup data 130.808 */
2180 +0xC8, /* VCO Div: PFR=0x3, M-65=49 */
2181 +0x8 /* REF: N=0x8 */
2184 +/* Option 3 Monitor Info 104.00 Mhz */
2186 +1152, /* columns */
2188 +72, /* refresh rate */
2189 +900, /* v scanlines */
2190 +6, /* v front porch */
2192 +44, /* v back porch */
2193 +1152, /* h pixels */
2194 +64, /* h front porch */
2196 +176, /* h back porch */
2197 +/* 103.994 MHz av9110 clock serial load information */
2198 +0x6d, /* 0:6 VCO frequency divider N */
2199 +0xf, /* 7:13 Reference frequency divide M */
2200 +0x0, /* 14 VCO pre-scale divide V (0=div.by 1,1=by 8)
2202 +0x1, /* 15:16 CLK/X output divide X */
2203 +0x1, /* 17:18 VCO output divide R */
2204 +1, /* 19 CLK Output enable. */
2205 +1, /* 20 CLK/X Output enable */
2206 +0, /* reserved, should be set to 0 */
2207 +0, /* Reference clock select on CLK 1=ref */
2208 +1, /* reserved, should be set to 1 */
2209 +/* 104.00 MHz IBM561 PLL setup data */
2210 +0x96, /* VCO Div: PFR=2, M=57 */
2215 +/* Option 6 Monitor Info 74.00 Mhz */
2217 +1024, /* columns */
2219 +72, /* refresh rate */
2220 +768, /* v scanlines */
2221 +1, /* v front porch */
2223 +22, /* v back porch */
2224 +1024, /* h pixels */
2225 +16, /* h front porch */
2227 +128, /* h back porch */
2228 +/* 74.00 MHz AV9110 clock serial load information */
2229 +0x2a, /* 0:6 VCO frequency divider N */
2230 +0x41, /* 7:13 Reference frequency divide M */
2231 +0x1, /* 14 VCO pre-scale divide V (0=div.by 1,1=by 8)
2233 +0x1, /* 15:16 CLK/X output divide X */
2234 +0x1, /* 17:18 VCO output divide R */
2235 +1, /* 19 CLK Output enable. */
2236 +1, /* 20 CLK/X Output enable */
2237 +0, /* reserved, should be set to 0 */
2238 +0, /* Reference clock select on CLK 1=ref */
2239 +1, /* reserved, should be set to 1 */
2240 +/* 74.00 MHz IBM561 PLL setup data */
2241 +0x9C, /* VCO Div: PFR=2, M=0x5D*/
2242 +0x9 /* REF: N=0x9 */
2246 /* Option 5 Monitor Info 75.00 Mhz */
2248 @@ -117,8 +186,406 @@
2249 /* 75.00 MHz IBM561 PLL setup data */
2250 0x93, /* VCO Div: PFR=2, M=0x54 */
2251 0x8 /* REF: N=0x8 */
2255 +/* Option 9 Monitor Info 50 Mhz ergo SVGA */
2259 +72, /* refresh rate */
2260 +600, /* v scanlines */
2261 +37, /*(31 tga)v front porch */
2263 +23, /*(29 tga)v back porch */
2264 +800, /* h pixels */
2265 +56, /* h front porch */
2267 +64, /* h back porch */
2268 +/*50.00 Mhz AV9110 clock serial load information */
2269 +0x37, /* 0:6 VCO frequency divider N */
2270 +0x3f, /* 7:13 Reference frequency divide M */
2271 +0x1, /* 14 VCO pre-scale divide V (0=div.by 1,1=by 8)
2273 +0x1, /* 15:16 CLK/X output divide X */
2274 +0x2, /* 17:18 VCO output divide R */
2275 +1, /* 19 CLK Output enable. */
2276 +1, /* 20 CLK/X Output enable */
2277 +0, /* reserved, should be set to 0 */
2278 +0, /* Reference clock select on CLK 1=ref */
2279 +1, /* reserved, should be set to 1 */
2280 +/* 50.00 MHz IBM561 PLL setup data */
2281 +0x45, /* VCO Div: PFR=1, M=46*/
2285 +/* Option B Monitor Info 31.5 Mhz ergo VGA */
2289 +72, /* refresh rate */
2290 +480, /* v scanlines */
2291 +9, /* v front porch */
2293 +28, /* v back porch */
2294 +640, /* h pixels */
2295 +24, /* h front porch */
2297 +128, /* h back porch */
2298 +/* 31.50 MHz AV9110 clock serial load information */
2299 +0x16, /* 0:6 VCO frequency divider N */
2300 +0x05, /* 7:13 Reference frequency divide M */
2301 +0x0, /* 14 VCO pre-scale divide V (0=div.by 1,1=by 8)
2303 +0x1, /* 15:16 CLK/X output divide X */
2304 +0x2, /* 17:18 VCO output divide R */
2305 +1, /* 19 CLK Output enable. */
2306 +1, /* 20 CLK/X Output enable */
2307 +0, /* reserved, should be set to 0 */
2308 +0, /* Reference clock select on CLK 1=ref */
2309 +1, /* reserved, should be set to 1 */
2310 +/* 31.50 MHz IBM561 PLL setup data */
2311 +0x17, /* VCO Div: PFR=0, M=0x58 */
2312 +0x5 /* REF: N=0x5 */
2314 +#ifdef ALLOW_LT_72_HZ
2316 +/* Option 1 Monitor Info 119.84 Mhz */
2318 +1280, /* columns */
2320 +66, /* refresh rate */
2321 +1024, /* v scanlines */
2322 +3, /* v front porch */
2324 +33, /* v back porch */
2325 +1280, /* h pixels */
2326 +32, /* h front porch */
2328 +232, /* h back porch */
2329 +/* 119.84MHz AV9110 clock serial load information */
2330 +0x2d, /* 0:6 VCO frequency divider N */
2331 +0x2b, /* 7:13 Reference frequency divide M */
2332 +0x1, /* 14 VCO pre-scale divide V (0=div.by 1,1=by 8) */
2333 +0x1, /* 15:16 CLK/X output divide X */
2334 +0x1, /* 17:18 VCO output divide R */
2335 +1, /* 19 CLK Output enable. */
2336 +1, /* 20 CLK/X Output enable */
2337 +0, /* reserved, should be set to 0 */
2338 +0, /* Reference clock select on CLK 1=ref */
2339 +1, /* reserved, should be set to 1 */
2340 +/* IBM561 PLL setup data 119.84 */
2341 +0x82, /* VCO Div: PFR=0x2, M=0x43 */
2342 +0x4 /* REF: N=0x4 */
2345 +/* Option 2 Monitor Info 108.18 Mhz */
2347 +1280, /* columns */
2349 +60, /* refresh rate */
2350 +1024, /* v scanlines */
2351 +3, /* v front porch */
2353 +26, /* v back porch */
2354 +1280, /* h pixels */
2355 +44, /* h front porch */
2357 +200, /* h back porch */
2358 +/* 108.18 MHz av9110 Clk serial load information */
2359 +0x11, /* 0:6 VCO frequency divider N */
2360 +0x9, /* 7:13 Reference frequency divide M */
2361 +0x1, /* 14 VCO pre-scale divide V (0=div.by 1,1=by 8)
2363 +0x1, /* 15:16 CLK/X output divide X */
2364 +0x2, /* 17:18 VCO output divide R */
2365 +1, /* 19 CLK Output enable. */
2366 +1, /* 20 CLK/X Output enable */
2367 +0, /* reserved, should be set to 0 */
2368 +0, /* Reference clock select on CLK 1=ref */
2369 +1, /* reserved, should be set to 1 */
2370 +/* 108.18 MHz IBM561 PLL setup data */
2371 +0xB8, /* VCO Div: PFR=2, M=79 */
2372 +0x8 /* REF: N=0x8 */
2375 +/* Option 5 Monitor Info 75.00 Mhz */
2377 +1024, /* columns */
2379 +70, /* refresh rate */
2380 +768, /* v scanlines */
2381 +3, /* v front porch */
2383 +29, /* v back porch */
2384 +1024, /* h pixels */
2385 +24, /* h front porch */
2387 +144, /* h back porch */
2388 +/* 75.00 MHz AV9110 clock serial load information */
2389 +0x6e, /* 0:6 VCO frequency divider N */
2390 +0x15, /* 7:13 Reference frequency divide M */
2391 +0x0, /* 14 VCO pre-scale divide V (0=div.by 1,1=by 8)
2393 +0x1, /* 15:16 CLK/X output divide X */
2394 +0x1, /* 17:18 VCO output divide R */
2395 +1, /* 19 CLK Output enable. */
2396 +1, /* 20 CLK/X Output enable */
2397 +0, /* reserved, should be set to 0 */
2398 +0, /* Reference clock select on CLK 1=ref */
2399 +1, /* reserved, should be set to 1 */
2400 +/* 75.00 MHz IBM561 PLL setup data */
2401 +0x93, /* VCO Div: PFR=2, M=0x54 */
2402 +0x8 /* REF: N=0x8 */
2405 +/* Option 7 Monitor Info 69 Mhz DEC 72 Hz */
2407 +1024, /* columns */
2409 +60, /* refresh rate */
2410 +864, /* v scanlines */
2411 +0, /* v front porch */
2413 +34, /* v back porch */
2414 +1024, /* h pixels */
2415 +12, /* h front porch */
2417 +116, /* h back porch */
2418 +/* 69.00 Mhz AV9110 clock serial load information */
2419 +0x35, /* 0:6 VCO frequency divider N */
2420 +0xb, /* 7:13 Reference frequency divide M */
2421 +0x0, /* 14 VCO pre-scale divide V (0=div.by 1,1=by 8)
2423 +0x1, /* 15:16 CLK/X output divide X */
2424 +0x1, /* 17:18 VCO output divide R */
2425 +1, /* 19 CLK Output enable. */
2426 +1, /* 20 CLK/X Output enable */
2427 +0, /* reserved, should be set to 0 */
2428 +0, /* Reference clock select on CLK 1=ref */
2429 +1, /* reserved, should be set to 1 */
2430 +/* 69.00 MHz IBM561 PLL setup data */
2431 +0xA9, /* VCO Div: PFR=2, M=0x6A */
2432 +0xB /* REF: N=0xB */
2435 +/* Option 8 Monitor Info 65 Mhz */
2437 +1024, /* columns */
2439 +60, /* refresh rate */
2440 +768, /* v scanlines */
2441 +7, /* v front porch */
2443 +26, /* v back porch */
2444 +1024, /* h pixels */
2445 +56, /* h front porch */
2447 +200, /* h back porch */
2448 +/* 65.00 MHz AV9110 clock serial load information */
2449 +0x6d, /* 0:6 VCO frequency divider N */
2450 +0x0c, /* 7:13 Reference frequency divide M */
2451 +0x0, /* 14 VCO pre-scale divide V (0=div.by 1,1=by 8)
2453 +0x1, /* 15:16 CLK/X output divide X */
2454 +0x2, /* 17:18 VCO output divide R */
2455 +1, /* 19 CLK Output enable. */
2456 +1, /* 20 CLK/X Output enable */
2457 +0, /* reserved, should be set to 0 */
2458 +0, /* Reference clock select on CLK 1=ref */
2459 +1, /* reserved, should be set to 1 */
2460 +/* 65.00 MHz IBM561 PLL setup data */
2461 +0xAC, /* VCO Div: PFR=2, M=0x6D */
2462 +0xC /* REF: N=0xC */
2465 +/* Option A Monitor Info 40 Mhz SVGA */
2469 +60, /* refresh rate */
2470 +600, /* v scanlines */
2471 +1, /* v front porch */
2473 +23, /* v back porch */
2474 +800, /* h pixels */
2475 +40, /* h front porch */
2477 +88, /* h back porch */
2478 +/* 40.00 MHz AV9110 clock serial load information */
2479 +0x5f, /* 0:6 VCO frequency divider N */
2480 +0x11, /* 7:13 Reference frequency divide M */
2481 +0x0, /* 14 VCO pre-scale divide V (0=div.by 1,1=by 8)
2483 +0x1, /* 15:16 CLK/X output divide X */
2484 +0x2, /* 17:18 VCO output divide R */
2485 +1, /* 19 CLK Output enable. */
2486 +1, /* 20 CLK/X Output enable */
2487 +0, /* reserved, should be set to 0 */
2488 +0, /* Reference clock select on CLK 1=ref */
2489 +1, /* reserved, should be set to 1 */
2490 +/* 40.00 MHz IBM561 PLL setup data */
2491 +0x42, /* VCO Div: PFR=1, M=43 */
2492 +0x6 /* REF: N=0x6 */
2495 +/* Option C Monitor Info 25.175 Mhz VGA */
2498 +25, /* 25.175 Mhz */
2499 +60, /* refresh rate */
2500 +480, /* v scanlines */
2501 +10, /* v front porch */
2503 +33, /* v back porch */
2504 +640, /* h pixels */
2505 +16, /* h front porch */
2507 +48, /* h back porch */
2508 +/* 25.175 MHz AV9110 clock serial load information */
2509 +0x66, /* 0:6 VCO frequency divider N */
2510 +0x1d, /* 7:13 Reference frequency divide M */
2511 +0x0, /* 14 VCO pre-scale divide V (0=div.by 1,1=by 8)
2513 +0x1, /* 15:16 CLK/X output divide X */
2514 +0x2, /* 17:18 VCO output divide R */
2515 +1, /* 19 CLK Output enable. */
2516 +1, /* 20 CLK/X Output enable */
2517 +0, /* reserved, should be set to 0 */
2518 +0, /* Reference clock select on CLK 1=ref */
2519 +1, /* reserved, should be set to 1 */
2520 +/* 25.175 MHz IBM561 PLL setup data */
2521 +0x3E, /* VCO Div: PFR=0, M=0x7F */
2522 +0x9 /* REF: N=0x9 */
2525 +/* Option E Monitor Info 110 Mhz */
2527 +1280, /* columns */
2529 +60, /* refresh rate */
2530 +1024, /* v scanlines */
2531 +6, /* v front porch */
2533 +44, /* v back porch */
2534 +1280, /* h pixels */
2535 +19, /* h front porch */
2537 +234, /* h back porch */
2538 +/* 110.0 MHz AV9110 clock serial load information */
2539 +0x60, /* 0:6 VCO frequency divider N */
2540 +0x32, /* 7:13 Reference frequency divide M */
2541 +0x1, /* 14 VCO pre-scale divide V (0=div.by 1,1=by 8) */
2542 +0x1, /* 15:16 CLK/X output divide X */
2543 +0x2, /* 17:18 VCO output divide R */
2544 +1, /* 19 CLK Output enable. */
2545 +1, /* 20 CLK/X Output enable */
2546 +0, /* reserved, should be set to 0 */
2547 +0, /* Reference clock select on CLK 1=ref */
2548 +1, /* reserved, should be set to 1 */
2549 +/* 110.0 MHz IBM561 PLL setup data */
2550 +0xBA, /* VCO Div: PFR=0x2, M=0x7B */
2551 +0x8 /* REF: N=0x8 */
2553 +#endif /* ALLOW_LT_72_HZ */
2554 +#ifdef /* ALLOW_GT_72_HZ */
2556 +/* Option D Monitor Info 135 Mhz */
2558 +1280, /* columns */
2560 +75, /* refresh rate */
2561 +1024, /* v scanlines */
2562 +1, /* v front porch */
2564 +38, /* v back porch */
2565 +1280, /* h pixels */
2566 +16, /* h front porch */
2568 +248, /* h back porch */
2569 +/* 135.0 MHz AV9110 clock serial load information */
2570 +0x42, /* 0:6 VCO frequency divider N */
2571 +0x07, /* 7:13 Reference frequency divide M */
2572 +0x0, /* 14 VCO pre-scale divide V (0=div.by 1,1=by 8) */
2573 +0x1, /* 15:16 CLK/X output divide X */
2574 +0x1, /* 17:18 VCO output divide R */
2575 +1, /* 19 CLK Output enable. */
2576 +1, /* 20 CLK/X Output enable */
2577 +0, /* reserved, should be set to 0 */
2578 +0, /* Reference clock select on CLK 1=ref */
2579 +1, /* reserved, should be set to 1 */
2580 +/* 135.0 MHz IBM561 PLL setup data */
2581 +0xC1, /* VCO Div: PFR=0x3, M=0x42 */
2582 +0x7 /* REF: N=0x7 */
2584 +#ifdef ALLOW_GT_1280x1024
2586 +/* Option 4 Monitor Info 175.5 Mhz (8-plane) */
2588 +1600, /* columns */
2590 +65, /* refresh rate */
2591 +1200, /* v scanlines */
2592 +1, /* v front porch */
2594 +46, /* v back porch */
2595 +1600, /* h pixels */
2596 +32, /* h front porch */
2598 +336, /* h back porch */
2599 +/* 110.0 MHz AV9110 clock serial load information */
2600 +0x5F, /* 0:6 VCO frequency divider N */
2601 +0x3E, /* 7:13 Reference frequency divide M */
2602 +0x1, /* 14 VCO pre-scale divide V (0=div.by 1,1=by 8)
2604 +0x1, /* 15:16 CLK/X output divide X */
2605 +0x1, /* 17:18 VCO output divide R */
2606 +1, /* 19 CLK Output enable. */
2607 +1, /* 20 CLK/X Output enable */
2608 +0, /* reserved, should be set to 0 */
2609 +0, /* Reference clock select on CLK 1=ref */
2610 +1, /* reserved, should be set to 1 */
2611 +/* 110.0 MHz IBM561 PLL setup data */
2612 +0xE1, /* VCO Div: PFR=0x3, M-65=0x21 */
2613 +0x8 /* REF: N=0x8 */
2616 +/* Option F Monitor Info (24-plane) */
2618 +1600, /* columns */
2619 +202.5, /* 130.8 Mhz */
2620 +75, /* refresh rate */
2621 +1200, /* v scanlines */
2622 +1, /* v front porch */
2624 +46, /* v back porch */
2625 +1600, /* h pixels */
2626 +32, /* h front porch */
2628 +336, /* h back porch */
2629 +/* AV9110 clock serial load information 130.808 */
2630 +0x60, /* 0:6 VCO frequency divider N */
2631 +0x32, /* 7:13 Reference frequency divide M */
2632 +0x1, /* 14 VCO pre-scale divide V (0=div.by 1,1=by 8) */
2633 +0x1, /* 15:16 CLK/X output divide X */
2634 +0x2, /* 17:18 VCO output divide R */
2635 +1, /* 19 CLK Output enable. */
2636 +1, /* 20 CLK/X Output enable */
2637 +0, /* reserved, should be set to 0 */
2638 +0, /* Reference clock select on CLK 1=ref */
2639 +1, /* reserved, should be set to 1 */
2640 +/* 110.0 MHz IBM561 PLL setup data */
2641 +0xE2, /* bogus VCO Div: PFR=0x2, M=0x7B */
2642 +0x7 /* bogus REF: N=0x8 */
2644 +#endif /* ALLOW_GT_1280x1024 */
2645 +#endif /* ALLOW_GT_72_HZ */
2648 +int tga_crystal_table_entries = sizeof(tga_crystal_table)/sizeof(struct monitor_data);
2650 +struct monitor_data *tga_c_table;
2652 /* ICS av9110 is only used on TGA2 */
2655 @@ -142,30 +609,58 @@
2656 TGA2_WRITE_CLOCK_REG(0x0, 0xf800);
2659 +void TGA2SetupMode(ScrnInfoPtr pScrn)
2666 + * We do not know how to generate arbitrary clocks, so we search
2667 + * the crystal_table above for a match. Sigh...
2669 + tga_c_table = tga_crystal_table;
2670 + for (i = 0; i < tga_crystal_table_entries; i++, tga_c_table++) {
2671 + if ((tga_c_table->max_rows == pScrn->currentMode->VDisplay) &&
2672 + (tga_c_table->max_cols == pScrn->currentMode->HDisplay)) {
2673 + ErrorF("Found a matching mode (%d)!\n", i);
2677 + if (i == tga_crystal_table_entries) {
2679 + FatalError("Unable to find a workable mode");
2681 + ErrorF("Unable to find a matching mode!\n");
2682 + /* tga_c_table = &tga_crystal_table[4]; *//* 640x480 @ 72 */
2683 + tga_c_table = &tga_crystal_table[2]; /* 1024x768 @ 72 */
2690 ICS9110ClockSelect(ScrnInfoPtr pScrn, int freq)
2692 unsigned int temp, temp1[6];
2693 - struct monitor_data *c_table;
2696 /* There lies an ICS9110 Clock Generator. */
2697 /* ICS9110_CalcClockBits(freq, pll_bits); */
2699 - c_table = &crystal_table;
2701 /* the following is based on munge_ics() from the
2702 TRU64 kernel TGA driver */
2704 - temp = (unsigned int)(c_table->vco_div |
2705 - (c_table->ref_div << 7) |
2706 - (c_table->vco_pre << 14) |
2707 - (c_table->clk_div << 15) |
2708 - (c_table->vco_out_div << 17) |
2709 - (c_table->clk_out_en << 19) |
2710 - (c_table->clk_out_enX << 20) |
2711 - (c_table->res0 << 21) |
2712 - (c_table->clk_sel << 22) |
2713 - (c_table->res1 << 23));
2714 + temp = (unsigned int)(tga_c_table->vco_div |
2715 + (tga_c_table->ref_div << 7) |
2716 + (tga_c_table->vco_pre << 14) |
2717 + (tga_c_table->clk_div << 15) |
2718 + (tga_c_table->vco_out_div << 17) |
2719 + (tga_c_table->clk_out_en << 19) |
2720 + (tga_c_table->clk_out_enX << 20) |
2721 + (tga_c_table->res0 << 21) |
2722 + (tga_c_table->clk_sel << 22) |
2723 + (tga_c_table->res1 << 23));
2725 temp1[0] = (temp & 0x00000001) | ((temp & 0x00000002) << 7) |
2726 ((temp & 0x00000004) << 14) | ((temp & 0x00000008) << 21);
2727 diff -ur xc.orig/programs/Xserver/hw/xfree86/drivers/tga/tga_driver.c xc/programs/Xserver/hw/xfree86/drivers/tga/tga_driver.c
2728 --- xc.orig/programs/Xserver/hw/xfree86/drivers/tga/tga_driver.c Mon Dec 4 19:56:22 2000
2729 +++ xc/programs/Xserver/hw/xfree86/drivers/tga/tga_driver.c Sun Mar 18 16:51:30 2001
2730 @@ -954,6 +954,15 @@
2731 /* Set the current mode to the first in the list */
2732 pScrn->currentMode = pScrn->modes;
2735 + This is a bit of a hack; we seem to have to init
2736 + the TGA2 chipset knowing what the mode is, so we
2737 + do this now as soon as we know it...
2739 + if (pTga->Chipset == PCI_CHIP_TGA2) {
2740 + TGA2SetupMode(pScrn);
2743 /* Print the list of modes being used */
2744 xf86PrintModes(pScrn);
2746 diff -ur xc.orig/programs/Xserver/hw/xfree86/os-support/linux/lnx_axp.c xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_axp.c
2747 --- xc.orig/programs/Xserver/hw/xfree86/os-support/linux/lnx_axp.c Sat Mar 17 17:57:16 2001
2748 +++ xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_axp.c Sun Mar 18 16:51:30 2001
2750 axpDevice lnxGetAXP(void);
2752 static AXP axpList[] = {
2753 - { "Tsunami", NULL, NULL, TSUNAMI },
2754 - { "Eiger", NULL, NULL, TSUNAMI },
2755 - {"Noname", NULL, NULL, LCA },
2756 - { "AlphaBook1", NULL, NULL, LCA },
2757 - {"EB66", NULL, NULL, LCA},
2758 - {"EB64+",NULL,NULL, APECS},
2759 + {"Tsunami",NULL,NULL,TSUNAMI},
2760 + {"Eiger",NULL,NULL,TSUNAMI},
2761 + {"Noname",NULL,NULL,LCA},
2762 + {"AlphaBook1",NULL,NULL,LCA},
2763 + {"EB66",NULL,NULL,LCA},
2764 + {"EB64+",NULL,NULL,APECS},
2765 {"Noritake",NULL,"EV5",CIA},
2766 {"Noritake",NULL,"EV56",CIA},
2767 {"Noritake",NULL,NULL,APECS},
2768 - {"XL",NULL,NULL,APECS},
2769 + {"XL",NULL,NULL,APECS},
2770 {"Avanti",NULL,NULL,APECS},
2771 {"Mikasa",NULL,"EV5",CIA},
2772 {"Mikasa",NULL,"EV56",CIA},
2773 {"Mikasa",NULL,NULL,APECS},
2774 {"EB164","EB164",NULL,CIA},
2775 - {"EB164","PC164", NULL,CIA},
2776 - {"EB164","RX164",NULL, POLARIS},
2777 - {"EB164","SX164",NULL, PYXIS},
2778 - {"EB164","LX164",NULL, PYXIS},
2779 + {"EB164","PC164",NULL,CIA},
2780 + {"EB164","RX164",NULL,POLARIS},
2781 + {"EB164","SX164",NULL,PYXIS},
2782 + {"EB164","LX164",NULL,PYXIS},
2783 {"Alcor",NULL,NULL,CIA},
2784 {"Takara",NULL,NULL,CIA},
2785 - {"Sable",NULL, "EV5",T2_GAMMA},
2786 + {"Sable",NULL,"EV5",T2_GAMMA},
2787 {"Sable",NULL,"EV56",T2_GAMMA},
2788 {"Sable",NULL,NULL,T2},
2789 {"Rawhide",NULL,NULL,MCPCIA},
2790 diff -ur xc.orig/programs/Xserver/hw/xfree86/os-support/linux/lnx_ev56.c xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_ev56.c
2791 --- xc.orig/programs/Xserver/hw/xfree86/os-support/linux/lnx_ev56.c Thu Feb 17 08:45:49 2000
2792 +++ xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_ev56.c Sun Mar 18 16:51:30 2001
2795 readDense8(pointer Base, register unsigned long Offset)
2798 return *(volatile CARD8*) ((unsigned long)Base+(Offset));
2802 readDense16(pointer Base, register unsigned long Offset)
2805 return *(volatile CARD16*) ((unsigned long)Base+(Offset));
2809 readDense32(pointer Base, register unsigned long Offset)
2812 return *(volatile CARD32*)((unsigned long)Base+(Offset));
2817 writeDense8(int Value, pointer Base, register unsigned long Offset)
2819 + write_mem_barrier();
2820 *(volatile CARD8 *)((unsigned long)Base+(Offset)) = Value;
2825 writeDense16(int Value, pointer Base, register unsigned long Offset)
2827 + write_mem_barrier();
2828 *(volatile CARD16 *)((unsigned long)Base+(Offset)) = Value;
2833 writeDense32(int Value, pointer Base, register unsigned long Offset)
2835 + write_mem_barrier();
2836 *(volatile CARD32 *)((unsigned long)Base+(Offset)) = Value;
2839 diff -ur xc.orig/programs/Xserver/hw/xfree86/os-support/linux/lnx_video.c xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_video.c
2840 --- xc.orig/programs/Xserver/hw/xfree86/os-support/linux/lnx_video.c Fri Dec 8 22:59:56 2000
2841 +++ xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_video.c Sun Mar 18 17:29:04 2001
2842 @@ -614,15 +614,16 @@
2844 Offset += (unsigned long)Base - (unsigned long)lnxBase;
2845 shift = (Offset & 0x3) << 3;
2846 - if (Offset >= (hae_thresh)) {
2847 + if (Offset >= (hae_thresh)) {
2848 msb = Offset & hae_mask;
2850 if (msb_set != msb) {
2860 result = *(vuip) ((unsigned long)lnxSBase + (Offset << 5));
2862 return 0xffUL & result;
2863 @@ -636,14 +637,16 @@
2865 Offset += (unsigned long)Base - (unsigned long)lnxBase;
2866 shift = (Offset & 0x2) << 3;
2867 - if (Offset >= hae_thresh) {
2868 + if (Offset >= hae_thresh) {
2869 msb = Offset & hae_mask;
2871 - if (msb_set != msb) {
2875 + if (msb_set != msb) {
2882 result = *(vuip)((unsigned long)lnxSBase+(Offset<<5)+(1<<(5-2)));
2884 return 0xffffUL & result;
2887 readSparse32(pointer Base, register unsigned long Offset)
2889 + /* note that this is actually doing a DENSE read... */
2891 return *(vuip)((unsigned long)Base+(Offset));
2898 + write_mem_barrier();
2899 *(vuip) ((unsigned long)lnxSBase + (Offset << 5)) = b * 0x01010101;
2904 @@ -689,17 +694,16 @@
2908 - *(vuip)((unsigned long)lnxSBase+(Offset<<5)+(1<<(5-2))) =
2912 + write_mem_barrier();
2913 + *(vuip)((unsigned long)lnxSBase+(Offset<<5)+(1<<(5-2))) = w * 0x00010001;
2917 writeSparse32(int Value, pointer Base, register unsigned long Offset)
2919 + /* note that this is actually doing a DENSE write... */
2920 + write_mem_barrier();
2921 *(vuip)((unsigned long)Base + (Offset)) = Value;
2926 diff -ur xc.orig/programs/Xserver/hw/xfree86/os-support/xf86_OSproc.h xc/programs/Xserver/hw/xfree86/os-support/xf86_OSproc.h
2927 --- xc.orig/programs/Xserver/hw/xfree86/os-support/xf86_OSproc.h Fri Dec 8 22:59:49 2000
2928 +++ xc/programs/Xserver/hw/xfree86/os-support/xf86_OSproc.h Sun Mar 18 16:51:30 2001
2929 @@ -194,13 +194,6 @@
2930 extern Bool xf86UnbindGARTMemory(int screenNum, int key);
2931 extern Bool xf86EnableAGP(int screenNum, CARD32 mode);
2933 -#if defined(__alpha__)
2934 -extern void xf86JensenMemToBus(char *, long, long, int);
2935 -extern void xf86JensenBusToMem(char *, char *, unsigned long, int);
2936 -extern void xf86SlowBCopyFromBus(unsigned char *, unsigned char *, int);
2937 -extern void xf86SlowBCopyToBus(unsigned char *, unsigned char *, int);
2938 -#endif /* __alpha__ */
2940 /* These routines are in shared/sigio.c and are not loaded as part of the
2941 module. These routines are small, and the code if very POSIX-signal (or
2942 OS-signal) specific, so it seemed better to provide more complex