diff options
author | mnag <mnag@FreeBSD.org> | 2006-08-21 06:58:20 +0800 |
---|---|---|
committer | mnag <mnag@FreeBSD.org> | 2006-08-21 06:58:20 +0800 |
commit | 6ed4ed94284fabc407f6e17213d476f9b3a730df (patch) | |
tree | 3712180775f283f6f338eaa41a6df26eabbb29d3 /x11-servers/xorg-server | |
parent | ba4a1ae111d5031195fe6fd8cfacc0d9108d2ca0 (diff) | |
download | freebsd-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/Makefile | 2 | ||||
-rw-r--r-- | x11-servers/xorg-server/files/patch-945GM.patch | 335 |
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; |