kern/143427: [agp] Patch for D510 pinetail AGP problem

Mamoru Sumida msumida at mvc.biglobe.ne.jp
Mon Feb 1 13:50:13 UTC 2010


Oops!! Have I forgot to attach the patch? 

Here is 
For 
src/dev/apg/apg_i810.c
src/dev/drm/drm_pciids.h
src/dev/drm/i930_drv.h
src/dev/drm/i930_reg.h

Thanks

At Mon, 1 Feb 2010 12:46:00 GMT,
linimon at FreeBSD.org wrote:
> 
> Old Synopsis: Patch for D510 pinetail AGP problem
> New Synopsis: [agp] Patch for D510 pinetail AGP problem
> 
> State-Changed-From-To: open->feedback
> State-Changed-By: linimon
> State-Changed-When: Mon Feb 1 12:44:05 UTC 2010
> State-Changed-Why: 
> I'm sorry ... where is the patch?
> 
> http://www.freebsd.org/cgi/query-pr.cgi?pr=143427

-------------- next part --------------
--- i915_drv.h.orig	2010-02-01 11:42:16.000000000 +0000
+++ i915_drv.h	2010-01-30 15:55:43.000000000 +0000
@@ -28,7 +28,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/i915_drv.h,v 1.4.2.9 2009/10/30 16:38:53 rnoland Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/i915_drv.h,v 1.13.2.2 2009/10/30 16:37:58 rnoland Exp $");
 
 #ifndef _I915_DRV_H_
 #define _I915_DRV_H_
@@ -657,16 +657,23 @@
 		     (dev)->pci_device == 0x2E32 || \
 		     IS_GM45(dev))
 
+#define IS_IGDG(dev) ((dev)->pci_device == 0xa001)
+#define IS_IGDGM(dev) ((dev)->pci_device == 0xa011)
+#define IS_IGD(dev) (IS_IGDG(dev) || IS_IGDGM(dev))
+
 #define IS_G33(dev)    ((dev)->pci_device == 0x29C2 ||	\
 			(dev)->pci_device == 0x29B2 ||	\
-			(dev)->pci_device == 0x29D2)
+			(dev)->pci_device == 0x29D2 ||  \
+			(IS_IGD(dev)))
 
+ 
 #define IS_I9XX(dev) (IS_I915G(dev) || IS_I915GM(dev) || IS_I945G(dev) || \
 		      IS_I945GM(dev) || IS_I965G(dev) || IS_G33(dev))
 
 #define IS_MOBILE(dev) (IS_I830(dev) || IS_I85X(dev) || IS_I915GM(dev) || \
-			IS_I945GM(dev) || IS_I965GM(dev) || IS_GM45(dev))
-
+			IS_I945GM(dev) || IS_I965GM(dev) || IS_GM45(dev) || \
+			IS_IGD(dev))
+ 
 #define I915_NEED_GFX_HWS(dev) (IS_G33(dev) || IS_GM45(dev) || IS_G4X(dev))
 
 #define PRIMARY_RINGBUFFER_SIZE         (128*1024)
--- i915_reg.h.orig	2010-02-01 11:41:26.000000000 +0000
+++ i915_reg.h	2010-01-30 15:59:15.000000000 +0000
@@ -23,7 +23,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/i915_reg.h,v 1.3.2.1.2.1 2009/10/25 01:10:29 kensmith Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/i915_reg.h,v 1.3.2.1 2009/08/03 08:13:06 kensmith Exp $");
 
 #ifndef _I915_REG_H_
 #define _I915_REG_H_
@@ -362,6 +362,7 @@
 #define   DPLLB_LVDS_P2_CLOCK_DIV_7	(1 << 24) /* i915 */
 #define   DPLL_P2_CLOCK_DIV_MASK	0x03000000 /* i915 */
 #define   DPLL_FPA01_P1_POST_DIV_MASK	0x00ff0000 /* i915 */
+#define   DPLL_FPA01_P1_POST_DIV_MASK_IGD	0x00ff8000 /* IGD */
 
 #define I915_FIFO_UNDERRUN_STATUS		(1UL<<31)
 #define I915_CRC_ERROR_ENABLE			(1UL<<29)
@@ -438,6 +439,7 @@
  */
 #define   DPLL_FPA01_P1_POST_DIV_MASK_I830_LVDS	0x003f0000
 #define   DPLL_FPA01_P1_POST_DIV_SHIFT	16
+#define   DPLL_FPA01_P1_POST_DIV_SHIFT_IGD 15
 /* i830, required in DVO non-gang */
 #define   PLL_P2_DIVIDE_BY_4		(1 << 23)
 #define   PLL_P1_DIVIDE_BY_TWO		(1 << 21) /* i830 */
@@ -504,10 +506,12 @@
 #define FPB0	0x06048
 #define FPB1	0x0604c
 #define   FP_N_DIV_MASK		0x003f0000
+#define   FP_N_IGD_DIV_MASK	0x00ff0000
 #define   FP_N_DIV_SHIFT		16
 #define   FP_M1_DIV_MASK	0x00003f00
 #define   FP_M1_DIV_SHIFT		 8
 #define   FP_M2_DIV_MASK	0x0000003f
+#define   FP_M2_IGD_DIV_MASK	0x000000ff
 #define   FP_M2_DIV_SHIFT		 0
 #define DPLL_TEST	0x606c
 #define   DPLLB_TEST_SDVO_DIV_1		(0 << 22)
--- drm_pciids.h.orig	2010-02-01 11:37:35.000000000 +0000
+++ drm_pciids.h	2010-01-30 16:00:40.000000000 +0000
@@ -553,6 +553,8 @@
 	{0x8086, 0x2E12, CHIP_I9XX|CHIP_I965, "Intel Q45/Q43"}, \
 	{0x8086, 0x2E22, CHIP_I9XX|CHIP_I965, "Intel G45/G43"}, \
 	{0x8086, 0x2E32, CHIP_I9XX|CHIP_I965, "Intel G41"}, \
+        {0x8086, 0xA001, CHIP_I9XX|CHIP_I965, "Intel IGD"}, \
+        {0x8086, 0xA011, CHIP_I9XX|CHIP_I965, "Intel IGD"}, \
 	{0, 0, 0, NULL}
 
 #define imagine_PCI_IDS \
--- agp_i810.c.orig	2010-02-01 11:36:11.000000000 +0000
+++ agp_i810.c	2010-01-30 16:28:27.000000000 +0000
@@ -70,6 +70,7 @@
 	CHIP_I915,	/* 915G/915GM */
 	CHIP_I965,	/* G965 */
 	CHIP_G33,	/* G33/Q33/Q35 */
+	CHIP_IGD,	/* G33 like IGD */
 	CHIP_G4X,	/* G45/Q45 */
 };
 
@@ -165,6 +166,10 @@
 	    "Intel Q33 SVGA controller"},
 	{0x2A028086, CHIP_I965, 0x00020000,
 	    "Intel GM965 SVGA controller"},
+	{0xA0018086, CHIP_IGD, 0x00010000,
+	    "Intel IGD SVGA controller"},
+	{0xA0118086, CHIP_IGD, 0x00010000,
+	    "Intel IGD SVGA controller"},
 	{0x2A128086, CHIP_I965, 0x00020000,
 	    "Intel GME965 SVGA controller"},
 	{0x2A428086, CHIP_G4X, 0x00020000,
@@ -286,6 +291,7 @@
 	case CHIP_I915:
 	case CHIP_I965:
 	case CHIP_G33:
+	case CHIP_IGD:
 	case CHIP_G4X:
 		deven = pci_read_config(bdev, AGP_I915_DEVEN, 4);
 		if ((deven & AGP_I915_DEVEN_D2F0) ==
@@ -351,6 +357,7 @@
 	case CHIP_I915:
 	case CHIP_I965:
 	case CHIP_G33:
+	case CHIP_IGD:
 	case CHIP_G4X:
 		device_printf(dev, "AGP_I855_GCC1: 0x%02x\n",
 		    pci_read_config(sc->bdev, AGP_I855_GCC1, 1));
@@ -386,6 +393,7 @@
 		break;
 	case CHIP_I915:
 	case CHIP_G33:
+	case CHIP_IGD:
 		sc->sc_res_spec = agp_i915_res_spec;
 		agp_set_aperture_resource(dev, AGP_I915_GMADR);
 		break;
@@ -401,7 +409,8 @@
 		return error;
 
 	if (sc->chiptype != CHIP_I965 && sc->chiptype != CHIP_G33 &&
-	    sc->chiptype != CHIP_G4X && ptoa((vm_paddr_t)Maxmem) > 0xfffffffful)
+	    sc->chiptype != CHIP_IGD  && sc->chiptype != CHIP_G4X && 
+	    ptoa((vm_paddr_t)Maxmem) > 0xfffffffful)
 	{
 		device_printf(dev, "agp_i810.c does not support physical "
 		    "memory above 4GB.\n");
@@ -491,7 +500,7 @@
 		gatt->ag_physical = pgtblctl & ~1;
 	} else if (sc->chiptype == CHIP_I855 || sc->chiptype == CHIP_I915 ||
 	    sc->chiptype == CHIP_I965 || sc->chiptype == CHIP_G33 ||
-	    sc->chiptype == CHIP_G4X) {
+	    sc->chiptype == CHIP_IGD  || sc->chiptype == CHIP_G4X) {
 		unsigned int gcc1, pgtblctl, stolen, gtt_size;
 
 		/* Stolen memory is set up at the beginning of the aperture by
@@ -553,6 +562,7 @@
 				return EINVAL;
 			}
 			break;
+		case CHIP_IGD:
 		case CHIP_G4X:
 			gtt_size = 0;
 			break;
@@ -587,6 +597,7 @@
 			if (sc->chiptype == CHIP_I915 ||
 			    sc->chiptype == CHIP_I965 ||
 			    sc->chiptype == CHIP_G33 ||
+			    sc->chiptype == CHIP_IGD ||
 			    sc->chiptype == CHIP_G4X) {
 				stolen = 48 * 1024;
 			} else {
@@ -597,6 +608,7 @@
 			if (sc->chiptype == CHIP_I915 ||
 			    sc->chiptype == CHIP_I965 ||
 			    sc->chiptype == CHIP_G33 ||
+			    sc->chiptype == CHIP_IGD ||
 			    sc->chiptype == CHIP_G4X) {
 				stolen = 64 * 1024;
 			} else {
@@ -606,6 +618,7 @@
 		case AGP_G33_GCC1_GMS_STOLEN_128M:
 			if (sc->chiptype == CHIP_I965 ||
 			    sc->chiptype == CHIP_G33 ||
+			    sc->chiptype == CHIP_IGD ||
 			    sc->chiptype == CHIP_G4X) {
 				stolen = 128 * 1024;
 			} else {
@@ -615,6 +628,7 @@
 		case AGP_G33_GCC1_GMS_STOLEN_256M:
 			if (sc->chiptype == CHIP_I965 ||
 			    sc->chiptype == CHIP_G33 ||
+			    sc->chiptype == CHIP_IGD ||
 			    sc->chiptype == CHIP_G4X) {
 				stolen = 256 * 1024;
 			} else {
@@ -783,6 +797,7 @@
 	case CHIP_I915:
 	case CHIP_I965:
 	case CHIP_G33:
+	case CHIP_IGD:
 	case CHIP_G4X:
 		return agp_generic_set_aperture(dev, aperture);
 	}
@@ -803,7 +818,7 @@
 
 	pte = (u_int32_t)physical | 1;
 	if (sc->chiptype == CHIP_I965 || sc->chiptype == CHIP_G33 ||
-	    sc->chiptype == CHIP_G4X) {
+	    sc->chiptype == CHIP_IGD  || sc->chiptype == CHIP_G4X) {
 		pte |= (physical & 0x0000000f00000000ull) >> 28;
 	} else {
 		/* If we do actually have memory above 4GB on an older system,
@@ -822,6 +837,7 @@
 		    AGP_I810_GTT + (offset >> AGP_PAGE_SHIFT) * 4, pte);
 		break;
 	case CHIP_I915:
+        case CHIP_IGD:
 	case CHIP_G33:
 		bus_write_4(sc->sc_res[1],
 		    (offset >> AGP_PAGE_SHIFT) * 4, pte);


More information about the freebsd-bugs mailing list