aboutsummaryrefslogtreecommitdiffstats
path: root/x11-servers/xorg-server
diff options
context:
space:
mode:
authormnag <mnag@FreeBSD.org>2006-08-21 06:58:20 +0800
committermnag <mnag@FreeBSD.org>2006-08-21 06:58:20 +0800
commit6ed4ed94284fabc407f6e17213d476f9b3a730df (patch)
tree3712180775f283f6f338eaa41a6df26eabbb29d3 /x11-servers/xorg-server
parentba4a1ae111d5031195fe6fd8cfacc0d9108d2ca0 (diff)
downloadfreebsd-ports-graphics-6ed4ed94284fabc407f6e17213d476f9b3a730df.tar.gz
freebsd-ports-graphics-6ed4ed94284fabc407f6e17213d476f9b3a730df.tar.zst
freebsd-ports-graphics-6ed4ed94284fabc407f6e17213d476f9b3a730df.zip
- Add support to Intel 945GM
- portlint(1) PR: 100673 Approved by: x11 (No objection and maintainer timeout, 30 days)
Diffstat (limited to 'x11-servers/xorg-server')
-rw-r--r--x11-servers/xorg-server/Makefile2
-rw-r--r--x11-servers/xorg-server/files/patch-945GM.patch335
2 files changed, 336 insertions, 1 deletions
diff --git a/x11-servers/xorg-server/Makefile b/x11-servers/xorg-server/Makefile
index 8fe194ac06a..3f0cd081daf 100644
--- a/x11-servers/xorg-server/Makefile
+++ b/x11-servers/xorg-server/Makefile
@@ -84,7 +84,7 @@ PLIST_SUB+= ALPHA_NA="@comment "
.else
PLIST_SUB+= ALPHA_NA=""
.endif
-
+
.if ${ARCH} == ia64
PLIST_SUB+= IA64_NA="@comment "
.else
diff --git a/x11-servers/xorg-server/files/patch-945GM.patch b/x11-servers/xorg-server/files/patch-945GM.patch
new file mode 100644
index 00000000000..a0fd8f94dca
--- /dev/null
+++ b/x11-servers/xorg-server/files/patch-945GM.patch
@@ -0,0 +1,335 @@
+#
+# Add support to Intel 945GM
+#
+--- programs/Xserver/hw/xfree86/drivers/i810/common.h.orig Mon Jul 17 11:41:34 2006
++++ programs/Xserver/hw/xfree86/drivers/i810/common.h Mon Jul 17 11:43:00 2006
+@@ -322,6 +322,11 @@
+ #define PCI_CHIP_I945_G_BRIDGE 0x2770
+ #endif
+
++#ifndef PCI_CHIP_I945_GM
++#define PCI_CHIP_I945_GM 0x27A2
++#define PCI_CHIP_I945_GM_BRIDGE 0x27A0
++#endif
++
+ #define IS_I810(pI810) (pI810->PciInfo->chipType == PCI_CHIP_I810 || \
+ pI810->PciInfo->chipType == PCI_CHIP_I810_DC100 || \
+ pI810->PciInfo->chipType == PCI_CHIP_I810_E)
+@@ -335,6 +340,7 @@
+ #define IS_I915G(pI810) (pI810->PciInfo->chipType == PCI_CHIP_I915_G || pI810->PciInfo->chipType == PCI_CHIP_E7221_G)
+ #define IS_I915GM(pI810) (pI810->PciInfo->chipType == PCI_CHIP_I915_GM)
+ #define IS_I945G(pI810) (pI810->PciInfo->chipType == PCI_CHIP_I945_G)
++#define IS_I945GM(pI810) (pI810->PciInfo->chipType == PCI_CHIP_I945_GM)
+
+ #define IS_MOBILE(pI810) (IS_I830(pI810) || IS_I85X(pI810) || IS_I915GM(pI810))
+
+--- programs/Xserver/hw/xfree86/drivers/i810/i810_driver.c.orig Mon Jul 17 11:41:34 2006
++++ programs/Xserver/hw/xfree86/drivers/i810/i810_driver.c Mon Jul 17 11:44:09 2006
+@@ -136,6 +136,7 @@
+ {PCI_CHIP_E7221_G, "E7221 (i915)"},
+ {PCI_CHIP_I915_GM, "915GM"},
+ {PCI_CHIP_I945_G, "945G"},
++ {PCI_CHIP_I945_GM, "945GM"},
+ {-1, NULL}
+ };
+
+@@ -154,6 +155,7 @@
+ {PCI_CHIP_E7221_G, PCI_CHIP_E7221_G, RES_SHARED_VGA},
+ {PCI_CHIP_I915_GM, PCI_CHIP_I915_GM, RES_SHARED_VGA},
+ {PCI_CHIP_I945_G, PCI_CHIP_I945_G, RES_SHARED_VGA},
++ {PCI_CHIP_I945_GM, PCI_CHIP_I945_GM, RES_SHARED_VGA},
+ {-1, -1, RES_UNDEFINED }
+ };
+
+@@ -569,6 +571,7 @@
+ case PCI_CHIP_E7221_G:
+ case PCI_CHIP_I915_GM:
+ case PCI_CHIP_I945_G:
++ case PCI_CHIP_I945_GM:
+ xf86SetEntitySharable(usedChips[i]);
+
+ /* Allocate an entity private if necessary */
+--- programs/Xserver/hw/xfree86/drivers/i810/i830_cursor.c.orig Mon Jul 17 11:41:34 2006
++++ programs/Xserver/hw/xfree86/drivers/i810/i830_cursor.c Mon Jul 17 11:46:20 2006
+@@ -86,7 +86,7 @@
+
+ DPRINTF(PFX, "I830InitHWCursor\n");
+ /* Initialise the HW cursor registers, leaving the cursor hidden. */
+- if (IS_MOBILE(pI830) || IS_I915G(pI830) || IS_I945G(pI830)) {
++ if (IS_MOBILE(pI830) || IS_I915G(pI830) || IS_I945G(pI830) || IS_I945GM(pI830)) {
+ temp = INREG(CURSOR_A_CONTROL);
+ temp &= ~(CURSOR_MODE | MCURSOR_GAMMA_ENABLE | MCURSOR_MEM_TYPE_LOCAL |
+ MCURSOR_PIPE_SELECT);
+@@ -308,7 +308,7 @@
+ }
+
+ /* have to upload the base for the new position */
+- if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830)) {
++ if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830)) {
+ if (pI830->CursorIsARGB)
+ OUTREG(CURSOR_A_BASE, pI830->CursorMemARGB->Physical);
+ else
+@@ -339,7 +339,7 @@
+ pI830->CursorMemARGB->Physical, pI830->CursorMemARGB->Start);
+
+ pI830->cursorOn = TRUE;
+- if (IS_MOBILE(pI830) || IS_I915G(pI830) || IS_I945G(pI830)) {
++ if (IS_MOBILE(pI830) || IS_I915G(pI830) || IS_I945G(pI830) || IS_I945GM(pI830)) {
+ temp = INREG(CURSOR_A_CONTROL);
+ temp &= ~(CURSOR_MODE | MCURSOR_PIPE_SELECT);
+ if (pI830->CursorIsARGB)
+@@ -387,7 +387,7 @@
+ DPRINTF(PFX, "I830HideCursor\n");
+
+ pI830->cursorOn = FALSE;
+- if (IS_MOBILE(pI830) || IS_I915G(pI830) || IS_I945G(pI830)) {
++ if (IS_MOBILE(pI830) || IS_I915G(pI830) || IS_I945G(pI830) || IS_I945GM(pI830)) {
+ temp = INREG(CURSOR_A_CONTROL);
+ temp &= ~CURSOR_MODE;
+ temp |= CURSOR_MODE_DISABLE;
+--- programs/Xserver/hw/xfree86/drivers/i810/i830_driver.c.orig Mon Jul 17 11:41:34 2006
++++ programs/Xserver/hw/xfree86/drivers/i810/i830_driver.c Mon Jul 17 11:49:23 2006
+@@ -196,6 +196,7 @@
+ {PCI_CHIP_E7221_G, "E7221 (i915)"},
+ {PCI_CHIP_I915_GM, "915GM"},
+ {PCI_CHIP_I945_G, "945G"},
++ {PCI_CHIP_I945_GM, "945GM"},
+ {-1, NULL}
+ };
+
+@@ -208,6 +209,7 @@
+ {PCI_CHIP_E7221_G, PCI_CHIP_E7221_G, RES_SHARED_VGA},
+ {PCI_CHIP_I915_GM, PCI_CHIP_I915_GM, RES_SHARED_VGA},
+ {PCI_CHIP_I945_G, PCI_CHIP_I945_G, RES_SHARED_VGA},
++ {PCI_CHIP_I945_GM, PCI_CHIP_I945_GM, RES_SHARED_VGA},
+ {-1, -1, RES_UNDEFINED}
+ };
+
+@@ -1323,7 +1325,7 @@
+ * The GTT varying according the the FbMapSize and the popup is 4KB */
+ range = (pI830->FbMapSize / (1024*1024)) + 4;
+
+- if (IS_I85X(pI830) || IS_I865G(pI830) || IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830)) {
++ if (IS_I85X(pI830) || IS_I865G(pI830) || IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830)) {
+ switch (gmch_ctrl & I830_GMCH_GMS_MASK) {
+ case I855_GMCH_GMS_STOLEN_1M:
+ memsize = MB(1) - KB(range);
+@@ -1341,11 +1343,11 @@
+ memsize = MB(32) - KB(range);
+ break;
+ case I915G_GMCH_GMS_STOLEN_48M:
+- if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))
++ if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))
+ memsize = MB(48) - KB(range);
+ break;
+ case I915G_GMCH_GMS_STOLEN_64M:
+- if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))
++ if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))
+ memsize = MB(64) - KB(range);
+ break;
+ }
+@@ -2090,6 +2092,9 @@
+ case PCI_CHIP_I945_G:
+ chipname = "945G";
+ break;
++ case PCI_CHIP_I945_GM:
++ chipname = "945GM";
++ break;
+ default:
+ chipname = "unknown chipset";
+ break;
+@@ -2127,7 +2132,7 @@
+ pI830->LinearAddr = pI830->pEnt->device->MemBase;
+ from = X_CONFIG;
+ } else {
+- if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830)) {
++ if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830)) {
+ pI830->LinearAddr = pI830->PciInfo->memBase[2] & 0xF0000000;
+ from = X_PROBED;
+ } else if (pI830->PciInfo->memBase[1] != 0) {
+@@ -2149,7 +2154,7 @@
+ pI830->MMIOAddr = pI830->pEnt->device->IOBase;
+ from = X_CONFIG;
+ } else {
+- if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830)) {
++ if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830)) {
+ pI830->MMIOAddr = pI830->PciInfo->memBase[0] & 0xFFF80000;
+ from = X_PROBED;
+ } else if (pI830->PciInfo->memBase[1]) {
+@@ -2194,7 +2199,7 @@
+ pI830->FbMapSize = 0x4000000; /* 64MB - has this been tested ?? */
+ }
+ } else {
+- if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830)) {
++ if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830)) {
+ if (pI830->PciInfo->memBase[2] & 0x08000000)
+ pI830->FbMapSize = 0x8000000; /* 128MB aperture */
+ else
+@@ -2227,7 +2232,7 @@
+ if (pI830->PciInfo->chipType == PCI_CHIP_E7221_G)
+ pI830->availablePipes = 1;
+ else
+- if (IS_MOBILE(pI830) || IS_I915G(pI830) || IS_I945G(pI830))
++ if (IS_MOBILE(pI830) || IS_I915G(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))
+ pI830->availablePipes = 2;
+ else
+ pI830->availablePipes = 1;
+@@ -2872,7 +2877,7 @@
+ }
+
+ /* Check if the HW cursor needs physical address. */
+- if (IS_MOBILE(pI830) || IS_I915G(pI830) || IS_I945G(pI830))
++ if (IS_MOBILE(pI830) || IS_I915G(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))
+ pI830->CursorNeedsPhysical = TRUE;
+ else
+ pI830->CursorNeedsPhysical = FALSE;
+--- programs/Xserver/hw/xfree86/drivers/i810/i830_memory.c.orig Mon Jul 17 11:41:34 2006
++++ programs/Xserver/hw/xfree86/drivers/i810/i830_memory.c Mon Jul 17 11:51:02 2006
+@@ -1239,7 +1239,7 @@
+
+ i830Reg->Fence[nr] = 0;
+
+- if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))
++ if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))
+ fence_mask = ~I915G_FENCE_START_MASK;
+ else
+ fence_mask = ~I830_FENCE_START_MASK;
+@@ -1247,7 +1247,7 @@
+ if (start & fence_mask) {
+ xf86DrvMsg(X_WARNING, pScrn->scrnIndex,
+ "SetFence: %d: start (0x%08x) is not %s aligned\n",
+- nr, start, (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830)) ? "1MB" : "512k");
++ nr, start, (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830)) ? "1MB" : "512k");
+ return;
+ }
+
+@@ -1267,7 +1267,7 @@
+
+ val = (start | FENCE_X_MAJOR | FENCE_VALID);
+
+- if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830)) {
++ if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830)) {
+ switch (size) {
+ case MB(1):
+ val |= I915G_FENCE_SIZE_1M;
+@@ -1328,7 +1328,7 @@
+ }
+ }
+
+- if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))
++ if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))
+ fence_pitch = pitch / 512;
+ else
+ fence_pitch = pitch / 128;
+--- programs/Xserver/hw/xfree86/drivers/i810/i830_video.c.orig Mon Jul 17 11:41:34 2006
++++ programs/Xserver/hw/xfree86/drivers/i810/i830_video.c Mon Jul 17 11:52:36 2006
+@@ -617,7 +617,7 @@
+ adapt->nAttributes = NUM_ATTRIBUTES;
+ if (pI830->Clone)
+ adapt->nAttributes += CLONE_ATTRIBUTES;
+- if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))
++ if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))
+ adapt->nAttributes += GAMMA_ATTRIBUTES; /* has gamma */
+ adapt->pAttributes = xnfalloc(sizeof(XF86AttributeRec) * adapt->nAttributes);
+ /* Now copy the attributes */
+@@ -628,7 +628,7 @@
+ memcpy((char*)att, (char*)CloneAttributes, sizeof(XF86AttributeRec) * CLONE_ATTRIBUTES);
+ att+=CLONE_ATTRIBUTES;
+ }
+- if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830)) {
++ if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830)) {
+ memcpy((char*)att, (char*)GammaAttributes, sizeof(XF86AttributeRec) * GAMMA_ATTRIBUTES);
+ att+=GAMMA_ATTRIBUTES;
+ }
+@@ -688,7 +688,7 @@
+ if (pI830->Clone)
+ xvPipe = MAKE_ATOM("XV_PIPE");
+
+- if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830)) {
++ if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830)) {
+ xvGamma0 = MAKE_ATOM("XV_GAMMA0");
+ xvGamma1 = MAKE_ATOM("XV_GAMMA1");
+ xvGamma2 = MAKE_ATOM("XV_GAMMA2");
+@@ -806,7 +806,7 @@
+ overlay->OCONFIG |= OVERLAY_PIPE_B;
+ if (pPriv->overlayOK)
+ OVERLAY_UPDATE;
+- } else if (attribute == xvGamma0 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))) {
++ } else if (attribute == xvGamma0 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))) {
+ /* Avoid video anomalies, so set gamma registers when overlay is off */
+ /* We also clamp the values if they are outside the ranges */
+ if (!*pI830->overlayOn) {
+@@ -815,35 +815,35 @@
+ pPriv->gamma1 = pPriv->gamma0 + 0x7d;
+ } else
+ return BadRequest;
+- } else if (attribute == xvGamma1 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))) {
++ } else if (attribute == xvGamma1 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))) {
+ if (!*pI830->overlayOn) {
+ pPriv->gamma1 = value;
+ if (pPriv->gamma1 - pPriv->gamma0 > 0x7d)
+ pPriv->gamma0 = pPriv->gamma1 - 0x7d;
+ } else
+ return BadRequest;
+- } else if (attribute == xvGamma2 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))) {
++ } else if (attribute == xvGamma2 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))) {
+ if (!*pI830->overlayOn) {
+ pPriv->gamma2 = value;
+ if (pPriv->gamma3 - pPriv->gamma2 > 0x7d)
+ pPriv->gamma3 = pPriv->gamma2 + 0x7d;
+ } else
+ return BadRequest;
+- } else if (attribute == xvGamma3 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))) {
++ } else if (attribute == xvGamma3 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))) {
+ if (!*pI830->overlayOn) {
+ pPriv->gamma3 = value;
+ if (pPriv->gamma3 - pPriv->gamma2 > 0x7d)
+ pPriv->gamma2 = pPriv->gamma3 - 0x7d;
+ } else
+ return BadRequest;
+- } else if (attribute == xvGamma4 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))) {
++ } else if (attribute == xvGamma4 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))) {
+ if (!*pI830->overlayOn) {
+ pPriv->gamma4 = value;
+ if (pPriv->gamma5 - pPriv->gamma4 > 0x7d)
+ pPriv->gamma5 = pPriv->gamma4 + 0x7d;
+ } else
+ return BadRequest;
+- } else if (attribute == xvGamma5 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))) {
++ } else if (attribute == xvGamma5 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))) {
+ if (!*pI830->overlayOn) {
+ pPriv->gamma5 = value;
+ if (pPriv->gamma5 - pPriv->gamma4 > 0x7d)
+@@ -875,7 +875,7 @@
+ attribute == xvGamma2 ||
+ attribute == xvGamma3 ||
+ attribute == xvGamma4 ||
+- attribute == xvGamma5) && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))) {
++ attribute == xvGamma5) && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))) {
+ I830UpdateGamma(pScrn);
+ }
+
+@@ -895,17 +895,17 @@
+ *value = pPriv->contrast;
+ } else if (pI830->Clone && attribute == xvPipe) {
+ *value = pPriv->pipe;
+- } else if (attribute == xvGamma0 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))) {
++ } else if (attribute == xvGamma0 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))) {
+ *value = pPriv->gamma0;
+- } else if (attribute == xvGamma1 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))) {
++ } else if (attribute == xvGamma1 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))) {
+ *value = pPriv->gamma1;
+- } else if (attribute == xvGamma2 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))) {
++ } else if (attribute == xvGamma2 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))) {
+ *value = pPriv->gamma2;
+- } else if (attribute == xvGamma3 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))) {
++ } else if (attribute == xvGamma3 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))) {
+ *value = pPriv->gamma3;
+- } else if (attribute == xvGamma4 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))) {
++ } else if (attribute == xvGamma4 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))) {
+ *value = pPriv->gamma4;
+- } else if (attribute == xvGamma5 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))) {
++ } else if (attribute == xvGamma5 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))) {
+ *value = pPriv->gamma5;
+ } else if (attribute == xvColorKey) {
+ *value = pPriv->colorKey;