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.diff -r1.4 -r1.5 xsrc/external/mit/xf86-video-chips/dist/src/ct_accel.c
(mrg)
--- 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 | |
81 | static char CTNAME(accel_debug)[1024]; | 81 | static 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 | ||
168 | Bool | 168 | Bool | |
169 | CTNAME(AccelInit)(ScreenPtr pScreen) | 169 | CTNAME(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 |
--- 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 |
--- 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 | |||
475 | void | 475 | void | |
476 | Permedia2I2CPutBits(I2CBusPtr b, int scl, int sda) | 476 | Permedia2I2CPutBits(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 | |||
494 | void | 489 | void | |
495 | Permedia2I2CGetBits(I2CBusPtr b, int *scl, int *sda) | 490 | Permedia2I2CGetBits(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 |
--- 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" |
--- 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"); |
--- 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 | |||
47 | static void MGAGRamdacInit(ScrnInfoPtr); | 47 | static void MGAGRamdacInit(ScrnInfoPtr); | |
48 | static void MGAGSave(ScrnInfoPtr, vgaRegPtr, MGARegPtr, Bool); | 48 | static void MGAGSave(ScrnInfoPtr, vgaRegPtr, MGARegPtr, Bool); | |
49 | static void MGAGRestore(ScrnInfoPtr, vgaRegPtr, MGARegPtr, Bool); | 49 | static void MGAGRestore(ScrnInfoPtr, vgaRegPtr, MGARegPtr, Bool); | |
50 | static Bool MGAGInit(ScrnInfoPtr, DisplayModePtr); | 50 | static Bool MGAGInit(ScrnInfoPtr, DisplayModePtr); | |
51 | static void MGAGLoadPalette(ScrnInfoPtr, int, int*, LOCO*, VisualPtr); | 51 | static void MGAGLoadPalette(ScrnInfoPtr, int, int*, LOCO*, VisualPtr); | |
52 | static Bool MGAG_i2cInit(ScrnInfoPtr pScrn); | 52 | static Bool MGAG_i2cInit(ScrnInfoPtr pScrn); | |
53 | 53 | |||
54 | #define P_ARRAY_SIZE 9 | |||
55 | ||||
56 | void | |||
57 | MGAG200E4ComputePLLParam(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 | ||||
54 | static void | 123 | static void | |
55 | MGAG200SEComputePLLParam(ScrnInfoPtr pScrn, long lFo, int *M, int *N, int *P) | 124 | MGAG200SEComputePLLParam(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 | |||
279 | void | |||
280 | MGAG200EW3ComputePLLParam(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 | ||||
210 | static void | 347 | static void | |
211 | MGAG200EHComputePLLParam(ScrnInfoPtr pScrn, long lFo, int *M, int *N, int *P) | 348 | MGAG200EHComputePLLParam(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); |
--- 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 | |||
420 | static const struct pci_id_match mga_device_match[] = { | 436 | static 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 */ | |
448 | static SymTabRec MGAChipsets[] = { | 466 | static 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 | |||
468 | static PciChipsets MGAPciChipsets[] = { | 487 | static 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 |
--- 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 | |||
319 | static Bool | 318 | static Bool | |
320 | mgaCheckSourceTexture(int tmu, PicturePtr pPict) | 319 | mgaCheckSourceTexture(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 | |||
354 | static Bool | 358 | static Bool | |
355 | mgaCheckComposite(int op, PicturePtr pSrcPict, PicturePtr pMaskPict, | 359 | mgaCheckComposite(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 | |||
518 | static Bool | 522 | static Bool | |
519 | mgaPrepareComposite(int op, PicturePtr pSrcPict, PicturePtr pMaskPict, | 523 | mgaPrepareComposite(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 | |||
727 | static Bool | |||
728 | mgaDownloadFromScreen(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 | ||||
752 | static void | 732 | static void | |
753 | mgaWaitMarker(ScreenPtr pScreen, int marker) | 733 | mgaWaitMarker(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 | } |
--- 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, |
--- 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 | { |
--- 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) |
--- 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 |