Sun Mar 5 01:32:03 2017 UTC ()
merge xf86-video-chips 1.2.7, xf86-video-glint 1.2.9, xf86-video-mga 1.6.5,
and xf86-video-r128 6.10.2.


(mrg)
diff -r1.4 -r1.5 xsrc/external/mit/xf86-video-chips/dist/src/ct_accel.c
diff -r1.11 -r1.12 xsrc/external/mit/xf86-video-glint/dist/src/glint_driver.c
diff -r1.4 -r1.5 xsrc/external/mit/xf86-video-glint/dist/src/pm2_dac.c
diff -r1.5 -r1.6 xsrc/external/mit/xf86-video-glint/include/config.h
diff -r1.7 -r1.8 xsrc/external/mit/xf86-video-mga/dist/src/mga_dac3026.c
diff -r1.4 -r1.5 xsrc/external/mit/xf86-video-mga/dist/src/mga_dacG.c
diff -r1.3 -r1.4 xsrc/external/mit/xf86-video-mga/dist/src/mga_driver.c
diff -r1.3 -r1.4 xsrc/external/mit/xf86-video-mga/dist/src/mga_exa.c
diff -r1.3 -r1.4 xsrc/external/mit/xf86-video-mga/dist/src/mga_merge.c
diff -r1.3 -r1.4 xsrc/external/mit/xf86-video-mga/dist/src/mga_storm.c
diff -r1.17 -r1.18 xsrc/external/mit/xf86-video-r128/dist/src/r128_driver.c
diff -r1.5 -r1.6 xsrc/external/mit/xf86-video-r128/dist/src/r128_output.c

cvs diff -r1.4 -r1.5 xsrc/external/mit/xf86-video-chips/dist/src/ct_accel.c (expand / switch to unified diff)

--- xsrc/external/mit/xf86-video-chips/dist/src/ct_accel.c 2016/08/20 16:21:08 1.4
+++ xsrc/external/mit/xf86-video-chips/dist/src/ct_accel.c 2017/03/05 01:32:02 1.5
@@ -15,28 +15,26 @@ @@ -15,28 +15,26 @@
15 * THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, 15 * THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
16 * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO 16 * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
17 * EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR 17 * EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
18 * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, 18 * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
19 * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 19 * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
20 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 20 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
21 * PERFORMANCE OF THIS SOFTWARE. 21 * PERFORMANCE OF THIS SOFTWARE.
22 */ 22 */
23 23
24#ifdef HAVE_CONFIG_H 24#ifdef HAVE_CONFIG_H
25#include "config.h" 25#include "config.h"
26#endif 26#endif
27 27
28#ifdef HAVE_XAA_H 
29 
30/* 28/*
31 * When monochrome tiles/stipples are cached on the HiQV chipsets the 29 * When monochrome tiles/stipples are cached on the HiQV chipsets the
32 * pitch of the monochrome data is the displayWidth. The HiQV manuals 30 * pitch of the monochrome data is the displayWidth. The HiQV manuals
33 * state that the source pitch is ignored with monochrome data, and so 31 * state that the source pitch is ignored with monochrome data, and so
34 * "offically" there the XAA cached monochrome data can't be used. But 32 * "offically" there the XAA cached monochrome data can't be used. But
35 * it appears that by not setting the monochrome source alignment in 33 * it appears that by not setting the monochrome source alignment in
36 * BR03, the monochrome source pitch is forced to the displayWidth!! 34 * BR03, the monochrome source pitch is forced to the displayWidth!!
37 * 35 *
38 * To enable the use of this undocumented feature, uncomment the define 36 * To enable the use of this undocumented feature, uncomment the define
39 * below. 37 * below.
40 */ 38 */
41#define UNDOCUMENTED_FEATURE 39#define UNDOCUMENTED_FEATURE
42 40
@@ -59,26 +57,28 @@ @@ -59,26 +57,28 @@
59#ifdef CHIPS_MMIO 57#ifdef CHIPS_MMIO
60#ifdef CHIPS_HIQV 58#ifdef CHIPS_HIQV
61#include "ct_BltHiQV.h" 59#include "ct_BltHiQV.h"
62#define CTNAME(subname) CATNAME(CHIPSHiQV,subname) 60#define CTNAME(subname) CATNAME(CHIPSHiQV,subname)
63#else 61#else
64#include "ct_BlitMM.h" 62#include "ct_BlitMM.h"
65#define CTNAME(subname) CATNAME(CHIPSMMIO,subname) 63#define CTNAME(subname) CATNAME(CHIPSMMIO,subname)
66#endif 64#endif
67#else 65#else
68#include "ct_Blitter.h" 66#include "ct_Blitter.h"
69#define CTNAME(subname) CATNAME(CHIPS,subname) 67#define CTNAME(subname) CATNAME(CHIPS,subname)
70#endif 68#endif
71 69
 70#ifdef HAVE_XAA_H
 71
72#ifdef DEBUG 72#ifdef DEBUG
73# define DEBUG_P(x) ErrorF(x"\n"); 73# define DEBUG_P(x) ErrorF(x"\n");
74#elif defined X_DEBUG 74#elif defined X_DEBUG
75# define DEBUG_P(x) snprintf(CTNAME(accel_debug),1024,x"\n"); 75# define DEBUG_P(x) snprintf(CTNAME(accel_debug),1024,x"\n");
76#else 76#else
77# define DEBUG_P(x) /**/ 77# define DEBUG_P(x) /**/
78#endif 78#endif
79 79
80#ifdef X_DEBUG 80#ifdef X_DEBUG
81static char CTNAME(accel_debug)[1024]; 81static char CTNAME(accel_debug)[1024];
82#endif 82#endif
83 83
84#ifdef CHIPS_HIQV 84#ifdef CHIPS_HIQV
@@ -154,27 +154,27 @@ static void CTNAME(ReadPixmap)(ScrnInfo @@ -154,27 +154,27 @@ static void CTNAME(ReadPixmap)(ScrnInfo
154# define BE_SWAP(pScrn,cPtr,x) \ 154# define BE_SWAP(pScrn,cPtr,x) \
155 if (!BE_SWAP_APRETURE(pScrn,cPtr)) { \ 155 if (!BE_SWAP_APRETURE(pScrn,cPtr)) { \
156 CARD8 XR0A = cPtr->readXR(cPtr,0x0A); \ 156 CARD8 XR0A = cPtr->readXR(cPtr,0x0A); \
157 cPtr->writeXR(cPtr, 0x0A, (XR0A & 0xcf) | x); \ 157 cPtr->writeXR(cPtr, 0x0A, (XR0A & 0xcf) | x); \
158 } 158 }
159 159
160/* 16 bit Byte Swap */ 160/* 16 bit Byte Swap */
161# define BE_SWAPON(pScrn,cPtr) BE_SWAP(pScrn,cPtr,0x10) 161# define BE_SWAPON(pScrn,cPtr) BE_SWAP(pScrn,cPtr,0x10)
162# define BE_SWAPOFF(pScrn,cPtr) BE_SWAP(pScrn,cPtr,0x0) 162# define BE_SWAPOFF(pScrn,cPtr) BE_SWAP(pScrn,cPtr,0x0)
163#else 163#else
164# define BE_SWAPON(pScrn,cPtr) 164# define BE_SWAPON(pScrn,cPtr)
165# define BE_SWAPOFF(pScrn,cPtr) 165# define BE_SWAPOFF(pScrn,cPtr)
166#endif 166#endif
167 167#endif
168Bool  168Bool
169CTNAME(AccelInit)(ScreenPtr pScreen) 169CTNAME(AccelInit)(ScreenPtr pScreen)
170{ 170{
171#ifdef HAVE_XAA_H 171#ifdef HAVE_XAA_H
172 XAAInfoRecPtr infoPtr; 172 XAAInfoRecPtr infoPtr;
173 ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); 173 ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
174 CHIPSPtr cPtr = CHIPSPTR(pScrn); 174 CHIPSPtr cPtr = CHIPSPTR(pScrn);
175 CHIPSACLPtr cAcl = CHIPSACLPTR(pScrn); 175 CHIPSACLPtr cAcl = CHIPSACLPTR(pScrn);
176 176
177 DEBUG_P("AccelInit"); 177 DEBUG_P("AccelInit");
178 cPtr->AccelInfoRec = infoPtr = XAACreateInfoRec(); 178 cPtr->AccelInfoRec = infoPtr = XAACreateInfoRec();
179 if(!infoPtr) return FALSE; 179 if(!infoPtr) return FALSE;
180 180
@@ -1731,18 +1731,16 @@ CTNAME(ReadPixmap)(ScrnInfoPtr pScrn, in @@ -1731,18 +1731,16 @@ CTNAME(ReadPixmap)(ScrnInfoPtr pScrn, in
1731 ctSETSRCADDR(srcaddr); 1731 ctSETSRCADDR(srcaddr);
1732 ctSETHEIGHTWIDTHGO(h, bytesPerLine); 1732 ctSETHEIGHTWIDTHGO(h, bytesPerLine);
1733 1733
1734 BE_SWAPFF(pScrn,cPtr); 1734 BE_SWAPFF(pScrn,cPtr);
1735 MoveDataToCPU((unsigned char *)cAcl->BltDataWindow, 1735 MoveDataToCPU((unsigned char *)cAcl->BltDataWindow,
1736 (unsigned char *)dst, dstwidth<<1, 16384, h, dwords); 1736 (unsigned char *)dst, dstwidth<<1, 16384, h, dwords);
1737 BE_SWAPON(pScrn,cPtr); 1737 BE_SWAPON(pScrn,cPtr);
1738 } 1738 }
1739 1739
1740 cPtr->AccelInfoRec->NeedToSync = TRUE; 1740 cPtr->AccelInfoRec->NeedToSync = TRUE;
1741} 1741}
1742#endif /* ReadPixmap */ 1742#endif /* ReadPixmap */
1743 1743
1744#endif /* writepixmap */ 
1745 
1746#endif 1744#endif
1747 1745
1748#endif /* HAVE_XAA_H */ 1746#endif

cvs diff -r1.11 -r1.12 xsrc/external/mit/xf86-video-glint/dist/src/glint_driver.c (expand / switch to unified diff)

--- xsrc/external/mit/xf86-video-glint/dist/src/glint_driver.c 2016/12/23 06:52:17 1.11
+++ xsrc/external/mit/xf86-video-glint/dist/src/glint_driver.c 2017/03/05 01:32:02 1.12
@@ -937,27 +937,29 @@ GLINTPreInit(ScrnInfoPtr pScrn, int flag @@ -937,27 +937,29 @@ GLINTPreInit(ScrnInfoPtr pScrn, int flag
937 pScrn->racMemFlags = RAC_FB | RAC_COLORMAP | RAC_CURSOR | RAC_VIEWPORT; 937 pScrn->racMemFlags = RAC_FB | RAC_COLORMAP | RAC_CURSOR | RAC_VIEWPORT;
938 pScrn->racIoFlags = RAC_FB | RAC_COLORMAP | RAC_CURSOR | RAC_VIEWPORT; 938 pScrn->racIoFlags = RAC_FB | RAC_COLORMAP | RAC_CURSOR | RAC_VIEWPORT;
939#endif 939#endif
940 /* Set pScrn->monitor */ 940 /* Set pScrn->monitor */
941 pScrn->monitor = pScrn->confScreen->monitor; 941 pScrn->monitor = pScrn->confScreen->monitor;
942 /* 942 /*
943 * The first thing we should figure out is the depth, bpp, etc. 943 * The first thing we should figure out is the depth, bpp, etc.
944 * We support both 24bpp and 32bpp layouts, so indicate that. 944 * We support both 24bpp and 32bpp layouts, so indicate that.
945 */ 945 */
946#ifndef __NetBSD__ 946#ifndef __NetBSD__
947 if (FBDevProbed) { 947 if (FBDevProbed) {
948 int default_depth, fbbpp; 948 int default_depth, fbbpp;
949  949
950 if (!fbdevHWInit(pScrn,NULL,xf86FindOptionValue(pGlint->pEnt->device->options,"fbdev"))) { 950 if (!fbdevHWInit(pScrn, pGlint->PciInfo,
 951 xf86FindOptionValue(pGlint->pEnt->device->options,
 952 "fbdev"))) {
951 xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "fbdevHWInit failed!\n");  953 xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "fbdevHWInit failed!\n");
952 return FALSE; 954 return FALSE;
953 } 955 }
954 default_depth = fbdevHWGetDepth(pScrn,&fbbpp); 956 default_depth = fbdevHWGetDepth(pScrn,&fbbpp);
955 if (!xf86SetDepthBpp(pScrn, default_depth, default_depth, fbbpp,0)) 957 if (!xf86SetDepthBpp(pScrn, default_depth, default_depth, fbbpp,0))
956 return FALSE; 958 return FALSE;
957 } else 959 } else
958#endif /* __NetBSD__ */ 960#endif /* __NetBSD__ */
959 { 961 {
960 if (!xf86SetDepthBpp(pScrn, 0, 0, 0, Support24bppFb | Support32bppFb  962 if (!xf86SetDepthBpp(pScrn, 0, 0, 0, Support24bppFb | Support32bppFb
961 /*| SupportConvert32to24 | PreferConvert32to24*/)) 963 /*| SupportConvert32to24 | PreferConvert32to24*/))
962 return FALSE; 964 return FALSE;
963 } 965 }
@@ -1076,27 +1078,29 @@ GLINTPreInit(ScrnInfoPtr pScrn, int flag @@ -1076,27 +1078,29 @@ GLINTPreInit(ScrnInfoPtr pScrn, int flag
1076 (1 << 8) | 1078 (1 << 8) |
1077 ((pScrn->mask.blue - 1) << 0); 1079 ((pScrn->mask.blue - 1) << 0);
1078 } 1080 }
1079 1081
1080#ifndef __NetBSD__ 1082#ifndef __NetBSD__
1081 /* Check whether to use the FBDev stuff and fill in the rest of pScrn */ 1083 /* Check whether to use the FBDev stuff and fill in the rest of pScrn */
1082 if (xf86ReturnOptValBool(pGlint->Options, OPTION_FBDEV, FALSE)) { 1084 if (xf86ReturnOptValBool(pGlint->Options, OPTION_FBDEV, FALSE)) {
1083 if (!FBDevProbed && !xf86LoadSubModule(pScrn, "fbdevhw")) 1085 if (!FBDevProbed && !xf86LoadSubModule(pScrn, "fbdevhw"))
1084 { 1086 {
1085 xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "couldn't load fbdevHW module!\n");  1087 xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "couldn't load fbdevHW module!\n");
1086 return FALSE; 1088 return FALSE;
1087 } 1089 }
1088 1090
1089 if (!fbdevHWInit(pScrn,NULL,xf86FindOptionValue(pGlint->pEnt->device->options,"fbdev"))) 1091 if (!fbdevHWInit(pScrn, pGlint->PciInfo,
 1092 xf86FindOptionValue(pGlint->pEnt->device->options,
 1093 "fbdev")))
1090 { 1094 {
1091 xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "fbdevHWInit failed!\n"); 1095 xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "fbdevHWInit failed!\n");
1092 return FALSE; 1096 return FALSE;
1093 } 1097 }
1094 1098
1095 pGlint->FBDev = TRUE; 1099 pGlint->FBDev = TRUE;
1096 from = X_CONFIG; 1100 from = X_CONFIG;
1097  1101
1098 pScrn->AdjustFrame = fbdevHWAdjustFrameWeak(); 1102 pScrn->AdjustFrame = fbdevHWAdjustFrameWeak();
1099 pScrn->LeaveVT = fbdevHWLeaveVTWeak(); 1103 pScrn->LeaveVT = fbdevHWLeaveVTWeak();
1100 pScrn->ValidMode = fbdevHWValidModeWeak(); 1104 pScrn->ValidMode = fbdevHWValidModeWeak();
1101  1105
1102 } else 1106 } else

cvs diff -r1.4 -r1.5 xsrc/external/mit/xf86-video-glint/dist/src/pm2_dac.c (expand / switch to unified diff)

--- xsrc/external/mit/xf86-video-glint/dist/src/pm2_dac.c 2016/12/09 23:13:14 1.4
+++ xsrc/external/mit/xf86-video-glint/dist/src/pm2_dac.c 2017/03/05 01:32:02 1.5
@@ -467,34 +467,29 @@ Permedia2I2CUDelay(I2CBusPtr b, int usec @@ -467,34 +467,29 @@ Permedia2I2CUDelay(I2CBusPtr b, int usec
467 GLINTPtr pGlint = (GLINTPtr) b->DriverPrivate.ptr; 467 GLINTPtr pGlint = (GLINTPtr) b->DriverPrivate.ptr;
468 CARD32 ct1 = GLINT_READ_REG(PMCount); 468 CARD32 ct1 = GLINT_READ_REG(PMCount);
469 CARD32 ct2 = usec * 100; 469 CARD32 ct2 = usec * 100;
470 470
471 if (GLINT_READ_REG(PMCount) != ct1) 471 if (GLINT_READ_REG(PMCount) != ct1)
472 while ((GLINT_READ_REG(PMCount) - ct1) < ct2); 472 while ((GLINT_READ_REG(PMCount) - ct1) < ct2);
473} 473}
474 474
475void 475void
476Permedia2I2CPutBits(I2CBusPtr b, int scl, int sda) 476Permedia2I2CPutBits(I2CBusPtr b, int scl, int sda)
477{ 477{
478 GLINTPtr pGlint = (GLINTPtr) b->DriverPrivate.ptr; 478 GLINTPtr pGlint = (GLINTPtr) b->DriverPrivate.ptr;
479 int r = (pGlint->DDCBus == b) ? PMDDCData : VSSerialBusControl; 479 int r = (pGlint->DDCBus == b) ? PMDDCData : VSSerialBusControl;
480/* 480
481 This is bogus. 
482 All this line does is to preserve the USE_MONID bit if set which prevents 
483 the i2c bits from doing anything 
484 CARD32 v = GLINT_READ_REG(r) & ~(ClkOut | DataOut); 
485*/ 
486 CARD32 v = 0; 481 CARD32 v = 0;
487  482
488 if (scl > 0) v |= ClkOut; 483 if (scl > 0) v |= ClkOut;
489 if (sda > 0) v |= DataOut; 484 if (sda > 0) v |= DataOut;
490 485
491 GLINT_WRITE_REG(v, r); 486 GLINT_WRITE_REG(v, r);
492} 487}
493 488
494void 489void
495Permedia2I2CGetBits(I2CBusPtr b, int *scl, int *sda) 490Permedia2I2CGetBits(I2CBusPtr b, int *scl, int *sda)
496{ 491{
497 GLINTPtr pGlint = (GLINTPtr) b->DriverPrivate.ptr; 492 GLINTPtr pGlint = (GLINTPtr) b->DriverPrivate.ptr;
498 CARD32 v = GLINT_READ_REG((pGlint->DDCBus == b) ? 493 CARD32 v = GLINT_READ_REG((pGlint->DDCBus == b) ?
499 PMDDCData : VSSerialBusControl); 494 PMDDCData : VSSerialBusControl);
500 495

cvs diff -r1.5 -r1.6 xsrc/external/mit/xf86-video-glint/include/config.h (expand / switch to unified diff)

--- xsrc/external/mit/xf86-video-glint/include/config.h 2013/06/02 07:41:11 1.5
+++ xsrc/external/mit/xf86-video-glint/include/config.h 2017/03/05 01:32:02 1.6
@@ -43,38 +43,38 @@ @@ -43,38 +43,38 @@
43 */ 43 */
44#define LT_OBJDIR ".libs/" 44#define LT_OBJDIR ".libs/"
45 45
46/* Name of package */ 46/* Name of package */
47#define PACKAGE "xf86-video-glint" 47#define PACKAGE "xf86-video-glint"
48 48
49/* Define to the address where bug reports for this package should be sent. */ 49/* Define to the address where bug reports for this package should be sent. */
50#define PACKAGE_BUGREPORT "https://bugs.freedesktop.org/enter_bug.cgi?product=xorg&component=Driver/glint" 50#define PACKAGE_BUGREPORT "https://bugs.freedesktop.org/enter_bug.cgi?product=xorg&component=Driver/glint"
51 51
52/* Define to the full name of this package. */ 52/* Define to the full name of this package. */
53#define PACKAGE_NAME "xf86-video-glint" 53#define PACKAGE_NAME "xf86-video-glint"
54 54
55/* Define to the full name and version of this package. */ 55/* Define to the full name and version of this package. */
56#define PACKAGE_STRING "xf86-video-glint 1.2.8" 56#define PACKAGE_STRING "xf86-video-glint 1.2.9"
57 57
58/* Define to the one symbol short name of this package. */ 58/* Define to the one symbol short name of this package. */
59#define PACKAGE_TARNAME "xf86-video-glint" 59#define PACKAGE_TARNAME "xf86-video-glint"
60 60
61/* Define to the home page for this package. */ 61/* Define to the home page for this package. */
62#define PACKAGE_URL "" 62#define PACKAGE_URL ""
63 63
64/* Define to the version of this package. */ 64/* Define to the version of this package. */
65#define PACKAGE_VERSION "1.2.8" 65#define PACKAGE_VERSION "1.2.9"
66 66
67/* Major version of this package */ 67/* Major version of this package */
68#define PACKAGE_VERSION_MAJOR 1 68#define PACKAGE_VERSION_MAJOR 1
69 69
70/* Minor version of this package */ 70/* Minor version of this package */
71#define PACKAGE_VERSION_MINOR 2 71#define PACKAGE_VERSION_MINOR 2
72 72
73/* Patch version of this package */ 73/* Patch version of this package */
74#define PACKAGE_VERSION_PATCHLEVEL 8 74#define PACKAGE_VERSION_PATCHLEVEL 9
75 75
76/* Define to 1 if you have the ANSI C header files. */ 76/* Define to 1 if you have the ANSI C header files. */
77#define STDC_HEADERS 1 77#define STDC_HEADERS 1
78 78
79/* Version number of package */ 79/* Version number of package */
80#define VERSION "1.2.8" 80#define VERSION "1.2.9"

cvs diff -r1.7 -r1.8 xsrc/external/mit/xf86-video-mga/dist/src/mga_dac3026.c (expand / switch to unified diff)

--- xsrc/external/mit/xf86-video-mga/dist/src/mga_dac3026.c 2016/08/20 00:27:21 1.7
+++ xsrc/external/mit/xf86-video-mga/dist/src/mga_dac3026.c 2017/03/05 01:32:02 1.8
@@ -844,27 +844,27 @@ MGA3026Save(ScrnInfoPtr pScrn, vgaRegPtr @@ -844,27 +844,27 @@ MGA3026Save(ScrnInfoPtr pScrn, vgaRegPtr
844 844
845 outTi3026(TVP3026_PLL_ADDR, 0, 0x00); 845 outTi3026(TVP3026_PLL_ADDR, 0, 0x00);
846 for (i = 3; i < 6; i++) 846 for (i = 3; i < 6; i++)
847 outTi3026(TVP3026_LOAD_CLK_DATA, 0, mgaReg->DacClk[i] = 847 outTi3026(TVP3026_LOAD_CLK_DATA, 0, mgaReg->DacClk[i] =
848 inTi3026(TVP3026_LOAD_CLK_DATA)); 848 inTi3026(TVP3026_LOAD_CLK_DATA));
849 ); /* MGA_NOT_HAL */ 849 ); /* MGA_NOT_HAL */
850  850
851 for (i = 0; i < DACREGSIZE; i++) 851 for (i = 0; i < DACREGSIZE; i++)
852 mgaReg->DacRegs[i] = inTi3026(MGADACregs[i]); 852 mgaReg->DacRegs[i] = inTi3026(MGADACregs[i]);
853  853
854#ifdef XSERVER_LIBPCIACCESS 854#ifdef XSERVER_LIBPCIACCESS
855 { 855 {
856 uint32_t Option; 856 uint32_t Option;
857 pci_device_cfg_read_u32(pMga->PciInfo, & Option,  857 pci_device_cfg_read_u32(pMga->PciInfo, & Option,
858 PCI_OPTION_REG); 858 PCI_OPTION_REG);
859 mgaReg->Option = Option; 859 mgaReg->Option = Option;
860 } 860 }
861#else 861#else
862 mgaReg->Option = pciReadLong(pMga->PciTag, PCI_OPTION_REG); 862 mgaReg->Option = pciReadLong(pMga->PciTag, PCI_OPTION_REG);
863#endif 863#endif
864  864
865#ifdef DEBUG  865#ifdef DEBUG
866 ErrorF("read: %02X %02X %02X %02X %02X %02X %08lX\n", 866 ErrorF("read: %02X %02X %02X %02X %02X %02X %08lX\n",
867 mgaReg->DacClk[0], mgaReg->DacClk[1], mgaReg->DacClk[2], mgaReg->DacClk[3], mgaReg->DacClk[4], mgaReg->DacClk[5], mgaReg->Option); 867 mgaReg->DacClk[0], mgaReg->DacClk[1], mgaReg->DacClk[2], mgaReg->DacClk[3], mgaReg->DacClk[4], mgaReg->DacClk[5], mgaReg->Option);
868 for (i=0; i<sizeof(MGADACregs); i++) ErrorF("%02X ", mgaReg->DacRegs[i]); 868 for (i=0; i<sizeof(MGADACregs); i++) ErrorF("%02X ", mgaReg->DacRegs[i]);
869 for (i=0; i<6; i++) ErrorF(" %02X", mgaReg->ExtVga[i]); 869 for (i=0; i<6; i++) ErrorF(" %02X", mgaReg->ExtVga[i]);
870 ErrorF("\n"); 870 ErrorF("\n");

cvs diff -r1.4 -r1.5 xsrc/external/mit/xf86-video-mga/dist/src/mga_dacG.c (expand / switch to unified diff)

--- xsrc/external/mit/xf86-video-mga/dist/src/mga_dacG.c 2016/09/22 17:11:58 1.4
+++ xsrc/external/mit/xf86-video-mga/dist/src/mga_dacG.c 2017/03/05 01:32:02 1.5
@@ -41,26 +41,95 @@ @@ -41,26 +41,95 @@
41#define OPTION1_MASK 0xFFFFFEFF 41#define OPTION1_MASK 0xFFFFFEFF
42#define OPTION2_MASK 0xFFFFFFFF 42#define OPTION2_MASK 0xFFFFFFFF
43#define OPTION3_MASK 0xFFFFFFFF 43#define OPTION3_MASK 0xFFFFFFFF
44 44
45#define OPTION1_MASK_PRIMARY 0xFFFC0FF 45#define OPTION1_MASK_PRIMARY 0xFFFC0FF
46 46
47static void MGAGRamdacInit(ScrnInfoPtr); 47static void MGAGRamdacInit(ScrnInfoPtr);
48static void MGAGSave(ScrnInfoPtr, vgaRegPtr, MGARegPtr, Bool); 48static void MGAGSave(ScrnInfoPtr, vgaRegPtr, MGARegPtr, Bool);
49static void MGAGRestore(ScrnInfoPtr, vgaRegPtr, MGARegPtr, Bool); 49static void MGAGRestore(ScrnInfoPtr, vgaRegPtr, MGARegPtr, Bool);
50static Bool MGAGInit(ScrnInfoPtr, DisplayModePtr); 50static Bool MGAGInit(ScrnInfoPtr, DisplayModePtr);
51static void MGAGLoadPalette(ScrnInfoPtr, int, int*, LOCO*, VisualPtr); 51static void MGAGLoadPalette(ScrnInfoPtr, int, int*, LOCO*, VisualPtr);
52static Bool MGAG_i2cInit(ScrnInfoPtr pScrn); 52static Bool MGAG_i2cInit(ScrnInfoPtr pScrn);
53 53
 54#define P_ARRAY_SIZE 9
 55
 56void
 57MGAG200E4ComputePLLParam(ScrnInfoPtr pScrn, long lFo, int *M, int *N, int *P)
 58{
 59 unsigned int ulComputedFo;
 60 unsigned int ulFDelta;
 61 unsigned int ulFPermitedDelta;
 62 unsigned int ulFTmpDelta;
 63 unsigned int ulVCOMax, ulVCOMin;
 64 unsigned int ulTestP;
 65 unsigned int ulTestM;
 66 unsigned int ulTestN;
 67 unsigned int ulFoInternal;
 68 unsigned int ulPLLFreqRef;
 69 unsigned int pulPValues[P_ARRAY_SIZE] = {16, 14, 12, 10, 8, 6, 4, 2, 1};
 70 unsigned int i;
 71 unsigned int ulVCO;
 72 unsigned int ulFVV;
 73
 74 ulVCOMax = 1600000;
 75 ulVCOMin = 800000;
 76 ulPLLFreqRef = 25000;
 77
 78 if(lFo < 25000)
 79 lFo = 25000;
 80
 81 ulFoInternal = lFo * 2;
 82
 83 ulFDelta = 0xFFFFFFFF;
 84 /* Permited delta is 0.5% as VESA Specification */
 85 ulFPermitedDelta = ulFoInternal * 5 / 1000;
 86
 87 for (i = 0 ; i < P_ARRAY_SIZE ; i++)
 88 {
 89 ulTestP = pulPValues[i];
 90
 91 if ((ulFoInternal * ulTestP) > ulVCOMax) continue;
 92 if ((ulFoInternal * ulTestP) < ulVCOMin) continue;
 93
 94 for (ulTestN = 50; ulTestN <= 256; ulTestN++) {
 95 for (ulTestM = 1; ulTestM <= 32; ulTestM++) {
 96 ulComputedFo = (ulPLLFreqRef * ulTestN) / (ulTestM * ulTestP);
 97 if (ulComputedFo > ulFoInternal)
 98 ulFTmpDelta = ulComputedFo - ulFoInternal;
 99 else
 100 ulFTmpDelta = ulFoInternal - ulComputedFo;
 101
 102 if (ulFTmpDelta < ulFDelta) {
 103 ulFDelta = ulFTmpDelta;
 104 *M = ulTestM - 1;
 105 *N = ulTestN - 1;
 106 *P = ulTestP - 1;
 107 }
 108 }
 109 }
 110 }
 111
 112 ulVCO = ulPLLFreqRef * ((*N)+1) / ((*M)+1);
 113 ulFVV = (ulVCO - 800000) / 50000;
 114
 115 if (ulFVV > 15)
 116 ulFVV = 15;
 117
 118 *P |= (ulFVV << 4);
 119
 120 *M |= 0x80;
 121}
 122
54static void 123static void
55MGAG200SEComputePLLParam(ScrnInfoPtr pScrn, long lFo, int *M, int *N, int *P) 124MGAG200SEComputePLLParam(ScrnInfoPtr pScrn, long lFo, int *M, int *N, int *P)
56{ 125{
57 unsigned int ulComputedFo; 126 unsigned int ulComputedFo;
58 unsigned int ulFDelta; 127 unsigned int ulFDelta;
59 unsigned int ulFPermitedDelta; 128 unsigned int ulFPermitedDelta;
60 unsigned int ulFTmpDelta; 129 unsigned int ulFTmpDelta;
61 unsigned int ulVCOMax, ulVCOMin; 130 unsigned int ulVCOMax, ulVCOMin;
62 unsigned int ulTestP; 131 unsigned int ulTestP;
63 unsigned int ulTestM; 132 unsigned int ulTestM;
64 unsigned int ulTestN; 133 unsigned int ulTestN;
65 unsigned int ulPLLFreqRef; 134 unsigned int ulPLLFreqRef;
66 135
@@ -197,26 +266,94 @@ MGAG200WBComputePLLParam(ScrnInfoPtr pSc @@ -197,26 +266,94 @@ MGAG200WBComputePLLParam(ScrnInfoPtr pSc
197 *N = (CARD8)(ulTestN - 1); 266 *N = (CARD8)(ulTestN - 1);
198 *P = (CARD8)(ulTestP - 1); 267 *P = (CARD8)(ulTestP - 1);
199 } 268 }
200 } 269 }
201 } 270 }
202 } 271 }
203#if DEBUG 272#if DEBUG
204 xf86DrvMsg(pScrn->scrnIndex, X_INFO, 273 xf86DrvMsg(pScrn->scrnIndex, X_INFO,
205 "lFo=%ld n=0x%x m=0x%x p=0x%x \n", 274 "lFo=%ld n=0x%x m=0x%x p=0x%x \n",
206 lFo, *N, *M, *P ); 275 lFo, *N, *M, *P );
207#endif 276#endif
208} 277}
209 278
 279void
 280MGAG200EW3ComputePLLParam(ScrnInfoPtr pScrn ,long lFo, int *M, int *N, int *P)
 281{
 282 unsigned int ulComputedFo;
 283 unsigned int ulFDelta;
 284 unsigned int ulFPermitedDelta;
 285 unsigned int ulFTmpDelta;
 286 unsigned int ulVCOMax, ulVCOMin;
 287 unsigned int ulTestP1;
 288 unsigned int ulTestP2;
 289 unsigned int ulTestM;
 290 unsigned int ulTestN;
 291 unsigned int ulPLLFreqRef;
 292 unsigned int ulTestP1Start;
 293 unsigned int ulTestP1End;
 294 unsigned int ulTestP2Start;
 295 unsigned int ulTestP2End;
 296 unsigned int ulTestMStart;
 297 unsigned int ulTestMEnd;
 298 unsigned int ulTestNStart;
 299 unsigned int ulTestNEnd;
 300
 301 ulVCOMax = 800000;
 302 ulVCOMin = 400000;
 303 ulPLLFreqRef = 25000;
 304 ulTestP1Start = 1;
 305 ulTestP1End = 8;
 306 ulTestP2Start = 1;
 307 ulTestP2End = 8;
 308 ulTestMStart = 1;
 309 ulTestMEnd = 26;
 310 ulTestNStart = 32;
 311 ulTestNEnd = 2048;
 312
 313 ulFDelta = 0xFFFFFFFF;
 314 /* Permited delta is 0.5% as VESA Specification */
 315 ulFPermitedDelta = lFo * 5 / 1000;
 316
 317 /* Then we need to minimize the M while staying within 0.5% */
 318 for (ulTestP1 = ulTestP1Start; ulTestP1 < ulTestP1End; ulTestP1++) {
 319 for (ulTestP2 = ulTestP2Start; ulTestP2 < ulTestP2End; ulTestP2++) {
 320 if (ulTestP1 < ulTestP2) continue;
 321 if ((lFo * ulTestP1 * ulTestP2) > ulVCOMax) continue;
 322 if ((lFo * ulTestP1 * ulTestP2) < ulVCOMin) continue;
 323
 324 for (ulTestM = ulTestMStart; ulTestM < ulTestMEnd; ulTestM++) {
 325 for (ulTestN = ulTestNStart; ulTestN < ulTestNEnd; ulTestN++) {
 326 ulComputedFo = (ulPLLFreqRef * ulTestN) / (ulTestM * ulTestP1 * ulTestP2);
 327 if (ulComputedFo > lFo)
 328 ulFTmpDelta = ulComputedFo - lFo;
 329 else
 330 ulFTmpDelta = lFo - ulComputedFo;
 331
 332 if (ulFTmpDelta < ulFDelta) {
 333 ulFDelta = ulFTmpDelta;
 334 *M = (CARD8)((ulTestN & 0x100) >> 1) |
 335 (CARD8)(ulTestM);
 336 *N = (CARD8)(ulTestN & 0xFF);
 337 *P = (CARD8)((ulTestN & 0x600) >> 3) |
 338 (CARD8)(ulTestP2 << 3) |
 339 (CARD8)ulTestP1;
 340 }
 341 }
 342 }
 343 }
 344 }
 345}
 346
210static void 347static void
211MGAG200EHComputePLLParam(ScrnInfoPtr pScrn, long lFo, int *M, int *N, int *P) 348MGAG200EHComputePLLParam(ScrnInfoPtr pScrn, long lFo, int *M, int *N, int *P)
212{ 349{
213 unsigned int ulComputedFo; 350 unsigned int ulComputedFo;
214 unsigned int ulFDelta; 351 unsigned int ulFDelta;
215 unsigned int ulFPermitedDelta; 352 unsigned int ulFPermitedDelta;
216 unsigned int ulFTmpDelta; 353 unsigned int ulFTmpDelta;
217 unsigned int ulTestP; 354 unsigned int ulTestP;
218 unsigned int ulTestM; 355 unsigned int ulTestM;
219 unsigned int ulTestN; 356 unsigned int ulTestN;
220 unsigned int ulVCOMax; 357 unsigned int ulVCOMax;
221 unsigned int ulVCOMin; 358 unsigned int ulVCOMin;
222 unsigned int ulPLLFreqRef; 359 unsigned int ulPLLFreqRef;
@@ -882,39 +1019,50 @@ MGAGSetPCLK( ScrnInfoPtr pScrn, long f_o @@ -882,39 +1019,50 @@ MGAGSetPCLK( ScrnInfoPtr pScrn, long f_o
882 pReg->Pan_Ctl = 0x20; 1019 pReg->Pan_Ctl = 0x20;
883 } else if (f_out < 160000) { 1020 } else if (f_out < 160000) {
884 pReg->Pan_Ctl = 0x28; 1021 pReg->Pan_Ctl = 0x28;
885 } else if (f_out < 175000) { 1022 } else if (f_out < 175000) {
886 pReg->Pan_Ctl = 0x30; 1023 pReg->Pan_Ctl = 0x30;
887 } else { 1024 } else {
888 pReg->Pan_Ctl = 0x38; 1025 pReg->Pan_Ctl = 0x38;
889 } 1026 }
890 } 1027 }
891 return; 1028 return;
892 } 1029 }
893 1030
894 if (pMga->is_G200SE) { 1031 if (pMga->is_G200SE) {
895 MGAG200SEComputePLLParam(pScrn, f_out, &m, &n, &p); 1032 if (pMga->reg_1e24 >= 0x04) {
 1033 MGAG200E4ComputePLLParam(pScrn, f_out, &m, &n, &p);
 1034 } else {
 1035 MGAG200SEComputePLLParam(pScrn, f_out, &m, &n, &p);
 1036 }
896 1037
897 pReg->DacRegs[ MGA1064_PIX_PLLC_M ] = m; 1038 pReg->DacRegs[ MGA1064_PIX_PLLC_M ] = m;
898 pReg->DacRegs[ MGA1064_PIX_PLLC_N ] = n; 1039 pReg->DacRegs[ MGA1064_PIX_PLLC_N ] = n;
899 pReg->DacRegs[ MGA1064_PIX_PLLC_P ] = p; 1040 pReg->DacRegs[ MGA1064_PIX_PLLC_P ] = p;
900 } else if (pMga->is_G200EV) { 1041 } else if (pMga->is_G200EV) {
901 MGAG200EVComputePLLParam(pScrn, f_out, &m, &n, &p); 1042 MGAG200EVComputePLLParam(pScrn, f_out, &m, &n, &p);
902 1043
903 pReg->PllM = m; 1044 pReg->PllM = m;
904 pReg->PllN = n; 1045 pReg->PllN = n;
905 pReg->PllP = p; 1046 pReg->PllP = p;
906 } else if (pMga->is_G200WB) { 1047 } else if (pMga->is_G200WB) {
907 MGAG200WBComputePLLParam(pScrn, f_out, &m, &n, &p); 1048 if (pMga->Chipset == PCI_CHIP_MGAG200_EW3_PCI)
 1049 {
 1050 MGAG200EW3ComputePLLParam(pScrn, f_out, &m, &n, &p);
 1051 }
 1052 else
 1053 {
 1054 MGAG200WBComputePLLParam(pScrn, f_out, &m, &n, &p);
 1055 }
908 1056
909 pReg->PllM = m; 1057 pReg->PllM = m;
910 pReg->PllN = n; 1058 pReg->PllN = n;
911 pReg->PllP = p; 1059 pReg->PllP = p;
912 } else if (pMga->is_G200EH) { 1060 } else if (pMga->is_G200EH) {
913 MGAG200EHComputePLLParam(pScrn, f_out, &m, &n, &p); 1061 MGAG200EHComputePLLParam(pScrn, f_out, &m, &n, &p);
914 1062
915 pReg->PllM = m; 1063 pReg->PllM = m;
916 pReg->PllN = n; 1064 pReg->PllN = n;
917 pReg->PllP = p;  1065 pReg->PllP = p;
918 } else if (pMga->is_G200ER) { 1066 } else if (pMga->is_G200ER) {
919 MGAG200ERComputePLLParam(pScrn, f_out, &m, &n, &p); 1067 MGAG200ERComputePLLParam(pScrn, f_out, &m, &n, &p);
920 pReg->PllM = m; 1068 pReg->PllM = m;
@@ -1084,26 +1232,27 @@ MGAGInit(ScrnInfoPtr pScrn, DisplayModeP @@ -1084,26 +1232,27 @@ MGAGInit(ScrnInfoPtr pScrn, DisplayModeP
1084 MGA1064_PIX_CLK_CTL_SEL_PLL; 1232 MGA1064_PIX_CLK_CTL_SEL_PLL;
1085 1233
1086 pReg->DacRegs[MGA1064_MISC_CTL] = 1234 pReg->DacRegs[MGA1064_MISC_CTL] =
1087 MGA1064_MISC_CTL_DAC_EN | 1235 MGA1064_MISC_CTL_DAC_EN |
1088 MGA1064_MISC_CTL_VGA8 | 1236 MGA1064_MISC_CTL_VGA8 |
1089 MGA1064_MISC_CTL_DAC_RAM_CS; 1237 MGA1064_MISC_CTL_DAC_RAM_CS;
1090 1238
1091 if (pMga->HasSDRAM) 1239 if (pMga->HasSDRAM)
1092 pReg->Option = 0x40049120; 1240 pReg->Option = 0x40049120;
1093 pReg->Option2 = 0x00008000; 1241 pReg->Option2 = 0x00008000;
1094 break; 1242 break;
1095 1243
1096 case PCI_CHIP_MGAG200_WINBOND_PCI: 1244 case PCI_CHIP_MGAG200_WINBOND_PCI:
 1245 case PCI_CHIP_MGAG200_EW3_PCI:
1097 pReg->DacRegs[MGA1064_VREF_CTL] = 0x07; 1246 pReg->DacRegs[MGA1064_VREF_CTL] = 0x07;
1098 pReg->Option = 0x41049120; 1247 pReg->Option = 0x41049120;
1099 pReg->Option2 = 0x0000b000; 1248 pReg->Option2 = 0x0000b000;
1100 break; 1249 break;
1101 1250
1102 case PCI_CHIP_MGAG200_EV_PCI: 1251 case PCI_CHIP_MGAG200_EV_PCI:
1103 pReg->DacRegs[MGA1064_PIX_CLK_CTL] = 1252 pReg->DacRegs[MGA1064_PIX_CLK_CTL] =
1104 MGA1064_PIX_CLK_CTL_SEL_PLL; 1253 MGA1064_PIX_CLK_CTL_SEL_PLL;
1105 1254
1106 pReg->DacRegs[MGA1064_MISC_CTL] = 1255 pReg->DacRegs[MGA1064_MISC_CTL] =
1107 MGA1064_MISC_CTL_VGA8 | 1256 MGA1064_MISC_CTL_VGA8 |
1108 MGA1064_MISC_CTL_DAC_RAM_CS; 1257 MGA1064_MISC_CTL_DAC_RAM_CS;
1109 1258
@@ -1224,27 +1373,27 @@ MGAGInit(ScrnInfoPtr pScrn, DisplayModeP @@ -1224,27 +1373,27 @@ MGAGInit(ScrnInfoPtr pScrn, DisplayModeP
1224 ((vd & 0xc00) >> 7) | 1373 ((vd & 0xc00) >> 7) |
1225 ((vs & 0xc00) >> 5) | 1374 ((vs & 0xc00) >> 5) |
1226 ((vd & 0x400) >> 3); /* linecomp */ 1375 ((vd & 0x400) >> 3); /* linecomp */
1227 if (pLayout->bitsPerPixel == 24) 1376 if (pLayout->bitsPerPixel == 24)
1228 pReg->ExtVga[3] = (((1 << BppShift) * 3) - 1) | 0x80; 1377 pReg->ExtVga[3] = (((1 << BppShift) * 3) - 1) | 0x80;
1229 else 1378 else
1230 pReg->ExtVga[3] = ((1 << BppShift) - 1) | 0x80; 1379 pReg->ExtVga[3] = ((1 << BppShift) - 1) | 0x80;
1231 1380
1232 pReg->ExtVga[4] = 0; 1381 pReg->ExtVga[4] = 0;
1233 1382
1234 if (pMga->is_G200WB){ 1383 if (pMga->is_G200WB){
1235 pReg->ExtVga[1] |= 0x88; 1384 pReg->ExtVga[1] |= 0x88;
1236 } 1385 }
1237 pReg->ExtVga_Index24 = 0x05; 1386 pReg->ExtVga_MgaReq = 0x05;
1238  1387
1239 pVga->CRTC[0] = ht - 4; 1388 pVga->CRTC[0] = ht - 4;
1240 pVga->CRTC[1] = hd; 1389 pVga->CRTC[1] = hd;
1241 pVga->CRTC[2] = hd; 1390 pVga->CRTC[2] = hd;
1242 pVga->CRTC[3] = (ht & 0x1F) | 0x80; 1391 pVga->CRTC[3] = (ht & 0x1F) | 0x80;
1243 pVga->CRTC[4] = hs; 1392 pVga->CRTC[4] = hs;
1244 pVga->CRTC[5] = ((ht & 0x20) << 2) | (he & 0x1F); 1393 pVga->CRTC[5] = ((ht & 0x20) << 2) | (he & 0x1F);
1245 pVga->CRTC[6] = vt & 0xFF; 1394 pVga->CRTC[6] = vt & 0xFF;
1246 pVga->CRTC[7] = ((vt & 0x100) >> 8 ) | 1395 pVga->CRTC[7] = ((vt & 0x100) >> 8 ) |
1247 ((vd & 0x100) >> 7 ) | 1396 ((vd & 0x100) >> 7 ) |
1248 ((vs & 0x100) >> 6 ) | 1397 ((vs & 0x100) >> 6 ) |
1249 ((vd & 0x100) >> 5 ) | 1398 ((vd & 0x100) >> 5 ) |
1250 ((vd & 0x100) >> 4 ) | /* linecomp */ 1399 ((vd & 0x100) >> 4 ) | /* linecomp */
@@ -1473,27 +1622,32 @@ MGA_NOT_HAL( @@ -1473,27 +1622,32 @@ MGA_NOT_HAL(
1473 && ((i == 0x2C) || (i == 0x2D) || (i == 0x2E))) 1622 && ((i == 0x2C) || (i == 0x2D) || (i == 0x2E)))
1474 continue; 1623 continue;
1475 if ( (pMga->is_G200EV || pMga->is_G200WB || pMga->is_G200EH) && 1624 if ( (pMga->is_G200EV || pMga->is_G200WB || pMga->is_G200EH) &&
1476 (i >= 0x44) && (i <= 0x4E)) 1625 (i >= 0x44) && (i <= 0x4E))
1477 continue; 1626 continue;
1478  1627
1479 outMGAdac(i, mgaReg->DacRegs[i]); 1628 outMGAdac(i, mgaReg->DacRegs[i]);
1480 } 1629 }
1481  1630
1482 if (pMga->is_G200ER) 1631 if (pMga->is_G200ER)
1483 { 1632 {
1484 outMGAdac(0x90, mgaReg->Dac_Index90); 1633 outMGAdac(0x90, mgaReg->Dac_Index90);
1485 } 1634 }
1486  1635 if (pMga->is_G200SE && (pMga->reg_1e24 >= 0x04)) {
 1636 outMGAdac( 0x1a, 0x09);
 1637 usleep(500);
 1638 outMGAdac( 0x1a, 0x01);
 1639 }
 1640
1487 if (!MGAISGx50(pMga)) { 1641 if (!MGAISGx50(pMga)) {
1488 /* restore pci_option register */ 1642 /* restore pci_option register */
1489#ifdef XSERVER_LIBPCIACCESS 1643#ifdef XSERVER_LIBPCIACCESS
1490 pci_device_cfg_write_bits(pMga->PciInfo, optionMask,  1644 pci_device_cfg_write_bits(pMga->PciInfo, optionMask,
1491 mgaReg->Option, PCI_OPTION_REG); 1645 mgaReg->Option, PCI_OPTION_REG);
1492 1646
1493 if (pMga->Chipset != PCI_CHIP_MGA1064) { 1647 if (pMga->Chipset != PCI_CHIP_MGA1064) {
1494 pci_device_cfg_write_bits(pMga->PciInfo, OPTION2_MASK, 1648 pci_device_cfg_write_bits(pMga->PciInfo, OPTION2_MASK,
1495 mgaReg->Option2, PCI_MGA_OPTION2); 1649 mgaReg->Option2, PCI_MGA_OPTION2);
1496 1650
1497 if (pMga->Chipset == PCI_CHIP_MGAG400  1651 if (pMga->Chipset == PCI_CHIP_MGAG400
1498 || pMga->Chipset == PCI_CHIP_MGAG550) { 1652 || pMga->Chipset == PCI_CHIP_MGAG550) {
1499 pci_device_cfg_write_bits(pMga->PciInfo, OPTION3_MASK, 1653 pci_device_cfg_write_bits(pMga->PciInfo, OPTION3_MASK,
@@ -1520,27 +1674,35 @@ MGA_NOT_HAL( @@ -1520,27 +1674,35 @@ MGA_NOT_HAL(
1520 MGAG200EVPIXPLLSET(pScrn, mgaReg); 1674 MGAG200EVPIXPLLSET(pScrn, mgaReg);
1521 } else if (pMga->is_G200WB) { 1675 } else if (pMga->is_G200WB) {
1522 MGAG200WBPIXPLLSET(pScrn, mgaReg); 1676 MGAG200WBPIXPLLSET(pScrn, mgaReg);
1523 } else if (pMga->is_G200EH) { 1677 } else if (pMga->is_G200EH) {
1524 MGAG200EHPIXPLLSET(pScrn, mgaReg); 1678 MGAG200EHPIXPLLSET(pScrn, mgaReg);
1525 } 1679 }
1526); /* MGA_NOT_HAL */ 1680); /* MGA_NOT_HAL */
1527 /* restore CRTCEXT regs */ 1681 /* restore CRTCEXT regs */
1528 for (i = 0; i < 6; i++) 1682 for (i = 0; i < 6; i++)
1529 OUTREG16(MGAREG_CRTCEXT_INDEX, (mgaReg->ExtVga[i] << 8) | i); 1683 OUTREG16(MGAREG_CRTCEXT_INDEX, (mgaReg->ExtVga[i] << 8) | i);
1530 1684
1531 if (pMga->is_G200ER) { 1685 if (pMga->is_G200ER) {
1532 OUTREG8(MGAREG_CRTCEXT_INDEX, 0x24); 1686 OUTREG8(MGAREG_CRTCEXT_INDEX, 0x24);
1533 OUTREG8(MGAREG_CRTCEXT_DATA, mgaReg->ExtVga_Index24);  1687 OUTREG8(MGAREG_CRTCEXT_DATA, mgaReg->ExtVga_MgaReq);
 1688 }
 1689
 1690 if (pMga->is_G200WB) {
 1691 if(pMga->Chipset == PCI_CHIP_MGAG200_EW3_PCI)
 1692 {
 1693 OUTREG8(MGAREG_CRTCEXT_INDEX, 0x34);
 1694 OUTREG8(MGAREG_CRTCEXT_DATA, mgaReg->ExtVga_MgaReq);
 1695 }
1534 } 1696 }
1535 1697
1536 /* This handles restoring the generic VGA registers. */ 1698 /* This handles restoring the generic VGA registers. */
1537 if (pMga->is_G200SE) { 1699 if (pMga->is_G200SE) {
1538 MGAG200SERestoreMode(pScrn, vgaReg); 1700 MGAG200SERestoreMode(pScrn, vgaReg);
1539 if (restoreFonts) 1701 if (restoreFonts)
1540 MGAG200SERestoreFonts(pScrn, vgaReg); 1702 MGAG200SERestoreFonts(pScrn, vgaReg);
1541 } else { 1703 } else {
1542 vgaHWRestore(pScrn, vgaReg, 1704 vgaHWRestore(pScrn, vgaReg,
1543 VGA_SR_MODE | (restoreFonts ? VGA_SR_FONTS : 0)); 1705 VGA_SR_MODE | (restoreFonts ? VGA_SR_FONTS : 0));
1544 } 1706 }
1545 MGAGRestorePalette(pScrn, vgaReg->DAC);  1707 MGAGRestorePalette(pScrn, vgaReg->DAC);
1546  1708
@@ -1709,28 +1871,36 @@ MGAGSave(ScrnInfoPtr pScrn, vgaRegPtr vg @@ -1709,28 +1871,36 @@ MGAGSave(ScrnInfoPtr pScrn, vgaRegPtr vg
1709#else 1871#else
1710 mgaReg->Option3 = pciReadLong(pMga->PciTag, PCI_MGA_OPTION3); 1872 mgaReg->Option3 = pciReadLong(pMga->PciTag, PCI_MGA_OPTION3);
1711#endif 1873#endif
1712 ); /* MGA_NOT_HAL */ 1874 ); /* MGA_NOT_HAL */
1713 1875
1714 for (i = 0; i < 6; i++) 1876 for (i = 0; i < 6; i++)
1715 { 1877 {
1716 OUTREG8(MGAREG_CRTCEXT_INDEX, i); 1878 OUTREG8(MGAREG_CRTCEXT_INDEX, i);
1717 mgaReg->ExtVga[i] = INREG8(MGAREG_CRTCEXT_DATA); 1879 mgaReg->ExtVga[i] = INREG8(MGAREG_CRTCEXT_DATA);
1718 } 1880 }
1719 if (pMga->is_G200ER) 1881 if (pMga->is_G200ER)
1720 { 1882 {
1721 OUTREG8(MGAREG_CRTCEXT_INDEX, 0x24); 1883 OUTREG8(MGAREG_CRTCEXT_INDEX, 0x24);
1722 mgaReg->ExtVga_Index24 = INREG8(MGAREG_CRTCEXT_DATA); 1884 mgaReg->ExtVga_MgaReq = INREG8(MGAREG_CRTCEXT_DATA);
1723 } 1885 }
 1886 if (pMga->is_G200WB)
 1887 {
 1888 if(pMga->Chipset == PCI_CHIP_MGAG200_EW3_PCI)
 1889 {
 1890 OUTREG8(MGAREG_CRTCEXT_INDEX, 0x34);
 1891 mgaReg->ExtVga_MgaReq = INREG8(MGAREG_CRTCEXT_DATA);
 1892 }
 1893 }
1724 1894
1725#ifdef DEBUG  1895#ifdef DEBUG
1726 ErrorF("Saved values:\nDAC:"); 1896 ErrorF("Saved values:\nDAC:");
1727 for (i=0; i<DACREGSIZE; i++) { 1897 for (i=0; i<DACREGSIZE; i++) {
1728#if 1 1898#if 1
1729 if(!(i%16)) ErrorF("\n%02X: ",i); 1899 if(!(i%16)) ErrorF("\n%02X: ",i);
1730 ErrorF("%02X ", mgaReg->DacRegs[i]); 1900 ErrorF("%02X ", mgaReg->DacRegs[i]);
1731#else 1901#else
1732 if(!(i%8)) ErrorF("\n%02X: ",i); 1902 if(!(i%8)) ErrorF("\n%02X: ",i);
1733 ErrorF("0x%02X, ", mgaReg->DacRegs[i]); 1903 ErrorF("0x%02X, ", mgaReg->DacRegs[i]);
1734#endif 1904#endif
1735 } 1905 }
1736 ErrorF("\nOPTION = %08lX\n:", mgaReg->Option); 1906 ErrorF("\nOPTION = %08lX\n:", mgaReg->Option);

cvs diff -r1.3 -r1.4 xsrc/external/mit/xf86-video-mga/dist/src/mga_driver.c (expand / switch to unified diff)

--- xsrc/external/mit/xf86-video-mga/dist/src/mga_driver.c 2016/08/20 00:27:21 1.3
+++ xsrc/external/mit/xf86-video-mga/dist/src/mga_driver.c 2017/03/05 01:32:02 1.4
@@ -305,43 +305,43 @@ static const struct mga_device_attribute @@ -305,43 +305,43 @@ static const struct mga_device_attribute
305 { 256000, 600000 }, /* System VCO frequencies */ 305 { 256000, 600000 }, /* System VCO frequencies */
306 { 256000, 600000 }, /* Pixel VCO frequencies */ 306 { 256000, 600000 }, /* Pixel VCO frequencies */
307 { 256000, 600000 }, /* Video VCO frequencies */ 307 { 256000, 600000 }, /* Video VCO frequencies */
308 284000, /* Memory clock */ 308 284000, /* Memory clock */
309 27050, /* PLL reference frequency */ 309 27050, /* PLL reference frequency */
310 0, /* Supports fast bitblt? */ 310 0, /* Supports fast bitblt? */
311 MGA_HOST_AGP_4x /* Host interface */ 311 MGA_HOST_AGP_4x /* Host interface */
312 }, 312 },
313 313
314 32768, 0x1000, /* Memory probe size & offset values */ 314 32768, 0x1000, /* Memory probe size & offset values */
315 }, 315 },
316 316
317 /* G200SE A PCI */ 317 /* G200SE A PCI */
318 [10] = { 0, 1, 0, 0, 1, 0, 0, 1, new_BARs, 318 [10] = { 0, 1, 0, 0, 1, 0, 0, 0, new_BARs,
319 (TRANSC_SOLID_FILL | TWO_PASS_COLOR_EXPAND | USE_LINEAR_EXPANSION), 319 (TRANSC_SOLID_FILL | TWO_PASS_COLOR_EXPAND | USE_LINEAR_EXPANSION),
320 { 320 {
321 { 50000, 230000 }, /* System VCO frequencies */ 321 { 50000, 230000 }, /* System VCO frequencies */
322 { 50000, 230000 }, /* Pixel VCO frequencies */ 322 { 50000, 230000 }, /* Pixel VCO frequencies */
323 { 0, 0 }, /* Video VCO frequencies */ 323 { 0, 0 }, /* Video VCO frequencies */
324 50000, /* Memory clock */ 324 50000, /* Memory clock */
325 27050, /* PLL reference frequency */ 325 27050, /* PLL reference frequency */
326 0, /* Supports fast bitblt? */ 326 0, /* Supports fast bitblt? */
327 MGA_HOST_PCI /* Host interface */ 327 MGA_HOST_PCI /* Host interface */
328 }, 328 },
329 329
330 4096, 0x800, /* Memory probe size & offset values */ 330 4096, 0x800, /* Memory probe size & offset values */
331 }, 331 },
332 332
333 /* G200SE B PCI */ 333 /* G200SE B PCI */
334 [11] = { 0, 1, 0, 0, 1, 0, 0, 1, new_BARs, 334 [11] = { 0, 1, 0, 0, 1, 0, 0, 0, new_BARs,
335 (TRANSC_SOLID_FILL | TWO_PASS_COLOR_EXPAND | USE_LINEAR_EXPANSION), 335 (TRANSC_SOLID_FILL | TWO_PASS_COLOR_EXPAND | USE_LINEAR_EXPANSION),
336 { 336 {
337 { 50000, 114000 }, /* System VCO frequencies */ 337 { 50000, 114000 }, /* System VCO frequencies */
338 { 50000, 114000 }, /* Pixel VCO frequencies */ 338 { 50000, 114000 }, /* Pixel VCO frequencies */
339 { 0, 0 }, /* Video VCO frequencies */ 339 { 0, 0 }, /* Video VCO frequencies */
340 45000, /* Memory clock */ 340 45000, /* Memory clock */
341 27050, /* PLL reference frequency */ 341 27050, /* PLL reference frequency */
342 0, /* Supports fast bitblt? */ 342 0, /* Supports fast bitblt? */
343 MGA_HOST_PCI /* Host interface */ 343 MGA_HOST_PCI /* Host interface */
344 }, 344 },
345 345
346 4096, 0x800, /* Memory probe size & offset values */ 346 4096, 0x800, /* Memory probe size & offset values */
347 }, 347 },
@@ -398,26 +398,42 @@ static const struct mga_device_attribute @@ -398,26 +398,42 @@ static const struct mga_device_attribute
398 [15] = { 0, 1, 0, 0, 1, 0, 0, 0, new_BARs, 398 [15] = { 0, 1, 0, 0, 1, 0, 0, 0, new_BARs,
399 (TRANSC_SOLID_FILL | TWO_PASS_COLOR_EXPAND | USE_LINEAR_EXPANSION), 399 (TRANSC_SOLID_FILL | TWO_PASS_COLOR_EXPAND | USE_LINEAR_EXPANSION),
400 { 400 {
401 { 50000, 230000 }, /* System VCO frequencies */ 401 { 50000, 230000 }, /* System VCO frequencies */
402 { 50000, 203400 }, /* Pixel VCO frequencies */ 402 { 50000, 203400 }, /* Pixel VCO frequencies */
403 { 0, 0 }, /* Video VCO frequencies */ 403 { 0, 0 }, /* Video VCO frequencies */
404 45000, /* Memory clock */ 404 45000, /* Memory clock */
405 27050, /* PLL reference frequency */ 405 27050, /* PLL reference frequency */
406 0, /* Supports fast bitblt? */ 406 0, /* Supports fast bitblt? */
407 MGA_HOST_PCI /* Host interface */ 407 MGA_HOST_PCI /* Host interface */
408 }, 408 },
409 409
410 16384, 0x4000, /* Memory probe size & offset values */ 410 16384, 0x4000, /* Memory probe size & offset values */
 411 },
 412
 413 /* G200WB */
 414 [16] = { 0, 1, 0, 0, 1, 0, 0, 0, new_BARs,
 415 (TRANSC_SOLID_FILL | TWO_PASS_COLOR_EXPAND | USE_LINEAR_EXPANSION),
 416 {
 417 { 50000, 230000 }, /* System VCO frequencies */
 418 { 50000, 203400 }, /* Pixel VCO frequencies */
 419 { 0, 0 }, /* Video VCO frequencies */
 420 45000, /* Memory clock */
 421 27050, /* PLL reference frequency */
 422 0, /* Supports fast bitblt? */
 423 MGA_HOST_PCI /* Host interface */
 424 },
 425
 426 16384, 0x4000, /* Memory probe size & offset values */
411 } 427 }
412}; 428};
413 429
414#ifdef XSERVER_LIBPCIACCESS 430#ifdef XSERVER_LIBPCIACCESS
415#define MGA_DEVICE_MATCH(d, i) \ 431#define MGA_DEVICE_MATCH(d, i) \
416 { 0x102B, (d), PCI_MATCH_ANY, PCI_MATCH_ANY, 0, 0, (i) } 432 { 0x102B, (d), PCI_MATCH_ANY, PCI_MATCH_ANY, 0, 0, (i) }
417#define MGA_SUBDEVICE_MATCH(d, s, i) \ 433#define MGA_SUBDEVICE_MATCH(d, s, i) \
418 { 0x102B, (d), 0x102B, (s), 0, 0, (i) } 434 { 0x102B, (d), 0x102B, (s), 0, 0, (i) }
419 435
420static const struct pci_id_match mga_device_match[] = { 436static const struct pci_id_match mga_device_match[] = {
421 MGA_DEVICE_MATCH(PCI_CHIP_MGA2064, 0), 437 MGA_DEVICE_MATCH(PCI_CHIP_MGA2064, 0),
422 MGA_DEVICE_MATCH(PCI_CHIP_MGA1064, 1), 438 MGA_DEVICE_MATCH(PCI_CHIP_MGA1064, 1),
423 MGA_DEVICE_MATCH(PCI_CHIP_MGA2164, 2), 439 MGA_DEVICE_MATCH(PCI_CHIP_MGA2164, 2),
@@ -428,72 +444,77 @@ static const struct pci_id_match mga_dev @@ -428,72 +444,77 @@ static const struct pci_id_match mga_dev
428 MGA_DEVICE_MATCH(PCI_CHIP_MGAG200_PCI, 7), 444 MGA_DEVICE_MATCH(PCI_CHIP_MGAG200_PCI, 7),
429 MGA_DEVICE_MATCH(PCI_CHIP_MGAG400, 8), 445 MGA_DEVICE_MATCH(PCI_CHIP_MGAG400, 8),
430 MGA_DEVICE_MATCH(PCI_CHIP_MGAG550, 9), 446 MGA_DEVICE_MATCH(PCI_CHIP_MGAG550, 9),
431 447
432 MGA_DEVICE_MATCH(PCI_CHIP_MGAG200_SE_A_PCI, 10), 448 MGA_DEVICE_MATCH(PCI_CHIP_MGAG200_SE_A_PCI, 10),
433 MGA_DEVICE_MATCH(PCI_CHIP_MGAG200_SE_B_PCI, 11), 449 MGA_DEVICE_MATCH(PCI_CHIP_MGAG200_SE_B_PCI, 11),
434 450
435 MGA_DEVICE_MATCH(PCI_CHIP_MGAG200_EV_PCI, 12), 451 MGA_DEVICE_MATCH(PCI_CHIP_MGAG200_EV_PCI, 12),
436 452
437 MGA_DEVICE_MATCH( PCI_CHIP_MGAG200_WINBOND_PCI, 13 ), 453 MGA_DEVICE_MATCH( PCI_CHIP_MGAG200_WINBOND_PCI, 13 ),
438 454
439 MGA_DEVICE_MATCH( PCI_CHIP_MGAG200_EH_PCI, 14 ), 455 MGA_DEVICE_MATCH( PCI_CHIP_MGAG200_EH_PCI, 14 ),
440 456
441 MGA_DEVICE_MATCH(PCI_CHIP_MGAG200_ER_PCI, 15 ), 457 MGA_DEVICE_MATCH(PCI_CHIP_MGAG200_ER_PCI, 15 ),
 458
 459 MGA_DEVICE_MATCH( PCI_CHIP_MGAG200_EW3_PCI, 16 ),
442 460
443 { 0, 0, 0 }, 461 { 0, 0, 0 },
444}; 462};
445#endif 463#endif
446 464
447/* Supported chipsets */ 465/* Supported chipsets */
448static SymTabRec MGAChipsets[] = { 466static SymTabRec MGAChipsets[] = {
449 { PCI_CHIP_MGA2064, "mga2064w" }, 467 { PCI_CHIP_MGA2064, "mga2064w" },
450 { PCI_CHIP_MGA1064, "mga1064sg" }, 468 { PCI_CHIP_MGA1064, "mga1064sg" },
451 { PCI_CHIP_MGA2164, "mga2164w" }, 469 { PCI_CHIP_MGA2164, "mga2164w" },
452 { PCI_CHIP_MGA2164_AGP, "mga2164w AGP" }, 470 { PCI_CHIP_MGA2164_AGP, "mga2164w AGP" },
453 { PCI_CHIP_MGAG100, "mgag100" }, 471 { PCI_CHIP_MGAG100, "mgag100" },
454 { PCI_CHIP_MGAG100_PCI, "mgag100 PCI" }, 472 { PCI_CHIP_MGAG100_PCI, "mgag100 PCI" },
455 { PCI_CHIP_MGAG200, "mgag200" }, 473 { PCI_CHIP_MGAG200, "mgag200" },
456 { PCI_CHIP_MGAG200_PCI, "mgag200 PCI" }, 474 { PCI_CHIP_MGAG200_PCI, "mgag200 PCI" },
457 { PCI_CHIP_MGAG200_SE_A_PCI, "mgag200 SE A PCI" }, 475 { PCI_CHIP_MGAG200_SE_A_PCI, "mgag200 SE A PCI" },
458 { PCI_CHIP_MGAG200_SE_B_PCI, "mgag200 SE B PCI" }, 476 { PCI_CHIP_MGAG200_SE_B_PCI, "mgag200 SE B PCI" },
459 { PCI_CHIP_MGAG200_EV_PCI, "mgag200 EV Maxim" }, 477 { PCI_CHIP_MGAG200_EV_PCI, "mgag200 EV Maxim" },
460 { PCI_CHIP_MGAG200_ER_PCI, "mgag200 ER SH7757" },  478 { PCI_CHIP_MGAG200_ER_PCI, "mgag200 ER SH7757" },
461 { PCI_CHIP_MGAG200_WINBOND_PCI, "mgag200 eW Nuvoton" }, 479 { PCI_CHIP_MGAG200_WINBOND_PCI, "mgag200 eW Nuvoton" },
 480 { PCI_CHIP_MGAG200_EW3_PCI, "mgag200 eW3 Nuvoton" },
462 { PCI_CHIP_MGAG200_EH_PCI, "mgag200eH" }, 481 { PCI_CHIP_MGAG200_EH_PCI, "mgag200eH" },
463 { PCI_CHIP_MGAG400, "mgag400" }, 482 { PCI_CHIP_MGAG400, "mgag400" },
464 { PCI_CHIP_MGAG550, "mgag550" }, 483 { PCI_CHIP_MGAG550, "mgag550" },
465 {-1, NULL } 484 {-1, NULL }
466}; 485};
467 486
468static PciChipsets MGAPciChipsets[] = { 487static PciChipsets MGAPciChipsets[] = {
469 { PCI_CHIP_MGA2064, PCI_CHIP_MGA2064, RES_SHARED_VGA }, 488 { PCI_CHIP_MGA2064, PCI_CHIP_MGA2064, RES_SHARED_VGA },
470 { PCI_CHIP_MGA1064, PCI_CHIP_MGA1064, RES_SHARED_VGA }, 489 { PCI_CHIP_MGA1064, PCI_CHIP_MGA1064, RES_SHARED_VGA },
471 { PCI_CHIP_MGA2164, PCI_CHIP_MGA2164, RES_SHARED_VGA }, 490 { PCI_CHIP_MGA2164, PCI_CHIP_MGA2164, RES_SHARED_VGA },
472 { PCI_CHIP_MGA2164_AGP, PCI_CHIP_MGA2164_AGP,RES_SHARED_VGA }, 491 { PCI_CHIP_MGA2164_AGP, PCI_CHIP_MGA2164_AGP,RES_SHARED_VGA },
473 { PCI_CHIP_MGAG100, PCI_CHIP_MGAG100, RES_SHARED_VGA }, 492 { PCI_CHIP_MGAG100, PCI_CHIP_MGAG100, RES_SHARED_VGA },
474 { PCI_CHIP_MGAG100_PCI, PCI_CHIP_MGAG100_PCI,RES_SHARED_VGA }, 493 { PCI_CHIP_MGAG100_PCI, PCI_CHIP_MGAG100_PCI,RES_SHARED_VGA },
475 { PCI_CHIP_MGAG200, PCI_CHIP_MGAG200, RES_SHARED_VGA }, 494 { PCI_CHIP_MGAG200, PCI_CHIP_MGAG200, RES_SHARED_VGA },
476 { PCI_CHIP_MGAG200_PCI, PCI_CHIP_MGAG200_PCI,RES_SHARED_VGA }, 495 { PCI_CHIP_MGAG200_PCI, PCI_CHIP_MGAG200_PCI,RES_SHARED_VGA },
477 { PCI_CHIP_MGAG200_SE_B_PCI, PCI_CHIP_MGAG200_SE_B_PCI, 496 { PCI_CHIP_MGAG200_SE_B_PCI, PCI_CHIP_MGAG200_SE_B_PCI,
478 RES_SHARED_VGA }, 497 RES_SHARED_VGA },
479 { PCI_CHIP_MGAG200_SE_A_PCI, PCI_CHIP_MGAG200_SE_A_PCI, 498 { PCI_CHIP_MGAG200_SE_A_PCI, PCI_CHIP_MGAG200_SE_A_PCI,
480 RES_SHARED_VGA }, 499 RES_SHARED_VGA },
481 { PCI_CHIP_MGAG200_EV_PCI, PCI_CHIP_MGAG200_EV_PCI, 500 { PCI_CHIP_MGAG200_EV_PCI, PCI_CHIP_MGAG200_EV_PCI,
482 RES_SHARED_VGA }, 501 RES_SHARED_VGA },
483 { PCI_CHIP_MGAG200_ER_PCI, PCI_CHIP_MGAG200_ER_PCI, 502 { PCI_CHIP_MGAG200_ER_PCI, PCI_CHIP_MGAG200_ER_PCI,
484 RES_SHARED_VGA }, 503 RES_SHARED_VGA },
485 { PCI_CHIP_MGAG200_WINBOND_PCI, PCI_CHIP_MGAG200_WINBOND_PCI, 504 { PCI_CHIP_MGAG200_WINBOND_PCI, PCI_CHIP_MGAG200_WINBOND_PCI,
486 RES_SHARED_VGA }, 505 RES_SHARED_VGA },
 506 { PCI_CHIP_MGAG200_EW3_PCI, PCI_CHIP_MGAG200_EW3_PCI,
 507 RES_SHARED_VGA },
487 { PCI_CHIP_MGAG200_EH_PCI, PCI_CHIP_MGAG200_EH_PCI, 508 { PCI_CHIP_MGAG200_EH_PCI, PCI_CHIP_MGAG200_EH_PCI,
488 RES_SHARED_VGA }, 509 RES_SHARED_VGA },
489 { PCI_CHIP_MGAG400, PCI_CHIP_MGAG400, RES_SHARED_VGA }, 510 { PCI_CHIP_MGAG400, PCI_CHIP_MGAG400, RES_SHARED_VGA },
490 { PCI_CHIP_MGAG550, PCI_CHIP_MGAG550, RES_SHARED_VGA }, 511 { PCI_CHIP_MGAG550, PCI_CHIP_MGAG550, RES_SHARED_VGA },
491 { -1, -1, RES_UNDEFINED } 512 { -1, -1, RES_UNDEFINED }
492}; 513};
493 514
494/* 515/*
495 * This contains the functions needed by the server after loading the 516 * This contains the functions needed by the server after loading the
496 * driver module. It must be supplied, and gets added the driver list by 517 * driver module. It must be supplied, and gets added the driver list by
497 * the Module Setup funtion in the dynamic case. In the static case a 518 * the Module Setup funtion in the dynamic case. In the static case a
498 * reference to this is compiled in, and this requires that the name of 519 * reference to this is compiled in, and this requires that the name of
499 * this DriverRec be an upper-case version of the driver name. 520 * this DriverRec be an upper-case version of the driver name.
@@ -913,26 +934,29 @@ MGAProbe(DriverPtr drv, int flags) @@ -913,26 +934,29 @@ MGAProbe(DriverPtr drv, int flags)
913 934
914 case PCI_CHIP_MGAG200_WINBOND_PCI: 935 case PCI_CHIP_MGAG200_WINBOND_PCI:
915 attrib_no = 13; 936 attrib_no = 13;
916 break; 937 break;
917 938
918 case PCI_CHIP_MGAG200_EH_PCI: 939 case PCI_CHIP_MGAG200_EH_PCI:
919 attrib_no = 14; 940 attrib_no = 14;
920 break; 941 break;
921  942
922 case PCI_CHIP_MGAG200_ER_PCI: 943 case PCI_CHIP_MGAG200_ER_PCI:
923 attrib_no = 15; 944 attrib_no = 15;
924 break; 945 break;
925  946
 947 case PCI_CHIP_MGAG200_EW3_PCI:
 948 attrib_no = 16;
 949 break;
926 950
927 default: 951 default:
928 return FALSE; 952 return FALSE;
929 } 953 }
930 954
931 pMga->chip_attribs = & attribs[attrib_no]; 955 pMga->chip_attribs = & attribs[attrib_no];
932 956
933 if (pMga->chip_attribs->dual_head_possible) { 957 if (pMga->chip_attribs->dual_head_possible) {
934 MGAEntPtr pMgaEnt = NULL; 958 MGAEntPtr pMgaEnt = NULL;
935 DevUnion *pPriv; 959 DevUnion *pPriv;
936 960
937 xf86SetEntitySharable(usedChips[i]); 961 xf86SetEntitySharable(usedChips[i]);
938 /* Allocate an entity private if necessary */ 962 /* Allocate an entity private if necessary */
@@ -1531,27 +1555,28 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags) @@ -1531,27 +1555,28 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags)
1531 if (pMga->ChipRev >= 0x80)  1555 if (pMga->ChipRev >= 0x80)
1532 xf86ErrorF(" (G450)\n"); 1556 xf86ErrorF(" (G450)\n");
1533 else 1557 else
1534 xf86ErrorF(" (G400)\n"); 1558 xf86ErrorF(" (G400)\n");
1535 } else { 1559 } else {
1536 xf86ErrorF("\n"); 1560 xf86ErrorF("\n");
1537 } 1561 }
1538 1562
1539 pMga->is_Gx50 = ((pMga->Chipset == PCI_CHIP_MGAG400) && (pMga->ChipRev >= 0x80)) 1563 pMga->is_Gx50 = ((pMga->Chipset == PCI_CHIP_MGAG400) && (pMga->ChipRev >= 0x80))
1540 || (pMga->Chipset == PCI_CHIP_MGAG550); 1564 || (pMga->Chipset == PCI_CHIP_MGAG550);
1541 pMga->is_G200SE = (pMga->Chipset == PCI_CHIP_MGAG200_SE_A_PCI) 1565 pMga->is_G200SE = (pMga->Chipset == PCI_CHIP_MGAG200_SE_A_PCI)
1542 || (pMga->Chipset == PCI_CHIP_MGAG200_SE_B_PCI); 1566 || (pMga->Chipset == PCI_CHIP_MGAG200_SE_B_PCI);
1543 pMga->is_G200EV = (pMga->Chipset == PCI_CHIP_MGAG200_EV_PCI); 1567 pMga->is_G200EV = (pMga->Chipset == PCI_CHIP_MGAG200_EV_PCI);
1544 pMga->is_G200WB = (pMga->Chipset == PCI_CHIP_MGAG200_WINBOND_PCI); 1568 pMga->is_G200WB = (pMga->Chipset == PCI_CHIP_MGAG200_WINBOND_PCI)
 1569 || (pMga->Chipset == PCI_CHIP_MGAG200_EW3_PCI);
1545 pMga->is_G200EH = (pMga->Chipset == PCI_CHIP_MGAG200_EH_PCI); 1570 pMga->is_G200EH = (pMga->Chipset == PCI_CHIP_MGAG200_EH_PCI);
1546 pMga->is_G200ER = (pMga->Chipset == PCI_CHIP_MGAG200_ER_PCI); 1571 pMga->is_G200ER = (pMga->Chipset == PCI_CHIP_MGAG200_ER_PCI);
1547 1572
1548 pMga->DualHeadEnabled = FALSE; 1573 pMga->DualHeadEnabled = FALSE;
1549 if (xf86IsEntityShared(pScrn->entityList[0])) {/* dual-head mode requested*/ 1574 if (xf86IsEntityShared(pScrn->entityList[0])) {/* dual-head mode requested*/
1550 if ( 1575 if (
1551 !MGA_DH_NEEDS_HAL(pMga)) { 1576 !MGA_DH_NEEDS_HAL(pMga)) {
1552 pMga->DualHeadEnabled = TRUE; 1577 pMga->DualHeadEnabled = TRUE;
1553 } else if (xf86IsPrimInitDone(pScrn->entityList[0])) { 1578 } else if (xf86IsPrimInitDone(pScrn->entityList[0])) {
1554 xf86DrvMsg(pScrn->scrnIndex, X_ERROR, 1579 xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
1555 "This card requires the \"mga_hal\" module for dual-head operation\n" 1580 "This card requires the \"mga_hal\" module for dual-head operation\n"
1556 "\tIt can be found at the Matrox web site <http://www.matrox.com>\n"); 1581 "\tIt can be found at the Matrox web site <http://www.matrox.com>\n");
1557 } 1582 }
@@ -2039,26 +2064,27 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags) @@ -2039,26 +2064,27 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags)
2039 case PCI_CHIP_MGA2064: 2064 case PCI_CHIP_MGA2064:
2040 case PCI_CHIP_MGA2164: 2065 case PCI_CHIP_MGA2164:
2041 case PCI_CHIP_MGA2164_AGP: 2066 case PCI_CHIP_MGA2164_AGP:
2042 MGA2064SetupFuncs(pScrn); 2067 MGA2064SetupFuncs(pScrn);
2043 break; 2068 break;
2044 case PCI_CHIP_MGA1064: 2069 case PCI_CHIP_MGA1064:
2045 case PCI_CHIP_MGAG100: 2070 case PCI_CHIP_MGAG100:
2046 case PCI_CHIP_MGAG100_PCI: 2071 case PCI_CHIP_MGAG100_PCI:
2047 case PCI_CHIP_MGAG200: 2072 case PCI_CHIP_MGAG200:
2048 case PCI_CHIP_MGAG200_PCI: 2073 case PCI_CHIP_MGAG200_PCI:
2049 case PCI_CHIP_MGAG200_SE_A_PCI: 2074 case PCI_CHIP_MGAG200_SE_A_PCI:
2050 case PCI_CHIP_MGAG200_SE_B_PCI: 2075 case PCI_CHIP_MGAG200_SE_B_PCI:
2051 case PCI_CHIP_MGAG200_WINBOND_PCI: 2076 case PCI_CHIP_MGAG200_WINBOND_PCI:
 2077 case PCI_CHIP_MGAG200_EW3_PCI:
2052 case PCI_CHIP_MGAG200_EV_PCI: 2078 case PCI_CHIP_MGAG200_EV_PCI:
2053 case PCI_CHIP_MGAG200_EH_PCI: 2079 case PCI_CHIP_MGAG200_EH_PCI:
2054 case PCI_CHIP_MGAG200_ER_PCI:  2080 case PCI_CHIP_MGAG200_ER_PCI:
2055 case PCI_CHIP_MGAG400: 2081 case PCI_CHIP_MGAG400:
2056 case PCI_CHIP_MGAG550: 2082 case PCI_CHIP_MGAG550:
2057 MGAGSetupFuncs(pScrn); 2083 MGAGSetupFuncs(pScrn);
2058 break; 2084 break;
2059 } 2085 }
2060 2086
2061 /* 2087 /*
2062 * Read the BIOS data struct 2088 * Read the BIOS data struct
2063 */ 2089 */
2064 2090
@@ -2153,28 +2179,29 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags) @@ -2153,28 +2179,29 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags)
2153 } 2179 }
2154 pMgaEnt->refCount++; 2180 pMgaEnt->refCount++;
2155 } else { 2181 } else {
2156 /* Normal Handling of video ram etc */ 2182 /* Normal Handling of video ram etc */
2157 pMga->FbMapSize = pScrn->videoRam * 1024; 2183 pMga->FbMapSize = pScrn->videoRam * 1024;
2158 switch(pMga->Chipset) { 2184 switch(pMga->Chipset) {
2159 case PCI_CHIP_MGAG550: 2185 case PCI_CHIP_MGAG550:
2160 case PCI_CHIP_MGAG400: 2186 case PCI_CHIP_MGAG400:
2161 case PCI_CHIP_MGAG200: 2187 case PCI_CHIP_MGAG200:
2162 case PCI_CHIP_MGAG200_PCI: 2188 case PCI_CHIP_MGAG200_PCI:
2163 case PCI_CHIP_MGAG200_SE_A_PCI: 2189 case PCI_CHIP_MGAG200_SE_A_PCI:
2164 case PCI_CHIP_MGAG200_SE_B_PCI: 2190 case PCI_CHIP_MGAG200_SE_B_PCI:
2165 case PCI_CHIP_MGAG200_WINBOND_PCI: 2191 case PCI_CHIP_MGAG200_WINBOND_PCI:
 2192 case PCI_CHIP_MGAG200_EW3_PCI:
2166 case PCI_CHIP_MGAG200_EV_PCI: 2193 case PCI_CHIP_MGAG200_EV_PCI:
2167 case PCI_CHIP_MGAG200_EH_PCI: 2194 case PCI_CHIP_MGAG200_EH_PCI:
2168 case PCI_CHIP_MGAG200_ER_PCI:  2195 case PCI_CHIP_MGAG200_ER_PCI:
2169 pMga->SrcOrg = 0; 2196 pMga->SrcOrg = 0;
2170 pMga->DstOrg = 0; 2197 pMga->DstOrg = 0;
2171 break; 2198 break;
2172 default: 2199 default:
2173 break; 2200 break;
2174 } 2201 }
2175 } 2202 }
2176 xf86DrvMsg(pScrn->scrnIndex, from, "VideoRAM: %d kByte\n", 2203 xf86DrvMsg(pScrn->scrnIndex, from, "VideoRAM: %d kByte\n",
2177 pScrn->videoRam); 2204 pScrn->videoRam);
2178 2205
2179 /* Set the bpp shift value */ 2206 /* Set the bpp shift value */
2180 pMga->BppShifts[0] = 0; 2207 pMga->BppShifts[0] = 0;
@@ -2337,26 +2364,27 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags) @@ -2337,26 +2364,27 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags)
2337 case PCI_CHIP_MGAG100: 2364 case PCI_CHIP_MGAG100:
2338 case PCI_CHIP_MGAG100_PCI: 2365 case PCI_CHIP_MGAG100_PCI:
2339 maxPitch = 2048; 2366 maxPitch = 2048;
2340 break; 2367 break;
2341 case PCI_CHIP_MGAG200_SE_A_PCI: 2368 case PCI_CHIP_MGAG200_SE_A_PCI:
2342 if (pScrn->videoRam < 2048){ 2369 if (pScrn->videoRam < 2048){
2343 maxPitch = 1280; 2370 maxPitch = 1280;
2344 } 2371 }
2345 break; 2372 break;
2346 case PCI_CHIP_MGAG200: 2373 case PCI_CHIP_MGAG200:
2347 case PCI_CHIP_MGAG200_PCI: 2374 case PCI_CHIP_MGAG200_PCI:
2348 case PCI_CHIP_MGAG200_SE_B_PCI: 2375 case PCI_CHIP_MGAG200_SE_B_PCI:
2349 case PCI_CHIP_MGAG200_WINBOND_PCI: 2376 case PCI_CHIP_MGAG200_WINBOND_PCI:
 2377 case PCI_CHIP_MGAG200_EW3_PCI:
2350 case PCI_CHIP_MGAG200_EV_PCI: 2378 case PCI_CHIP_MGAG200_EV_PCI:
2351 case PCI_CHIP_MGAG200_EH_PCI: 2379 case PCI_CHIP_MGAG200_EH_PCI:
2352 case PCI_CHIP_MGAG200_ER_PCI:  2380 case PCI_CHIP_MGAG200_ER_PCI:
2353 case PCI_CHIP_MGAG400: 2381 case PCI_CHIP_MGAG400:
2354 case PCI_CHIP_MGAG550: 2382 case PCI_CHIP_MGAG550:
2355 maxPitch = 4096; 2383 maxPitch = 4096;
2356 break; 2384 break;
2357 } 2385 }
2358 2386
2359 i = xf86ValidateModes(pScrn, pScrn->monitor->Modes, 2387 i = xf86ValidateModes(pScrn, pScrn->monitor->Modes,
2360 pScrn->display->modes, clockRanges, 2388 pScrn->display->modes, clockRanges,
2361 linePitches, minPitch, maxPitch, 2389 linePitches, minPitch, maxPitch,
2362 pMga->Roundings[(pScrn->bitsPerPixel >> 3) - 1] * 2390 pMga->Roundings[(pScrn->bitsPerPixel >> 3) - 1] *
@@ -2584,27 +2612,28 @@ MGAMapMem(ScrnInfoPtr pScrn) @@ -2584,27 +2612,28 @@ MGAMapMem(ScrnInfoPtr pScrn)
2584#ifdef XSERVER_LIBPCIACCESS 2612#ifdef XSERVER_LIBPCIACCESS
2585 struct pci_device *const dev = pMga->PciInfo; 2613 struct pci_device *const dev = pMga->PciInfo;
2586 struct pci_mem_region *region; 2614 struct pci_mem_region *region;
2587 int i, err; 2615 int i, err;
2588#endif 2616#endif
2589 2617
2590 2618
2591 if (!pMga->FBDev) { 2619 if (!pMga->FBDev) {
2592#ifdef XSERVER_LIBPCIACCESS 2620#ifdef XSERVER_LIBPCIACCESS
2593 pciaddr_t fbaddr = pMga->FbAddress; 2621 pciaddr_t fbaddr = pMga->FbAddress;
2594 pciaddr_t fbsize = pMga->FbMapSize; 2622 pciaddr_t fbsize = pMga->FbMapSize;
2595 err = pci_device_map_range(dev, 2623 err = pci_device_map_range(dev,
2596 fbaddr, fbsize, 2624 fbaddr, fbsize,
2597 PCI_DEV_MAP_FLAG_WRITABLE, 2625 PCI_DEV_MAP_FLAG_WRITABLE |
 2626 PCI_DEV_MAP_FLAG_WRITE_COMBINE,
2598 (void **)&pMga->FbBase); 2627 (void **)&pMga->FbBase);
2599 2628
2600 if (err) { 2629 if (err) {
2601 xf86DrvMsg(pScrn->scrnIndex, X_ERROR, 2630 xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
2602 "Unable to map Framebuffer %08llX %llx. %s (%d)\n", 2631 "Unable to map Framebuffer %08llX %llx. %s (%d)\n",
2603 (long long)fbaddr, (long long)fbsize, 2632 (long long)fbaddr, (long long)fbsize,
2604 strerror(err), err); 2633 strerror(err), err);
2605 return FALSE; 2634 return FALSE;
2606 } 2635 }
2607 else 2636 else
2608 xf86DrvMsg(pScrn->scrnIndex, X_INFO, 2637 xf86DrvMsg(pScrn->scrnIndex, X_INFO,
2609 "MAPPED Framebuffer %08llX %llx to %08llX.\n", 2638 "MAPPED Framebuffer %08llX %llx to %08llX.\n",
2610 (long long)fbaddr, (long long)fbsize, 2639 (long long)fbaddr, (long long)fbsize,
@@ -3815,44 +3844,47 @@ MGAValidMode(SCRN_ARG_TYPE arg, DisplayM @@ -3815,44 +3844,47 @@ MGAValidMode(SCRN_ARG_TYPE arg, DisplayM
3815 SCRN_INFO_PTR(arg); 3844 SCRN_INFO_PTR(arg);
3816 int lace; 3845 int lace;
3817 MGAPtr pMga = MGAPTR(pScrn); 3846 MGAPtr pMga = MGAPTR(pScrn);
3818 3847
3819 if (pMga->Chipset == PCI_CHIP_MGAG200_SE_A_PCI) { 3848 if (pMga->Chipset == PCI_CHIP_MGAG200_SE_A_PCI) {
3820 if (pMga->reg_1e24 == 0x01) { 3849 if (pMga->reg_1e24 == 0x01) {
3821 if (mode->HDisplay > 1600) 3850 if (mode->HDisplay > 1600)
3822 return MODE_VIRTUAL_X; 3851 return MODE_VIRTUAL_X;
3823 if (mode->VDisplay > 1200) 3852 if (mode->VDisplay > 1200)
3824 return MODE_VIRTUAL_Y; 3853 return MODE_VIRTUAL_Y;
3825 if (xf86ModeBandwidth(mode, pScrn->bitsPerPixel) > 244) 3854 if (xf86ModeBandwidth(mode, pScrn->bitsPerPixel) > 244)
3826 return MODE_BANDWIDTH; 3855 return MODE_BANDWIDTH;
3827 } else { 3856 } else {
3828 if (pMga->reg_1e24 >= 0x02) { 3857 if (pMga->reg_1e24 == 0x02) {
3829 if (mode->HDisplay > 1920) 3858 if (mode->HDisplay > 1920)
3830 return MODE_VIRTUAL_X; 3859 return MODE_VIRTUAL_X;
3831 if (mode->VDisplay > 1200) 3860 if (mode->VDisplay > 1200)
3832 return MODE_VIRTUAL_Y; 3861 return MODE_VIRTUAL_Y;
3833 if (xf86ModeBandwidth(mode, pScrn->bitsPerPixel) > 301) 3862 if (xf86ModeBandwidth(mode, pScrn->bitsPerPixel) > 301)
3834 return MODE_BANDWIDTH; 3863 return MODE_BANDWIDTH;
3835 } 3864 }
3836 } 3865 }
3837 } else if (pMga->is_G200WB){ 3866 } else if (pMga->is_G200WB){
3838 if (mode->Flags & V_DBLSCAN) 3867 if (mode->Flags & V_DBLSCAN)
3839 return MODE_NO_DBLESCAN; 3868 return MODE_NO_DBLESCAN;
3840 if (pMga->KVM && mode->HDisplay > 1280) 3869 if (pMga->Chipset != PCI_CHIP_MGAG200_EW3_PCI)
3841 return MODE_VIRTUAL_X; 3870 {
3842 if (pMga->KVM && mode->VDisplay > 1024) 3871 if (pMga->KVM && mode->HDisplay > 1280)
3843 return MODE_VIRTUAL_Y; 3872 return MODE_VIRTUAL_X;
3844 if (xf86ModeBandwidth(mode, pScrn->bitsPerPixel) > 318.77) 3873 if (pMga->KVM && mode->VDisplay > 1024)
3845 return MODE_BANDWIDTH; 3874 return MODE_VIRTUAL_Y;
 3875 if (xf86ModeBandwidth(mode, pScrn->bitsPerPixel) > 318.77)
 3876 return MODE_BANDWIDTH;
 3877 }
3846 } else if (pMga->is_G200EV 3878 } else if (pMga->is_G200EV
3847 && (xf86ModeBandwidth(mode, pScrn->bitsPerPixel) > 327)) { 3879 && (xf86ModeBandwidth(mode, pScrn->bitsPerPixel) > 327)) {
3848 return MODE_BANDWIDTH; 3880 return MODE_BANDWIDTH;
3849 } else if (pMga->is_G200EH 3881 } else if (pMga->is_G200EH
3850 && (xf86ModeBandwidth(mode, pScrn->bitsPerPixel) > 375)) { 3882 && (xf86ModeBandwidth(mode, pScrn->bitsPerPixel) > 375)) {
3851 return MODE_BANDWIDTH; 3883 return MODE_BANDWIDTH;
3852 } else if (pMga->is_G200ER 3884 } else if (pMga->is_G200ER
3853 && (xf86ModeBandwidth(mode, pScrn->bitsPerPixel) > 550)) { 3885 && (xf86ModeBandwidth(mode, pScrn->bitsPerPixel) > 550)) {
3854 return MODE_BANDWIDTH; 3886 return MODE_BANDWIDTH;
3855 } 3887 }
3856 3888
3857 lace = 1 + ((mode->Flags & V_INTERLACE) != 0); 3889 lace = 1 + ((mode->Flags & V_INTERLACE) != 0);
3858 3890

cvs diff -r1.3 -r1.4 xsrc/external/mit/xf86-video-mga/dist/src/mga_exa.c (expand / switch to unified diff)

--- xsrc/external/mit/xf86-video-mga/dist/src/mga_exa.c 2016/08/19 20:45:16 1.3
+++ xsrc/external/mit/xf86-video-mga/dist/src/mga_exa.c 2017/03/05 01:32:02 1.4
@@ -24,27 +24,26 @@ @@ -24,27 +24,26 @@
24 * Tilman Sauerbeck <tilman@code-monkey.de> 24 * Tilman Sauerbeck <tilman@code-monkey.de>
25 */ 25 */
26 26
27/* 27/*
28 * Sources: 28 * Sources:
29 * - mga kdrive accel by Anders Carlsson 29 * - mga kdrive accel by Anders Carlsson
30 * - mga g400 Render accel by Damien Ciabrini 30 * - mga g400 Render accel by Damien Ciabrini
31 */ 31 */
32 32
33#ifdef HAVE_CONFIG_H 33#ifdef HAVE_CONFIG_H
34#include "config.h" 34#include "config.h"
35#endif 35#endif
36 36
37#include "xorg-server.h" 
38#include "xf86.h" 37#include "xf86.h"
39 38
40#include "mga.h" 39#include "mga.h"
41#include "mga_reg.h" 40#include "mga_reg.h"
42#include "mga_macros.h" 41#include "mga_macros.h"
43 42
44#include "exa.h" 43#include "exa.h"
45#ifdef MGADRI 44#ifdef MGADRI
46#include "mga_dri.h" 45#include "mga_dri.h"
47#endif 46#endif
48 47
49 48
50#if 0 49#if 0
@@ -309,26 +308,31 @@ mgaGetTexFormat(PicturePtr pPict) @@ -309,26 +308,31 @@ mgaGetTexFormat(PicturePtr pPict)
309 { 0, 0} 308 { 0, 0}
310 }; 309 };
311 310
312 for (ptr = texformats; ptr->fmt; ptr++) 311 for (ptr = texformats; ptr->fmt; ptr++)
313 if (ptr->fmt == pPict->format) 312 if (ptr->fmt == pPict->format)
314 return ptr->card_fmt; 313 return ptr->card_fmt;
315 314
316 return 0; 315 return 0;
317} 316}
318 317
319static Bool 318static Bool
320mgaCheckSourceTexture(int tmu, PicturePtr pPict) 319mgaCheckSourceTexture(int tmu, PicturePtr pPict)
321{ 320{
 321 if (!pPict->pDrawable) {
 322 DEBUG_MSG(("Solid / gradient pictures not supported\n"));
 323 return FALSE;
 324 }
 325
322 int w = pPict->pDrawable->width; 326 int w = pPict->pDrawable->width;
323 int h = pPict->pDrawable->height; 327 int h = pPict->pDrawable->height;
324 328
325 if ((w > 2047) || (h > 2047)){ 329 if ((w > 2047) || (h > 2047)){
326 DEBUG_MSG(("Picture w/h too large (%dx%d)\n", w, h)); 330 DEBUG_MSG(("Picture w/h too large (%dx%d)\n", w, h));
327 return FALSE; 331 return FALSE;
328 } 332 }
329 333
330 if (!mgaGetTexFormat(pPict)) { 334 if (!mgaGetTexFormat(pPict)) {
331 DEBUG_MSG(("Unsupported picture format 0x%x\n", pPict->format)); 335 DEBUG_MSG(("Unsupported picture format 0x%x\n", pPict->format));
332 return FALSE; 336 return FALSE;
333 } 337 }
334 338
@@ -345,27 +349,27 @@ mgaCheckSourceTexture(int tmu, PicturePt @@ -345,27 +349,27 @@ mgaCheckSourceTexture(int tmu, PicturePt
345 if (pPict->filter != PictFilterNearest && 349 if (pPict->filter != PictFilterNearest &&
346 pPict->filter != PictFilterBilinear) { 350 pPict->filter != PictFilterBilinear) {
347 DEBUG_MSG(("Unsupported filter 0x%x\n", pPict->filter)); 351 DEBUG_MSG(("Unsupported filter 0x%x\n", pPict->filter));
348 return FALSE; 352 return FALSE;
349 } 353 }
350 354
351 return TRUE; 355 return TRUE;
352} 356}
353 357
354static Bool 358static Bool
355mgaCheckComposite(int op, PicturePtr pSrcPict, PicturePtr pMaskPict, 359mgaCheckComposite(int op, PicturePtr pSrcPict, PicturePtr pMaskPict,
356 PicturePtr pDstPict) 360 PicturePtr pDstPict)
357{ 361{
358 MGAPtr pMga = xf86ScreenToScrn(pSrcPict->pDrawable->pScreen)->driverPrivate; 362 MGAPtr pMga = xf86ScreenToScrn(pDstPict->pDrawable->pScreen)->driverPrivate;
359 363
360 if (op >= sizeof(mgaBlendOp) / sizeof(mgaBlendOp[0])) { 364 if (op >= sizeof(mgaBlendOp) / sizeof(mgaBlendOp[0])) {
361 DEBUG_MSG(("unsupported op %x\n", op)); 365 DEBUG_MSG(("unsupported op %x\n", op));
362 return FALSE; 366 return FALSE;
363 } 367 }
364 368
365 if (!mgaCheckSourceTexture(0, pSrcPict)) 369 if (!mgaCheckSourceTexture(0, pSrcPict))
366 return FALSE; 370 return FALSE;
367 371
368 if (pMaskPict) { 372 if (pMaskPict) {
369 if (!mgaCheckSourceTexture(1, pMaskPict)) 373 if (!mgaCheckSourceTexture(1, pMaskPict))
370 return FALSE; 374 return FALSE;
371 375
@@ -512,26 +516,27 @@ setTMIncrementsRegs(PixmapPtr pPix, int  @@ -512,26 +516,27 @@ setTMIncrementsRegs(PixmapPtr pPix, int
512#define A_ARG2_DIFFUSE MGA_TDS_ALPHA_ARG2_DIFFUSE 516#define A_ARG2_DIFFUSE MGA_TDS_ALPHA_ARG2_DIFFUSE
513#define A_ARG2_PREV MGA_TDS_ALPHA_ARG2_PREVSTAGE 517#define A_ARG2_PREV MGA_TDS_ALPHA_ARG2_PREVSTAGE
514#define ALPHA_MUL MGA_TDS_ALPHA_SEL_MUL 518#define ALPHA_MUL MGA_TDS_ALPHA_SEL_MUL
515#define ALPHA_ARG1 MGA_TDS_ALPHA_SEL_ARG1 519#define ALPHA_ARG1 MGA_TDS_ALPHA_SEL_ARG1
516#define ALPHA_ARG2 MGA_TDS_ALPHA_SEL_ARG2 520#define ALPHA_ARG2 MGA_TDS_ALPHA_SEL_ARG2
517 521
518static Bool 522static Bool
519mgaPrepareComposite(int op, PicturePtr pSrcPict, PicturePtr pMaskPict, 523mgaPrepareComposite(int op, PicturePtr pSrcPict, PicturePtr pMaskPict,
520 PicturePtr pDstPict, PixmapPtr pSrc, PixmapPtr pMask, 524 PicturePtr pDstPict, PixmapPtr pSrc, PixmapPtr pMask,
521 PixmapPtr pDst) 525 PixmapPtr pDst)
522{ 526{
523 PMGA(pDst); 527 PMGA(pDst);
524 CARD32 fcol = 0xff000000, ds0 = 0, ds1 = 0, cmd, blendcntl; 528 CARD32 fcol = 0xff000000, ds0 = 0, ds1 = 0, cmd, blendcntl;
 529 if (!pSrc || !pSrcPict->pDrawable) return FALSE;
525 530
526 mgaSetup(pMga, pDst, pDstPict, 2); 531 mgaSetup(pMga, pDst, pDstPict, 2);
527 OUTREG(MGAREG_DSTORG, exaGetPixmapOffset(pDst)); 532 OUTREG(MGAREG_DSTORG, exaGetPixmapOffset(pDst));
528 OUTREG(MGAREG_PITCH, mgaGetPixmapPitch(pDst)); 533 OUTREG(MGAREG_PITCH, mgaGetPixmapPitch(pDst));
529 534
530 PrepareSourceTexture(0, pSrcPict, pSrc); 535 PrepareSourceTexture(0, pSrcPict, pSrc);
531 536
532 if (pMask) 537 if (pMask)
533 PrepareSourceTexture(1, pMaskPict, pMask); 538 PrepareSourceTexture(1, pMaskPict, pMask);
534 else 539 else
535 PrepareSourceTexture(1, pSrcPict, pSrc); 540 PrepareSourceTexture(1, pSrcPict, pSrc);
536 541
537 /* For A8 writes, the desired alpha value needs to be replicated 542 /* For A8 writes, the desired alpha value needs to be replicated
@@ -714,51 +719,26 @@ mgaUploadToScreen(PixmapPtr pDst, int x, @@ -714,51 +719,26 @@ mgaUploadToScreen(PixmapPtr pDst, int x,
714 OUTREG(MGAREG_FXBNDRY, ((x + w - 1) << 16) | (x & 0xffff)); 719 OUTREG(MGAREG_FXBNDRY, ((x + w - 1) << 16) | (x & 0xffff));
715 OUTREG(MGAREG_YDSTLEN | MGAREG_EXEC, (y << 16) | (h & 0xffff)); 720 OUTREG(MGAREG_YDSTLEN | MGAREG_EXEC, (y << 16) | (h & 0xffff));
716 721
717 while (h--) { 722 while (h--) {
718 memcpy (pMga->ILOADBase, src, bytes_padded); 723 memcpy (pMga->ILOADBase, src, bytes_padded);
719 src += src_pitch; 724 src += src_pitch;
720 } 725 }
721 726
722 exaMarkSync(pDst->drawable.pScreen); 727 exaMarkSync(pDst->drawable.pScreen);
723 728
724 return TRUE; 729 return TRUE;
725} 730}
726 731
727static Bool 
728mgaDownloadFromScreen(PixmapPtr pSrc, int x, int y, int w, int h, 
729 char *dst, int dst_pitch) 
730{ 
731 PMGA(pSrc); 
732 
733 char *src = (char *)(unsigned long) exaGetPixmapFirstPixel(pSrc); 
734 int src_pitch = exaGetPixmapPitch(pSrc); 
735 
736 int cpp = (pSrc->drawable.bitsPerPixel + 7) / 8; 
737 int bytes = w * cpp; 
738 
739 src += y * src_pitch + x * cpp; 
740 
741 QUIESCE_DMA(pSrc); 
742 
743 while (h--) { 
744 memcpy (dst, src, bytes); 
745 src += src_pitch; 
746 dst += dst_pitch; 
747 } 
748 
749 return TRUE; 
750} 
751 
752static void 732static void
753mgaWaitMarker(ScreenPtr pScreen, int marker) 733mgaWaitMarker(ScreenPtr pScreen, int marker)
754{ 734{
755 ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); 735 ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
756 MGAPtr pMga = pScrn->driverPrivate; 736 MGAPtr pMga = pScrn->driverPrivate;
757 737
758 WAITFIFO(1); 738 WAITFIFO(1);
759 739
760 OUTREG(MGAREG_CACHEFLUSH, 0); 740 OUTREG(MGAREG_CACHEFLUSH, 0);
761 741
762 /* wait until the "drawing engine busy" bit is unset */ 742 /* wait until the "drawing engine busy" bit is unset */
763 while (INREG (MGAREG_Status) & 0x10000); 743 while (INREG (MGAREG_Status) & 0x10000);
764} 744}
@@ -886,22 +866,21 @@ mgaExaInit(ScreenPtr pScreen) @@ -886,22 +866,21 @@ mgaExaInit(ScreenPtr pScreen)
886 pExa->PrepareCopy = mgaPrepareCopy; 866 pExa->PrepareCopy = mgaPrepareCopy;
887 pExa->Copy = mgaCopy; 867 pExa->Copy = mgaCopy;
888 pExa->DoneCopy = mgaNoopDone; 868 pExa->DoneCopy = mgaNoopDone;
889 869
890 if (pMga->Chipset == PCI_CHIP_MGAG400 || 870 if (pMga->Chipset == PCI_CHIP_MGAG400 ||
891 pMga->Chipset == PCI_CHIP_MGAG550) { 871 pMga->Chipset == PCI_CHIP_MGAG550) {
892 pExa->CheckComposite = mgaCheckComposite; 872 pExa->CheckComposite = mgaCheckComposite;
893 pExa->PrepareComposite = mgaPrepareComposite; 873 pExa->PrepareComposite = mgaPrepareComposite;
894 pExa->Composite = mgaComposite; 874 pExa->Composite = mgaComposite;
895 pExa->DoneComposite = mgaNoopDone; 875 pExa->DoneComposite = mgaNoopDone;
896 } 876 }
897 877
898 pExa->UploadToScreen = mgaUploadToScreen; 878 pExa->UploadToScreen = mgaUploadToScreen;
899 pExa->DownloadFromScreen = mgaDownloadFromScreen; 
900 879
901#ifdef MGADRI 880#ifdef MGADRI
902 if (pMga->directRenderingEnabled) 881 if (pMga->directRenderingEnabled)
903 init_dri(pScrn); 882 init_dri(pScrn);
904#endif 883#endif
905 884
906 return exaDriverInit(pScreen, pExa); 885 return exaDriverInit(pScreen, pExa);
907} 886}

cvs diff -r1.3 -r1.4 xsrc/external/mit/xf86-video-mga/dist/src/mga_merge.c (expand / switch to unified diff)

--- xsrc/external/mit/xf86-video-mga/dist/src/mga_merge.c 2016/08/20 00:27:22 1.3
+++ xsrc/external/mit/xf86-video-mga/dist/src/mga_merge.c 2017/03/05 01:32:02 1.4
@@ -343,29 +343,30 @@ MGAPreInitMergedFB(ScrnInfoPtr pScrn1, i @@ -343,29 +343,30 @@ MGAPreInitMergedFB(ScrnInfoPtr pScrn1, i
343 case PCI_CHIP_MGA2064: 343 case PCI_CHIP_MGA2064:
344 case PCI_CHIP_MGA2164: 344 case PCI_CHIP_MGA2164:
345 case PCI_CHIP_MGA2164_AGP: 345 case PCI_CHIP_MGA2164_AGP:
346 MGA2064SetupFuncs(pScrn); 346 MGA2064SetupFuncs(pScrn);
347 break; 347 break;
348 case PCI_CHIP_MGA1064: 348 case PCI_CHIP_MGA1064:
349 case PCI_CHIP_MGAG100: 349 case PCI_CHIP_MGAG100:
350 case PCI_CHIP_MGAG100_PCI: 350 case PCI_CHIP_MGAG100_PCI:
351 case PCI_CHIP_MGAG200: 351 case PCI_CHIP_MGAG200:
352 case PCI_CHIP_MGAG200_PCI: 352 case PCI_CHIP_MGAG200_PCI:
353 case PCI_CHIP_MGAG200_SE_A_PCI: 353 case PCI_CHIP_MGAG200_SE_A_PCI:
354 case PCI_CHIP_MGAG200_SE_B_PCI: 354 case PCI_CHIP_MGAG200_SE_B_PCI:
355 case PCI_CHIP_MGAG200_WINBOND_PCI: 355 case PCI_CHIP_MGAG200_WINBOND_PCI:
 356 case PCI_CHIP_MGAG200_EW3_PCI:
356 case PCI_CHIP_MGAG200_EV_PCI: 357 case PCI_CHIP_MGAG200_EV_PCI:
357 case PCI_CHIP_MGAG200_EH_PCI: 358 case PCI_CHIP_MGAG200_EH_PCI:
358 case PCI_CHIP_MGAG200_ER_PCI: 359 case PCI_CHIP_MGAG200_ER_PCI:
359 case PCI_CHIP_MGAG400: 360 case PCI_CHIP_MGAG400:
360 case PCI_CHIP_MGAG550: 361 case PCI_CHIP_MGAG550:
361 MGAGSetupFuncs(pScrn); 362 MGAGSetupFuncs(pScrn);
362 break; 363 break;
363 } 364 }
364 365
365 pMga->FbAddress = pMga1->FbAddress; 366 pMga->FbAddress = pMga1->FbAddress;
366 pMga->PciInfo = pMga1->PciInfo; 367 pMga->PciInfo = pMga1->PciInfo;
367#ifndef XSERVER_LIBPCIACCESS 368#ifndef XSERVER_LIBPCIACCESS
368 pMga->IOAddress = pMga1->IOAddress; 369 pMga->IOAddress = pMga1->IOAddress;
369 pMga->ILOADAddress = pMga1->ILOADAddress; 370 pMga->ILOADAddress = pMga1->ILOADAddress;
370 pMga->BiosFrom = pMga1->BiosFrom; 371 pMga->BiosFrom = pMga1->BiosFrom;
371 pMga->BiosAddress = pMga1->BiosAddress; 372 pMga->BiosAddress = pMga1->BiosAddress;
@@ -495,26 +496,27 @@ MGAPreInitMergedFB(ScrnInfoPtr pScrn1, i @@ -495,26 +496,27 @@ MGAPreInitMergedFB(ScrnInfoPtr pScrn1, i
495 memcpy(linePitches, Pitches2, sizeof(Pitches2)); 496 memcpy(linePitches, Pitches2, sizeof(Pitches2));
496 minPitch = maxPitch = 0; 497 minPitch = maxPitch = 0;
497 } 498 }
498 break; 499 break;
499 case PCI_CHIP_MGAG100: 500 case PCI_CHIP_MGAG100:
500 case PCI_CHIP_MGAG100_PCI: 501 case PCI_CHIP_MGAG100_PCI:
501 maxPitch = 2048; 502 maxPitch = 2048;
502 break; 503 break;
503 case PCI_CHIP_MGAG200: 504 case PCI_CHIP_MGAG200:
504 case PCI_CHIP_MGAG200_PCI: 505 case PCI_CHIP_MGAG200_PCI:
505 case PCI_CHIP_MGAG200_SE_A_PCI: 506 case PCI_CHIP_MGAG200_SE_A_PCI:
506 case PCI_CHIP_MGAG200_SE_B_PCI: 507 case PCI_CHIP_MGAG200_SE_B_PCI:
507 case PCI_CHIP_MGAG200_WINBOND_PCI: 508 case PCI_CHIP_MGAG200_WINBOND_PCI:
 509 case PCI_CHIP_MGAG200_EW3_PCI:
508 case PCI_CHIP_MGAG200_EV_PCI: 510 case PCI_CHIP_MGAG200_EV_PCI:
509 case PCI_CHIP_MGAG200_EH_PCI: 511 case PCI_CHIP_MGAG200_EH_PCI:
510 case PCI_CHIP_MGAG200_ER_PCI:  512 case PCI_CHIP_MGAG200_ER_PCI:
511 case PCI_CHIP_MGAG400: 513 case PCI_CHIP_MGAG400:
512 case PCI_CHIP_MGAG550: 514 case PCI_CHIP_MGAG550:
513 maxPitch = 4096; 515 maxPitch = 4096;
514 break; 516 break;
515 } 517 }
516 518
517 pScrn->modePool=NULL; 519 pScrn->modePool=NULL;
518 pScrn->modes = NULL; 520 pScrn->modes = NULL;
519 i = xf86ValidateModes(pScrn, pScrn->monitor->Modes, 521 i = xf86ValidateModes(pScrn, pScrn->monitor->Modes,
520 pScrn->display->modes, clockRanges, 522 pScrn->display->modes, clockRanges,

cvs diff -r1.3 -r1.4 xsrc/external/mit/xf86-video-mga/dist/src/mga_storm.c (expand / switch to unified diff)

--- xsrc/external/mit/xf86-video-mga/dist/src/mga_storm.c 2016/08/20 00:27:22 1.3
+++ xsrc/external/mit/xf86-video-mga/dist/src/mga_storm.c 2017/03/05 01:32:02 1.4
@@ -1138,26 +1138,27 @@ void MGAStormEngineInit( ScrnInfoPtr pSc @@ -1138,26 +1138,27 @@ void MGAStormEngineInit( ScrnInfoPtr pSc
1138 OUTREG(MGAREG_CXBNDRY, 0xFFFF0000); /* (maxX << 16) | minX */ 1138 OUTREG(MGAREG_CXBNDRY, 0xFFFF0000); /* (maxX << 16) | minX */
1139 OUTREG(MGAREG_YTOP, 0x00000000); /* minPixelPointer */ 1139 OUTREG(MGAREG_YTOP, 0x00000000); /* minPixelPointer */
1140 OUTREG(MGAREG_YBOT, 0x007FFFFF); /* maxPixelPointer */ 1140 OUTREG(MGAREG_YBOT, 0x007FFFFF); /* maxPixelPointer */
1141 pMga->AccelFlags &= ~CLIPPER_ON; 1141 pMga->AccelFlags &= ~CLIPPER_ON;
1142 1142
1143 switch(pMga->Chipset) { 1143 switch(pMga->Chipset) {
1144 case PCI_CHIP_MGAG550: 1144 case PCI_CHIP_MGAG550:
1145 case PCI_CHIP_MGAG400: 1145 case PCI_CHIP_MGAG400:
1146 case PCI_CHIP_MGAG200: 1146 case PCI_CHIP_MGAG200:
1147 case PCI_CHIP_MGAG200_PCI: 1147 case PCI_CHIP_MGAG200_PCI:
1148 case PCI_CHIP_MGAG200_SE_A_PCI: 1148 case PCI_CHIP_MGAG200_SE_A_PCI:
1149 case PCI_CHIP_MGAG200_SE_B_PCI: 1149 case PCI_CHIP_MGAG200_SE_B_PCI:
1150 case PCI_CHIP_MGAG200_WINBOND_PCI: 1150 case PCI_CHIP_MGAG200_WINBOND_PCI:
 1151 case PCI_CHIP_MGAG200_EW3_PCI:
1151 case PCI_CHIP_MGAG200_EV_PCI: 1152 case PCI_CHIP_MGAG200_EV_PCI:
1152 case PCI_CHIP_MGAG200_EH_PCI: 1153 case PCI_CHIP_MGAG200_EH_PCI:
1153 case PCI_CHIP_MGAG200_ER_PCI:  1154 case PCI_CHIP_MGAG200_ER_PCI:
1154 pMga->SrcOrg = 0; 1155 pMga->SrcOrg = 0;
1155 OUTREG(MGAREG_SRCORG, pMga->realSrcOrg); 1156 OUTREG(MGAREG_SRCORG, pMga->realSrcOrg);
1156 OUTREG(MGAREG_DSTORG, pMga->DstOrg); 1157 OUTREG(MGAREG_DSTORG, pMga->DstOrg);
1157 break; 1158 break;
1158 default: 1159 default:
1159 break; 1160 break;
1160 } 1161 }
1161 1162
1162 if (pMga->is_G200WB) 1163 if (pMga->is_G200WB)
1163 { 1164 {

cvs diff -r1.17 -r1.18 xsrc/external/mit/xf86-video-r128/dist/src/r128_driver.c (expand / switch to unified diff)

--- xsrc/external/mit/xf86-video-r128/dist/src/r128_driver.c 2016/08/16 08:09:12 1.17
+++ xsrc/external/mit/xf86-video-r128/dist/src/r128_driver.c 2017/03/05 01:32:03 1.18
@@ -1506,30 +1506,26 @@ Bool R128PreInit(ScrnInfoPtr pScrn, int  @@ -1506,30 +1506,26 @@ Bool R128PreInit(ScrnInfoPtr pScrn, int
1506 /* Free the video bios (if applicable) */ 1506 /* Free the video bios (if applicable) */
1507 if (info->VBIOS) { 1507 if (info->VBIOS) {
1508 free(info->VBIOS); 1508 free(info->VBIOS);
1509 info->VBIOS = NULL; 1509 info->VBIOS = NULL;
1510 } 1510 }
1511 1511
1512 /* Free int10 info */ 1512 /* Free int10 info */
1513 if (pInt10) 1513 if (pInt10)
1514 xf86FreeInt10(pInt10); 1514 xf86FreeInt10(pInt10);
1515 1515
1516 if (info->MMIO) R128UnmapMMIO(pScrn); 1516 if (info->MMIO) R128UnmapMMIO(pScrn);
1517 info->MMIO = NULL; 1517 info->MMIO = NULL;
1518 1518
1519 xf86DrvMsg(pScrn->scrnIndex, X_NOTICE, 
1520 "For information on using the multimedia capabilities\n\tof this" 
1521 " adapter, please see http://gatos.sf.net.\n"); 
1522 
1523 return TRUE; 1519 return TRUE;
1524 1520
1525 fail: 1521 fail:
1526 /* Pre-init failed. */ 1522 /* Pre-init failed. */
1527 1523
1528 /* Free the video bios (if applicable) */ 1524 /* Free the video bios (if applicable) */
1529 if (info->VBIOS) { 1525 if (info->VBIOS) {
1530 free(info->VBIOS); 1526 free(info->VBIOS);
1531 info->VBIOS = NULL; 1527 info->VBIOS = NULL;
1532 } 1528 }
1533 1529
1534 /* Free int10 info */ 1530 /* Free int10 info */
1535 if (pInt10) 1531 if (pInt10)

cvs diff -r1.5 -r1.6 xsrc/external/mit/xf86-video-r128/dist/src/r128_output.c (expand / switch to unified diff)

--- xsrc/external/mit/xf86-video-r128/dist/src/r128_output.c 2016/08/16 08:09:12 1.5
+++ xsrc/external/mit/xf86-video-r128/dist/src/r128_output.c 2017/03/05 01:32:03 1.6
@@ -25,27 +25,33 @@ @@ -25,27 +25,33 @@
25 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 25 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
26 * DEALINGS IN THE SOFTWARE. 26 * DEALINGS IN THE SOFTWARE.
27 */ 27 */
28 28
29#ifdef HAVE_CONFIG_H 29#ifdef HAVE_CONFIG_H
30#include "config.h" 30#include "config.h"
31#endif 31#endif
32 32
33#include <string.h> 33#include <string.h>
34#include <stdio.h> 34#include <stdio.h>
35 35
36#include "xf86.h" 36#include "xf86.h"
37#include "xf86Modes.h" 37#include "xf86Modes.h"
 38
 39#ifdef HAVE_XEXTPROTO_71
38#include "X11/extensions/dpmsconst.h" 40#include "X11/extensions/dpmsconst.h"
 41#else
 42#define DPMS_SERVER
 43#include "X11/extensions/dpms.h"
 44#endif
39 45
40#include "r128.h" 46#include "r128.h"
41#include "r128_probe.h" 47#include "r128_probe.h"
42#include "r128_reg.h" 48#include "r128_reg.h"
43#include "xf86Priv.h" 49#include "xf86Priv.h"
44#include "xf86Privstr.h" 50#include "xf86Privstr.h"
45 51
46#ifdef __NetBSD__ 52#ifdef __NetBSD__
47#include <sys/time.h> 53#include <sys/time.h>
48#include <sys/ioctl.h> 54#include <sys/ioctl.h>
49#include <dev/wscons/wsconsio.h> 55#include <dev/wscons/wsconsio.h>
50#endif 56#endif
51 57