ports/100673: Update port: x11-servers/xorg-server Add support to Intel 945GM

Marcus Alves Grando mnag at FreeBSD.org
Fri Jul 21 14:10:22 UTC 2006


>Number:         100673
>Category:       ports
>Synopsis:       Update port: x11-servers/xorg-server Add support to Intel 945GM
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          update
>Submitter-Id:   current-users
>Arrival-Date:   Fri Jul 21 14:10:20 GMT 2006
>Closed-Date:
>Last-Modified:
>Originator:     Marcus Alves Grando
>Release:        FreeBSD 6.1-STABLE i386
>Organization:
Grupos Internet S/A
>Environment:
System: FreeBSD marcus.grupos.com.br 6.1-STABLE FreeBSD 6.1-STABLE #1: Wed Jul 19 10:32:42 BRT 2006 root at marcus.grupos.com.br:/usr/obj/usr/src/sys/MARCUS i386


	
>Description:

Add support to Intel 945GM

	
>How-To-Repeat:
	
>Fix:

	

--- xorg-server.patch begins here ---
Index: files/patch-945GM.patch
===================================================================
RCS file: files/patch-945GM.patch
diff -N files/patch-945GM.patch
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ files/patch-945GM.patch	17 Jul 2006 15:01:07 -0000
@@ -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;
--- xorg-server.patch ends here ---


>Release-Note:
>Audit-Trail:
>Unformatted:



More information about the freebsd-ports-bugs mailing list